WO2017022082A1 - フラッシュメモリパッケージ、及び、フラッシュメモリパッケージを含むストレージシステム - Google Patents

フラッシュメモリパッケージ、及び、フラッシュメモリパッケージを含むストレージシステム Download PDF

Info

Publication number
WO2017022082A1
WO2017022082A1 PCT/JP2015/072089 JP2015072089W WO2017022082A1 WO 2017022082 A1 WO2017022082 A1 WO 2017022082A1 JP 2015072089 W JP2015072089 W JP 2015072089W WO 2017022082 A1 WO2017022082 A1 WO 2017022082A1
Authority
WO
WIPO (PCT)
Prior art keywords
storage area
data
flash memory
controller
block
Prior art date
Application number
PCT/JP2015/072089
Other languages
English (en)
French (fr)
Inventor
篤志 河村
政弘 新井
岡田 光弘
Original Assignee
株式会社日立製作所
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 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to US15/748,802 priority Critical patent/US20190012260A1/en
Priority to PCT/JP2015/072089 priority patent/WO2017022082A1/ja
Publication of WO2017022082A1 publication Critical patent/WO2017022082A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0408Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5642Multilevel memory with buffers, latches, registers at input or output

Definitions

  • the present invention relates generally to storage control, for example, to flash memory package (FMPKG) technology.
  • FMPKG flash memory package
  • the storage area of FM includes a plurality of physical blocks.
  • the physical block includes a plurality of physical pages.
  • the physical block is a data erasing unit.
  • a physical page is a data read / write unit. The data stored in the FM physical page cannot be directly rewritten. Therefore, FMPKG rewrites data as follows.
  • FMPKG copies the data in the physical page to be rewritten to the Dynamic Random Access Memory (DRAM), and rewrites the data on the DRAM.
  • the FMPKG stores the rewritten data in another free physical page and invalidates the physical page to be rewritten.
  • DRAM Dynamic Random Access Memory
  • FMPKG performs the following process to make the invalidated physical page reusable. All valid data in the physical block is copied to a free physical page. Then, all data in the physical block is erased. As a result, the physical page in the physical block becomes a free physical page and can be reused. This process is called reclamation process.
  • the data retention performance of FM cells tends to deteriorate as the number of times of writing / erasing increases due to its characteristics.
  • the physical block including the deteriorated cell cannot be used (life is exhausted). Therefore, FMPKG levels the number of times of writing / erasing of each physical block so that the number of times of writing / erasing of a specific physical block does not protrude. This process is called a wear leveling process.
  • the read error rate of data held in FM cells tends to increase with time. Such an error is called a retention error. Therefore, the FMPKG copies the data of the physical page after a predetermined time has elapsed from the writing to another physical page. This process is called a refresh process.
  • Inter-cell interference interference between floating gates of adjacent cells
  • an object of the present invention is to reduce inter-cell interference in a flash memory package.
  • a flash memory package includes at least one memory including a flash memory and a controller.
  • the flash memory includes a plurality of physical blocks, the physical block is a data erasing unit, the physical block includes a plurality of physical pages, and the physical page is a data write unit.
  • the controller stores the received write data in a primary storage area that is a partial storage area of the memory, and when the amount of data accumulated in the primary storage area is equal to or larger than the capacity of one physical block of the flash memory, Data corresponding to the capacity of at least one physical block is collectively transferred from the storage area to the secondary storage area which is a part of the flash memory.
  • inter-cell interference in a flash memory package can be reduced.
  • the structural example of a computer system is shown.
  • 2 shows a configuration example of an FMPKG according to the first embodiment.
  • maintains is shown.
  • the structural example of FM is shown.
  • An example of storing data in the FM of the Multiple Level Cell (MLC) is shown.
  • the structural example of the cell of FM is shown.
  • the processing example which transfers data to FM in FMPKG is shown.
  • the structural example of the conventional logical-physical conversion table is shown.
  • the structural example of a block conversion table and a page conversion table is shown.
  • 6 shows an example of a flowchart of a write process in FMPKG.
  • the flowchart example of the area reservation process of a primary storage area is shown.
  • the flowchart example of a batch transfer process is shown.
  • the flowchart example of the free block reservation process of a secondary storage area is shown.
  • 6 shows an example of a flowchart of a process for saving data in a buffer memory.
  • the structural example of FMPKG which concerns on Example 2 is shown.
  • 6 shows an example of a flowchart of a write process in FMPKG.
  • the flowchart example of the reclamation process of a primary storage area is shown.
  • 10 shows a configuration example of an FMPKG according to a third embodiment.
  • region management table is shown.
  • An example of the configuration of a single level cell (SLC) queue and an MLC queue is shown.
  • the flowchart example of a batch transfer process is shown.
  • region is shown.
  • the process may be described with “program” as the subject, but the program is executed by a processor (for example, Central Processing Unit (CPU)), so that a predetermined process can be appropriately performed. Since the processing is performed using at least one of a storage resource (for example, a memory) and a communication I / F device, the subject of processing may be a processor and an apparatus having the processor. Part or all of the processing performed by the processor may be performed by a hardware circuit.
  • the computer program may be installed from a program source.
  • the program source may be a program distribution server or a storage medium (for example, a portable storage medium).
  • a set of one or more computers that manage at least one device included in the computer system may be referred to as a “management system”.
  • the management computer may be a management system.
  • the management system may be a combination of the management computer and the display computer.
  • multiple computers may perform processing equivalent to that of the management computer. In this case, these multiple computers (for display when the display computer performs display) A computer may also be included).
  • the management computer is a management system.
  • the management computer displaying information may mean displaying information on a display device of the management computer, or displaying information on a display computer (eg client) connected to the management computer (eg server). Information may be transmitted. In the latter case, information represented by the display information is displayed by the display computer on a display device included in the display computer.
  • reference numerals when distinguishing and explaining the same type of elements, reference numerals are used, such as “aaa113a”, “aaa113b”, “aaa201-1”, and “aaa201-2”, and When the description is made without distinguishing the elements, only a common number among the reference numerals such as “aaa113” and “aaa201” may be used.
  • FIG. 1 shows a configuration example of a computer system according to the first embodiment.
  • the computer system may include a storage system 101, one or more host computers 103 a and 103 b, and a management terminal 104.
  • the host computers 103a and 103b are connected to the storage system 101 via a SAN (Storage Area Network) 105, which is an example of a network, so that bidirectional communication is possible.
  • SAN Storage Area Network
  • the storage system 101 has one or more storage controllers 102 and one or more storage devices 112.
  • the storage device 112 may include a plurality of FMPKGs 113a to 113e.
  • the FMPKG 113 is a nonvolatile storage device including a plurality of FM chips. Details of the FMPKG 113 will be described later (see FIG. 2).
  • the storage controller 102 may include a CPU 108, a memory 109, a plurality of host I / Fs 107, a plurality of storage I / Fs 111, and a maintenance I / F 106. These elements may be connected via the internal bus 110 so as to be capable of bidirectional communication.
  • the memory 109 holds programs and data for realizing various functions of the storage system 101.
  • the memory 109 may have a cache area for temporarily storing read data and write data.
  • the CPU 108 implements various functions of the storage system 101 by reading out and executing programs and data from the memory 109.
  • the host I / F 107 is an I / F for the storage controller 102 to communicate with the host computer 103.
  • the maintenance I / F 106 is an I / F for the storage controller 102 to communicate with the management terminal 104.
  • the administrator may perform management and maintenance of the storage controller 102 from the management terminal 104.
  • the computer system does not necessarily have all these components.
  • the administrator may perform management and maintenance of the storage controller 102 from the host computer 103.
  • the storage controller 102 does not necessarily have all these components.
  • the computer system may have a configuration in which the host computer 103 and the FMPKG 113 are directly connected instead of the configuration in which the host computer 103 and the FMPKG 113 are connected via the storage controller 102 as shown in FIG.
  • FIG. 2 shows a configuration example of the FMPKG 113-1.
  • the FMPKG 113-1 includes an FM controller 201 and one or more FMs 210a to 210h.
  • the FM controller 201 may include a storage I / F 202, a buffer memory 204, a battery 205, a CPU 206, a main memory 207, and an FM I / F 209. These components may be connected via the internal bus 203 so that bidirectional communication is possible.
  • the storage I / F 202 is an I / F for the FM controller 201 to communicate with the host device 102.
  • An example of the host device 102 is the storage controller 102.
  • Examples of the storage I / F 202 are Serial ATA (SATA), Serial Attached SCSI (SAS), Fiber Channel (FC), or PCI-Express I / F.
  • FM I / F 209 is an I / F for the FM controller 201 to transmit / receive data to / from the FM 210.
  • the main memory 207 holds programs and data for realizing various functions of the FMPKG 113-1. Examples of programs and data held by the main memory 207 will be described later (see FIG. 3).
  • the buffer memory 204 temporarily holds the write data transmitted from the host device 102.
  • the buffer memory 204 may temporarily hold read data read from the FM 210.
  • the buffer memory 204 may also serve as a cache memory that caches write data and read data in order to improve response performance to the host device 104.
  • the buffer memory 204 may hold a large-capacity table that cannot be stored in the main memory 207.
  • the main memory 207 and the buffer memory 204 may be configured by a volatile storage medium that has a higher access speed (lower latency) than the FM 210.
  • Examples of the main memory 207 and the buffer memory 204 are SRAM and DRAM.
  • the CPU 206 implements various functions of the FMPKG 113-1 by reading out and executing programs and data from the main memory 207.
  • the CPU 206 may store write data related to the write command in the FM 210.
  • the CPU 206 may read the read data related to the read command from the FM 210 and transfer the read data to the higher level device 102.
  • the CPU 206 may perform reclamation processing and wear leveling processing according to the usage status of the FM 210.
  • the operation mainly performed by the FM controller 201 in the embodiment may be a process performed by the CPU 206 in cooperation with other components.
  • the battery 205 supplies power to each component of the FM controller 201 when an emergency power failure occurs. This is to prevent the data held in the main memory 207 and the buffer memory 204 configured by a volatile storage medium from being lost due to an extremely power interruption.
  • the battery 205 may be called a capacitor.
  • the assist circuit 208 performs specific data processing instead of the CPU 206.
  • Examples of the assist circuit 208 are a data compression circuit, an encryption circuit, a hash calculation circuit, a code calculation circuit, and the like.
  • the assist circuit 208 will be described without using the assist circuit 208, but the assist circuit 208 may perform a part of the functions according to the present embodiment.
  • the function of the assist circuit 208 may be realized as a dedicated circuit or as a program executed by the CPU 206.
  • the FM controller 201 does not necessarily have all these components.
  • the main memory 207 and the buffer memory 204 may be one storage device. As will be described in another embodiment, the main memory 207 or the buffer memory 204 may be configured by a nonvolatile storage medium.
  • FIG. 3 shows an example of programs and data stored in the memory 207.
  • the memory 207 includes an OS (Operating System) 301, an FM control program 304, a transfer control program 303, an input / output control program 302, a logical / physical conversion program 305, a page conversion table 901, and a block conversion table 905.
  • OS Operating System
  • the OS 301 performs basic processing (scheduling, resource management, etc.) when the CPU 206 executes each program.
  • the I / F control program 302 controls the storage I / F 202 and the FM I / F 209.
  • the FM control program 303 controls the entire constituent elements of the FMPKG 113-1, and realizes various functions of the FM controller 201.
  • the operation mainly performed by the FM controller 201 in the embodiment may be the FM control program 303 or the CPU 206 that executes the FM control program 303.
  • the storage control program 304 realizes a function for the FMPKG 113-1 to operate as a storage device.
  • the storage control program 304 provides a logical volume to the upper level apparatus 12.
  • a logical volume may be composed of a plurality of logical pages.
  • the page conversion table 901 holds page-by-page conversion information. Details of the page conversion table 901 will be described later (see FIG. 9).
  • the block conversion table 905 holds conversion information for each block. Details of the block conversion table 905 will be described later (see FIG. 9).
  • the logical-physical conversion program 305 specifies which physical page (physical address) of the FM 210 corresponds to the logical page (for example, LBA) of the logical volume specified by the read command / write command received from the higher level apparatus 102.
  • the logical / physical conversion program 305 refers to the page conversion table 901 and the block conversion table 905 and mutually converts the logical page (LBA) of the logical volume and the physical page (physical address) of the FM 210.
  • FIG. 4 shows a configuration example of the FM 210.
  • the FM 210 includes a plurality of page buffers 403a and 403b and a plurality of dies 402a and 402b.
  • the die 2402 has a plurality of physical blocks 404.
  • the physical block 404 has a plurality of physical pages 405. As described above, the physical page 405 is a data read / write unit.
  • the physical block 404 is a data erasing unit.
  • the write data issued from the FM controller 201 is temporarily stored in the page buffer 403. Then, the write data in the page buffer 403 is stored in the physical page 405.
  • the data stored in the physical page 405 of the FM 210 cannot be rewritten directly. Therefore, the FM controller 201 rewrites data as follows.
  • the FM controller 201 copies the data in the physical page 405 to be rewritten to the main memory 207 and rewrites the data on the main memory 207. Then, the FM controller 201 stores the rewritten data in another free physical page 405 and invalidates the physical page 405 to be rewritten.
  • the read command, the write command, and the erase command for the FM 210 may be issued by the FM I / F 209.
  • the physical page 405 may store one or more code words (CW) 406.
  • the CW 406 may include a data portion 407 and an error correcting code (ECC) 408 for protecting the data portion 407.
  • ECC 408 is information for correcting a bit error in the data portion 407 that may occur in data transfer between the FM controller 201 and the FM 210.
  • the amount of the data portion 407 may be “2 to the power of n” bytes (n is a positive integer).
  • the amount of ECC 408 may be ⁇ bytes ( ⁇ is a positive integer).
  • the amount of the CW 406 may be “2 to the power of n + ⁇ ” bytes.
  • the data portion 407 may be user data received from the host device 102, metadata used for control, or a combination thereof.
  • the capacity of the physical page 405 may be “2 KB + ⁇ ”, “4 KB + ⁇ ”, “8 KB + ⁇ ”, or the like.
  • the number of physical pages 405 included in the physical block 404 may be “128”, “256”, or the like.
  • the FM 210 may include a controller and DMA related to data transfer processing, and an assist circuit related to data read / write processing.
  • FIG. 5 shows an example of data storage in the FM of the Multiple Level Cell (MLC).
  • MLC Multiple Level Cell
  • 2-bit data can be stored in the same cell.
  • the left bit is called the Last Significant Bit (LSB)
  • the right bit is called the Most Significant Bit (MSB).
  • Reference numeral 601 indicates a state in which no electric charge is held in the floating gate of the cell (the state of the data erased cell).
  • the data-erased cell is assumed to be “11b”.
  • the arrows in FIG. 6 indicate the transition of the charge distribution state.
  • a predetermined charge is added to the cell in the state of 601 (the state of “11b”) as described above, and the state of 603 is first set. Then, a predetermined charge is added to bring the state of reference numeral 607 (the state of “01b”).
  • a reading voltage 610 having a size near the middle between the reference numerals 601 and 603 is applied. If a predetermined current flows when this read voltage 610 is applied, the LSB of this cell is “1b” (reference numeral 601). If a predetermined current does not flow, the LSB of this cell is “0b” ( 603).
  • a read voltage 613 having a magnitude near the middle between the reference numerals 605 and 606 is applied to determine whether or not a predetermined current flows.
  • a read voltage 611 having a size near the middle between the reference numerals 601 and 605 is then applied. If a predetermined current flows by applying the read voltage 611, the MSB of this cell is “1b”, and if the predetermined current does not flow, the MSB of this cell is “0b”.
  • the read voltage 612 When a predetermined current does not flow due to the application of the read voltage 613, the read voltage 612 having a size near the middle between the reference numerals 606 and 607 is then applied. If a predetermined current flows by applying the read voltage 612, the MSB of this cell is “0b”, and if the predetermined current does not flow, the MSB of this cell is “1b”.
  • FIG. 6 shows a configuration example of the FM 210 cell.
  • the FM 210 can write data in units of physical pages 405.
  • the potential of each cell tends to become unstable due to inter-cell interference.
  • the potential of each cell is more stable when data is stored in a plurality of physical pages 405.
  • inter-cell interference tends to be smaller when data is stored in all physical pages 405 in the physical block 404 than when data is stored in a small number of physical pages 405.
  • a physical page “1” is composed of LSB bit strings of cells (BitLine (BL) 0 to 2) on WordLine (WL) 0, and each physical page “9” on each WL0 is the same. It consists of the MSB bit string of the cells (BL0-2).
  • each cell (BL0) on WL0 is from when data is stored in physical page “1” (LSB on WL0) until data is stored on physical page “9” (MSB on WL0).
  • MSB on WL0 physical page “9”
  • the FMPKG 113-1 stores data in a batch on all the physical pages of the physical block (or the physical pages of a predetermined number or more of the physical blocks).
  • the unstable time in which only the LSB is written in the cell can be shortened.
  • the time for which a physical page (cell) where data is written and a physical page (cell) where data is not written is adjacent can also be shortened. That is, inter-cell interference can be suppressed.
  • the range of inter-cell interference is related to the physical distance between cells.
  • the range of inter-cell interference is described as being within the range of one physical block. That is, in the embodiment, description will be made assuming that inter-cell interference between different physical blocks is sufficiently small. However, even when inter-cell interference extends between different physical blocks, the contents of the embodiment can be realized by replacing the range of the physical block 404 described in the embodiment with the range of inter-cell interference.
  • FIG. 7 shows an example of processing for transferring data to the FM 210 in the FMPKG 113-1.
  • the FM controller 201 reserves the buffer block area 800 in the buffer memory 204.
  • the buffer block area 800 is an area for temporarily storing write data to the FM 210.
  • the buffer block area 800 may be composed of a plurality of buffer pages 801a to 801c.
  • the capacity of one buffer block area 800 may be the same as the capacity of one physical block 404. Further, the capacity of one buffer page 801 may be the same as the capacity of one physical page 405.
  • the number of buffer pages 801 constituting one buffer block area 800 may be the same as the number of physical pages 405 constituting one physical block 404.
  • the FM controller 201 stores the write data received from the host device 102 in the buffer page 801 of the buffer block area 800.
  • the FM controller 201 collects all the data in the buffer block area 800 in the FM 210 collectively. Transfer to physical block 404. That is, the data in the buffer block area 800 is stored together in the physical block 404 of the FM 210.
  • the unstable time in which only the LSB is written in the physical page 405 (cell) can be shortened.
  • the physical page 405 (cell) where data is written and the physical page 405 (cell) where data is not written are adjacent to each other. Can be shortened. That is, inter-cell interference can be suppressed.
  • the FM controller 201 may collectively transfer the data in the plurality of buffer block areas 800 to the plurality of physical blocks 404 in S13.
  • the FM controller 201 may collectively transfer the data for the capacity of the physical block 404 to the physical block 404 of the FM 210.
  • the FM controller 201 may designate the start address of the buffer block area 800 as the transfer source address and the start address of the physical block 404 as the transfer destination address.
  • an area corresponding to the buffer block area 800 may be referred to as a primary storage area, and an area corresponding to the physical block 404 may be referred to as a secondary storage area. That is, the primary storage area is an area in which write data is temporarily stored, and the secondary storage area is an area in which write data is finally stored.
  • FIG. 8 shows a configuration example of a conventional logical-physical conversion table.
  • the conventional logical-physical conversion table 505 holds correspondence information between a logical page 506 provided to a host device and a physical page 507 where data is actually stored. In the conventional logical-physical conversion table 505, the logical page 506 and the physical page 507 are associated one-to-one.
  • FIG. 9 shows a configuration example of the block conversion table 905 and the page conversion table 901.
  • the FMPKG 113-1 corresponds to the conventional logical-physical conversion table 505, the block conversion table 905 and the page conversion table 901. Have.
  • the page conversion table 901 holds page-by-page conversion information.
  • the page conversion table 901 has a correspondence relationship between a logical page number 902, a logical block number 903 that includes the logical page of the logical page number 902, and an offset value 904 that is the position of the logical page in the logical block. May be stored.
  • the block conversion table 905 holds conversion information for each block.
  • the block conversion table 905 may hold information indicating a correspondence relationship between the logical block number 906, the attribute 907, and the actual block address 908.
  • the attribute 907 is information indicating the frequency (update frequency) of a write command for the logical block with the logical block number 906.
  • the attribute 907 may be “HOT” if the logical block number 906 is an update frequency equal to or higher than a predetermined upper threshold, and the attribute 907 may be “COLD” if the update frequency is lower than a predetermined lower threshold.
  • the attribute 907 is not limited to two, HOT and COLD, and may take a plurality of different values depending on the update frequency.
  • the real block 908 is an address indicating a reference destination storage area of the logical block having the logical block number 906.
  • the real block 908 may be either the address of the buffer block area 800 (primary storage area) or the address of the physical block 404 (secondary storage area).
  • the real block 908 is the address of the buffer block area 800, it indicates that the data related to the logical block with the logical block number 906 has not been transferred to the FM 210.
  • the real block 908 is the address of the physical block 404, it indicates that the data related to the logical block with the logical block number 906 has been transferred to the FM 210.
  • the real block 908 and the physical block 404 may be associated with each other one to one, or may be associated with one to N (N is a positive integer of 2 or more).
  • the physical block 404 corresponding to the real block 908 may be fixed or changed. By making it possible to change the physical block 908 corresponding to the real block 908, it is possible to efficiently perform physical block failure, wear leveling processing, and resource utilization.
  • FIG. 10 shows an example of a flowchart of a write process in FMPKG 113-1.
  • the FM controller 201 determines whether or not the real block 908 related to the logical page 902 designated by the write command exists in the primary storage area. If this determination result is affirmative (YES), the process proceeds to S1006, and if negative (NO), the process proceeds to S1004.
  • S1004 If the determination result in S1003 is negative (NO), the FM controller 201 performs the following process to store the write data in the primary storage area. The FM controller 201 specifies the attribute (HOT or COLD) of the write data. Then, the process proceeds to S1005.
  • the FM controller 201 determines whether or not there is a real block 908 having an attribute 907 that matches the attribute of the write data specified in S1004. If the determination result is affirmative (YES), the FM controller 201 proceeds to S1007, and if negative (NO), the FM controller 201 proceeds to S1101.
  • the FM controller 201 identifies the storage location of the write data in the primary storage area. That is, the position of the offset 904 in the area corresponding to the real block 908 is specified. Then, the process proceeds to S1008.
  • the FM controller 201 stores the write data in the storage location in the specified primary storage area. Then, the process proceeds to S1009.
  • the FM controller 201 updates the page conversion table 901. At this time, the FM controller 201 may update a logical block pointer indicating the next storage destination, the number of valid data in the logical block, statistical information, and the like.
  • the statistical information may include information regarding the write frequency of the logical block or logical page. Then, the process proceeds to S1010.
  • the FM controller 201 determines whether or not the amount of write data stored in the primary storage area is equal to or greater than a predetermined threshold. This threshold may be greater than or equal to the capacity of one physical block 404. The FM controller 201 proceeds to S1201 if the determination result is affirmative (YES), and ends the process if the determination result is negative (NO).
  • the FM controller 201 executes batch transfer processing. That is, the write data for the capacity of one physical block 404 stored in the primary storage area is batch transferred to the physical block 404 of the FM 210. Details of this processing will be described later (see FIG. 12).
  • the FM controller 201 may delete the write data that has been batch transferred from the primary storage area. This increases the free capacity of the primary storage area. Then, this process ends.
  • the FM controller 201 may return a completion response to the write command to the upper apparatus 102 at any timing.
  • the FM controller 201 may return a completion response immediately after receiving the write data when increasing the latency with respect to the host apparatus 102.
  • the FM controller 201 may return a completion response after storing the write data in the FM 210 when reducing the risk of data loss due to power interruption or the like (in order to increase reliability).
  • the FM controller 201 may perform read-modify-write.
  • FIG. 11 shows a flowchart example of the block securing process. This process is the detail of S1101 of FIG.
  • the FM controller 201 identifies an unused logical block.
  • An unused logical block may be a logical block that is not associated with any real block.
  • the FM controller 201 may manage unused logical blocks in a FIFO format queue. Then, the process proceeds to S1103.
  • the FM controller 201 allocates a continuous area (buffer block area 800) on the primary storage area to the identified unused logical block. Then, the process proceeds to S1104.
  • the FM controller 201 updates the block conversion table 905. That is, in the block conversion table 905, the address of the assigned continuous area is associated with the identified logical block number 906 as a real block 908. Then, the process proceeds to S1105.
  • the FM controller 201 associates the attribute of the write data identified in S1004 in FIG. 10 (for example, HOT / COLD) as the attribute 907 with the identified logical block number 906 in the block conversion table 905. Thereafter, write data having the same attribute as the attribute 907 may be stored in the specified logical block.
  • the attribute of the write data identified in S1004 in FIG. 10 for example, HOT / COLD
  • write data having the same attribute as the attribute 907 may be stored in the specified logical block.
  • FIG. 12 shows a flowchart example of batch transfer processing. This process is the detail of S1201 of FIG.
  • the FM controller 201 selects a real block 908 (buffer block area 800) as a transfer source from the block conversion table 905.
  • the FM controller 201 may preferentially select the buffer block area 800 in which write data is stored in all the buffer pages 801.
  • the FM controller 201 may select the transfer source buffer block area 800 based on the attribute 907.
  • the real block 908 (buffer block area 800) corresponding to the attribute 907 (COLD attribute) with low write frequency may be preferentially selected. This is because the write data stored in the real block 908 (buffer block area 800) corresponding to the attribute 907 (HOT attribute) having a high write frequency has a high probability of hitting in S1003 in FIG. It is because I want to keep it.
  • the FM controller 201 determines whether or not a free physical block 404 exists in the secondary storage area. If the determination result is affirmative (YES), the FM controller 201 proceeds to S1204, and if negative (NO), the FM controller 201 proceeds to S1220.
  • the FM controller 201 selects a free physical block 404 as a transfer destination in the secondary storage area.
  • the FM controller 201 may select a free physical block 404 that conforms to the attribute 907 (HOT / COLD) corresponding to the real block 908 of the transfer source. Then, the process proceeds to S1205.
  • the FM controller 201 starts a process of batch-transferring all data stored in the transfer source buffer block area 800 to the transfer destination empty physical block 404. Then, the process proceeds to S1206.
  • the FM controller 201 determines whether processing having a higher priority than the batch transfer has occurred during the batch transfer. If the determination result is affirmative (YES), the FM controller 201 proceeds to S1207, and if negative (NO), the FM controller 201 proceeds to S1210.
  • the high priority process is, for example, a read process that requires resources occupied for transfer, or an update process of data being transferred.
  • the FM controller 201 may store the fact using a flag or the like and update the data after the transfer is completed. Alternatively, when the FM controller 201 detects update processing of data being transferred, the FM controller 201 may update the data in the buffer block area 800 and redo the batch transfer.
  • the FM controller 201 updates the block conversion table. That is, the real block 908 to be transferred is changed from the address of the transfer source buffer block area 800 to the address of the transfer destination physical block 404. Here, it is not necessary to update the page conversion table. This is because the offset 904 in the logical block of each logical page does not change even in the transfer destination physical block 404. Then, the process proceeds to S1212.
  • the transfer source address may be changed to the transfer destination address in units of blocks. That is, according to this embodiment, the number of table updates can be reduced.
  • FIG. 13 shows an example of a flowchart of processing for securing a free physical block 404 in the secondary storage area. This process is the detail of S1220 of FIG.
  • the FM controller 201 determines the attribute (HOT / COLD) of the transfer source data.
  • the FM controller 201 determines whether or not there is a free physical block having the attribute 907 that matches the attribute determined in S1302. The FM controller 201 ends the process if the determination result is affirmative (YES), and proceeds to S1304 if the determination result is negative (NO).
  • the FM controller 201 selects the physical block 404 that is the target of the reclamation process. As the physical block 404 subject to the reclamation process, the physical block 404 having the highest proportion of invalid data may be selected from the physical blocks 404 having the attribute 907 that matches the attribute determined in S1302. Then, the process proceeds to S1305.
  • the FM controller 201 updates predetermined management information for the erased physical block 404. Then, this process ends.
  • FIG. 14 shows an example of a flowchart of processing for saving data in the buffer memory 204 when the power is cut off.
  • the buffer memory 204 is composed of a volatile storage medium, it is necessary to transfer the data in the buffer memory 204 to the FM while power is being supplied from the battery 205 when the power is cut off.
  • the FM controller 201 determines whether data exists in the buffer block area 800 or not. If this determination result is affirmative (YES), the FM controller 201 proceeds to S1405, and if negative (NO), the FM controller 201 proceeds to S1409.
  • the FM controller 201 saves the metadata in the FM 210 and stops the operation.
  • the FM controller 201 may perform batch transfer to the FM 210 without distinguishing between write data and metadata.
  • the FM controller 201 uses the data in the buffer block area 800 so that the capacity of one physical block 404 is reached. Dummy data may be added. The dummy data is preferably random data. Random data is data in which bit values are arranged at random. This is because inter-cell interference tends to be smaller when random data is used than when data in which the same bit values are arranged. Then, the FM controller 201 may batch transfer the data with the dummy data added to the physical block 404 of the FM 210. Thereby, the inter-cell interference can be reduced as described above.
  • the FMPKG 113-2 may further include a non-volatile memory and save the data in the buffer block area 800 in the non-volatile memory in case of a highly urgent emergency such as a power failure.
  • the FMPKG 113-2 may prepare an emergency SLC FM in a part of the FM 210 and save the data in the buffer block area 800 in the FM of the SLC. This is because the SLC FM is faster and has less inter-cell interference than the MLC FM.
  • Example 2 shows an example in which the primary storage area (buffer block area) is a nonvolatile memory.
  • FIG. 15 shows a configuration example of the FMPKG 113-2 according to the second embodiment.
  • the FMPKG 113 has a nonvolatile memory 1501 for primary storage.
  • the nonvolatile memory 1501 has a buffer block area.
  • the FMPKG 113-2 may also include a DRAM (not shown).
  • the DRAM may store metadata that requires high-speed access.
  • the non-volatile memory 1501 may be capable of reading / writing data only in predetermined page units. Further, the nonvolatile memory 1501 may be capable of erasing data only in a predetermined block unit.
  • the non-volatile memory that constitutes the primary storage area may have less inter-cell interference than the FM that constitutes the secondary storage area. That is, regarding the write to the primary storage area, it may be unnecessary to consider inter-cell interference. Examples of the non-volatile memory that constitutes such a primary storage area are FM of SLC, Resistance Random Access Memory (ReRAM), Magnetorative Random Access Memory (MRAM), Phase Change Memory (such as PC) Memory.
  • the capacity of one page of the nonvolatile memory 1501 may be smaller than the capacity of one physical page 405 of the FM 210 constituting the secondary storage area.
  • the number of times that the nonvolatile memory 1501 can be written and erased (lifetime) may be higher than that of the FM 210.
  • the FM controller 201-2 may manage the buffer block area during batch transfer in preparation for a case where a power interruption occurs during batch transfer from the primary storage area to the secondary storage area. When a power failure occurs during batch transfer, the FM controller 201-2 may erase data transferred halfway in the physical block 404 of the secondary storage area after recovery.
  • FIG. 16 shows an example of a flowchart of a write process of the FMPKG 113-2 according to the second embodiment.
  • the FM controller 201-2 determines whether or not the real block 908 relating to the logical page 902 designated by the write command exists in the primary storage area. If this determination result is affirmative (YES), the process proceeds to S1604, and if negative (NO), the process proceeds to S1605.
  • the FM controller 201-2 invalidates the buffer page corresponding to the real block 908 of the primary storage area. Invalidation is a process of canceling the correspondence between the logical page 902 and the buffer block area and offset 804 in the page conversion table 901 and decrementing the number of valid pages in the buffer block area.
  • the FM controller 201-2 stores the newly received write data in another buffer block area of the primary storage area. Then, the process proceeds to S1605.
  • the FM controller 201 performs the same processing as that after S1004 in FIG. 10, and stores the write command in the primary storage area.
  • the timing for invalidating the buffer page in the primary storage area may be when the page conversion table 901 and the block conversion table 905 are updated after storing the write data in the primary storage area.
  • FIG. 17 shows an example of a flowchart of primary storage reclamation processing.
  • Example 2 as shown in FIG. 16, invalid pages and fragmentation may occur in the primary storage area. Therefore, the FM controller 201-2 may perform the reclamation process for the primary storage area. The reclamation process may be performed when the free space in the primary storage area is insufficient.
  • the FM controller 201-2 determines whether or not the free space in the primary storage area is less than a predetermined threshold value. If this determination result is affirmative (YES), the process proceeds to S1703, and if negative (NO), this process ends.
  • This threshold value may be set to be larger than the capacity capable of storing the amount of write data that can be generated in bursts.
  • the FM controller 201-2 determines whether or not there is a buffer block area in which the number of invalid pages is equal to or greater than a predetermined threshold (number, ratio, etc.) in the primary storage area. If this determination result is affirmative (YES), the process proceeds to S1704, and if negative (NO), the process proceeds to S1707.
  • a predetermined threshold number, ratio, etc.
  • S1704 to S1706 If the determination result in S1703 is affirmative (YES), that is, if there is a buffer block area whose number of invalid pages is equal to or greater than a predetermined threshold, the FM controller 201 stores valid data in the buffer block area. Copy to another buffer block area and erase all data in the copy source buffer block area. Then, this process ends.
  • the FM controller 201-2 determines from the old buffer block area data. In order, batch transfer to secondary storage. Then, this process ends.
  • the reclamation process in the secondary storage area may be performed in the same manner as in the first embodiment.
  • the reclamation process can be performed to increase the free area while leaving the write data in the primary storage area as long as possible. If the ratio of invalid data is less than the threshold value, the free area does not increase much even if reclamation processing is performed, so the data in the primary storage area is transferred to the secondary storage area. As a result, the free space in the primary storage area can be increased.
  • the FM controller 201-2 may transfer the data in the primary storage area including valid data to the secondary storage area after reclaiming the primary storage area. Thereby, since the transfer data includes a lot of valid data (not much invalid data), the transfer efficiency of the valid data from the primary storage area to the secondary storage area is improved. In addition, the load of reclamation processing in the secondary storage area is reduced.
  • Example 3 shows an example in which both the primary storage area and the secondary storage area are provided in the FM 210.
  • the primary storage area may be an area having a smaller inter-cell interference and a smaller light unit than the secondary storage area.
  • the primary storage area may be configured by the SLC FM, and the secondary storage area may be configured by the MLC FM.
  • the MLC FM 210 the primary storage area may be configured using only the LSB, and the secondary storage area may be configured using the LSB and the MSB.
  • an area configured using only the LSB or the SLC is referred to as an “SLC area”
  • an area configured using both the LSB and the MSB or the MLC is referred to as an “MLC area”.
  • FIG. 18 shows a configuration example of the FMPKG 113-3 according to the third embodiment.
  • FM 210 has an SLC region 1801 and an MLC region 1802 inside.
  • the FMPKG 113 uses the SLC area 1801 as a primary storage area and uses the MLC area 1802 as a secondary storage area.
  • the FMPKG 113-3 may batch transfer data from the SLC area 1801 to the MLC area 1802 via the FM I / F 209.
  • the FM 210 may include a batch transfer circuit, and may internally transfer data from the SLC area 1801 to the MLC area 1802 via the circuit.
  • the FM I / F 209 may issue a transfer command that designates a transfer source physical block and a transfer destination physical block to the FM.
  • the FM I / F 209 may designate a plurality of physical blocks in the SLC area 1801 as a transfer source.
  • the FM I / F 209 may receive a transfer completion notification from the FM.
  • the batch transfer circuit may be provided inside the FM chip, or may be provided outside the FM chip and shared by a plurality of FM chips.
  • FIG. 19 shows a configuration example of the block management table 1901 and the area management table 1905.
  • the block management table 1901 holds information regarding each physical block.
  • the block management table 1901 may have a block number 1902, a degree of deterioration 1903, and a type 1904 as item values (column values).
  • Block number 1902 is a physical block identification number.
  • Deterioration degree 1903 indicates the degree of deterioration (life) of the physical block with block number 1902. As described above, the data retention performance of the physical block deteriorates as the number of times of writing (frequency) / number of times of erasing (frequency) increases. For example, a physical block may not have sufficient data when the degree of deterioration reaches 100%, and may have reached the end of its life. The degree of degradation 1903 may be calculated based on the read error rate of data stored in the physical block.
  • the type 1904 indicates whether the physical block with the block number 1902 is the SLC area 1801 or the MLC area 1801.
  • the area management table 1905 holds information regarding the SLC area 1801 and the MLC area 1802.
  • the area management table 1905 may have a type 1906, a block count 1907, and a writable count 1908 as item values (column values).
  • the type 1906 indicates whether the record holds information related to the SLC area 1801 or the MLC area 1802.
  • the number of blocks 1907 indicates the number of physical blocks constituting the type 1906 area. That is, the block count 1907 indicates the capacity of the area indicated by the type 1906.
  • the writable number 1908 indicates the number of times (frequency) that can be written in the area indicated by the type 1906.
  • the writable number 1908 may be calculated based on the deterioration level 1903 of each physical block 404 constituting the type 1906 area.
  • FIG. 20 shows a configuration example of the SLC queue 2001 and the MLC queue 2002.
  • the FMPKG 113-3 may manage physical blocks constituting the SLC area 1801 using the SLC queue 2001.
  • the FMPKG 113-3 may manage the physical blocks constituting the MLC area 1802 using the MLC queue 2002.
  • the FMPKG 113-3 may have an empty physical block queue, an invalid physical block queue, and an effective physical block queue for each of the SLC area 1801 and the MLC area 1802.
  • the number of free physical blocks may be linked to the free physical block queue.
  • An empty physical block is an erased physical block.
  • the queue of free physical blocks may be sorted in the order of physical blocks with high (or low) degradation. This is for efficient wear leveling.
  • the invalid physical block number may be linked to the invalid physical block number.
  • An invalid physical block is an erasable physical block.
  • the valid physical block number may be linked to the valid physical block number.
  • An effective physical block is a physical block including data (valid page) that cannot be erased.
  • the valid physical block queue may be sorted in the order of physical blocks with the largest (or few) invalid physical pages. This is to perform reclamation processing efficiently.
  • the FMPKG 113-3 may have these queues for each FM chip drive unit (for example, for each bus). This is to facilitate acquisition of a block set for obtaining the multiplicity of FM chips.
  • FIG. 21 shows a flowchart example of batch transfer processing according to the third embodiment.
  • the FMPKG 113-3 may perform batch transfer from the primary storage area to the secondary storage area when the primary storage area is insufficient. At this time, the FMPKG 113-3 may perform a reclamation process on the primary storage area.
  • the FM controller 201-3 selects a physical block (corresponding to a buffer block area) as a transfer source from the primary storage area.
  • the FM controller 201-3 may preferentially select the physical block with the longest elapsed time after writing.
  • the FM controller 201-3 may preferentially select a physical block having a minimum ratio of invalid pages (maximum ratio of valid pages). This is because such a physical block is unlikely to be a target of reclamation processing in the primary storage area, and the transfer efficiency of valid data is high.
  • the FM controller 201-3 may select a physical block as a transfer source by combining the plurality of conditions. Then, the process proceeds to S2103.
  • the FM controller 201-3 selects a free physical block as a transfer destination from the secondary storage area. At this time, if a free physical block cannot be secured in the secondary storage area, or the number of free physical blocks in the secondary storage area is equal to or less than the threshold value, the FM controller 201-3 performs a reclamation process on the secondary storage area. It's okay. Then, the process proceeds to S2104.
  • the FM controller 201-3 instructs batch transfer from the primary storage area to the secondary storage area. This batch transfer may be performed inside the FM as described in FIG. In that case, the FM I / F 209 may issue a transfer instruction to the FM. When issuing a command having a higher priority than the transfer processing to the FM during batch transfer, the FM I / F 209 issues a batch transfer interruption command to the FM as in the first embodiment. Also good. Then, the process proceeds to S2105.
  • the FM controller 201-3 may erase the data transferred halfway in the physical block of the secondary storage area after recovery, as in the second embodiment.
  • FIG. 22 shows a flowchart example of processing for adjusting the number of physical blocks between the SLC area 1801 and the MLC area 1802.
  • the FM controller 201-3 acquires information on each area from the area management table 1907.
  • the FM controller 201-3 analyzes the deterioration status of each area based on the acquired information and determines the number of physical blocks in each area. For example, the FM controller 201-3 may determine the number of physical blocks in each area so that the writable number 1908 in each area becomes equal. Also, if the same number of physical blocks is allocated, the capacity of the SLC area 1801 becomes smaller than the capacity of the MLC area 1802, so that the FM controller 201-3 determines that each of the SLC area 1801 and the MLC area 1802 has a predetermined capacity. As such, the number of physical blocks in each area may be determined.
  • the capacity may be determined so that the capacity of the logical volume provided to the higher level apparatus 108 can be secured. Further, the capacity may be determined in consideration of a spare area for reclamation processing. These may be determined based on requirements such as the efficiency of the reclamation process.
  • the FM controller 201-3 determines whether or not the SLC area 1801 needs to be expanded. If the determination result is affirmative (YES), the FM controller 201-3 proceeds to S2205, and if negative (NO), the FM controller 201-3 proceeds to S2204.
  • the FM controller 201-3 selects a physical block to be changed from the MLC area 1802.
  • the FM controller 201-3 may select a physical block having the lowest degree of degradation (or less than the predetermined threshold) from the MLC area 1802.
  • the FM controller 201 may consider the movement-source physical block so that the number of physical blocks in the SLC area is equal for each drive unit of the FM chip in consideration of the operation multiplicity of the FM chip. Then, the process proceeds to S2206.
  • the FM controller 201-3 changes the selected physical block to a mode in which it is used as the SLC area 1801. Then, the process proceeds to S2208.
  • the FM controller 201-3 adds the number of the selected block to the SLC queue 2001.
  • S2204 If the determination result in S2203 is negative (NO), the FM controller 201-3 determines whether or not the MLC region 1802 needs to be expanded. If this determination result is affirmative (YES), the FM controller 201-3 proceeds to S ⁇ b> 2210, and if negative (NO), the FM controller 201-3 ends this processing.
  • the invention according to the embodiment can be expressed as follows.
  • (Expression 1) At least one memory including flash memory and a controller;
  • the flash memory includes a plurality of physical blocks, the physical block is a data erasing unit, the physical block includes a plurality of physical pages, the physical page is a data write unit,
  • the controller is The received write data is stored in a primary storage area which is a partial storage area of the memory, If the amount of data accumulated in the primary storage area is greater than or equal to the capacity of one physical block of the flash memory, at least from the primary storage area to a secondary storage area that is a partial storage area of the flash memory A flash memory package that batch transfers data for the capacity of one physical block.
  • Page management information including information representing the relationship between the position of the logical page and the logical block;
  • Block management information including information representing the relationship between the logical block and the storage destination area of the data,
  • the flash memory package according to expression 1 wherein an area where data is stored in the block management information is either a primary storage area or a secondary storage area.
  • compression 3) 3.
  • the block management information further includes information representing at least the frequency of write requests for the logical block; 4.
  • the flash memory package according to expression 3 wherein the controller preferentially transfers data from a primary storage area related to a logical block having a relatively low frequency of write requests to a secondary storage area preferentially.
  • the flash memory package according to expression 4 wherein the controller selects a secondary storage area having a relatively low erasure frequency as the batch transfer destination as the write request frequency is relatively high.
  • Example 6 The flash according to any one of expressions 1 to 6, wherein, when the controller receives an I / O request having a higher priority than the batch transfer during the batch transfer, the controller temporarily interrupts the batch transfer. Memory package.
  • the primary storage area is a NAND flash memory that stores data as a single level cell (SLC), and includes a plurality of physical blocks, and the physical blocks include a plurality of physical pages,
  • the primary storage area is a partial storage area of the flash memory;
  • the primary storage area is an area that uses a physical block in an SLC mode,
  • the controller is In the primary storage area, change the physical block whose erase frequency is equal to or higher than the first threshold to the secondary storage area used in the MLC mode, In the secondary storage area, a physical block whose erase frequency is less than the second threshold is changed to a primary storage area used in the SLC mode, and the first threshold is changed to an expression 11 larger than the second threshold.
  • the described flash memory package In the primary storage area, change the physical block whose erase frequency is equal to or higher than the first threshold to the secondary storage area used in the MLC mode, In the secondary storage area, a physical block whose erase frequency is less than the second threshold is changed to a primary storage area used in the SLC mode, and the first threshold is changed to an expression 11 larger than the second threshold.
  • a storage system including a storage controller and a flash memory package,
  • the flash memory package has at least one memory including a flash memory, and a flash memory controller,
  • the flash memory includes a plurality of physical blocks, the physical block is a data erasing unit, the physical block includes a plurality of physical pages, the physical page is a data write unit,
  • the flash memory controller Write data received from the storage controller is stored in a primary storage area which is a partial storage area of the memory, If the amount of data accumulated in the primary storage area is greater than or equal to the capacity of one physical block of the flash memory, at least from the primary storage area to a secondary storage area that is a partial storage area of the flash memory
  • a storage system including a flash memory package that collectively transfers data for the capacity of one physical block.
  • Storage system 102 Storage controller 113: Flash memory package 201: Flash memory controller 204: Buffer memory 210: Flash memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

フラッシュメモリパッケージは、フラッシュメモリを含んだ少なくとも1つのメモリと、コントローラとを有する。コントローラは、受領したライトデータを、メモリの一部の記憶領域である一次記憶域に格納し、一次記憶域に蓄積されたデータ量がフラッシュメモリの1つの物理ブロックの容量以上である場合、一次記憶域から、フラッシュメモリの一部の記憶領域である二次記憶域へ、少なくとも1つの物理ブロックの容量分のデータを一括転送する。

Description

フラッシュメモリパッケージ、及び、フラッシュメモリパッケージを含むストレージシステム
 本発明は、概して、記憶制御に関し、例えば、フラッシュメモリパッケージ(FMPKG)の技術に関する。
 NAND型フラッシュメモリ(FM)を記憶媒体とするFMPKGについて説明する。FMの記憶領域は複数の物理ブロックを含む。物理ブロックは複数の物理ページを含む。物理ブロックは、データの消去単位である。物理ページは、データのリード/ライト単位である。FMの物理ページに格納されているデータは、直接書き換えることができない。そのため、FMPKGは、次のようにデータを書き換える。
 FMPKGは、書き換え対象の物理ページ内のデータを、Dynamic Random Access Memory(DRAM)にコピーし、そのDRAM上でデータを書き換える。そして、FMPKGは、その書き換えたデータを別の空き物理ページに格納し、書き換え対象の物理ページを無効化する。
 FMPKGは、無効化された物理ページを再利用可能な状態にするために、以下の処理を行う。物理ブロック内の有効データを全て空き物理ページにコピーする。そして、その物理ブロック内のデータを全消去する。これにより、その物理ブロック内の物理ページは、空き物理ページとなり、再利用可能となる。この処理を、リクラメーション処理という。
 FMのセルのデータ保持性能は、その特性上、書き込み回数・消去回数の増加に伴い、劣化する傾向にある。データ保持性能が大きく劣化すると、その劣化したセルを含む物理ブロックは、使用できなくなる(寿命が尽きる)。したがって、FMPKGは、特定の物理ブロックの書き込み回数・消去回数が突出しないように、各物理ブロックの書き込み回数・消去回数を平準化する。この処理を、ウェアレベリング処理という。
 FMのセルに保持されたデータの読み出しエラー率は、時間経過に伴って増加する傾向にある。このようなエラーを、リテンションエラーという。そのため、FMPKGは、書き込まれてから所定時間経過後の物理ページのデータを、別の物理ページにコピーする。この処理を、リフレッシュ処理という。
 近年、FMのビット単位当たりのコストを低減するために、微細化・多値化・三次元化が行われている。それに伴い、FM内部において、隣接するセルの浮遊ゲート同士の干渉(「セル間干渉」という)が顕在化している(特許文献1、2)。
US7221589 US2007/0279989
 セル間干渉は、FMのセルに保持されたデータの読み出しエラー率を増加させる傾向にある。そこで、本発明の目的は、フラッシュメモリパッケージにおけるセル間干渉を低減することにある。
 実施例に係るフラッシュメモリパッケージは、フラッシュメモリを含んだ少なくとも1つのメモリと、コントローラと、を有する。
 フラッシュメモリは複数の物理ブロックを含み、その物理ブロックはデータの消去単位であり、その物理ブロックは複数の物理ページを含み、その物理ページはデータのライト単位である。
 コントローラは、受領したライトデータを、メモリの一部の記憶領域である一次記憶域に格納し、一次記憶域に蓄積されたデータ量がフラッシュメモリの1つの物理ブロックの容量以上である場合、一次記憶域から、フラッシュメモリの一部の記憶領域である二次記憶域へ、少なくとも1つの物理ブロックの容量分のデータを一括転送する。
 本発明によれば、フラッシュメモリパッケージにおけるセル間干渉を低減することができる。
計算機システムの構成例を示す。 実施例1に係るFMPKGの構成例を示す。 メモリが保持するプログラム及びデータの例を示す。 FMの構成例を示す。 Multiple Level Cell(MLC)のFMにおけるデータの格納例を示す。 FMのセルの構成例を示す。 FMPKGにおいてデータをFMに転送する処理例を示す。 従来の論物変換テーブルの構成例を示す。 ブロック変換テーブル及びページ変換テーブルの構成例を示す。 FMPKGにおけるライト処理のフローチャート例を示す。 一次記憶域の領域確保処理のフローチャート例を示す。 一括転送処理のフローチャート例を示す。 二次記憶域の空きブロック確保処理のフローチャート例を示す。 バッファメモリのデータの退避処理のフローチャート例を示す。 実施例2に係るFMPKGの構成例を示す。 FMPKGにおけるライト処理のフローチャート例を示す。 一次記憶域のリクラメーション処理のフローチャート例を示す。 実施例3に係るFMPKGの構成例を示す。 ブロック管理テーブル及び領域管理テーブルの構成例を示す。 Single Level Cell(SLC)キュー及びMLCキューの構成例を示す。 一括転送処理のフローチャート例を示す。 MLC領域及びSLC領域の調整処理のフローチャート例を示す。
 以下、一実施例を説明する。以下の説明では、「xxxテーブル」又は「xxxキュー」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」又は「xxxキュー」を「xxx情報」と呼ぶことができる。
 また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCentral Processing Unit(CPU))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び通信I/Fデバイスのうちの少なくとも1つを用いながら行うため、処理の主語が、プロセッサ、そのプロセッサを有する装置とされてもよい。プロセッサが行う処理の一部又は全部が、ハードウェア回路で行われてもよい。コンピュータプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア(例えば可搬型の記憶メディア)であってもよい。
 また、以下の説明では、計算機システムに含まれる少なくとも1つの装置を管理する1以上の計算機の集合を「管理システム」と呼ぶことがある。管理計算機が表示用情報を表示する場合は管理計算機が管理システムでよい。また、管理計算機と表示用計算機の組み合わせも管理システムでよい。また、管理処理の高速化や高信頼化のために複数の計算機で管理計算機と同等の処理を実現してもよく、この場合はそれら複数の計算機(表示を表示用計算機が行う場合は表示用計算機も含んでよい)が管理システムでよい。本実施例では、管理計算機が管理システムである。また、管理計算機が情報を表示するとは、管理計算機が有する表示デバイスに情報を表示することであってもよいし、管理計算機(例えばサーバ)に接続された表示用計算機(例えばクライアント)に表示用情報を送信することであってもよい。後者の場合、表示用計算機が有する表示デバイスに表示用情報が表す情報が表示用計算機によって表示される。
 また、以下の説明では、同種の要素を区別して説明する場合には、「aaa113a」、「aaa113b」、「aaa201―1」、「aaa201―2」のように、参照符号を使用し、同種の要素を区別しないで説明する場合には、「aaa113」、「aaa201」のように参照符号のうちの共通番号のみを使用することがある。
 図1は、実施例1に係る計算機システムの構成例を示す。
 計算機システムは、ストレージシステム101と、1つ以上のホスト計算機103a、103bと、管理端末104とを有してよい。ホスト計算機103a、103bは、ネットワークの例であるSAN(Storage Area Network)105を介して、ストレージシステム101と、双方向通信可能に接続されている。
 ストレージシステム101は、1つ以上のストレージコントローラ102と、1つ以上のストレージ装置112とを有する。ストレージ装置112は、複数のFMPKG113a~113eを含んでよい。FMPKG113は、複数のFMチップを含む不揮発性の記憶デバイスである。FMPKG113の詳細は後述する(図2参照)。
 ストレージコントローラ102は、CPU108、メモリ109、複数のホストI/F107、複数のストレージI/F111、保守I/F106を有してよい。これらの要素は、内部バス110を介して、双方向通信可能に接続されてよい。
 メモリ109は、ストレージシステム101の各種機能を実現するためのプログラム及びデータを保持する。メモリ109は、リードデータ・ライトデータを一時的に保持するためのキャッシュ領域を有してもよい。
 CPU108は、メモリ109からプログラム及びデータを読み出して実行することにより、ストレージシステム101の各種機能を実現する。
 ホストI/F107は、ストレージコントローラ102がホスト計算機103と通信するためのI/Fである。
 保守I/F106は、ストレージコントローラ102が管理端末104と通信するためのI/Fである。管理者は、管理端末104からストレージコントローラ102の管理及びメンテナンス等を行ってよい。
 計算機システムは、必ずしもこれら全部の構成要素を有する必要は無い。例えば、管理端末104を有さない場合、管理者は、ホスト計算機103からストレージコントローラ102の管理及びメンテナンス等を行ってよい。ストレージコントローラ102は、必ずしもこれら全部の構成要素を有する必要は無い。計算機システムは、図1のようにホスト計算機103とFMPKG113とがストレージコントローラ102を介して接続する構成に代えて、ホスト計算機103とFMPKG113とが直接接続する構成であってもよい。
 図2は、FMPKG113ー1の構成例を示す。
 FMPKG113ー1は、FMコントローラ201と、1つ以上のFM210a~210hとを有する。
 FMコントローラ201は、ストレージI/F202、バッファメモリ204、バッテリ205、CPU206、メインメモリ207、FM I/F209を有してよい。これらの構成要素は、内部バス203を介して、双方向通信可能に接続されてよい。
 ストレージI/F202は、FMコントローラ201が上位装置102と通信するためのI/Fである。上位装置102の例は、ストレージコントローラ102である。ストレージI/F202の例は、Serial ATA(SATA)、Serial Attached SCSI(SAS)、Fibre Channel(FC)、又は、PCI-Expressに関するI/Fである。
 FM I/F209は、FMコントローラ201がFM210とデータを送受信するためのI/Fである。
 メインメモリ207は、FMPKG113ー1の各種機能を実現するためのプログラム及びデータを保持する。メインメモリ207が保持するプログラム及びデータの例は後述する(図3参照)。
 バッファメモリ204は、上位装置102から送信されたライトデータを一時的に保持する。バッファメモリ204は、FM210から読み出されたリードデータを一時的に保持してもよい。なお、バッファメモリ204は、上位装置104に対する応答性能を高めるためにライトデータ及びリードデータをキャッシュする、キャッシュメモリとしての役割も果たして良い。バッファメモリ204は、メインメモリ207に格納しきれないような大容量のテーブルを保持してもよい。
 メインメモリ207及びバッファメモリ204は、FM210よりもアクセス速度が高速な(レイテンシが小さい)揮発性記憶媒体で構成されてよい。メインメモリ207及びバッファメモリ204の例は、SRAM、DRAMである。
 CPU206は、メインメモリ207からプログラム及びデータを読み出して実行することにより、FMPKG113ー1の各種機能を実現する。CPU206は、上位装置102からライトコマンドを受領すると、そのライトコマンドに係るライトデータを、FM210に格納してよい。CPU206は、上位装置102からリードコマンドを受領すると、そのリードコマンドに係るリードデータをFM210から読み出して、その読み出したリードデータを上位装置102へ転送してよい。CPU206は、FM210の使用状況に応じて、リクラメーション処理やウェアレベリング処理を行ってよい。実施例におけるFMコントローラ201を主体とする動作は、CPU206が他の構成要素と連携して行う処理であってよい。
 バッテリ205は、非常の電源断が発生した時などに、FMコントローラ201の各構成要素に電力を供給する。揮発性記憶媒体で構成されているメインメモリ207及びバッファメモリ204に保持されているデータが、非常の電源断によって消滅してしまうことを防止するためである。バッテリ205は、キャパシタと呼ばれてもよい。
 アシスト回路208は、特定のデータ処理を、CPU206に代わって行う。アシスト回路208の例は、データ圧縮回路、暗号化回路、ハッシュ計算回路、符号計算回路などである。本実施例では、アシスト回路208を用いずに説明するが、本実施例に係る機能の一部をアシスト回路208が行ってもよい。アシスト回路208の機能は、専用回路として実現されてもよいし、CPU206で実行されるプログラムとして実現されてもよい。
 FMコントローラ201は、必ずしもこれら全部の構成要素を有する必要は無い。メインメモリ207とバッファメモリ204は、1つの記憶デバイスであってもよい。別の実施例で説明するように、メインメモリ207又はバッファメモリ204は、不揮発性記憶媒体で構成されてもよい。
 図3は、メモリ207が保持するプログラム及びデータの例を示す。
 メモリ207は、OS(Operating System)301、FM制御プログラム304、転送制御プログラム303、入出力制御プログラム302、論物変換プログラム305、ページ変換テーブル901、ブロック変換テーブル905を有する。
 OS301は、CPU206が各プログラムを実行する際の基本処理(スケジューリング、資源管理等)を行う。
 I/F制御プログラム302は、ストレージI/F202、FM I/F209を制御する。
 FM制御プログラム303は、FMPKG113ー1の有する構成要素全体を制御し、FMコントローラ201の有する各種機能を実現する。実施例におけるFMコントローラ201を主体とする動作は、その動作主体を、FM制御プログラム303、又は、FM制御プログラム303を実行するCPU206、としてもよい。
 ストレージ制御プログラム304は、FMPKG113ー1がストレージデバイスとして動作するための機能を実現する。例えば、ストレージ制御プログラム304は、上位装置12へ論理ボリュームを提供する。論理ボリュームは、複数の論理ページから構成されてもよい。
 ページ変換テーブル901は、ページ単位の変換情報を保持する。ページ変換テーブル901の詳細は後述する(図9参照)。
 ブロック変換テーブル905は、ブロック単位の変換情報を保持する。ブロック変換テーブル905の詳細は後述する(図9参照)。
 論物変換プログラム305は、上位装置102から受領したリードコマンド/ライトコマンドが指定する論理ボリュームの論理ページ(例えばLBA)が、FM210の何れの物理ページ(物理アドレス)に対応するかを特定する。論物変換プログラム305は、ページ変換テーブル901及びブロック変換テーブル905を参照し、論理ボリュームの論理ページ(LBA)と、FM210の物理ページ(物理アドレス)とを相互変換する。
 図4は、FM210の構成例を示す。
 FMバス401には、1つ以上のFM210が接続されている。FM210は、内部に、複数のページバッファ403a、403bと、複数のダイ402a、402bと、を有する。ダイ2402は、複数の物理ブロック404を有する。物理ブロック404は、複数の物理ページ405を有する。上記の通り、物理ページ405は、データのリード/ライト単位である。物理ブロック404は、データの消去単位である。
 FMコントローラ201から発行されたライトデータは、いったんページバッファ403に格納される。それから、ページバッファ403のライトデータが、物理ページ405に格納される。
 FM210の物理ページ405に格納されているデータは、直接書き換えることができない。そのため、FMコントローラ201は、次のようにデータを書き換える。FMコントローラ201は、書き換え対象の物理ページ405内のデータを、メインメモリ207にコピーし、そのメインメモリ207上でデータを書き換える。そして、FMコントローラ201は、その書き換えたデータを別の空き物理ページ405に格納し、書き換え対象の物理ページ405を無効化する。FM210に対するリードコマンド、ライトコマンド、及び、消去コマンドは、FM I/F209が発行してもよい。
 物理ページ405には、1つ以上のCode Word(CW)406が格納されてよい。CW406は、データ部分407と、そのデータ部分407を保護するためのError Correcting Code(ECC)408と、を含んでよい。ECC408は、FMコントローラ201とFM210との間のデータ転送で発生し得る、データ部分407のビットエラーを訂正するための情報である。
 データ部分407の量は、「2のn乗」バイト(nは正の整数)であってよい。ECC408の量は、αバイト(αは正の整数)であってよい。このとき、CW406の量は、「2のn乗+α」バイトであってよい。データ部分407は、上位装置102から受領したユーザデータ、制御に用いるメタデータ、又は、それらの組み合わせであってよい。
 物理ページ405の容量は、「2KB+α」、「4KB+α」又は「8KB+α」などであってもよい。物理ブロック404に含まれる物理ページ405の数は、「128個」、「256個」などであってもよい。
 FM210は、データ転送処理に関連するコントローラ及びDMAや、データのリード/ライト処理に関連するアシスト回路を有してもよい。
 図5は、Multiple Level Cell(MLC)のFMにおけるデータの格納例を示す。
 MLCのFMにデータを格納する場合、例えば、同一セルに2ビットのデータを格納できる。この同一セルの2ビット(”11b”)の、左側のビットをLeast Significant Bit(LSB)、右側のビットをMost Significant Bit(MSB)という。
 符号601は、セルの浮遊ゲートに電荷が保持されていない状態(データ消去済みのセルの状態)を示す。データ消去済みのセルを”11b”とする。図6の矢印は、電荷分布の状態の遷移を示す。
 セルのデータを”10b”とする場合、符号601の状態(”11b”の状態)のセルに所定の電荷を加え、符号605の状態にする。
 セルのデータを”00d”とする場合、符号601の状態(”11b”の状態)のセルに所定の電荷を加え、まず符号603の状態にする。それから、少量の電荷を加え、符号606の状態(”00b”の状態)にする。
 セルのデータを”01b”とする場合、上記同様、符号601の状態(”11b”の状態)のセルに所定の電荷を加え、まず符号603の状態にする。それから、所定の電荷を加え、符号607の状態(”01b”の状態)にする。
 このように、MLCのFMにデータを格納する場合は、2段階の処理が必要となる場合がある。
 次に、セルのLSBを読み出す方法について説明する。
 セルのLSBを読み出す場合、符号601と符号603との中間付近の大きさの読み取り電圧610を印加する。この読み取り電圧610を印加したとき、所定の電流が流れるならば、このセルのLSBは”1b”(符号601)であり、所定の電流が流れないならば、このセルのLSBは”0b”(符号603)であると判別できる。
 次に、セルのMSBを読み出す方法について説明する。
 セルのMSBを読み出す場合、まず、符号605と符号606との中間付近の大きさの読み取り電圧613を印加し、所定の電流が流れるか否かを判定する。
 読み取り電圧613の印加により所定の電流が流れる場合、次に、符号601と符号605との中間付近の大きさの読み取り電圧611を印加する。この読み取り電圧611の印加により、所定の電流が流れるならば、このセルのMSBは”1b”であり、所定の電流が流れないならば、このセルのMSBは”0b”である。
 読み取り電圧613の印加により所定の電流が流れない場合、次に、符号606と符号607との中間付近の大きさの読み取り電圧612を印加する。この読み取り電圧612の印加により、所定の電流が流れるならば、このセルのMSBは”0b”であり、所定の電流が流れないならば、このセルのMSBは”1b”である。
 このように、MLCのFMからMSBを読み出す場合は、2段階の処理が必要となる。
 図6は、FM210のセルの構成例を示す。
 FM210は、物理ページ405の単位でデータをライト可能である。1つの物理ページ405にのみデータが格納されている場合、セル間干渉により、各セルの電位が不安定になりやすい。複数の物理ページ405にデータが格納されている方が、各セルの電位は安定しやすい。例えば、物理ブロック404内の全ての物理ページ405にデータが格納されている方が、少数の物理ページ405にデータが格納されている場合よりも、セル間干渉は小さくなりやすい。
 図6において、物理ページ「1」は、WordLine(WL)0上の各セル(BitLine(BL)0~2)のLSBのビット列で構成されており、物理ページ「9」、同じWL0上の各セル(BL0~2)のMSBのビット列で構成されている。
 物理ページ「1」、「2」、「3」のように、物理ページの番号順にデータを格納する場合について述べる。この場合、物理ページ「1」(WL0上のLSB)にデータが格納されてから、物理ページ「9」(WL0上のMSB)にデータが格納されるまでの間、WL0上の各セル(BL0~2)には、LSBのみが書き込まれている状態となる。この状態は、MSBにも書き込まれている状態と比較して、セルの電位が不安定となり、セル間干渉も大きくなりやすい。
 そこで、実施例に係るFMPKG113ー1は、物理ブロックの全ての物理ページ(又は、物理ブロックの所定数以上の物理ページ)に、一括でデータを格納する。これにより、セルにLSBのみが書き込まれている不安定な時間を、短縮することができる。また、データの書き込まれている物理ページ(セル)と、データの書き込まれていない物理ページ(セル)とが隣接している時間も、短縮することができる。すなわち、セル間干渉を抑制することができる。
 セル間干渉の範囲は、セル間の物理的な距離に関係する。実施例では、セル間干渉の範囲を、1つの物理ブロックの範囲内として説明する。すなわち、実施例では、異なる物理ブロック間におけるセル間干渉は、十分小さいとして説明する。しかし、セル間干渉が異なる物理ブロック間にも及ぶ場合であっても、実施例で述べる物理ブロック404の範囲を、セル間干渉の範囲と読み替えることにより、実施例の内容を実現できる。
 図7は、FMPKG113ー1においてデータをFM210に転送する処理例を示す。
 (S11)FMコントローラ201は、バッファメモリ204に、バッファブロック領域800を確保する。バッファブロック領域800とは、FM210へのライトデータを一時的に格納するための領域である。バッファブロック領域800は、複数のバッファページ801a~801cから構成されてよい。1つのバッファブロック領域800の容量は、1つの物理ブロック404の容量と同じであってよい。また、1つのバッファページ801の容量は、1つの物理ページ405の容量と同じであってよい。1つのバッファブロック領域800を構成するバッファページ801の数は、1つの物理ブロック404を構成する物理ページ405の数と同じであってよい。
 (S12)FMコントローラ201は、上位装置102から受領したライトデータを、バッファブロック領域800のバッファページ801に格納する。
 (S13)FMコントローラ201は、バッファブロック領域800の全てのバッファページ801(又は所定数以上のバッファページ801)にデータが格納されたら、このバッファブロック領域800内の全データを、一括でFM210の物理ブロック404に転送する。すなわち、バッファブロック領域800内のデータを、FM210の物理ブロック404にまとめて格納する。
 これにより、物理ページ405にLSB及びMSBがまとめて書き込まれるので、物理ページ405(セル)にLSBのみが書き込まれている不安定な時間を、短縮することができる。また、物理ブロック404の個々の物理ページ405にデータを書き込む場合と比較して、データの書き込まれている物理ページ405(セル)と、データの書き込まれていない物理ページ405(セル)とが隣接している時間を、短縮することができる。すなわち、セル間干渉を抑制することができる。
 なお、FMコントローラ201は、上記S13において、複数のバッファブロック領域800のデータを、一括で複数の物理ブロック404に転送してもよい。
 また、FMコントローラ201は、バッファメモリ204に物理ブロック404の容量以上のデータが格納された場合に、物理ブロック404の容量分のデータを、FM210の物理ブロック404に一括転送してもよい。FMコントローラ201は、一括転送を行う場合、転送元アドレスにバッファブロック領域800の先頭アドレス、転送先アドレスに物理ブロック404の先頭アドレスを指定してよい。
 以下の説明において、バッファブロック領域800に相当する領域を一次記憶域、物理ブロック404に相当する領域を二次記憶域と呼ぶ場合がある。すなわち、一次記憶域は、一時的にライトデータが格納される領域であり、二次記憶域は、最終的にライトデータが格納される領域である。
 図8は、従来の論物変換テーブルの構成例を示す。
 従来の論物変換テーブル505は、上位装置に提供される論理ページ506と、実際にデータが格納される物理ページ507と、の対応情報を保持する。従来の論物変換テーブル505では、論理ページ506と物理ページ507とが、1対1に対応付けられている。
 図9は、ブロック変換テーブル905及びページ変換テーブル901の構成例を示す。
 一次記憶域から二次記憶域への物理ブロック単位のデータ転送を実現するために、従来の論物変換テーブル505に対応するものとして、FMPKG113ー1は、ブロック変換テーブル905及びページ変換テーブル901を有する。
 ページ変換テーブル901は、ページ単位の変換情報を保持する。ページ変換テーブル901は、論理ページ番号902と、当該論理ページ番号902の論理ページが含まれる論理ブロックの番号903と、当該論理ページの当該論理ブロック内における位置であるオフセット値904と、の対応関係を示す情報を保持してよい。
 ブロック変換テーブル905は、ブロック単位の変換情報を保持する。ブロック変換テーブル905は、論理ブロック番号906と、属性907と、実ブロックアドレス908と、の対応関係を示す情報を保持してよい。
 属性907は、論理ブロック番号906の論理ブロックに対するライトコマンドの頻度(更新頻度)を示す情報である。例えば、論理ブロック番号906の論理ブロックが、所定の上限閾値以上の更新頻度ならば、属性907が「HOT」、所定の下限閾値未満の更新頻度ならば、属性907が「COLD」であってよい。これにより、属性907に応じたデータの集約が可能となり、FMPKG113ー1は、ウェアレベリング処理を効率的に行える。なお、属性907は、HOT、COLDの2つに限らず、更新頻度に応じて複数の異なる値を取り得てもよい。
 実ブロック908は、論理ブロック番号906の論理ブロックの参照先の記憶領域を示すアドレスである。実ブロック908は、バッファブロック領域800(一次記憶域)のアドレス、又は、物理ブロック404(二次記憶域)のアドレスの何れかであってよい。実ブロック908がバッファブロック領域800のアドレスである場合、論理ブロック番号906の論理ブロックに係るデータは、FM210へ未転送であることを示す。実ブロック908が物理ブロック404のアドレスである場合、論理ブロック番号906の論理ブロックに係るデータは、FM210へ転送済みであることを示す。
 実ブロック908と物理ブロック404とは、1対1で対応付けられても良いし、1対N(Nは2以上の正の整数)で対応付けられてもよい。実ブロック908に対応する物理ブロック404は、固定されても良いし、変更されてもよい。実ブロック908に対応する物理ブロック908を変更可能にすることにより、物理ブロックの故障、ウェアレベリング処理、資源活用を効率的に行うことができる。
 図10は、FMPKG113-1におけるライト処理のフローチャート例を示す。
 (S1002)FMコントローラ201は、上位装置102からライトコマンドを受領すると、S1003に進む。
 (S1003)FMコントローラ201は、そのライトコマンドの指定する論理ページ902に係る実ブロック908が、一次記憶域に存在するか否かを判定する。そして、この判定結果が、肯定的(YES)ならばS1006へ進み、否定的(NO)ならばS1004へ進む。
 (S1006)S1003の判定結果が肯定的(YES)な場合、FMコントローラ201は、一次記憶域上で、その論理ページ902に係る実ブロック908内のデータを、そのライトコマンドに係るライトデータで書き換える。そして、本処理を終了する。
 (S1004)S1003の判定結果が否定的(NO)な場合、FMコントローラ201は、ライトデータを一次記憶域に格納するために、次の処理を行う。FMコントローラ201は、そのライトデータの属性(HOT又はCOLD)を特定する。そして、S1005へ進む。
 (S1005)FMコントローラ201は、S1004で特定したライトデータの属性と適合する属性907の実ブロック908が存在するか否かを判定する。FMコントローラ201は、この判定結果が、肯定的(YES)ならばS1007へ進み、否定的(NO)ならばS1101へ進む。
 (S1101)S1005の判定結果が否定的(NO)な場合、FMコントローラ201は、ブロック確保処理を行う。この処理により、S1004で特定したライトデータの属性と適合する属性907の実ブロック908が確保される。この処理の詳細は後述する(図11参照)。そして、S1007へ進む。
 (S1007)FMコントローラ201は、一次記憶域におけるライトデータの格納先を特定する。すなわち、実ブロック908に対応する領域における、オフセット904の位置を特定する。そして、S1008へ進む。
 (S1008)FMコントローラ201は、その特定した一次記憶域における格納先に、ライトデータを格納する。そして、S1009へ進む。
 (S1009)FMコントローラ201は、ページ変換テーブル901を更新する。このとき、FMコントローラ201は、次の格納先を示す論理ブロックのポインタや、論理ブロック内の有効データの数、統計情報などを更新してもよい。統計情報は、論理ブロック又は論理ページのライト頻度に関する情報を含んでも良い。そして、S1010へ進む。
 (S1010)FMコントローラ201は、一次記憶域に格納されたライトデータ量が所定の閾値以上であるか否かを判定する。この閾値は、1つの物理ブロック404の容量以上であってよい。FMコントローラ201は、この判定結果が、肯定的(YES)ならばS1201へ進み、否定的(NO)ならば本処理を終了する。
 (S1201)S1010の判定結果が肯定的(YES)な場合、FMコントローラ201は、一括転送処理を実行する。すなわち、一次記憶域に格納された1つの物理ブロック404の容量分のライトデータを、FM210の物理ブロック404に一括転送する。この処理の詳細は後述する(図12参照)。FMコントローラ201は、一次記憶域から、一括転送済みのライトデータを削除してよい。これにより、一次記憶域の空き容量が増加する。そして、本処理を終了する。
 なお、FMコントローラ201は、ライトコマンドに対する完了応答を、上位装置102に、何れのタイミングで返しても良い。FMコントローラ201は、上位装置102に対するレイテンシを高くする場合、ライトデータを受領した直後に完了応答を返しても良い。FMコントローラ201は、電源断などによるデータロストのリスクを下げる場合(信頼性を高める場合)、ライトデータをFM210に格納後に完了応答を返してもよい。また、本フローチャートの説明では省略したが、ライトデータ量が論理ページの容量以下である場合、FMコントローラ201は、リードモディファイライトを行ってよい。
 図11は、ブロック確保処理のフローチャート例を示す。本処理は、図10のS1101の詳細である。
 (S1102)FMコントローラ201は、未使用の論理ブロックを特定する。未使用の論理ブロックとは、何れの実ブロックも対応付けられていない論理ブロックであってよい。FMコントローラ201は、未使用の論理ブロックを、FIFO形式のキューで管理してよい。そして、S1103へ進む。
 (S1103)FMコントローラ201は、この特定した未使用の論理ブロックに、一次記憶域上の連続領域(バッファブロック領域800)を割り当てる。そして、S1104へ進む。
 (S1104)FMコントローラ201は、ブロック変換テーブル905を更新する。すなわち、ブロック変換テーブル905において、この特定した論理ブロックの番号906に、その割り当てた連続領域のアドレスを、実ブロック908として対応付ける。そして、S1105へ進む。
 (S1105)FMコントローラ201は、ブロック変換テーブル905において、この特定した論理ブロックの番号906に、図10のS1004で特定したライトデータの属性(例えばHOT/COLD)を、属性907として対応付ける。以後、この属性907と同一の属性を有するライトデータは、この特定した論理ブロックに格納されてよい。
 図12は、一括転送処理のフローチャート例を示す。本処理は、図10のS1201の詳細である。
 (S1202)FMコントローラ201は、ブロック変換テーブル905から、転送元とする実ブロック908(バッファブロック領域800)を選択する。FMコントローラ201は、全てのバッファページ801にライトデータが格納されているバッファブロック領域800を、優先的に選択してもよい。又は、FMコントローラ201は、属性907に基づいて、転送元のバッファブロック領域800を選択してもよい。例えば、ライト頻度の低い属性907(COLD属性)に対応する実ブロック908(バッファブロック領域800)を、優先的に選択してもよい。なぜなら、ライト頻度の高い属性907(HOT属性)に対応する実ブロック908(バッファブロック領域800)に格納されているライトデータは、図10のS1003においてヒットする確率が高く、できるだけ長くバッファブロック領域800に保持しておきたいからである。
 (S1203)FMコントローラ201は、二次記憶域に空き物理ブロック404が存在するか否かを判定する。FMコントローラ201は、その判定結果が、肯定的(YES)ならばS1204へ進み、否定的(NO)ならばS1220へ進む。
 (S1220)S1203の判定結果が否定的(NO)な場合、FMコントローラ201は、二次記憶域に空き物理ブロック404を確保する。本処理の詳細は後述する(図13参照)。そして、S1204へ進む。
 (S1204)FMコントローラ201は、二次記憶域における、転送先の空き物理ブロック404を選択する。FMコントローラ201は、ウェアレベリングを考慮する場合、転送元の実ブロック908に対応する属性907(HOT/COLD)に適合する空き物理ブロック404を選択してよい。そして、S1205へ進む。
 (S1205)FMコントローラ201は、転送元のバッファブロック領域800に格納されている全データを、転送先の空き物理ブロック404へ一括転送する処理を開始する。そして、S1206へ進む。
 (S1206)FMコントローラ201は、一括転送中に、この一括転送よりも優先度の高い処理が発生したか否かを判定する。FMコントローラ201は、この判定結果が、肯定的(YES)ならばS1207へ進み、否定的(NO)ならばS1210へ進む。優先度の高い処理とは、例えば、転送のために占有されている資源を必要とするリード処理、又は、転送中データの更新処理などである。FMコントローラ201は、転送中データの更新処理を検知した場合、フラグ等を用いてその旨を記憶しておき、転送完了後にそのデータを更新してもよい。又は、FMコントローラ201は、転送中データの更新処理を検知した場合、バッファブロック領域800内のデータを更新し、その一括転送をやり直してもよい。
 (S1207)S1206の判定結果が肯定的(YES)な場合、FMコントローラ201は、一括転送をいったん中断する。一括転送はページ単位の転送よりもデータ量が多いため、転送完了までに時間がかかるからである。そして、S1208へ進む。
 (S1208)FMコントローラ201は、高優先度の処理を実行する。そして、S1209へ進む。
 (S1209)FMコントローラ201は、高優先度の処理が完了した後、一括転送を再開する。そして、S1210へ進む。
 (S1210)FMコントローラ201は、一括転送の完了を検知すると、S1211へ進む。
 (S1211)FMコントローラ201は、ブロック変換テーブルを更新する。すなわち、転送対象の実ブロック908を、転送元のバッファブロック領域800のアドレスから、転送先の物理ブロック404のアドレスに変更する。ここで、ページ変換テーブルの更新は不要である。なぜなら、転送先の物理ブロック404においても、各論理ページの論理ブロック内におけるオフセット904は変化しないからである。そして、S1212へ進む。
 (S1212)FMコントローラ201は、転送元のバッファブロック領域800を解放する。そして、本処理を終了する。
 もし従来の論物変換テーブルを用いた場合、S1211において、ページ単位で、転送元のアドレスを転送先のアドレスに変更する必要がある。これに対して、上述の処理では、S1211において、ブロック単位で、転送元アドレスを転送先のアドレスに変更すればよい。すなわち、本実施例によれば、テーブルの更新回数を減らすことができる。
 図13は、二次記憶域に空き物理ブロック404を確保する処理のフローチャート例を示す。本処理は、図12のS1220の詳細である。
 (S1302)FMコントローラ201は、転送元のデータの属性(HOT/COLD)を判定する。
 (S1303)FMコントローラ201は、S1302で判定した属性に適合する属性907の空き物理ブロックが存在するか否かを判定する。FMコントローラ201は、この判定結果が肯定的(YES)ならば本処理を終了し、否定的(NO)ならばS1304へ進む。
 (S1304)S1303の判定結果が否定的(NO)な場合、FMコントローラ201は、リクラメーション処理の対象とする物理ブロック404を選択する。リクラメーション処理の対象とする物理ブロック404は、S1302で判定した属性に適合する属性907の物理ブロック404の中から、無効データの割合の最も高いものを選択してよい。そして、S1305へ進む。
 (S1305)FMコントローラ201は、その選択した物理ブロック404内の有効データを、他の物理ブロック404へコピーする。そして、S1306へ進む。
 (S1306)FMコントローラ201は、その選択した元の物理ブロック404のデータを消去する。そして、S1307へ進む。
 (S1307)FMコントローラ201は、その消去した物理ブロック404について、所定の管理情報を更新する。そして、本処理を終了する。
 図14は、電源断が発生したときにバッファメモリ204のデータを退避する処理のフローチャート例を示す。
 バッファメモリ204が揮発性記憶媒体で構成されている場合、電源断が発生したときは、バッテリ205から電力が供給されている間に、バッファメモリ204のデータをFMに転送する必要がある。
 (S1402)FMコントローラ201は、電源断の発生を検出した場合、S1403へ進む。
 (S1403)FMコントローラ201は、電力供給源をバッテリ205に切り替える。そして、S1404へ進む。
 (S1404)FMコントローラ201は、バッファブロック領域800にデータが存在するか否かを判定する。FMコントローラ201は、この判定結果が、肯定的(YES)ならばS1405へ進み、否定的(NO)ならばS1409へ進む。
 (S1405~S1408)S1404の判定結果が肯定的(YES)な場合、FMコントローラ201は、バッファブロック領域800の全データをFM210の物理ブロック404に一括転送し、ブロック変換テーブル905を更新する。そして、S1409へ進む。
 (S1409~S1410)FMコントローラ201は、メタデータをFM210に退避し、動作を停止する。FMコントローラ201は、ライトデータとメタデータとを区別することなく、FM210に一括転送してもよい。
 なお、バッファブロック領域800内のデータ量が、1つの物理ブロック404の容量よりも小さい場合、FMコントローラ201は、1つの物理ブロック404の容量になるように、そのバッファブロック領域800内のデータにダミーデータを付加してよい。ダミーデータは、ランダムデータであることが望ましい。ランダムデータとは、ビット値がランダムに並んでいるデータである。ランダムデータを用いる方が、同じビット値が並んでいるデータを用いるよりも、セル間干渉が小さくなりやすいからである。そして、FMコントローラ201は、そのダミーデータを付加したデータを、FM210の物理ブロック404に一括転送してよい。これにより、上述と同様、セル間干渉を低減させることができる。
 また、FMPKG113ー2は、電源断などの緊急性の高い非常時のために、不揮発性メモリをさらに有し、その不揮発性メモリにバッファブロック領域800のデータを退避させてもよい。又は、FMPKG113ー2は、FM210の一部に、非常時用のSLCのFMを用意しておき、そのSLCのFMにバッファブロック領域800のデータを退避させてもよい。SLCのFMは、MLCのFMよりも、高速、且つ、セル間干渉が少ないからである。
 実施例2は、一次記憶域(バッファブロック領域)が不揮発性メモリの例を示す。
 図15は、実施例2に係るFMPKG113―2の構成例を示す。
 FMPKG113は、一次記憶域用に、不揮発性メモリ1501を有する。不揮発性メモリ1501は、バッファブロック領域を有する。なお、FMPKG113―2は、DRAM(不図示)も有してよい。DRAMには、高速アクセスが必要なメタデータ等が格納されてよい。
 不揮発性メモリ1501は、所定のページ単位でのみデータをリード/ライトできるものであってよい。また、不揮発性メモリ1501は、所定のブロック単位でのみデータを消去できるものであってよい。一次記憶域を構成する不揮発性メモリは、二次記憶域を構成するFMと比較して、セル間干渉が少ないとしてよい。すなわち、一次記憶域へのライトについては、セル間干渉を考慮不要であるとしてよい。このような一次記憶域を構成する不揮発性メモリの例は、SLCのFM、Resistance Random Access Memory(ReRAM)、Magnetoresistive Random Access Memory(MRAM)、Phase Change Memory(PCM)などである。
 不揮発性メモリ1501の1つのページの容量は、二次記憶域を構成するFM210の1つの物理ページ405の容量よりも小さくてよい。不揮発性メモリ1501の書き込み及び消去可能回数(寿命)は、FM210よりも高くてよい。
 なお、実施例2の場合、一次記憶域に格納されたデータは、電源断が発生しても保持される。したがって、電源断が発生しても、実施例1の図14の処理のように、一次記憶域のデータを退避させる必要は無い。しかし、一次記憶域から二次記憶域への一括転送中に電源断が発生した場合などに備えて、FMコントローラ201―2は、一括転送中のバッファブロック領域を管理してもよい。そして、一括転送中に電源断が発生した場合、FMコントローラ201―2は、復旧後、二次記憶域の物理ブロック404における途中まで転送されたデータを消去してもよい。
 図16は、実施例2に係るFMPKG113―2のライト処理のフローチャート例を示す。
 (S1602)FMコントローラ201―2は、上位装置102からライトコマンドを受領すると、S1603へ進む。
 (S1603)FMコントローラ201―2は、そのライトコマンドの指定する論理ページ902に係る実ブロック908が、一次記憶域に存在するか否かを判定する。そして、この判定結果が、肯定的(YES)ならばS1604へ進み、否定的(NO)ならばS1605へ進む。
 (S1604)S1603の判定結果が肯定的(YES)な場合、FMコントローラ201―2は、一次記憶域の実ブロック908に対応するバッファページを無効化する。無効化とは、ページ変換テーブル901において、論理ページ902と、バッファブロック領域及びオフセット804との対応関係を解除し、そのバッファブロック領域の有効ページ数をデクリメントする処理である。FMコントローラ201―2は、新たに受領したライトデータを、一次記憶域の別のバッファブロック領域に格納する。そして、S1605へ進む。
 (S1605)FMコントローラ201は、図10のS1004以降と同様の処理を行い、ライトコマンドを一次記憶域に格納する。
 なお、一次記憶域のバッファページを無効化するタイミングは、ライトデータを一次記憶域に格納し終えて、ページ変換テーブル901、ブロック変換テーブル905を更新するときであってもよい。
 図17は、一次記憶域のリクラメーション処理のフローチャート例を示す。
 実施例2では、図16に示すように、一次記憶域において無効ページや断片化が生じ得る。そこで、FMコントローラ201―2は、一次記憶域についてもリクラメーション処理を行ってよい。リクラメーション処理は、一次記憶域の空き領域が不足している場合に行われてもよい。
 (S1702)FMコントローラ201―2は、一次記憶域の空き領域が所定の閾値未満であるか否かを判定する。この判定結果が、肯定的(YES)ならばS1703へ進み、否定的(NO)ならば、本処理を終了する。この閾値は、バースト的に発生し得るライトデータ量を格納可能な容量以上に設定されてよい。
 (S1703)FMコントローラ201―2は、一次記憶域において、無効ページ数が所定の閾値(数、割合等)以上であるバッファブロック領域が存在するか否かを判定する。この判定結果が、肯定的(YES)ならばS1704へ進み、否定的(NO)ならば、S1707へ進む。
 (S1704~S1706)S1703の判定結果が肯定的(YES)な場合、つまり無効ページ数が所定の閾値以上のバッファブロック領域が存在する場合、FMコントローラ201は、そのバッファブロック領域内の有効データを他のバッファブロック領域へコピーし、コピー元のバッファブロック領域の全データを消去する。そして、本処理を終了する。
 (S1707~S1708)S1703の判定結果が否定的(NO)な場合、つまり無効ページ数が所定の閾値以上のバッファブロック領域が存在しない場合、FMコントローラ201―2は、古いバッファブロック領域のデータから順に、二次記憶域へ一括転送する。そして、本処理を終了する。なお、二次記憶域におけるリクラメーション処理については、実施例1と同様に行ってよい。
 このように、一次記憶域において、無効データの割合が閾値以上の場合は、リクラメーション処理を行うことにより、一次記憶域にできるだけ長時間ライトデータを残しつつ、空き領域を増やすことができる。無効データの割合が閾値未満の場合は、リクラメーション処理を行ってもあまり空き領域は増えないので、一次記憶域のデータを二次記憶域に転送する。これにより、一次記憶域の空き領域を増やすことができる。
 なお、FMコントローラ201-2は、一次記憶域をリクラメーションした後、有効データを含む一次記憶域のデータを二次記憶域に転送してもよい。これにより、転送データは有効データを多く含む(無効データをあまり含まない)ので、一次記憶域から二次記憶域への有効データの転送効率が向上する。また、二次記憶域におけるリクラメーション処理の負荷が軽減される。
 実施例3は、一次記憶域及び二次記憶域の両方を、FM210内に設ける例を示す。一次記憶域は、二次記憶域よりもセル間干渉が小さく、ライト単位の小さい領域であってよい。SLCのFMで一次記憶域を構成し、MLCのFMで二次記憶域を構成してもよい。又は、MLCのFM210において、LSBのみを利用して一次記憶域を構成し、LSB及びMSBを利用して二次記憶域を構成してもよい。以下、LSBのみ又はSLCを利用して構成される領域を「SLC領域」、LSB及びMSBの両方、若しくは、MLCを利用して構成される領域を「MLC領域」と呼ぶ。
 図18は、実施例3に係るFMPKG113―3の構成例を示す。
 FM210は、内部にSLC領域1801とMLC領域1802とを有する。FMPKG113は、SLC領域1801を一次記憶域として利用し、MLC領域1802を二次記憶域として利用する。
 FMPKG113―3は、FM I/F209を介して、SLC領域1801からMLC領域1802へデータを一括転送してもよい。
 FM210は、一括転送用の回路を有し、その回路を介して、内部でSLC領域1801からMLC領域1802へデータを一括転送してもよい。この場合、FM I/F209は、転送元の物理ブロックと、転送先の物理ブロックと、を指定する転送コマンドを、FMに発行してもよい。FM I/F209は、MLC領域1802の物理ブロックの容量がSLC領域1801の物理ブロックの容量よりも大きい場合、複数のSLC領域1801の物理ブロックを転送元に指定してよい。FM I/F209は、FMから、転送完了通知を受領してよい。一括転送用の回路は、FMチップの内部に設けられてもよいし、FMチップの外部に設けられて複数のFMチップから共有利用されてもよい。
 図19は、ブロック管理テーブル1901、及び、領域管理テーブル1905の構成例を示す。
 ブロック管理テーブル1901は、各物理ブロックに関する情報を保持する。ブロック管理テーブル1901は、項目値(カラム値)として、ブロック番号1902、劣化度1903、種別1904を有してよい。
 ブロック番号1902は、物理ブロックの識別番号である。
 劣化度1903は、ブロック番号1902の物理ブロックの劣化の度合い(寿命)を示す。上述のとおり、物理ブロックは、書き込み回数(頻度)・消去回数(頻度)が大きくなるにつれて、データ保持性能が劣化する。例えば、物理ブロックは、劣化度が100%になるとデータを十分に保持できず、寿命が尽きたとしてもよい。劣化度1903は、物理ブロックに格納されているデータの読み出しエラー率に基づいて算出されてもよい。
 種別1904は、ブロック番号1902の物理ブロックが、SLC領域1801又はMLC領域1801の何れであるかを示す。
 領域管理テーブル1905は、SLC領域1801及びMLC領域1802に関する情報を保持する。領域管理テーブル1905は、項目値(カラム値)として、種別1906、ブロック数1907、書き込み可能数1908を有してよい。
 種別1906は、レコードが、SLC領域1801又はMLC領域1802の何れに関する情報を保持しているかを示す。
 ブロック数1907は、種別1906の領域を構成する物理ブロックの数を示す。つまり、ブロック数1907は、種別1906の示す領域の容量を示す。
 書き込み可能数1908は、種別1906の示す領域に書き込み可能な回数(頻度)を示す。書き込み可能数1908は、種別1906の領域を構成する各物理ブロック404の劣化度1903に基づいて算出されてよい。
 図20は、SLCキュー2001及びMLCキュー2002の構成例を示す。
 FMPKG113―3は、SLCキュー2001を用いて、SLC領域1801を構成する物理ブロックを管理してよい。FMPKG113―3は、MLCキュー2002を用いて、MLC領域1802を構成する物理ブロックを管理してよい。
 FMPKG113―3は、SLC領域1801及びMLC領域1802のそれぞれについて、空き物理ブロックのキュー、無効物理ブロックのキュー、有効物理ブロックのキューを有してよい。
 空き物理ブロックのキューには、空き物理ブロックの番号が連結されてよい。空き物理ブロックは、消去済みの物理ブロックである。空き物理ブロックのキューは、劣化度の高い(又は低い)物理ブロックの順にソートされてよい。ウェアレベリングを効率的に行うためである。
 無効物理ブロックのキューには、無効物理ブロックの番号が連結されてよい。無効物理ブロックとは、消去可能な物理ブロックである。
 有効物理ブロックのキューには、有効物理ブロックの番号が連結されてよい。有効物理ブロックとは、消去不可能なデータ(有効ページ)を含む物理ブロックである。有効物理ブロックのキューは、無効物理ページ数の多い(又は少ない)物理ブロックの順にソートされてよい。リクラメーション処理を効率的に行うためである。
 また、FMPKG113-3は、FMチップの駆動単位毎(例えばバス毎)に、これらのキューを有して良い。FMチップの多重度を得るためのブロックセットの取得を容易にするためである。
 図21は、実施例3に係る一括転送処理のフローチャート例を示す。
 FMPKG113―3は、一次記憶域の空き領域が不足している場合、一次記憶域から二次記憶域へ一括転送を行ってよい。このとき、FMPKG113―3は、一次記憶域についてリクラメーション処理を行ってもよい。
 (S2102)FMコントローラ201―3は、一次記憶域から、転送元とする物理ブロック(バッファブロック領域に相当)を選択する。FMコントローラ201―3は、書き込み後の経過時間が最長の物理ブロックを、優先的に選択してもよい。又は、FMコントローラ201―3は、無効ページ数の割合が最小(有効ページ数の割合が最大)の物理ブロックを、優先的に選択してもよい。このような物理ブロックは、一次記憶域内においてリクラメーション処理の対象となりにくく、また、有効データの転送効率が高いからである。又は、FMコントローラ201―3は、これら複数の条件を組み合わせて、転送元とする物理ブロックを選択してもよい。そして、S2103へ進む。
 (S2103)FMコントローラ201―3は、二次記憶域から、転送先とする空き物理ブロックを選択する。このとき、二次記憶域に空き物理ブロックが確保できない、又は、二次記憶域の空き物理ブロック数が閾値以下である場合、FMコントローラ201―3は、二次記憶域についてリクラメーション処理を行ってよい。そして、S2104へ進む。
 (S2104)FMコントローラ201―3は、一次記憶域から二次記憶域への一括転送を指示する。この一括転送は、図18で述べたように、FMの内部で行われてもよい。その場合、FM I/F209が、転送指示をFMに発行してもよい。一括転送中のFMに対して、当該転送処理よりも優先度の高いコマンドを発行する場合、FM I/F209は、実施例1のように、そのFMに、一括転送の中断コマンドを発行してもよい。そして、S2105へ進む。
 (S2105)FMコントローラ201は、転送完了通知を受領すると、領域管理テーブル1905を更新する。そして、処理を終了する。
 なお、一括転送中に電源断が発生した場合、FMコントローラ201―3は、実施例2と同様、復旧後に二次記憶域の物理ブロックにおける途中まで転送されたデータを消去してもよい。
 図22は、SLC領域1801とMLC領域1802との間の物理ブロック数を調整する処理のフローチャート例を示す。
 (S2202)FMコントローラ201―3は、領域管理テーブル1907から各領域の情報を取得する。FMコントローラ201―3は、この取得した情報に基づいて各領域の劣化状況を分析し、各領域の物理ブロック数を決定する。例えば、FMコントローラ201―3は、各領域の書き込み可能数1908が等しくなるように、各領域の物理ブロック数を決定してもよい。また、同じ物理ブロック数を割り当てると、SLC領域1801の容量は、MLC領域1802の容量よりも小さくなってしまうので、FMコントローラ201―3は、SLC領域1801及びMLC領域1802がそれぞれ所定の容量となるように、各領域の物理ブロック数を決定してもよい。このとき、上位装置108に提供する論理ボリュームの容量を確保できるように、容量を決定してよい。また、リクラメーション処理のための予備領域も考慮して、容量を決定してよい。これらはリクラメーション処理の効率などの要件に基づいて決定されてよい。
 (S2203)FMコントローラ201―3は、SLC領域1801を拡張する必要があるか否かを判定する。FMコントローラ201―3は、この判定結果が、肯定的(YES)ならばS2205へ進み、否定的(NO)ならばS2204へ進む。
 (S2205)S2203の判定結果が肯定的(YES)な場合、FMコントローラ201―3は、MLC領域1802からモード変更対象の物理ブロックを選択する。FMコントローラ201―3は、SLC領域1801の書き込み可能数が所定の閾値よりも少ない場合、MLC領域1802から劣化度が最低(又は所定の閾値未満)の物理ブロックを選択してよい。このとき、FMコントローラ201は、FMチップの動作多重度を考慮し、FMチップの駆動単位毎における、SLC領域の物理ブロック数が等しくなるように、移動元の物理ブロックも考慮してよい。そして、S2206へ進む。
 (S2206)FMコントローラ201―3は、その選択した物理ブロックに有効データが含まれている場合、その有効データを他の物理ブロックへコピーし、その選択した物理ブロックの全データを消去する。そして、S2207へ進む。
 (S2207)FMコントローラ201―3は、その選択した物理ブロックを、SLC領域1801として利用するモードに変更する。そして、S2208へ進む。
 (S2208)FMコントローラ201―3は、その選択ブロックの番号を、SLCキュー2001へ追加する。
 (S2209)FMコントローラ201―3は、ブロック管理情報1901を更新する。そして、本処理を終了する。
 (S2204)S2203の判定結果が否定的(NO)な場合、FMコントローラ201―3は、MLC領域1802を拡張する必要があるか否かを判定する。FMコントローラ201―3は、この判定結果が、肯定的(YES)ならばS2210へ進み、否定的(NO)ならば本処理を終了する。
 (S2210~S2214)S2204の判定結果が肯定的(YES)な場合、FMコントローラ201―3は、上記S2205~S2209と同様に、MLC領域1802の拡張処理を行う。そして、本処理を終了する。
 上述した実施例は、本発明の説明のための例示であり、本発明の範囲をそれらの実施例にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
 実施例に係る発明は、以下のように表現することができる。
(表現1)
 フラッシュメモリを含んだ少なくとも1つのメモリと、コントローラと、を有し、
 前記フラッシュメモリは複数の物理ブロックを含み、その物理ブロックはデータの消去単位であり、その物理ブロックは複数の物理ページを含み、その物理ページはデータのライト単位であり、
 前記コントローラは、
  受領したライトデータを、前記メモリの一部の記憶領域である一次記憶域に格納し、
  前記一次記憶域に蓄積されたデータ量が前記フラッシュメモリの1つの物理ブロックの容量以上である場合、前記一次記憶域から、前記フラッシュメモリの一部の記憶領域である二次記憶域へ、少なくとも1つの物理ブロックの容量分のデータを一括転送する
フラッシュメモリパッケージ。
(表現2)
 論理ページの位置と論理ブロックとの関係を表す情報を含むページ管理情報と、
 論理ブロックとデータの格納先の領域との関係を表す情報を含むブロック管理情報と
をさらに有し、
 前記ブロック管理情報におけるデータの格納先の領域は、一次記憶域、又は、二次記憶域の何れかである
表現1に記載のフラッシュメモリパッケージ。
(表現3)
 前記コントローラは、前記一括転送において、前記ブロック管理情報におけるデータの格納先を、一次記憶域から二次記憶域に変更する
表現2に記載のフラッシュメモリパッケージ。
(表現4)
 前記ブロック管理情報は、少なくとも前記論理ブロックに対するライト要求の頻度を表す情報をさらに含み、
 前記コントローラは、前記ライト要求の頻度の比較的低い論理ブロックに係る一次記憶域のデータから優先的に、二次記憶域へ一括転送する
表現3に記載のフラッシュメモリパッケージ。
(表現5)
 前記コントローラは、前記ライト要求の頻度が比較的大きい程、前記一括転送先に消去頻度の比較的小さい二次記憶域を選択する
表現4に記載のフラッシュメモリパッケージ。
(表現6)
 前記コントローラは、前記一括転送中に、その一括転送よりも高優先度のI/O要求を受領した場合、その一括転送を一時的に中断する
表現1乃至6の何れか1つに記載のフラッシュメモリパッケージ。
(表現7)
 前記一次記憶域は、Single Level Cell(SLC)としてデータを記憶するNAND型フラッシュメモリであり、複数の物理ブロックを含み、その物理ブロックは複数の物理ページを含み、
 前記二次記憶域は、Multi Level Cell(MLC)としてデータを記憶するNAND型フラッシュメモリである
表現1乃至6の何れか1つに記載のフラッシュメモリパッケージ。
(表現8)
 前記コントローラは、前記一次記憶域をリクラメーションした後、有効データを含む一次記憶域のデータを、二次記憶域へ一括転送する
表現7に記載のフラッシュメモリパッケージ。
(表現9)
 前記コントローラは、一次記憶域の空き物理ページ数が所定の閾値未満となった場合、一次記憶域に無効データの割合が所定の閾値以上の物理ブロックが存在するか否かを判定し、当該判定結果が肯定的ならば一次記憶域をリクラメーションし、当該判定結果が否定的ならば、有効データを含む一次記憶域を二次記憶域へ一括転送する
表現7又は8に記載のフラッシュメモリパッケージ。
(表現10)
 前記コントローラは、前記一次記憶域に蓄積されたデータ量が前記フラッシュメモリの1つの物理ブロックの容量未満である場合、前記一次記憶域のデータに1つの物理ブロックの容量以上となる分のランダムデータを付加し、そのランダムデータを付加した少なくとも1つの物理ブロックの容量分のデータを、前記二次記憶域へ一括転送する
表現1乃至9の何れか1つに記載のフラッシュメモリパッケージ。
(表現11)
 前記一次記憶域は前記フラッシュメモリの一部の記憶領域であり、
 前記一次記憶域は、物理ブロックをSLCのモードで利用する領域であり、
 前記二次記憶域は、物理ブロックをMLCのモードで利用する領域である
表現1乃至10の何れか1つに記載のフラッシュメモリパッケージ。
(表現12)
 前記コントローラは、
  前記一次記憶域における、消去頻度が第1の閾値以上の物理ブロックを、MLCのモードで利用する二次記憶域に変更し、
  前記二次記憶域における、消去頻度が第2の閾値未満の物理ブロックを、SLCのモードで利用する一次記憶域に変更し、前記第1の閾値は前記第2の閾値よりも大きい
表現11に記載のフラッシュメモリパッケージ。
(表現13)
 ストレージコントローラと、フラッシュメモリパッケージと、を含むストレージシステムであって、
 前記フラッシュメモリパッケージは、フラッシュメモリを含んだ少なくとも1つのメモリと、フラッシュメモリコントローラと、を有し、
 前記フラッシュメモリは複数の物理ブロックを含み、その物理ブロックはデータの消去単位であり、その物理ブロックは複数の物理ページを含み、その物理ページはデータのライト単位であり、
 前記フラッシュメモリコントローラは、
  前記ストレージコントローラから受領したライトデータを、前記メモリの一部の記憶領域である一次記憶域に格納し、
  前記一次記憶域に蓄積されたデータ量が前記フラッシュメモリの1つの物理ブロックの容量以上である場合、前記一次記憶域から、前記フラッシュメモリの一部の記憶領域である二次記憶域へ、少なくとも1つの物理ブロックの容量分のデータを一括転送する
フラッシュメモリパッケージを含むストレージシステム。
 101:ストレージシステム 102:ストレージコントローラ 113:フラッシュメモリパッケージ 201:フラッシュメモリコントローラ 204:バッファメモリ 210:フラッシュメモリ

 

Claims (13)

  1.  フラッシュメモリを含んだ少なくとも1つのメモリと、コントローラと、を有し、
     前記フラッシュメモリは複数の物理ブロックを含み、その物理ブロックはデータの消去単位であり、その物理ブロックは複数の物理ページを含み、その物理ページはデータのライト単位であり、
     前記コントローラは、
      受領したライトデータを、前記メモリの一部の記憶領域である一次記憶域に格納し、
      前記一次記憶域に蓄積されたデータ量が前記フラッシュメモリの1つの物理ブロックの容量以上である場合、前記一次記憶域から、前記フラッシュメモリの一部の記憶領域である二次記憶域へ、少なくとも1つの物理ブロックの容量分のデータを一括転送する
    フラッシュメモリパッケージ。
  2.  論理ページの位置と論理ブロックとの関係を表す情報を含むページ管理情報と、
     論理ブロックとデータの格納先の領域との関係を表す情報を含むブロック管理情報と
    をさらに有し、
     前記ブロック管理情報におけるデータの格納先の領域は、一次記憶域、又は、二次記憶域の何れかである
    請求項1に記載のフラッシュメモリパッケージ。
  3.  前記コントローラは、前記一括転送において、前記ブロック管理情報におけるデータの格納先を、一次記憶域から二次記憶域に変更する
    請求項2に記載のフラッシュメモリパッケージ。
  4.  前記ブロック管理情報は、少なくとも前記論理ブロックに対するライト要求の頻度を表す情報をさらに含み、
     前記コントローラは、前記ライト要求の頻度の比較的低い論理ブロックに係る一次記憶域のデータから優先的に、二次記憶域へ一括転送する
    請求項3に記載のフラッシュメモリパッケージ。
  5.  前記コントローラは、前記ライト要求の頻度が比較的大きい程、前記一括転送先に消去頻度の比較的小さい二次記憶域を選択する
    請求項4に記載のフラッシュメモリパッケージ。
  6.  前記コントローラは、前記一括転送中に、その一括転送よりも高優先度のI/O要求を受領した場合、その一括転送を一時的に中断する
    請求項1に記載のフラッシュメモリパッケージ。
  7.  前記一次記憶域は、Single Level Cell(SLC)としてデータを記憶するNAND型フラッシュメモリであり、複数の物理ブロックを含み、その物理ブロックは複数の物理ページを含み、
     前記二次記憶域は、Multi Level Cell(MLC)としてデータを記憶するNAND型フラッシュメモリである
    請求項1に記載のフラッシュメモリパッケージ。
  8.  前記コントローラは、前記一次記憶域をリクラメーションした後、有効データを含む一次記憶域のデータを、二次記憶域へ一括転送する
    請求項7に記載のフラッシュメモリパッケージ。
  9.  前記コントローラは、一次記憶域の空き物理ページ数が所定の閾値未満となった場合、一次記憶域に無効データの割合が所定の閾値以上の物理ブロックが存在するか否かを判定し、当該判定結果が肯定的ならば、一次記憶域をリクラメーションし、当該判定結果が否定的ならば、有効データを含む一次記憶域を二次記憶域へ一括転送する
    請求項7に記載のフラッシュメモリパッケージ。
  10.  前記コントローラは、前記一次記憶域に蓄積されたデータ量が前記フラッシュメモリの1つの物理ブロックの容量未満である場合、前記一次記憶域のデータに1つの物理ブロックの容量以上となる分のランダムデータを付加し、そのランダムデータを付加した少なくとも1つの物理ブロックの容量分のデータを、前記二次記憶域へ一括転送する
    請求項1に記載のフラッシュメモリパッケージ。
  11.  前記一次記憶域は前記フラッシュメモリの一部の記憶領域であり、
     前記一次記憶域は、物理ブロックをSLCのモードで利用する領域であり、
     前記二次記憶域は、物理ブロックをMLCのモードで利用する領域である
    請求項1に記載のフラッシュメモリパッケージ。
  12.  前記コントローラは、
      前記一次記憶域における、消去頻度が第1の閾値以上の物理ブロックを、MLCのモードで利用する二次記憶域に変更し、
      前記二次記憶域における、消去頻度が第2の閾値未満の物理ブロックを、SLCのモードで利用する一次記憶域に変更し、前記第1の閾値は前記第2の閾値よりも大きい
    請求項11に記載のフラッシュメモリパッケージ。
  13.  ストレージコントローラと、フラッシュメモリパッケージと、を含むストレージシステムであって、
     前記フラッシュメモリパッケージは、フラッシュメモリを含んだ少なくとも1つのメモリと、フラッシュメモリコントローラと、を有し、
     前記フラッシュメモリは複数の物理ブロックを含み、その物理ブロックはデータの消去単位であり、その物理ブロックは複数の物理ページを含み、その物理ページはデータのライト単位であり、
     前記フラッシュメモリコントローラは、
      前記ストレージコントローラから受領したライトデータを、前記メモリの一部の記憶領域である一次記憶域に格納し、
      前記一次記憶域に蓄積されたデータ量が前記フラッシュメモリの1つの物理ブロックの容量以上である場合、前記一次記憶域から、前記フラッシュメモリの一部の記憶領域である二次記憶域へ、少なくとも1つの物理ブロックの容量分のデータを一括転送する
    フラッシュメモリパッケージを含むストレージシステム。
     

     
PCT/JP2015/072089 2015-08-04 2015-08-04 フラッシュメモリパッケージ、及び、フラッシュメモリパッケージを含むストレージシステム WO2017022082A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/748,802 US20190012260A1 (en) 2015-08-04 2015-08-04 Flash memory package and storage system including flash memory package
PCT/JP2015/072089 WO2017022082A1 (ja) 2015-08-04 2015-08-04 フラッシュメモリパッケージ、及び、フラッシュメモリパッケージを含むストレージシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/072089 WO2017022082A1 (ja) 2015-08-04 2015-08-04 フラッシュメモリパッケージ、及び、フラッシュメモリパッケージを含むストレージシステム

Publications (1)

Publication Number Publication Date
WO2017022082A1 true WO2017022082A1 (ja) 2017-02-09

Family

ID=57942688

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/072089 WO2017022082A1 (ja) 2015-08-04 2015-08-04 フラッシュメモリパッケージ、及び、フラッシュメモリパッケージを含むストレージシステム

Country Status (2)

Country Link
US (1) US20190012260A1 (ja)
WO (1) WO2017022082A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7302497B2 (ja) * 2020-02-07 2023-07-04 Tdk株式会社 メモリコントローラ及びフラッシュメモリシステム
US11733895B2 (en) * 2021-03-31 2023-08-22 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device
US11748011B2 (en) * 2021-03-31 2023-09-05 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device
US20220318157A1 (en) * 2021-04-01 2022-10-06 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device
TWI788161B (zh) * 2021-12-27 2022-12-21 技嘉科技股份有限公司 動態調整單級區塊及三級區塊比例的控制方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001006374A (ja) * 1999-06-17 2001-01-12 Hitachi Ltd 半導体記憶装置及びシステム
JP2009217755A (ja) * 2008-03-12 2009-09-24 Toshiba Corp メモリシステム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001006374A (ja) * 1999-06-17 2001-01-12 Hitachi Ltd 半導体記憶装置及びシステム
JP2009217755A (ja) * 2008-03-12 2009-09-24 Toshiba Corp メモリシステム

Also Published As

Publication number Publication date
US20190012260A1 (en) 2019-01-10

Similar Documents

Publication Publication Date Title
US11474702B2 (en) Storage device that writes data from a host during garbage collection
US11922039B2 (en) Storage device that secures a block for a stream or namespace and system having the storage device
US11893238B2 (en) Method of controlling nonvolatile semiconductor memory
US11847350B2 (en) Storage system, information processing system and method for controlling nonvolatile memory
US20200218655A1 (en) Storage system and information processing system for controlling nonvolatile memory
US10372331B2 (en) Storage system, information processing system and method for controlling nonvolatile memory
US10353612B2 (en) Storage system, information processing system and method for controlling nonvolatile memory
CN106874217B (zh) 存储器系统及控制方法
JP6385556B2 (ja) 不揮発性メモリデバイスおよび不揮発性メモリデバイスのデータ記憶方法
JP6286622B2 (ja) ストレージシステム
KR100965051B1 (ko) 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및그 장치
WO2017022082A1 (ja) フラッシュメモリパッケージ、及び、フラッシュメモリパッケージを含むストレージシステム
WO2021035555A1 (zh) 一种固态硬盘的数据存储方法、装置及固态硬盘ssd
US11972143B2 (en) Techniques for balancing write commands on solid state storage devices (SSDs)
WO2018167890A1 (ja) 計算機システム及び管理方法
JP6721765B2 (ja) メモリシステムおよび制御方法
JP2019016386A (ja) メモリシステムおよび制御方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15900395

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15900395

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP