JP2007323138A - Memory controller, flash memory system, and control method of flash memory - Google Patents

Memory controller, flash memory system, and control method of flash memory Download PDF

Info

Publication number
JP2007323138A
JP2007323138A JP2006149661A JP2006149661A JP2007323138A JP 2007323138 A JP2007323138 A JP 2007323138A JP 2006149661 A JP2006149661 A JP 2006149661A JP 2006149661 A JP2006149661 A JP 2006149661A JP 2007323138 A JP2007323138 A JP 2007323138A
Authority
JP
Japan
Prior art keywords
sector area
sector
data
position information
written
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006149661A
Other languages
Japanese (ja)
Other versions
JP4513782B2 (en
Inventor
Naoki Mukoda
直樹 向田
Takuma Mitsunaga
琢真 光永
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TDK Corp
Original Assignee
TDK Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by TDK Corp filed Critical TDK Corp
Priority to JP2006149661A priority Critical patent/JP4513782B2/en
Publication of JP2007323138A publication Critical patent/JP2007323138A/en
Application granted granted Critical
Publication of JP4513782B2 publication Critical patent/JP4513782B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To shorten the processing time of retrieval processing of retrieving the head of a sector region where data is not written. <P>SOLUTION: It is determined in parallel whether data is written in a first sector region corresponding to the number Na derived by adding variable A to the number Ns indicated by the head position information and a second sector region corresponding to the number Nb derived by subtracting variable B from the number Ne indicated by the end position information. When it is determined that no data is written in neither the first sector region or the second sector region, the number Ne indicated by the end position information is changed to the number Na. When it is determined that data is written only in the first sector region, the number Ns indicated by the head position information is changed to the number Na, and the number Ne indicated by the end position information is changed to the number Nb. When it is determined that data is written in both the first sector region and the second sector region, the number Ns indicated by the head position information is repeatedly changed to the number Nb. <P>COPYRIGHT: (C)2008,JPO&INPIT

Description

本発明は、フラッシュメモリに対するアクセスを制御するメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に係り、特に、フラッシュメモリに対する書き込み処理において、書き込み先の物理ブロックのデータが書き込まれていないセクタ領域の先頭を検索する機能を有するメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関するものである。   The present invention relates to a memory controller that controls access to a flash memory, a flash memory system, and a flash memory control method, and more particularly, in a write process to a flash memory, a sector area in which data of a physical block to be written is not written. The present invention relates to a memory controller having a function of searching for a head, a flash memory system, and a flash memory control method.

メモリカードやシリコンディスク等の記憶媒体である半導体メモリとして、NAND型フラッシュメモリが多く用いられている。このフラッシュメモリは、複数のメモリセルを有し、各メモリセルが消去状態のとき論理値「1」とされ、書き込み状態のとき論理値「0」とされる。   A NAND flash memory is often used as a semiconductor memory that is a storage medium such as a memory card or a silicon disk. This flash memory has a plurality of memory cells, and has a logical value “1” when each memory cell is in an erased state and a logical value “0” when in a written state.

ところで、これらのメモリセルを消去状態から書き込み状態に変化させる場合には、メモリセル単位で行うことができるが、メモリセルを書き込み状態から消去状態に変化させる場合には、メモリセル単位で行うことができず、所定数のメモリセルからなるブロック単位で一括消去することが行われる(ブロック消去)。   By the way, when these memory cells are changed from the erased state to the written state, it can be performed in units of memory cells. However, when the memory cells are changed from the written state to the erased state, it is performed in units of memory cells. However, batch erase is performed in units of blocks including a predetermined number of memory cells (block erase).

また、所定数のメモリセルからなるブロック(物理ブロック)は、書き込み及び読み出しのアクセス処理単位である複数のページで構成されている。すなわち、小ブロックでは32ページ、大ブロックでは64ページである。また、小ブロックでは、1個のページが1セクタ(512バイト)のユーザ領域と16バイトの冗長領域とによって構成されている。   In addition, a block (physical block) made up of a predetermined number of memory cells is composed of a plurality of pages which are write and read access processing units. That is, 32 pages for the small block and 64 pages for the large block. In the small block, one page is composed of a user area of 1 sector (512 bytes) and a redundant area of 16 bytes.

また、大ブロックでは、1個のページが、4セクタ(2048バイト)のユーザ領域(以下、512バイト単位のユーザ領域をセクタ領域という)と、64バイトの冗長領域とで構成され、ユーザ領域と冗長領域とがそれぞれ4分割して使用される(以下、大ブロックでは、冗長領域を4分割したものを部分冗長領域という)。よって、小ブロックでは1個のページが1個のセクタ領域に対応し、大ブロックでは1個のページが4個のセクタ領域に対応している。   In a large block, one page is composed of a 4-sector (2048-byte) user area (hereinafter, a 512-byte unit user area is referred to as a sector area) and a 64-byte redundant area. Each redundant area is divided into four parts (hereinafter, in a large block, the redundant area divided into four is referred to as a partial redundant area). Therefore, in the small block, one page corresponds to one sector area, and in the large block, one page corresponds to four sector areas.

このようなフラッシュメモリに対する書き込み処理を制御するメモリコントローラは、ホストシステムから与えられるコマンド等に従ってって、ホストシステムから与えられるデータをフラッシュメモリに書き込む。ここで、フラッシュメモリにデータを書き込む場合は、物理ブロック内の先頭のページ(セクタ領域)から順番にデータが書き込まれる。従って、物理ブロック内の途中のページ(セクタ領域)までデータが書き込まれている物理ブロックにデータを書き込む場合には、データが書き込まれていないページ(セクタ領域)の先頭を検索し、検出されたページ(セクタ領域)からデータの書き込みが開始される。   A memory controller that controls the writing process to the flash memory writes data given from the host system to the flash memory in accordance with a command given from the host system. Here, when data is written to the flash memory, the data is written in order from the first page (sector area) in the physical block. Therefore, when data is written to a physical block in which data is written up to a middle page (sector area) in the physical block, the head of the page (sector area) where data is not written is searched and detected. Data writing is started from the page (sector area).

また、一連データの書き込み処理を開始するときに、その一連データの書き込み先の物理ブロックに既にデータが存在する場合には、その物理ブロックのデータが書き込まれていないセクタ領域の先頭を検索する検索処理が行われ、検出されたセクタ領域が一連データの書き込みを開始するセクタ領域より前であれば、その物理ブロックに対して一連データの書き込み処理を開始する。一方、検出されたセクタ領域が一連データの書き込みを開始するセクタ領域より後であれば、別のブロック消去されている物理ブロックに一連データが書き込まれる。つまり、データが書き込まれていないセクタ領域の先頭を検索する検索処理は、既にデータが存在する物理ブロックに対して、一連データを書き込むことができるかどうかを判別する。   In addition, when starting the write processing of a series of data, if data already exists in the physical block to which the series of data is written, a search for searching the head of the sector area where the data of the physical block is not written If the processing is performed and the detected sector area is before the sector area where writing of a series of data is started, the writing process of a series of data is started for the physical block. On the other hand, if the detected sector area is after the sector area where the writing of a series of data is started, the series of data is written into another physical block that has been erased. That is, the search process for searching for the head of the sector area in which no data is written determines whether a series of data can be written in a physical block in which data already exists.

このようなデータが書き込まれていないセクタ領域の先頭を検索する方法として、例えば特許文献1に示されているようなスタートページ情報を用いた検索方法と一般的に用いられている二分木検索とがある。この二分木検索について、以下、図9を参照して説明する。なお、図9(a)は、第1のインターフェース(chA)を介してアクセスされる物理ブロックと、第2のインターフェース(chB)を介してアクセスされる物理ブロックとを示している。また、第1のインターフェース(chA)を介してアクセスされる物理ブロックと、第2のインターフェース(chB)を介してアクセスされる物理ブロックは、仮想的に結合された仮想ブロックを形成する。以下、第1のインターフェース(chA)を介してアクセスされる物理ブロックを“chAの物理ブロック”と言い、第2のインターフェース(chB)を介してアクセスされる物理ブロックを“chBの物理ブロック”と言う。   As a method for searching the head of a sector area in which such data is not written, for example, a search method using start page information as shown in Patent Document 1 and a binary tree search that is generally used There is. This binary tree search will be described below with reference to FIG. FIG. 9A shows a physical block accessed via the first interface (chA) and a physical block accessed via the second interface (chB). The physical block accessed via the first interface (chA) and the physical block accessed via the second interface (chB) form a virtually combined virtual block. Hereinafter, a physical block accessed via the first interface (chA) is referred to as a “chA physical block”, and a physical block accessed via the second interface (chB) is referred to as a “chB physical block”. To tell.

この仮想ブロックは、図9(b)に示したようにchAの物理ブロック内のセクタ領域とchBの物理ブロック内のセクタ領域が交互配列された512個のセクタ領域を含んでいる。ここで、SNa#0〜SNa#255はchAの物理ブロック内のセクタ領域に付けられた通番であり(以下、物理セクタ番号と言う)、SNb#0〜SNb#255はchBの物理ブロック内のセクタ領域に付けられた通番である(以下、物理セクタ番号と言う)。   As shown in FIG. 9B, the virtual block includes 512 sector areas in which sector areas in the chA physical block and sector areas in the chB physical block are alternately arranged. Here, SNa # 0 to SNa # 255 are serial numbers assigned to sector areas in the physical block of chA (hereinafter referred to as physical sector numbers), and SNb # 0 to SNb # 255 are in the physical block of chB. A serial number assigned to the sector area (hereinafter referred to as a physical sector number).

また、SN#0〜SN#511は仮想ブロックに含まれる512個のセクタ領域に付けられた通番である(以下、セクタ番号SNという)。また、以下のデータが書き込まれていないセクタ領域の検索において、検索する範囲の先頭を示す先頭位置情報をスタートポインタXとし、その末尾を示す末尾位置情報をエンドポインタYとしている。   SN # 0 to SN # 511 are serial numbers assigned to 512 sector areas included in the virtual block (hereinafter referred to as sector number SN). Further, in the search of the sector area in which the following data is not written, the start position information indicating the start of the search range is set as the start pointer X, and the end position information indicating the end is set as the end pointer Y.

図9(c)は、SN#300のセクタ領域(物理セクタ番号SNa#150)までデータが書き込まれている場合の検索過程を示している。この検索では、まずスタートポインタXに最初のセクタ領域のセクタ番号SN#0に対応する0を設定し、エンドポインタYに最後のセクタ領域のセクタ番号SN#511に1を加えた512を設定する。続いて、スタートポインタXに設定されている値(0)とエンドポインタYに設定されている値(512)の中間点のセクタ番号SNがSN#256のセクタ領域に対応する部分冗長領域に書き込まれている付加情報(セクタ領域にデータが書き込まれているか否かを判断することができる付加情報)を参照し、セクタ番号SNがSN#256のセクタ領域にデータが書き込まれているか否かを判断する(検索回数:1)。   FIG. 9C shows a search process when data is written up to the sector area (physical sector number SNa # 150) of SN # 300. In this search, first, the start pointer X is set to 0 corresponding to the sector number SN # 0 of the first sector area, and the end pointer Y is set to 512 obtained by adding 1 to the sector number SN # 511 of the last sector area. . Subsequently, the sector number SN of the intermediate point between the value (0) set for the start pointer X and the value (512) set for the end pointer Y is written in the partial redundancy area corresponding to the sector area of SN # 256. Whether or not data is written in the sector area with the sector number SN of SN # 256, with reference to the additional information (additional information for determining whether or not data is written in the sector area). Determine (number of searches: 1).

ここで、データが書き込まれていると判断した場合には、スタートポインタXの設定値を参照したセクタ領域のセクタ番号SNの値に変更する。一方、データが書き込まれていないと判断した場合には、エンドポインタYの設定値を参照したセクタ領域のセクタ番号SNの値に変更する。この例では、セクタ番号SNがSN#256のユーザ領域(物理セクタ番号SNa#128)にデータが書き込まれているので、スタートポインタXの設定値を256に変更する。   If it is determined that data has been written, the setting value of the start pointer X is changed to the value of the sector number SN of the sector area referred to. On the other hand, if it is determined that data has not been written, the setting value of the end pointer Y is changed to the value of the sector number SN of the sector area referred to. In this example, since data is written in the user area (physical sector number SNa # 128) having the sector number SN of SN # 256, the set value of the start pointer X is changed to 256.

次に、スタートポインタXに設定した値(256)とエンドポインタYに設定した値(512)の中間点のセクタ番号SNがSN#384のセクタ領域に対応する部分冗長領域に書き込まれている付加情報(セクタ領域にデータが書き込まれているか否かを判断することができる付加情報)を参照し、セクタ番号SNがSN#384のセクタ領域にデータが書き込まれているか否かを判断する(検索回数:2)。この例では、セクタ番号SNがSN#384のユーザ領域(物理セクタ番号SNa#192)にデータが書き込まれていないので、エンドポインタYの設定値を384に変更する。   Next, the sector number SN at the midpoint between the value (256) set for the start pointer X and the value (512) set for the end pointer Y is written in the partial redundancy area corresponding to the sector area of SN # 384. Information (additional information that can determine whether data is written in the sector area) is referred to, and it is determined whether data is written in the sector area whose sector number SN is SN # 384 (search Number of times: 2). In this example, since no data is written in the user area (physical sector number SNa # 192) with the sector number SN of SN # 384, the set value of the end pointer Y is changed to 384.

次に、スタートポインタXに設定した値(256)とエンドポインタYに設定した値(384)の中間点のセクタ番号SNがSN#320のセクタ領域に対応する部分冗長領域に書き込まれている付加情報(セクタ領域にデータが書き込まれているか否かを判断することができる付加情報)を参照し、セクタ番号SNがSN#320のセクタ領域にデータが書き込まれているか否かを判断する(検索回数:3)。この例では、セクタ番号SNがSN#320のユーザ領域(物理セクタ番号SNa#160)にデータが書き込まれていないので、エンドポインタYの設定値を320に変更する。   Next, the sector number SN at the midpoint between the value (256) set for the start pointer X and the value (384) set for the end pointer Y is written in the partial redundancy area corresponding to the sector area of SN # 320. Information (additional information that can determine whether or not data is written in the sector area) is referred to, and it is determined whether or not data is written in the sector area whose SN number is SN # 320 (search Number of times: 3). In this example, since no data is written in the user area (physical sector number SNa # 160) with the sector number SN of SN # 320, the set value of the end pointer Y is changed to 320.

以下同様に、スタートポインタXに設定した値とエンドポインタYに設定した値の中間点である(X+Y)/2に対応する部分冗長領域に書き込まれている付加情報(セクタ領域にデータが書き込まれているか否かを判断することができる付加情報)の参照と、スタートポインタX又はエンドポインタYの更新を順次行っていき、スタートポインタXに設定した値とエンドポインタYに設定した値の差が1になったときにエンドポインタYに設定した値を、データが書き込まれていないセクタ領域の先頭のセクタ番号SNであると判断する。
特開2002−196977号公報
Similarly, additional information (data is written to the sector area) written in the partial redundancy area corresponding to (X + Y) / 2, which is the intermediate point between the value set for the start pointer X and the value set for the end pointer Y. Reference to the additional information), and the start pointer X or the end pointer Y are sequentially updated, and the difference between the value set for the start pointer X and the value set for the end pointer Y is It is determined that the value set in the end pointer Y when it is 1 is the head sector number SN of the sector area in which no data is written.
JP 2002-196977 A

ところが、上述した二分木検索を用いた検索処理では、検索回数がセクタ領域の数によって決まってしまい、図9のように、例えばセクタ番号SNがSN#0〜SN#511で示されるセクタ領域が512個(2の9乗個)の場合、9回の検索が必要となる。言い換えれば、セクタ領域の数が2のn乗個の場合には常にn回の検索を行わなければならないという問題があった。   However, in the search process using the binary tree search described above, the number of searches is determined by the number of sector areas, and as shown in FIG. 9, for example, sector areas whose sector numbers SN are indicated by SN # 0 to SN # 511 are defined. In the case of 512 (2 to the 9th power), 9 searches are required. In other words, when the number of sector areas is 2 to the nth power, there is a problem that the search must always be performed n times.

本発明は、このような状況に鑑みてなされたものであり、上記問題点を解決することができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法を提供することを目的とする。   The present invention has been made in view of such a situation, and an object thereof is to provide a memory controller, a flash memory system, and a flash memory control method capable of solving the above-described problems.

本発明のメモリコントローラは、ブロック単位で記憶データの消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、前記フラッシュメモリにアクセスするための第1のインターフェースと第2のインターフェースとを有するインターフェース手段と、前記第1のインターフェースに接続されたフラッシュメモリ内の物理ブロックと前記第2のインターフェースに接続されたフラッシュメモリ内の物理ブロックとを仮想的に結合した仮想ブロックを形成し、該仮想ブロックの前記第1のインターフェース側の物理ブロック内のセクタ領域と前記第2のインターフェース側の物理ブロック内のセクタ領域とにデータを書き込む書き込み手段と、前記仮想ブロック内の検索範囲を特定する情報として、検索範囲の先頭セクタ領域の番号を示す先頭位置情報と検索範囲の末尾セクタ領域の番号を示す末尾位置情報とを保持する検索範囲保持手段と、前記先頭位置情報が示す番号Nsに所定の変数Aを加算した番号Naに対応する第1のセクタ領域と前記末尾位置情報が示す番号Neから所定の変数Bを減算した番号Nbに対応する第2のセクタ領域にデータが書き込まれているか否かを判断し、第1のセクタ領域と第2のセクタ領域の双方にデータが書き込まれていないと判断した場合は、前記末尾位置情報が示す番号Neを番号Naに変更し、第1のセクタ領域だけにデータが書き込まれていると判断した場合は、前記先頭位置情報が示す番号Nsを番号Naに変更するとともに前記末尾位置情報が示す番号Neを番号Nbに変更し、第1のセクタ領域と第2のセクタ領域の双方にデータが書き込まれていると判断した場合は、前記先頭位置情報が示す番号Nsを番号Nbに変更するセクタ領域検索手段とを備え、前記番号Ns、番号Ne、番号Na及び番号Nbが、番号Neと番号Nsの差が3以上の範囲で、
Ns<Na<Nb<Ne
Na−Ns≦(Ne−Ns)/2
Nb−Na≦(Ne−Ns)/2
Ne−Nb≦(Ne−Ns)/2
を満たし
かつ、前記第1のセクタ領域と前記第2のセクタ領域の一方が前記第1のインターフェース側の物理ブロック内のセクタ領域に、他方が前記第2のインターフェース側の物理ブロック内のセクタ領域になるように前記変数A及び変数Bの値が設定されることを特徴とする。
また、前記先頭位置情報が示す番号Nsと前記末尾位置情報が示す番号Neとの差が1となったときに、前記先頭位置情報が示す番号Nsから前記仮想ブロック内のデータが書き込まれているセクタ領域の末尾を判別する第1のセクタ領域判別手段を有するようにすることができる。
また、前記先頭位置情報が示す番号Nsと前記末尾位置情報が示す番号Neとの差が1となったときに、前記末尾位置情報が示す番号Neから前記仮想ブロック内のデータが書き込まれていないセクタ領域の先頭を判別する第2セクタ領域判別手段を有するようにすることができる。
また、前記変数A及び変数Bの値は、(Ne−Ns)/3又は(Ne−Ns)/4とすることができる。
本発明のフラッシュメモリシステムは、上記のメモリコントローラと、このメモリコントローラによりアクセスが制御されるフラッシュメモリとを備えることを特徴とする。
本発明のフラッシュメモリの制御方法は、ブロック単位で記憶データの消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、前記フラッシュメモリにアクセスするための第1のインターフェースに接続されたフラッシュメモリ内の物理ブロックと前記フラッシュメモリにアクセスするための第2のインターフェースに接続されたフラッシュメモリ内の物理ブロックとを仮想的に結合した仮想ブロックを形成し、該仮想ブロックの前記第1のインターフェース側の物理ブロック内のセクタ領域と前記第2のインターフェース側の物理ブロック内のセクタ領域とにデータを書き込むステップと、前記仮想ブロック内の検索範囲を特定する情報として、検索範囲の先頭セクタ領域の番号を示す先頭位置情報と検索範囲の末尾セクタ領域の番号を示す末尾位置情報とを保持するステップと、前記先頭位置情報が示す番号Nsに所定の変数Aを加算をした番号Naに対応する第1のセクタ領域と前記末尾位置情報が示す番号Neから所定の変数Bを減算をした番号Nbに対応する第2のセクタ領域にデータが書き込まれているか否かを判断し、第1のセクタ領域と第2のセクタ領域の双方にデータが書き込まれていないと判断した場合は、前記末尾位置情報が示す番号Neを番号Naに変更し、第1のセクタ領域だけにデータが書き込まれていると判断した場合は、前記先頭位置情報が示す番号Nsを番号Naに変更するとともに前記末尾位置情報が示す番号Neを番号Nbに変更し、第1のセクタ領域と第2のセクタ領域の双方にデータが書き込まれていると判断した場合は、前記先頭位置情報が示す番号Nsを番号Nbに変更するステップとを有し、前記番号Ns、番号Ne、番号Na及び番号Nbが、番号Neと番号Nsの差が3以上の範囲で、
Ns<Na<Nb<Ne
Na−Ns≦(Ne−Ns)/2
Nb−Na≦(Ne−Ns)/2
Ne−Nb≦(Ne−Ns)/2
を満たし
かつ、前記第1のセクタ領域と前記第2のセクタ領域の一方が前記第1のインターフェース側の物理ブロック内のセクタ領域に、他方が前記第2のインターフェース側の物理ブロック内のセクタ領域になるように前記変数A及び変数Bの値が設定されることを特徴とする。
また、前記先頭位置情報が示す番号Nsと前記末尾位置情報が示す番号Neとの差が1となったときに、前記先頭位置情報が示す番号Nsから前記仮想ブロック内のデータが書き込まれているセクタ領域の末尾を判別するステップを有するようにすることができる。
また、前記先頭位置情報が示す番号Nsと前記末尾位置情報が示す番号Neとの差が1となったときに、前記末尾位置情報が示す番号Neから前記仮想ブロック内のデータが書き込まれていないセクタ領域の先頭を判別するステップを有するようにすることができる。
また、前記変数A及び変数Bの値は、(Ne−Ns)/3又は(Ne−Ns)/4とすることができる。
以上のように、本発明のメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法では、先頭位置情報が示す番号Nsに所定の変数Aを加算した番号Naに対応する第1のセクタ領域と末尾位置情報が示す番号Neから所定の変数Bを減算した番号Nbに対応する第2のセクタ領域にデータが書き込まれているか否かを並行して判断し、第1のセクタ領域と第2のセクタ領域の双方にデータが書き込まれていないと判断した場合は、末尾位置情報が示す番号Neを番号Naに変更し、第1のセクタ領域だけにデータが書き込まれていると判断した場合は、先頭位置情報が示す番号Nsを番号Naに変更するとともに末尾位置情報が示す番号Neを番号Nbに変更し、第1のセクタ領域と第2のセクタ領域の双方にデータが書き込まれていると判断した場合は、先頭位置情報が示す番号Nsを番号Nbに変更する。
ここで、前記番号Ns、番号Ne、番号Na及び番号Nbが、番号Neと番号Nsの差が3以上の範囲で、
Ns<Na<Nb<Ne
Na−Ns≦(Ne−Ns)/2
Nb−Na≦(Ne−Ns)/2
Ne−Nb≦(Ne−Ns)/2
を満たすように変数A、変数Bの値を設定すれば、前記先頭位置情報が示す番号Nsと前記末尾位置情報が示す番号Neを更新した後の検索範囲は更新前の1/2以下になる。
また、前記第1のインターフェース側の物理ブロック内のセクタ領域に偶数のセクタ番号を割り当て、前記第2のインターフェース側の物理ブロック内のセクタ領域に奇数のセクタ番号を割り当て、番号Naと番号Nbの一方が偶数で他方が奇数になるように変数A、変数Bの値を設定すれば、前記第1のセクタ領域と前記第2のセクタ領域の一方が前記第1のインターフェース側の物理ブロック内のセクタ領域に、他方が前記第2のインターフェース側の物理ブロック内のセクタ領域になる。
そして、先頭位置情報が示す番号Nsと末尾位置情報が示す番号Neとの差が1となったときに、先頭位置情報が示す番号Nsから仮想ブロック内のデータが書き込まれているセクタ領域の末尾を判別する。
また、先頭位置情報が示す番号Nsと末尾位置情報が示す番号Neとの差が1となったときに、末尾位置情報が示す番号Neから仮想ブロック内のデータが書き込まれていないセクタ領域の先頭を判別する。
A memory controller of the present invention is a memory controller that controls access to a flash memory in which stored data is erased in units of blocks, and includes a first interface and a second interface for accessing the flash memory. Forming a virtual block obtained by virtually combining the interface means, a physical block in the flash memory connected to the first interface, and a physical block in the flash memory connected to the second interface; Write means for writing data to the sector area in the physical block on the first interface side of the block and the sector area in the physical block on the second interface side of the block, and information for specifying the search range in the virtual block , Search scope Search range holding means for holding start position information indicating the number of the first sector area and end position information indicating the number of the end sector area of the search range, and adding a predetermined variable A to the number Ns indicated by the start position information It is determined whether data is written in the first sector area corresponding to the number Na and the second sector area corresponding to the number Nb obtained by subtracting a predetermined variable B from the number Ne indicated by the end position information. When it is determined that no data is written in both the first sector area and the second sector area, the number Ne indicated by the end position information is changed to the number Na, and data is stored only in the first sector area. Is determined, the number Ns indicated by the head position information is changed to the number Na, the number Ne indicated by the end position information is changed to the number Nb, and the first sector is changed. Sector data search means for changing the number Ns indicated by the head position information to the number Nb when it is determined that data is written in both the area and the second sector area, the number Ns and the number Ne , The number Na and the number Nb are in a range where the difference between the number Ne and the number Ns is 3 or more,
Ns <Na <Nb <Ne
Na-Ns≤ (Ne-Ns) / 2
Nb-Na ≦ (Ne-Ns) / 2
Ne-Nb ≦ (Ne-Ns) / 2
And one of the first sector area and the second sector area is a sector area in the physical block on the first interface side, and the other is a sector area in the physical block on the second interface side The values of the variable A and the variable B are set so that
Further, when the difference between the number Ns indicated by the head position information and the number Ne indicated by the tail position information is 1, the data in the virtual block is written from the number Ns indicated by the head position information. First sector area determining means for determining the end of the sector area may be provided.
Further, when the difference between the number Ns indicated by the head position information and the number Ne indicated by the tail position information is 1, data in the virtual block is not written from the number Ne indicated by the tail position information. A second sector area discriminating means for discriminating the head of the sector area can be provided.
The values of the variable A and the variable B can be (Ne−Ns) / 3 or (Ne−Ns) / 4.
A flash memory system according to the present invention includes the above-described memory controller and a flash memory whose access is controlled by the memory controller.
The flash memory control method of the present invention is a flash memory control method for controlling access to a flash memory in which stored data is erased in block units, and is connected to a first interface for accessing the flash memory. Forming a virtual block that virtually combines the physical block in the flash memory and the physical block in the flash memory connected to the second interface for accessing the flash memory, and A step of writing data to a sector area in a physical block on one interface side and a sector area in a physical block on the second interface side, and the head of a search range as information for specifying the search range in the virtual block Start position indicating the sector area number A step of holding information and end position information indicating the number of the end sector area of the search range; a first sector area corresponding to a number Na obtained by adding a predetermined variable A to the number Ns indicated by the start position information; It is determined whether data is written in the second sector area corresponding to the number Nb obtained by subtracting the predetermined variable B from the number Ne indicated by the end position information, and the first sector area and the second sector are determined. When it is determined that data is not written in both areas, the number Ne indicated by the end position information is changed to number Na, and when it is determined that data is written only in the first sector area, The number Ns indicated by the head position information is changed to the number Na and the number Ne indicated by the end position information is changed to the number Nb, so that data is written in both the first sector area and the second sector area. The number Ns indicated by the head position information is changed to the number Nb, the number Ns, the number Ne, the number Na, and the number Nb are represented by the numbers Ne and Ns. In the range where the difference is 3 or more,
Ns <Na <Nb <Ne
Na-Ns≤ (Ne-Ns) / 2
Nb-Na ≦ (Ne-Ns) / 2
Ne-Nb ≦ (Ne-Ns) / 2
And one of the first sector area and the second sector area is a sector area in the physical block on the first interface side, and the other is a sector area in the physical block on the second interface side The values of the variable A and the variable B are set so that
Further, when the difference between the number Ns indicated by the head position information and the number Ne indicated by the tail position information is 1, the data in the virtual block is written from the number Ns indicated by the head position information. A step of determining the end of the sector area may be included.
Further, when the difference between the number Ns indicated by the head position information and the number Ne indicated by the tail position information is 1, data in the virtual block is not written from the number Ne indicated by the tail position information. A step of determining the head of the sector area may be included.
The values of the variable A and the variable B can be (Ne−Ns) / 3 or (Ne−Ns) / 4.
As described above, in the memory controller, the flash memory system, and the flash memory control method of the present invention, the first sector area and the end position corresponding to the number Na obtained by adding the predetermined variable A to the number Ns indicated by the head position information. It is determined in parallel whether or not data is written in the second sector area corresponding to the number Nb obtained by subtracting the predetermined variable B from the number Ne indicated by the information, and the first sector area and the second sector area When it is determined that data is not written in both of the two, the number Ne indicated by the end position information is changed to the number Na, and when it is determined that data is written only in the first sector area, the head position The number Ns indicated by the information is changed to the number Na and the number Ne indicated by the end position information is changed to the number Nb, so that data is stored in both the first sector area and the second sector area. Is when it is determined that the written, change the number Ns indicating the head position information to the number Nb.
Here, the number Ns, the number Ne, the number Na, and the number Nb are within a range where the difference between the number Ne and the number Ns is 3 or more,
Ns <Na <Nb <Ne
Na-Ns≤ (Ne-Ns) / 2
Nb-Na ≦ (Ne-Ns) / 2
Ne-Nb ≦ (Ne-Ns) / 2
If the values of the variable A and the variable B are set so as to satisfy the condition, the search range after updating the number Ns indicated by the head position information and the number Ne indicated by the end position information becomes ½ or less before the update. .
An even sector number is assigned to a sector area in the physical block on the first interface side, an odd sector number is assigned to a sector area in the physical block on the second interface side, and numbers Na and Nb are assigned. If the values of variable A and variable B are set so that one is an even number and the other is an odd number, one of the first sector area and the second sector area is in the physical block on the first interface side. The other is the sector area in the physical block on the second interface side.
Then, when the difference between the number Ns indicated by the head position information and the number Ne indicated by the tail position information is 1, the end of the sector area in which the data in the virtual block is written from the number Ns indicated by the head position information Is determined.
Further, when the difference between the number Ns indicated by the head position information and the number Ne indicated by the tail position information is 1, the head of the sector area in which data in the virtual block is not written from the number Ne indicated by the tail position information. Is determined.

本発明のメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法によれば、先頭位置情報が示す番号Nsに所定の変数Aを加算した番号Naに対応する第1のセクタ領域と末尾位置情報が示す番号Neから所定の変数Bを減算した番号Nbに対応する第2のセクタ領域にデータが書き込まれているか否かを並行して判断し、第1のセクタ領域と第2のセクタ領域の双方にデータが書き込まれていないと判断した場合は、末尾位置情報が示す番号Neを番号Naに変更し、第1のセクタ領域だけにデータが書き込まれていると判断した場合は、先頭位置情報が示す番号Nsを番号Naに変更するとともに末尾位置情報が示す番号Neを番号Nbに変更し、第1のセクタ領域と第2のセクタ領域の双方にデータが書き込まれていると判断した場合は、先頭位置情報が示す番号Nsを番号Nbに変更するようにしたので、物理ブロック内でのデータが書き込まれていないセクタ領域の先頭を検索する平均的な検索速度を向上させることができる。例えば、仮想的な1ブロック内のセクタ領域の数が2のn乗個の場合、通常の二分木検索であれば、常にn回の検索を行わなければならないが、本発明のメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法によれば、n回以下の検索回数で、検索対象のセクタ領域を検出することができる。   According to the memory controller, the flash memory system, and the flash memory control method of the present invention, the first sector area corresponding to the number Na obtained by adding the predetermined variable A to the number Ns indicated by the head position information and the tail position information are indicated. It is determined in parallel whether or not data is written in the second sector area corresponding to the number Nb obtained by subtracting the predetermined variable B from the number Ne, and both the first sector area and the second sector area are determined. When it is determined that data is not written, the number Ne indicated by the tail position information is changed to the number Na, and when it is determined that data is written only in the first sector area, the head position information indicates. The number Ns is changed to the number Na, the number Ne indicated by the end position information is changed to the number Nb, and data is written to both the first sector area and the second sector area. If it is determined that the number Ns indicated by the head position information is changed to the number Nb, the average search speed for searching the head of the sector area in which no data is written in the physical block Can be improved. For example, if the number of sector areas in one virtual block is 2 to the power of n, the normal binary tree search must always be performed n times, but the memory controller, flash memory of the present invention According to the control method of the memory system and the flash memory, the sector area to be searched can be detected with the number of searches of n times or less.

本実施形態では、先頭位置情報が示す番号Nsに所定の変数Aを加算した番号Naに対応する第1のセクタ領域と末尾位置情報が示す番号Neから所定の変数Bを減算した番号Nbに対応する第2のセクタ領域にデータが書き込まれているか否かを並行して判断し、第1のセクタ領域と第2のセクタ領域の双方にデータが書き込まれていないと判断した場合は、末尾位置情報が示す番号Neを番号Naに変更し、第1のセクタ領域だけにデータが書き込まれていると判断した場合は、先頭位置情報が示す番号Nsを番号Naに変更するとともに末尾位置情報が示す番号Neを番号Nbに変更し、第1のセクタ領域と第2のセクタ領域の双方にデータが書き込まれていると判断した場合は、先頭位置情報が示す番号Nsを番号Nbに変更する処理を繰り返すことで、物理ブロック内でのデータが書き込まれていないセクタ領域の先頭を検索するようにした。   In the present embodiment, the first sector area corresponding to the number Na obtained by adding the predetermined variable A to the number Ns indicated by the head position information and the number Nb obtained by subtracting the predetermined variable B from the number Ne indicated by the tail position information. If it is determined in parallel whether or not data is written in the second sector area, and if it is determined that data is not written in both the first sector area and the second sector area, the end position When the number Ne indicated by the information is changed to the number Na and it is determined that data is written only in the first sector area, the number Ns indicated by the head position information is changed to the number Na and the end position information indicates When the number Ne is changed to the number Nb and it is determined that data is written in both the first sector area and the second sector area, the number Ns indicated by the head position information is changed to the number Nb. By repeating the data in the physical block is to search for the beginning of the sector area which is not written.

また、変数A、変数B、及び番号Nbと番号Naとの差(Nb−Na)が番号Neと番号Nsとの差の1/2((Ne−Ns)/2)以下であり、変数A、変数B、及び番号Nbと番号Naとの差(Nb−Na)の少なくとも1つが番号Neと番号Nsとの差の1/2((Ne−Ns)/2)より小さく、かつ番号Naと番号Nbの一方が偶数で他方が奇数になるように変数A、変数Bの値が設定される。   Further, the variable A, the variable B, and the difference (Nb−Na) between the number Nb and the number Na is equal to or less than ½ ((Ne−Ns) / 2) of the difference between the number Ne and the number Ns. , Variable B, and at least one of the difference between the number Nb and the number Na (Nb−Na) is smaller than ½ of the difference between the number Ne and the number Ns ((Ne−Ns) / 2), and the number Na The values of the variables A and B are set so that one of the numbers Nb is an even number and the other is an odd number.

これにより、例えば、仮想的な1ブロック内のセクタ領域の数が2のn乗個の場合、通常の二分木検索であれば、常にn回の検索を行わなければならないが、本実施形態では、n回以下の検索回数で物理ブロックのデータが書き込まれていないセクタ領域の先頭を検出することができる。また、第1のセクタ領域と第2のセクタ領域の一方は前記第1のインターフェース側の物理ブロック内のセクタ領域になり、他方は前記第2のインターフェース側の物理ブロック内のセクタ領域になるので、第1のセクタ領域と第2のセクタ領域にデータが書き込まれているか否かを並行して判断することができる。   Thus, for example, when the number of sector areas in one virtual block is 2 to the nth power, if a normal binary tree search is performed, the search must always be performed n times. Thus, the head of the sector area where the physical block data is not written can be detected with the number of searches of n times or less. One of the first sector area and the second sector area is a sector area in the physical block on the first interface side, and the other is a sector area in the physical block on the second interface side. It is possible to determine in parallel whether data is written in the first sector area and the second sector area.

以下、本発明の詳細を図面に基づいて説明する。図1は、本発明のフラッシュメモリシステムの一実施例の概略を説明するためのブロック図である。図1に示すように、フラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するメモリコントローラ3で構成されている。また、フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続される。   Hereinafter, the details of the present invention will be described with reference to the drawings. FIG. 1 is a block diagram for explaining an outline of an embodiment of a flash memory system according to the present invention. As shown in FIG. 1, the flash memory system 1 includes a flash memory 2 and a memory controller 3 that controls the flash memory 2. The flash memory system 1 is connected to the host system 4 via the external bus 13.

ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)と、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等とから構成される。ホストシステム4は、例えば文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。   The host system 4 is composed of a CPU (Central Processing Unit) for controlling the entire operation of the host system 4 and a companion chip responsible for exchanging information with the flash memory system 1. The host system 4 may be various information processing apparatuses such as a personal computer and a digital still camera that process various kinds of information such as characters, sounds, and image information.

フラッシュメモリ2は、不揮発性メモリであり、レジスタとメモリセルアレイとの間でデータの複写を行って、データの書き込み又は読み出しを行う。   The flash memory 2 is a non-volatile memory, and performs data copying or reading by copying data between a register and a memory cell array.

メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、すなわち、レジスタから選択されたメモリセルへの複写又は選択されたメモリセルからレジスタへのデータの複写が行われる。つまり、メモリコントローラ3から与えられたデータは、レジスタを介してメモリセルアレイに書き込まれ、メモリセルアレイに記憶されているデータはレジスタを介してメモリコントローラ3に供給される。   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. . That is, the data given from the memory controller 3 is written into the memory cell array via the register, and the data stored in the memory cell array is supplied to the memory controller 3 via the register.

メモリセルアレイを構成するメモリセルは、上下にゲートを備えたMOSトランジスタによって構成される。ここで、上側のゲートはコントロールゲート、下側のゲートはフローティングゲートとそれぞれ呼ばれている。フローティングゲートに電荷(電子)を注入若しくはフローティングゲートから電荷(電子)を排出することによって、データの書き込み若しくはデータの消去が行われる。   The memory cells constituting the memory cell array are constituted by MOS transistors having gates on the upper and lower sides. Here, the upper gate is called a control gate, and the lower gate is called a floating gate. Data is written or erased by injecting charges (electrons) into the floating gate or discharging charges (electrons) from the floating gate.

このフローティングゲートは、周囲が絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。なお、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧がコントロールゲートとフローティングゲートとの間に印加される。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧がコントロールゲートとフローティングゲートとの間に印加される。   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. In addition, when electrons are discharged from the floating gate, a high voltage at which the control gate is on the 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 flash memory 2 is composed of “pages” and “blocks (physical blocks)”. A page is a processing unit in a data read operation and a data write operation performed in the flash memory 2. The physical block is a processing unit in the data erasing operation performed in the flash memory 2, and is composed of a plurality of pages.

ここで、図2は、フラッシュメモリ2のアドレス空間の構造を概略的に示すものであり、1個のページが、4セクタ(2048バイト)のユーザ領域25と、64バイトの冗長領域26とで構成され、1個の物理ブロックは64個のページで構成されている。ここでは、1バイトがビットb0〜b7からなる8ビットである場合を示している。なお、ユーザ領域25を4分割した512バイトの領域をセクタ領域といい、冗長領域26内の各セクタ領域に割り当てられる領域を部分冗長領域と言う。また、このフラッシュメモリ2の物理ブロックは、256個のセクタ領域と各セクタ領域に割り当てられた256個の部分冗長領域とで構成されているとみなすことができる。   Here, FIG. 2 schematically shows the structure of the address space of the flash memory 2, and one page consists of a user area 25 of 4 sectors (2048 bytes) and a redundant area 26 of 64 bytes. 1 physical block is composed of 64 pages. Here, a case where one byte is 8 bits including bits b0 to b7 is shown. A 512-byte area obtained by dividing the user area 25 into four is called a sector area, and an area allocated to each sector area in the redundant area 26 is called a partial redundant area. Further, the physical block of the flash memory 2 can be regarded as being composed of 256 sector areas and 256 partially redundant areas allocated to each sector area.

また、物理ブロックには、図3(c)に示すように、それぞれに固有の物理ブロックアドレス(PBA)が割り当てられている。さらに、記憶領域を複数のゾーンに分割して管理する場合には、複数個の物理ブロックで物理ゾーンを構成し、各物理ゾーンに固有の物理ゾーン番号(PZN)を割り当てている。各物理ゾーンに含まれる物理ブロックの、各物理ゾーン内での通番を物理ゾーン内ブロック番号(PZIBN)と呼んでいる。   Further, as shown in FIG. 3C, each physical block is assigned a unique physical block address (PBA). Further, when the storage area is divided into a plurality of zones for management, a physical zone is constituted by a plurality of physical blocks, and a unique physical zone number (PZN) is assigned to each physical zone. A serial number in each physical zone of a physical block included in each physical zone is referred to as a physical zone block number (PZIBN).

一方、ホストシステム4側のアドレス空間は、図3(a)に示すようにセクタ(512バイト)単位で分割した領域に付けた通番であるLBA(Logical Block Address)で管理されている。ここで、複数個のセクタをまとめたものを論理ブロックと言い、複数個の論理ブロックをまとめたものを論理ゾーンと言う。また、図3(b)に示すように論理ブロックに付けられた通番を論理ブロック番号(LBN)と言い、論理ゾーンに付けられた通番を論理ゾーン番号(LZN)と言う。また、各論理ゾーンに含まれる論理ブロックの、各論理ゾーン内での通番を論理ゾーン内ブロック番号(LZIBN)と言う。   On the other hand, the address space on the host system 4 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) as shown in FIG. Here, 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. Further, as shown in FIG. 3B, a serial number assigned to a logical block is referred to as a logical block number (LBN), and a serial number assigned to a logical zone is referred to as a logical zone number (LZN). In addition, a serial number in each logical zone of a logical block included in each logical zone is referred to as a logical zone block number (LZIBN).

また、各論理ゾーンにはそれぞれ1個の物理ゾーンが割り当てられ、論理ゾーンに含まれる各論理ブロックに対応するデータは、その論理ゾーンに割り当てられた物理ゾーンに含まれる物理ブロックに書き込まれる。従って、1個の論理ブロックに含まれるセクタ数は、1個の物理ブロックに含まれるセクタ領域の個数に応じて設定される。但し、1個の論理ブロックを複数個の物理ブロックに割り当てる場合には、その複数個の物理ブロックを1個の物理ブロックとみなして1個の論理ブロックに含まれるセクタ数を設定する。   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. Therefore, the number of sectors included in one logical block is set according to the number of sector areas included in one physical block. However, when one logical block is assigned to a plurality of physical blocks, the plurality of physical blocks are regarded as one physical block, and the number of sectors included in one logical block is set.

図3に示した例では、1個の物理ブロックが256個のセクタ領域で構成されたフラッシュメモリを想定しているため、256セクタが1個の論理ブロックに対応している。従って、LBN#0〜#499の500個の論理ブロックで構成されたLZN#0の論理ゾーンは、LBA#0〜#127999の128000セクタの領域に対応している。   In the example shown in FIG. 3, since a flash memory in which one physical block is composed of 256 sector areas is assumed, 256 sectors correspond to one logical block. Therefore, the logical zone of LZN # 0 configured with 500 logical blocks of LBN # 0 to # 499 corresponds to the 128000 sector area of LBA # 0 to # 127999.

以下同様に、LZN#1の論理ゾーンは、LBA#128000〜#255999の128000セクタの領域に対応し、LZN#2の論理ゾーンは、LBA#256000〜#383999の128000セクタの領域に対応し、LZN#3の論理ゾーンは、LBA#384000〜#511999の128000セクタの領域に対応している。   Similarly, the logical zone of LZN # 1 corresponds to the 128000 sector area of LBA # 128000 to # 255999, and the logical zone of LZN # 2 corresponds to the 128000 sector area of LBA # 256000 to # 383999, The logical zone of LZN # 3 corresponds to the 128000 sector area of LBA # 384000 to # 511999.

また、LBN#0〜#499の500個の論理ブロックで構成されたLZN#0の論理ゾーンは、PBA#0〜#511の512個の物理ブロックで構成されたPZN#0の物理ゾーンに割り当てられている。以下同様に、LZN#1の論理ゾーンは、PZN#1の物理ゾーンに割り当てられ、LZN#2の論理ゾーンは、PZN#2の物理ゾーンに割り当てられ、LZN#3の論理ゾーンは、PZN#3の物理ゾーンに割り当てられている。   In addition, the logical zone of LZN # 0 configured with 500 logical blocks of LBN # 0 to # 499 is allocated to the physical zone of PZN # 0 configured with 512 physical blocks of PBA # 0 to # 511. It has been. Similarly, the logical zone of LZN # 1 is assigned to the physical zone of PZN # 1, the logical zone of LZN # 2 is assigned to the physical zone of PZN # 2, and the logical zone of LZN # 3 is assigned to PZN #. Assigned to three physical zones.

ここで、物理ゾーンに含まれる物理ブロックの個数を、論理ゾーンに含まれる論理ブロックの個数より多くしているのは、同一の論理ブロックに対応する新データと旧データが別々の物理ブロックに並存する場合や、データを正常に書き込むことができない不良ブロックが発生した場合等を考慮したものである。   Here, the reason why the number of physical blocks included in the physical zone is larger than the number of logical blocks included in the logical zone is that new data and old data corresponding to the same logical block coexist in different physical blocks. This is a case in which a case where a defective block in which data cannot be normally written is generated.

また、各物理ブロックには、その物理ブロックに割り当てられた論理ブロックのデータがLBAの順番で書き込まれるので、物理ブロックと論理ブロックとの対応関係を管理することにより、ホストシステム4から与えられるLBAとフラッシュメモリ2内のアクセス領域の対応関係を管理することができる。   In addition, since the data of the logical blocks assigned to the physical block are written in each physical block in the LBA order, the LBA given from the host system 4 is managed by managing the correspondence between the physical block and the logical block. And the access relationship in the flash memory 2 can be managed.

なお、物理ブロックと論理ブロックとの対応関係は、データの書き込みや消去が行われる毎に変化する。このため、個々の時点における両者の対応関係を管理するためアドレス変換テーブルが作成され、対応関係が変化する毎にアドレス変換テーブルが更新される。また、論理ゾーンと物理ゾーンとの対応関係は予め設定されており、アドレス変換テーブルは論理ゾーン毎に作成することができる。   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. Also, the correspondence relationship between the logical zone and the physical zone is set in advance, and the address conversion table can be created for each logical zone.

このアドレス変換テーブルは、物理ブロックの先頭ページの冗長領域26に書き込まれる論理ブロックを示す情報(以下、論理アドレス情報という)に基づいて作成される。冗長領域26に書き込まれる論理アドレス情報としては、LBN等の論理ブロックを特定する情報が用いられる。なお、論理ゾーンと物理ゾーンとの対応関係は予め設定されている場合は、LZIBNに基づいてアドレス変換テーブルを作成することができるので、LBNよりデータ量の少ないLZIBNを用いることが好ましい。   This address conversion table is created based on information (hereinafter referred to as logical address information) indicating a logical block written in the redundant area 26 of the first page of the physical block. As the logical address information written in the redundant area 26, information for specifying a logical block such as LBN is used. If the correspondence relationship between the logical zone and the physical zone is set in advance, an address conversion table can be created based on LZIBN. Therefore, it is preferable to use LZIBN having a smaller data amount than LBN.

また、物理ブロックの先頭ページの冗長領域26には、その物理ブロックが不良ブロックであるか否かを示すブロックステータス(フラグ)が書き込まれる。各セクタ領域に対応する部分冗長領域には、それぞれ対応するセクタ領域に書き込まれたユーザデータのエラーコレクションコード(ECC)と、付加情報(セクタ領域にデータが書き込まれているか否かを判断することができる付加情報)とが書き込まれる。   Further, a block status (flag) indicating whether or not the physical block is a defective block is written in the redundant area 26 of the first page of the physical block. In the partial redundancy area corresponding to each sector area, an error correction code (ECC) of user data written in the corresponding sector area and additional information (whether or not data is written in the sector area) are determined. Additional information) can be written.

次に、フラッシュメモリ2に対してアクセス処理を行うメモリコントローラ3について説明する。メモリコントローラ3は、フラッシュメモリ2にデータ、アドレス情報、内部コマンド等を供給することにより読み出し処理、書き込み処理、ブロック消去処理等の各処理を行う。   Next, the memory controller 3 that performs access processing to the flash memory 2 will be described. The memory controller 3 performs each process such as a read process, a write process, and a block erase process by supplying data, address information, internal commands, and the like to the flash memory 2.

ここで、内部コマンドとは、メモリコントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2はメモリコントローラ3から与えられる内部コマンドに従ってって動作する。一方、ホストシステム4からメモリコントローラ3に与えられるコマンドを外部コマンドと言う。   Here, the internal command is a command for the memory controller 3 to instruct the flash memory 2 to execute processing, and the flash memory 2 operates according to the internal command given from the memory controller 3. On the other hand, a command given from the host system 4 to the memory controller 3 is called an external command.

メモリコントローラ3は、図1に示すように、マイクロプロセッサ6と、ホストインターフェースブロック7と、ワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(エラー・コレクション・コード)ブロック11と、ROM(Read Only Memory)12とを備えている。これら機能ブロックによって構成されるメモリコントローラ3は、1つの半導体チップ上に集積される。   As shown in FIG. 1, the memory controller 3 includes a microprocessor 6, a host interface block 7, a work area 8, a buffer 9, a flash memory interface block 10, and an ECC (error collection code) block 11. ROM (Read Only Memory) 12. The memory controller 3 constituted by these functional blocks is integrated on one semiconductor chip.

マイクロプロセッサ6は、ROM12に記憶されているプログラムに従ってって、メモリコントローラ3の全体の動作を制御する。   The microprocessor 6 controls the overall operation of the memory controller 3 in accordance with a program stored in the ROM 12.

また、マイクロプロセッサ6は、ROM12に記憶されているプログラムに基づいてフラッシュメモリインターフェースブロック10等の動作を制御することにより、インターフェース手段と、書き込み手段と、検索範囲保持手段と、セクタ領域検索手段と、第1のセクタ領域判別手段と、第2のセクタ領域判別手段とを実現している。   Further, the microprocessor 6 controls the operation of the flash memory interface block 10 and the like based on the program stored in the ROM 12, so that interface means, writing means, search range holding means, sector area search means, The first sector area discriminating means and the second sector area discriminating means are realized.

また、マイクロプロセッサ6は、各種処理等を定義したコマンドセット(以下、シーケンスコマンドという)をROM12から読み出し、このシーケンスコマンドに従ってってフラッシュメモリインターフェースブロック10に処理を実行させる。   Further, the microprocessor 6 reads out a command set (hereinafter referred to as a sequence command) defining various processes and the like from the ROM 12, and causes the flash memory interface block 10 to execute processes according to the sequence command.

ROM12は、不揮発性の記憶素子であり、上記のシーケンスコマンド等を記憶している。ワークエリア8は、フラッシュメモリ2の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成される。上述のアドレス変換テーブルは、このワークエリア8上に作成される。   The ROM 12 is a non-volatile storage element and stores the above sequence commands and the like. The work area 8 is a work area in which data necessary for controlling the flash memory 2 is temporarily stored, and is composed of a plurality of SRAM (Static Random Access Memory) cells. The above address conversion table is created on this work area 8.

バッファ9は、フラッシュメモリ2から読み出されたデータ及びフラッシュメモリ2に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ2から読み出されたデータは、ホストシステム4が受け取り可能な状態となるまでバッファ9に保持され、フラッシュメモリ2に書き込むべきデータは、フラッシュメモリ2が書き込み可能な状態となるまでバッファ9に保持される。   The buffer 9 temporarily stores data read from the flash memory 2 and data to be written to the flash memory 2. That is, data read from the flash memory 2 is held in the buffer 9 until the host system 4 can receive the data, and data to be written to the flash memory 2 is stored until the flash memory 2 becomes writable. It is held in the buffer 9.

ECCブロック11は、フラッシュメモリ2に書き込むデータに付加されるエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する。   The ECC block 11 generates an error correction code added to data to be written to the flash memory 2 and detects and corrects an error included in the read data based on the error correction code added to the read data.

ホストインターフェースブロック7は、ホストシステム4との間で、外部バス13を介し、データ、アドレス情報、外部コマンド等の授受を行う。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてフラッシュメモリシステム1の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストシステム4に供給される。   The host interface block 7 exchanges data, address information, external commands, and the like with the host system 4 via the external bus 13. Data or the like supplied from the host system 4 to the flash memory system 1 is taken into the flash memory system 1 (for example, the buffer 9) using the host interface block 7 as an entrance. Data supplied from the flash memory system 1 to the host system 4 is supplied to the host system 4 through the host interface block 7 as an exit.

フラッシュメモリインターフェースブロック10は、内部バス14を介して、フラッシュメモリ2とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。   The flash memory interface block 10 exchanges data, address information, status information, internal commands, and the like with the flash memory 2 via the internal bus 14.

ホストインターフェースブロック7及びフラッシュメモリインターフェースブロック10は、図4に示すような各種レジスタを備える。すなわち、ホストインターフェースブロック7は、コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3等を備えている。また、フラッシュメモリインターフェースブロック10は、物理ブロックアドレスレジスタR11、セクタ番号レジスタR12、カウンタR13等を備えている。   The host interface block 7 and the flash memory interface block 10 include various registers as shown in FIG. That is, the host interface block 7 includes a command register R1, a sector number register R2, an LBA register R3, and the like. The flash memory interface block 10 includes a physical block address register R11, a sector number register R12, a counter R13, and the like.

コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3には、ホストシステム4から与えられる情報が書き込まれる。コマンドレジスタR1には、書き込みコマンド、読み出しコマンド等の外部コマンドが書き込まれる。セクタ数レジスタR2にはアクセス対象領域のセクタ数が書き込まれる。LBAレジスタR3には、アクセス対象領域の先頭のLBAが書き込まれる。   Information given from the host system 4 is written in the command register R1, the sector number register R2, and the LBA register R3. External commands such as a write command and a read command are written in the command register R1. The number of sectors in the access target area is written in the sector number register R2. In the LBA register R3, the head LBA of the access target area is written.

物理ブロックアドレスレジスタR11、セクタ番号レジスタR12、カウンタR13には、セクタ数レジスタR2及びLBAレジスタR3に書き込まれた情報に基づく、フラッシュメモリ2内のアクセス対象領域を指示する情報が書き込まれる。   Information indicating the access target area in the flash memory 2 based on the information written in the sector number register R2 and the LBA register R3 is written in the physical block address register R11, the sector number register R12, and the counter R13.

例えば、LBAが連続する256セクタの領域を、フラッシュメモリ2(1ブロックが64ページで、1ページが4セクタの場合)の1個の物理ブロックに割り当てた場合、図3で説明したLBAの下位8ビットがセクタ番号SNに対応し、この下位8ビットを除いた上位側のビットが論理ブロック番号(LBN)に対応する。   For example, if a 256-sector area with consecutive LBAs is assigned to one physical block in the flash memory 2 (one block has 64 pages and one page has 4 sectors), the LBA described in FIG. Eight bits correspond to the sector number SN, and the upper bits excluding the lower eight bits correspond to the logical block number (LBN).

つまり、LBAが連続する256セクタの領域を1個の論理ブロックとした場合、LBAの下位8ビットが論理ブロック内の各セクタに付けた通番であるセクタ番号SN(0〜255)を示し、このLBAの下位8ビットを除いた上位側のビットが論理ブロック番号(LBN)を示している。なお、LBA、論理ブロック番号(LBN)及びセクタ番号SNのビット数については、フラッシュメモリ2の容量や仕様等に応じて決定される。   That is, when an area of 256 sectors with continuous LBAs is made one logical block, the lower 8 bits of the LBA indicate a sector number SN (0 to 255) which is a serial number assigned to each sector in the logical block. The upper bits excluding the lower 8 bits of the LBA indicate the logical block number (LBN). Note that the number of bits of the LBA, logical block number (LBN), and sector number SN is determined according to the capacity and specifications of the flash memory 2.

次に、物理ブロックアドレスレジスタR11、セクタ番号レジスタR12、カウンタR13に設定される情報について説明する。セクタ番号レジスタR12には、LBAレジスタR3に書き込まれたLBAのセクタ番号SNに対応する部分が書き込まれる。   Next, information set in the physical block address register R11, the sector number register R12, and the counter R13 will be described. In the sector number register R12, a portion corresponding to the sector number SN of the LBA written in the LBA register R3 is written.

ここで、各物理ブロックにはLBAの順番でユーザデータが書き込まれるので、上記のセクタ番号SNは、各物理ブロックに含まれるセクタ領域に付けられた通番に対応する。一方、物理ブロックアドレスレジスタR11には、LBAレジスタR3に書き込まれたLBAの論理ブロック番号(LBN)を示す部分に基づいて特定された論理ブロックと対応する物理ブロックの物理ブロックアドレス(PBA)又は空きブロックの物理ブロックアドレス(PBA)が書き込まれる。   Here, since user data is written in each physical block in the order of LBA, the sector number SN corresponds to a serial number assigned to a sector area included in each physical block. On the other hand, in the physical block address register R11, the physical block address (PBA) of the physical block corresponding to the logical block specified based on the part indicating the logical block number (LBN) of the LBA written in the LBA register R3 or empty The physical block address (PBA) of the block is written.

つまり、特定された論理ブロックに対応する物理ブロックからユーザデータを読み出す場合、又は、その物理ブロックに追加書き込みをする場合には、特定された論理ブロックと対応する物理ブロックの物理ブロックアドレス(PBA)が物理ブロックアドレスレジスタR11に書き込まれる。また、特定された論理ブロックに対応するユーザデータを空きブロックに書き込む場合には、その空きブロックの物理ブロックアドレス(PBA)が物理ブロックアドレスレジスタR11に書き込まれる。カウンタR13には、セクタ数レジスタR2に設定されたセクタ数が書き込まれる。   That is, when reading user data from the physical block corresponding to the specified logical block, or when additional writing is performed on the physical block, the physical block address (PBA) of the physical block corresponding to the specified logical block Is written to the physical block address register R11. In addition, when user data corresponding to the specified logical block is written into an empty block, the physical block address (PBA) of the empty block is written into the physical block address register R11. In the counter R13, the number of sectors set in the sector number register R2 is written.

なお、LBAレジスタR3及びセクタ数レジスタR2に設定された情報に基づいて特定されるアクセス対象領域が複数の論理ブロックに跨っている場合、アクセス対象領域の物理ブロックも複数の物理ブロックに跨っているので、物理ブロックアドレスレジスタR11、セクタ番号レジスタR12、カウンタR13に対する情報の設定は論理ブロック毎に行い、カウンタR13には各論理ブロックに書き込まれるユーザデータのセクタ数を設定する。   When the access target area specified based on the information set in the LBA register R3 and the sector number register R2 extends over a plurality of logical blocks, the physical block of the access target area also extends over the plurality of physical blocks. Therefore, information is set in the physical block address register R11, the sector number register R12, and the counter R13 for each logical block, and the number of sectors of user data written in each logical block is set in the counter R13.

また、フラッシュメモリインターフェースブロック10は、物理ブロックアドレスレジスタR11、セクタ番号レジスタR12、カウンタR13に設定された値に基づいて、一連の書き込み処理(以下、シーケンス書き込み処理と言う。)や一連の読み出し処理(以下、シーケンス読み出し処理と言う。)を実行する。   Further, the flash memory interface block 10 performs a series of write processes (hereinafter referred to as a sequence write process) and a series of read processes based on the values set in the physical block address register R11, the sector number register R12, and the counter R13. (Hereinafter referred to as a sequence reading process).

シーケンス書き込み処理では、1セクタのデータがバッファ9からフラッシュメモリ2に供給される毎にセクタ番号レジスタR12に設定されている値がインクリメント(1ずつ増加)され、カウンタR13に設定されている値がデクリメント(1ずつ減少)される。カウンタR13に設定されている値が0になったときにシーケンス書き込み処理が終了する。従って、セクタ番号レジスタR12に最初に設定されたセクタ番号のセクタ領域からカウンタR13に最初に設定されたセクタ数分の領域にデータが書き込まれる。   In the sequential writing process, every time data of one sector is supplied from the buffer 9 to the flash memory 2, the value set in the sector number register R12 is incremented (incremented by 1), and the value set in the counter R13 is Decrement (decrease by 1). When the value set in the counter R13 becomes 0, the sequence writing process ends. Therefore, data is written from the sector area of the sector number initially set in the sector number register R12 to the area corresponding to the number of sectors initially set in the counter R13.

同様に、シーケンス読み出し処理では、1セクタのデータがフラッシュメモリ2からバッファ9に読み出される毎にセクタ番号レジスタR12に設定されている値がインクリメント(1ずつ増加)され、カウンタR13に設定されている値がデクリメント(1ずつ減少)される。カウンタR13に設定されている値が0になったときにシーケンス読み出し処理が終了する。従って、セクタ番号レジスタR12に最初に設定されたセクタ番号のセクタ領域からカウンタR13に最初に設定されたセクタ数分の領域に記憶されているデータが読み出される。   Similarly, in the sequence read processing, every time data of one sector is read from the flash memory 2 to the buffer 9, the value set in the sector number register R12 is incremented (incremented by 1) and set in the counter R13. The value is decremented (decremented by 1). The sequence reading process ends when the value set in the counter R13 becomes zero. Therefore, the data stored in the area corresponding to the number of sectors initially set in the counter R13 is read from the sector area of the sector number initially set in the sector number register R12.

例えば、セクタ番号レジスタR12に「10」を設定し、カウンタR13に「8」を設定してシーケンス書き込み処理を開始した場合、SN#10〜#17のセクタ領域にユーザデータが書き込まれる。   For example, when “10” is set in the sector number register R12 and “8” is set in the counter R13 and the sequence writing process is started, user data is written in the sector areas of SN # 10 to # 17.

次に、このようなデータが書き込まれていないセクタ領域の先頭を検索する検索処理を、図5から図8を用いて説明する。なお、以下に説明する検索処理は、図9(a)、(b)で説明したように、第1のインターフェースを介してアクセスされるchAの物理ブロックと、第2のインターフェースを介してアクセスされるchBの物理ブロックを仮想的に結合した仮想ブロックで行うものとする。また、それぞれの物理ブロックは、1個の物理ブロックが256個のセクタ領域で構成されているとみなすことができる大ブロックの場合とする。   Next, search processing for searching for the head of a sector area in which such data is not written will be described with reference to FIGS. Note that the search processing described below is accessed via the second interface and the physical block of chA accessed via the first interface, as described in FIGS. 9A and 9B. It is assumed that the processing is performed by a virtual block obtained by virtually combining the physical blocks of chB. In addition, each physical block is assumed to be a large block in which one physical block can be regarded as being composed of 256 sector areas.

なお、chAの物理ブロックとchBの物理ブロックには交互にデータが書き込まれるので、仮想ブロック内のセクタ領域に付けられたセクタ番号が偶数であれば、そのセクタ領域はchAの物理ブロックに含まれ、仮想ブロック内のセクタ領域に付けられたセクタ番号が奇数であれば、そのセクタ領域はchBの物理ブロックに含まれる。   Since data is alternately written to the chA physical block and the chB physical block, if the sector number assigned to the sector area in the virtual block is an even number, the sector area is included in the chA physical block. If the sector number assigned to the sector area in the virtual block is an odd number, the sector area is included in the physical block of chB.

また、仮想ブロック内の検索範囲を特定する情報として、先頭位置情報(検索範囲の先頭セクタ領域の番号を示す情報)が示す番号Nsと末尾位置情報(検索範囲の末尾セクタ領域の番号を示す情報)が示す番号Neを用いる。第1のセクタ領域は、番号Nsに変数Aを加算した番号Naに対応するセクタ領域であり、第2のセクタ領域は、番号Neから変数Bを減算した番号Nbに対応する第2のセクタ領域である。   Also, as information for specifying the search range in the virtual block, the number Ns indicated by the head position information (information indicating the number of the first sector area of the search range) and the end position information (information indicating the number of the last sector area of the search range) The number Ne indicated by The first sector area is a sector area corresponding to the number Na obtained by adding the variable A to the number Ns, and the second sector area is the second sector area corresponding to the number Nb obtained by subtracting the variable B from the number Ne. It is.

また、番号Neと番号Nsの差が3以上の範囲(Ne−Ns≧3の範囲)では、変数Aと変数Bは、以下の条件を満たす範囲内で適宜設定できる。第1の条件は、番号Ns、番号Ne、番号Na、及び番号Nbが、下記条件式(1)〜(4)を満たすように変数A、変数Bを設定しなければならない。
Ns<Na<Nb<Ne (1)
Na−Ns≦(Ne−Ns)/2 (2)
Nb−Na≦(Ne−Ns)/2 (3)
Ne−Nb≦(Ne−Ns)/2 (4)
In the range where the difference between the number Ne and the number Ns is 3 or more (range Ne−Ns ≧ 3), the variable A and the variable B can be set as appropriate within the range satisfying the following conditions. In the first condition, the variable A and the variable B must be set so that the number Ns, the number Ne, the number Na, and the number Nb satisfy the following conditional expressions (1) to (4).
Ns <Na <Nb <Ne (1)
Na-Ns ≦ (Ne-Ns) / 2 (2)
Nb-Na ≦ (Ne-Ns) / 2 (3)
Ne−Nb ≦ (Ne−Ns) / 2 (4)

この条件を満たすようように変数A、変数Bを設定した場合、データが書き込まれていないセクタ領域の先頭を検索する検索処理の処理時間を、通常の2分木検索より短くすることができる。つまり、通常の2分木検索の場合は、検索範囲の先頭セクタ領域から末尾セクタ領域までの範囲(Ne−Ns)は、常に前回の範囲の1/2になるが、上記条件式(1)〜(4)を満たすように変数A、変数Bを設定すれば、検索範囲の先頭セクタ領域から末尾セクタ領域までの範囲(Ne−Ns)が、前回の範囲の1/2よりも狭くなるときがあるので、通常の2分木検索より検索時間を短縮することができる。   When the variables A and B are set so as to satisfy this condition, the processing time for the search process for searching for the head of the sector area in which no data is written can be made shorter than the normal binary tree search. That is, in the case of normal binary tree search, the range (Ne−Ns) from the first sector area to the last sector area of the search range is always ½ of the previous range, but the conditional expression (1) When variable A and variable B are set so as to satisfy (4), the range (Ne−Ns) from the first sector area to the last sector area of the search range becomes narrower than ½ of the previous range. Therefore, the search time can be shortened compared with the normal binary tree search.

詳細に説明すれば、検索範囲の先頭セクタ領域から末尾セクタ領域までの範囲(Ne−Ns)は、第1のセクタ領域と第2のセクタ領域にデータが書き込まれているか否かに応じて、検索範囲の先頭セクタ領域から第1のセクタ領域までの範囲(Na−Ns)と、第1のセクタ領域から第2のセクタ領域までの範囲(Nb−Na)と、第2のセクタ領域から検索範囲の末尾セクタ領域までの範囲(Ne−Nb)のいずれかの範囲に狭まる。   More specifically, the range (Ne−Ns) from the first sector area to the last sector area of the search range depends on whether data is written in the first sector area and the second sector area. Search from the first sector area to the first sector area (Na-Ns), the range from the first sector area to the second sector area (Nb-Na), and the second sector area The range narrows to one of the ranges (Ne−Nb) up to the last sector area of the range.

ここで、検索範囲の先頭セクタ領域から第1のセクタ領域までの範囲(Na−Ns)と、第1のセクタ領域から第2のセクタ領域までの範囲(Nb−Na)と、第2のセクタ領域から検索範囲の末尾セクタ領域までの範囲(Ne−Nb)が全て検索範囲の先頭セクタ領域から末尾セクタ領域までの範囲(Ne−Ns)の1/2より小さくなるようにすれば、検索範囲の先頭セクタ領域から末尾セクタ領域までの範囲(Ne−Ns)は、前回の範囲の1/2よりも狭くなる。   Here, the range from the first sector area to the first sector area (Na-Ns), the range from the first sector area to the second sector area (Nb-Na), and the second sector If the range (Ne−Nb) from the area to the end sector area of the search range is all smaller than ½ of the range (Ne−Ns) from the start sector area to the end sector area of the search range, the search range The range (Ne−Ns) from the first sector area to the last sector area is narrower than ½ of the previous range.

また、検索範囲の先頭セクタ領域から第1のセクタ領域までの範囲(Na−Ns)と、第1のセクタ領域から第2のセクタ領域までの範囲(Nb−Na)と、第2のセクタ領域から検索範囲の末尾セクタ領域までの範囲(Ne−Nb)のいずれか1つの範囲が検索範囲の先頭セクタ領域から末尾セクタ領域までの範囲(Ne−Ns)の1/2と等しい場合、検索範囲の先頭セクタ領域から末尾セクタ領域までの範囲(Ne−Ns)が、前回の範囲の1/2より狭くならないときある(前回の範囲の1/2になるときがある)。しかし、この場合、他の2つの範囲は検索範囲の先頭セクタ領域から末尾セクタ領域までの範囲(Ne−Ns)の1/2より小さくなるので、検索範囲の先頭セクタ領域から末尾セクタ領域までの範囲(Ne−Ns)が、前回の範囲の1/2よりも狭くなるときもある。   Further, the range (Na-Ns) from the first sector area to the first sector area, the range (Nb-Na) from the first sector area to the second sector area, and the second sector area If any one of the range from the search sector to the end sector area (Ne−Nb) is equal to ½ of the range from the start sector area to the end sector area (Ne−Ns) of the search range In some cases, the range (Ne−Ns) from the first sector area to the last sector area is not narrower than ½ of the previous range (may be ½ of the previous range). However, in this case, the other two ranges are smaller than ½ of the range (Ne−Ns) from the first sector area to the last sector area of the search range. The range (Ne-Ns) may be narrower than half of the previous range.

第2の条件は、第1のセクタ領域と第2のセクタ領域のいずれか一方が第1のインターフェース側の物理ブロック内のセクタ領域で、他方が第2のインターフェース側の物理ブロック内のセクタ領域になるように変数A、変数Bを設定しなければならない。   The second condition is that one of the first sector area and the second sector area is a sector area in the physical block on the first interface side, and the other is a sector area in the physical block on the second interface side. The variables A and B must be set so that

ここで、第1のインターフェース側の物理ブロック内のセクタ領域に偶数のセクタ番号が割り当てられ、第2のインターフェース側の物理ブロック内のセクタ領域に奇数のセクタ番号が割り当てられている場合、番号Naと番号Nbのいずれか一方が偶数で、他方が奇数になるようにすれば第3の条件を満たすことができる。従って、番号Naと番号Nbを求めた後に、番号Naと番号Nbのいずれか一方に1を加算又はいずれか一方から1を減算してこの条件を満たすようにしてもよい。なお、このように番号Naと番号Nbのいずれか一方に1を加算又はいずれか一方から1を減算するのは、実質的に変数A、変数Bの値の変更とみなすことができる。   Here, when an even sector number is assigned to the sector area in the physical block on the first interface side and an odd sector number is assigned to the sector area in the physical block on the second interface side, the number Na If the number Nb is an even number and the other is an odd number, the third condition can be satisfied. Therefore, after obtaining the number Na and the number Nb, 1 may be added to either the number Na or the number Nb, or 1 may be subtracted from either one to satisfy this condition. Note that adding 1 to or subtracting 1 from one of the numbers Na and Nb in this way can be regarded as substantially changing the values of the variables A and B.

この条件を満たすように変数A、変数Bを設定すれば、第1のセクタ領域にデータが書き込まれているか否かと、第2のセクタ領域にデータが書き込まれているか否かを並行して判断することができる。   If variable A and variable B are set so as to satisfy this condition, it is determined in parallel whether data is written in the first sector area and whether data is written in the second sector area. can do.

次に、図5のフローチャートを参照してデータが書き込まれていないセクタ領域の先頭を検索する検索処理の処理手順を説明する。なお、以下の説明では、先頭位置情報(検索範囲の先頭セクタ領域の番号を示す情報)が示す番号Nsを、スタートポインタXと言い、末尾位置情報(検索範囲の先頭セクタ領域の番号を示す情報)が示す番号Neを、エンドポインタYと言う。また、変数Aと変数Bは(Ne−Ns)/4に相当する(Y−X)/4とする。   Next, a processing procedure of search processing for searching for the head of a sector area in which no data is written will be described with reference to the flowchart of FIG. In the following description, the number Ns indicated by the head position information (information indicating the number of the first sector area in the search range) is referred to as a start pointer X, and the end position information (information indicating the number of the first sector area in the search range). The number Ne indicated by () is referred to as an end pointer Y. Variable A and variable B are (Y−X) / 4 corresponding to (Ne−Ns) / 4.

この検索処理を開始するときは、スタートポインタXとエンドポインタYに初期値を設定する。つまり、スタートポインタXには仮想ブロック内の先頭セクタ領域のセクタ番号である0を設定し、エンドポインタYには、仮想ブロック内の末尾セクタ領域のセクタ番号に1を加算した512を設定する(ステップS1)。   When starting this search process, initial values are set in the start pointer X and the end pointer Y. That is, the start pointer X is set to 0 which is the sector number of the head sector area in the virtual block, and the end pointer Y is set to 512 which is obtained by adding 1 to the sector number of the end sector area in the virtual block ( Step S1).

次に、エンドポインタYとスタートポインタXとの差が4より小さいか否かを判断する(ステップS2)。この条件に基づいて、番号Naと番号Nb算出方法が決定される。エンドポインタYとスタートポインタXとの差が4以上の場合(ステップS2:No)、番号Naと番号Nbは下記の式(5)、(6)で算出される(ステップS3)。
Na=X+(Y−X)/4 (5)
Nb=Y−(Y−X)/4 (6)
Next, it is determined whether or not the difference between the end pointer Y and the start pointer X is smaller than 4 (step S2). Based on this condition, the number Na and number Nb calculation method is determined. When the difference between the end pointer Y and the start pointer X is 4 or more (step S2: No), the number Na and the number Nb are calculated by the following equations (5) and (6) (step S3).
Na = X + (Y−X) / 4 (5)
Nb = Y− (Y−X) / 4 (6)

エンドポインタYとスタートポインタXとの差が4より小さい場合(ステップS2:Yes)、番号Naと番号Nbは下記の式(7)、(8)で算出される(ステップS4)。
Na=X+1 (7)
Nb=Y−1 (8)
When the difference between the end pointer Y and the start pointer X is smaller than 4 (step S2: Yes), the number Na and the number Nb are calculated by the following formulas (7) and (8) (step S4).
Na = X + 1 (7)
Nb = Y-1 (8)

つまり、エンドポインタYとスタートポインタXとの差が4より小さい場合は、変数Aと変数Bを1として番号Naと番号Nbが算出される。ここで、変数Aと変数Bを1としたのは、(Y−X)/4の値(小数点以下を切り捨てた値)が0になり、Na=X、Nb=Yとなってしまうことを回避するためである。   That is, when the difference between the end pointer Y and the start pointer X is smaller than 4, the numbers A and Nb are calculated by setting the variables A and B to 1. Here, the variable A and the variable B are set to 1 because the value of (Y−X) / 4 (value obtained by rounding down the decimal point) becomes 0, and Na = X and Nb = Y. This is to avoid it.

ステップS3又はステップS4で算出した番号Naと番号Nbの双方が偶数、又は奇数であるかを判断する(ステップS5)。   It is determined whether both the number Na and the number Nb calculated in step S3 or step S4 are even or odd (step S5).

番号Naと番号Nbの一方が偶数で他方が奇数の場合(ステップS5:No)、セクタ番号SNがNaの第1のセクタ領域とセクタ番号SNがNbの第2のセクタ領域は、一方が第1のインターフェース側の物理ブロック内のセクタ領域で、他方が第2のインターフェース側の物理ブロック内のセクタ領域になる。従って、番号Naと番号Nbに対する調整行わずにステップS8に進む。   When one of the numbers Na and Nb is an even number and the other is an odd number (step S5: No), one of the first sector area with a sector number SN of Na and the second sector area with a sector number SN of Nb is the first. The sector area in the physical block on one interface side is the sector area in the physical block on the second interface side. Therefore, the process proceeds to step S8 without adjusting the numbers Na and Nb.

番号Naと番号Nbの双方が偶数、又は奇数の場合(ステップS5:Yes)、番号Naと番号Nbが同じ番号であるか否かを判断する(ステップS6)。番号Naと番号Nbが同じ番号である場合(ステップS6:Yes)、第1のインターフェースと第2のインターフェースの2つのインターフェースでアクセスする必要がないので番号Naと番号Nbに対する調整行わずにステップS8に進む。番号Naと番号Nbが同じ番号でない場合(ステップS6:No)、番号Naに1を加算する調整を行った後(ステップS7)、ステップS8に進む。   When both the number Na and the number Nb are even or odd (step S5: Yes), it is determined whether the number Na and the number Nb are the same number (step S6). If the number Na and the number Nb are the same number (step S6: Yes), it is not necessary to access the two interfaces of the first interface and the second interface, so the adjustment to the number Na and the number Nb is not performed, and the step S8 is performed. Proceed to When the number Na and the number Nb are not the same number (step S6: No), after adjusting to add 1 to the number Na (step S7), the process proceeds to step S8.

次に、第1のインターフェースと第2のインターフェースを介して、セクタ番号SNがNaの第1のセクタ領域とセクタ番号SNがNbの第2のセクタ領域が並行してアクセスされる。なお、ステップS7の番号Naの調整は、この並行処理を可能にするために行われる。従って、番号Naを変更せずに、番号Nbから1を減算する調整を行ってもよい。また、第1のセクタ領域と第2のセクタ領域に対するアクセスでは、それぞれのセクタ領域に対応する部分冗長領域に書き込まれている付加情報(セクタ領域にデータが書き込まれているか否かを判断することができる付加情報)を参照し、その参照結果に基づいて第1のセクタ領域と第2のセクタ領域にデータが書き込まれているか否かが判断される。   Next, the first sector area with the sector number SN of Na and the second sector area with the sector number SN of Nb are accessed in parallel via the first interface and the second interface. The adjustment of the number Na in step S7 is performed to enable this parallel processing. Therefore, an adjustment to subtract 1 from the number Nb may be performed without changing the number Na. In addition, in accessing the first sector area and the second sector area, additional information (determining whether data is written in the sector area) written in the partial redundancy area corresponding to each sector area Additional information) can be referred to, and based on the reference result, it is determined whether or not data is written in the first sector area and the second sector area.

第1のセクタ領域にデータが書き込まれているか否かの判断(ステップS8)と、第2のセクタ領域にデータが書き込まれているか否かの判断(ステップS9)の結果に基づいてスタートポインタXとエンドポインタYの双方又はいずれか一方の値が変更される。   The start pointer X is determined based on the result of determination of whether data is written in the first sector area (step S8) and determination of whether data is written in the second sector area (step S9). And / or the end pointer Y are changed.

第1のセクタ領域にデータが書き込まれていない場合(ステップS8:No)、第1のセクタ領域より後のセクタ領域にはデータは書き込まれていないので、エンドポインタYの値を番号Naの値に変更する(ステップS11)。なお、各セクタ領域にはセクタ番号の順番でデータが書き込まれるため、第1のセクタ領域にデータが書き込まれていない場合、第2のセクタ領域にもデータが書き込まれていない。   If no data is written in the first sector area (step S8: No), no data is written in the sector area after the first sector area, so the value of the end pointer Y is set to the value of the number Na. (Step S11). Since data is written in each sector area in the order of sector numbers, data is not written in the second sector area when data is not written in the first sector area.

第1のセクタ領域と第2のセクタ領域の双方にデータが書き込まれている場合(ステップS8:Yes、ステップS9:Yes)、第2のセクタ領域より前のセクタ領域にはデータは書き込まれているので、スタートポインタXの値を番号Nbの値に変更する(ステップS12)。   When data is written in both the first sector area and the second sector area (step S8: Yes, step S9: Yes), the data is written in the sector area before the second sector area. Therefore, the value of the start pointer X is changed to the value of the number Nb (step S12).

第1のセクタ領域にデータが書き込まれていて、第2のセクタ領域にデータが書き込まれていない場合(ステップS8:Yes、ステップS9:No)、第1のセクタ領域より前のセクタ領域にはデータは書き込まれているので、スタートポインタXの値を番号Naの値に変更し、第2のセクタ領域より後のセクタ領域にはデータは書き込まれていないので、エンドポインタYの値を番号Nbの値に変更する(ステップS10)。   When data is written in the first sector area and data is not written in the second sector area (step S8: Yes, step S9: No), the sector area before the first sector area Since the data has been written, the value of the start pointer X is changed to the value Na, and no data is written in the sector area after the second sector area, so the value of the end pointer Y is set to the number Nb. (Step S10).

ステップS10〜12でスタートポインタXとエンドポインタYの双方又はいずれか一方の値を変更した後に、変更後のスタートポインタXとエンドポインタYの差が1であるか否か判断する(ステップS13)。スタートポインタXとエンドポインタYの差が1の場合(ステップS13:Yes)、検索処理を終了する。スタートポインタXとエンドポインタYの差が1でない場合(ステップS13:Yes)、ステップS2に戻る。   After changing the value of either or both of the start pointer X and the end pointer Y in steps S10 to 12, it is determined whether or not the difference between the changed start pointer X and end pointer Y is 1 (step S13). . When the difference between the start pointer X and the end pointer Y is 1 (step S13: Yes), the search process is terminated. When the difference between the start pointer X and the end pointer Y is not 1 (step S13: Yes), the process returns to step S2.

つまり、この検索処理はスタートポインタXとエンドポインタYの差が1になるまで繰り返され、スタートポインタXとエンドポインタYの差が1になったときにスタートポインタXに設定されている値が、データが書き込まれているセクタ領域の末尾のセクタ番号SNに一致し、エンドポインタYに設定されている値が、データが書き込まれていないセクタ領域の先頭のセクタ番号SNに一致する。   That is, this search process is repeated until the difference between the start pointer X and the end pointer Y becomes 1, and when the difference between the start pointer X and the end pointer Y becomes 1, the value set in the start pointer X is The sector number SN at the end of the sector area in which data is written coincides, and the value set in the end pointer Y matches the sector number SN at the beginning of the sector area in which no data is written.

次に、仮想ブロック内のセクタ番号SNのSN#300のセクタ領域までデータが書き込まれている場合の検索処理について図6を参照して具体的に説明する。   Next, the search processing when data is written up to the sector area of SN # 300 of sector number SN in the virtual block will be specifically described with reference to FIG.

<検索回数1>
スタートポインタXの初期値0とエンドポインタYの初期値512に基づいてNaの値128(=0+(512−0)/4)とNbの値384(=512−(512−0)/4)を算出し、NaとNbの双方が偶数なのでNaの値を129(=128+1)にする。セクタ番号SNが#129の第1のセクタ領域に対応する部分冗長領域とセクタ番号SNが#384の第2のセクタ領域に対応する部分冗長領域を参照する。参照した結果、第1のセクタ領域にデータが有り第2のセクタ領域にデータが無いと判断し、スタートポインタXの値をNaの値129に変更すると共にエンドポインタYの値をNbの値384に変更する。
<Number of searches 1>
Based on the initial value 0 of the start pointer X and the initial value 512 of the end pointer Y, the Na value 128 (= 0 + (512-0) / 4) and the Nb value 384 (= 512- (512-0) / 4) Since both Na and Nb are even numbers, the value of Na is set to 129 (= 128 + 1). Reference is made to the partial redundancy area corresponding to the first sector area of sector number SN # 129 and the partial redundancy area corresponding to the second sector area of sector number SN # 384. As a result of the reference, it is determined that there is data in the first sector area and no data in the second sector area, and the value of the start pointer X is changed to the Na value 129 and the value of the end pointer Y is changed to the Nb value 384. Change to

<検索回数2>
スタートポインタXの値129とエンドポインタYの値384に基づいてNaの値192(=129+(384−129)/4)とNbの値321(=384−(384−129)/4)を算出する。セクタ番号SNが#192の第1のセクタ領域に対応する部分冗長領域とセクタ番号SNが#321の第2のセクタ領域に対応する部分冗長領域を参照する。参照した結果、第1のセクタ領域にデータが有り第2のセクタ領域にデータが無いと判断し、スタートポインタXの値をNaの値192に変更すると共にエンドポインタYの値をNbの値321に変更する。
<Number of searches 2>
Based on the start pointer X value 129 and the end pointer Y value 384, the Na value 192 (= 129 + (384-129) / 4) and the Nb value 321 (= 384- (384-129) / 4) are calculated. To do. Reference is made to the partial redundancy area corresponding to the first sector area with sector number SN # 192 and the partial redundancy area corresponding to the second sector area with sector number SN # 321. As a result of the reference, it is determined that there is data in the first sector area and no data in the second sector area, the value of the start pointer X is changed to the Na value 192, and the value of the end pointer Y is changed to the value 321 of Nb. Change to

<検索回数3>
スタートポインタXの値192とエンドポインタYの値321に基づいてNaの値224(=192+(321−192)/4)とNbの値289(=321−(321−192)/4)を算出する。セクタ番号SNが#224の第1のセクタ領域に対応する部分冗長領域とセクタ番号SNが#289の第2のセクタ領域に対応する部分冗長領域を参照する。参照した結果、第1のセクタ領域と第2のセクタ領域の双方にデータが有ると判断し、スタートポインタXの値をNbの値289に変更する。
<Number of searches 3>
Based on the value 192 of the start pointer X and the value 321 of the end pointer Y, the Na value 224 (= 192 + (321-192) / 4) and the Nb value 289 (= 321- (321-192) / 4) are calculated. To do. Reference is made to the partial redundancy area corresponding to the first sector area with sector number SN # 224 and the partial redundancy area corresponding to the second sector area with sector number SN # 289. As a result of the reference, it is determined that there is data in both the first sector area and the second sector area, and the value of the start pointer X is changed to the value 289 of Nb.

<検索回数4>
スタートポインタXの値289とエンドポインタYの値321に基づいてNaの値297(=289+(321−289)/4)とNbの値313(=321−(321−289)/4)を算出し、NaとNbの双方が奇数なのでNaの値を298(=297+1)にする。セクタ番号SNが#298の第1のセクタ領域に対応する部分冗長領域とセクタ番号SNが#313の第2のセクタ領域に対応する部分冗長領域を参照する。参照した結果、第1のセクタ領域にデータが有り第2のセクタ領域にデータが無いと判断し、スタートポインタXの値をNaの値298に変更すると共にエンドポインタYの値をNbの値313に変更する。
<Number of searches 4>
Based on the value 289 of the start pointer X and the value 321 of the end pointer Y, the Na value 297 (= 289 + (321-289) / 4) and the Nb value 313 (= 321- (321-289) / 4) are calculated. Since both Na and Nb are odd numbers, the value of Na is set to 298 (= 297 + 1). Reference is made to the partial redundancy area corresponding to the first sector area with sector number SN # 298 and the partial redundancy area corresponding to the second sector area with sector number SN # 313. As a result of the reference, it is determined that there is data in the first sector area and no data in the second sector area, and the value of the start pointer X is changed to the Na value 298 and the value of the end pointer Y is changed to the value 313 of Nb. Change to

<検索回数5>
スタートポインタXの値298とエンドポインタYの値313に基づいてNaの値301(=298+(313−298)/4)とNbの値310(=313−(313−298)/4)を算出する。セクタ番号SNが#301の第1のセクタ領域に対応する部分冗長領域とセクタ番号SNが#310の第2のセクタ領域に対応する部分冗長領域を参照する。参照した結果、第1のセクタ領域と第2のセクタ領域の双方にデータが無いと判断し、エンドポインタYの値をNaの値301に変更する。
<Number of searches 5>
Based on the start pointer X value 298 and the end pointer Y value 313, the Na value 301 (= 298 + (313-298) / 4) and the Nb value 310 (= 313- (313-298) / 4) are calculated. To do. A partial redundancy area corresponding to the first sector area with sector number SN # 301 and a partial redundancy area corresponding to the second sector area with sector number SN # 310 are referred to. As a result of the reference, it is determined that there is no data in both the first sector area and the second sector area, and the value of the end pointer Y is changed to the value 301 of Na.

<検索回数6>
スタートポインタXの値298とエンドポインタYの値301の差が4より小さいので、スタートポインタXの値298に1を加算したNaの値299とエンドポインタYの値301から1を減算したNbの値300を求める。セクタ番号SNが#299の第1のセクタ領域に対応する部分冗長領域とセクタ番号SNが#300の第2のセクタ領域に対応する部分冗長領域を参照する。参照した結果、第1のセクタ領域と第2のセクタ領域の双方にデータが有ると判断し、スタートポインタXの値をNbの値300に変更する。
<Number of searches 6>
Since the difference between the start pointer X value 298 and the end pointer Y value 301 is smaller than 4, the Na value 299 obtained by adding 1 to the start pointer X value 298 and the Nb value obtained by subtracting 1 from the end pointer Y value 301 The value 300 is determined. Reference is made to the partial redundancy area corresponding to the first sector area of sector number SN # 299 and the partial redundancy area corresponding to the second sector area of sector number SN # 300. As a result of the reference, it is determined that there is data in both the first sector area and the second sector area, and the value of the start pointer X is changed to the value 300 of Nb.

ここで、スタートポインタXの値300とエンドポインタYの値301の差が1になったので検索を終了し、データが書き込まれているセクタ領域の末尾のセクタ番号SNが#300であると判断し、データが書き込まれていないセクタ領域の先頭のセクタ番号SNが#301であると判断する。   Here, since the difference between the value 300 of the start pointer X and the value 301 of the end pointer Y is 1, the search is terminated, and it is determined that the sector number SN at the end of the sector area in which data is written is # 300. Then, it is determined that the first sector number SN of the sector area where data is not written is # 301.

次に、仮想ブロック内のセクタ番号SNのSN#305のセクタ領域までデータが書き込まれている場合の検索処理について図7を参照して具体的に説明する。なお、検索回数4までは図6の場合と同じなので検索回数5以降について説明する。   Next, the search processing when data is written up to the sector area of SN # 305 of the sector number SN in the virtual block will be specifically described with reference to FIG. Since the number of searches up to 4 is the same as in the case of FIG. 6, only the number of searches after 5 will be described.

<検索回数5>
スタートポインタXの値298とエンドポインタYの値313に基づいてNaの値301(=298+(313−298)/4)とNbの値310(=313−(313−298)/4)を算出する。セクタ番号SNが#301の第1のセクタ領域に対応する部分冗長領域とセクタ番号SNが#310の第2のセクタ領域に対応する部分冗長領域を参照する。参照した結果、第1のセクタ領域にデータが有り第2のセクタ領域にデータが無いと判断し、スタートポインタXの値をNaの値301に変更すると共にエンドポインタYの値をNbの値310に変更する。
<Number of searches 5>
Based on the start pointer X value 298 and the end pointer Y value 313, the Na value 301 (= 298 + (313-298) / 4) and the Nb value 310 (= 313- (313-298) / 4) are calculated. To do. A partial redundancy area corresponding to the first sector area with sector number SN # 301 and a partial redundancy area corresponding to the second sector area with sector number SN # 310 are referred to. As a result of the reference, it is determined that there is data in the first sector area and no data in the second sector area, and the value of the start pointer X is changed to the value 301 of Na and the value of the end pointer Y is changed to the value 310 of Nb. Change to

<検索回数6>
スタートポインタXの値301とエンドポインタYの値310に基づいてNaの値303(=301+(310−301)/4)とNbの値308(=310−(310−301)/4)を算出する。セクタ番号SNが#303の第1のセクタ領域に対応する部分冗長領域とセクタ番号SNが#308の第2のセクタ領域に対応する部分冗長領域を参照する。参照した結果、第1のセクタ領域にデータが有り第2のセクタ領域にデータが無いと判断し、スタートポインタXの値をNaの値303に変更すると共にエンドポインタYの値をNbの値308に変更する。
<Number of searches 6>
Based on the value 301 of the start pointer X and the value 310 of the end pointer Y, the Na value 303 (= 301 + (310−301) / 4) and the Nb value 308 (= 310− (310−301) / 4) are calculated. To do. Reference is made to the partial redundancy area corresponding to the first sector area of sector number SN # 303 and the partial redundancy area corresponding to the second sector area of sector number SN # 308. As a result of the reference, it is determined that there is data in the first sector area and no data in the second sector area, the value of the start pointer X is changed to the value 303 of Na, and the value of the end pointer Y is changed to the value 308 of Nb. Change to

<検索回数7>
スタートポインタXの値303とエンドポインタYの値308に基づいてNaの値304(=303+(308−303)/4)とNbの値307(=308−(308−303)/4)を算出する。セクタ番号SNが#304の第1のセクタ領域に対応する部分冗長領域とセクタ番号SNが#307の第2のセクタ領域に対応する部分冗長領域を参照する。参照した結果、第1のセクタ領域にデータが有り第2のセクタ領域にデータが無いと判断し、スタートポインタXの値をNaの値304に変更すると共にエンドポインタYの値をNbの値307に変更する。
<Number of searches 7>
Based on the value 303 of the start pointer X and the value 308 of the end pointer Y, the Na value 304 (= 303 + (308−303) / 4) and the Nb value 307 (= 308− (308−303) / 4) are calculated. To do. Reference is made to the partial redundancy area corresponding to the first sector area with sector number SN # 304 and the partial redundancy area corresponding to the second sector area with sector number SN # 307. As a result of the reference, it is determined that there is data in the first sector area and no data in the second sector area, the value of the start pointer X is changed to the Na value 304, and the value of the end pointer Y is changed to the Nb value 307. Change to

<検索回数8>
スタートポインタXの値304とエンドポインタYの値307の差が4より小さいので、スタートポインタXの値304に1を加算したNaの値305とエンドポインタYの値307から1を減算したNbの値306を求める。セクタ番号SNが#305の第1のセクタ領域に対応する部分冗長領域とセクタ番号SNが#306の第2のセクタ領域に対応する部分冗長領域を参照する。参照した結果、第1のセクタ領域にデータが有り第2のセクタ領域にデータが無いと判断し、スタートポインタXの値をNaの値305に変更すると共にエンドポインタYの値をNbの値306に変更する。
<Number of searches 8>
Since the difference between the value 304 of the start pointer X and the value 307 of the end pointer Y is smaller than 4, the Na value 305 obtained by adding 1 to the value 304 of the start pointer X and the Nb value obtained by subtracting 1 from the value 307 of the end pointer Y A value 306 is obtained. Reference is made to the partial redundancy area corresponding to the first sector area of sector number SN # 305 and the partial redundancy area corresponding to the second sector area of sector number SN # 306. As a result of the reference, it is determined that there is data in the first sector area and no data in the second sector area, the value of the start pointer X is changed to the Na value 305, and the value of the end pointer Y is changed to the Nb value 306. Change to

ここで、スタートポインタXの値305とエンドポインタYの値306の差が1になったので検索を終了し、データが書き込まれているセクタ領域の末尾のセクタ番号SNが#305であると判断し、データが書き込まれていないセクタ領域の先頭のセクタ番号SNが#306であると判断する。   Here, since the difference between the value 305 of the start pointer X and the value 306 of the end pointer Y is 1, the search is terminated, and it is determined that the sector number SN at the end of the sector area in which data is written is # 305. Then, it is determined that the head sector number SN of the sector area in which no data is written is # 306.

次に、仮想ブロック内のセクタ番号SNのSN#309のセクタ領域までデータが書き込まれている場合の検索処理について図8を参照して具体的に説明する。なお、検索回数5までは図7の場合と同じなので検索回数6以降について説明する。   Next, the search processing when data is written up to the sector area of SN # 309 of the sector number SN in the virtual block will be specifically described with reference to FIG. Since the number of searches up to 5 is the same as in the case of FIG. 7, the number of searches after 6 will be described.

<検索回数6>
スタートポインタXの値301とエンドポインタYの値310に基づいてNaの値303(=301+(310−301)/4)とNbの値308(=310−(310−301)/4)を算出する。セクタ番号SNが#303の第1のセクタ領域に対応する部分冗長領域とセクタ番号SNが#308の第2のセクタ領域に対応する部分冗長領域を参照する。参照した結果、第1のセクタ領域と第2のセクタ領域の双方にデータが有ると判断し、スタートポインタXの値をNbの値308に変更する。
<Number of searches 6>
Based on the value 301 of the start pointer X and the value 310 of the end pointer Y, the Na value 303 (= 301 + (310−301) / 4) and the Nb value 308 (= 310− (310−301) / 4) are calculated. To do. Reference is made to the partial redundancy area corresponding to the first sector area of sector number SN # 303 and the partial redundancy area corresponding to the second sector area of sector number SN # 308. As a result of the reference, it is determined that there is data in both the first sector area and the second sector area, and the value of the start pointer X is changed to the value 308 of Nb.

<検索回数7>
スタートポインタXの値308とエンドポインタYの値310の差が4より小さいので、スタートポインタXの値308に1を加算したNaの値309とエンドポインタYの値310から1を減算したNbの値309を求める。ここで、NaとNbの値は同じなので、番号Naの調整は行わずに、セクタ番号SNが#309の第1のセクタ領域及び第2のセクタ領域に対応する部分冗長領域を参照する。参照した結果、第1のセクタ領域と第2のセクタ領域の双方にデータが有ると判断し、スタートポインタXの値をNbの値309に変更する。
<Number of searches 7>
Since the difference between the start pointer X value 308 and the end pointer Y value 310 is smaller than 4, the Na value 309 obtained by adding 1 to the start pointer X value 308 and the Nb value obtained by subtracting 1 from the end pointer Y value 310. A value 309 is obtained. Here, since the values of Na and Nb are the same, the partial redundancy areas corresponding to the first sector area and the second sector area of sector number SN # 309 are referred to without adjusting the number Na. As a result of the reference, it is determined that there is data in both the first sector area and the second sector area, and the value of the start pointer X is changed to the value 309 of Nb.

ここで、スタートポインタXの値309とエンドポインタYの値310の差が1になったので検索を終了し、データが書き込まれているセクタ領域の末尾のセクタ番号SNが#309であると判断し、データが書き込まれていないセクタ領域の先頭のセクタ番号SNが#310であると判断する。   Here, since the difference between the value 309 of the start pointer X and the value 310 of the end pointer Y is 1, the search is terminated, and it is determined that the sector number SN at the end of the sector area in which data is written is # 309. Then, it is determined that the first sector number SN of the sector area in which no data is written is # 310.

以上で説明したように、第1のセクタ領域のデータの有無と第2のセクタ領域のデータの有無を並行して判断して、スタートポインタXとエンドポインタYを更新していった場合、第1のセクタ領域と第2のセクタ領域の双方にデータが有ったときはスタートポインタXとエンドポインタYの差が変数Bの値まで狭まり、第1のセクタ領域と第2のセクタ領域の双方にデータが無かったときはスタートポインタXとエンドポインタYの差が変数Aの値まで狭まり、第1のセクタ領域にデータが有り第2のセクタ領域にデータが無かったときはスタートポインタXとエンドポインタYの差が番号Nbと番号Naの差の値まで狭まる。従って、上述の例のように変数Aと変数Bを(Ne−Ns)/4に相当する(Y−X)/4とした場合、第1のセクタ領域と第2のセクタ領域の双方にデータが有ったとき、又は第1のセクタ領域と第2のセクタ領域の双方にデータが無かったときは、スタートポインタXとエンドポインタYの差が1/4に狭まり、第1のセクタ領域にデータが有り第2のセクタ領域にデータが無かったときはスタートポインタXとエンドポインタYの差が1/2に狭まる。一方、通常の2分木検索ではスタートポインタXとエンドポインタYの差が1/2ずつ狭まっていく。   As described above, when the start pointer X and the end pointer Y are updated by judging in parallel the presence / absence of data in the first sector area and the presence / absence of data in the second sector area, When there is data in both the first sector area and the second sector area, the difference between the start pointer X and the end pointer Y is reduced to the value of the variable B, so that both the first sector area and the second sector area When there is no data, the difference between the start pointer X and the end pointer Y is narrowed to the value of the variable A, and when there is data in the first sector area and there is no data in the second sector area, the start pointer X and end The difference in the pointer Y is narrowed to the difference between the number Nb and the number Na. Accordingly, when the variable A and the variable B are (Y−X) / 4 corresponding to (Ne−Ns) / 4 as in the above example, data is stored in both the first sector area and the second sector area. Or when there is no data in both the first sector area and the second sector area, the difference between the start pointer X and the end pointer Y is reduced to ¼, and the first sector area When there is data and there is no data in the second sector area, the difference between the start pointer X and the end pointer Y is reduced to ½. On the other hand, in the normal binary tree search, the difference between the start pointer X and the end pointer Y is reduced by ½.

従って、上述の例では、何番目のセクタ領域までデータが書き込まれているかによって検索回数が変動するが、通常の2分木検索による検索回数以下の回数でデータが書き込まれていないセクタ領域の先頭を検出することができる。   Therefore, in the above example, the number of searches varies depending on the number of sector areas in which data has been written, but the top of the sector area in which data is not written less than the number of searches by the normal binary tree search. Can be detected.

なお、上述の例では、変数Aと変数Bを(Ne−Ns)/4に相当する(Y−X)/4としたが、変数Aと変数Bを(Ne−Ns)/3に相当する(Y−X)/3とすれば、スタートポインタXとエンドポインタYの差が1/3ずつ狭まっていく。また、変数Aと変数Bは異なる値であっってもよい。例えば、変数Aを(Ne−Ns)/4に相当する(Y−X)/4とし、変数Bを(Ne−Ns)/2に相当する(Y−X)/2としてもよい。   In the above example, the variable A and the variable B are set to (Y−X) / 4 corresponding to (Ne−Ns) / 4, but the variable A and the variable B are equivalent to (Ne−Ns) / 3. If (Y−X) / 3, the difference between the start pointer X and the end pointer Y is reduced by 1/3. Moreover, the variable A and the variable B may be different values. For example, the variable A may be (YX) / 4 corresponding to (Ne-Ns) / 4, and the variable B may be (YX) / 2 corresponding to (Ne-Ns) / 2.

本発明のフラッシュメモリシステムの一実施例の概略を説明するためのブロック図である。1 is a block diagram for explaining an outline of an embodiment of a flash memory system of the present invention. FIG. 図1のフラッシュメモリのアドレス空間の構造を概略的に示す図である。FIG. 2 is a diagram schematically showing a structure of an address space of the flash memory of FIG. 1. アドレス変換の概要を説明するための図である。It is a figure for demonstrating the outline | summary of address translation. 図1のホストインターフェースブロック及びフラッシュメモリインターフェースブロックの詳細を示すブロック図である。FIG. 2 is a block diagram showing details of a host interface block and a flash memory interface block of FIG. 1. 仮想ブロック内でのデータが書き込まれていないセクタ領域の先頭を検索する検索処理を説明するためのフローチャートである。It is a flowchart for demonstrating the search process which searches the head of the sector area in which the data in the virtual block are not written. セクタ番号SNのSN#300までデータが書き込まれている場合の検索処理を説明するための図である。It is a figure for demonstrating the search process in case data are written to SN # 300 of sector number SN. セクタ番号SNのSN#305までデータが書き込まれている場合の検索処理を説明するための図である。It is a figure for demonstrating the search process in case data are written to SN # 305 of sector number SN. セクタ番号SNのSN#309までデータが書き込まれている場合の検索処理を説明するための図である。It is a figure for demonstrating the search process when data is written to SN # 309 of sector number SN. 従来の二分木検索を用いた検索処理を説明するための図である。It is a figure for demonstrating the search process using the conventional binary tree search.

符号の説明Explanation of symbols

1 フラッシュメモリシステム
2 フラッシュメモリ
3 メモリコントローラ
4 ホストシステム
6 マイクロプロセッサ(インターフェース手段、書き込み手段、検索範囲保持手段 、セクタ領域検索手段、第1のセクタ領域判別手段、第2のセクタ領域判別手 段)
7 ホストインターフェースブロック
8 ワークエリア
9 バッファ
10 フラッシュメモリインターフェースブロック
11 ECCブロック
12 ROM
13 外部バス
14 内部バス
25 ユーザ領域
26 冗長領域
R1 コマンドレジスタ
R2 セクタ数レジスタ
R3 LBAレジスタ
R11 物理ブロックアドレスレジスタ
R12 セクタ番号レジスタ
R13 カウンタ
DESCRIPTION OF SYMBOLS 1 Flash memory system 2 Flash memory 3 Memory controller 4 Host system 6 Microprocessor (interface means, writing means, search range holding means, sector area search means, first sector area determination means, second sector area determination means)
7 Host interface block 8 Work area 9 Buffer 10 Flash memory interface block 11 ECC block 12 ROM
13 External bus 14 Internal bus 25 User area 26 Redundant area R1 Command register R2 Sector number register R3 LBA register R11 Physical block address register R12 Sector number register R13 Counter

Claims (9)

ブロック単位で記憶データの消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記フラッシュメモリにアクセスするための第1のインターフェースと第2のインターフェースとを有するインターフェース手段と、
前記第1のインターフェースに接続されたフラッシュメモリ内の物理ブロックと前記第2のインターフェースに接続されたフラッシュメモリ内の物理ブロックとを仮想的に結合した仮想ブロックを形成し、該仮想ブロックの前記第1のインターフェース側の物理ブロック内のセクタ領域と前記第2のインターフェース側の物理ブロック内のセクタ領域とにデータを書き込む書き込み手段と、
前記仮想ブロック内の検索範囲を特定する情報として、検索範囲の先頭セクタ領域の番号を示す先頭位置情報と検索範囲の末尾セクタ領域の番号を示す末尾位置情報とを保持する検索範囲保持手段と、
前記先頭位置情報が示す番号Nsに所定の変数Aを加算した番号Naに対応する第1のセクタ領域と前記末尾位置情報が示す番号Neから所定の変数Bを減算した番号Nbに対応する第2のセクタ領域にデータが書き込まれているか否かを判断し、第1のセクタ領域と第2のセクタ領域の双方にデータが書き込まれていないと判断した場合は、前記末尾位置情報が示す番号Neを番号Naに変更し、第1のセクタ領域だけにデータが書き込まれていると判断した場合は、前記先頭位置情報が示す番号Nsを番号Naに変更するとともに前記末尾位置情報が示す番号Neを番号Nbに変更し、第1のセクタ領域と第2のセクタ領域の双方にデータが書き込まれていると判断した場合は、前記先頭位置情報が示す番号Nsを番号Nbに変更するセクタ領域検索手段とを備え、
前記番号Ns、番号Ne、番号Na及び番号Nbが、番号Neと番号Nsの差が3以上の範囲で、
Ns<Na<Nb<Ne
Na−Ns≦(Ne−Ns)/2
Nb−Na≦(Ne−Ns)/2
Ne−Nb≦(Ne−Ns)/2
を満たし
かつ、前記第1のセクタ領域と前記第2のセクタ領域の一方が前記第1のインターフェース側の物理ブロック内のセクタ領域に、他方が前記第2のインターフェース側の物理ブロック内のセクタ領域になるように前記変数A及び変数Bの値が設定される
ことを特徴とするメモリコントローラ。
A memory controller that controls access to a flash memory in which stored data is erased in block units,
Interface means having a first interface and a second interface for accessing the flash memory;
Forming a virtual block obtained by virtually combining the physical block in the flash memory connected to the first interface and the physical block in the flash memory connected to the second interface, and Writing means for writing data to a sector area in a physical block on one interface side and a sector area in a physical block on the second interface side;
Search range holding means for holding, as information for specifying the search range in the virtual block, start position information indicating the number of the first sector area of the search range and end position information indicating the number of the last sector area of the search range;
A first sector area corresponding to a number Na obtained by adding a predetermined variable A to a number Ns indicated by the head position information and a second Nb corresponding to a number Nb obtained by subtracting a predetermined variable B from the number Ne indicated by the end position information. Whether or not data is written in the sector area, and if it is determined that data is not written in both the first sector area and the second sector area, the number Ne indicated by the end position information Is changed to the number Na, and it is determined that the data is written only in the first sector area, the number Ns indicated by the head position information is changed to the number Na and the number Ne indicated by the end position information is changed. When the number Nb is changed and it is determined that data is written in both the first sector area and the second sector area, the number Ns indicated by the head position information is changed to the number Nb. And a data area search means,
The number Ns, the number Ne, the number Na, and the number Nb are within a range where the difference between the number Ne and the number Ns is 3 or more,
Ns <Na <Nb <Ne
Na-Ns≤ (Ne-Ns) / 2
Nb-Na ≦ (Ne-Ns) / 2
Ne-Nb ≦ (Ne-Ns) / 2
And one of the first sector area and the second sector area is a sector area in the physical block on the first interface side, and the other is a sector area in the physical block on the second interface side The values of the variable A and the variable B are set so that
前記先頭位置情報が示す番号Nsと前記末尾位置情報が示す番号Neとの差が1となったときに、前記先頭位置情報が示す番号Nsから前記仮想ブロック内のデータが書き込まれているセクタ領域の末尾を判別する第1のセクタ領域判別手段を有することを特徴とする請求項1に記載のメモリコントローラ。   When the difference between the number Ns indicated by the head position information and the number Ne indicated by the tail position information is 1, a sector area in which data in the virtual block is written from the number Ns indicated by the head position information 2. The memory controller according to claim 1, further comprising a first sector region discriminating unit that discriminates the end of the first sector area. 前記先頭位置情報が示す番号Nsと前記末尾位置情報が示す番号Neとの差が1となったときに、前記末尾位置情報が示す番号Neから前記仮想ブロック内のデータが書き込まれていないセクタ領域の先頭を判別する第2のセクタ領域判別手段を有することを特徴とする請求項1に記載のメモリコントローラ。   When the difference between the number Ns indicated by the start position information and the number Ne indicated by the end position information is 1, a sector area in which data in the virtual block is not written from the number Ne indicated by the end position information 2. The memory controller according to claim 1, further comprising second sector area discrimination means for discriminating a head of the first sector area. 前記変数A及び変数Bの値が、(Ne−Ns)/3又は(Ne−Ns)/4であることを特徴とする請求項1乃至3のいずれか1項に記載のメモリコントローラ。   4. The memory controller according to claim 1, wherein the values of the variable A and the variable B are (Ne−Ns) / 3 or (Ne−Ns) / 4. 5. 請求項1乃至4のいずれか1項に記載のメモリコントローラと、このメモリコントローラによりアクセスが制御されるフラッシュメモリとを備えることを特徴とするフラッシュメモリシステム。   A flash memory system comprising: the memory controller according to claim 1; and a flash memory whose access is controlled by the memory controller. ブロック単位で記憶データの消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
前記フラッシュメモリにアクセスするための第1のインターフェースに接続されたフラッシュメモリ内の物理ブロックと前記フラッシュメモリにアクセスするための第2のインターフェースに接続されたフラッシュメモリ内の物理ブロックとを仮想的に結合した仮想ブロックを形成し、該仮想ブロックの前記第1のインターフェース側の物理ブロック内のセクタ領域と前記第2のインターフェース側の物理ブロック内のセクタ領域とにデータを書き込むステップと、
前記仮想ブロック内の検索範囲を特定する情報として、検索範囲の先頭セクタ領域の番号を示す先頭位置情報と検索範囲の末尾セクタ領域の番号を示す末尾位置情報とを保持するステップと、
前記先頭位置情報が示す番号Nsに所定の変数Aを加算した番号Naに対応する第1のセクタ領域と前記末尾位置情報が示す番号Neから所定の変数Bを減算した番号Nbに対応する第2のセクタ領域にデータが書き込まれているか否かを判断し、第1のセクタ領域と第2のセクタ領域の双方にデータが書き込まれていないと判断した場合は、前記末尾位置情報が示す番号Neを番号Naに変更し、第1のセクタ領域だけにデータが書き込まれていると判断した場合は、前記先頭位置情報が示す番号Nsを番号Naに変更するとともに前記末尾位置情報が示す番号Neを番号Nbに変更し、第1のセクタ領域と第2のセクタ領域の双方にデータが書き込まれていると判断した場合は、前記先頭位置情報が示す番号Nsを番号Nbに変更するステップとを有し、
前記番号Ns、番号Ne、番号Na及び番号Nbが、番号Neと番号Nsの差が3以上の範囲で、
Ns<Na<Nb<Ne
Na−Ns≦(Ne−Ns)/2
Nb−Na≦(Ne−Ns)/2
Ne−Nb≦(Ne−Ns)/2
を満たし
かつ、前記第1のセクタ領域と前記第2のセクタ領域の一方が前記第1のインターフェース側の物理ブロック内のセクタ領域に、他方が前記第2のインターフェース側の物理ブロック内のセクタ領域になるように前記変数A及び変数Bの値が設定される
ことを特徴とするフラッシュメモリの制御方法。
A flash memory control method for controlling access to a flash memory in which stored data is erased in block units,
A physical block in the flash memory connected to the first interface for accessing the flash memory and a physical block in the flash memory connected to the second interface for accessing the flash memory are virtually Forming a combined virtual block and writing data to a sector area in the physical block on the first interface side of the virtual block and a sector area in the physical block on the second interface side;
As information for specifying the search range in the virtual block, holding the first position information indicating the number of the first sector area of the search range and the end position information indicating the number of the last sector area of the search range;
A first sector area corresponding to a number Na obtained by adding a predetermined variable A to a number Ns indicated by the head position information and a second Nb corresponding to a number Nb obtained by subtracting a predetermined variable B from the number Ne indicated by the end position information. Whether or not data has been written to the sector area, and if it is determined that no data has been written to both the first sector area and the second sector area, the number Ne indicated by the end position information Is changed to the number Na, and it is determined that the data is written only in the first sector area, the number Ns indicated by the head position information is changed to the number Na and the number Ne indicated by the end position information is changed. When the number Nb is changed and it is determined that data is written in both the first sector area and the second sector area, the number Ns indicated by the head position information is changed to the number Nb. Tsu and a flop,
The number Ns, the number Ne, the number Na, and the number Nb are within a range where the difference between the number Ne and the number Ns is 3 or more,
Ns <Na <Nb <Ne
Na-Ns≤ (Ne-Ns) / 2
Nb-Na ≦ (Ne-Ns) / 2
Ne-Nb ≦ (Ne-Ns) / 2
And one of the first sector area and the second sector area is a sector area in the physical block on the first interface side, and the other is a sector area in the physical block on the second interface side The flash memory control method is characterized in that the values of the variable A and the variable B are set such that
前記先頭位置情報が示す番号Nsと前記末尾位置情報が示す番号Neとの差が1となったときに、前記先頭位置情報が示す番号Nsから前記仮想ブロック内のデータが書き込まれているセクタ領域の末尾を判別するステップを有することを特徴とする請求項6に記載のフラッシュメモリの制御方法。   When the difference between the number Ns indicated by the head position information and the number Ne indicated by the tail position information is 1, a sector area in which data in the virtual block is written from the number Ns indicated by the head position information 7. The method of controlling a flash memory according to claim 6, further comprising a step of determining the end of the flash memory. 前記先頭位置情報が示す番号Nsと前記末尾位置情報が示す番号Neとの差が1となったときに、前記末尾位置情報が示す番号Neから前記仮想ブロック内のデータが書き込まれていないセクタ領域の先頭を判別するステップを有することを特徴とする請求項6に記載のフラッシュメモリの制御方法。   When the difference between the number Ns indicated by the start position information and the number Ne indicated by the end position information is 1, a sector area in which data in the virtual block is not written from the number Ne indicated by the end position information The method of controlling a flash memory according to claim 6, further comprising a step of determining the head of the flash memory. 前記変数A及び変数Bの値が、(Ne−Ns)/3又は(Ne−Ns)/4であることを特徴とする請求項6乃至8のいずれか1項に記載のフラッシュメモリの制御方法。   9. The flash memory control method according to claim 6, wherein the values of the variable A and the variable B are (Ne-Ns) / 3 or (Ne-Ns) / 4. .
JP2006149661A 2006-05-30 2006-05-30 Memory controller, flash memory system, and flash memory control method Active JP4513782B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006149661A JP4513782B2 (en) 2006-05-30 2006-05-30 Memory controller, flash memory system, and flash memory control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006149661A JP4513782B2 (en) 2006-05-30 2006-05-30 Memory controller, flash memory system, and flash memory control method

Publications (2)

Publication Number Publication Date
JP2007323138A true JP2007323138A (en) 2007-12-13
JP4513782B2 JP4513782B2 (en) 2010-07-28

Family

ID=38855924

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006149661A Active JP4513782B2 (en) 2006-05-30 2006-05-30 Memory controller, flash memory system, and flash memory control method

Country Status (1)

Country Link
JP (1) JP4513782B2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008046727A (en) * 2006-08-11 2008-02-28 Tdk Corp Memory controller, flash memory system and method for controlling flash memory
US8316208B2 (en) 2010-05-14 2012-11-20 Tdk Corporation Memory controller, flash memory system with memory controller, and method of controlling flash memory

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11184858A (en) * 1997-12-25 1999-07-09 Kawasaki Steel Corp Two division search method/device
JP2003203007A (en) * 2002-01-07 2003-07-18 Nec Corp Nonvolatile area control method for memory of mobile phone

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11184858A (en) * 1997-12-25 1999-07-09 Kawasaki Steel Corp Two division search method/device
JP2003203007A (en) * 2002-01-07 2003-07-18 Nec Corp Nonvolatile area control method for memory of mobile phone

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008046727A (en) * 2006-08-11 2008-02-28 Tdk Corp Memory controller, flash memory system and method for controlling flash memory
JP4539621B2 (en) * 2006-08-11 2010-09-08 Tdk株式会社 Memory controller, flash memory system, and flash memory control method
US8316208B2 (en) 2010-05-14 2012-11-20 Tdk Corporation Memory controller, flash memory system with memory controller, and method of controlling flash memory

Also Published As

Publication number Publication date
JP4513782B2 (en) 2010-07-28

Similar Documents

Publication Publication Date Title
US7870328B2 (en) Memory controller and flash memory system
JP4501881B2 (en) Memory controller and flash memory system
JP4235646B2 (en) Memory controller and flash memory system
JP4636005B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4661497B2 (en) Memory controller, flash memory system, and flash memory control method
JP4661191B2 (en) Memory controller, flash memory system, and flash memory control method
JP4153535B2 (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
JP4434171B2 (en) Memory controller and flash memory system
JP4241741B2 (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
JP4539621B2 (en) Memory controller, flash memory system, and flash memory control method
JP4497124B2 (en) Memory controller, flash memory system, and flash memory control method
JP4254933B2 (en) Memory controller and flash memory system
JP3934659B1 (en) Memory controller and flash memory system
JP4697146B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4000124B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4661748B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP2005292925A (en) Memory controller, flash memory system, and control method for flash memory
JP4213166B2 (en) Memory controller and flash memory system
JP4569554B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4227989B2 (en) Memory controller and flash memory system
JP4273109B2 (en) Memory controller and flash memory system
JP4366283B2 (en) Memory controller and flash memory system including the memory controller

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100415

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4513782

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

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140521

Year of fee payment: 4