JP4661748B2 - MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD - Google Patents

MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD Download PDF

Info

Publication number
JP4661748B2
JP4661748B2 JP2006256937A JP2006256937A JP4661748B2 JP 4661748 B2 JP4661748 B2 JP 4661748B2 JP 2006256937 A JP2006256937 A JP 2006256937A JP 2006256937 A JP2006256937 A JP 2006256937A JP 4661748 B2 JP4661748 B2 JP 4661748B2
Authority
JP
Japan
Prior art keywords
address
flash memory
logical
block
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2006256937A
Other languages
Japanese (ja)
Other versions
JP2008077468A (en
Inventor
琢真 光永
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 JP2006256937A priority Critical patent/JP4661748B2/en
Publication of JP2008077468A publication Critical patent/JP2008077468A/en
Application granted granted Critical
Publication of JP4661748B2 publication Critical patent/JP4661748B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。   The present invention relates to a memory controller, a flash memory system including the memory controller, and a flash memory control method.

近年、メモリカードやシリコンディスク等といったメモリシステムにて使用される半導体メモリに、フラッシュメモリが広く採用されている。フラッシュメモリは、不揮発性メモリの一種である。   In recent years, flash memories have been widely adopted as semiconductor memories used in memory systems such as memory cards and silicon disks. A flash memory is a kind of nonvolatile memory.

上記のメモリシステムで特に多く用いられるフラッシュメモリに、NAND型フラッシュメモリがある。NAND型フラッシュメモリでは、各メモリセルを他のメモリセルとは独立して、論理値"1"に対応する消去状態から、論理値"0"に対応する書込状態へと変化させることができる。これとは対照的に、書込状態から消去状態へと変化させるときには、各メモリセルを他のメモリセルと独立して変化させることができない。このときには、ブロックと称される予め定められた数のメモリセルが、全て同時に消去状態になる。この一括消去動作は、一般的に、"ブロック消去"と称されている。NAND型フラッシュメモリに対する書き込み処理または読み出し処理は、ページと称される予め定められた数のメモリセル単位で処理が実行されている。消去処理の単位であるブロックは、複数のページで構成されている。   Among flash memories that are particularly frequently used in the above memory system, there is a NAND flash memory. In the NAND flash memory, each memory cell can be changed from an erased state corresponding to a logical value “1” to a written state corresponding to a logical value “0” independently of other memory cells. . In contrast, when changing from the written state to the erased state, each memory cell cannot be changed independently of the other memory cells. At this time, all of a predetermined number of memory cells called blocks are simultaneously erased. This batch erase operation is generally called “block erase”. The writing process or the reading process for the NAND flash memory is executed in units of a predetermined number of memory cells called pages. A block which is a unit of erasing processing is composed of a plurality of pages.

上記のような構成を有するNAND型フラッシュメモリでは、データの重ね書きを行うことができないため、データの書き換えを行う場合には、ブロック消去されている消去済ブロックに新たなデータ(書き換え後のデータ)を書き込み、古いデータ(書き換え前のデータ)が書き込まれていたブロックを消去するという処理を行わなければならない。   In the NAND flash memory having the above-described configuration, data cannot be overwritten. Therefore, when data is rewritten, new data (data after rewriting) is erased in a block erased block. ) And erase the block in which the old data (data before rewriting) has been written.

このようなデータの書き換えを行った場合、書き換え後のデータは、書き換え前のデータと異なるブロックに書き込まれる。従って、ホストシステム側から与えられる論理ブロックアドレスと、フラッシュメモリ内の物理ブロックアドレスとの対応関係は、データを書き換えるごとに動的に変化する。このため、フラッシュメモリにアクセスする場合には、論理ブロックアドレスと物理ブロックアドレスの対応関係を示したアドレス変換テーブルが必要となる。   When such data rewriting is performed, the rewritten data is written in a different block from the data before rewriting. Accordingly, the correspondence between the logical block address given from the host system side and the physical block address in the flash memory dynamically changes every time data is rewritten. Therefore, when accessing the flash memory, an address conversion table showing the correspondence between the logical block address and the physical block address is required.

つまり、フラッシュメモリにアクセスするときは、論理ブロックアドレスを物理ブロックアドレスに変換するアドレス処理や消去済みブロックを検索する空きブロック検索を行わなければならない。   That is, when accessing the flash memory, it is necessary to perform address processing for converting a logical block address to a physical block address and free block search for searching for an erased block.

このアドレス変換処理にかかる時間によってアクセス速度が低下するのを回避するため、特許文献1では、フラッシュメモリのアクセス対象が複数の論理ブロックに跨っている場合、論理ブロックごとのグループに分割して、それぞれのグループでフラッシュメモリに対するアクセスとアクセス先の物理アドレスを求めるアドレス変換処理を並列して実行していた。これにより、特許文献1はフラッシュメモリにアクセスするときの処理効率を向上させていた。   In order to avoid a decrease in the access speed due to the time required for this address conversion process, in Patent Document 1, when the access target of the flash memory extends over a plurality of logical blocks, it is divided into groups for each logical block, In each group, access to the flash memory and address conversion processing for obtaining the physical address of the access destination are executed in parallel. Thus, Patent Document 1 improves the processing efficiency when accessing the flash memory.

特開2006−155335号公報JP 2006-155335 A

上記のようにフラッシュメモリに対するアクセスとアクセス先の物理アドレスを求めるアドレス変換処理を並行して実行する場合、メモリコントローラ内のフラッシュメモリシーケンスブロックがフラッシュメモリに対するアクセスを実行し、メモリコントローラ内のマイクロプロセッサが、アドレス変換処理を実行していた。しかしながら、特許文献1では、フラッシュメモリシーケンスブロックのアクセス状況を、マイクロプロセッサが把握することが困難であった。又、フラッシュメモリシーケンスブロックが動作を開始した後、マイクロプロセッサが、その動作を中止させることが困難であった。   When the access to the flash memory and the address conversion process for obtaining the physical address of the access destination are executed in parallel as described above, the flash memory sequence block in the memory controller executes the access to the flash memory, and the microprocessor in the memory controller However, the address conversion process was executed. However, in Patent Document 1, it is difficult for the microprocessor to grasp the access status of the flash memory sequence block. In addition, after the flash memory sequence block starts operating, it is difficult for the microprocessor to stop the operation.

したがって、フラッシュメモリシステムに与えられる電圧が急激に低下した時に、書き込みを中止することができなく、書き込みが途中で終了しフラッシュメモリ内のデータが異常になってしまうという課題があった。   Therefore, when the voltage applied to the flash memory system suddenly drops, it is impossible to stop writing, and there is a problem that the writing ends and the data in the flash memory becomes abnormal.

そこで、本発明は、フラッシュメモリに対するアクセスとアドレス変換処理を並列に実行させることにより、フラッシュメモリにアクセスするときの処理効率を向上させ、さらにフラッシュメモリシステムに与えられる電圧が低下した場合でも、フラッシュメモリのデータが異常になるのを防ぐことができるメモリコントローラ、フラッシュメモリシステム並びにフラッシュメモリの制御方法を提供することを目的とする。   Therefore, the present invention improves the processing efficiency when accessing the flash memory by executing the access to the flash memory and the address conversion process in parallel, and even if the voltage applied to the flash memory system is reduced, It is an object of the present invention to provide a memory controller, a flash memory system, and a flash memory control method capable of preventing memory data from becoming abnormal.

上記目的を達成するため、本発明のメモリコントローラは、ホストシステムから与えられる指示情報に応じて、ブロック単位で記憶データの消去を実行するフラッシュメモリに対するアクセスを制御するメモリコントローラであって、前記フラッシュメモリに対するアクセスを制御するために実行される制御動作を指示する動作命令コードを複数個含むコードセットを複数組記憶しているコードセット記憶手段と、前記コードセット記憶手段に記憶されている前記動作命令コードのアドレスを保持するアドレス保持手段と、前記指示情報が与えられたときに、該指示情報に含まれる外部コマンドに対応する前記コードセットを選択し、該コードセットに含まれる前記動作命令コードのアドレスを前記アドレス保持手段に設定するコードセット選択手段と、前記アドレス保持手段に設定されているアドレスに従って前記コードセット記憶手段から前記動作命令コードを読み出し、該動作命令コードに基づいた制御動作を実行する制御動作実行手段と、前記制御動作実行手段が前記動作命令コードに基づいた制御動作を実行する毎に、前記アドレス保持手段に設定されているアドレスを、次に実行すべき制御動作に対応する前記動作命令コードのアドレスに変更するアドレス更新手段と、を備えることを特徴とする。   In order to achieve the above object, a memory controller of the present invention is a memory controller that controls access to a flash memory that executes erasure of stored data in units of blocks in accordance with instruction information given from a host system. Code set storage means storing a plurality of sets of code sets including a plurality of operation instruction codes for instructing control operations to be executed to control access to the memory, and the operations stored in the code set storage means Address holding means for holding an address of an instruction code, and when the instruction information is given, the code set corresponding to an external command included in the instruction information is selected, and the operation instruction code included in the code set Code set for setting the address of the address in the address holding means Selection means, control operation execution means for reading the operation instruction code from the code set storage means in accordance with the address set in the address holding means, and executing a control operation based on the operation instruction code, and execution of the control operation Address update for changing the address set in the address holding means to the address of the operation instruction code corresponding to the next control operation to be executed each time the means executes a control operation based on the operation instruction code And means.

このように、前記制御動作実行手段が前記アドレス保持手段に設定されているアドレスに従って前記コードセット記憶手段から前記動作命令コードを読み出し、読み出した前記動作命令コードに基づいて動作するようにしたので、前記アドレス保持手段に設定されているアドレスを参照することにより、前記制御動作実行手段の動作状況、つまり、前記フラッシュメモリに対するアクセス状況を容易に把握できる。従って、前記制御動作実行手段の制御動作を停止させるような場合は、前記アドレス保持手段に設定されているアドレスに基づいて、制御動作を停止させるタイミングを決めることができる。   Thus, the control operation execution means reads the operation instruction code from the code set storage means according to the address set in the address holding means, and operates based on the read operation instruction code. By referring to the address set in the address holding unit, the operation status of the control operation executing unit, that is, the access status to the flash memory can be easily grasped. Therefore, when stopping the control operation of the control operation executing means, the timing for stopping the control operation can be determined based on the address set in the address holding means.

又、本発明のメモリコントローラは、前記制御動作実行手段が前記コードセットに基づいた一連の制御動作を実行しているときに、前記アドレス保持手段に設定されているアドレスを変更することにより前記一連の制御動作を終了させる強制終了手段を備えることが好ましい。   The memory controller of the present invention may change the address set in the address holding unit when the control operation executing unit executes a series of control operations based on the code set. It is preferable to provide forcible termination means for terminating the control operation.

つまり、前記制御動作実行手段が前記アドレス保持手段に設定されているアドレスに従って前記コードセット記憶手段から前記動作命令コードを読み出し、読み出した前記動作命令コードに基づいて動作するようにしたので、前記アドレス保持手段に設定されているアドレスを変更することにより、前記制御動作実行手段の動作を容易に制御することができる。   That is, the control operation execution means reads the operation instruction code from the code set storage means according to the address set in the address holding means, and operates based on the read operation instruction code. By changing the address set in the holding means, the operation of the control operation executing means can be easily controlled.

又、本発明のメモリコントローラは、前記指示情報に基づいて特定されるアクセス対象領域に対応する前記フラッシュメモリ内のブロックの物理ブロックアドレスを求めるアドレス変換手段を備えることが好ましい。   The memory controller according to the present invention preferably includes address conversion means for obtaining a physical block address of the block in the flash memory corresponding to the access target area specified based on the instruction information.

上記目的を達成するため、本発明のフラッシュメモリシステムは、前記メモリコントローラとフラッシュメモリを備えることを特徴とする。   In order to achieve the above object, a flash memory system of the present invention includes the memory controller and a flash memory.

上記目的を達成するため、本発明のフラッシュメモリの制御方法は、ホストシステムから与えられる指示情報に応じて、ブロック単位で記憶データの消去を実行するフラッシュメモリに対するアクセスを制御するために、予め記憶手段に記憶されている複数個の動作命令コード含むコードセットに基づいて一連の制御動作を実行するフラッシュメモリの制御方法であって、前記指示情報が与えられたときに、該指示情報に含まれる外部コマンドに対応する前記コードセットを選択し、該コードセットに含まれる前記動作命令コードのアドレスをアドレス保持手段に設定するコードセット選択ステップと、前記アドレス保持手段に設定されているアドレスに従って前記記憶手段から前記動作命令コードを読み出し、該動作命令コードに基づいた制御動作を実行する制御動作実行ステップと、前記制御動作実行ステップで前記動作命令コードに基づいた制御動作が実行される毎に、前記アドレス保持手段に設定されているアドレスを次に実行すべき制御動作に対応する前記動作命令コードのアドレスに変更するアドレス更新ステップと、を含むことを特徴とする。   In order to achieve the above object, a flash memory control method according to the present invention stores data in advance in order to control access to a flash memory that erases stored data in units of blocks in accordance with instruction information given from a host system. A flash memory control method for executing a series of control operations based on a code set including a plurality of operation instruction codes stored in a means, and included in the instruction information when the instruction information is given A code set selection step of selecting the code set corresponding to an external command and setting an address of the operation instruction code included in the code set in an address holding unit; and storing the memory according to an address set in the address holding unit Reading the operation instruction code from the means, based on the operation instruction code A control operation execution step for executing the control operation, and a control to be executed next to the address set in the address holding means each time the control operation based on the operation instruction code is executed in the control operation execution step And an address update step of changing to the address of the operation instruction code corresponding to the operation.

このように、制御動作実行ステップで、前記アドレス保持手段に設定されているアドレスに従って前記記憶手段から前記動作命令コードを読み出し、読み出した前記動作命令コードに基づいて制御動作を実行するようにしたので、前記アドレス保持手段に設定されているアドレスを参照することにより、前記フラッシュメモリに対するアクセス状況を容易に把握できる。従って、前記フラッシュメモリに対するアクセスを停止させるような場合は、前記アドレス保持手段に設定されているアドレスに基づいて、制御動作を停止させるタイミングを決めることができる。   Thus, in the control operation execution step, the operation instruction code is read from the storage unit according to the address set in the address holding unit, and the control operation is executed based on the read operation instruction code. By referring to the address set in the address holding means, the access status to the flash memory can be easily grasped. Therefore, when the access to the flash memory is stopped, the timing for stopping the control operation can be determined based on the address set in the address holding means.

又、本発明のフラッシュメモリの制御方法は、前記アドレス保持手段に設定されているアドレスを変更することにより、前記コードセット選択ステップで選択された前記コードセットに基づいた一連の制御動作を強制的に終了させる強制終了ステップを含むことが好ましい。   The flash memory control method of the present invention forcibly executes a series of control operations based on the code set selected in the code set selection step by changing the address set in the address holding means. Preferably, a forcible termination step is included.

つまり、制御動作実行ステップで、前記アドレス保持手段に設定されているアドレスに従って前記記憶手段から前記動作命令コードを読み出し、読み出した前記動作命令コードに基づいて制御動作を実行するようにしたので、前記アドレス保持手段に設定されているアドレスを変更することにより、前記フラッシュメモリに対するアクセス動作を容易に制御することができる。   That is, in the control operation execution step, the operation command code is read from the storage unit according to the address set in the address holding unit, and the control operation is executed based on the read operation command code. By changing the address set in the address holding means, the access operation to the flash memory can be easily controlled.

本発明によれば、フラッシュメモリに対する読み出しまたは書き込みの処理と、アクセス先の物理アドレスを求めるアドレスの変換処理や空きブロック検索を並列して実行することが可能になる。これにより、フラッシュメモリにアクセスするときの処理効率を向上させることができる。   According to the present invention, it is possible to execute in parallel a read or write process for a flash memory, an address conversion process for obtaining an access destination physical address, and an empty block search. Thereby, the processing efficiency when accessing the flash memory can be improved.

また、メモリコントローラ内のマイクロプロセッサは、メモリコントローラ内のフラッシュメモリシーケンスブロックの動作状況を容易に把握できると共に、フラッシュメモリシーケンスブロックの動作を中止させたりすることを容易に行うことができる。従って、フラッシュメモリシステムに与えられる電圧が低下した場合、書き込みを中止させることにより、フラッシュメモリのデータが異常になるのを防ぐことができる。   The microprocessor in the memory controller can easily grasp the operation status of the flash memory sequence block in the memory controller and can easily stop the operation of the flash memory sequence block. Therefore, when the voltage applied to the flash memory system decreases, the data in the flash memory can be prevented from becoming abnormal by stopping the writing.

以下、図面に基づき、本発明の実施形態について詳細に説明する。   Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.

図1は、フラッシュメモリシステム1を概略的に示すブロック図である。図1に示したようにフラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するメモリコントローラ3とで構成されている。   FIG. 1 is a block diagram schematically showing the flash memory system 1. 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.

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

[フラッシュメモリ2の説明]
フラッシュメモリ2は、不揮発性メモリであり、レジスタとメモリセルアレイとから構成される。フラッシュメモリ2は、レジスタとメモリセルアレイとの間でデータの複写を行って、データの書き込みまたは読み出しを行う。
[Description of flash memory 2]
The flash memory 2 is a non-volatile memory and includes a register and a memory cell array. The flash memory 2 performs data copying between the register and the memory cell array to write or read data.

メモリセルアレイは、複数のメモリセル群とワード線とを備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写または選択されたメモリセルからレジスタへのデータの複写が行われる。   The memory cell array includes a plurality of memory cell groups and word lines. Each memory cell group includes a plurality of memory cells connected in series. The word line is for selecting a specific memory cell in the memory cell group. Data is copied between the selected memory cell and the register via the word line, that is, data is copied from the register to the selected memory cell, or data is copied from the selected memory cell to the register. .

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

このフローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。なお、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。   Since the floating gate is surrounded by an insulator, the injected electrons are held for a long period of time. Note that, when electrons are injected into the floating gate, a high voltage at which the control gate is on the high potential side is applied between the control gate and the floating gate. Further, when electrons are discharged from the floating gate, a high voltage at which the control gate becomes a low potential side is applied between the control gate and the floating gate.

ここで、フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「0」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「1」に対応する。   Here, a state where electrons are injected into the floating gate is a write state, which corresponds to a logical value “0”. The state in which electrons are discharged from the floating gate is an erased state, which corresponds to a logical value “1”.

図2は、ブロックとページの関係を示す説明図である。上記ブロックとページの構成は、フラッシュメモリの仕様によって異なるが、図2(a)に示したような小ブロックのフラッシュメモリと、図2(b)に示したような大ブロックのフラッシュメモリが一般的に使用されている。小ブロック構成では、図2(a)に示したように、1ブロックが32ページ(P0〜P31)で構成され、各ページが512バイトのユーザ領域と16バイトの冗長領域で構成されている。また、本実施形態の大ブロック構成では、図2(b)に示したように、1ブロックが64ページ(P0〜P63)で構成され、各ページが2048バイトのユーザ領域と64バイトの冗長領域で構成されている。   FIG. 2 is an explanatory diagram showing the relationship between blocks and pages. Although the configuration of the block and page differs depending on the specifications of the flash memory, a small block flash memory as shown in FIG. 2A and a large block flash memory as shown in FIG. Has been used. In the small block configuration, as shown in FIG. 2A, one block includes 32 pages (P0 to P31), and each page includes a 512-byte user area and a 16-byte redundant area. In the large block configuration of the present embodiment, as shown in FIG. 2B, one block is composed of 64 pages (P0 to P63), and each page is composed of a 2048-byte user area and a 64-byte redundant area. It consists of

大ブロック構成の場合、各ページのユーザ領域には4セクタ分のデータが記憶されるため、1セクタ分の領域をサブページとすれば、各ページは4個のサブページで構成され、各ブロックは256個のサブページで構成されている。また、フラッシュメモリ2内の記憶領域を特定する物理アドレスは、フラッシュメモリ2のブロック(以後、物理ブロックと言う。)を特定する物理ブロックアドレスと、各物理ブロック内のサブページを特定するサブページ番号(0〜255)に基づいて生成される。なお、フラッシュメモリ2に対しては、ページを特定するロウアドレスとページ内の領域を特定するカラムアドレスが、記憶領域を特定するアドレス情報として与えられる。各サブページには、冗長領域を4つに分割した領域が割り当てられる。   In the case of a large block configuration, data for 4 sectors is stored in the user area of each page, so if the area for 1 sector is a subpage, each page is composed of 4 subpages. Consists of 256 subpages. The physical address for specifying the storage area in the flash memory 2 includes a physical block address for specifying a block of the flash memory 2 (hereinafter referred to as a physical block) and a subpage for specifying a subpage in each physical block. Generated based on the number (0-255). For the flash memory 2, a row address for specifying a page and a column address for specifying an area in the page are given as address information for specifying a storage area. Each subpage is assigned an area obtained by dividing the redundant area into four.

一方、小ブロック構成の場合、各ページのユーザ領域には1セクタ分のデータが記憶されるため、サブページはページと同じになる。大ブロック構成と同様にフラッシュメモリ2内の記憶領域を特定する物理アドレスは、フラッシュメモリ2の物理ブロックを特定する物理ブロックアドレスと、各物理ブロック内のページを特定するページ番号(0〜31)に基づいて生成される。同様に、フラッシュメモリ2に対しては、ページを特定するロウアドレスとページ内の領域を特定するカラムアドレスが、記憶領域を特定するアドレス情報として与えられる。   On the other hand, in the case of the small block configuration, since data for one sector is stored in the user area of each page, the subpage is the same as the page. Similar to the large block configuration, the physical address for specifying the storage area in the flash memory 2 includes the physical block address for specifying the physical block of the flash memory 2 and the page number (0 to 31) for specifying the page in each physical block. Is generated based on Similarly, to the flash memory 2, a row address specifying a page and a column address specifying an area in the page are given as address information specifying a storage area.

ここで、ユーザ領域は、主に、ホストシステム4から供給されるデ―タが記憶される領域であり、冗長領域は、誤り訂正符号、対応論理アドレス情報及びブロックステータス等の付加データが記憶される領域である。誤り訂正符号は、ユーザ領域に記憶されているデータに含まれる誤りを検出、訂正するための付加データであり、後述するECCブロック11によって生成される。   Here, the user area is mainly an area where data supplied from the host system 4 is stored, and the redundant area is stored with additional data such as an error correction code, corresponding logical address information and block status. Area. The error correction code is additional data for detecting and correcting an error included in the data stored in the user area, and is generated by an ECC block 11 described later.

対応論理アドレス情報は、物理ブロックにデータが記憶されている場合に書き込まれ、その物理ブロックに記憶されているデータの論理アドレスに関する情報を示している。なお、物理ブロックにデータが記憶されていない場合は、対応論理アドレス情報が書き込まれないので、対応論理アドレス情報が書き込まれているか否かで、そのブロックが消去済ブロックであるか否かを判断することができる。つまり、対応論理ブロックアドレスが書き込まれていない場合は、消去済ブロックであると判断される。   Corresponding logical address information is written when data is stored in a physical block, and indicates information related to the logical address of the data stored in the physical block. If no data is stored in the physical block, the corresponding logical address information is not written, so it is determined whether or not the block is an erased block depending on whether the corresponding logical address information is written. can do. That is, if the corresponding logical block address is not written, it is determined that the block is an erased block.

ブロックステータスは、その物理ブロックが不良ブロック(正常にデータの書き込み等を行なうことができない物理ブロック)であるか否かを示すフラグであり、その物理ブロックが不良ブロックであると判断された場合には、不良ブロックであることを示すフラグが設定される。   The block status is a flag indicating whether or not the physical block is a bad block (a physical block in which data cannot be normally written). When it is determined that the physical block is a bad block Is set with a flag indicating that it is a bad block.

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

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

ホストインターフェースブロック7は、ホストシステム4との間で、データ、アドレス情報、ステータス情報、外部コマンド(ホストシステム4からフラッシュメモリシステム3に与えられるコマンド)等の授受を行なう。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてフラッシュメモリシステム1の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストシステム4に供給される。   The host interface block 7 exchanges data, address information, status information, external commands (commands given from the host system 4 to the flash memory system 3) and the like with the host system 4. 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.

図1に示すワークエリア8は、フラッシュメモリ2の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成される。   A work area 8 shown in FIG. 1 is a work area in which data necessary for controlling the flash memory 2 is temporarily stored, and includes a plurality of SRAM (Static Random Access Memory) cells.

バッファ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.

フラッシュメモリインターフェースブロック10は、バッファ9からフラッシュメモリ2への書き込み処理やフラッシュメモリ2からバッファ9への読み出し処理等を制御するブロックである。書き込み処理や読み出し処理等を実行するときの一連の制御動作は、ROM12に記憶されている一連の制御動作を指示する情報に基づいて実行される。この一連の制御動作に含まれる各制御動作を指示する情報を、以下、動作命令コードという。又、一連の制御動作に含まれる各制御動作に対応する動作命令コードの集合をコードセットという。   The flash memory interface block 10 is a block that controls a writing process from the buffer 9 to the flash memory 2 and a reading process from the flash memory 2 to the buffer 9. A series of control operations when executing a writing process, a reading process, and the like are executed based on information instructing a series of control operations stored in the ROM 12. Information indicating each control operation included in the series of control operations is hereinafter referred to as an operation instruction code. A set of operation instruction codes corresponding to each control operation included in a series of control operations is referred to as a code set.

なお、上記動作命令コードには、フラッシュメモリ2に対して制御信号、コマンド、アドレスまたは書き込みデータ等を出力することを指示するものや、分岐条件に基づいた分岐先を指示するものや、フラッシュメモリ2のビジー状態が解除されるのを待つことを指示するもの等がある。また、動作命令コードは、通常は記述されている順番に読み出されるが、分岐先を指示する動作命令コードが含まれている場合は、分岐先を指示する動作命令コードに従って次に読み出す動作命令コードを決定する。   The operation instruction code includes an instruction to output a control signal, a command, an address, write data, or the like to the flash memory 2, an instruction to specify a branch destination based on a branch condition, or a flash memory. There is an instruction to wait for the busy state of 2 to be released. In addition, the operation instruction codes are normally read in the order they are described. If an operation instruction code that indicates a branch destination is included, the operation instruction code that is read next in accordance with the operation instruction code that indicates the branch destination. To decide.

図3は、フラッシュメモリインターフェースブロック10のレジスタ構成を示している図である。物理ブロックアドレスレジスタ21は、フラッシュメモリ2内の物理ブロックを指定するレジスタであり、サブページ番号レジスタ22は、物理ブロック内のサブページを指定するレジスタである。カウンタ23は、読み出すまたは書き込むサブページ数を指定するレジスタである。プログラムカウンタ24は、上記動作命令コードのROM12内でのアドレスを指定するレジスタである。   FIG. 3 is a diagram showing a register configuration of the flash memory interface block 10. The physical block address register 21 is a register that designates a physical block in the flash memory 2, and the subpage number register 22 is a register that designates a subpage in the physical block. The counter 23 is a register that specifies the number of subpages to be read or written. The program counter 24 is a register for designating the address in the ROM 12 of the operation instruction code.

ECCブロック11は、フラッシュメモリ2に書き込むデータに付加されるECCを生成するとともに、フラッシュメモリ2から読み出したデータに付加されたECCに基づいて、読み出したデータに含まれる誤りを検出・訂正する。   The ECC block 11 generates an ECC 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 ECC added to the data read from the flash memory 2.

ROM12は、マイクロプロセッサ6による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。また、上記のコードセットはROM12内に記憶されている。   The ROM 12 is a non-volatile storage element that stores a program that defines a processing procedure performed by the microprocessor 6. The code set is stored in the ROM 12.

図4は、コードセットと動作命令コードを説明するための図である。ROM12内のコードセット領域に複数のコードセットが記憶されている。マイクロプロセッサ6が、ホストシステムからの指示情報に含まれる外部コマンドに応じて、ROM12に記憶されている複数のコードセットからフラッシュメモリインターフェースブロック10に与えるコードセットを選択する。   FIG. 4 is a diagram for explaining a code set and an operation instruction code. A plurality of code sets are stored in the code set area in the ROM 12. The microprocessor 6 selects a code set to be given to the flash memory interface block 10 from a plurality of code sets stored in the ROM 12 according to an external command included in the instruction information from the host system.

すべてのコードセットは、分岐命令を含んでおり、最後にコードセット領域の最終動作命令コードに分岐してコードセットに対応する一連の制御動作が終了する。このように、すべてのコードセットは最後に同じ動作命令コードに分岐して、つまり、同じアドレスに分岐して終了する。本実施形態では、最終動作命令コードはマイクロプロセッサ6に割り込みを発生させる動作を行い、フラッシュメモリ2とのアクセスが終了したことをマイクロプロセッサ6に知らせている。   All the code sets include a branch instruction. Finally, a branch is made to the final operation instruction code in the code set area, and a series of control operations corresponding to the code set is completed. Thus, all code sets finally branch to the same operation instruction code, that is, branch to the same address and end. In the present embodiment, the final operation instruction code performs an operation for causing the microprocessor 6 to generate an interrupt, and notifies the microprocessor 6 that the access to the flash memory 2 has been completed.

[アドレス変換処理の説明]
本実施形態に係るフラッシュメモリシステム1では、複数の物理ブロックでゾーンを形成し、各ゾーンに対して、予め設定された論理アドレスの領域を割り当てている。
[Description of address conversion process]
In the flash memory system 1 according to the present embodiment, a zone is formed by a plurality of physical blocks, and a predetermined logical address area is assigned to each zone.

図5は、アドレス変換処理を説明するための説明図である。本図を用いて、アドレス変換処理について具体的に説明する。   FIG. 5 is an explanatory diagram for explaining the address conversion process. The address conversion process will be specifically described with reference to FIG.

ホストシステム側の論理アドレス空間は、図5(a)に示したようにセクタ(512バイト)単位で分割した領域に付けた通番であるLBA(Logical Block Address)で管理されている。更に複数個のセクタをまとめたものを論理ブロックと呼び、複数個の論理ブロックをまとめたものを論理ゾーンと呼んでいる。また、図5(b)に示したように論理ブロックに付けられた通番を論理ブロック番号(LBN)と呼び、論理ゾーンに付けられた通番を論理ゾーン番号(LZN)と呼んでいる。また、各論理ゾーンに含まれた論理ブロックの各論理ゾーン内での通番を論理ゾーン内ブロック番号(LZIBN)と呼んでいる。一方、図5(c)に示したように、物理ブロックには、それぞれ固有の物理ブロックアドレス(PBA)が割り当てられている。さらに、複数個の物理ブロックで物理ゾーンを構成し、各物理ゾーンに付けた通番を物理ゾーン番号(PZN)と呼んでいる。各物理ゾーンに含まれる物理ブロックの各物理ゾーン内での通番を物理ゾーン内ブロック番号(PZIBN)と呼んでいる。   The logical address space on the host system side is managed by an LBA (Logical Block Address) which is a serial number assigned to an area divided in units of sectors (512 bytes) as shown in FIG. Further, a group of a plurality of sectors is called a logical block, and a group of a plurality of logical blocks is called a logical zone. Further, as shown in FIG. 5B, the serial numbers assigned to the logical blocks are called logical block numbers (LBN), and the serial numbers assigned to the logical zones are called logical zone numbers (LZN). In addition, a serial number in each logical zone of a logical block included in each logical zone is called a logical zone block number (LZIBN). On the other hand, as shown in FIG. 5C, each physical block is assigned a unique physical block address (PBA). Further, a physical zone is constituted by a plurality of physical blocks, and a serial number assigned to each physical zone is called a physical zone number (PZN). A serial number in each physical zone of a physical block included in each physical zone is called an intra-physical zone block number (PZIBN).

また、各論理ゾーンにはそれぞれ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.

図5に示した例では、1個の物理ブロックが256個のセクタ領域で構成されたフラッシュメモリを想定しているため、256セクタが1個の論理ブロックに対応している。したがって、LBN#0〜#499の500個の論理ブロックで構成されたLZN#0の論理ゾーンは、LBA#0〜#127999の128000セクタの領域に対応している。 以下同様に、LZN#1の論理ゾーンは、LBA#128000〜#255999の128000セクタの領域に対応し、LZN#2の論理ゾーンは、LBA#256000〜#383999の128000セクタの領域に対応し、LZN#3の論理ゾーンは、LBA#384000〜#511999の128000セクタの領域に対応している。   In the example shown in FIG. 5, a flash memory in which one physical block is composed of 256 sector areas is assumed, and therefore 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. Similarly, the logical zone of LZN # 1 corresponds to the 128000 sector area of LBA # 128000 to # 255999, 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. When a physical block corresponding to a logical block does not exist in the address translation table and when a page in which data is written is rewritten, it is necessary to search for an erased block (or a physical block in which valid data is not stored). . For this reason, a table for searching for an erased block (hereinafter referred to as an empty block search table) is created together with the address conversion table.

このアドレス変換テーブルは、物理ブロックの先頭ページの冗長領域に書き込まれる論理ブロックを示す情報(以下、論理アドレス情報という)に基づいて作成される。冗長領域に書き込まれる論理アドレス情報としては,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 of the first page of the physical block. As the logical address information written in the redundant area, information that can specify a logical block such as LBN is used. If the correspondence between the logical zone and the physical zone is set in advance, the logical block can be specified based on the LZIBN, so that an address conversion table can be created. It is preferable to use less LZIBN.

また、データが書き込まれていない物理ブロックには、論理アドレス情報が格納されていない。従って、論理アドレス情報が格納されていない場合は、消去済みブロックであると判断される。   Further, no logical address information is stored in a physical block in which no data is written. Therefore, when the logical address information is not stored, it is determined that the block is an erased block.

[フラッシュメモリに対するアクセスの説明]
次に、ホストシステム4から指示情報が与えられた場合の処理について説明する。
[Description of access to flash memory]
Next, processing when instruction information is given from the host system 4 will be described.

ホストシステム4がフラッシュメモリ2に対して、読み出しまたは書き込みを実行する場合、読み出し及び書き込み等の外部コマンドと共に、アクセスの対象領域に関する情報が供給される。このアクセスの対象領域は、セクタ単位の論理アドレス(例えば、LBA)とセクタ数で指定される。ここで、ホストシステム4から供給される論理アドレスは、アクセスの対象の先頭アドレスを示し、ホストシステム4から供給されるセクタ数は、先頭アドレスから何セクタ分の領域がアクセスの対象であるかを示している。   When the host system 4 executes reading or writing with respect to the flash memory 2, information related to the access target area is supplied together with external commands such as reading and writing. This access target area is specified by a sector-by-sector logical address (for example, LBA) and the number of sectors. Here, the logical address supplied from the host system 4 indicates the head address to be accessed, and the number of sectors supplied from the host system 4 indicates how many sectors from the head address are to be accessed. Show.

ここで、ホストシステム4から指示されるアクセス領域が、複数の論理ブロックに跨っている場合、論理ブロック毎に論理ブロックから物理ブロックへの変換処理を行わなければならない。そのため、ホストシステム4からの指示情報は、論理ブロックごとのグループに分割され、グループ毎にフラッシュメモリ2に対するアクセスが行われる。   Here, when the access area instructed from the host system 4 extends over a plurality of logical blocks, conversion processing from logical blocks to physical blocks must be performed for each logical block. Therefore, the instruction information from the host system 4 is divided into groups for each logical block, and the flash memory 2 is accessed for each group.

つまり、マイクロプロセッサ6は、グループに分割された各指示情報に対応する一連の制御動作を実行させるための情報を、フラッシュメモリインターフェースブロック10の物理ブロックアドレスレジスタ21、サブページ番号レジスタ22、カウンタ23及びプログラムカウンタ24に設定する。フラッシュメモリインターフェースブロック10は、物理ブロックアドレスレジスタ21、サブページ番号レジスタ22、カウンタ23及びプログラムカウンタ24に設定された情報に基づいて一連の制御動作を実行する。   That is, the microprocessor 6 uses the physical block address register 21, the subpage number register 22, the counter 23 of the flash memory interface block 10 as information for executing a series of control operations corresponding to each instruction information divided into groups. And the program counter 24 is set. The flash memory interface block 10 executes a series of control operations based on information set in the physical block address register 21, the sub page number register 22, the counter 23, and the program counter 24.

ホストシステム4から指示情報が与えられたときに、マイクロプロセッサ6が行う処理について図6を参照して説明する。図6は、マイクロプロセッサ6がフラッシュメモリインターフェースブロック10に行う処理を示すフローチャートである。
(S61)ホストシステム4から与えられる指示情報に含まれるアクセス領域を指示する情報に基づいてアクセス対象領域が含まれる論理ブロックを求め、更に、論理ブロックと対応する物理ブロックの物理ブロックアドレス(PBA)をアドレス変換処理により求める。つまり、S61では、まず、アクセス対象領域が含まれる論理ブロックの論理ブロック番号(LBN)が求められる。続いて、論理ブロック番号(LBN)と物理ブロックアドレス(PBA)の対応関係を示したアドレス変換テーブルを参照して、アクセス対象領域が含まれる論理ブロックと対応する物理ブロックの物理ブロックアドレス(PBA)が求められる。
(S64)フラッシュメモリインターフェースブロック10が動作中のときは、動作が終了するのを待ち、動作が終了しているときはS62に進む。ここで、フラッシュメモリインターフェースブロック10が動作中か否かは、フラッシュメモリインターフェースブロック10からの割り込みがあったかどうかで判断する。
(S62)フラッシュメモリインターフェースブロック10の物理ブロックアドレスレジスタ21、サブページ番号レジスタ22及びカウンタ23にフラッシュメモリ内の領域を指示する情報を設定する。具体的には、S61で求めた物理ブロックアドレス(PBA)を物理ブロックアドレスレジスタ21に設定する。次に、アクセス対象領域の先頭セクタに対応するLBAの下位8ビット(0〜255)をサブページ番号レジスタ22に設定する。最後に、アクセス対象領域に含まれるセクタ数をカウンタ23に設定する。ここで、アクセス領域が複数の論理ブロックに跨っていない場合、ホストシステム4からの指示情報に含まれるセクタ数がカウンタ23に設定される値に一致する。一方、ホストシステム4から指示されるアクセス領域が、複数の論理ブロックに跨っている場合、各論理ブロック内におけるアクセス対象領域に含まれるセクタ数をカウンタ23に設定する。
(S63)フラッシュメモリインターフェースブロック10のプログラムカウンタ24に動作命令コードのアドレスを設定する。ここでは、ホストシステム4からの指示情報に含まれるコマンドに対応したコードセットの先頭動作命令コードのアドレスをプログラムカウンタ24に設定する。例えば、コマンドが読み出し指示するコマンドの場合、読み出しのときにフラッシュメモリインターフェースブロック10が実行する一連の制御動作に対応したコードセットの先頭動作命令コードのアドレスをプログラムカウンタ24に設定する。このプログラムカウンタ24に動作命令コードのアドレスが設定された後、フラッシュメモリインターフェースブロック10は後述する図7に示した一連の制御動作を開始する。
Processing performed by the microprocessor 6 when instruction information is given from the host system 4 will be described with reference to FIG. FIG. 6 is a flowchart showing processing performed by the microprocessor 6 for the flash memory interface block 10.
(S61) A logical block including the access target area is obtained based on the information indicating the access area included in the instruction information given from the host system 4, and further, the physical block address (PBA) of the physical block corresponding to the logical block Is obtained by address conversion processing. That is, in S61, first, the logical block number (LBN) of the logical block including the access target area is obtained. Subsequently, the physical block address (PBA) of the physical block corresponding to the logical block including the access target area is referred to by referring to the address conversion table showing the correspondence between the logical block number (LBN) and the physical block address (PBA). Is required.
(S64) When the flash memory interface block 10 is in operation, the process waits for the operation to end. When the operation has ended, the process proceeds to S62. Here, whether or not the flash memory interface block 10 is operating is determined by whether or not there is an interrupt from the flash memory interface block 10.
(S62) Information indicating an area in the flash memory is set in the physical block address register 21, the sub page number register 22, and the counter 23 of the flash memory interface block 10. Specifically, the physical block address (PBA) obtained in S 61 is set in the physical block address register 21. Next, the lower 8 bits (0 to 255) of the LBA corresponding to the head sector of the access target area are set in the subpage number register 22. Finally, the number of sectors included in the access target area is set in the counter 23. Here, when the access area does not extend over a plurality of logical blocks, the number of sectors included in the instruction information from the host system 4 matches the value set in the counter 23. On the other hand, when the access area specified by the host system 4 extends over a plurality of logical blocks, the number of sectors included in the access target area in each logical block is set in the counter 23.
(S63) The address of the operation instruction code is set in the program counter 24 of the flash memory interface block 10. Here, the address of the head operation instruction code of the code set corresponding to the command included in the instruction information from the host system 4 is set in the program counter 24. For example, when the command is a command that instructs reading, the address of the head operation instruction code of the code set corresponding to a series of control operations executed by the flash memory interface block 10 at the time of reading is set in the program counter 24. After the address of the operation instruction code is set in the program counter 24, the flash memory interface block 10 starts a series of control operations shown in FIG.

プログラムカウンタ24に動作命令コードに設定した後、S61に戻り、ホストシステム4から与えられる指示情報に基づくアクセス対象領域が更にあれば、そのアクセス対象領域が含まれる論理ブロックと対応する物理ブロックの物理ブロックアドレス(PBA)が求める。   After setting the operation instruction code in the program counter 24, the process returns to S61, and if there is an access target area based on the instruction information given from the host system 4, the physical block physical corresponding to the logical block including the access target area is returned. The block address (PBA) is obtained.

このように、マイクロプロセッサ6はフラッシュメモリインターフェースブロック10がフラッシュメモリ2にアクセスをしている間にアドレス変換処理を行う。これにより、アドレス変換処理とフラッシュメモリ2とのアクセスが並列に行われることになる。   As described above, the microprocessor 6 performs address conversion processing while the flash memory interface block 10 is accessing the flash memory 2. As a result, the address conversion process and the flash memory 2 are accessed in parallel.

次に、フラッシュメモリインターフェースブロック10が実行する一連の制御動作について説明する。フラッシュメモリインターフェースブロック10は、プログラムカウンタ24に設定されているアドレスから動作命令コードを読み出し、動作命令コードに対応した制御動作を実行する。制御動作が終了する毎に、プログラムカウンタ24に設定されているアドレスが1ステップ進められる。又、分岐する場合は、分岐先のアドレスがプログラムカウンタ24に設定される。図7は、読み出し処理又は書き込み処理のときに、フラッシュメモリインターフェースブロック10が実行する一連の制御動作を示すフローチャートである。これらの制御動作は、ROM12から読み出した各動作命令コードに基づいて実行される。又、各制御動作は、1つ又は複数の各動作命令コードに基づいて実行される。
(S71)フラッシュメモリ2にコマンドとアドレスを供給しデータを送受信する。例えば、読み出し処理の場合、まず、フラッシュメモリ2に読み出しを指示する内部コマンド(リードコマンド)を供給する。続いて、読み出すデータが記憶されているページを指定するロウアドレスと、ページ内の読み出し開始位置(0バイト〜2111バイト)を指定するカラムアドレスとをフラッシュメモリ2に供給する。先頭サブページからデータを読み出す場合には、カラムアドレスで先頭のサブページに対応するアドレスを指定する。ここで、フラッシュメモリ2はメモリセルアレイからレジスタへのデータの読み出し(複写)を実行するためビジー状態になる。フラッシュメモリ2のビジー状態が解除された後、フラッシュメモリ2のリードイネーブル端子にハイレベルとローレベルの信号を交互に入力し、フラッシュメモリ2内のレジスタから先頭のサブページに対応するデータを読み出す。
Next, a series of control operations executed by the flash memory interface block 10 will be described. The flash memory interface block 10 reads the operation instruction code from the address set in the program counter 24 and executes a control operation corresponding to the operation instruction code. Each time the control operation ends, the address set in the program counter 24 is advanced by one step. When branching, the branch destination address is set in the program counter 24. FIG. 7 is a flowchart showing a series of control operations executed by the flash memory interface block 10 during the read process or the write process. These control operations are executed based on each operation instruction code read from the ROM 12. Each control operation is executed based on one or more operation instruction codes.
(S71) A command and an address are supplied to the flash memory 2 to transmit / receive data. For example, in the case of reading processing, first, an internal command (read command) for instructing reading to the flash memory 2 is supplied. Subsequently, a row address specifying a page in which data to be read is stored and a column address specifying a read start position (0 byte to 2111 bytes) in the page are supplied to the flash memory 2. When reading data from the first subpage, the column address specifies the address corresponding to the first subpage. Here, the flash memory 2 is in a busy state in order to read (copy) data from the memory cell array to the register. After the busy state of the flash memory 2 is released, a high level signal and a low level signal are alternately input to the read enable terminal of the flash memory 2, and data corresponding to the first subpage is read from the register in the flash memory 2. .

次に、ページ内の読み出し開始位置の変更を指示する内部コマンド(ランダムリードコマンド)と先頭のサブページに対応するECCが記憶されている位置を指定するカラムアドレスを供給する。この後、フラッシュメモリ2のリードイネーブル端子にハイレベルとローレベルの信号を交互に入力し、フラッシュメモリ2内のレジスタから先頭のサブページに対応するECCを読み出す。   Next, an internal command (random read command) for instructing the change of the reading start position in the page and a column address for specifying the position where the ECC corresponding to the head subpage is stored are supplied. Thereafter, high level and low level signals are alternately input to the read enable terminal of the flash memory 2, and the ECC corresponding to the first subpage is read from the register in the flash memory 2.

ここで、読み出しを指示する内部コマンド(リードコマンド)は、各ページから最初にデータを読み出すときにだけ供給される。例えば、先頭のサブページ(ECCを含む)からデータを読み出した後、そのページ内の2番目のサブページからデータを読み出す場合は、上記と同様にページ内の読み出し開始位置の変更を指示する内部コマンド(ランダムリードコマンド)と2番目のサブページに対応するカラムアドレスを供給する。   Here, an internal command (read command) instructing reading is supplied only when data is first read from each page. For example, when data is read from the second subpage in the page after data is read from the first subpage (including ECC), the internal instructing the change of the read start position in the page is the same as described above. A command (random read command) and a column address corresponding to the second subpage are supplied.

尚、1個のサブページのユーザ領域が4個のサブページで構成されている場合、物理ブロックアドレスレジスタ21に設定されている物理ブロックアドレス(PBA)にサブページ番号レジスタ22に設定されている8ビットの値の上位側6ビット(10進数で0〜63)を連結してロウアドレスを生成する。又、カラムアドレスについては、サブページ番号レジスタ22に設定されている8ビットの値の下位側2ビット(10進数で0〜3)の値に基づいて生成される。つまり、サブページ番号レジスタ22にされている8ビットの値の下位側2ビットが00(10進数で0)の場合、カラムアドレスは先頭のサブページに対応するアドレスになる。同様に、下位側2ビットが01(10進数で1)の場合、カラムアドレスは2番目のサブページに対応するアドレスになり、下位側2ビットが10(10進数で2)の場合、カラムアドレスは3番目のサブページに対応するアドレスになり、下位側2ビットが11(10進数で3)の場合、カラムアドレスは4番目のサブページに対応するアドレスになる。   When the user area of one subpage is composed of four subpages, the physical page address (PBA) set in the physical block address register 21 is set in the subpage number register 22. The row address is generated by concatenating the upper 6 bits (0 to 63 in decimal) of the 8-bit value. The column address is generated based on the value of the lower 2 bits (0 to 3 in decimal) of the 8-bit value set in the subpage number register 22. That is, when the lower 2 bits of the 8-bit value stored in the subpage number register 22 are 00 (decimal 0), the column address is an address corresponding to the first subpage. Similarly, when the lower 2 bits are 01 (decimal 1), the column address is the address corresponding to the second subpage, and when the lower 2 bits is 10 (decimal 2), the column address Is the address corresponding to the third subpage. When the lower 2 bits are 11 (3 in decimal), the column address is the address corresponding to the fourth subpage.

一方、書き込み処理の場合は、フラッシュメモリ2内のレジスタへのデータ転送を指示する内部コマンド(インプットコマンド)、ロウアドレス及びカラムアドレスをフラッシュメモリ2に供給する。続いて、フラッシュメモリ2のライトイネーブル端子にハイレベルとローレベルの信号を交互に入力し、この信号に合わせて1セクタ分のデータをフラッシュメモリ2に供給する。次に、カラムアドレスの変更を指示する内部コマンド(ランダムインプットコマンド)と、ECC等の付加データを書き込む冗長領域の位置を指定するカラムアドレスをフラッシュメモリ2に供給する。続いて、フラッシュメモリ2のライトイネーブル端子にハイレベルとローレベルの信号を交互に入力し、この信号に合わせてECC等の付加データをフラッシュメモリ2に供給する。   On the other hand, in the case of write processing, an internal command (input command) for instructing data transfer to a register in the flash memory 2, a row address, and a column address are supplied to the flash memory 2. Subsequently, a high level signal and a low level signal are alternately input to the write enable terminal of the flash memory 2, and one sector of data is supplied to the flash memory 2 in accordance with this signal. Next, an internal command (random input command) for instructing the change of the column address and a column address for designating the position of a redundant area in which additional data such as ECC is written are supplied to the flash memory 2. Subsequently, a high level signal and a low level signal are alternately input to the write enable terminal of the flash memory 2, and additional data such as ECC is supplied to the flash memory 2 in accordance with this signal.

ここで、データ転送を指示する内部コマンド(インプットコマンド)は、各ページに書き込みデータを最初に転送するときにだけ供給される。例えば、先頭のサブページに書き込むデータ(付加データも含む)を転送した後、そのページ内の2番目のサブページに書き込むデータを転送する場合は、上記と同様にカラムアドレスの変更を指示する内部コマンド(ランダムインプットコマンド)と2番目のサブページに対応するカラムアドレスを供給する。   Here, an internal command (input command) for instructing data transfer is supplied only when write data is first transferred to each page. For example, when transferring data to be written to the second subpage within the page after transferring data to be written to the first subpage (including additional data), the internal addressing the column address change is the same as above. A column address corresponding to the command (random input command) and the second subpage is supplied.

又、フラッシュメモリ2内のレジスタに保持されているデータをメモリセルアレイに書き込む(複写する)場合には、レジスタからメモリセルアレイへの書き込み(複写)を指示する内部コマンド(プログラムコマンド)をフラッシュメモリ2に供給する。この内部コマンド(プログラムコマンド)は、4番目のサブページに書き込むデータと、このデータに対応する付加データの転送が終了した後に供給する。
(S72)フラッシュメモリインターフェースブロック10内のサブページ番号レジスタ22及びカウンタ23に設定されている値を更新する。この更新では、サブページ番号レジスタ22に設定されている値をインクリメント(1ずつ加算)し、カウンタ23に設定されている値をデクリメント(1ずつ減算)する。つまり、1セクタ分の読み出し又は書き込みが終了する毎に、サブページ番号レジスタ22に設定されている値が1ずつ増加し、カウンタ23に設定されている値が1ずつ減少する。
(S73)カウンタ23に設置されている値が0の場合は、S74に進み、0でない場合は、S71に進む。例えば、サブページ番号レジスタ22に値mを設定し、カウンタ23に値nを設定した読み出し処理では、サブページ番号#m〜#m+n−1のサブページに記憶されたnセクタのデータが読み出された後にS74に進む。
(S74)一連の制御動作が終了したことをマイクロプロセッサ6に通知する割り込みを発生させる。つまり、カウンタ23に設置されている値が0のときに最終動作命令コードに分岐し、割り込みを発生させる。
When data held in a register in the flash memory 2 is written (copied) to the memory cell array, an internal command (program command) for instructing writing (copying) from the register to the memory cell array is sent to the flash memory 2. To supply. This internal command (program command) is supplied after the transfer of the data to be written to the fourth subpage and the additional data corresponding to this data is completed.
(S72) The values set in the subpage number register 22 and the counter 23 in the flash memory interface block 10 are updated. In this update, the value set in the subpage number register 22 is incremented (added by 1), and the value set in the counter 23 is decremented (subtracted by 1). That is, every time reading or writing for one sector is completed, the value set in the subpage number register 22 is increased by 1, and the value set in the counter 23 is decreased by 1.
(S73) If the value installed in the counter 23 is 0, the process proceeds to S74, and if it is not 0, the process proceeds to S71. For example, in the reading process in which the value m is set in the subpage number register 22 and the value n is set in the counter 23, data of n sectors stored in the subpages of the subpage numbers #m to # m + n−1 are read. Then, the process proceeds to S74.
(S74) An interrupt for notifying the microprocessor 6 that a series of control operations has been completed is generated. That is, when the value set in the counter 23 is 0, the process branches to the final operation instruction code and generates an interrupt.

図8は、本発明の実施形態における論理アドレス空間、物理アドレス空間の一例を示す図である。本図を用いて、本発明のアクセス処理を具体的に説明する。   FIG. 8 is a diagram showing an example of a logical address space and a physical address space in the embodiment of the present invention. The access processing of the present invention will be specifically described with reference to this figure.

ホストシステム4からの指示情報がLBA#510から4セクタの読み出し処理(1)の場合について説明する。読み出し処理(1)は、2つの論理ブロックに跨っているため、LBA#510から2セクタの読み出し処理(1')とLBA#512から2セクタの読み出し処理(1")にグループ化される。   A case will be described in which the instruction information from the host system 4 is a read process (1) of 4 sectors from LBA # 510. Since the read process (1) spans two logical blocks, it is grouped into a read process (1 ′) for two sectors from LBA # 510 and a read process (1 ″) for two sectors from LBA # 512.

S61で、マイクロプロセッサ6は、読み出し処理(1')のアクセスのためのアドレス変換処理を行う。図8(b)に示したように、読み出し処理(1')のアクセス対象領域であるLBA#510〜#511は、LBN#1に含まれる。従って、LBN#1の論理ブロックに対応する物理ブロックの物理ブロックアドレス(PBA)を、アドレス変換テーブル参照して求める。図8(c)に示したように、LBN#1の論理ブロックがPBA#4の物理ブロックに対応する場合は、このアドレス変換処理により求められる物理ブロックアドレス(PBA)はPBA#4になる。尚、アドレス変換テーブルは、各物理ゾーンに含まれる物理ブロックの冗長領域から論理アドレス情報を読み出すこととによってゾーン毎に作成することができる。アドレス変換テーブルは、起動時又はアクセス前に作成する。   In S61, the microprocessor 6 performs an address conversion process for access of the read process (1 ′). As shown in FIG. 8B, LBA # 510 to # 511, which are access target areas of the read process (1 ′), are included in LBN # 1. Therefore, the physical block address (PBA) of the physical block corresponding to the logical block of LBN # 1 is obtained by referring to the address conversion table. As shown in FIG. 8C, when the logical block of LBN # 1 corresponds to the physical block of PBA # 4, the physical block address (PBA) obtained by this address conversion process is PBA # 4. The address conversion table can be created for each zone by reading the logical address information from the redundant area of the physical block included in each physical zone. The address conversion table is created at startup or before access.

S63で、ホストシステム4から与えられた読み出しコマンド(外部コマンド)に対応したコードセットの先頭動作命令コードのアドレスをプログラムカウンタ24に設定する。フラッシュメモリインターフェースブロック10は、物理ブロックアドレスレジスタ21、サブページ番号レジスタ22、カウンタ23及びプログラムカウンタに設定された情報に基づいて読み出し処理(1')に対応した一連の制御動作を開始する。   In S 63, the address of the head operation instruction code of the code set corresponding to the read command (external command) given from the host system 4 is set in the program counter 24. The flash memory interface block 10 starts a series of control operations corresponding to the read process (1 ′) based on information set in the physical block address register 21, the sub page number register 22, the counter 23, and the program counter.

S62、S63で読み出し処理(1')に対応した情報の設定が終了した後、S61に戻り、読み出し処理(1")のアクセスのためのアドレス変換処理を行う。図8(b)に示したように、読み出し処理(1")のアクセス対象領域であるLBA#512〜#513は、LBN#2に含まれる。従って、LBN#2の論理ブロックに対応する物理ブロックの物理ブロックアドレス(PBA)を、アドレス変換テーブル参照して求める。図8(c)に示したように、LBN#2の論理ブロックがPBA#1の物理ブロックに対応する場合は、このアドレス変換処理により求められる物理ブロックアドレス(PBA)はPBA#1になる。   After the setting of the information corresponding to the read process (1 ′) is completed in S62 and S63, the process returns to S61 to perform the address conversion process for access of the read process (1 ″) as shown in FIG. As described above, LBA # 512 to # 513, which are access target areas of the read process (1 ″), are included in LBN # 2. Therefore, the physical block address (PBA) of the physical block corresponding to the logical block of LBN # 2 is obtained by referring to the address conversion table. As shown in FIG. 8C, when the logical block of LBN # 2 corresponds to the physical block of PBA # 1, the physical block address (PBA) obtained by this address conversion process is PBA # 1.

フラッシュメモリインターフェースブロック10が一連の制御動作を実行している場合は、その一連の制御動作が終了するのを待ち、一連の制御動作が終了したことを確認した後、S62で、物理ブロックアドレスレジスタ21に1を設定する。また、読み出し処理(1")のアクセス対象領域の先頭のセクタはLBA#512であり、2進数で"10 0000 0000"なので、下位8ビットは、2進数で"0000 0000"(10進数で0)になる。従って、サブページ番号レジスタ22に0を設定する。また、読み出し処理(1")のアクセス対象領域に含まれるセクタ数は2なので、カウンタ23に2を設定する。   If the flash memory interface block 10 is executing a series of control operations, the process waits for the end of the series of control operations, confirms the end of the series of control operations, and then, in S62, the physical block address register 1 is set to 21. In addition, since the top sector of the access target area for the read process (1) is LBA # 512 and is “10 0000 0000” in binary, the lower 8 bits are “0000 0000” in binary (0 in decimal) Accordingly, 0 is set in the subpage number register 22. Also, since the number of sectors included in the access target area of the read process (1 ") is 2, 2 is set in the counter 23.

S63で、ホストシステムから与えられた読み出しコマンド(外部コマンド)に対応したコードセットの先頭動作命令コードのアドレスをプログラムカウンタ24に設定する。フラッシュメモリインターフェースブロック10は、物理ブロックアドレスレジスタ21、サブページ番号レジスタ22、カウンタ23及びプログラムカウンタに設定された情報に基づいて読み出し処理(1")に対応した一連の制御動作を開始する。   In S63, the address of the head operation instruction code of the code set corresponding to the read command (external command) given from the host system is set in the program counter 24. The flash memory interface block 10 starts a series of control operations corresponding to the read process (1 ″) based on the information set in the physical block address register 21, the subpage number register 22, the counter 23, and the program counter.

次に、フラッシュメモリインターフェースブロック10が実行する一連の制御動作を具体的に説明する。尚、読み出し処理(1')と読み出し処理(1")は同様な処理なので、読み出し処理(1')に対応した一連の制御動作についてだけ説明する。S71で、読み出しを指示する内部コマンド(リードコマンド)をフラッシュメモリ2に供給する。次に、物理ブロックアドレスレジスタ21に設定されている4(2進数で100)に、サブページ番号レジスタ22に設定されている254(2進数で1111 1110)の上位側6ビット(11 1111)を連結したロウアドレス(2進数で1 0011 1111)を生成し、生成したロウアドレスをフラッシュメモリ2に供給する。続いて、サブページ番号レジスタ22に設定されている254(2進数で1111 1110)の下位側2ビットは10(10進数で2)なので、3番目のサブページのカラムアドレスをフラッシュメモリ2に供給する。   Next, a series of control operations executed by the flash memory interface block 10 will be specifically described. Since the reading process (1 ′) and the reading process (1 ″) are the same process, only a series of control operations corresponding to the reading process (1 ′) will be described. Command) is supplied to the flash memory 2. Next, 4 (100 in binary number) set in the physical block address register 21 and 254 (1111 1110 in binary number) set in the subpage number register 22 are set. Is generated, and the generated row address is supplied to the flash memory 2. Subsequently, the sub page number register 22 is set. The lower 2 bits of 254 (1111 1110 in binary) are 10 (2 in decimal), so the third sub The column address of the page is supplied to the flash memory 2.

フラッシュメモリ2のビジー状態が解除された後、フラッシュメモリ2のリードイネーブル端子にハイレベルとローレベルの信号を交互に入力して、3番目のサブページに対応する1セクタのデータを読み出す。次に、ページ内の読み出し開始位置の変更を指示する内部コマンド(ランダムリードコマンド)と3番目のサブページに対応するECCが記憶されている位置を指定するカラムアドレスを供給する。この後、フラッシュメモリ2のリードイネーブル端子にハイレベルとローレベルの信号を交互に入力し、3番目のサブページに対応するECCを読み出す。   After the busy state of the flash memory 2 is released, high level and low level signals are alternately input to the read enable terminal of the flash memory 2 to read data of one sector corresponding to the third subpage. Next, an internal command (random read command) for instructing the change of the reading start position in the page and a column address for specifying the position where the ECC corresponding to the third subpage is stored are supplied. Thereafter, a high level signal and a low level signal are alternately input to the read enable terminal of the flash memory 2, and the ECC corresponding to the third subpage is read.

S72で、サブページ番号レジスタ22に設定されている値を254(2進数で1111 1110)から255(2進数で1111 1111)に変更し、カウンタ23に設定されている値を2から1に変更する。   In S72, the value set in the subpage number register 22 is changed from 254 (binary 1111 1110) to 255 (binary 1111 1111), and the value set in the counter 23 is changed from 2 to 1. To do.

カウンタ23に設定されている値が1なのでS71に戻る(S73)。ここで、サブページ番号レジスタ22に設定されている255(2進数で1111 1111)の下位側2ビットは11(10進数で3)なので、ページ内の読み出し開始位置の変更を指示する内部コマンド(ランダムリードコマンド)と4番目のサブページのカラムアドレスをフラッシュメモリ2に供給する。この後、フラッシュメモリ2のリードイネーブル端子にハイレベルとローレベルの信号を交互に入力し、4番目のサブページに対応する1セクタのデータを読み出す。次に、ページ内の読み出し開始位置の変更を指示する内部コマンド(ランダムリードコマンド)と4番目のサブページに対応するECCが記憶されている位置を指定するカラムアドレスを供給する。この後、フラッシュメモリ2のリードイネーブル端子にハイレベルとローレベルの信号を交互に入力し、4番目のサブページに対応するECCを読み出す。   Since the value set in the counter 23 is 1, the process returns to S71 (S73). Here, since the lower 2 bits of 255 (1111 1111 in binary number) set in the subpage number register 22 are 11 (3 in decimal number), an internal command (instruction for changing the read start position in the page) Random read command) and the column address of the fourth sub-page are supplied to the flash memory 2. Thereafter, a high level signal and a low level signal are alternately input to the read enable terminal of the flash memory 2 to read data of one sector corresponding to the fourth subpage. Next, an internal command (random read command) for instructing the change of the reading start position in the page and a column address for specifying the position where the ECC corresponding to the fourth subpage is stored are supplied. Thereafter, high level and low level signals are alternately input to the read enable terminal of the flash memory 2, and the ECC corresponding to the fourth subpage is read.

S72で、サブページ番号レジスタ22に設定されている値を255(2進数で1111 1111)から0(2進数で0000 0000)に変更し、カウンタ23に設定されている値を1から0に変更する。
カウンタ23に設定されている値が0なのでS74に進み(S73)、マイクロプロセッサ6に一連の制御動作が終了したことを通知する割り込みを発生させる。
In S72, the value set in the subpage number register 22 is changed from 255 (binary 1111 1111) to 0 (binary 0000 0000), and the value set in the counter 23 is changed from 1 to 0. To do.
Since the value set in the counter 23 is 0, the process proceeds to S74 (S73), and an interrupt is generated to notify the microprocessor 6 that the series of control operations has been completed.

以上で説明したように、本発明のフラッシュメモリシステム1では、読み出し処理又は書き込み処理と、アドレス変換処理が並列に実行できる。   As described above, in the flash memory system 1 of the present invention, the read process or the write process and the address conversion process can be executed in parallel.

更に、本発明のフラッシュメモリシステム1では、フラッシュメモリシーケンスブロック10の動作状況を容易に把握できると共に、フラッシュメモリシーケンスブロック10が実行している一連の制御動作を中止させたりすることを容易に行うことができる。   Furthermore, in the flash memory system 1 of the present invention, the operation status of the flash memory sequence block 10 can be easily grasped, and a series of control operations executed by the flash memory sequence block 10 can be easily stopped. be able to.

つまり、本発明のフラッシュメモリシステムでは、フラッシュメモリシーケンスブロック10がプログラムカウンタ24に設定されるアドレスに従ってROM12から動作命令コードを読み出し、読み出した動作命令コードに基づいて制御動作を実行するため、プログラムカウンタ24に設定されるアドレスを参照することにより、フラッシュメモリシーケンスブロック10が実行している制御動作を把握することができる。   That is, in the flash memory system of the present invention, the flash memory sequence block 10 reads the operation instruction code from the ROM 12 according to the address set in the program counter 24, and executes the control operation based on the read operation instruction code. By referring to the address set to 24, the control operation executed by the flash memory sequence block 10 can be grasped.

又、フラッシュメモリシーケンスブロック10が一連の制御動作を実行しているときに、フラッシュメモリシステム1に供給されている電圧が所定の電圧値よりも低くなった場合やホストシステムから新たな指示情報が与えられた場合に、プログラムカウンタ24に設定されるアドレスを最終動作命令コードに対応するアドレスに変更することにより、フラッシュメモリシーケンスブロック10が実行している一連の制御動作を強制的に終了させることができる。尚、フラッシュメモリシーケンスブロック10が実行している一連の制御動作を強制的に終了させる場合は、不完全なデータがフラッシュメモリ2に書き込まれる等の不具合が発生することがないタイミングで終了させることが好ましい。例えば、電圧が低下したときに、書き込みデータがフラッシュメモリ2内のレジスタに保持されていても、レジスタからメモリセルアレイへの書き込み(複写)を実行せず制御動作を強制的に終了させることが好ましい。   Further, when the flash memory sequence block 10 is executing a series of control operations, when the voltage supplied to the flash memory system 1 becomes lower than a predetermined voltage value or when new instruction information is received from the host system. When given, a series of control operations executed by the flash memory sequence block 10 are forcibly terminated by changing the address set in the program counter 24 to an address corresponding to the final operation instruction code. Can do. In addition, when forcibly terminating a series of control operations executed by the flash memory sequence block 10, it is terminated at a timing at which a problem such as incomplete data being written to the flash memory 2 does not occur. Is preferred. For example, when the voltage drops, it is preferable to forcibly end the control operation without executing writing (copying) from the register to the memory cell array even if write data is held in the register in the flash memory 2. .

なお、本実施形態は大ブロックのフラッシュメモリについて説明してきたが、小ブロックのフラッシュメモリについても同様に適用可能である。   Although the present embodiment has been described with respect to a large block flash memory, the present invention can be similarly applied to a small block flash memory.

また、以上述べた実施形態は全て本発明を例示的に示すものであって限定的に示すものではなく、本発明は他の種々の変形態様及び変更態様で実施することができる。従って本発明の範囲は特許請求の範囲及びその均等範囲によってのみ規定されるものである。   Moreover, all the embodiment described above shows the present invention exemplarily, and does not limit the present invention, and the present invention can be implemented in other various modifications and changes. Therefore, the scope of the present invention is defined only by the claims and their equivalents.

本発明の実施形態におけるフラッシュメモリシステムを概略的に示すブロック図である。1 is a block diagram schematically showing a flash memory system in an embodiment of the present invention. FIG. ブロックとページの関係を示す説明図である。It is explanatory drawing which shows the relationship between a block and a page. 本発明の実施形態のフラッシュメモリインターフェースブロックのレジスタ構成を示している図である。It is a figure which shows the register structure of the flash memory interface block of embodiment of this invention. コードセットと動作命令コードを説明するための図である。It is a figure for demonstrating a code set and an operation instruction code. アドレス変換処理を説明するための説明図である。It is explanatory drawing for demonstrating an address conversion process. マイクロプロセッサがフラッシュメモリインターフェースブロックに行う処理を示すフローチャートである。It is a flowchart which shows the process which a microprocessor performs to a flash memory interface block. フラッシュメモリインターフェースブロックが行う処理を示すフローチャートである。It is a flowchart which shows the process which a flash memory interface block performs. 本発明の実施形態における論理アドレス空間、物理アドレス空間の一例を示す図である。It is a figure which shows an example of the logical address space in the embodiment of this invention, and a physical address space.

符号の説明Explanation of symbols

1 フラッシュメモリシステム
2 フラッシュメモリ
3 コントローラ
4 ホストシステム
6 マイクロプロセッサ
7 ホストインターフェースブロック
8 ワークエリア
9 バッファ
10 フラッシュメモリインターフェースブロック
11 ECCブロック
12 ROM
13 外部バス
14 内部バス
21 物理ブロックアドレスレジスタ
22 サブページ番号レジスタ
23 カウンタ
24 プログラムカウンタ
DESCRIPTION OF SYMBOLS 1 Flash memory system 2 Flash memory 3 Controller 4 Host system 6 Microprocessor 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 21 Physical block address register 22 Subpage number register 23 Counter 24 Program counter

Claims (5)

ホストシステムから与えられる指示情報に応じて、物理ブロック単位で記憶データの消去を実行するフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記フラッシュメモリに対するアクセスを制御するために実行される制御動作を指示する動作命令コードを複数個含むコードセットを複数組記憶しているコードセット記憶手段と、
前記コードセット記憶手段に記憶されている前記動作命令コードのアドレスを保持するアドレス保持手段と、
前記指示情報が与えられたときに、該指示情報に含まれる外部コマンドに対応する前記コードセットを選択し、該コードセットに含まれる前記動作命令コードのアドレスを前記アドレス保持手段に設定するコードセット選択手段と、
セクタ単位の論理アドレスが割り当てられている複数セクタの領域を論理ブロックとして管理する論理ブロック管理手段と、
前記指示情報により指示されたアクセス領域の先頭領域の前記論理アドレスを、前記論理ブロックに付けられた論理ブロック番号を示す上位側のビットと前記論理ブロック内の領域に付けられたセクタ番号を示す下位側のビットとに分割する論理アドレス分割手段と、
前記論理アドレス分割手段により求められた前記論理ブロック番号を、該論理ブロック番号に対応する前記物理ブロックの物理ブロックアドレスに変換するアドレス変換手段と、
前記アドレス変換手段により求められた前記物理ブロックアドレス、前記論理アドレス分割手段により求められた前記セクタ番号及び前記アクセス領域のセクタ数を保持するアクセス領域情報保持手段と、
前記アドレス保持手段に設定されているアドレスに従って前記コードセット記憶手段から前記動作命令コードを読み出し、該動作命令コードに基づいた制御動作を実行する制御動作実行手段と、
前記制御動作実行手段が前記動作命令コードに基づいた制御動作を実行する毎に、前記アドレス保持手段に設定されているアドレスを、次に実行すべき制御動作に対応する前記動作命令コードのアドレスに変更するアドレス更新手段と、
1セクタ分のアクセスが終了する毎に、前記アクセス領域情報保持手段に保持されている前記セクタ番号及び前記セクタ数を更新する情報更新手段とを備え、
前記制御動作実行手段は、前記アクセス領域情報保持手段に保持されている前記セクタ番号を上位側のビットと下位側のビットに分割し、前記セクタ番号を上位側のビットを前記アクセス領域情報保持手段に保持されている前記物理ブロックアドレスの下位側に連結することにより前記フラッシュメモリ内の物理ページを特定するロウアドレスを生成し、前記セクタ番号の下位側のビットに基づいて前記物理ページ内のセクタ領域を特定するカラムアドレスを生成し、
情報更新手段は、1セクタ分のアクセスが終了する毎に、前記セクタ番号を1増加させ、前記セクタ数を1減少させることを特徴とするメモリコントローラ。
A memory controller that controls access to a flash memory that performs erasure of stored data in units of physical blocks in accordance with instruction information given from a host system,
Code set storage means for storing a plurality of code sets including a plurality of operation instruction codes for instructing a control operation to be executed to control access to the flash memory;
Address holding means for holding an address of the operation instruction code stored in the code set storage means;
When the instruction information is given, a code set that selects the code set corresponding to the external command included in the instruction information and sets the address of the operation instruction code included in the code set in the address holding unit A selection means;
Logical block management means for managing areas of a plurality of sectors assigned logical addresses in units of sectors as logical blocks;
Indicating the logical address, sector number assigned to the logical block upper side of bits indicating a logical block number assigned to a region of the logical block of the first part of the access area designated by the instruction information Logical address dividing means for dividing into lower bits,
Address converting means for converting the logical block number obtained by the logical address dividing means into a physical block address of the physical block corresponding to the logical block number;
Access area information holding means for holding the physical block address obtained by the address conversion means, the sector number obtained by the logical address dividing means, and the number of sectors of the access area;
Control operation executing means for reading the operation instruction code from the code set storage means according to the address set in the address holding means and executing a control operation based on the operation instruction code;
Each time the control operation execution means executes a control operation based on the operation instruction code, the address set in the address holding means is changed to the address of the operation instruction code corresponding to the control operation to be executed next. An address update means to be changed;
An information updating means for updating the sector number and the number of sectors held in the access area information holding means each time access for one sector is completed,
The control operation executing means divides the sector number held in the access area information holding means into upper bits and lower bits, and converts the upper bits into the access area information holding means. To generate a row address for specifying a physical page in the flash memory by connecting to the lower side of the physical block address held in the sector, and based on the lower bit of the sector number, a sector in the physical page is generated. Generate a column address that identifies the area,
The information update means increases the sector number by 1 and decreases the number of sectors by 1 each time access for one sector is completed.
前記制御動作実行手段が前記コードセットに基づいた一連の制御動作を実行しているときに、前記アドレス保持手段に設定されているアドレスを変更することにより前記一連の制御動作を終了させる強制終了手段を備えることを特徴とする請求項1に記載のメモリコントローラ。   Forcibly ending means for ending the series of control operations by changing the address set in the address holding means when the control action execution means is executing a series of control operations based on the code set. The memory controller according to claim 1, further comprising: 請求項1又は2に記載のメモリコントローラとフラッシュメモリを備えることを特徴とするフラッシュメモリシステム。   A flash memory system comprising the memory controller according to claim 1 and a flash memory. ホストシステムから与えられる指示情報に応じて、物理ブロック単位で記憶データの消去を実行するフラッシュメモリに対するアクセスを制御するために、予め記憶手段に記憶されている複数個の動作命令コード含むコードセットに基づいて一連の制御動作を実行するフラッシュメモリの制御方法であって、
前記指示情報が与えられたときに、該指示情報に含まれる外部コマンドに対応する前記コードセットを選択し、該コードセットに含まれる前記動作命令コードのアドレスをアドレス保持手段に設定するコードセット選択ステップと、
セクタ単位の論理アドレスが割り当てられている複数セクタの領域を論理ブロックとして管理し、前記指示情報により指示されたアクセス領域の先頭領域の前記論理アドレスを、前記論理ブロックに付けられた論理ブロック番号を示す上位側のビットと前記論理ブロック内の領域に付けられたセクタ番号を示す下位側のビットとに分割する論理アドレス分割ステップと、
前記論理アドレス分割ステップにより求められた前記論理ブロック番号を、該論理ブロック番号に対応する前記物理ブロックの物理ブロックアドレスに変換するアドレス変換ステップと、
前記アドレス変換ステップにより求められた前記物理ブロックアドレス、前記論理アドレス分割ステップにより求められた前記セクタ番号及び前記アクセス領域のセクタ数を、アクセス領域情報保持手段に設定するアクセス領域情報設定ステップと
前記アドレス保持手段に設定されているアドレスに従って前記記憶手段から前記動作命令コードを読み出し、該動作命令コードに基づいた制御動作を実行する制御動作実行ステップと、
前記制御動作実行ステップで前記動作命令コードに基づいた制御動作が実行される毎に、前記アドレス保持手段に設定されているアドレスを次に実行すべき制御動作に対応する前記動作命令コードのアドレスに変更するアドレス更新ステップと、
1セクタ分のアクセスが終了する毎に、前記アクセス領域情報保持手段に保持されている前記セクタ番号及び前記セクタ数を更新する情報更新ステップとを含み、
前記制御動作実行ステップでは、前記アクセス領域情報保持手段に保持されている前記セクタ番号を上位側のビットと下位側のビットに分割し、前記セクタ番号を上位側のビットを前記アクセス領域情報保持手段に保持されている前記物理ブロックアドレスの下位側に連結することにより前記フラッシュメモリ内の物理ページを特定するロウアドレスを生成し、前記セクタ番号の下位側のビットに基づいて前記物理ページ内のセクタ領域を特定するカラムアドレスを生成し、
情報更新ステップでは、1セクタ分のアクセスが終了する毎に、前記セクタ番号を1増加させ、前記セクタ数を1減少させることを特徴とするフラッシュメモリの制御方法。
In order to control access to the flash memory that executes erasure of stored data in units of physical blocks in accordance with instruction information given from the host system, a code set including a plurality of operation instruction codes stored in advance in the storage means A flash memory control method for performing a series of control operations based on
Code set selection for selecting the code set corresponding to the external command included in the instruction information when the instruction information is given, and setting the address of the operation instruction code included in the code set in the address holding means Steps,
The area of the plurality sectors logical addresses of sectors are assigned managed as logical blocks, the logical address of the head region of the access area designated by the instruction information, the logical block number assigned to the logical block A logical address dividing step of dividing the high-order bit indicating the bit and the low-order bit indicating the sector number assigned to the area in the logical block;
An address conversion step of converting the logical block number obtained by the logical address division step into a physical block address of the physical block corresponding to the logical block number;
An access area information setting step for setting the physical block address obtained by the address conversion step, the sector number obtained by the logical address division step, and the number of sectors of the access area in an access area information holding unit; and A control operation execution step of reading the operation instruction code from the storage unit according to an address set in the holding unit and executing a control operation based on the operation instruction code;
Each time the control operation based on the operation instruction code is executed in the control operation execution step, the address set in the address holding means is changed to the address of the operation instruction code corresponding to the control operation to be executed next. An address update step to be changed;
An information update step of updating the sector number and the number of sectors held in the access area information holding means each time access for one sector is completed,
In the control operation executing step, the sector number held in the access area information holding means is divided into upper bits and lower bits, and the upper bits are divided into the access area information holding means. To generate a row address for specifying a physical page in the flash memory by connecting to the lower side of the physical block address held in the sector, and based on the lower bit of the sector number, a sector in the physical page is generated. Generate a column address that identifies the area,
In the information updating step, the flash memory control method is characterized by incrementing the sector number by 1 and decrementing the number of sectors by 1 each time access for one sector is completed.
前記アドレス保持手段に設定されているアドレスを変更することにより、前記コードセット選択ステップで選択された前記コードセットに基づいた一連の制御動作を強制的に終了させる強制終了ステップを含むことを特徴とする請求項4に記載のフラッシュメモリの制御方法。   Including a forced termination step of forcibly terminating a series of control operations based on the code set selected in the code set selection step by changing an address set in the address holding unit. The method of controlling a flash memory according to claim 4.
JP2006256937A 2006-09-22 2006-09-22 MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD Active JP4661748B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006256937A JP4661748B2 (en) 2006-09-22 2006-09-22 MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006256937A JP4661748B2 (en) 2006-09-22 2006-09-22 MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD

Publications (2)

Publication Number Publication Date
JP2008077468A JP2008077468A (en) 2008-04-03
JP4661748B2 true JP4661748B2 (en) 2011-03-30

Family

ID=39349442

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006256937A Active JP4661748B2 (en) 2006-09-22 2006-09-22 MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD

Country Status (1)

Country Link
JP (1) JP4661748B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4829370B1 (en) 2010-07-09 2011-12-07 株式会社東芝 MEMORY CONTROL DEVICE, MEMORY DEVICE, AND STOP CONTROL METHOD
JP5722685B2 (en) * 2011-04-12 2015-05-27 株式会社日立製作所 Method for controlling semiconductor device and nonvolatile memory device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000293427A (en) * 1999-04-05 2000-10-20 Mitsubishi Electric Corp Storage medium on which flash memory is mounted
JP2006155335A (en) * 2004-11-30 2006-06-15 Tdk Corp Memory controller, flash memory system, and control method thereof

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5509134A (en) * 1993-06-30 1996-04-16 Intel Corporation Method and apparatus for execution of operations in a flash memory array
JPH1063442A (en) * 1996-08-22 1998-03-06 Toshiba Corp Semiconductor disk device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000293427A (en) * 1999-04-05 2000-10-20 Mitsubishi Electric Corp Storage medium on which flash memory is mounted
JP2006155335A (en) * 2004-11-30 2006-06-15 Tdk Corp Memory controller, flash memory system, and control method thereof

Also Published As

Publication number Publication date
JP2008077468A (en) 2008-04-03

Similar Documents

Publication Publication Date Title
JP4373943B2 (en) Memory controller, flash memory system, and flash memory control method
JP4661497B2 (en) Memory controller, flash memory system, and flash memory control method
JP4235646B2 (en) Memory controller and flash memory system
JP4501881B2 (en) Memory controller and flash memory system
JP4661191B2 (en) Memory controller, flash memory system, and flash memory control method
JP4661748B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4513786B2 (en) Memory controller, memory system, and memory control method
JP4609406B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP2005292925A (en) Memory controller, flash memory system, and control method for flash memory
JP4697146B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4177292B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM, AND FLASH MEMORY CONTROL METHOD
JP4000124B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP3934659B1 (en) Memory controller and flash memory system
JP4194518B2 (en) Memory controller, flash memory system, and flash memory control method
JP4304167B2 (en) Memory controller, flash memory system, and flash memory control method
JP4177301B2 (en) Memory controller, flash memory system, and flash memory control method
JP4213166B2 (en) Memory controller and flash memory system
JP2006178909A (en) Memory controller, flash memory system and method for controlling flash memory
JP4235595B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4273109B2 (en) Memory controller and flash memory system
JP4254930B2 (en) Memory controller, flash memory system, and flash memory control method
JP4366283B2 (en) Memory controller and flash memory system including the memory controller
JP4569554B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4497124B2 (en) Memory controller, flash memory system, and flash memory control method
JP2005293177A (en) Memory controller and flash memory system

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100722

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100803

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100730

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101026

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101112

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4661748

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

Year of fee payment: 3