WO2015151261A1 - Nonvolatile memory system and information processing system - Google Patents

Nonvolatile memory system and information processing system Download PDF

Info

Publication number
WO2015151261A1
WO2015151261A1 PCT/JP2014/059873 JP2014059873W WO2015151261A1 WO 2015151261 A1 WO2015151261 A1 WO 2015151261A1 JP 2014059873 W JP2014059873 W JP 2014059873W WO 2015151261 A1 WO2015151261 A1 WO 2015151261A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
attribute
flash memory
block
nonvolatile memory
Prior art date
Application number
PCT/JP2014/059873
Other languages
French (fr)
Japanese (ja)
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 PCT/JP2014/059873 priority Critical patent/WO2015151261A1/en
Publication of WO2015151261A1 publication Critical patent/WO2015151261A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying

Definitions

  • the present invention relates to a nonvolatile memory system and an information processing system.
  • a non-volatile memory such as a flash memory
  • data cannot be written any more if writing is repeated many times (limit of the number of times that data can be written).
  • a characteristic (retention characteristic) in which recorded data is lost when the elapsed time after writing is long and the same value as that at the time of writing cannot be read.
  • Patent Document 1 discloses a technique of adding data with ECC (Error Correcting Code) having a correction capability of a plurality of bits at the time of writing and reading data by correcting the faulty bit using ECC at the time of reading. Yes.
  • ECC Error Correcting Code
  • a spare flash memory block is provided, and if the error rate at the time of correction is larger than a predetermined threshold value m, a process of transferring data to the spare or another flash block (refresh process) is executed.
  • a technique is disclosed in which if the error rate is greater than a predetermined threshold value n (n> m), the read-out block is determined as a defective block that will not be used thereafter (defective block determination).
  • the refresh process is not executed at the time of reading, but is executed when the elapsed time after writing the data in the flash memory exceeds a predetermined value, so that the data disappears with the passage of time.
  • Corresponding techniques are disclosed.
  • a flash memory system periodically performs refresh processing using the techniques described in Patent Documents 1 and 2, and data is correctly read and written until the entire flash memory system reaches a certain number of times of writing. Assured.
  • the conventional flash memory system is often used as a part of the storage system.
  • it is used as a server-connected flash memory system.
  • the server-connected flash memory system refers to a system used as a server main memory expansion or a system used as a storage system that operates in close cooperation with the server.
  • the flash memory system When the flash memory system is used as a server-connected flash memory system, the number of times of writing increases as compared to when it is used as a part of the storage system. This results in the problem that the flash memory system reaches its useful life before the server reaches its useful life.
  • the conventional flash memory system is assumed to be used as a part of the storage system, so even if power is not supplied for a long time (for example, time in years) due to power failure or removal of the flash memory system, data Need to guarantee. Specifically, it is necessary to ensure that the error rate is equal to or lower than the error rate correctable by ECC when data is read again.
  • the conventional flash memory system controls to refresh frequently by setting a sufficiently small refresh judgment period and to refresh early by setting a sufficiently small error rate as a refresh judgment threshold. Also, control is performed so that a sufficiently small error rate is set as a defective block determination threshold value and determined as a defective block at an early stage.
  • the conventional flash memory system is defective even though it is frequently written by the refresh process, pressing the limit of the number of writeable times, and the error rate is much smaller than the error rate that can be corrected by ECC. Decide that it is a block and reduce the number of usable blocks. Therefore, there is a problem that the number of writable times as a whole flash memory system is reduced.
  • the data on the main memory may be erased when the power is turned off. It is not necessary to guarantee only the data.
  • the refresh determination threshold value, the bad block determination threshold value, and the determination cycle thereof are uniform even though it is not necessary to guarantee the data recorded in the flash memory system for a long time. Therefore, there is a problem that the number of writable times of the entire system is limited.
  • the case where the flash memory system here is used as the main memory expansion of the server means, for example, that the application or middleware program treats the main memory and the flash memory system as one storage space, and only the data that is frequently accessed is used as appropriate. This is a case where the calculation is taken from the flash memory system into the main memory.
  • the database processes one query, the data read from the database does not fit in the main memory, so that a temporary area is secured in the flash memory system.
  • the flash memory system when used as a storage system that operates in close cooperation with the server, the guaranteed time of data after the power is turned off varies greatly depending on the type of data. For example, if a flash memory system is used as a permanent storage destination, a yearly guarantee is required, whereas if a checkpoint of a long-term job executed on the server is periodically written to the flash memory system, the job It is meaningless to record checkpoint data for a time longer than re-executing, and a daily or weekly guarantee is sufficient.
  • the server can determine and instruct the guaranteed time of data after the power is turned off. Since the bad block determination threshold and these determination cycles are set uniformly, there is a problem that the number of writable times of the entire system is limited.
  • the server may copy frequently referenced data in the storage system into a high-speed flash memory system and perform only read-out reference. Data in the flash memory system in this state is called clean, and the state of data in which there is no original data in the storage system and the latest data is only in the flash memory system is called dirty.
  • This determination cycle can be set larger than that for dirty data.
  • the present invention has been made in consideration of the above points, and proposes a nonvolatile memory system and an information processing system capable of improving the limit of the number of writable times.
  • the nonvolatile memory controller classifies and manages a plurality of physical blocks in the nonvolatile memory according to data attributes.
  • a physical block classified as the same attribute as the write target data attribute is selected as the write destination. It is characterized by.
  • the computer system issues an attribute instruction that indicates an attribute of data to the nonvolatile memory system.
  • the memory system classifies and manages a plurality of physical blocks in the nonvolatile memory according to the attribute of the data based on the received attribute instruction, and on the other hand, a different refresh determination threshold or bad block for each attribute
  • a physical block classified into the same attribute as the attribute of the data to be written is selected as a writing destination.
  • the limit of the number of writable times can be improved.
  • 1 is an overall configuration diagram of an information processing system in the present embodiment. It is a whole block diagram of another information processing system. 1 is an overall configuration diagram of a flash memory system. It is an internal block diagram of flash memory. It is an internal block diagram of a block. It is an internal block diagram of a page. It is a logical block diagram of a logical address table. It is a logical block diagram of a physical address table. It is a logic block diagram of a threshold value table. It is a logic block diagram of a history table. It is a conceptual block diagram of a physical block management list group. It is an internal block diagram of a management list. It is an internal block diagram of a command. It is an internal block diagram of another command. It is an internal block diagram of another command.
  • FIG. 1 shows the overall configuration of an information processing system 1 in the present embodiment.
  • the information processing system 1 includes a host CPU (Central Processing Unit) 101, a main memory 102, a flash memory system 103, and a storage system 104.
  • the host CPU 101 is communicably connected to each unit via signal lines 105-107.
  • the flash memory system 103 receives a data read / write instruction from the host CPU 101 via the signal line 106. Further, in the present embodiment, the flash memory system 103 receives the RT (Retention Time) time of data and information (attribute information) indicating that the data is clean or dirty from the host CPU 101.
  • RT Retention Time
  • FIG. 2 shows the overall configuration of another information processing system 1A.
  • the flash memory system 103 is different from the information processing system 1 in FIG. 1 in that the flash memory system 103 is arranged in the storage system 104.
  • the flash memory system 103 receives a data read / write instruction from the storage controller CPU 108 and receives attribute information.
  • FIG. 3 shows the internal configuration of the flash memory system 103.
  • the flash memory system 103 includes a flash memory controller 111 and a plurality of flash memories 119.
  • the processor 113 when the processor 113 receives a data read / write instruction from the host CPU 101 via the signal line 106 and the host interface 112, the processor 113 accesses a RAM (Random Access Memory) 115 and stores the flash stored in the RAM 115.
  • the block management information 115A is referred to or updated.
  • the processor 113 accesses the flash memory 119 via the flash memory interface 116 with reference to the flash block management information 115A.
  • the processor 113 temporarily stores data to be read in the buffer 114 via the flash memory interface 116 and then issues a read completion notification to the host CPU 101.
  • the flash memory interface 116 includes an error correction circuit 116A.
  • the error correction circuit 116A performs error correction using the ECC (FIG. 6) added to the data when reading the data. Then, the corrected data and the error rate at the time of reading are stored in the buffer 114.
  • the processor 113 temporarily stores the data to be written in the buffer 114 and then writes it in the flash memory 119.
  • the error correction circuit 116A adds ECC (FIG. 6) to the data when writing the data.
  • the processor 113 accesses the RAM 115 and appropriately updates the flash block management information 115A. Further, the processor 113 performs a refresh determination process and a defective block determination process on the blocks in the flash memory 119 based on a predetermined determination cycle.
  • FIG. 4 shows the internal configuration of the flash memory 119.
  • the flash memory 119 is composed of a plurality of blocks 125.
  • a block 125 is a storage area of an erase unit.
  • FIG. 5 shows the internal configuration of the block 125.
  • the block 125 is composed of a plurality of pages 126.
  • the page 126 is a storage area in read / write units.
  • FIG. 6 shows the internal structure of the page 126.
  • the page 126 includes data 127 and ECC (Error Correcting Code) 128.
  • ECC Error Correcting Code
  • FIGS. 7 to 12 show the detailed configuration of the flash block management information 115A stored in the RAM 115.
  • FIG. The drawings in FIGS. 7 to 12 will be described below.
  • FIG. 7 shows a logical configuration of the logical address table 201.
  • the logical address table 201 is used to convert a logical address included in a read / write instruction from the host CPU 101 into a physical address. In the present embodiment, it is used for storing attribute information.
  • the logical address table 201 includes a logical address column 202, a page valid / invalid column 203, a physical page address column 204, and an attribute number column 205.
  • the logical address column 202 stores a logical address included in the read / write instruction from the host CPU 101.
  • the page valid / invalid column 203 stores information indicating whether data is stored in the page. In addition, when data is stored in the page, valid is stored, and when data is not stored, invalid is stored.
  • the physical page address column 204 stores the physical page address of the flash memory 119.
  • the block number and page number are stored as physical page addresses.
  • the attribute number column 205 stores attribute information including RT time and information indicating dirty or clean. Here, numbers assigned in advance to a plurality of attribute information are stored.
  • FIG. 8 shows a logical configuration of the physical address table 206.
  • the physical address table 206 is used to convert a physical address into a logical address.
  • the physical address table 206 includes a physical page address column 207, a page valid / invalid column 208, and a logical address column 209.
  • the physical page address field 207 stores the physical page address of the flash memory 119.
  • the block number and page number are stored as physical page addresses.
  • the page valid / invalid column 208 stores information (valid or invalid) indicating whether or not data is stored in the page.
  • the logical address column 209 stores a logical address included in the read / write instruction from the host CPU 101.
  • data is stored in the physical page address indicated by the block number “101” and the page number “0” (valid), and this physical page address has the logical address “10”. It is shown that it is associated with the logical address.
  • FIG. 9 shows a logical configuration of the threshold value table 211.
  • the threshold value table 211 is used for managing attribute information set in advance.
  • the threshold table 211 includes an attribute number column 212, a refresh determination cycle column 213, a refresh determination threshold column 214, and a defective block determination threshold column 215.
  • an attribute number that uniquely identifies a combination of RT time and information indicating clean or dirty is stored.
  • a plurality of blocks are managed as a plurality of block groups for each attribute indicated by the attribute number. Data of a certain attribute is written to any block in the block group of that attribute.
  • the refresh determination period column 213 stores a period for executing the refresh determination process.
  • the refresh determination threshold value column 214 stores a threshold value (first allowable error rate) used for determining whether or not to execute the refresh process in the refresh determination process.
  • the bad block determination threshold value column 215 stores a threshold value (second allowable error rate) used for determining whether or not the block is a bad block in the bad block determination process.
  • the attribute number is set to 6 types from 1 to 6. However, this is not restrictive, and the range of RT time to be the same attribute is instructed by the management console etc. at the time of system initialization. It is determined.
  • the values of the refresh determination period, the refresh determination threshold value, and the defective block determination threshold value are determined by the system designer based on the error characteristics of the flash memory 119 evaluated in advance.
  • the short RT time means that the data guarantee time may be short, and it is not necessary to frequently execute the refresh process. Therefore, the smaller the RT time, the larger the refresh threshold value is set so that the refresh process is not executed frequently. In addition, the refresh threshold is set to a large value because it is not necessary to frequently execute the refresh process for clean data that may be lost in the worst case.
  • FIG. 10 shows a logical configuration of the history table 216.
  • the history table 216 is used to manage the usage status of each block group when managing a plurality of blocks for each attribute as a block group.
  • the history table 216 includes an attribute number column 217, a current capacity column 218, and a maximum capacity column 219.
  • attribute number column 217 an attribute number that uniquely identifies a combination of RT time and information indicating clean or dirty is stored.
  • the current capacity column 218 stores the current capacity for each attribute.
  • the maximum capacity column 219 stores the maximum capacity for each attribute.
  • the capacity of each block group to be prepared depends on the characteristics of the application program executed in the information processing system 1.
  • the application may instruct the flash memory system 103 in advance of the capacity ratio between block groups. The instruction command and the processing flow will be described later.
  • the flash memory system 103 may determine the capacity ratio by observing the usage history of the application.
  • FIG. 11 shows a conceptual configuration of the physical block management list group 220.
  • the physical block management list group 220 is used to manage block groups divided for each attribute.
  • the physical block management list group 220 includes a write destination selection list 221, a refresh destination selection list 223, and a refresh determination list 226 for each attribute.
  • a reserve list 229 for registering blocks not registered in any management list and a defect list 230 for registering defective blocks are provided.
  • data is stored in some pages (valid) among blocks belonging to the block group having any attribute, and data is not stored in some pages and is empty.
  • Active (invalid) blocks are registered. That is, a block including a partially valid / invalid page is registered.
  • the blocks registered in the write destination selection list 221 are managed so that they are always sorted in ascending order of error rate calculated at the time of previous reading.
  • the write destination selection list 221 belongs to a block group corresponding to the attribute of the data to be written when a data write instruction is received from the host CPU 101, and can be written (some pages are empty). Used to select the page with the lowest error rate. By selecting the block with the lowest error rate, dynamic wear leveling at the time of writing is realized.
  • the writing destination selection list 221 may be sorted by combining the above information, and the writing destination may be selected.
  • the refresh destination selection list 2223 blocks in which all pages are free among the blocks belonging to the block group of any attribute are registered. That is, a block including all invalid pages is registered.
  • the blocks registered in the refresh destination selection list 223 are managed so that they are always sorted in ascending order of error rates calculated at the time of previous reading.
  • the refresh destination selection list 223 belongs to the block group corresponding to the attribute of the data to be refreshed when the processor 113 executes the refresh process, and all data of the refresh source can be written (all pages). Used to select the page with the lowest error rate.
  • the refresh determination list 2226 among blocks belonging to a block group having any attribute, a block in which data is stored in some pages and a block in which data is stored in all pages are registered. That is, a block including some or all valid pages is registered.
  • the blocks registered in the refresh determination list 226 are managed so that they are always sorted in the order of physical block numbers.
  • FIG. 12 shows the internal structure of the management list 231. Since the internal configuration of each management list (221, 223, 226, 229, 230) in FIG. 11 is the same, each management list is generically described as the management list 231.
  • the management list 231 includes a plurality of block information 232 including a pointer 232A, a physical block number 232B, and a previous error rate 232C, and has a list structure in which a plurality of block information 232 is linked by the pointer 232A.
  • the physical block number 232B stores a physical block number corresponding to each management list
  • the previous error rate 232C stores an error rate calculated at the previous read time. In the case of the preliminary list 229, the previous error rate 232C is empty.
  • FIG. 13 shows an internal configuration of a command issued by the host CPU 101.
  • an attribute instruction command 304 As commands issued by the host CPU 101, an attribute instruction command 304, a write instruction command 305, a read instruction command 306, and an invalidation instruction command 307 will be described here. These commands are issued by the host CPU 101 and then received by the flash memory system 103.
  • the attribute instruction command 304 is a command for instructing the attribute of data to be read / written, and is composed of a plurality of areas 304A to 304F.
  • the area 304A is an area for declaring an attribute instruction command
  • the area 304B is an area for designating a range (logical address of the flash memory 119)
  • the area 304D is an area for designating a size.
  • the area 304E and the area 304F are areas for designating attributes (RT time, clean or dirty) for data of a designated range and size.
  • the write instruction command 305 is a command for instructing data writing, and includes a plurality of areas 305A to 305D.
  • the area 305A is an area for declaring that it is a write instruction command
  • the area 305B is an area for designating a write destination range (logical address of the flash memory 119)
  • the area 305C is a write source (main memory).
  • 102 is a region for designating a data size of a write instruction target.
  • the read instruction command 306 is a command for instructing data reading, and includes a plurality of areas 306A to 306D.
  • the area 306A is an area that declares that it is a read instruction command
  • the area 306B is an area that specifies a read source range (logical address of the flash memory 119)
  • an area 306C is a read destination range
  • the area 306D is an area for designating the data size of the read instruction target.
  • the invalidation instruction command 307 is a command for instructing a range that may be invalidated, and includes a plurality of areas 307A to 307D.
  • the area 307A is an area that declares an invalidation instruction command
  • the area 307B is an area that designates a range to be invalidated (logical address of the flash memory 119)
  • an area 307D is an invalidation target. This area specifies the data size.
  • FIG. 14 shows the internal structure of another command. These commands are commands used in the third embodiment to be described later, and are points that specify attributes in the write instruction command 302 without using the attribute instruction command 304 (points having an area 301E and an area 301F). Different from the command of FIG. Details of processing executed using this command will be described later (FIGS. 23A and 23B).
  • FIG. 15 shows the internal structure of another command.
  • This command is a command used in a second embodiment to be described later, and is a capacity ratio instruction command 308 used in addition to the command of FIG.
  • the capacity ratio instruction command 308 is a command for instructing the flash memory system 103 in advance with a capacity ratio between block groups, and includes a plurality of areas 308A to 308D.
  • An area 308A is an area for declaring that it is a capacity ratio instruction command
  • an area 308B and an area 308C are areas for specifying attributes of data to be read / written
  • an area 308D is a capacity ( This is an area for specifying the capacity for each attribute. Details of processing executed using the capacity ratio instruction command 308 will be described later (FIG. 22).
  • FIG. 16A and FIG. 16B show the processing procedure of the writable count improvement process.
  • This writeable frequency improvement process is executed by the flash memory controller 111 when, for example, a command to start processing is issued from the host CPU 101.
  • the processing of each command is executed using only attribute number 1 while monitoring the usage history of each attribute until step S1013 is reached.
  • the attribute of attribute number 1 is the attribute with the smallest bad block determination threshold.
  • the flash memory controller 111 initializes the logical address table 201 (FIG. 7), the physical address table 206 (FIG. 8), the threshold table 211 (FIG. 9), and the history table 216 (FIG. 10).
  • a management list (221, 223, 226), a spare list 229, and a defect list 230 are created (S1001).
  • the flash memory controller 111 sets invalid bits in all of the page valid / invalid fields 203 and 208, and initializes the logical address table 201 and the physical address table 206.
  • the flash memory controller 111 sets a predetermined value (cycle) in the refresh determination cycle field 213 and sets a predetermined threshold (allowable error rate) in the refresh determination threshold field 214 and the defective block determination threshold field 215. Then, the threshold value table 211 is initialized. The flash memory controller 111 initializes the history table 216 by setting 0 in the current capacity column 218 and the maximum capacity column 219.
  • the flash memory controller 111 creates a spare list 229 by registering a predetermined number of blocks among the plurality of blocks of the flash memory 119 in the spare list 229, and blocks defective at the time of shipment in the defect list 230.
  • the defect list 230 is created by registration.
  • the flash memory controller 111 registers blocks other than the blocks registered in the spare list 229 and the defect list 230 in the refresh destination selection list 223 of attribute number 1 to create and register the refresh destination selection list 223 of attribute number 1.
  • the write destination selection list 221 and the refresh determination list 226 with the attribute number 1 are created in a state where no block exists.
  • the flash memory controller 111 determines whether or not the attribute instruction command 304 has been received (S1002). If the flash memory controller 111 obtains a negative result in the determination at step S1002, the flash memory controller 111 proceeds to step S1004.
  • the flash memory controller 111 when the flash memory controller 111 obtains a positive result in the determination at step S1002, the flash memory controller 111 registers the attribute number corresponding to the specified attribute in the logical address table 201, and stores the capacity corresponding to the specified size in the history. The data is updated in the table 216 (S1003).
  • the flash memory controller 111 determines whether or not the write instruction command 305 has been received (S1004). If the flash memory controller 111 obtains a negative result in the determination at step S1004, the flash memory controller 111 proceeds to step S1006.
  • the flash memory controller 111 obtains a positive result in the determination at step S1004, it refers to each management list (221, 223, 226) of attribute number 1 and writes from the block group of attribute number 1. The previous page is selected, and data is written to the selected page (S1005).
  • the flash memory controller 111 writes the data and updates the logical address table 201 and the physical address table 206 so that the logical address corresponds to the physical address where the data is written.
  • the block information 232 is moved between the management lists (221, 223, 226) of attribute number 1 to The management list is updated (S1005).
  • the flash memory controller 111 determines whether or not the read instruction command 306 has been received (S1006). If the flash memory controller 111 obtains a negative result in the determination at step S1006, the flash memory controller 111 proceeds to step S1008.
  • the flash memory controller 111 obtains a positive result in the determination at step S1006, it reads data from the physical address corresponding to the designated logical address with reference to the logical address table 201 (S1007).
  • step S1007 the refresh determination process may be executed with reference to the error rate.
  • the flash memory controller 111 determines whether or not the invalidation instruction command 307 has been received (S1008). If the flash memory controller 111 obtains a negative result in the determination at step S1008, the flash memory controller 111 proceeds to step S1010.
  • the flash memory controller 111 obtains a positive result in the determination at step S1008, it refers to the logical address table 201 and the physical address table 206 and invalidates the page of the specified logical address and the corresponding physical address.
  • the logical address table 201 and physical address table 206 are updated (S1009).
  • the block information 232 is moved between the management lists (221, 223, 226) of attribute number 1 and the respective management lists. Update. Also, the history table 216 is updated by reflecting the invalidated capacity phenomenon in the current capacity column 218 of the corresponding attribute (S1009).
  • the flash memory controller 111 refers to the threshold table 211 to determine whether or not the block group having the attribute indicated by the attribute number 1 is the execution timing of the refresh determination process (S1010).
  • step S1010 If the flash memory controller 111 obtains a negative result in the determination at step S1010, it proceeds to step S1012. On the other hand, when the flash memory controller 111 obtains a positive result in the determination in step S1010, it sequentially reads all the blocks registered in the refresh determination list 226 of attribute number 1 and executes a refresh determination process. In this case, refresh processing is executed (S1011).
  • the flash memory controller 111 refers to the threshold value table 211, and determines the refresh determination threshold value (first allowable error rate) corresponding to the attribute number 1 and the previous error rate of the block read from the refresh determination list 226. Compare with 232C. If the previous error rate is equal to or higher than the refresh determination threshold, it is determined that the refresh process needs to be executed.
  • the refresh determination threshold value first allowable error rate
  • the flash memory controller 111 selects the refresh destination block from the refresh destination selection list 223 with the attribute number 1, and writes the block data read from the refresh determination list 226 to the selected block.
  • the flash memory controller 111 refers to the threshold table 211 during the refresh determination process, and determines the bad block determination threshold (second allowable error rate) corresponding to the attribute number 1 and the previous block read from the refresh determination list 226.
  • the error rate 232C is compared. If the previous error rate is equal to or higher than the defective block determination threshold, it is determined that the read block is defective, and this block is registered in the defect list 230 together with the read error rate.
  • the flash memory controller 111 determines whether the history monitoring period has elapsed (S1012). If the flash memory controller 111 obtains a negative result in the determination at step S1012, the flash memory controller 111 proceeds to step S1002 and repeats the processing described above.
  • step S1012 when the flash memory controller 111 obtains a positive result in the determination at step S1012, the flash memory controller 111 proceeds to step S1015 and enables the processing described above for all the attributes other than the attribute number 1 to be executed.
  • Each management list (221, 223, 226) with numbers 2 to 6 is created, the attribute data indicated by the attribute numbers 2 to 6 is written to the corresponding block group block, the logical address table 201, the physical address table 206 and each management list (221, 223, 226) are updated (S1015).
  • the flash memory controller 111 first refers to the maximum capacity column 219 of the history table 216 and acquires the used capacity ratio of each attribute. Next, a refresh destination selection list 223 with attribute numbers 2 to 6 is created, and block information 232 is moved according to the capacity ratio acquired from the refresh destination selection list 223 with attribute number 1.
  • the flash memory controller 111 refers to the logical address table 201 and transfers data to all blocks in the refresh determination list 226 with attribute number 1 to blocks in the refresh destination selection list 223 with attribute numbers 2 to 6.
  • the logical address table 201 and the physical address table 206 are updated, and the block information 232 is added to the write destination selection list 221 and the refresh determination list 226 with the attribute numbers 2 to 6.
  • blocks in which all pages are invalid are generated among the block information 232 in the write destination selection list 221 of attribute number 1 and the refresh determination list 226, and these are attributed according to the used capacity ratio for each attribute. It is distributed to the refresh destination selection list 223 of numbers 2-6.
  • the block with the attribute number 1 is determined to be a bad block in step S1011, the other attribute numbers 2 to 6 may not be a bad block.
  • the blocks determined as defective blocks are moved to the refresh destination selection lists 223 of 2 to 6.
  • the data of all blocks in the refresh determination list 226 with attribute number 1 are transferred at once to the blocks in the refresh destination selection list 223 with original attribute numbers 2 to 6, but this is not restrictive.
  • the write data may be moved little by little to the original write destination selection list 221 and the refresh determination list 226 of the attribute numbers 2 to 6 when the write instruction command 305 is received and when the refresh determination process is executed.
  • step S1019 the management list (221, 223, 226) is written in the block group of original attribute numbers 2 to 6 instead of attribute number 1. Is different from steps S1002 to S1009 in that the management list (221, 223, 226) of the original attribute numbers 2 to 6 is updated instead of the attribute number 1 in step S1023.
  • the flash memory controller 111 After executing the processing of steps S1016 to S1023, the flash memory controller 111 refers to the threshold value table 211 and determines whether the block group having the attribute indicated by the attribute number M (2 to 6) is the execution timing of the refresh determination processing. If it is determined whether or not (S1024) and an affirmative result is obtained, a refresh determination process, a refresh process or a defective block determination process is executed (S1025), and a series of processes in this process is terminated.
  • step S1025 even if the attribute number M (any one of 2 to 6) is determined to be a bad block in the bad block determination process, any other attribute number (any one of 2 to 6 other than M) is bad. If not determined, step S1011 is different in that a process of moving to a block group with another attribute number is executed. Details will be described later (FIG. 21B).
  • FIG. 17 shows a processing procedure of attribute instruction command reception processing.
  • This attribute instruction command receiving process is a process that is executed when the flash memory controller 111 receives the attribute instruction command 304. Specifically, the attribute instruction command receiving process is a detailed process in steps S1003 and S1017 of FIGS. 16A and 16B. is there.
  • the flash memory controller 111 determines whether or not history monitoring has elapsed (S1103).
  • the flash memory controller 111 obtains a negative result in the determination at step S1103, it ends this attribute instruction command receiving process. On the other hand, when the flash memory controller 111 obtains a positive result in the determination at step S1103, it adds the capacity of the logical address range specified in the current capacity column 218 of the corresponding attribute of the history table 216 to add the history table 216 to the history table 216. Update (S1104).
  • the flash memory controller 111 refers to the history table 216 to determine whether the maximum capacity of each attribute is larger than the current capacity (S1105). If the flash memory controller 111 obtains a negative result in the determination at step S1105, it ends this attribute instruction command reception processing. On the other hand, when the flash memory controller 111 obtains a positive result in the determination at step S1105, it updates the value of the corresponding maximum capacity column 219 (S1106), and ends this attribute instruction command receiving process.
  • FIG. 18 shows the processing procedure of the write instruction command reception process.
  • This write instruction command receiving process is a process that is executed when the flash memory controller 111 receives the write instruction command 305, and specifically, is a detailed process in steps S1005 and S1019 of FIGS. 16A and 16B. is there.
  • the flash memory controller 111 assigns the attribute number (attribute number indicating the original attribute of the write data) to be registered in the attribute number column 205 of the logical address table 201 to the variable L (S1202).
  • the flash memory controller 111 determines whether or not the history monitoring period has elapsed (S1203).
  • the flash memory controller 111 obtains a positive result in the determination at step S1203, it substitutes the variable L (any one of 2 to 6) for the variable K to execute processing for the attribute numbers 2 to 6 after the history monitoring period has elapsed. (S1204). In contrast, if the flash memory controller 111 obtains a negative result in the determination at step S1203, it substitutes 1 for the variable K to execute the process for attribute number 1 before the history monitoring period elapses (S1205).
  • the flash memory controller 111 determines whether or not the write destination selection list 221 with the attribute number K is not empty (S1206). If the flash memory controller 111 obtains a positive result in the determination at step S1206, it selects a write destination page from the block groups classified in the write destination selection list 221 with the attribute number K (S1207).
  • the flash memory controller 111 selects the first block information (block information with the lowest error rate) from among the block information registered in the write destination selection list 221 with the attribute number K, thereby writing the write destination. Select the page. Then, the flash memory controller 111 writes data to the selected page (S1211).
  • the flash memory controller 111 determines whether or not the refresh destination selection list 223 with the attribute number K is not empty (S1208). If the flash memory controller 111 obtains a positive result in the determination at step S1208, it selects a write destination page from the block group classified in the refresh destination selection list 223 with the attribute number K (S1209), and selects the selected page. Data is written (step S1211).
  • step S1208 If the flash memory controller 111 obtains a negative result in the determination at step S1208, it selects a write destination page from the block group classified in the preliminary list 229 (S1210), and writes the data to the selected page (step S1210). S1211). In step S1211, data is written to the pages classified in any management list (221, 223, 229).
  • the flash memory controller 111 is instructed to overwrite a logical address that has already been written by the write instruction command 305 and data has been written. It is determined whether or not an old physical page address is registered (S1214).
  • step S1214 If the flash memory controller 111 obtains a negative result in the determination at step S1214, the flash memory controller 111 proceeds to step S1218. On the other hand, when the flash memory controller 111 obtains a positive result in the determination at step S1214, it invalidates the old physical page of the logical address table 201 (S1215).
  • the flash memory controller 111 determines whether all pages in the physical block including the invalidated physical page have been invalidated by the invalidation process in step S1215 (S1216). If the flash memory controller 111 obtains a negative result in the determination at step S1216, the flash memory controller 111 proceeds to step S1218.
  • the flash memory controller 111 when it obtains a positive result in the determination at step S1216, it moves the block information 232 between the management lists (221, 223, 226) of the attribute number K and updates each management list. . Specifically, the block information 232 regarding the old physical block is deleted from the refresh determination list 226, deleted from the write destination selection list 221 (if registered), and registered in the refresh destination selection list 223 (S1217).
  • the flash memory controller 111 registers a new physical page address corresponding to the page selected in step S1207, S1209, or S1210 in the logical address table 201, and also registers a logical address corresponding to the new physical page address in the physical address table 206. (S1218).
  • the flash memory controller 111 determines whether or not a page is selected from the refresh destination selection list 223 or the spare list 229 in step S1209 or S1210 (S1219). If the flash memory controller 111 obtains a negative result in the determination at step S1219, the flash memory controller 111 proceeds to step S1221.
  • the flash memory controller 111 obtains a positive result in the determination at step S1219, a part of the block including the page selected at step S1209 or S1210 becomes valid, so the block information 232 of this block is updated to the refresh destination. It is deleted from the selection list 223 or the reserve list 229, while being registered in the refresh determination list 226 with the attribute number K (S1220).
  • the flash memory controller 111 determines whether there is an empty page in a part of the block including the page selected in step S1209 or S1210 (S1221). When the flash memory controller 111 obtains a positive result in the determination at step S1221, the block information of the block including the page selected at step S1209 or S1210 (if not registered) is written to the write destination selection list 221 with the attribute number K. (S1222), and the write instruction command receiving process is terminated.
  • the flash memory controller 111 determines that all the pages are valid as a result of writing data to the page selected at step S1209 or S1210. Is deleted from the write destination selection list 221 of the attribute number K (if registered) (S1223), and the write instruction command receiving process is terminated.
  • FIG. 19 shows a processing procedure for reading instruction command reception processing.
  • This read instruction command receiving process is a process that is executed when the flash memory controller 111 receives the read instruction command 306. Specifically, the read instruction command receiving process is a detailed process in steps S1007 and S1021 of FIGS. 16A and 16B. is there.
  • the flash memory controller 111 reads the data from the physical page address corresponding to the designated logical address with reference to the logical address table 201 (S1302), and ends the read instruction command receiving process.
  • FIG. 20 shows the processing procedure of the invalidation instruction command reception processing.
  • This invalidation instruction command receiving process is a process that is executed when the flash memory controller 111 receives the invalidation instruction command 307. Specifically, the details are detailed in steps S1009 and S1023 of FIGS. 16A and 16B. It is processing.
  • the flash memory controller 111 refers to the logical address table 201 and the physical address table 206 to invalidate the old physical page address corresponding to the designated logical address (S1305).
  • the flash memory controller 111 determines whether all pages in the physical block including the invalidated physical page have been invalidated by the invalidation process in step S1305 (S1306). If the flash memory controller 111 obtains a negative result in the determination at step S1306, the flash memory controller 111 proceeds to step S1312.
  • the flash memory controller 111 determines whether or not the history monitoring period has elapsed (S1308).
  • the flash memory controller 111 executes processing for any of the attribute numbers 2 to 6 after the history monitoring period elapses. ) Is substituted (S1309).
  • the flash memory controller 111 obtains a negative result in the determination at step S1308, it substitutes 1 for the variable K in order to execute the process for the attribute number 1 before the history monitoring period elapses (S1310).
  • the flash memory controller 111 moves the block information 232 between each management list (221, 223, 226) of the attribute number K and updates each management list. Specifically, the block information 232 relating to the old physical block is deleted from the refresh determination list 262, deleted from the write destination selection list 221 (if registered), and registered in the refresh destination selection list 223 (S1311).
  • the flash memory controller 111 determines whether or not the history monitoring period has elapsed (S1312). If a negative result is obtained in this determination, the invalidation instruction command receiving process is terminated. On the other hand, if the flash memory controller 111 obtains a positive result in this determination, it subtracts the capacity in the range of the logical address designated from the current capacity column 218 of the corresponding attribute of the history table 216, thereby subtracting the history table 216 from the history table 216. It is updated (S1313), and the invalidation instruction command receiving process is terminated.
  • FIG. 21A and 21B show a processing procedure for the refresh determination process and the bad block determination process.
  • This refresh determination process and bad block determination process are processes executed by the flash memory controller 111 when the block group of any attribute is the execution timing of the refresh determination process. Specifically, FIG. And detailed processing in S1011 and S1025 of FIG. 16B.
  • the flash memory controller 111 refers to the threshold value table 211 and determines whether or not the block group having the attribute indicated by the attribute number M (any one of 1 to 6) is the execution timing of the refresh determination process (S1402). ). If the flash memory controller 111 obtains a negative result in this determination, it ends this refresh determination processing and bad block determination processing.
  • the flash memory controller 111 obtains a positive result in the determination at step S1402, the flash memory controller 111 selects one physical block from the block information 232 registered in the refresh determination list 226 with the attribute number M, and selects the selected physical block. The data is read out to calculate the error rate (S1403).
  • the flash memory controller 111 refers to the threshold table 211 to determine whether or not the calculated error rate is equal to or higher than the corresponding refresh determination threshold (first allowable error rate) (S1405). If the flash memory controller 111 obtains a positive result in this determination, it first determines whether or not the refresh destination selection list 223 with the attribute number M is not empty in order to execute the refresh process (S1406).
  • the flash memory controller 111 obtains a positive result in the determination at step S1406, it selects the block to be refreshed from the refresh destination selection list 223 with the attribute number M (S1407). At this time, the block of the block information 232 at the head (the error rate is minimum) in the management list is selected. On the other hand, if the flash memory controller 111 obtains a negative result in the determination at step S1406, it selects a block to be refreshed from the preliminary list 229 (S1408).
  • the flash memory controller 111 writes all the data read in step S1403 to the selected physical block (refresh processing), registers the corresponding new physical page address in the logical address table 201, and stores the corresponding logical address in the physical address table. It registers in 206.
  • the physical block from which the physical address table 206 is read is invalidated, the selected physical block is deleted from the refresh destination selection list 223 or the spare list 229 with the attribute number M, and registered in the refresh determination list 226 with the attribute number M (S1409). ).
  • the error rate calculated in step S1403 is included in a sortable position in the block information 232 before registration.
  • the flash memory controller 111 determines whether there is still an empty page in the write destination block written by the refresh process (S1410). If the block read in step S1403 has no space, a negative result is obtained because there is no space in the write destination block. If some of the blocks are free, a positive result is obtained because the write destination block is also free. It will be.
  • step S1410 If the flash memory controller 111 obtains a negative result in the determination at step S1410, the process proceeds to step S1423. On the other hand, if the flash memory controller 111 obtains a positive result in the determination at step S1410, it registers the block information 232 of the write destination block in the write destination selection list 221 with the attribute number M (S1411), and proceeds to step S1423. Transition.
  • step S1405 if the flash memory controller 111 obtains a negative result in the determination of step S1405, it determines that the execution of the refresh process is not necessary, and updates the corresponding error rate in the refresh determination list 226 for attribute number M. (S1412).
  • the flash memory controller 111 determines whether or not the block information 232 corresponding to the physical block selected in step S1403 is registered in the write destination selection list 221 with the attribute number M (S1413).
  • step S1413 If the flash memory controller 111 obtains a negative result in the determination at step S1413, the process proceeds to step S1429. On the other hand, when the flash memory controller 111 obtains a positive result in the determination at step S1413, it updates the error rate of the block information 232 registered in the write destination selection list 221 with the attribute number M (S1414). The process shifts to S1429.
  • the flash memory controller 111 receives the block information 232 for the old read-source physical block from the refresh determination list 226 with the attribute number M. Delete (if registered) from the write destination selection list 221 (S1423).
  • the flash memory controller 111 refers to the threshold table 211 and determines whether or not the error rate calculated in step S1403 is equal to or higher than the corresponding defective block determination threshold (second allowable error rate) (S1424).
  • the flash memory controller 111 obtains a negative result in this determination, it determines that the old physical block to be read is not a bad block, and registers the block information 232 of this physical block in the refresh destination selection list 223 with the attribute number M (S1425), the process proceeds to step S1429.
  • the error rate calculated in step S1403 is included in a sortable position in the block information 232 before registration.
  • the flash memory controller 111 obtains a positive result in the determination at step S1424, the block having the attribute indicated by the attribute number M is a bad block, but the block having another attribute may not be a bad block. Therefore, with reference to the threshold table 211, it is determined whether there is an attribute number J of a defective block determination threshold smaller than the error rate calculated in step S1403 (S1426).
  • step S1424 is executed only for attribute number 1 before the history monitoring period elapses, the process proceeds to step S1428 without proceeding to step S1426.
  • the flash memory controller 111 obtains a positive result in the determination at step S1426, it registers the block information of the old physical block of the read source in the refresh destination selection list 223 with the attribute number J (S1427), and proceeds to step S1429. In this case, the registration is performed after the error rate is included in a sortable position in the block information 232.
  • the flash memory controller 111 determines that the read-out physical block is a bad block in any attribute indicated by any attribute number (1 to 6).
  • the physical block is registered in the defect list 230 (S1428), and the process proceeds to step S1429.
  • the flash memory controller 111 determines whether or not the processing described above has been executed for all block information registered in the refresh determination list 226 with the attribute number M (S1429). If the flash memory controller 111 obtains a negative result in this determination, it proceeds to step S1403 in order to repeatedly execute the above-described processing for other physical blocks having the same attribute. On the other hand, when the flash memory controller 111 obtains a positive result in this determination, it ends the refresh determination process and the defective block determination process.
  • Second Embodiment in an appliance server system or the like that executes a specific process, an application running on the host CPU 101 stores a capacity ratio between block groups in the flash memory system 103 in advance. It differs from the first embodiment in that it is instructed.
  • the information processing system in the second embodiment will be described below. The description of the same configuration as that of the first embodiment is omitted, and a different configuration will be described.
  • FIG. 22 shows the processing procedure of the second writable count improvement processing.
  • the second writable count improvement process is executed by the flash memory controller 111 when a command to start processing is issued from the host CPU 101, for example.
  • a capacity ratio instruction command 308 in FIG. 15 is used in addition to the commands in FIG.
  • the flash memory controller 111 initializes the logical address table 201, the physical address table 206, and the threshold table, initializes the history table 216 based on the capacity ratio instruction command 308, and manages each management list (221, Attribute Number 1 to 6). 223, 226), the preliminary list 229 and the defect list 230 are created (S1515).
  • the flash memory controller 111 sets invalid bits in all of the page valid / invalid fields 203 and 208, and initializes the logical address table 201 and the physical address table 206.
  • the flash memory controller 111 sets a predetermined determination period in the refresh determination period column 213 for each attribute of the attribute numbers 1 to 6, and is predetermined in the refresh determination threshold field 214 and the defective block determination threshold field 215.
  • a threshold value (allowable error rate) is set, and the history table 216 is initialized.
  • the flash memory controller 111 initializes the history table 216 based on the designated capacity because the capacity for each of the attribute numbers 1 to 6 is designated by the capacity ratio instruction command 308.
  • the flash memory controller 111 creates a spare list 229 by registering a predetermined number of blocks among the plurality of blocks of the flash memory 119 in the spare list 229, and blocks defective at the time of shipment in the defect list 230.
  • the defect list 230 is created by registration.
  • the flash memory controller 111 registers the blocks other than the blocks registered in the spare list 229 and the defect list 230 in the refresh destination selection list 223 having the attribute numbers 1 to 6 based on the capacity ratio registered in the history table 216.
  • a refresh destination selection list 223 with numbers 1 to 6 is created.
  • the write destination selection list 221 and the refresh determination list 226 with the attribute numbers 1 to 6 are created in a state where there is no block to be registered.
  • steps S1516 to S1525 is the same as the processing in steps S1016 to S1026 after the history monitoring organization in FIG. 16B, description thereof is omitted here.
  • the third embodiment is different from the first embodiment in that the attribute of data is designated for each writing using the write instruction command 301 of FIG. 14 without using the attribute instruction command 304. This is different from the embodiment.
  • description of the same configuration as that of the first embodiment will be omitted, and a different configuration will be described.
  • the host CPU 101 uses the flash memory system 103, it may not be determined in advance how much data with a certain attribute is read or written. In this case, since the host CPU 101 cannot issue the attribute instruction command 304 in FIG. 13, the attribute of the data to be written every time writing is performed using the write instruction command 301 in FIG. 14 instead of the attribute instruction command 304. specify.
  • FIGS. 23A and 23B show a processing procedure of the third writable number improvement processing.
  • This third writable count improvement process is executed by the flash memory controller 111 when the host CPU 101 issues a process start instruction command, for example.
  • a process start instruction command for example.
  • each command in FIG. 15 is used.
  • the third writable number improvement process shown in FIGS. 23A and 23B is performed in the write instruction command reception process without performing the attribute instruction command reception process (FIG. 16A: S1002, S1003, FIG. 16B: S1016, S1017). This is different from the first embodiment in that an instruction command receiving process is executed.
  • the write command reception process (S1604, S1605, S1618, S1619) will be described below.
  • steps S1604 and S1605 will be described.
  • the flash memory controller 111 receives the write instruction command 301 before the attribute monitoring organization has elapsed (S1604: YES), refer to each management list (221, 223, 226) of attribute number 1. Then, a write destination page is selected from the block group with attribute number 1, and data is written to the selected page (S1605).
  • the flash memory controller 111 writes the data and updates the logical address table 201 and the physical address table 206 so that the logical address corresponds to the physical address where the data is written. Further, based on the attribute specified by the write instruction command 301, the attribute number is registered in the attribute number column 205 of the logical address table 201 (S1605).
  • the flash memory controller 111 has a block information between the management lists (221, 223, and 226) of attribute number 1 because there is a partly valid / invalid block or a whole valid block by writing data. 232 is moved and each management list is updated. Further, the size instructed by the write instruction command is added to the corresponding current capacity column 218 of the history table 216, and when the current capacity becomes larger than the maximum capacity, the maximum capacity field is also updated (S1605).
  • steps S1618 and S1619 will be described.
  • the flash memory controller 111 receives the write instruction command 301 after the attribute monitoring period has elapsed (S1618: YES)
  • the flash memory controller 111 selects the write destination from any of the block groups of attribute numbers 2 to 6. A page is selected, and data is written to the selected page (S1619).
  • the flash memory controller 111 writes the data and updates the logical address table 201 and the physical address table 206 so that the logical address corresponds to the newly written physical address.
  • the block information 232 is moved by the management lists (221, 223, 226) of the attribute numbers 2 to 4, and each management list is moved. Update.
  • the history table 216 is not updated.
  • a program on the host CPU 101 instructs data attributes (RT time, clean or dirty) according to the method of using the flash memory system 103 and information in the program.
  • data attributes RT time, clean or dirty
  • FIG. 24 shows the internal configuration of the main memory 102.
  • the main memory 102 includes an application 401, middleware 402, file system 403, device driver 404, and interfaces 402A, 403A, and 404A. These programs are executed by the host CPU 101.
  • the device driver 404 accesses the flash memory system 103 using each command shown in FIGS.
  • a file system 403 is provided on the device driver 404.
  • the application 401 and the middleware 402 can access the flash memory system 103 as a high-speed file system via the interface 403A.
  • the middleware 402 can directly access the device driver 404 via the interface 404A and use the flash memory system 103 as if it were an extended area of the main memory 102, instead of a file system.
  • the application 401 uses the interface 402A, which is a special interface provided from the middleware 402, so that the flash memory system 103 is used as if it is an extended area of the main memory 102 via the middleware without going through the file system. can do.
  • FIG. 25 shows a data arrangement configuration in the information processing system 1.
  • Each data is arranged in the storage system 104, the flash memory system 103, and the main memory 102.
  • files E and F are arranged in the storage system 104.
  • Files C and D are arranged in the flash memory system 103, and areas A and B used as a main memory expansion area are arranged.
  • the main memory 102 also periodically stores a transfer buffer 405 for transferring data between the storage system 104 and the flash memory system 103, a work area 406 for the host CPU 101 to perform calculations, and data being calculated.
  • the checkpoint data 409 for writing to the flash memory system 103 is stored. A configuration in which a program on the host CPU 101 uses the flash memory system 103 using these data will be described below with reference to FIGS.
  • FIG. 26 shows a first processing flow by the application 401.
  • This first processing flow is processing when the application 401 uses the file C on the flash memory system 103 as a high-speed file system via the file system 403. Note that the processing is actually executed in cooperation with the host CPU 101 and the application 401, but here, for convenience of explanation, the processing entity will be described as the application 401.
  • the application 401 declares that the file C on the flash memory system 103 is to be used and secures the file C (S2001). Since it is used as a permanent file in the declaration, for example, one month is specified as the RT time, and since it is used as a main body file instead of a copy of the storage system 104, dirty is specified.
  • the application 401 reads the file E in the storage system 104 onto the work area 406 of the main memory 102, and writes the read file E into the file C as an initial value (S2002).
  • the application 401 determines whether or not the data of the file C is necessary (S2003).
  • step S2003 If the application 401 obtains a negative result in the determination at step S2003, the application 401 proceeds to step S2005.
  • the application 401 reads a part of the file C onto the work area 406 of the main memory 102 (S2004). The application 401 executes processing on the work area 406 and writes the execution result in the file C (S2005).
  • the application 401 determines whether or not the processing is completed (S2006). If the application 401 obtains a negative result in this determination, it proceeds to step S2003 and repeats the processing described above. On the other hand, if the application 401 obtains a positive result in this determination, it ends this first processing flow.
  • FIG. 27 shows a second processing flow by the middleware 402.
  • This second processing flow is processing when the middleware 402 (database system) uses the file C on the flash memory system 103 via the file system 403 as a high-speed database system. Note that the processing is actually executed in cooperation with the host CPU 101 and the middleware 402, but here, for convenience of explanation, the processing entity will be described as the middleware 402.
  • the middleware 402 declares that the file C on the flash memory system 103 is to be used and secures the file C (S2101). In the declaration, since it is used as a permanent database, for example, one month is specified as the RT time, and since it is used as a main body file instead of a copy of the storage system 104, dirty is specified.
  • the middleware 402 reads the original database (file E) in the storage system 104 onto the transfer buffer 405 of the main memory 102, and writes the read file E into the file C as an initial value (S2102).
  • the middleware 402 determines whether or not the transfer of all data to the file C has been completed (S2103).
  • step S2103 If the middleware 402 obtains a negative result in the determination at step S2103, it proceeds to step S2102 and repeats the above processing. On the other hand, when the middleware 402 obtains a positive result in the determination in step S2103, it notifies the application 401 of the completion of initialization (S2104). Next, the middleware 402 determines whether or not a reference type query from the application 401 has been received (S2105).
  • the middleware 402 When the middleware 402 obtains a positive result in the determination in step S2105, the middleware 402 reads a part of the reference target file C onto the work area 406 of the main memory 102, processes the reference type query on the work area 406, and obtains the processing result. After the processing result is committed to the file C, it is returned to the application 401 (S2106).
  • the middleware 402 determines whether an update type query from the application 401 has been received (S2105). If the middleware 402 obtains a negative result in this determination, it moves to step S2105 and repeats the above processing. On the other hand, when the middleware 402 obtains a positive result in this determination, it executes a process for the update type query.
  • the middleware 402 reads a part of the file C to be updated onto the work area 406 of the main memory 102, processes the update type query on the work area 406, writes the processing result to the file C, and outputs the processing result. After committing to the file C, it is returned to the application 401 (S2108).
  • FIG. 28 shows a third processing flow by the middleware 402.
  • the middleware 402 database system
  • the middleware 402 database system
  • the middleware 402 uses the file E in the storage system 104 as a database
  • This is a process for securing a temporary area necessary for the query process on the high-speed flash memory system 103 when the data cannot be stored and the file access must be repeated.
  • the processing is actually executed in cooperation with the host CPU 101 and the middleware 402, but here, for convenience of explanation, the processing entity will be described as the middleware 402.
  • the middleware 402 determines whether or not a reference-type large-scale query from the application 401 has been received (S2201). If the middleware 402 obtains a positive result in this determination, it secures the area A on the flash memory system 103 (S2202). If the power interruption occurs during the process, the query process may be discarded without being completed, so the RT time is designated as 0. Also, since this is a reference type query and the original data is in the storage system 104, clean is designated.
  • the middleware 402 sequentially transfers and writes a part of the data of the file E necessary for the query processing to the area A via the transfer buffer 405 on the main memory 102 (S2203).
  • the middleware 402 writes all the data of the file E into the area A, and determines whether or not the data transfer is completed (S2204).
  • the middleware 402 proceeds to step S2203 and repeats the above processing.
  • the middleware 402 obtains a positive result in the determination at step S2204, it sequentially reads all data in the area A into the work area 406 of the main memory 102, executes query processing on the work area 406, and obtains the processing result. Data is written on the work area 406 (S2205).
  • the middleware 402 executes query processing for all data in the area A and determines whether the processing is completed (S2206). If the middleware 402 obtains a negative result in this determination, it moves to step S2205 and repeats the above processing. On the other hand, when the middleware 402 obtains a positive result in this determination, it releases the area A and returns the processing result to the application 401 (S2207).
  • step S2201 when the middleware 402 obtains a negative result in the determination of step S2201, it determines whether a simple query that does not require the area A has been received (S2208). If the middleware 402 obtains a negative result in this determination, it moves to step S2201 and repeats the above processing. On the other hand, when the middleware 402 obtains a positive result in this determination, it reads necessary data from the file E in the storage system 104 onto the work area 406 of the main memory 102, and executes query processing (S2209).
  • FIGS. 29 and 30 show a fourth processing flow by the application 401 and a fifth processing flow by the middleware 402.
  • the fourth and fifth processing flows are processes when the middleware 402 such as a large-scale data analysis framework provides the application 401 with an environment in which the flash memory system 103 is used as the main memory expansion area.
  • the middleware 402 such as a large-scale data analysis framework provides the application 401 with an environment in which the flash memory system 103 is used as the main memory expansion area.
  • the application 401 notifies the middleware 402 of the number of data to be processed. Further, the middleware 402 is notified of the files E and F in the storage system 104 storing the original data G and H used for the calculation (S2401).
  • the middleware 402 When the middleware 402 receives these notifications, it estimates the total capacity of the data G and H based on the number of data to be processed. As a result of estimation, if it is found that the total capacity of the data G and H does not fit in the main memory 102, the data G and H are divided into a plurality of partial areas in consideration of the main storage capacity. Then, areas A and B corresponding to the total capacity of the data G and H are secured on the flash memory system 103 (S2501).
  • the middleware 402 transfers all data of the file E to the area A via the main memory 102 (S2502, S2503), and transfers all data of the file F to the area B (S2504, S2505). Further, according to the determined division, the middleware 402 reads the partial areas of the data G and H from the areas A and B onto the work area 406 of the main memory 102, and notifies the application 401 of the completion of partial calculation preparation (S2506).
  • the application 401 When the application 401 receives the partial calculation preparation completion notification (S2402: YES), the application 401 executes the calculation using the data G and H on the work area 406, and updates the data H on the work area 406. When the partial calculation for one time is completed, the middleware is notified (S2403).
  • the middleware 402 When the middleware 402 receives the partial calculation completion notification from the application 401 (S2507: YES), the middleware 402 writes the data H on the main memory 102 to the area B (S2508), and unless it receives a total calculation end notification from the application 401 (S2509: NO), reading the next partial area from the areas A and B to the main memory 102 is repeated.
  • the process is repeated from the first partial areas of the areas A and B.
  • the application 401 When the application 401 repeats the partial calculation and all the calculations are completed (S2404: YES), the application 401 notifies the middleware 402 of the completion of all the calculations (S2405).
  • the middleware 402 When the middleware 402 receives the notification of completion of all calculations from the application 401, the middleware 402 transfers the entire area B to the file F in the storage system 104 (S2510), and when the transfer is completed (S2511: YES), notifies the application 401 (S2512). ). When the application 401 receives a file output completion notification from the middleware 402 (S2406: YES), the application 401 ends the process.
  • FIG. 31 shows a sixth processing flow by the application 401 or the middleware 402.
  • This sixth processing flow is performed when a middleware 402 such as a large-scale data analysis framework or an application 401 such as a large-scale scientific calculation executes an analysis calculation that takes a very long time, and the intermediate result of the calculation is used as a checkpoint file in the flash memory.
  • This is a process for storing on the system 103.
  • the middleware 402 or the application 401 estimates the total execution time of the program and the amount of checkpoint data based on the number of data to be processed (S2301).
  • the time required for the checkpoint (stored in the flash memory system 103) is estimated from the checkpoint data amount, and the checkpoint cycle is determined so that the estimated time does not impose the execution time of the entire program (S2301).
  • the checkpoint is for restarting the calculation from the previous checkpoint when an analysis calculation that takes a long time is interrupted due to a power failure, etc., so the checkpoint data is retained for a long time longer than the total execution time of the program. It doesn't make sense. The reason is that the program can be re-executed from the beginning if that time is available. Therefore, the middleware 402 or the application 401 determines the RT time based on the total execution time of the program. In this example, it is 1 day (S2301).
  • the middleware 402 or the application 401 When the checkpoint cycle is reached (S2302: YES), the middleware 402 or the application 401 creates checkpoint data on the main memory 102 (S2303), and secures a file C on the flash memory system 103 as a checkpoint file.
  • the RT time designates one day determined as described above, and since the checkpoint file is stored only on the flash memory system 103, the dirty is designated. Then, the middleware 402 or the application 401 writes the checkpoint data on the main memory 102 to the file C (S2304: YES, S2305).
  • the middleware 402 or the application 401 When the next checkpoint cycle is reached (S2302: YES), the middleware 402 or the application 401 creates checkpoint data on the main memory 102 (S2303), and performs a new check on the flash memory system 103 as a checkpoint file. A point file D is secured. Then, the middleware 402 or the application 401 writes the checkpoint data on the main memory 102 to the file D, and then releases the file C (S2304: NO, S2306).
  • the middleware 402 or the application 401 executes the checkpoint by alternately using the file C and the file D until the execution of the program is completed.
  • the two files C and D are used to explicitly indicate the release timing of the files C and D to the flash memory system 103.
  • the second checkpoint is performed using only one file C. Sometimes writing may be performed from the top of file C.
  • the checkpoint data is created on the main memory 102 here, when the processing flows of FIGS. 29 and 30 are used together, the data in the region B of FIG. 30 may be used as the checkpoint data.
  • a plurality of physical blocks in the flash memory are assigned data attributes (RT time and type of clean or dirty). ), And on the other hand, a different refresh determination period, refresh determination threshold, and bad block determination threshold are managed for each attribute, and based on a different refresh determination period, refresh determination threshold, and bad block determination threshold for each attribute. Since the refresh determination process and the bad block determination process are executed for the physical block with the corresponding attribute, the refresh determination process and the bad block determination process are performed with an appropriate cycle and threshold for data that requires a long-term guarantee. Can run and also for a short time Since it is possible to prevent unnecessary refresh determination processing and bad block determination processing from being executed for data that can be guaranteed, the number of writable times in the entire system can be improved while maintaining data guarantee.
  • the physical block with the lowest error rate is selected from the physical blocks with the corresponding attribute and written, and the leveling of deterioration accompanying the writing (wear leveling) can be executed for each attribute. Therefore, the number of writable times in the entire system can be improved.
  • Flash memory 101 Host CPU 102 Main memory 103 Flash memory system 104 Storage system 111 Flash controller 113 Processor in flash controller 119 Flash memory 201 Logical address table 206 Physical address table 211 Threshold table 216 History table 220 Physical block management list group 221 Write destination selection list 223 Refresh destination Selection list 226 Refresh determination list 304 Attribute instruction command 305, 301 Write instruction command 306, 302 Read instruction command 307, 303 Invalidation instruction command 308 Capacity ratio instruction command

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

[Problem] To propose a nonvolatile memory system and an information processing system that are capable of allowing for an increased number of writes. [Solution] A nonvolatile memory system provided with a nonvolatile memory and a nonvolatile memory controller, wherein said nonvolatile memory controller is characterized in that the controller: classifies and manages a plurality of physical blocks in the nonvolatile memory according to the attributes of the data in the physical blocks, while managing refresh determination threshold values or defective block determination threshold values which differ with different attributes; and, when data is to be written to a physical block, selects, as the target physical block, a physical block which is classified as having the same attributes as the data to be written.

Description

不揮発メモリシステム及び情報処理システムNonvolatile memory system and information processing system
 本発明は、不揮発メモリシステム及び情報処理システムに関する。 The present invention relates to a nonvolatile memory system and an information processing system.
 フラッシュメモリ等の不揮発メモリでは、書き込みを多数回繰り返すとそれ以上データを書き込めなくなることが知られている(書込み可能回数の限界)。また書込み後の経過時間が長いと記録したデータが消失し、書込み時と同じ値を読み出せなくなる特性(リテンション特性)が知られている。 In a non-volatile memory such as a flash memory, it is known that data cannot be written any more if writing is repeated many times (limit of the number of times that data can be written). Further, there is known a characteristic (retention characteristic) in which recorded data is lost when the elapsed time after writing is long and the same value as that at the time of writing cannot be read.
 そこで特許文献1には、書込み時に複数ビットの訂正能力を持つECC(Error Correcting Code)を付加してデータを書き込み、読出し時にECCを用いて障害ビットを訂正してデータを読み出す技術が開示されている。 Therefore, Patent Document 1 discloses a technique of adding data with ECC (Error Correcting Code) having a correction capability of a plurality of bits at the time of writing and reading data by correcting the faulty bit using ECC at the time of reading. Yes.
 また特許文献1には、予備のフラッシュメモリブロックを設け、訂正時のエラー率が所定のしきい値mより大きければ、予備又は他のフラッシュブロックにデータを書き移す処理(リフレッシュ処理)を実行し、エラー率が所定のしきい値n(n>m)より大きければ、読出し元のブロックをこれ以降使用しない不良ブロックと判定(不良ブロック判定)する技術が開示されている。 In Patent Document 1, a spare flash memory block is provided, and if the error rate at the time of correction is larger than a predetermined threshold value m, a process of transferring data to the spare or another flash block (refresh process) is executed. A technique is disclosed in which if the error rate is greater than a predetermined threshold value n (n> m), the read-out block is determined as a defective block that will not be used thereafter (defective block determination).
 また特許文献2には、リフレッシュ処理を読出し時に実行するのではなく、フラッシュメモリにデータを書き込んだ後の経過時間が所定の値を超えたときに実行することにより、時間経過にともなうデータ消失に対応する技術が開示されている。 In Patent Document 2, the refresh process is not executed at the time of reading, but is executed when the elapsed time after writing the data in the flash memory exceeds a predetermined value, so that the data disappears with the passage of time. Corresponding techniques are disclosed.
 一般にフラッシュメモリシステムは、これら特許文献1及び2に記載の技術を用いて、定期的にリフレッシュ処理を実行し、フラッシュメモリシステム全体が一定の書込み回数に到達するまではデータの読み書きが正しく行われるように保証している。 In general, a flash memory system periodically performs refresh processing using the techniques described in Patent Documents 1 and 2, and data is correctly read and written until the entire flash memory system reaches a certain number of times of writing. Assured.
 ここで、従来のフラッシュメモリシステムは、ストレージシステムの一部として用いられることが多い。一方で近年では、サーバ接続のフラッシュメモリシステムとして用いられている。サーバ接続のフラッシュメモリシステムとは、サーバの主記憶拡張として用いられるシステム又はサーバと密に連携して動作するストレージシステムとして用いられるシステムをいう。 Here, the conventional flash memory system is often used as a part of the storage system. On the other hand, in recent years, it is used as a server-connected flash memory system. The server-connected flash memory system refers to a system used as a server main memory expansion or a system used as a storage system that operates in close cooperation with the server.
 フラッシュメモリシステムがサーバ接続のフラッシュメモリシステムとして用いられる場合、ストレージシステムの一部として用いられる場合よりも書込み回数が増大する。この結果、サーバが耐用期間に達する前にフラッシュメモリシステムが耐用期間に達するという問題が生じる。 When the flash memory system is used as a server-connected flash memory system, the number of times of writing increases as compared to when it is used as a part of the storage system. This results in the problem that the flash memory system reaches its useful life before the server reaches its useful life.
 よって近年、フラッシュメモリシステムの書込み可能回数の限界を向上させる技術が強く必要とされている。なお当然のことながら、従来のようにフラッシュメモリシステムがストレージシステムの一部として用いられる場合であっても、書込み可能回数の限界は向上する方がよい。 Therefore, in recent years, there is a strong need for a technique for improving the limit of the number of writable times in a flash memory system. Of course, even if the flash memory system is used as a part of the storage system as in the prior art, it is better to improve the limit of the number of writable times.
特開2010-61507号公報JP 2010-61507 A 米国特許第7325090号明細書US Pat. No. 7,325,090
 従来のフラッシュメモリシステムは、ストレージシステムの一部として用いられることが想定されているため、停電やフラッシュメモリシステムの取り外し等により電力が長時間(例えば年単位の時間)、供給されなくなる場合でもデータを保証する必要がある。具体的にはデータを再度読み出したときにエラー率がECCで訂正可能なエラー率以下であることを保証する必要がある。 The conventional flash memory system is assumed to be used as a part of the storage system, so even if power is not supplied for a long time (for example, time in years) due to power failure or removal of the flash memory system, data Need to guarantee. Specifically, it is necessary to ensure that the error rate is equal to or lower than the error rate correctable by ECC when data is read again.
 そのために従来のフラッシュメモリシステムは、十分小さいリフレッシュ判定周期を設定して頻繁にリフレッシュ判定し、また十分小さいエラー率をリフレッシュ判定閾値に設定して早目にリフレッシュするように制御している。また十分小さいエラー率を不良ブロック判定閾値に設定して早目に不良ブロックと判定するように制御している。 For this reason, the conventional flash memory system controls to refresh frequently by setting a sufficiently small refresh judgment period and to refresh early by setting a sufficiently small error rate as a refresh judgment threshold. Also, control is performed so that a sufficiently small error rate is set as a defective block determination threshold value and determined as a defective block at an early stage.
 しかし、従来のフラッシュメモリシステムは、リフレッシュ処理により書き込みが頻発して書込み可能回数の限界を圧迫し、またエラー率がECCで訂正可能なエラー率よりも大幅に小さい場合であるにもかかわらず不良ブロックと判定して使用可能なブロック数を減らしてしまう。よってフラッシュメモリシステム全体としての書込み可能回数が小さくなるという課題がある。 However, the conventional flash memory system is defective even though it is frequently written by the refresh process, pressing the limit of the number of writeable times, and the error rate is much smaller than the error rate that can be corrected by ECC. Decide that it is a block and reduce the number of usable blocks. Therefore, there is a problem that the number of writable times as a whole flash memory system is reduced.
 一方で近年開発が進められているフラッシュメモリシステムをサーバの主記憶拡張として用いる場合、電源断時には主記憶上のデータは消えることからフラッシュメモリシステム上のデータも消えるとしてもよく、フラッシュメモリシステム上のデータだけ保証する必要はない。 On the other hand, when using a flash memory system that has been developed in recent years as an expansion of the main memory of the server, the data on the main memory may be erased when the power is turned off. It is not necessary to guarantee only the data.
 すなわちフラッシュメモリシステムをサーバの主記憶拡張として用いる場合、フラッシュメモリシステムに記録されたデータを長時間保証する必要がないにもかかわらず、リフレッシュ判定閾値、不良ブロック判定閾値及びこれらの判定周期が一律に設定されるため、システム全体の書込み可能回数が制限されるという課題がある。 In other words, when the flash memory system is used as the main memory expansion of the server, the refresh determination threshold value, the bad block determination threshold value, and the determination cycle thereof are uniform even though it is not necessary to guarantee the data recorded in the flash memory system for a long time. Therefore, there is a problem that the number of writable times of the entire system is limited.
 なおここでいうフラッシュメモリシステムをサーバの主記憶拡張として用いる場合とは、例えばアプリケーション又はミドルウェアプログラムが主記憶とフラッシュメモリシステムとをまとめて一つの記憶空間として扱い、頻繁にアクセスしたいデータのみを適宜フラッシュメモリシステムから主記憶に取り込んで計算する場合である。またデータベースが1つのクエリを処理する際、データベースからの読み出しデータが主記憶上に収まらないためにフラッシュメモリシステムにテンポラリ領域を確保する場合も該当する。 The case where the flash memory system here is used as the main memory expansion of the server means, for example, that the application or middleware program treats the main memory and the flash memory system as one storage space, and only the data that is frequently accessed is used as appropriate. This is a case where the calculation is taken from the flash memory system into the main memory. In addition, when the database processes one query, the data read from the database does not fit in the main memory, so that a temporary area is secured in the flash memory system.
 またフラッシュメモリシステムをサーバと密に連携して動作するストレージシステムとして用いる場合、電源断後のデータの保証時間はデータの種類により大きく異なる。例えば永続的な格納先としてフラッシュメモリシステムが用いられる場合、年単位の保証が必要になり、一方サーバ上で実行される長時間ジョブのチェックポイントを定期的にフラッシュメモリシステムに書き込む場合、そのジョブを再実行する以上に長い時間チェックポイントデータを記録しておくことは無意味であり、日又は週単位の保証で十分である。 Also, when the flash memory system is used as a storage system that operates in close cooperation with the server, the guaranteed time of data after the power is turned off varies greatly depending on the type of data. For example, if a flash memory system is used as a permanent storage destination, a yearly guarantee is required, whereas if a checkpoint of a long-term job executed on the server is periodically written to the flash memory system, the job It is meaningless to record checkpoint data for a time longer than re-executing, and a daily or weekly guarantee is sufficient.
 すなわちフラッシュメモリシステムをサーバと密に連携して動作するストレージシステムとして用いる場合、電源断後のデータの保証時間をサーバが判断して指示することが可能であるにもかかわらず、リフレッシュ判定閾値、不良ブロック判定閾値及びこれらの判定周期が一律に設定されるため、システム全体の書込み可能回数が制限されるという課題がある。 That is, when the flash memory system is used as a storage system that operates in close cooperation with the server, the server can determine and instruct the guaranteed time of data after the power is turned off. Since the bad block determination threshold and these determination cycles are set uniformly, there is a problem that the number of writable times of the entire system is limited.
 さらにサーバがストレージシステム内の頻繁に参照するデータを高速なフラッシュメモリシステム内にコピーし、読み出し参照のみを行なうことがある。この状態のフラッシュメモリシステム内のデータをクリーンと呼び、ストレージシステムに元データがなくフラッシュメモリシステム内にのみ最新データがあるデータの状態をダーティと呼ぶ。 In addition, the server may copy frequently referenced data in the storage system into a high-speed flash memory system and perform only read-out reference. Data in the flash memory system in this state is called clean, and the state of data in which there is no original data in the storage system and the latest data is only in the flash memory system is called dirty.
 データがクリーンの場合、フラッシュメモリシステム内のデータがリテンション特性により仮に消失しても、サーバは最悪ストレージシステムからデータを読み出せばよいため、クリーンなデータに対するリフレッシュ判定閾値、不良ブロック判定閾値及びこれらの判定周期は、ダーティなデータに対するものより大きく設定することが可能である。 If the data is clean, even if the data in the flash memory system is lost due to the retention characteristics, the server only needs to read the data from the worst storage system. This determination cycle can be set larger than that for dirty data.
 すなわちこの場合、フラッシュメモリシステムにおいてはデータがクリーン又はダーティであるか否かを判断することができず、リフレッシュ判定閾値、不良ブロック判定閾値及びこれらの判定周期が一律に設定されるため、システム全体の書込み可能回数が制限されるという課題がある。 That is, in this case, in the flash memory system, it is impossible to determine whether the data is clean or dirty, and the refresh determination threshold, the bad block determination threshold, and these determination cycles are set uniformly, so that the entire system There is a problem that the number of writable times is limited.
 本発明は以上の点を考慮してなされたもので、書込み可能回数の限界を向上させ得る不揮発メモリシステム及び情報処理システムを提案するものである。 The present invention has been made in consideration of the above points, and proposes a nonvolatile memory system and an information processing system capable of improving the limit of the number of writable times.
 かかる課題を解決するために、本発明においては、不揮発メモリ及び不揮発メモリコントローラを備える不揮発メモリシステムにおいて、不揮発メモリコントローラは、不揮発メモリ内の複数の物理ブロックをデータの属性ごとに分類して管理し、一方で属性ごとに異なるリフレッシュ判定閾値又は不良ブロック判定閾値を管理し、物理ブロックにデータを書き込む場合、書込み対象のデータの属性と同一の属性に分類される物理ブロックを書込み先として選択することを特徴とする。 In order to solve such a problem, in the present invention, in a nonvolatile memory system including a nonvolatile memory and a nonvolatile memory controller, the nonvolatile memory controller classifies and manages a plurality of physical blocks in the nonvolatile memory according to data attributes. On the other hand, when different refresh determination threshold values or bad block determination threshold values are managed for each attribute and data is written to the physical block, a physical block classified as the same attribute as the write target data attribute is selected as the write destination. It is characterized by.
 またかかる課題を解決するために、本発明においては、計算機システム及び不揮発メモリシステムを備える情報処理システムにおいて、計算機システムは、データの属性を指示する属性指示を不揮発メモリシステムに対して発行し、不揮発メモリシステムは、属性指示を受領すると、受領した属性指示に基づいて、不揮発メモリ内の複数の物理ブロックをデータの属性ごとに分類して管理し、一方で属性ごとに異なるリフレッシュ判定閾値又は不良ブロック判定閾値を管理し、物理ブロックにデータを書き込む場合、書込み対象のデータの属性と同一の属性に分類される物理ブロックを書込み先として選択することを特徴とする。 In order to solve such a problem, in the present invention, in an information processing system including a computer system and a nonvolatile memory system, the computer system issues an attribute instruction that indicates an attribute of data to the nonvolatile memory system. When the memory system receives the attribute instruction, the memory system classifies and manages a plurality of physical blocks in the nonvolatile memory according to the attribute of the data based on the received attribute instruction, and on the other hand, a different refresh determination threshold or bad block for each attribute When the determination threshold value is managed and data is written to the physical block, a physical block classified into the same attribute as the attribute of the data to be written is selected as a writing destination.
 本発明によれば、書込み可能回数の限界を向上させることができる。 According to the present invention, the limit of the number of writable times can be improved.
本実施の形態における情報処理システムの全体構成図である。1 is an overall configuration diagram of an information processing system in the present embodiment. 他の情報処理システムの全体構成図である。It is a whole block diagram of another information processing system. フラッシュメモリシステムの全体構成図である。1 is an overall configuration diagram of a flash memory system. フラッシュメモリの内部構成図である。It is an internal block diagram of flash memory. ブロックの内部構成図である。It is an internal block diagram of a block. ページの内部構成図である。It is an internal block diagram of a page. 論理アドレステーブルの論理構成図である。It is a logical block diagram of a logical address table. 物理アドレステーブルの論理構成図である。It is a logical block diagram of a physical address table. 閾値テーブルの論理構成図である。It is a logic block diagram of a threshold value table. 履歴テーブルの論理構成図である。It is a logic block diagram of a history table. 物理ブロック管理リスト群の概念構成図である。It is a conceptual block diagram of a physical block management list group. 管理リストの内部構成図である。It is an internal block diagram of a management list. コマンドの内部構成図である。It is an internal block diagram of a command. 他のコマンドの内部構成図である。It is an internal block diagram of another command. 他のコマンドの内部構成図である。It is an internal block diagram of another command. 書込み可能回数向上処理を示す処理フローである。It is a processing flow which shows a writable frequency improvement process. 書込み可能回数向上処理を示す処理フローである。It is a processing flow which shows a writable frequency improvement process. 属性指示コマンド受領処理を示す処理フローである。It is a processing flow which shows an attribute instruction command reception process. 書込み指示コマンド受領処理を示す処理フローである。It is a processing flow which shows a write instruction command reception process. 書込み指示コマンド受領処理を示す処理フローである。It is a processing flow which shows a write instruction command reception process. 読出し指示コマンド受領処理を示す処理フローである。It is a processing flow which shows a read instruction command reception process. 無効化指示コマンド受領処理を示す処理フローである。It is a processing flow which shows the invalidation instruction command reception processing. リフレッシュ判定及び不良ブロック判定を示す処理フローである。It is a processing flow which shows refresh determination and bad block determination. リフレッシュ判定及び不良ブロック判定を示す処理フローである。It is a processing flow which shows refresh determination and bad block determination. 第2の書込み可能回数向上処理を示す処理フローである。It is a processing flow which shows the 2nd writeable frequency improvement process. 第3の書込み可能回数向上処理を示す処理フローである。It is a processing flow which shows the 3rd writeable frequency improvement process. 第3の書込み可能回数向上処理を示す処理フローである。It is a processing flow which shows the 3rd writeable frequency improvement process. 主記憶の内部構成図である。It is an internal block diagram of main memory. 情報処理システムにおけるデータの配置構成図である。It is a data arrangement block diagram in an information processing system. アプリケーションによる第1の処理フローである。It is the 1st processing flow by an application. ミドルウェアによる第2の処理フローである。It is the 2nd processing flow by middleware. ミドルウェアによる第3の処理フローである。It is the 3rd processing flow by middleware. アプリケーションによる第4の処理フローである。It is the 4th processing flow by an application. ミドルウェアによる第5の処理フローである。It is the 5th processing flow by middleware. アプリケーション又はミドルウェアによる第6の処理フローである。It is the 6th processing flow by an application or middleware.
 以下図面について、本発明の一実施の形態を詳述する。 Hereinafter, an embodiment of the present invention will be described in detail with reference to the drawings.
(1)第1の実施の形態
(1-1)全体構成
 図1は、本実施の形態における情報処理システム1の全体構成を示す。情報処理システム1は、ホストCPU(Central Processing Unit)101、主記憶102、フラッシュメモリシステム103及びストレージシステム104を備えて構成される。またホストCPU101は、信号線105~107を介して各部と通信可能に接続される。
(1) First Embodiment (1-1) Overall Configuration FIG. 1 shows the overall configuration of an information processing system 1 in the present embodiment. The information processing system 1 includes a host CPU (Central Processing Unit) 101, a main memory 102, a flash memory system 103, and a storage system 104. The host CPU 101 is communicably connected to each unit via signal lines 105-107.
 フラッシュメモリシステム103は、信号線106を介して、ホストCPU101からデータの読書き指示を受領する。また本実施の形態においてフラッシュメモリシステム103は、ホストCPU101からデータのRT(Retention Time)時間及びデータがクリーン又はダーティであることを示す情報(属性情報)を受領する。 The flash memory system 103 receives a data read / write instruction from the host CPU 101 via the signal line 106. Further, in the present embodiment, the flash memory system 103 receives the RT (Retention Time) time of data and information (attribute information) indicating that the data is clean or dirty from the host CPU 101.
 図2は、他の情報処理システム1Aの全体構成を示す。フラッシュメモリシステム103がストレージシステム104内に配置されている点で、図1の情報処理システム1と異なる。情報処理システム1Aにおいてフラッシュメモリシステム103は、ストレージコントローラCPU108からデータの読書き指示を受領し、また属性情報を受領する。 FIG. 2 shows the overall configuration of another information processing system 1A. The flash memory system 103 is different from the information processing system 1 in FIG. 1 in that the flash memory system 103 is arranged in the storage system 104. In the information processing system 1A, the flash memory system 103 receives a data read / write instruction from the storage controller CPU 108 and receives attribute information.
 なお以下の説明では、特に図1の情報処理システム1の構成について詳述するが、図2の情報処理システム1Aに適用するとしてもよい。 In the following description, the configuration of the information processing system 1 in FIG. 1 will be described in detail, but it may be applied to the information processing system 1A in FIG.
(1-2)内部構成
 図3は、フラッシュメモリシステム103の内部構成を示す。フラッシュメモリシステム103は、フラッシュメモリコントローラ111及び複数のフラッシュメモリ119を備えて構成される。
(1-2) Internal Configuration FIG. 3 shows the internal configuration of the flash memory system 103. The flash memory system 103 includes a flash memory controller 111 and a plurality of flash memories 119.
 フラッシュメモリコントローラ111においてプロセッサ113は、信号線106及びホストインタフェース112を介してホストCPU101からデータの読書き指示を受領すると、RAM(Random Access Memory)115にアクセスして、RAM115に格納されているフラッシュブロック管理情報115Aを参照又は更新する。 In the flash memory controller 111, when the processor 113 receives a data read / write instruction from the host CPU 101 via the signal line 106 and the host interface 112, the processor 113 accesses a RAM (Random Access Memory) 115 and stores the flash stored in the RAM 115. The block management information 115A is referred to or updated.
 プロセッサ113は、フラッシュブロック管理情報115Aを参照して、フラッシュメモリインタフェース116を介してフラッシュメモリ119にアクセスする。ホストCPU101からの指示が読出し指示の場合、プロセッサ113は、フラッシュメモリインタフェース116を介して読出し対象のデータをバッファ114に一旦格納した後、読出し完了通知をホストCPU101に発行する。 The processor 113 accesses the flash memory 119 via the flash memory interface 116 with reference to the flash block management information 115A. When the instruction from the host CPU 101 is a read instruction, the processor 113 temporarily stores data to be read in the buffer 114 via the flash memory interface 116 and then issues a read completion notification to the host CPU 101.
 なおフラッシュメモリインタフェース116は、エラー訂正回路116Aを備える。エラー訂正回路116Aは、データの読出し時にデータに付加されたECC(図6)を用いてエラー訂正を行う。そして訂正後のデータ及び読出し時のエラー率をバッファ114に格納する。一方ホストCPU101からの指示が書込み指示の場合、プロセッサ113は、書込み対象のデータをバッファ114に一旦格納した後、フラッシュメモリ119に書き込む。なおエラー訂正回路116Aは、データの書込み時にデータにECC(図6)を付加する。 The flash memory interface 116 includes an error correction circuit 116A. The error correction circuit 116A performs error correction using the ECC (FIG. 6) added to the data when reading the data. Then, the corrected data and the error rate at the time of reading are stored in the buffer 114. On the other hand, when the instruction from the host CPU 101 is a write instruction, the processor 113 temporarily stores the data to be written in the buffer 114 and then writes it in the flash memory 119. The error correction circuit 116A adds ECC (FIG. 6) to the data when writing the data.
 またプロセッサ113は、ホストCPU101から属性情報を受領した場合、RAM115にアクセスして、フラッシュブロック管理情報115Aを適宜更新する。またプロセッサ113は、予め設定した判定周期に基づいて、フラッシュメモリ119内のブロックに対してリフレッシュ判定処理及び不良ブロック判定処理を実行する。 Further, when receiving the attribute information from the host CPU 101, the processor 113 accesses the RAM 115 and appropriately updates the flash block management information 115A. Further, the processor 113 performs a refresh determination process and a defective block determination process on the blocks in the flash memory 119 based on a predetermined determination cycle.
 図4は、フラッシュメモリ119の内部構成を示す。フラッシュメモリ119は、複数のブロック125から構成される。ブロック125は、消去単位の記憶領域である。 FIG. 4 shows the internal configuration of the flash memory 119. The flash memory 119 is composed of a plurality of blocks 125. A block 125 is a storage area of an erase unit.
 図5は、ブロック125の内部構成を示す。ブロック125は、複数のページ126から構成される。ページ126は、読書き単位の記憶領域である。 FIG. 5 shows the internal configuration of the block 125. The block 125 is composed of a plurality of pages 126. The page 126 is a storage area in read / write units.
 図6は、ページ126の内部構成を示す。ページ126は、データ127及びECC(Error Correcting Code)128から構成される。 FIG. 6 shows the internal structure of the page 126. The page 126 includes data 127 and ECC (Error Correcting Code) 128.
(1-3)テーブル構成
 図7~図12は、RAM115に格納されているフラッシュブロック管理情報115Aの詳細構成を示す。以下図7~図12の各図面について説明する。
(1-3) Table Configuration FIGS. 7 to 12 show the detailed configuration of the flash block management information 115A stored in the RAM 115. FIG. The drawings in FIGS. 7 to 12 will be described below.
 図7は、論理アドレステーブル201の論理構成を示す。論理アドレステーブル201は、ホストCPU101からの読書き指示に含まれる論理アドレスを物理アドレスに変換するために用いられる。また本実施の形態においては、属性情報を格納するために用いられる。具体的に論理アドレステーブル201は、論理アドレス欄202、ページ有効無効欄203、物理ページアドレス欄204及び属性番号欄205から構成される。 FIG. 7 shows a logical configuration of the logical address table 201. The logical address table 201 is used to convert a logical address included in a read / write instruction from the host CPU 101 into a physical address. In the present embodiment, it is used for storing attribute information. Specifically, the logical address table 201 includes a logical address column 202, a page valid / invalid column 203, a physical page address column 204, and an attribute number column 205.
 論理アドレス欄202には、ホストCPU101からの読書き指示に含まれる論理アドレスが格納される。ページ有効無効欄203には、ページにデータが格納されているか否かを示す情報が格納される。なおページにデータが格納されている場合には有効、格納されていない場合には無効が格納される。 The logical address column 202 stores a logical address included in the read / write instruction from the host CPU 101. The page valid / invalid column 203 stores information indicating whether data is stored in the page. In addition, when data is stored in the page, valid is stored, and when data is not stored, invalid is stored.
 また物理ページアドレス欄204には、フラッシュメモリ119の物理ページアドレスが格納される。ここではブロック番号及びページ番号が物理ページアドレスとして格納される。属性番号欄205には、RT時間とダーティ又はクリーンを示す情報とを含む属性情報が格納される。ここでは複数の属性情報に対して予め付けられた番号が格納される。 Also, the physical page address column 204 stores the physical page address of the flash memory 119. Here, the block number and page number are stored as physical page addresses. The attribute number column 205 stores attribute information including RT time and information indicating dirty or clean. Here, numbers assigned in advance to a plurality of attribute information are stored.
 従って図7の場合、例えば論理アドレスが「10」の論理アドレスに対応付けられている物理ページアドレスにはデータが格納されており(有効)、この論理アドレスは、ブロック番号が「101」、ページ番号が「0」により示される物理ページアドレスに対応付けられていることが示されている。またこの物理ページアドレスに格納されているデータは、「RT=1カ月以上、ダーティ」という属性情報を有することが示されている。 Accordingly, in the case of FIG. 7, for example, data is stored in the physical page address associated with the logical address having the logical address “10” (valid), and this logical address has the block number “101”, the page It is shown that the number is associated with the physical page address indicated by “0”. Further, it is shown that the data stored in the physical page address has attribute information “RT = 1 month or more, dirty”.
 なお「RT=1カ月以上、ダーティ」とは、フラッシュメモリ119に書き込まれてから1カ月以上は保証する必要のあるデータであり、現時点ではストレージシステム104に書き込まれていないデータであることを示す属性情報である。 Note that “RT = 1 month or more, dirty” indicates data that needs to be guaranteed for one month or more after being written in the flash memory 119, and is data that is not currently written in the storage system 104. It is attribute information.
 図8は、物理アドレステーブル206の論理構成を示す。物理アドレステーブル206は、物理アドレスを論理アドレスに変換するために用いられる。具体的に物理アドレステーブル206は、物理ページアドレス欄207、ページ有効無効欄208及び論理アドレス欄209から構成される。 FIG. 8 shows a logical configuration of the physical address table 206. The physical address table 206 is used to convert a physical address into a logical address. Specifically, the physical address table 206 includes a physical page address column 207, a page valid / invalid column 208, and a logical address column 209.
 物理ページアドレス欄207には、フラッシュメモリ119の物理ページアドレスが格納される。ここではブロック番号及びページ番号が物理ページアドレスとして格納される。ページ有効無効欄208には、ページにデータが格納されているか否かを示す情報(有効又は無効)が格納される。論理アドレス欄209には、ホストCPU101からの読書き指示に含まれる論理アドレスが格納される。 The physical page address field 207 stores the physical page address of the flash memory 119. Here, the block number and page number are stored as physical page addresses. The page valid / invalid column 208 stores information (valid or invalid) indicating whether or not data is stored in the page. The logical address column 209 stores a logical address included in the read / write instruction from the host CPU 101.
 従って図8の場合、例えばブロック番号が「101」、ページ番号が「0」により示される物理ページアドレスにはデータが格納されており(有効)、この物理ページアドレスは、論理アドレスが「10」の論理アドレスに対応付けられていることが示されている。 Accordingly, in the case of FIG. 8, for example, data is stored in the physical page address indicated by the block number “101” and the page number “0” (valid), and this physical page address has the logical address “10”. It is shown that it is associated with the logical address.
 図9は、閾値テーブル211の論理構成を示す。閾値テーブル211は、事前に設定された属性情報を管理するために用いられる。具体的に閾値テーブル211は、属性番号欄212、リフレッシュ判定周期欄213、リフレッシュ判定閾値欄214及び不良ブロック判定閾値欄215から構成される。 FIG. 9 shows a logical configuration of the threshold value table 211. The threshold value table 211 is used for managing attribute information set in advance. Specifically, the threshold table 211 includes an attribute number column 212, a refresh determination cycle column 213, a refresh determination threshold column 214, and a defective block determination threshold column 215.
 属性番号欄212には、RT時間とクリーン又はダーティを示す情報との組み合わせを一意に特定する属性番号が格納される。本実施の形態においてはこの属性番号により示される属性ごとに複数のブロックを複数のブロックグループとして管理する。ある属性のデータはその属性のブロックグループ内の何れかのブロックに書き込まれることになる。 In the attribute number column 212, an attribute number that uniquely identifies a combination of RT time and information indicating clean or dirty is stored. In the present embodiment, a plurality of blocks are managed as a plurality of block groups for each attribute indicated by the attribute number. Data of a certain attribute is written to any block in the block group of that attribute.
 またリフレッシュ判定周期欄213には、リフレッシュ判定処理を実行する周期が格納される。リフレッシュ判定閾値欄214には、リフレッシュ判定処理においてリフレッシュ処理を実行するか否かの判定に用いる閾値(第1の許容エラー率)が格納される。不良ブロック判定閾値欄215には、不良ブロック判定処理において不良ブロックであるか否かの判定に用いる閾値(第2の許容エラー率)が格納される。 Also, the refresh determination period column 213 stores a period for executing the refresh determination process. The refresh determination threshold value column 214 stores a threshold value (first allowable error rate) used for determining whether or not to execute the refresh process in the refresh determination process. The bad block determination threshold value column 215 stores a threshold value (second allowable error rate) used for determining whether or not the block is a bad block in the bad block determination process.
 従って図9の場合、例えば「1」番の属性番号は、「RT=1カ月以上、ダーティ」のデータを管理するための属性番号であり、この属性番号により示される属性のデータのリフレッシュ判定周期は「ITVL1」であり、リフレッシュ閾値は「RF1」であり、不良ブロック判定閾値は「BAD1」であることが示されている。 Accordingly, in the case of FIG. 9, for example, the attribute number “1” is an attribute number for managing data “RT = 1 month or more, dirty”, and the refresh determination cycle of the attribute data indicated by this attribute number Is “ITVL1”, the refresh threshold is “RF1”, and the bad block determination threshold is “BAD1”.
 なおここでは属性番号を1番~6番までの6種類に設定しているが、これに限らず、どの範囲のRT時間を同じ属性とするかはシステム初期化時に管理コンソール等から指示されて決定される。またリフレッシュ判定周期、リフレッシュ判定閾値及び不良ブロック判定閾値の値は、事前に評価したフラッシュメモリ119のエラー特性に基づいてシステム設計者により決定される。 Here, the attribute number is set to 6 types from 1 to 6. However, this is not restrictive, and the range of RT time to be the same attribute is instructed by the management console etc. at the time of system initialization. It is determined. The values of the refresh determination period, the refresh determination threshold value, and the defective block determination threshold value are determined by the system designer based on the error characteristics of the flash memory 119 evaluated in advance.
 またRT時間が短いということは、データの保証時間が短くてもよいということであり、リフレッシュ処理を頻繁に実行する必要がない。よってRT時間が短い程、リフレッシュ処理が頻繁に実行されないようにリフレッシュ閾値は大きい値が設定される。また最悪失われてもかまわないクリーンなデータほどリフレッシュ処理を頻繁に実行する必要がないためリフレッシュ閾値は大きい値が設定される。 Also, the short RT time means that the data guarantee time may be short, and it is not necessary to frequently execute the refresh process. Therefore, the smaller the RT time, the larger the refresh threshold value is set so that the refresh process is not executed frequently. In addition, the refresh threshold is set to a large value because it is not necessary to frequently execute the refresh process for clean data that may be lost in the worst case.
 図10は、履歴テーブル216の論理構成を示す。履歴テーブル216は、属性ごとに複数のブロックをブロックグループとして管理する場合において各ブロックグループの使用状況を管理するために用いられる。具体的に履歴テーブル216は、属性番号欄217、現在容量欄218及び最大容量欄219から構成される。 FIG. 10 shows a logical configuration of the history table 216. The history table 216 is used to manage the usage status of each block group when managing a plurality of blocks for each attribute as a block group. Specifically, the history table 216 includes an attribute number column 217, a current capacity column 218, and a maximum capacity column 219.
 属性番号欄217には、RT時間とクリーン又はダーティを示す情報との組み合わせを一意に特定する属性番号が格納される。現在容量欄218には、属性ごとの現在容量が格納される。最大容量欄219には、属性ごとの最大容量が格納される。 In the attribute number column 217, an attribute number that uniquely identifies a combination of RT time and information indicating clean or dirty is stored. The current capacity column 218 stores the current capacity for each attribute. The maximum capacity column 219 stores the maximum capacity for each attribute.
 なお各ブロックグループをどれだけの容量ずつ用意すればよいかは、情報処理システム1において実行されるアプリケーションプログラムの特性に依存する。特定の処理を実行するアプライアンスサーバシステム等の場合、アプリケーションがブロックグループ間の容量比をフラッシュメモリシステム103に予め指示するとしてもよい。指示コマンド及び処理フローについては後述する。 Note that the capacity of each block group to be prepared depends on the characteristics of the application program executed in the information processing system 1. In the case of an appliance server system or the like that executes specific processing, the application may instruct the flash memory system 103 in advance of the capacity ratio between block groups. The instruction command and the processing flow will be described later.
 また容量比が予め指示できない場合、フラッシュメモリシステム103がアプリケーションによる使用履歴を観察して容量比を決定するとしてもよい。 If the capacity ratio cannot be specified in advance, the flash memory system 103 may determine the capacity ratio by observing the usage history of the application.
 図11は、物理ブロック管理リスト群220の概念構成を示す。物理ブロック管理リスト群220は、属性ごとに分けたブロックグループを管理するために用いられる。具体的に物理ブロック管理リスト群220は、属性ごとに、書込み先選択リスト221、リフレッシュ先選択リスト223及びリフレッシュ判定リスト226を備える。また何れの管理リストにも登録されていないブロックを登録する予備リスト229及び不良ブロックを登録する不良リスト230を備える。 FIG. 11 shows a conceptual configuration of the physical block management list group 220. The physical block management list group 220 is used to manage block groups divided for each attribute. Specifically, the physical block management list group 220 includes a write destination selection list 221, a refresh destination selection list 223, and a refresh determination list 226 for each attribute. Further, a reserve list 229 for registering blocks not registered in any management list and a defect list 230 for registering defective blocks are provided.
 書込み先選択リスト221には、何れかの属性のブロックグループに属するブロックのうち、一部のページにはデータが格納されており(有効)、一部のページにはデータが格納されずに空いている(無効)ブロックが登録される。すなわち一部有効一部無効のページを含むブロックが登録される。この書込み先選択リスト221に登録されるブロックは、前回読出し時に算出されたエラー率が少ない順に常にソートされるように管理される。 In the write destination selection list 221, data is stored in some pages (valid) among blocks belonging to the block group having any attribute, and data is not stored in some pages and is empty. Active (invalid) blocks are registered. That is, a block including a partially valid / invalid page is registered. The blocks registered in the write destination selection list 221 are managed so that they are always sorted in ascending order of error rate calculated at the time of previous reading.
 またこの書込み先選択リスト221は、ホストCPU101からデータの書込み指示を受領した場合に書込み指示対象のデータの属性に対応するブロックグループに属しており、書き込みが可能であり(一部のページが空いている)、最もエラー率が少ないページを選択するために使用される。最もエラー率の少ないブロックを選択することにより、書込み時の動的なウェアレベリングが実現される。 The write destination selection list 221 belongs to a block group corresponding to the attribute of the data to be written when a data write instruction is received from the host CPU 101, and can be written (some pages are empty). Used to select the page with the lowest error rate. By selecting the block with the lowest error rate, dynamic wear leveling at the time of writing is realized.
 なおウェアレベリングは、エラー率だけによらず、書込み回数や書込み後経過時間を用いる様々な方法が知られている。ここでは簡単のためにエラー率のみによるソートを行うとするが、上記の情報を組み合わせて書込み先選択リスト221をソートし、書込み先を選択してもよい。 For wear leveling, various methods using the number of times of writing and the elapsed time after writing are known regardless of the error rate. Here, for the sake of simplicity, it is assumed that sorting is performed based only on the error rate. However, the writing destination selection list 221 may be sorted by combining the above information, and the writing destination may be selected.
 リフレッシュ先選択リスト223には、何れかの属性のブロックグループに属するブロックのうち、全てのページが空いているブロックが登録される。すなわち全部無効のページを含むブロックが登録される。このリフレッシュ先選択リスト223に登録されるブロックは、前回読出し時に算出されたエラー率が少ない順に常にソートされるように管理される。 In the refresh destination selection list 223, blocks in which all pages are free among the blocks belonging to the block group of any attribute are registered. That is, a block including all invalid pages is registered. The blocks registered in the refresh destination selection list 223 are managed so that they are always sorted in ascending order of error rates calculated at the time of previous reading.
 またこのリフレッシュ先選択リスト223は、プロセッサ113がリフレッシュ処理を実行する場合にリフレッシュ処理対象のデータの属性に対応するブロックグループに属しており、リフレッシュ元の全データの書込みが可能であり(全ページが空いている)、最もエラー率の少ないページを選択するために使用される。 The refresh destination selection list 223 belongs to the block group corresponding to the attribute of the data to be refreshed when the processor 113 executes the refresh process, and all data of the refresh source can be written (all pages). Used to select the page with the lowest error rate.
 リフレッシュ判定リスト226には、何れかの属性のブロックグループに属するブロックのうち、一部のページにデータが格納されているブロック及び全部のページにデータが格納されているブロックが登録される。すなわち一部又は全部有効のページを含むブロックが登録される。このリフレッシュ判定リスト226に登録されるブロックは、物理ブロック番号順に常にソートされるように管理される。 In the refresh determination list 226, among blocks belonging to a block group having any attribute, a block in which data is stored in some pages and a block in which data is stored in all pages are registered. That is, a block including some or all valid pages is registered. The blocks registered in the refresh determination list 226 are managed so that they are always sorted in the order of physical block numbers.
 なおこのリフレッシュ判定リスト226には、一部有効のページを含むブロックが登録されていることから、書込み先選択リスト221に登録されているブロック(一部有効一部無効のデータを含むブロック)が重複して登録される場合がある。 In this refresh determination list 226, since blocks including partially valid pages are registered, blocks registered in the write destination selection list 221 (blocks including partially valid and partially invalid data) are included. Duplicate registration may occur.
 図12は、管理リスト231の内部構成を示す。図11の各管理リスト(221、223、226、229、230)の内部構成は同様であるため、ここでは各管理リストを総称して管理リスト231として説明する。 FIG. 12 shows the internal structure of the management list 231. Since the internal configuration of each management list (221, 223, 226, 229, 230) in FIG. 11 is the same, each management list is generically described as the management list 231.
 管理リスト231は、ポインタ232A、物理ブロック番号232B及び前回エラー率232Cから構成される複数のブロック情報232から構成され、ポインタ232Aにより複数のブロック情報232が連結されるリスト構造を有する。物理ブロック番号232Bには、各管理リストに対応する物理ブロック番号が格納され、前回エラー率232Cには、前回読出し時に算出されたエラー率が格納される。なお予備リスト229の場合、前回エラー率232Cは空である。 The management list 231 includes a plurality of block information 232 including a pointer 232A, a physical block number 232B, and a previous error rate 232C, and has a list structure in which a plurality of block information 232 is linked by the pointer 232A. The physical block number 232B stores a physical block number corresponding to each management list, and the previous error rate 232C stores an error rate calculated at the previous read time. In the case of the preliminary list 229, the previous error rate 232C is empty.
(1-4)コマンド構成
 図13は、ホストCPU101により発行されるコマンドの内部構成を示す。ホストCPU101により発行されるコマンドとして、ここでは属性指示コマンド304、書込み指示コマンド305、読出し指示コマンド306及び無効化指示コマンド307について説明する。なおこれらのコマンドは、ホストCPU101により発行された後、フラッシュメモリシステム103により受領される。
(1-4) Command Configuration FIG. 13 shows an internal configuration of a command issued by the host CPU 101. As commands issued by the host CPU 101, an attribute instruction command 304, a write instruction command 305, a read instruction command 306, and an invalidation instruction command 307 will be described here. These commands are issued by the host CPU 101 and then received by the flash memory system 103.
 属性指示コマンド304は、読書き指示対象のデータの属性を指示するためのコマンドであり、複数の領域304A~304Fから構成される。領域304Aは、属性指示のコマンドであることを宣言する領域であり、領域304Bは、範囲(フラッシュメモリ119の論理アドレス)を指定する領域であり、領域304Dは、サイズを指定する領域である。また領域304E及び領域304Fは、指定した範囲及びサイズのデータについての属性(RT時間、クリーン又はダーティ)を指定する領域である。 The attribute instruction command 304 is a command for instructing the attribute of data to be read / written, and is composed of a plurality of areas 304A to 304F. The area 304A is an area for declaring an attribute instruction command, the area 304B is an area for designating a range (logical address of the flash memory 119), and the area 304D is an area for designating a size. In addition, the area 304E and the area 304F are areas for designating attributes (RT time, clean or dirty) for data of a designated range and size.
 書込み指示コマンド305は、データの書き込みを指示するためのコマンドであり、複数の領域305A~領域305Dから構成される。領域305Aは、書込み指示のコマンドであることを宣言する領域であり、領域305Bは、書込み先の範囲(フラッシュメモリ119の論理アドレス)を指定する領域であり、領域305Cは、書込み元(主記憶102の論理アドレス)を指定する領域であり、領域305Dは、書込み指示対象のデータサイズを指定する領域である。 The write instruction command 305 is a command for instructing data writing, and includes a plurality of areas 305A to 305D. The area 305A is an area for declaring that it is a write instruction command, the area 305B is an area for designating a write destination range (logical address of the flash memory 119), and the area 305C is a write source (main memory). 102 is a region for designating a data size of a write instruction target.
 読出し指示コマンド306は、データの読み出しを指示するためのコマンドであり、複数の領域306A~領域306Dから構成される。領域306Aは、読出し指示のコマンドであることを宣言する領域であり、領域306Bは、読出し元の範囲(フラッシュメモリ119の論理アドレス)を指定する領域であり、領域306Cは、読出し先の範囲(主記憶102の論理アドレス)を指定する領域であり、領域306Dは、読出し指示対象のデータサイズを指定する領域である。 The read instruction command 306 is a command for instructing data reading, and includes a plurality of areas 306A to 306D. The area 306A is an area that declares that it is a read instruction command, the area 306B is an area that specifies a read source range (logical address of the flash memory 119), and an area 306C is a read destination range ( The area 306D is an area for designating the data size of the read instruction target.
 無効化指示コマンド307は、無効化してもよい範囲を指示するためのコマンドであり、複数の領域307A~領域307Dから構成される。領域307Aは、無効化指示のコマンドであることを宣言する領域であり、領域307Bは、無効化対象の範囲(フラッシュメモリ119の論理アドレス)を指定する領域であり、領域307Dは、無効化対象のデータサイズを指定する領域である。 The invalidation instruction command 307 is a command for instructing a range that may be invalidated, and includes a plurality of areas 307A to 307D. The area 307A is an area that declares an invalidation instruction command, the area 307B is an area that designates a range to be invalidated (logical address of the flash memory 119), and an area 307D is an invalidation target. This area specifies the data size.
 図14は、他のコマンドの内部構成を示す。これらのコマンドは、後述する第3の実施の形態において用いられるコマンドであり、属性指示コマンド304を用いずに書込み指示コマンド302において属性を指定する点(領域301E及び領域301Fを有する点)で、図13のコマンドと異なる。このコマンドを用いて実行される処理の詳細については後述する(図23A及び図23B)。 FIG. 14 shows the internal structure of another command. These commands are commands used in the third embodiment to be described later, and are points that specify attributes in the write instruction command 302 without using the attribute instruction command 304 (points having an area 301E and an area 301F). Different from the command of FIG. Details of processing executed using this command will be described later (FIGS. 23A and 23B).
 図15は、他のコマンドの内部構成を示す。このコマンドは、後述する第2の実施の形態において用いられるコマンドであり、図13のコマンドに加えて用いられる容量比指示コマンド308である。容量比指示コマンド308は、ブロックグループ間の容量比を予めフラッシュメモリシステム103に指示するためのコマンドであり、複数の領域308A~領域308Dから構成される。 FIG. 15 shows the internal structure of another command. This command is a command used in a second embodiment to be described later, and is a capacity ratio instruction command 308 used in addition to the command of FIG. The capacity ratio instruction command 308 is a command for instructing the flash memory system 103 in advance with a capacity ratio between block groups, and includes a plurality of areas 308A to 308D.
 領域308Aは、容量比指示コマンドであることを宣言する領域であり、領域308B及び領域308Cは、読書き指示対象のデータの属性を指定する領域であり、領域308Dは、各ブロックグループの容量(属性ごとの容量)を指定する領域である。この容量比指示コマンド308を用いて実行される処理の詳細については後述する(図22)。 An area 308A is an area for declaring that it is a capacity ratio instruction command, an area 308B and an area 308C are areas for specifying attributes of data to be read / written, and an area 308D is a capacity ( This is an area for specifying the capacity for each attribute. Details of processing executed using the capacity ratio instruction command 308 will be described later (FIG. 22).
(1-5)処理フロー
 以下図13のコマンドが発行された場合のフラッシュメモリコントローラ111による書込み可能回数向上処理について、図16~図21を用いて説明する。
(1-5) Process Flow Hereinafter, the process for improving the number of writable times by the flash memory controller 111 when the command of FIG. 13 is issued will be described with reference to FIGS.
 図16A及び図16Bは、書込み可能回数向上処理の処理手順を示す。この書込み可能回数向上処理は、例えばホストCPU101から処理開始の指示コマンドが発行されたことを契機として、フラッシュメモリコントローラ111により実行される。 FIG. 16A and FIG. 16B show the processing procedure of the writable count improvement process. This writeable frequency improvement process is executed by the flash memory controller 111 when, for example, a command to start processing is issued from the host CPU 101.
 なお本実施の形態においては、ブロックグループごとの容量比が予め与えられないので、ステップS1013に至るまでは各属性の使用履歴を監視しながら、属性番号1のみを用いて各コマンドの処理を実行する。なお属性番号1の属性は、不良ブロック判定閾値が最小の属性である。 In this embodiment, since the capacity ratio for each block group is not given in advance, the processing of each command is executed using only attribute number 1 while monitoring the usage history of each attribute until step S1013 is reached. To do. Note that the attribute of attribute number 1 is the attribute with the smallest bad block determination threshold.
 まずフラッシュメモリコントローラ111は、論理アドレステーブル201(図7)、物理アドレステーブル206(図8)、閾値テーブル211(図9)、履歴テーブル216(図10)を初期化し、また属性番号1の各管理リスト(221、223、226)、予備リスト229及び不良リスト230を作成する(S1001)。 First, the flash memory controller 111 initializes the logical address table 201 (FIG. 7), the physical address table 206 (FIG. 8), the threshold table 211 (FIG. 9), and the history table 216 (FIG. 10). A management list (221, 223, 226), a spare list 229, and a defect list 230 are created (S1001).
 具体的にフラッシュメモリコントローラ111は、ページ有効無効欄203及び208の全てに無効ビットを設定して、論理アドレステーブル201及び物理アドレステーブル206を初期化する。 Specifically, the flash memory controller 111 sets invalid bits in all of the page valid / invalid fields 203 and 208, and initializes the logical address table 201 and the physical address table 206.
 またフラッシュメモリコントローラ111は、リフレッシュ判定周期欄213に予め定められた値(周期)を設定し、リフレッシュ判定閾値欄214及び不良ブロック判定閾値欄215に予め定められた閾値(許容エラー率)を設定して閾値テーブル211を初期化する。またフラッシュメモリコントローラ111は、現在容量欄218及び最大容量欄219に0を設定して、履歴テーブル216を初期化する。 The flash memory controller 111 sets a predetermined value (cycle) in the refresh determination cycle field 213 and sets a predetermined threshold (allowable error rate) in the refresh determination threshold field 214 and the defective block determination threshold field 215. Then, the threshold value table 211 is initialized. The flash memory controller 111 initializes the history table 216 by setting 0 in the current capacity column 218 and the maximum capacity column 219.
 またフラッシュメモリコントローラ111は、フラッシュメモリ119が有する複数のブロックのうち、予め定められた数のブロックを予備リスト229に登録して予備リスト229を作成し、出荷時不良のブロックを不良リスト230に登録して不良リスト230を作成する。 Also, the flash memory controller 111 creates a spare list 229 by registering a predetermined number of blocks among the plurality of blocks of the flash memory 119 in the spare list 229, and blocks defective at the time of shipment in the defect list 230. The defect list 230 is created by registration.
 またフラッシュメモリコントローラ111は、予備リスト229及び不良リスト230に登録したブロック以外のブロックを属性番号1のリフレッシュ先選択リスト223に登録して属性番号1のリフレッシュ先選択リスト223を作成し、登録するブロックが存在しない状態で属性番号1の書込み先選択リスト221及びリフレッシュ判定リスト226を作成する。 Further, the flash memory controller 111 registers blocks other than the blocks registered in the spare list 229 and the defect list 230 in the refresh destination selection list 223 of attribute number 1 to create and register the refresh destination selection list 223 of attribute number 1. The write destination selection list 221 and the refresh determination list 226 with the attribute number 1 are created in a state where no block exists.
 次いでフラッシュメモリコントローラ111は、属性指示コマンド304を受領したか否かを判断する(S1002)。フラッシュメモリコントローラ111は、ステップS1002の判断で否定結果を得ると、ステップS1004に移行する。 Next, the flash memory controller 111 determines whether or not the attribute instruction command 304 has been received (S1002). If the flash memory controller 111 obtains a negative result in the determination at step S1002, the flash memory controller 111 proceeds to step S1004.
 これに対し、フラッシュメモリコントローラ111は、ステップS1002の判断で肯定結果を得ると、指定された属性に対応する属性番号を論理アドレステーブル201に登録し、また指定されたサイズに対応する容量を履歴テーブル216に反映して更新する(S1003)。 On the other hand, when the flash memory controller 111 obtains a positive result in the determination at step S1002, the flash memory controller 111 registers the attribute number corresponding to the specified attribute in the logical address table 201, and stores the capacity corresponding to the specified size in the history. The data is updated in the table 216 (S1003).
 次いでフラッシュメモリコントローラ111は、書込み指示コマンド305を受領したか否かを判断する(S1004)。フラッシュメモリコントローラ111は、ステップS1004の判断で否定結果を得ると、ステップS1006に移行する。 Next, the flash memory controller 111 determines whether or not the write instruction command 305 has been received (S1004). If the flash memory controller 111 obtains a negative result in the determination at step S1004, the flash memory controller 111 proceeds to step S1006.
 これに対し、フラッシュメモリコントローラ111は、ステップS1004の判断で肯定結果を得ると、属性番号1の各管理リスト(221、223、226)を参照して、属性番号1のブロックグループのなかから書込み先のページを選択し、選択したページにデータを書き込む(S1005)。 On the other hand, if the flash memory controller 111 obtains a positive result in the determination at step S1004, it refers to each management list (221, 223, 226) of attribute number 1 and writes from the block group of attribute number 1. The previous page is selected, and data is written to the selected page (S1005).
 またフラッシュメモリコントローラ111は、データを書き込むとともに、論理アドレスとデータを書き込んだ物理アドレスとが対応するように論理アドレステーブル201及び物理アドレステーブル206を更新する。またデータの書き込みにより一部有効一部無効のブロック又は全部有効のブロックが存在することになるため、属性番号1の各管理リスト(221、223、226)間でブロック情報232を移動して各管理リストを更新する(S1005)。 The flash memory controller 111 writes the data and updates the logical address table 201 and the physical address table 206 so that the logical address corresponds to the physical address where the data is written. In addition, since some valid / partial invalid blocks or all valid blocks exist due to data writing, the block information 232 is moved between the management lists (221, 223, 226) of attribute number 1 to The management list is updated (S1005).
 次いでフラッシュメモリコントローラ111は、読出し指示コマンド306を受領したか否かを判断する(S1006)。フラッシュメモリコントローラ111は、ステップS1006の判断で否定結果を得ると、ステップS1008に移行する。 Next, the flash memory controller 111 determines whether or not the read instruction command 306 has been received (S1006). If the flash memory controller 111 obtains a negative result in the determination at step S1006, the flash memory controller 111 proceeds to step S1008.
 これに対し、フラッシュメモリコントローラ111は、ステップS1006の判断で肯定結果を得ると、論理アドレステーブル201を参照して、指定された論理アドレスに対応する物理アドレスからデータを読み出す(S1007)。 On the other hand, when the flash memory controller 111 obtains a positive result in the determination at step S1006, it reads data from the physical address corresponding to the designated logical address with reference to the logical address table 201 (S1007).
 なおステップS1007において、エラー率を参照してリフレッシュ判定処理を実行するとしてもよい。 In step S1007, the refresh determination process may be executed with reference to the error rate.
 次いでフラッシュメモリコントローラ111は、無効化指示コマンド307を受領したか否かを判断する(S1008)。フラッシュメモリコントローラ111は、ステップS1008の判断で否定結果を得ると、ステップS1010に移行する。 Next, the flash memory controller 111 determines whether or not the invalidation instruction command 307 has been received (S1008). If the flash memory controller 111 obtains a negative result in the determination at step S1008, the flash memory controller 111 proceeds to step S1010.
 これに対し、フラッシュメモリコントローラ111は、ステップS1008の判断で肯定結果を得ると、論理アドレステーブル201及び物理アドレステーブル206を参照して、指定された論理アドレス及び対応する物理アドレスのページを無効化して論理アドレステーブル201及び物理アドレステーブル206を更新する(S1009)。 On the other hand, when the flash memory controller 111 obtains a positive result in the determination at step S1008, it refers to the logical address table 201 and the physical address table 206 and invalidates the page of the specified logical address and the corresponding physical address. The logical address table 201 and physical address table 206 are updated (S1009).
 またフラッシュメモリコントローラ111は、無効化したことにより全部無効のブロックが存在することになるため、属性番号1の各管理リスト(221、223、226)間でブロック情報232を移動して各管理リストを更新する。また無効化した容量の現象を対応する属性の現在容量欄218に反映して履歴テーブル216を更新する(S1009)。 Since the flash memory controller 111 has all invalid blocks due to the invalidation, the block information 232 is moved between the management lists (221, 223, 226) of attribute number 1 and the respective management lists. Update. Also, the history table 216 is updated by reflecting the invalidated capacity phenomenon in the current capacity column 218 of the corresponding attribute (S1009).
 次いでフラッシュメモリコントローラ111は、閾値テーブル211を参照して、属性番号1により示される属性のブロックグループがリフレッシュ判定処理の実行タイミングであるか否かを判断する(S1010)。 Next, the flash memory controller 111 refers to the threshold table 211 to determine whether or not the block group having the attribute indicated by the attribute number 1 is the execution timing of the refresh determination process (S1010).
 フラッシュメモリコントローラ111は、ステップS1010の判断で否定結果を得ると、ステップS1012に移行する。これに対し、フラッシュメモリコントローラ111は、ステップS1010の判断で肯定結果を得ると、属性番号1のリフレッシュ判定リスト226に登録されている全てのブロックを順次読み出してリフレッシュ判定処理を実行し、必要な場合にはリフレッシュ処理を実行する(S1011)。 If the flash memory controller 111 obtains a negative result in the determination at step S1010, it proceeds to step S1012. On the other hand, when the flash memory controller 111 obtains a positive result in the determination in step S1010, it sequentially reads all the blocks registered in the refresh determination list 226 of attribute number 1 and executes a refresh determination process. In this case, refresh processing is executed (S1011).
 なおリフレッシュ判定処理においてフラッシュメモリコントローラ111は、閾値テーブル211を参照して、属性番号1に対応するリフレッシュ判定閾値(第1の許容エラー率)と、リフレッシュ判定リスト226から読み出したブロックの前回エラー率232Cとを比較する。前回エラー率がリフレッシュ判定閾値以上の場合、リフレッシュ処理を実行する必要があると判断する。 In the refresh determination process, the flash memory controller 111 refers to the threshold value table 211, and determines the refresh determination threshold value (first allowable error rate) corresponding to the attribute number 1 and the previous error rate of the block read from the refresh determination list 226. Compare with 232C. If the previous error rate is equal to or higher than the refresh determination threshold, it is determined that the refresh process needs to be executed.
 またリフレッシュ処理においてフラッシュメモリコントローラ111は、属性番号1のリフレッシュ先選択リスト223からリフレッシュ先のブロックを選択し、選択したブロックにリフレッシュ判定リスト226から読み出したブロックのデータを書き込む。 In the refresh process, the flash memory controller 111 selects the refresh destination block from the refresh destination selection list 223 with the attribute number 1, and writes the block data read from the refresh determination list 226 to the selected block.
 またフラッシュメモリコントローラ111は、リフレッシュ判定処理に際し、閾値テーブル211を参照して、属性番号1に対応する不良ブロック判定閾値(第2の許容エラー率)と、リフレッシュ判定リスト226から読み出したブロックの前回エラー率232Cとを比較する。前回エラー率が不良ブロック判定閾値以上の場合、読み出したブロックが不良であると判断してこのブロックを読出し時エラー率とともに不良リスト230に登録する。 In addition, the flash memory controller 111 refers to the threshold table 211 during the refresh determination process, and determines the bad block determination threshold (second allowable error rate) corresponding to the attribute number 1 and the previous block read from the refresh determination list 226. The error rate 232C is compared. If the previous error rate is equal to or higher than the defective block determination threshold, it is determined that the read block is defective, and this block is registered in the defect list 230 together with the read error rate.
 次いでフラッシュメモリコントローラ111は、履歴監視期間が経過したか否かを判断する(S1012)。フラッシュメモリコントローラ111は、ステップS1012の判断で否定結果を得ると、ステップS1002に移行して上記説明してきた処理を繰り返す。 Next, the flash memory controller 111 determines whether the history monitoring period has elapsed (S1012). If the flash memory controller 111 obtains a negative result in the determination at step S1012, the flash memory controller 111 proceeds to step S1002 and repeats the processing described above.
 これに対し、フラッシュメモリコントローラ111は、ステップS1012の判断で肯定結果を得ると、ステップS1015に移行して、属性番号1以外の全ての属性について上記説明してきた処理を実行可能とするため、属性番号が2~6の各管理リスト(221、223、226)を作成し、属性番号が2~6により示される属性のデータを対応するブロックグループのブロックに書き込み、論理アドレステーブル201、物理アドレステーブル206及び各管理リスト(221、223、226)の更新を実行する(S1015)。 On the other hand, when the flash memory controller 111 obtains a positive result in the determination at step S1012, the flash memory controller 111 proceeds to step S1015 and enables the processing described above for all the attributes other than the attribute number 1 to be executed. Each management list (221, 223, 226) with numbers 2 to 6 is created, the attribute data indicated by the attribute numbers 2 to 6 is written to the corresponding block group block, the logical address table 201, the physical address table 206 and each management list (221, 223, 226) are updated (S1015).
 具体的にフラッシュメモリコントローラ111は、まず履歴テーブル216の最大容量欄219を参照して、各属性の使用容量比を取得する。次いで属性番号2~6のリフレッシュ先選択リスト223を作成し、属性番号1のリフレッシュ先選択リスト223から取得した容量比に応じてブロック情報232を移動する。 Specifically, the flash memory controller 111 first refers to the maximum capacity column 219 of the history table 216 and acquires the used capacity ratio of each attribute. Next, a refresh destination selection list 223 with attribute numbers 2 to 6 is created, and block information 232 is moved according to the capacity ratio acquired from the refresh destination selection list 223 with attribute number 1.
 またフラッシュメモリコントローラ111は、論理アドレステーブル201を参照して、属性番号1のリフレッシュ判定リスト226の全ブロックについて、属性番号2~6のリフレッシュ先選択リスト223内のブロックにデータを書き移す。また書き移した結果を反映するため、論理アドレステーブル201、物理アドレステーブル206を更新し、属性番号2~6の書き込み先選択リスト221及びリフレッシュ判定リスト226にブロック情報232を追加する。 Further, the flash memory controller 111 refers to the logical address table 201 and transfers data to all blocks in the refresh determination list 226 with attribute number 1 to blocks in the refresh destination selection list 223 with attribute numbers 2 to 6. In order to reflect the transferred result, the logical address table 201 and the physical address table 206 are updated, and the block information 232 is added to the write destination selection list 221 and the refresh determination list 226 with the attribute numbers 2 to 6.
 この書き移しの結果、属性番号1の書込み先選択リスト221及びリフレッシュ判定リスト226内のブロック情報232のうち、全ページが無効になるブロックが発生するので、これらを属性ごとの使用容量比に従って属性番号2~6のリフレッシュ先選択リスト223に配分する。 As a result of this transfer, blocks in which all pages are invalid are generated among the block information 232 in the write destination selection list 221 of attribute number 1 and the refresh determination list 226, and these are attributed according to the used capacity ratio for each attribute. It is distributed to the refresh destination selection list 223 of numbers 2-6.
 またステップS1011において属性番号1の属性としては不良ブロックと判定されたブロックであっても、他の属性番号2~6の属性としては不良ブロックではない場合があるため、この場合は対応する属性番号2~6のリフレッシュ先選択リスト223に不良ブロックと判定されたブロックを移動する。 In addition, even if the block with the attribute number 1 is determined to be a bad block in step S1011, the other attribute numbers 2 to 6 may not be a bad block. The blocks determined as defective blocks are moved to the refresh destination selection lists 223 of 2 to 6.
 なお本実施の形態においては、属性番号1のリフレッシュ判定リスト226の全ブロックのデータを一度に本来の属性番号2~6のリフレッシュ先選択リスト223内のブロックに書き移すとしたが、これに限らず、書込み指示コマンド305の受領時及びリフレッシュ判定処理の実行時に書込みデータを本来の属性番号2~6の書込み先選択リスト221及びリフレッシュ判定リスト226に少しずつ移動させるとしてもよい。 In the present embodiment, the data of all blocks in the refresh determination list 226 with attribute number 1 are transferred at once to the blocks in the refresh destination selection list 223 with original attribute numbers 2 to 6, but this is not restrictive. Alternatively, the write data may be moved little by little to the original write destination selection list 221 and the refresh determination list 226 of the attribute numbers 2 to 6 when the write instruction command 305 is received and when the refresh determination process is executed.
 ステップS1016~S1023の処理は、ステップS1017において履歴テーブル216を更新しない点、ステップS1019において属性番号1ではなく本来の属性番号2~6のブロックグループに書き込んで各管理リスト(221、223、226)を更新する点及びステップS1023において属性番号1ではなく本来の属性番号2~6の各管理リスト(221、223、226)を更新する点で、ステップS1002~S1009と異なる。 The processing of steps S1016 to S1023 does not update the history table 216 in step S1017. In step S1019, the management list (221, 223, 226) is written in the block group of original attribute numbers 2 to 6 instead of attribute number 1. Is different from steps S1002 to S1009 in that the management list (221, 223, 226) of the original attribute numbers 2 to 6 is updated instead of the attribute number 1 in step S1023.
 ステップS1016~S1023の処理を実行した後、フラッシュメモリコントローラ111は、閾値テーブル211を参照して、属性番号M(2~6)により示される属性のブロックグループがリフレッシュ判定処理の実行タイミングであるか否かを判断し(S1024)、肯定結果を得ると、リフレッシュ判定処理、リフレッシュ処理又は不良ブロック判定処理を実行して(S1025)、本処理における一連の処理を終了する。 After executing the processing of steps S1016 to S1023, the flash memory controller 111 refers to the threshold value table 211 and determines whether the block group having the attribute indicated by the attribute number M (2 to 6) is the execution timing of the refresh determination processing. If it is determined whether or not (S1024) and an affirmative result is obtained, a refresh determination process, a refresh process or a defective block determination process is executed (S1025), and a series of processes in this process is terminated.
 なおステップS1025の処理は、不良ブロック判定処理において属性番号M(2~6の何れか)では不良ブロックと判定されても、他の属性番号(M以外の2~6の何れか)では不良ブロックと判定されなければ、他の属性番号のブロックグループに移動する処理を実行するという点で、ステップS1011と異なる。詳細については後述する(図21B)。 In the process of step S1025, even if the attribute number M (any one of 2 to 6) is determined to be a bad block in the bad block determination process, any other attribute number (any one of 2 to 6 other than M) is bad. If not determined, step S1011 is different in that a process of moving to a block group with another attribute number is executed. Details will be described later (FIG. 21B).
 図17は、属性指示コマンド受領処理の処理手順を示す。この属性指示コマンド受領処理は、フラッシュメモリコントローラ111が属性指示コマンド304を受領したことを契機として実行される処理であり、具体的には図16A及び図16BのステップS1003及びS1017における詳細な処理である。 FIG. 17 shows a processing procedure of attribute instruction command reception processing. This attribute instruction command receiving process is a process that is executed when the flash memory controller 111 receives the attribute instruction command 304. Specifically, the attribute instruction command receiving process is a detailed process in steps S1003 and S1017 of FIGS. 16A and 16B. is there.
 まずフラッシュメモリコントローラ111は、属性指示コマンド304を受領すると、論理アドレステーブル201の対応する論理アドレス範囲に指定された属性番号1~6の何れかを登録する(S1102)。次いでフラッシュメモリコントローラ111は、履歴監視経過前であるか否かを判断する(S1103)。 First, when the flash memory controller 111 receives the attribute instruction command 304, it registers any one of the attribute numbers 1 to 6 specified in the corresponding logical address range of the logical address table 201 (S1102). Next, the flash memory controller 111 determines whether or not history monitoring has elapsed (S1103).
 フラッシュメモリコントローラ111は、ステップS1103の判断で否定結果を得ると、この属性指示コマンド受領処理を終了する。これに対し、フラッシュメモリコントローラ111は、ステップS1103の判断で肯定結果を得ると、履歴テーブル216の対応する属性の現在容量欄218に指定された論理アドレス範囲の容量を加算して履歴テーブル216を更新する(S1104)。 If the flash memory controller 111 obtains a negative result in the determination at step S1103, it ends this attribute instruction command receiving process. On the other hand, when the flash memory controller 111 obtains a positive result in the determination at step S1103, it adds the capacity of the logical address range specified in the current capacity column 218 of the corresponding attribute of the history table 216 to add the history table 216 to the history table 216. Update (S1104).
 次いでフラッシュメモリコントローラ111は、履歴テーブル216を参照して、各属性の最大容量が現在容量よりも大きいか否かを判断する(S1105)。フラッシュメモリコントローラ111は、ステップS1105の判断で否定結果を得ると、この属性指示コマンド受領処理を終了する。これに対し、フラッシュメモリコントローラ111は、ステップS1105の判断で肯定結果を得ると、対応する最大容量欄219の値を更新して(S1106)、この属性指示コマンド受領処理を終了する。 Next, the flash memory controller 111 refers to the history table 216 to determine whether the maximum capacity of each attribute is larger than the current capacity (S1105). If the flash memory controller 111 obtains a negative result in the determination at step S1105, it ends this attribute instruction command reception processing. On the other hand, when the flash memory controller 111 obtains a positive result in the determination at step S1105, it updates the value of the corresponding maximum capacity column 219 (S1106), and ends this attribute instruction command receiving process.
 図18は、書込み指示コマンド受領処理の処理手順を示す。この書込み指示コマンド受領処理は、フラッシュメモリコントローラ111が書込み指示コマンド305を受領したことを契機として実行される処理であり、具体的には図16A及び図16BのステップS1005及びS1019における詳細な処理である。 FIG. 18 shows the processing procedure of the write instruction command reception process. This write instruction command receiving process is a process that is executed when the flash memory controller 111 receives the write instruction command 305, and specifically, is a detailed process in steps S1005 and S1019 of FIGS. 16A and 16B. is there.
 まずフラッシュメモリコントローラ111は、変数Lに論理アドレステーブル201の属性番号欄205に登録する属性番号(書込みデータ本来の属性を示す属性番号)を代入する(S1202)。次いでフラッシュメモリコントローラ111は、履歴監視期間経過後であるか否かを判断する(S1203)。 First, the flash memory controller 111 assigns the attribute number (attribute number indicating the original attribute of the write data) to be registered in the attribute number column 205 of the logical address table 201 to the variable L (S1202). Next, the flash memory controller 111 determines whether or not the history monitoring period has elapsed (S1203).
 フラッシュメモリコントローラ111は、ステップS1203の判断で肯定結果を得ると、履歴監視期間経過後は属性番号2~6について処理を実行するため、変数Kに変数L(2~6の何れか)を代入する(S1204)。これに対し、フラッシュメモリコントローラ111は、ステップS1203の判断で否定結果を得ると、履歴監視期間経過前は属性番号1について処理を実行するため変数Kに1を代入する(S1205)。 If the flash memory controller 111 obtains a positive result in the determination at step S1203, it substitutes the variable L (any one of 2 to 6) for the variable K to execute processing for the attribute numbers 2 to 6 after the history monitoring period has elapsed. (S1204). In contrast, if the flash memory controller 111 obtains a negative result in the determination at step S1203, it substitutes 1 for the variable K to execute the process for attribute number 1 before the history monitoring period elapses (S1205).
 次いでフラッシュメモリコントローラ111は、属性番号Kの書込み先選択リスト221が空でないか否かを判断する(S1206)。フラッシュメモリコントローラ111は、ステップS1206の判断で肯定結果を得ると、属性番号Kの書込み先選択リスト221に分類されているブロックグループから書込み先のページを選択する(S1207)。 Next, the flash memory controller 111 determines whether or not the write destination selection list 221 with the attribute number K is not empty (S1206). If the flash memory controller 111 obtains a positive result in the determination at step S1206, it selects a write destination page from the block groups classified in the write destination selection list 221 with the attribute number K (S1207).
 このときフラッシュメモリコントローラ111は、属性番号Kの書込み先選択リスト221に登録されているブロック情報のうち、先頭のブロック情報を選択する(エラー率が最小のブロック情報)を選択することにより書込み先のページを選択する。そしてフラッシュメモリコントローラ111は、選択したページにデータを書き込む(S1211)。 At this time, the flash memory controller 111 selects the first block information (block information with the lowest error rate) from among the block information registered in the write destination selection list 221 with the attribute number K, thereby writing the write destination. Select the page. Then, the flash memory controller 111 writes data to the selected page (S1211).
 これに対し、フラッシュメモリコントローラ111は、ステップS1206の判断で否定結果を得ると、属性番号Kのリフレッシュ先選択リスト223が空でないか否かを判断する(S1208)。フラッシュメモリコントローラ111は、ステップS1208の判断で肯定結果を得ると、属性番号Kのリフレッシュ先選択リスト223に分類されているブロックグループから書込み先のページを選択して(S1209)、選択したページにデータを書き込む(ステップS1211)。 On the other hand, if the flash memory controller 111 obtains a negative result in the determination at step S1206, it determines whether or not the refresh destination selection list 223 with the attribute number K is not empty (S1208). If the flash memory controller 111 obtains a positive result in the determination at step S1208, it selects a write destination page from the block group classified in the refresh destination selection list 223 with the attribute number K (S1209), and selects the selected page. Data is written (step S1211).
 またフラッシュメモリコントローラ111は、ステップS1208の判断で否定結果を得ると、予備リスト229に分類されているブロックグループから書込み先のページを選択して(S1210)、選択したページにデータを書き込む(ステップS1211)。ステップS1211において何れかの管理リスト(221、223、229)に分類されているページにデータが書き込まれることになる。 If the flash memory controller 111 obtains a negative result in the determination at step S1208, it selects a write destination page from the block group classified in the preliminary list 229 (S1210), and writes the data to the selected page (step S1210). S1211). In step S1211, data is written to the pages classified in any management list (221, 223, 229).
 次いでフラッシュメモリコントローラ111は、書込み指示コマンド305により既に書込み済みの論理アドレスに対して上書きが指示されてデータが書き込まれている場合があるため、論理アドレステーブル201の対応する論理アドレスに上書き前の古い物理ページアドレスが登録されているか否かを判断する(S1214)。 Next, the flash memory controller 111 is instructed to overwrite a logical address that has already been written by the write instruction command 305 and data has been written. It is determined whether or not an old physical page address is registered (S1214).
 フラッシュメモリコントローラ111は、ステップS1214の判断で否定結果を得ると、ステップS1218に移行する。これに対し、フラッシュメモリコントローラ111は、ステップS1214の判断で肯定結果を得ると、論理アドレステーブル201の古い物理ページを無効化する(S1215)。 If the flash memory controller 111 obtains a negative result in the determination at step S1214, the flash memory controller 111 proceeds to step S1218. On the other hand, when the flash memory controller 111 obtains a positive result in the determination at step S1214, it invalidates the old physical page of the logical address table 201 (S1215).
 フラッシュメモリコントローラ111は、ステップS1215の無効化する処理により、この無効化した物理ページを含む物理ブロック内の全ページが無効化されたか否かを判断する(S1216)。フラッシュメモリコントローラ111は、ステップS1216の判断で否定結果を得ると、ステップS1218に移行する。 The flash memory controller 111 determines whether all pages in the physical block including the invalidated physical page have been invalidated by the invalidation process in step S1215 (S1216). If the flash memory controller 111 obtains a negative result in the determination at step S1216, the flash memory controller 111 proceeds to step S1218.
 これに対し、フラッシュメモリコントローラ111は、ステップS1216の判断で肯定結果を得ると、属性番号Kの各管理リスト(221、223、226)間でブロック情報232を移動して各管理リストを更新する。具体的には古い物理ブロックに関するブロック情報232をリフレッシュ判定リスト226から削除し、(登録されている場合には)書き込み先選択リスト221から削除し、リフレッシュ先選択リスト223に登録する(S1217)。 On the other hand, when the flash memory controller 111 obtains a positive result in the determination at step S1216, it moves the block information 232 between the management lists (221, 223, 226) of the attribute number K and updates each management list. . Specifically, the block information 232 regarding the old physical block is deleted from the refresh determination list 226, deleted from the write destination selection list 221 (if registered), and registered in the refresh destination selection list 223 (S1217).
 次いでフラッシュメモリコントローラ111は、ステップS1207、S1209又はS1210において選択したページに対応する新たな物理ページアドレスを論理アドレステーブル201に登録し、また新たな物理ページアドレスに対応する論理アドレスを物理アドレステーブル206に登録する(S1218)。 Next, the flash memory controller 111 registers a new physical page address corresponding to the page selected in step S1207, S1209, or S1210 in the logical address table 201, and also registers a logical address corresponding to the new physical page address in the physical address table 206. (S1218).
 次いでフラッシュメモリコントローラ111は、ステップS1209又はS1210においてリフレッシュ先選択リスト223又は予備リスト229からページを選択したか否かを判断する(S1219)。フラッシュメモリコントローラ111は、ステップS1219の判断で否定結果を得ると、ステップS1221に移行する。 Next, the flash memory controller 111 determines whether or not a page is selected from the refresh destination selection list 223 or the spare list 229 in step S1209 or S1210 (S1219). If the flash memory controller 111 obtains a negative result in the determination at step S1219, the flash memory controller 111 proceeds to step S1221.
 これに対し、フラッシュメモリコントローラ111は、ステップS1219の判断で肯定結果を得ると、ステップS1209又はS1210で選択したページを含むブロックは一部有効になったので、このブロックのブロック情報232をリフレッシュ先選択リスト223又は予備リスト229から削除し、一方で属性番号Kのリフレッシュ判定リスト226に登録する(S1220)。 On the other hand, if the flash memory controller 111 obtains a positive result in the determination at step S1219, a part of the block including the page selected at step S1209 or S1210 becomes valid, so the block information 232 of this block is updated to the refresh destination. It is deleted from the selection list 223 or the reserve list 229, while being registered in the refresh determination list 226 with the attribute number K (S1220).
 次いでフラッシュメモリコントローラ111は、ステップS1209又はS1210で選択したページを含むブロックの一部に空きページがあるか否かを判断する(S1221)。フラッシュメモリコントローラ111は、ステップS1221の判断で肯定結果を得ると、ステップS1209又はS1210で選択したページを含むブロックのブロック情報を(登録されていない場合には)属性番号Kの書込み先選択リスト221に登録して(S1222)、この書込み指示コマンド受領処理を終了する。 Next, the flash memory controller 111 determines whether there is an empty page in a part of the block including the page selected in step S1209 or S1210 (S1221). When the flash memory controller 111 obtains a positive result in the determination at step S1221, the block information of the block including the page selected at step S1209 or S1210 (if not registered) is written to the write destination selection list 221 with the attribute number K. (S1222), and the write instruction command receiving process is terminated.
 これに対し、フラッシュメモリコントローラ111は、ステップS1221の判断で否定結果を得ると、ステップS1209又はS1210で選択したページにデータを書き込んだ結果、全ページが有効になったものと判断し、このブロックのブロック情報を(登録されている場合には)属性番号Kの書込み先選択リスト221から削除して(S1223)、この書込み指示コマンド受領処理を終了する。 In contrast, if the flash memory controller 111 obtains a negative result in the determination at step S1221, the flash memory controller 111 determines that all the pages are valid as a result of writing data to the page selected at step S1209 or S1210. Is deleted from the write destination selection list 221 of the attribute number K (if registered) (S1223), and the write instruction command receiving process is terminated.
 図19は、読出し指示コマンド受領処理の処理手順を示す。この読出し指示コマンド受領処理は、フラッシュメモリコントローラ111が読出し指示コマンド306を受領したことを契機として実行される処理であり、具体的には図16A及び図16BのステップS1007及びS1021における詳細な処理である。 FIG. 19 shows a processing procedure for reading instruction command reception processing. This read instruction command receiving process is a process that is executed when the flash memory controller 111 receives the read instruction command 306. Specifically, the read instruction command receiving process is a detailed process in steps S1007 and S1021 of FIGS. 16A and 16B. is there.
 フラッシュメモリコントローラ111は、論理アドレステーブル201を参照して、指定された論理アドレスに対応する物理ページアドレスからデータを読み出して(S1302)、この読出し指示コマンド受領処理を終了する。 The flash memory controller 111 reads the data from the physical page address corresponding to the designated logical address with reference to the logical address table 201 (S1302), and ends the read instruction command receiving process.
 図20は、無効化指示コマンド受領処理の処理手順を示す。この無効化指示コマンド受領処理は、フラッシュメモリコントローラ111が無効化指示コマンド307を受領したことを契機として実行される処理であり、具体的には図16A及び図16BのステップS1009及びS1023における詳細な処理である。 FIG. 20 shows the processing procedure of the invalidation instruction command reception processing. This invalidation instruction command receiving process is a process that is executed when the flash memory controller 111 receives the invalidation instruction command 307. Specifically, the details are detailed in steps S1009 and S1023 of FIGS. 16A and 16B. It is processing.
 まずフラッシュメモリコントローラ111は、論理アドレステーブル201及び物理アドレステーブル206を参照して、指定された論理アドレスに対応する古い物理ページアドレスを無効化する(S1305)。 First, the flash memory controller 111 refers to the logical address table 201 and the physical address table 206 to invalidate the old physical page address corresponding to the designated logical address (S1305).
 フラッシュメモリコントローラ111は、ステップS1305の無効化する処理により、この無効化した物理ページを含む物理ブロック内の全ページが無効化されたか否かを判断する(S1306)。フラッシュメモリコントローラ111は、ステップS1306の判断で否定結果を得ると、ステップS1312に移行する。 The flash memory controller 111 determines whether all pages in the physical block including the invalidated physical page have been invalidated by the invalidation process in step S1305 (S1306). If the flash memory controller 111 obtains a negative result in the determination at step S1306, the flash memory controller 111 proceeds to step S1312.
 これに対し、フラッシュメモリコントローラ111は、ステップS1305の判断で肯定結果を得ると、変数Lに論理アドレステーブル201の属性番号欄205に登録する属性番号を代入する(S1307)。次いでフラッシュメモリコントローラ111は、履歴監視期間経過後であるか否かを判断する(S1308)。 On the other hand, if the flash memory controller 111 obtains a positive result in the determination at step S1305, it substitutes the attribute number registered in the attribute number column 205 of the logical address table 201 for the variable L (S1307). Next, the flash memory controller 111 determines whether or not the history monitoring period has elapsed (S1308).
 フラッシュメモリコントローラ111は、ステップS1308の判断で肯定結果を得ると、履歴監視期間経過後は属性番号2~6の何れかについて処理を実行するため、変数Kに変数L(2~6の何れか)を代入する(S1309)。これに対し、フラッシュメモリコントローラ111は、ステップS1308の判断で否定結果を得ると、履歴監視期間経過前は属性番号1について処理を実行するため、変数Kに1を代入する(S1310)。 If the flash memory controller 111 obtains a positive result in the determination at step S1308, the flash memory controller 111 executes processing for any of the attribute numbers 2 to 6 after the history monitoring period elapses. ) Is substituted (S1309). On the other hand, when the flash memory controller 111 obtains a negative result in the determination at step S1308, it substitutes 1 for the variable K in order to execute the process for the attribute number 1 before the history monitoring period elapses (S1310).
 次いでフラッシュメモリコントローラ111は、属性番号Kの各管理リスト(221、223、226)間でブロック情報232を移動して各管理リストを更新する。具体的には古い物理ブロックに関するブロック情報232をリフレッシュ判定リスト262から削除し、(登録されている場合には)書込み先選択リスト221から削除し、リフレッシュ先選択リスト223に登録する(S1311)。 Next, the flash memory controller 111 moves the block information 232 between each management list (221, 223, 226) of the attribute number K and updates each management list. Specifically, the block information 232 relating to the old physical block is deleted from the refresh determination list 262, deleted from the write destination selection list 221 (if registered), and registered in the refresh destination selection list 223 (S1311).
 次いでフラッシュメモリコントローラ111は、履歴監視期間経過前であるか否かを判断し(S1312)、この判断で否定結果を得るとこの無効化指示コマンド受領処理を終了する。これに対し、フラッシュメモリコントローラ111は、この判断で肯定結果を得ると、履歴テーブル216の対応する属性の現在容量欄218から指定された論理アドレスの範囲の容量を減算することにより履歴テーブル216を更新して(S1313)、この無効化指示コマンド受領処理を終了する。 Next, the flash memory controller 111 determines whether or not the history monitoring period has elapsed (S1312). If a negative result is obtained in this determination, the invalidation instruction command receiving process is terminated. On the other hand, if the flash memory controller 111 obtains a positive result in this determination, it subtracts the capacity in the range of the logical address designated from the current capacity column 218 of the corresponding attribute of the history table 216, thereby subtracting the history table 216 from the history table 216. It is updated (S1313), and the invalidation instruction command receiving process is terminated.
 図21A及び図21Bは、リフレッシュ判定処理及び不良ブロック判定処理の処理手順を示す。このリフレッシュ判定処理及び不良ブロック判定処理は、何れかの属性のブロックグループがリフレッシュ判定処理の実行タイミングであることを契機として、フラッシュメモリコントローラ111により実行される処理であり、具体的には図16A及び図16BのS1011及びS1025における詳細な処理である。 21A and 21B show a processing procedure for the refresh determination process and the bad block determination process. This refresh determination process and bad block determination process are processes executed by the flash memory controller 111 when the block group of any attribute is the execution timing of the refresh determination process. Specifically, FIG. And detailed processing in S1011 and S1025 of FIG. 16B.
 まずフラッシュメモリコントローラ111は、閾値テーブル211を参照して、属性番号M(1~6の何れか)により示される属性のブロックグループがリフレッシュ判定処理の実行タイミングであるか否かを判断する(S1402)。フラッシュメモリコントローラ111は、この判断で否定結果を得ると、このリフレッシュ判定処理及び不良ブロック判定処理を終了する。 First, the flash memory controller 111 refers to the threshold value table 211 and determines whether or not the block group having the attribute indicated by the attribute number M (any one of 1 to 6) is the execution timing of the refresh determination process (S1402). ). If the flash memory controller 111 obtains a negative result in this determination, it ends this refresh determination processing and bad block determination processing.
 これに対し、フラッシュメモリコントローラ111は、ステップS1402の判断で肯定結果を得ると、属性番号Mのリフレッシュ判定リスト226に登録されているブロック情報232から物理ブロックを一つ選択し、選択した物理ブロックからデータを読み出してエラー率を算出する(S1403)。 On the other hand, when the flash memory controller 111 obtains a positive result in the determination at step S1402, the flash memory controller 111 selects one physical block from the block information 232 registered in the refresh determination list 226 with the attribute number M, and selects the selected physical block. The data is read out to calculate the error rate (S1403).
 次いでフラッシュメモリコントローラ111は、閾値テーブル211を参照して、算出したエラー率が対応するリフレッシュ判定閾値(第1の許容エラー率)以上であるか否かを判断する(S1405)。フラッシュメモリコントローラ111は、この判断で肯定結果を得ると、リフレッシュ処理を実行するべく、まず属性番号Mのリフレッシュ先選択リスト223が空でないか否かを判断する(S1406)。 Next, the flash memory controller 111 refers to the threshold table 211 to determine whether or not the calculated error rate is equal to or higher than the corresponding refresh determination threshold (first allowable error rate) (S1405). If the flash memory controller 111 obtains a positive result in this determination, it first determines whether or not the refresh destination selection list 223 with the attribute number M is not empty in order to execute the refresh process (S1406).
 フラッシュメモリコントローラ111は、ステップS1406の判断で肯定結果を得ると、属性番号Mのリフレッシュ先選択リスト223からリフレッシュ先とするブロックを選択する(S1407)。このとき管理リスト内の先頭(エラー率が最小)のブロック情報232のブロックを選択する。これに対し、フラッシュメモリコントローラ111は、ステップS1406の判断で否定結果を得ると、予備リスト229からリフレッシュ先とするブロックを選択する(S1408)。 If the flash memory controller 111 obtains a positive result in the determination at step S1406, it selects the block to be refreshed from the refresh destination selection list 223 with the attribute number M (S1407). At this time, the block of the block information 232 at the head (the error rate is minimum) in the management list is selected. On the other hand, if the flash memory controller 111 obtains a negative result in the determination at step S1406, it selects a block to be refreshed from the preliminary list 229 (S1408).
 次いでフラッシュメモリコントローラ111は、選択した物理ブロックにステップS1403において読み出した全データを書き込み(リフレッシュ処理)、対応する新たな物理ページアドレスを論理アドレステーブル201に登録し、対応する論理アドレスを物理アドレステーブル206に登録する。 Next, the flash memory controller 111 writes all the data read in step S1403 to the selected physical block (refresh processing), registers the corresponding new physical page address in the logical address table 201, and stores the corresponding logical address in the physical address table. It registers in 206.
 また物理アドレステーブル206の読出し元の物理ブロックを無効化し、選択した物理ブロックを属性番号Mのリフレッシュ先選択リスト223又は予備リスト229から削除し、属性番号Mのリフレッシュ判定リスト226に登録する(S1409)。なおリフレッシュ判定リスト226に登録する際、ステップS1403において算出したエラー率をブロック情報232においてソート可能な位置に含ませてから登録する。 Further, the physical block from which the physical address table 206 is read is invalidated, the selected physical block is deleted from the refresh destination selection list 223 or the spare list 229 with the attribute number M, and registered in the refresh determination list 226 with the attribute number M (S1409). ). In addition, when registering in the refresh determination list 226, the error rate calculated in step S1403 is included in a sortable position in the block information 232 before registration.
 そしてフラッシュメモリコントローラ111は、リフレッシュ処理により書き込んだ書込み先のブロックにまだ空きページがあるか否かを判断する(S1410)。ステップS1403において読み出したブロックに空きがない場合、書込み先のブロックも空きがないので否定結果を得ることになり、一部に空きがある場合、書込み先のブロックも空きがあるので肯定結果を得ることになる。 Then, the flash memory controller 111 determines whether there is still an empty page in the write destination block written by the refresh process (S1410). If the block read in step S1403 has no space, a negative result is obtained because there is no space in the write destination block. If some of the blocks are free, a positive result is obtained because the write destination block is also free. It will be.
 フラッシュメモリコントローラ111は、ステップS1410の判断で否定結果を得ると、ステップS1423に移行する。これに対し、フラッシュメモリコントローラ111は、ステップS1410の判断で肯定結果を得ると、書込み先のブロックのブロック情報232を属性番号Mの書込み先選択リスト221に登録して(S1411)、ステップS1423に移行する。 If the flash memory controller 111 obtains a negative result in the determination at step S1410, the process proceeds to step S1423. On the other hand, if the flash memory controller 111 obtains a positive result in the determination at step S1410, it registers the block information 232 of the write destination block in the write destination selection list 221 with the attribute number M (S1411), and proceeds to step S1423. Transition.
 ステップS1405に戻り、フラッシュメモリコントローラ111は、ステップS1405の判断で否定結果を得ると、リフレッシュ処理の実行は必要ないものと判断し、属性番号Mのリフレッシュ判定リスト226の対応するエラー率を更新する(S1412)。 Returning to step S1405, if the flash memory controller 111 obtains a negative result in the determination of step S1405, it determines that the execution of the refresh process is not necessary, and updates the corresponding error rate in the refresh determination list 226 for attribute number M. (S1412).
 次いでフラッシュメモリコントローラ111は、ステップS1403で選択した物理ブロックに対応するブロック情報232が属性番号Mの書込み先選択リスト221に登録されているか否かを判断する(S1413)。 Next, the flash memory controller 111 determines whether or not the block information 232 corresponding to the physical block selected in step S1403 is registered in the write destination selection list 221 with the attribute number M (S1413).
 フラッシュメモリコントローラ111は、ステップS1413の判断で否定結果を得ると、ステップS1429に移行する。これに対し、フラッシュメモリコントローラ111は、ステップS1413の判断で肯定結果を得ると、属性番号Mの書込み先選択リスト221に登録されているブロック情報232のエラー率を更新して(S1414)、ステップS1429に移行する。 If the flash memory controller 111 obtains a negative result in the determination at step S1413, the process proceeds to step S1429. On the other hand, when the flash memory controller 111 obtains a positive result in the determination at step S1413, it updates the error rate of the block information 232 registered in the write destination selection list 221 with the attribute number M (S1414). The process shifts to S1429.
 次いでフラッシュメモリコントローラ111は、リフレッシュ処理によりステップS1403で選択した読出し元の物理ブロック内の全ページが無効になるため、読出し元の古い物理ブロックに対するブロック情報232を属性番号Mのリフレッシュ判定リスト226から削除し、また(登録されている場合には)書込み先選択リスト221から削除する(S1423)。 Next, since all pages in the read-source physical block selected in step S1403 are invalidated by the refresh process, the flash memory controller 111 receives the block information 232 for the old read-source physical block from the refresh determination list 226 with the attribute number M. Delete (if registered) from the write destination selection list 221 (S1423).
 次いでフラッシュメモリコントローラ111は、閾値テーブル211を参照して、ステップS1403で算出したエラー率が対応する不良ブロック判定閾値(第2の許容エラー率)以上であるか否かを判断する(S1424)。 Next, the flash memory controller 111 refers to the threshold table 211 and determines whether or not the error rate calculated in step S1403 is equal to or higher than the corresponding defective block determination threshold (second allowable error rate) (S1424).
 フラッシュメモリコントローラ111は、この判断で否定結果を得ると、読出し元の古い物理ブロックは不良ブロックではないと判断して、この物理ブロックのブロック情報232を属性番号Mのリフレッシュ先選択リスト223に登録して(S1425)、ステップS1429に移行する。なおリフレッシュ先選択リスト223に登録する際、ステップS1403において算出したエラー率をブロック情報232においてソート可能な位置に含ませてから登録する。 If the flash memory controller 111 obtains a negative result in this determination, it determines that the old physical block to be read is not a bad block, and registers the block information 232 of this physical block in the refresh destination selection list 223 with the attribute number M (S1425), the process proceeds to step S1429. When registering in the refresh destination selection list 223, the error rate calculated in step S1403 is included in a sortable position in the block information 232 before registration.
 これに対し、フラッシュメモリコントローラ111は、ステップS1424の判断で肯定結果を得ると、属性番号Mにより示される属性のブロックとしては不良ブロックであるが、他の属性のブロックとしては不良ブロックでない場合もあるため、閾値テーブル211を参照して、ステップS1403で算出したエラー率よりも小さい不良ブロック判定閾値の属性番号Jがあるか否かを判断する(S1426)。 On the other hand, if the flash memory controller 111 obtains a positive result in the determination at step S1424, the block having the attribute indicated by the attribute number M is a bad block, but the block having another attribute may not be a bad block. Therefore, with reference to the threshold table 211, it is determined whether there is an attribute number J of a defective block determination threshold smaller than the error rate calculated in step S1403 (S1426).
 なお属性番号1に対応する不良ブロック判定閾値は、他の属性番号(2~6)に対応する不良ブロック判定閾値よりも小さい。よって履歴監視期間経過前に属性番号1に関してのみステップS1424の処理を実行している場合、ステップS1426の処理に移行せず、ステップS1428の処理に移行する。 Note that the bad block determination threshold corresponding to attribute number 1 is smaller than the bad block determination threshold corresponding to other attribute numbers (2 to 6). Therefore, when the process of step S1424 is executed only for attribute number 1 before the history monitoring period elapses, the process proceeds to step S1428 without proceeding to step S1426.
 フラッシュメモリコントローラ111は、ステップS1426の判断で肯定結果を得ると、読出し元の古い物理ブロックのブロック情報を属性番号Jのリフレッシュ先選択リスト223に登録して(S1427)、ステップS1429に移行する。なおここでも登録する際、エラー率をブロック情報232においてソート可能な位置に含ませてから登録する。 If the flash memory controller 111 obtains a positive result in the determination at step S1426, it registers the block information of the old physical block of the read source in the refresh destination selection list 223 with the attribute number J (S1427), and proceeds to step S1429. In this case, the registration is performed after the error rate is included in a sortable position in the block information 232.
 これに対し、フラッシュメモリコントローラ111は、ステップS1426の判断で否定結果を得ると、何れの属性番号(1~6)により示される属性においても読出し元の物理ブロックは不良ブロックであると判断して、この物理ブロックを不良リスト230に登録して(S1428)、ステップS1429に移行する。 On the other hand, if the flash memory controller 111 obtains a negative result in the determination at step S1426, the flash memory controller 111 determines that the read-out physical block is a bad block in any attribute indicated by any attribute number (1 to 6). The physical block is registered in the defect list 230 (S1428), and the process proceeds to step S1429.
 フラッシュメモリコントローラ111は、属性番号Mのリフレッシュ判定リスト226に登録されている全てのブロック情報に対して上記説明してきた処理を実行したか否かを判断する(S1429)。フラッシュメモリコントローラ111は、この判断で否定結果を得ると、同一属性の他の物理ブロックについても上述してきた処理を繰り返し実行するためステップS1403に移行する。これに対し、フラッシュメモリコントローラ111は、この判断で肯定結果を得ると、このリフレッシュ判定処理及び不良ブロック判定処理を終了する。 The flash memory controller 111 determines whether or not the processing described above has been executed for all block information registered in the refresh determination list 226 with the attribute number M (S1429). If the flash memory controller 111 obtains a negative result in this determination, it proceeds to step S1403 in order to repeatedly execute the above-described processing for other physical blocks having the same attribute. On the other hand, when the flash memory controller 111 obtains a positive result in this determination, it ends the refresh determination process and the defective block determination process.
(2)第2の実施の形態
 第2の実施の形態は、特定の処理を実行するアプライアンスサーバシステム等において、ホストCPU101上で動作するアプリケーションがブロックグループ間の容量比をフラッシュメモリシステム103に予め指示する点で、第1の実施の形態と異なる。以下第2の実施の形態における情報処理システムについて説明する。なお第1の実施の形態と同様の構成については説明を省略し、異なる構成について説明する。
(2) Second Embodiment In the second embodiment, in an appliance server system or the like that executes a specific process, an application running on the host CPU 101 stores a capacity ratio between block groups in the flash memory system 103 in advance. It differs from the first embodiment in that it is instructed. The information processing system in the second embodiment will be described below. The description of the same configuration as that of the first embodiment is omitted, and a different configuration will be described.
(2-1)処理フロー
 図22は、第2の書込み可能回数向上処理の処理手順を示す。この第2の書込み可能回数向上処理は、例えばホストCPU101から処理開始の指示コマンドが発行されたことを契機として、フラッシュメモリコントローラ111により実行される。なお第2の実施の形態においては、図14の各コマンドに加えて、図15の容量比指示コマンド308が用いられる。
(2-1) Processing Flow FIG. 22 shows the processing procedure of the second writable count improvement processing. The second writable count improvement process is executed by the flash memory controller 111 when a command to start processing is issued from the host CPU 101, for example. In the second embodiment, a capacity ratio instruction command 308 in FIG. 15 is used in addition to the commands in FIG.
 まずフラッシュメモリコントローラ111は、論理アドレステーブル201、物理アドレステーブル206、閾値テーブルを初期化し、容量比指示コマンド308に基づいて履歴テーブル216を初期化し、属性番号1~6の各管理リスト(221、223、226)、予備リスト229及び不良リスト230を作成する(S1515)。 First, the flash memory controller 111 initializes the logical address table 201, the physical address table 206, and the threshold table, initializes the history table 216 based on the capacity ratio instruction command 308, and manages each management list (221, Attribute Number 1 to 6). 223, 226), the preliminary list 229 and the defect list 230 are created (S1515).
 具体的にフラッシュメモリコントローラ111は、ページ有効無効欄203及び208の全てに無効ビットを設定して、論理アドレステーブル201及び物理アドレステーブル206を初期化する。 Specifically, the flash memory controller 111 sets invalid bits in all of the page valid / invalid fields 203 and 208, and initializes the logical address table 201 and the physical address table 206.
 またフラッシュメモリコントローラ111は、属性番号1~6の属性ごとに、リフレッシュ判定周期欄213に予め定められた判定周期を設定し、リフレッシュ判定閾値欄214及び不良ブロック判定閾値欄215に予め定められた閾値(許容エラー率)を設定して、履歴テーブル216を初期化する。 Further, the flash memory controller 111 sets a predetermined determination period in the refresh determination period column 213 for each attribute of the attribute numbers 1 to 6, and is predetermined in the refresh determination threshold field 214 and the defective block determination threshold field 215. A threshold value (allowable error rate) is set, and the history table 216 is initialized.
 またフラッシュメモリコントローラ111は、容量比指示コマンド308により属性番号1~6ごとの容量が指定されるので、指定された容量に基づいて履歴テーブル216を初期化する。 The flash memory controller 111 initializes the history table 216 based on the designated capacity because the capacity for each of the attribute numbers 1 to 6 is designated by the capacity ratio instruction command 308.
 またフラッシュメモリコントローラ111は、フラッシュメモリ119が有する複数のブロックのうち、予め定められた数のブロックを予備リスト229に登録して予備リスト229を作成し、出荷時不良のブロックを不良リスト230に登録して不良リスト230を作成する。 Also, the flash memory controller 111 creates a spare list 229 by registering a predetermined number of blocks among the plurality of blocks of the flash memory 119 in the spare list 229, and blocks defective at the time of shipment in the defect list 230. The defect list 230 is created by registration.
 またフラッシュメモリコントローラ111は、予備リスト229及び不良リスト230に登録したブロック以外のブロックを履歴テーブル216に登録された容量比に基づいて属性番号1~6のリフレッシュ先選択リスト223に登録して属性番号1~6のリフレッシュ先選択リスト223を作成する。また登録するブロックが存在しない状態で属性番号1~6の書込み先選択リスト221及びリフレッシュ判定リスト226を作成する。 Further, the flash memory controller 111 registers the blocks other than the blocks registered in the spare list 229 and the defect list 230 in the refresh destination selection list 223 having the attribute numbers 1 to 6 based on the capacity ratio registered in the history table 216. A refresh destination selection list 223 with numbers 1 to 6 is created. In addition, the write destination selection list 221 and the refresh determination list 226 with the attribute numbers 1 to 6 are created in a state where there is no block to be registered.
 ステップS1516~S1525の処理は、図16Bの履歴監視機関経過後のステップS1016~S1026の処理と同様であるためここでの説明は省略する。 Since the processing in steps S1516 to S1525 is the same as the processing in steps S1016 to S1026 after the history monitoring organization in FIG. 16B, description thereof is omitted here.
(3)第3の実施の形態
 第3の実施の形態は、属性指示コマンド304を用いずに図14の書込み指示コマンド301を用いて書き込みの度にデータの属性を指定する点で、第1の実施の形態と異なる。以下第1の実施の形態と同様の構成については説明を省略し、異なる構成について説明する。
(3) Third Embodiment The third embodiment is different from the first embodiment in that the attribute of data is designated for each writing using the write instruction command 301 of FIG. 14 without using the attribute instruction command 304. This is different from the embodiment. Hereinafter, description of the same configuration as that of the first embodiment will be omitted, and a different configuration will be described.
 なおホストCPU101がフラッシュメモリシステム103を使用する場合、ある属性のデータをどれだけ読み書きするか予め決められない場合がある。この場合、ホストCPU101は、図13の属性指示コマンド304を発行することができないため、この属性指示コマンド304に代えて、図14の書込み指示コマンド301を用いて書き込みの度に書き込むデータの属性を指定する。 Note that when the host CPU 101 uses the flash memory system 103, it may not be determined in advance how much data with a certain attribute is read or written. In this case, since the host CPU 101 cannot issue the attribute instruction command 304 in FIG. 13, the attribute of the data to be written every time writing is performed using the write instruction command 301 in FIG. 14 instead of the attribute instruction command 304. specify.
(3-1)処理フロー
 図23A及び図23Bは、第3の書込み可能回数向上処理の処理手順を示す。この第3の書込み可能回数向上処理は、例えばホストCPU101から処理開始の指示コマンドが発行されたことを契機として、フラッシュメモリコントローラ111により実行される。なお第3の実施の形態においては、図15の各コマンドが用いられる。
(3-1) Processing Flow FIGS. 23A and 23B show a processing procedure of the third writable number improvement processing. This third writable count improvement process is executed by the flash memory controller 111 when the host CPU 101 issues a process start instruction command, for example. In the third embodiment, each command in FIG. 15 is used.
 この図23A及び図23Bに示す第3の書込み可能回数向上処理は、属性指示コマンド受領処理(図16A:S1002、S1003、図16B:S1016、S1017)をせずに、書込み指示コマンド受領処理において属性指示コマンド受領処理を実行する点で、第1の実施の形態と異なる。以下書込みコマンド受領処理(S1604、S1605、S1618、S1619)について説明する。 The third writable number improvement process shown in FIGS. 23A and 23B is performed in the write instruction command reception process without performing the attribute instruction command reception process (FIG. 16A: S1002, S1003, FIG. 16B: S1016, S1017). This is different from the first embodiment in that an instruction command receiving process is executed. The write command reception process (S1604, S1605, S1618, S1619) will be described below.
 まずステップS1604及びS1605について説明すると、フラッシュメモリコントローラ111は、属性監視機関経過前に書込み指示コマンド301を受領すると(S1604:YES)、属性番号1の各管理リスト(221、223、226)を参照して、属性番号1のブロックグループのなかから書込み先のページを選択し、選択したページにデータを書き込む(S1605)。 First, steps S1604 and S1605 will be described. When the flash memory controller 111 receives the write instruction command 301 before the attribute monitoring organization has elapsed (S1604: YES), refer to each management list (221, 223, 226) of attribute number 1. Then, a write destination page is selected from the block group with attribute number 1, and data is written to the selected page (S1605).
 またフラッシュメモリコントローラ111は、データを書き込むとともに、論理アドレスとデータを書き込んだ物理アドレスとが対応するように論理アドレステーブル201及び物理アドレステーブル206を更新する。また書込み指示コマンド301により指定された属性に基づいて、論理アドレステーブル201の属性番号欄205に属性番号を登録する(S1605)。 The flash memory controller 111 writes the data and updates the logical address table 201 and the physical address table 206 so that the logical address corresponds to the physical address where the data is written. Further, based on the attribute specified by the write instruction command 301, the attribute number is registered in the attribute number column 205 of the logical address table 201 (S1605).
 またフラッシュメモリコントローラ111は、データの書き込みにより一部有効一部無効のブロック又は全部有効のブロックが存在することになるため、属性番号1の各管理リスト(221、223、226)間でブロック情報232を移動して各管理リストを更新する。また書込み指示コマンドにより指示されたサイズを履歴テーブル216の対応する現在容量欄218に加算し、現在容量が最大容量よりも大きくなる場合には最大容量欄も更新する(S1605)。 The flash memory controller 111 has a block information between the management lists (221, 223, and 226) of attribute number 1 because there is a partly valid / invalid block or a whole valid block by writing data. 232 is moved and each management list is updated. Further, the size instructed by the write instruction command is added to the corresponding current capacity column 218 of the history table 216, and when the current capacity becomes larger than the maximum capacity, the maximum capacity field is also updated (S1605).
 次いでステップS1618及びS1619について説明すると、フラッシュメモリコントローラ111は、属性監視期間経過後に書込み指示コマンド301を受領すると(S1618:YES)、属性番号2~6の何れかのブロックグループのなかから書込み先のページを選択し、選択したページにデータを書き込む(S1619)。 Next, steps S1618 and S1619 will be described. When the flash memory controller 111 receives the write instruction command 301 after the attribute monitoring period has elapsed (S1618: YES), the flash memory controller 111 selects the write destination from any of the block groups of attribute numbers 2 to 6. A page is selected, and data is written to the selected page (S1619).
 またフラッシュメモリコントローラ111は、データを書き込むとともに、論理アドレスと新たに書き込んだ物理アドレスとが対応するように論理アドレステーブル201及び物理アドレステーブル206を更新する。また属性番号1ではなく本来の属性番号2~6のブロックグループにデータを書き込んだので属性番号2~4の各管理リスト(221、223、226)でブロック情報232を移動して各管理リストを更新する。なお履歴テーブル216の更新は行わない。 Further, the flash memory controller 111 writes the data and updates the logical address table 201 and the physical address table 206 so that the logical address corresponds to the newly written physical address. In addition, since the data is written in the block groups of the original attribute numbers 2 to 6 instead of the attribute number 1, the block information 232 is moved by the management lists (221, 223, 226) of the attribute numbers 2 to 4, and each management list is moved. Update. The history table 216 is not updated.
(4)第4の実施の形態
 第4の実施の形態においては、ホストCPU101上のプログラムが、フラッシュメモリシステム103の使用方法やプログラム内情報に従ってデータの属性(RT時間、クリーン又はダーティ)を指示しつつ、フラッシュメモリシステム103を使用する構成について図24~図31を用いて詳述する。
(4) Fourth Embodiment In the fourth embodiment, a program on the host CPU 101 instructs data attributes (RT time, clean or dirty) according to the method of using the flash memory system 103 and information in the program. A configuration using the flash memory system 103 will be described in detail with reference to FIGS.
(4-1)内部構成
 図24は、主記憶102の内部構成を示す。主記憶102は、アプリケーション401、ミドルウェア402、ファイルシステム403、デバイスドライバ404、界面402A、403A及び404Aから構成される。なおこれらのプログラムは、ホストCPU101により実行される。
(4-1) Internal Configuration FIG. 24 shows the internal configuration of the main memory 102. The main memory 102 includes an application 401, middleware 402, file system 403, device driver 404, and interfaces 402A, 403A, and 404A. These programs are executed by the host CPU 101.
 デバイスドライバ404は、図13~図15に示した各コマンドを用いて、フラッシュメモリシステム103にアクセスする。デバイスドライバ404上にはファイルシステム403が提供される。アプリケーション401及びミドルウェア402は、界面403Aを介して、フラッシュメモリシステム103を高速ファイルシステムとしてアクセスすることができる。 The device driver 404 accesses the flash memory system 103 using each command shown in FIGS. A file system 403 is provided on the device driver 404. The application 401 and the middleware 402 can access the flash memory system 103 as a high-speed file system via the interface 403A.
 またミドルウェア402は、界面404Aを介して、デバイスドライバ404に直接アクセスしてフラッシュメモリシステム103をファイルシステムではなくあたかも主記憶102の拡張領域のように使用することができる。またアプリケーション401は、ミドルウェア402から提供された特別なインタフェースである界面402Aを利用することにより、ファイルシステムを介さずにミドルウェアを介してフラッシュメモリシステム103をあたかも主記憶102の拡張領域のように使用することができる。 Further, the middleware 402 can directly access the device driver 404 via the interface 404A and use the flash memory system 103 as if it were an extended area of the main memory 102, instead of a file system. Further, the application 401 uses the interface 402A, which is a special interface provided from the middleware 402, so that the flash memory system 103 is used as if it is an extended area of the main memory 102 via the middleware without going through the file system. can do.
 図25は、情報処理システム1におけるデータの配置構成を示す。各データは、ストレージシステム104、フラッシュメモリシステム103及び主記憶102に配置される。具体的にストレージシステム104にはファイルE及びFが配置される。フラッシュメモリシステム103にはファイルC及びDが配置され、また主記憶拡張領域として使用される領域A及びBが配置される。 FIG. 25 shows a data arrangement configuration in the information processing system 1. Each data is arranged in the storage system 104, the flash memory system 103, and the main memory 102. Specifically, files E and F are arranged in the storage system 104. Files C and D are arranged in the flash memory system 103, and areas A and B used as a main memory expansion area are arranged.
 また主記憶102には、ストレージシステム104とフラッシュメモリシステム103との間のデータを転送するための転送バッファ405と、ホストCPU101が計算を行なうためのワーク領域406と、計算途中のデータを定期的にフラッシュメモリシステム103に書き込むためのチェックポイントデータ409とが格納されている。以下図26~図31を用いて、これらのデータを用いてホストCPU101上のプログラムがフラッシュメモリシステム103を使用する構成について説明する。 The main memory 102 also periodically stores a transfer buffer 405 for transferring data between the storage system 104 and the flash memory system 103, a work area 406 for the host CPU 101 to perform calculations, and data being calculated. The checkpoint data 409 for writing to the flash memory system 103 is stored. A configuration in which a program on the host CPU 101 uses the flash memory system 103 using these data will be described below with reference to FIGS.
(4-2)処理フロー
 図26は、アプリケーション401による第1の処理フローを示す。この第1の処理フローは、アプリケーション401がファイルシステム403を介して、フラッシュメモリシステム103上のファイルCを高速ファイルシステムとして利用する場合の処理である。なお実際にはホストCPU101とアプリケーション401との協働により処理が実行されるが、ここでは説明の便宜上、処理主体をアプリケーション401として説明する。
(4-2) Processing Flow FIG. 26 shows a first processing flow by the application 401. This first processing flow is processing when the application 401 uses the file C on the flash memory system 103 as a high-speed file system via the file system 403. Note that the processing is actually executed in cooperation with the host CPU 101 and the application 401, but here, for convenience of explanation, the processing entity will be described as the application 401.
 まずアプリケーション401は、フラッシュメモリシステム103上のファイルCを使用することを宣言してファイルCを確保する(S2001)。宣言においては恒久的なファイルとして使用するので、RT時間として例えば1カ月を指定し、またストレージシステム104のコピーではなく本体ファイルとして使用するのでダーティを指定する。 First, the application 401 declares that the file C on the flash memory system 103 is to be used and secures the file C (S2001). Since it is used as a permanent file in the declaration, for example, one month is specified as the RT time, and since it is used as a main body file instead of a copy of the storage system 104, dirty is specified.
 次いでアプリケーション401は、ストレージシステム104内のファイルEを主記憶102のワーク領域406上に読み出して、読み出したファイルEを初期値としてファイルCに書き込む(S2002)。次いでアプリケーション401は、ファイルCのデータが必要であるか否かを判断する(S2003)。 Next, the application 401 reads the file E in the storage system 104 onto the work area 406 of the main memory 102, and writes the read file E into the file C as an initial value (S2002). Next, the application 401 determines whether or not the data of the file C is necessary (S2003).
 アプリケーション401は、ステップS2003の判断で否定結果を得ると、ステップS2005に移行する。これに対し、アプリケーション401は、ステップS2003の判断で肯定結果を得ると、ファイルCの一部を主記憶102のワーク領域406上に読み出す(S2004)。またアプリケーション401は、ワーク領域406上で処理を実行し、実行結果をファイルCに書き込む(S2005)。 If the application 401 obtains a negative result in the determination at step S2003, the application 401 proceeds to step S2005. On the other hand, when the application 401 obtains a positive result in the determination at step S2003, the application 401 reads a part of the file C onto the work area 406 of the main memory 102 (S2004). The application 401 executes processing on the work area 406 and writes the execution result in the file C (S2005).
 次いでアプリケーション401は、処理が終了したか否かを判断する(S2006)。アプリケーション401は、この判断で否定結果を得ると、ステップS2003に移行して上記説明してきた処理を繰り返す。これに対し、アプリケーション401は、この判断で肯定結果を得ると、この第1の処理フローを終了する。 Next, the application 401 determines whether or not the processing is completed (S2006). If the application 401 obtains a negative result in this determination, it proceeds to step S2003 and repeats the processing described above. On the other hand, if the application 401 obtains a positive result in this determination, it ends this first processing flow.
 図27は、ミドルウェア402による第2の処理フローを示す。この第2の処理フローは、ミドルウェア402(データベースシステム)がファイルシステム403を介して、フラッシュメモリシステム103上のファイルCを高速データベースシステムとして利用する場合の処理である。なお実際にはホストCPU101とミドルウェア402との協働により処理が実行されるが、ここでは説明の便宜上、処理主体をミドルウェア402として説明する。 FIG. 27 shows a second processing flow by the middleware 402. This second processing flow is processing when the middleware 402 (database system) uses the file C on the flash memory system 103 via the file system 403 as a high-speed database system. Note that the processing is actually executed in cooperation with the host CPU 101 and the middleware 402, but here, for convenience of explanation, the processing entity will be described as the middleware 402.
 まずミドルウェア402は、フラッシュメモリシステム103上のファイルCを使用することを宣言してファイルCを確保する(S2101)。宣言においては恒久的なデータベースとして使用するので、RT時間として例えば1カ月を指定し、またストレージシステム104のコピーではなく本体ファイルとして使用するのでダーティを指定する。 First, the middleware 402 declares that the file C on the flash memory system 103 is to be used and secures the file C (S2101). In the declaration, since it is used as a permanent database, for example, one month is specified as the RT time, and since it is used as a main body file instead of a copy of the storage system 104, dirty is specified.
 次いでミドルウェア402は、ストレージシステム104内の元となるデータベース(ファイルE)を主記憶102の転送バッファ405上に読み出して、読み出したファイルEを初期値としてファイルCに書き込む(S2102)。次いでミドルウェア402は、ファイルCに対して全データの転送が完了したか否かを判断する(S2103)。 Next, the middleware 402 reads the original database (file E) in the storage system 104 onto the transfer buffer 405 of the main memory 102, and writes the read file E into the file C as an initial value (S2102). Next, the middleware 402 determines whether or not the transfer of all data to the file C has been completed (S2103).
 ミドルウェア402は、ステップS2103の判断で否定結果を得ると、ステップS2102に移行して上記の処理を繰り返す。これに対し、ミドルウェア402は、ステップS2103の判断で肯定結果を得ると、アプリケーション401に初期化完了を通知する(S2104)。次いでミドルウェア402は、アプリケーション401からの参照型クエリを受領したか否かを判断する(S2105)。 If the middleware 402 obtains a negative result in the determination at step S2103, it proceeds to step S2102 and repeats the above processing. On the other hand, when the middleware 402 obtains a positive result in the determination in step S2103, it notifies the application 401 of the completion of initialization (S2104). Next, the middleware 402 determines whether or not a reference type query from the application 401 has been received (S2105).
 ミドルウェア402は、ステップS2105の判断で肯定結果を得ると、参照対象のファイルCの一部を主記憶102のワーク領域406上に読み出し、ワーク領域406上で参照型クエリを処理し、処理結果をファイルCに処理結果をコミットした後にアプリケーション401に返す(S2106)。 When the middleware 402 obtains a positive result in the determination in step S2105, the middleware 402 reads a part of the reference target file C onto the work area 406 of the main memory 102, processes the reference type query on the work area 406, and obtains the processing result. After the processing result is committed to the file C, it is returned to the application 401 (S2106).
 これに対し、ミドルウェア402は、ステップS2105の判断で否定結果を得ると、アプリケーション401からの更新型クエリを受領したか否かを判断する(S2105)。ミドルウェア402は、この判断で否定結果を得ると、ステップS2105に移行して上記の処理を繰り返す。これに対し、ミドルウェア402は、この判断で肯定結果を得ると、更新型クエリに対する処理を実行する。 On the other hand, when the middleware 402 obtains a negative result in the determination at step S2105, it determines whether an update type query from the application 401 has been received (S2105). If the middleware 402 obtains a negative result in this determination, it moves to step S2105 and repeats the above processing. On the other hand, when the middleware 402 obtains a positive result in this determination, it executes a process for the update type query.
 具体的にミドルウェア402は、更新対象のファイルCの一部を主記憶102のワーク領域406上に読み出し、ワーク領域406上で更新型クエリを処理し、処理結果をファイルCに書き込み、処理結果をファイルCにコミットした後にアプリケーション401に返す(S2108)。 Specifically, the middleware 402 reads a part of the file C to be updated onto the work area 406 of the main memory 102, processes the update type query on the work area 406, writes the processing result to the file C, and outputs the processing result. After committing to the file C, it is returned to the application 401 (S2108).
 図28は、ミドルウェア402による第3の処理フローを示す。この第3の処理フローは、ミドルウェア402(データベースシステム)がストレージシステム104内のファイルEをデータベースとして使用するが、非常に複雑で大規模なクエリであるため、主記憶102のワーク領域406にはデータが収まらずファイルアクセスを繰り返さざるを得ないときにクエリ処理に必要なテンポラリ領域を高速なフラッシュメモリシステム103上に確保する場合の処理である。なお実際にはホストCPU101とミドルウェア402との協働により処理が実行されるが、ここでは説明の便宜上、処理主体をミドルウェア402として説明する。 FIG. 28 shows a third processing flow by the middleware 402. In the third processing flow, although the middleware 402 (database system) uses the file E in the storage system 104 as a database, it is a very complicated and large-scale query. This is a process for securing a temporary area necessary for the query process on the high-speed flash memory system 103 when the data cannot be stored and the file access must be repeated. Note that the processing is actually executed in cooperation with the host CPU 101 and the middleware 402, but here, for convenience of explanation, the processing entity will be described as the middleware 402.
 まずミドルウェア402は、アプリケーション401からの参照型の大規模クエリを受領したか否かを判断する(S2201)。ミドルウェア402は、この判断で肯定結果を得ると、フラッシュメモリシステム103上に領域Aを確保する(S2202)。仮に処理の途中で電源断が発生した場合にはクエリ処理は完了せずに破棄すればよいので、RT時間は0を指定する。また参照型のクエリであり、元データはストレージシステム104内にあるためクリーンを指定する。 First, the middleware 402 determines whether or not a reference-type large-scale query from the application 401 has been received (S2201). If the middleware 402 obtains a positive result in this determination, it secures the area A on the flash memory system 103 (S2202). If the power interruption occurs during the process, the query process may be discarded without being completed, so the RT time is designated as 0. Also, since this is a reference type query and the original data is in the storage system 104, clean is designated.
 次いでミドルウェア402は、クエリ処理に必要なファイルEの一部のデータを主記憶102上の転送バッファ405を介して領域Aに順次転送して書き込む(S2203)。次いでミドルウェア402は、ファイルEの全データを領域Aに書き込んで、データの転送が完了したか否かを判断する(S2204)。 Next, the middleware 402 sequentially transfers and writes a part of the data of the file E necessary for the query processing to the area A via the transfer buffer 405 on the main memory 102 (S2203). Next, the middleware 402 writes all the data of the file E into the area A, and determines whether or not the data transfer is completed (S2204).
 ミドルウェア402は、ステップS2204の判断で否定結果を得ると、ステップS2203に移行して上記の処理を繰り返す。これに対し、ミドルウェア402は、ステップS2204の判断で肯定結果を得ると、領域Aの全データを主記憶102のワーク領域406に順次読み出し、ワーク領域406上でクエリ処理を実行し、処理結果をワーク領域406上に書き込む(S2205)。 If the middleware 402 obtains a negative result in the determination at step S2204, the middleware 402 proceeds to step S2203 and repeats the above processing. On the other hand, when the middleware 402 obtains a positive result in the determination at step S2204, it sequentially reads all data in the area A into the work area 406 of the main memory 102, executes query processing on the work area 406, and obtains the processing result. Data is written on the work area 406 (S2205).
 次いでミドルウェア402は、領域Aの全データについてクエリ処理を実行して処理が完了したか否かを判断する(S2206)。ミドルウェア402は、この判断で否定結果を得ると、ステップS2205に移行して上記の処理を繰り返す。これに対し、ミドルウェア402は、この判断で肯定結果を得ると、領域Aを解放して処理結果をアプリケーション401に返す(S2207)。 Next, the middleware 402 executes query processing for all data in the area A and determines whether the processing is completed (S2206). If the middleware 402 obtains a negative result in this determination, it moves to step S2205 and repeats the above processing. On the other hand, when the middleware 402 obtains a positive result in this determination, it releases the area A and returns the processing result to the application 401 (S2207).
 なおここでは簡単のため、全データをファイルEから領域Aに一旦転送してから少しずつワーク領域406に読み出して処理するとしたが、必ずしもこれに限らず、可能であればファイルEから転送バッファ405に読み出してクエリ処理の一部を実行するとしてもよい。 Here, for simplicity, it is assumed that all data is once transferred from the file E to the area A and then read and processed little by little into the work area 406. However, the present invention is not limited to this. It is also possible to execute a part of the query processing by reading out to.
 ステップS2201に戻り、ミドルウェア402は、ステップS2201の判断で否定結果を得ると、領域Aを必要としない単純なクエリを受領したか否かを判断する(S2208)。ミドルウェア402は、この判断で否定結果を得るとステップS2201に移行して上記の処理を繰り返す。これに対し、ミドルウェア402は、この判断で肯定結果を得ると、ストレージシステム104内のファイルEから必要なデータを主記憶102のワーク領域406上に読み出し、クエリ処理を実行する(S2209)。 Returning to step S2201, when the middleware 402 obtains a negative result in the determination of step S2201, it determines whether a simple query that does not require the area A has been received (S2208). If the middleware 402 obtains a negative result in this determination, it moves to step S2201 and repeats the above processing. On the other hand, when the middleware 402 obtains a positive result in this determination, it reads necessary data from the file E in the storage system 104 onto the work area 406 of the main memory 102, and executes query processing (S2209).
 図29及び図30は、アプリケーション401による第4の処理フロー及びミドルウェア402による第5の処理フローを示す。この第4及び第5の処理フローは、大規模データ解析フレームワーク等のミドルウェア402がフラッシュメモリシステム103を主記憶拡張領域として使用する環境をアプリケーション401に提供する場合の処理である。以下図29及び図30を交互に参照して説明する。 29 and 30 show a fourth processing flow by the application 401 and a fifth processing flow by the middleware 402. The fourth and fifth processing flows are processes when the middleware 402 such as a large-scale data analysis framework provides the application 401 with an environment in which the flash memory system 103 is used as the main memory expansion area. Hereinafter, description will be made with reference to FIGS. 29 and 30 alternately.
 まずアプリケーション401は、処理するデータ数をミドルウェア402に通知する。また計算に使用するデータG及びHの元データが格納されているストレージシステム104内のファイルE及びFをミドルウェア402に通知する(S2401)。 First, the application 401 notifies the middleware 402 of the number of data to be processed. Further, the middleware 402 is notified of the files E and F in the storage system 104 storing the original data G and H used for the calculation (S2401).
 ミドルウェア402は、これらの通知を受領すると、処理するデータ数に基づいて、データG及びHの総容量を推定する。推定した結果、データG及びHの総容量が主記憶102に収まらないことが判明すると、主記憶容量を考慮してデータG及びHを複数の部分領域に分割する。そしてデータG及びHの総容量分の領域A及びBをフラッシュメモリシステム103上に確保する(S2501)。 When the middleware 402 receives these notifications, it estimates the total capacity of the data G and H based on the number of data to be processed. As a result of estimation, if it is found that the total capacity of the data G and H does not fit in the main memory 102, the data G and H are divided into a plurality of partial areas in consideration of the main storage capacity. Then, areas A and B corresponding to the total capacity of the data G and H are secured on the flash memory system 103 (S2501).
 なおこれらの領域は主記憶拡張領域として利用するため、仮に電源断が発生した場合、主記憶102と同様にデータを保証する必要はなく、RT時間には0を指定し、また領域Aにはクリーンを指定し、領域Bにはダーティを指定する。またここでは大規模データ解析フレームワークがアプリケーション401に提供する機能から、データGはクリーンであり、データHはダーティであることをミドルウェア402自身が知っていることを想定している。 Since these areas are used as main memory expansion areas, it is not necessary to guarantee the data in the same way as the main memory 102 if a power interruption occurs. “Clean” is designated, and “Dirty” is designated for the area B. Here, it is assumed that the middleware 402 itself knows that the data G is clean and the data H is dirty because of the function provided to the application 401 by the large-scale data analysis framework.
 次いでミドルウェア402は、主記憶102を介して、ファイルEの全データを領域Aに転送し(S2502、S2503)、ファイルFの全データを領域Bに転送する(S2504、S2505)。さらにミドルウェア402は、決定した分割に従って、データG及びHの部分領域を領域A及びBから主記憶102のワーク領域406上に読み出し、アプリケーション401に部分計算準備完了を通知する(S2506)。 Next, the middleware 402 transfers all data of the file E to the area A via the main memory 102 (S2502, S2503), and transfers all data of the file F to the area B (S2504, S2505). Further, according to the determined division, the middleware 402 reads the partial areas of the data G and H from the areas A and B onto the work area 406 of the main memory 102, and notifies the application 401 of the completion of partial calculation preparation (S2506).
 アプリケーション401は、部分計算準備完了通知を受領すると(S2402:YES)、ワーク領域406上のデータG及びHを用いて計算を実行し、ワーク領域406上のデータHを更新する。1回分の部分計算が完了するとミドルウェアに通知する(S2403)。 When the application 401 receives the partial calculation preparation completion notification (S2402: YES), the application 401 executes the calculation using the data G and H on the work area 406, and updates the data H on the work area 406. When the partial calculation for one time is completed, the middleware is notified (S2403).
 ミドルウェア402は、アプリケーション401から部分計算完了通知を受領すると(S2507:YES)、主記憶102上のデータHを領域Bに書き込み(S2508)、アプリケーション401から全計算終了通知を受け取らない限り(S2509:NO)、領域A及びBから次の部分領域を主記憶102に読み出すことを繰り返す。ここでは領域A及びBの最後の部分領域を主記憶102に読み出したら、領域A及びBの最初の部分領域から処理を繰り返すことを想定している。 When the middleware 402 receives the partial calculation completion notification from the application 401 (S2507: YES), the middleware 402 writes the data H on the main memory 102 to the area B (S2508), and unless it receives a total calculation end notification from the application 401 (S2509: NO), reading the next partial area from the areas A and B to the main memory 102 is repeated. Here, it is assumed that when the last partial areas of the areas A and B are read out to the main memory 102, the process is repeated from the first partial areas of the areas A and B.
 アプリケーション401は、部分計算を繰り返して全ての計算が完了したら(S2404:YES)、全計算完了をミドルウェア402に通知する(S2405)。 When the application 401 repeats the partial calculation and all the calculations are completed (S2404: YES), the application 401 notifies the middleware 402 of the completion of all the calculations (S2405).
 ミドルウェア402は、アプリケーション401から全計算完了通知を受領すると、領域B全体をストレージシステム104内のファイルFに転送し(S2510)、転送が完了すると(S2511:YES)、アプリケーション401に通知する(S2512)。アプリケーション401は、ミドルウェア402からファイル出力完了通知を受領すると(S2406:YES)、処理を終了する。 When the middleware 402 receives the notification of completion of all calculations from the application 401, the middleware 402 transfers the entire area B to the file F in the storage system 104 (S2510), and when the transfer is completed (S2511: YES), notifies the application 401 (S2512). ). When the application 401 receives a file output completion notification from the middleware 402 (S2406: YES), the application 401 ends the process.
 図31は、アプリケーション401又はミドルウェア402による第6の処理フローを示す。この第6の処理フローは、大規模データ解析フレームワーク等のミドルウェア402や大規模科学計算等のアプリケーション401が非常に長時間かかる解析計算を実行するときに計算途中結果をチェックポイントファイルとしてフラッシュメモリシステム103上に格納する場合の処理である。 FIG. 31 shows a sixth processing flow by the application 401 or the middleware 402. This sixth processing flow is performed when a middleware 402 such as a large-scale data analysis framework or an application 401 such as a large-scale scientific calculation executes an analysis calculation that takes a very long time, and the intermediate result of the calculation is used as a checkpoint file in the flash memory. This is a process for storing on the system 103.
 なおこのような大規模計算は多くの場合、大容量の計算領域を必要とするため、フラッシュメモリシステム103を主記憶拡張領域として用いる図29及び図30の処理フローと併用するかもしれないが、ここでは併用されない場合について説明する。 Note that such large-scale calculation often requires a large-capacity calculation area, so it may be used together with the processing flow of FIGS. 29 and 30 using the flash memory system 103 as the main memory expansion area. Here, a case where they are not used together will be described.
 まずミドルウェア402又はアプリケーション401は、処理するデータ数に基づいて、プログラムの総実行時間及びチェックポイントデータ量を推定する(S2301)。チェックポイントデータ量からチェックポイント(フラッシュメモリシステム103への格納)に要する時間を推定し、推定した時間がプログラム全体の実行時間を圧迫しないように、チェックポイント周期を決定する(S2301)。 First, the middleware 402 or the application 401 estimates the total execution time of the program and the amount of checkpoint data based on the number of data to be processed (S2301). The time required for the checkpoint (stored in the flash memory system 103) is estimated from the checkpoint data amount, and the checkpoint cycle is determined so that the estimated time does not impose the execution time of the entire program (S2301).
 チェックポイントは、長時間かかる解析計算が電源断等で中断されたときに、前回チェックポイントから計算を再開するためのものであるため、プログラムの総実行時間以上の長期にわたってチェックポイントデータを保持しても意味がない。理由はその時間があればプログラムを最初から再実行することができるためである。そこでミドルウェア402又はアプリケーション401は、プログラムの総実行時間に基づいて、RT時間を決定する。本例では1日としている(S2301)。 The checkpoint is for restarting the calculation from the previous checkpoint when an analysis calculation that takes a long time is interrupted due to a power failure, etc., so the checkpoint data is retained for a long time longer than the total execution time of the program. It doesn't make sense. The reason is that the program can be re-executed from the beginning if that time is available. Therefore, the middleware 402 or the application 401 determines the RT time based on the total execution time of the program. In this example, it is 1 day (S2301).
 チェックポイント周期に到達したら(S2302:YES)、ミドルウェア402又はアプリケーション401は、主記憶102上にチェックポイントデータを作成し(S2303)、チェックポイントファイルとしてフラッシュメモリシステム103上にファイルCを確保する。RT時間は上記で決定した1日を指定し、フラッシュメモリシステム103上にしかチェックポイントファイルを格納しないのでダーティを指定する。そしてミドルウェア402又はアプリケーション401は、主記憶102上のチェックポイントデータをファイルCに書き出す(S2304:YES、S2305)。 When the checkpoint cycle is reached (S2302: YES), the middleware 402 or the application 401 creates checkpoint data on the main memory 102 (S2303), and secures a file C on the flash memory system 103 as a checkpoint file. The RT time designates one day determined as described above, and since the checkpoint file is stored only on the flash memory system 103, the dirty is designated. Then, the middleware 402 or the application 401 writes the checkpoint data on the main memory 102 to the file C (S2304: YES, S2305).
 またミドルウェア402又はアプリケーション401は、次のチェックポイント周期に到達したら(S2302:YES)、主記憶102上にチェックポイントデータを作成し(S2303)、チェックポイントファイルとしてフラッシュメモリシステム103上に新たなチェックポイントファイルDを確保する。そしてミドルウェア402又はアプリケーション401は、主記憶102上のチェックポイントデータをファイルDに書き出した後、ファイルCを解放する(S2304:NO、S2306)。 When the next checkpoint cycle is reached (S2302: YES), the middleware 402 or the application 401 creates checkpoint data on the main memory 102 (S2303), and performs a new check on the flash memory system 103 as a checkpoint file. A point file D is secured. Then, the middleware 402 or the application 401 writes the checkpoint data on the main memory 102 to the file D, and then releases the file C (S2304: NO, S2306).
 これ以降ミドルウェア402又はアプリケーション401は、プログラムの実行が終了するまで、ファイルCとファイルDとを交互に使用してチェックポイントを実行する。 Thereafter, the middleware 402 or the application 401 executes the checkpoint by alternately using the file C and the file D until the execution of the program is completed.
 なおここでは2つのファイルC及びDを使用して、フラッシュメモリシステム103にファイルCとファイルDとの解放タイミングを明に指示したが、1つのファイルCのみを使用して、2回目のチェックポイント時にはファイルCの先頭から書き込みを行なうようにしてもよい。またここでは主記憶102上にチェックポイントデータを作成したが、図29及び図30の処理フローを併用する場合、図30の領域Bのデータをチェックポイントデータとして用いるとしてもよい。 In this example, the two files C and D are used to explicitly indicate the release timing of the files C and D to the flash memory system 103. However, the second checkpoint is performed using only one file C. Sometimes writing may be performed from the top of file C. Although the checkpoint data is created on the main memory 102 here, when the processing flows of FIGS. 29 and 30 are used together, the data in the region B of FIG. 30 may be used as the checkpoint data.
(5)本実施の形態による効果
 以上のように本実施の形態における情報処理システム及びフラッシュメモリシステムによれば、フラッシュメモリ内の複数の物理ブロックをデータの属性(RT時間とクリーン又はダーティの種別)ごとに分類して管理し、一方で属性ごとに異なるリフレッシュ判定周期、リフレッシュ判定閾値及び不良ブロック判定閾値を管理し、これら属性ごとに異なるリフレッシュ判定周期、リフレッシュ判定閾値及び不良ブロック判定閾値に基づいて、対応する属性の物理ブロックについてリフレッシュ判定処理及び不良ブロック判定処理を実行するようにしたので、長時間の保証が必要なデータについては適切な周期及び閾値によりリフレッシュ判定処理及び不良ブロック判定処理を実行することができ、また短時間の保証でよいデータについては不要なリフレッシュ判定処理及び不良ブロック判定処理を実行しないようにすることができるので、データの保証を維持しつつ、システム全体の書込み可能回数を向上させることができる。
(5) Effects of this Embodiment As described above, according to the information processing system and the flash memory system of this embodiment, a plurality of physical blocks in the flash memory are assigned data attributes (RT time and type of clean or dirty). ), And on the other hand, a different refresh determination period, refresh determination threshold, and bad block determination threshold are managed for each attribute, and based on a different refresh determination period, refresh determination threshold, and bad block determination threshold for each attribute. Since the refresh determination process and the bad block determination process are executed for the physical block with the corresponding attribute, the refresh determination process and the bad block determination process are performed with an appropriate cycle and threshold for data that requires a long-term guarantee. Can run and also for a short time Since it is possible to prevent unnecessary refresh determination processing and bad block determination processing from being executed for data that can be guaranteed, the number of writable times in the entire system can be improved while maintaining data guarantee.
 具体的には短時間の保証でよいデータ又はクリーンデータについては、不良ブロック判定閾値を大きく設定して管理することにより、物理ブロックをより多く使用することができるようになるため、システム全体の書込み可能回数を向上させることができる。 Specifically, for data that can be guaranteed for a short period of time or clean data, it is possible to use more physical blocks by setting a large bad block determination threshold and managing it. The number of possible times can be improved.
 また不良ブロック判定処理において不良ブロックと判定された場合であっても、他の属性のデータを書き込むための物理ブロックとして使用することができるので、その分システム全体の書込み回数を向上させることができる。 Even if it is determined to be a bad block in the bad block determination process, it can be used as a physical block for writing data of other attributes, so that the number of times the entire system can be written can be improved accordingly. .
 またデータの書込み時には対応する属性の物理ブロックのなかからエラー率の最小の物理ブロックを選択して書き込むようにして、書き込みにともなう劣化の平準化(ウェアレベリング)を属性ごとに実行することができるため、システム全体の書込み可能回数を向上させることができる。 In addition, when writing data, the physical block with the lowest error rate is selected from the physical blocks with the corresponding attribute and written, and the leveling of deterioration accompanying the writing (wear leveling) can be executed for each attribute. Therefore, the number of writable times in the entire system can be improved.
 なおリフレッシュ判定処理おいてリフレッシュ処理を実行する必要があると判断した場合に物理ブロックからデータを読み出したり書き込んだりすることになるが、本実施の形態によれば不要なリフレッシュ処理を削減することができるので、このときのオーバヘッドを削減することができる。 In the refresh determination process, when it is determined that it is necessary to execute the refresh process, data is read from or written to the physical block. However, according to the present embodiment, unnecessary refresh process can be reduced. Therefore, the overhead at this time can be reduced.
101     ホストCPU
102     主記憶
103     フラッシュメモリシステム
104     ストレージシステム
111     フラッシュコントローラ
113     フラッシュコントローラ内のプロセッサ
119     フラッシュメモリ
201     論理アドレステーブル
206     物理アドレステーブル
211     閾値テーブル
216     履歴テーブル
220     物理ブロック管理リスト群
221     書込み先選択リスト
223     リフレッシュ先選択リスト
226     リフレッシュ判定リスト
304     属性指示コマンド
305、301 書込み指示コマンド
306、302 読出し指示コマンド
307、303 無効化指示コマンド
308     容量比指示コマンド
 
 
101 Host CPU
102 Main memory 103 Flash memory system 104 Storage system 111 Flash controller 113 Processor in flash controller 119 Flash memory 201 Logical address table 206 Physical address table 211 Threshold table 216 History table 220 Physical block management list group 221 Write destination selection list 223 Refresh destination Selection list 226 Refresh determination list 304 Attribute instruction command 305, 301 Write instruction command 306, 302 Read instruction command 307, 303 Invalidation instruction command 308 Capacity ratio instruction command

Claims (9)

  1.  不揮発メモリ及び不揮発メモリコントローラを備える不揮発メモリシステムにおいて、
     前記不揮発メモリコントローラは、
     前記不揮発メモリ内の複数の物理ブロックをデータの属性ごとに分類して管理し、一方で前記属性ごとに異なるリフレッシュ判定閾値又は不良ブロック判定閾値を管理し、前記物理ブロックにデータを書き込む場合、書込み対象のデータの属性と同一の属性に分類される物理ブロックを書込み先として選択する
     ことを特徴とする不揮発メモリシステム。
    In a nonvolatile memory system comprising a nonvolatile memory and a nonvolatile memory controller,
    The nonvolatile memory controller is
    A plurality of physical blocks in the non-volatile memory are classified and managed for each data attribute, while a different refresh determination threshold or bad block determination threshold is managed for each attribute, and data is written to the physical block when writing A non-volatile memory system, wherein a physical block classified into the same attribute as that of the target data is selected as a write destination.
  2.  前記不揮発メモリコントローラは、
     前記物理ブロックからデータを読み出す場合、該物理ブロックのエラー率を算出し、算出したエラー率が、該物理ブロックの分類先の属性に対応付けられた不良ブロック判定閾値以上である場合、読み出したデータを該物理ブロックと同一の属性に分類される他の物理ブロックに書き込むとともに、読出し元の該物理ブロックをより高い不良ブロック判定閾値が定められた他の属性に分類して管理する
     ことを特徴とする請求項1に記載の不揮発メモリシステム。
    The nonvolatile memory controller is
    When reading data from the physical block, the error rate of the physical block is calculated, and when the calculated error rate is equal to or higher than the bad block determination threshold associated with the attribute of the physical block classification destination, the read data Is written in another physical block classified into the same attribute as the physical block, and the physical block from which data is read out is classified and managed as another attribute with a higher bad block determination threshold. The nonvolatile memory system according to claim 1.
  3.  前記不揮発メモリコントローラは、
     前記算出したエラー率が、分類先の全ての属性に対応付けられた不良ブロック判定閾値以上である場合、読出し元の該物理ブロックを不良ブロックと判定する
     ことを特徴とする請求項2に記載の不揮発メモリシステム。
    The nonvolatile memory controller is
    3. The read-out physical block is determined to be a bad block when the calculated error rate is equal to or higher than a bad block determination threshold associated with all attributes of a classification destination. 4. Non-volatile memory system.
  4.  前記不揮発メモリコントローラは、
     前記物理ブロックからデータを読み出す場合、該物理ブロックのエラー率を算出し、算出したエラー率が、該物理ブロックの分類先の属性に対応付けられたリフレッシュ判定閾値以上である場合、読み出したデータを該物理ブロックと同一の属性に分類される他の物理ブロックに書き込む
     ことを特徴とする請求項1に記載の不揮発メモリシステム。
    The nonvolatile memory controller is
    When reading data from the physical block, the error rate of the physical block is calculated, and when the calculated error rate is equal to or higher than the refresh determination threshold associated with the attribute of the physical block classification destination, the read data is The nonvolatile memory system according to claim 1, wherein writing is performed to another physical block classified into the same attribute as the physical block.
  5.  前記不揮発メモリコントローラは、
     前記算出したエラー率が、該物理ブロックの分類先の属性に対応付けられた不良ブロック判定閾値又はリフレッシュ判定閾値以上である場合であって、読み出したデータを該物理ブロックと同一の属性に分類される他の物理ブロックに書き込む場合、該他の物理ブロックのなかから、該他の物理ブロックからデータを読み出す際に算出したエラー率が最小である他の物理ブロックを書込み先として選択する
     ことを特徴とする請求項2に記載の不揮発メモリシステム。
    The nonvolatile memory controller is
    The calculated error rate is equal to or higher than a bad block determination threshold or a refresh determination threshold associated with the physical block classification destination attribute, and the read data is classified into the same attribute as the physical block. When writing to another physical block, the other physical block having the smallest error rate calculated when reading data from the other physical block is selected as the write destination. The nonvolatile memory system according to claim 2.
  6.  前記データの属性には、データの保証時間を示す情報が含まれ、
     前記不揮発メモリコントローラは、
     第1のデータの保証時間と、前記第1のデータの保証時間よりも短い第2のデータの保証時間とがある場合、前記第1のデータの保証時間よりも前記第2のデータの保証時間に対応付ける前記リフレッシュ判定閾値又は前記不良ブロック判定閾値の方を高く設定して管理する
     ことを特徴とする請求項1に記載の不揮発メモリシステム。
    The attribute of the data includes information indicating the guaranteed time of the data,
    The nonvolatile memory controller is
    When there is a first data guarantee time and a second data guarantee time shorter than the first data guarantee time, the second data guarantee time is shorter than the first data guarantee time. The nonvolatile memory system according to claim 1, wherein the refresh determination threshold value or the bad block determination threshold value associated with the non-volatile memory is set to be higher and managed.
  7.  前記データの属性には、クリーン又はダーティの種別を示す情報が含まれ、
     前記不揮発メモリコントローラは、
     ダーティよりもクリーンに対応付ける前記リフレッシュ判定閾値又は前記不良ブロック判定閾値の方を高く設定して管理する
     ことを特徴とする請求項1に記載の不揮発メモリシステム。
    The attribute of the data includes information indicating the type of clean or dirty,
    The nonvolatile memory controller is
    The nonvolatile memory system according to claim 1, wherein the refresh determination threshold value or the defective block determination threshold value that is associated more cleanly than dirty is set and managed higher.
  8.  前記不揮発メモリコントローラは、
     前記属性ごとに異なるリフレッシュ判定周期を管理し、
     前記リフレッシュ判定周期に基づいて、前記属性ごとに異なるタイミングで前記物理ブロックからデータを読み出す
     ことを特徴とする請求項1に記載の不揮発メモリシステム。
    The nonvolatile memory controller is
    Managing a different refresh determination cycle for each attribute,
    2. The nonvolatile memory system according to claim 1, wherein data is read from the physical block at a different timing for each attribute based on the refresh determination period.
  9.  計算機システム及び不揮発メモリシステムを備える情報処理システムにおいて、
     前記計算機システムは、
     データの属性を指示する属性指示を前記不揮発メモリシステムに対して発行し、
     前記不揮発メモリシステムは、
     前記属性指示を受領すると、受領した前記属性指示に基づいて、前記不揮発メモリ内の複数の物理ブロックをデータの属性ごとに分類して管理し、一方で前記属性ごとに異なるリフレッシュ判定閾値又は不良ブロック判定閾値を管理し、前記物理ブロックにデータを書き込む場合、書込み対象のデータの属性と同一の属性に分類される物理ブロックを書込み先として選択する
     ことを特徴とする情報処理システム。
    In an information processing system comprising a computer system and a nonvolatile memory system,
    The computer system is
    Issuing an attribute instruction indicating an attribute of data to the nonvolatile memory system;
    The nonvolatile memory system includes:
    Upon receipt of the attribute instruction, based on the received attribute instruction, a plurality of physical blocks in the non-volatile memory are classified and managed for each data attribute, while a different refresh determination threshold value or bad block for each attribute An information processing system that manages a determination threshold and selects a physical block that is classified into the same attribute as the attribute of data to be written when writing data to the physical block.
PCT/JP2014/059873 2014-04-03 2014-04-03 Nonvolatile memory system and information processing system WO2015151261A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/059873 WO2015151261A1 (en) 2014-04-03 2014-04-03 Nonvolatile memory system and information processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/059873 WO2015151261A1 (en) 2014-04-03 2014-04-03 Nonvolatile memory system and information processing system

Publications (1)

Publication Number Publication Date
WO2015151261A1 true WO2015151261A1 (en) 2015-10-08

Family

ID=54239623

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/059873 WO2015151261A1 (en) 2014-04-03 2014-04-03 Nonvolatile memory system and information processing system

Country Status (1)

Country Link
WO (1) WO2015151261A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009537055A (en) * 2006-05-12 2009-10-22 アノビット テクノロジーズ リミテッド Memory device with adaptive capability
JP2010079659A (en) * 2008-09-26 2010-04-08 Nec Personal Products Co Ltd Apparatus for prolonging life of flash memory, and method and program for the same
JP2011059907A (en) * 2009-09-09 2011-03-24 Nec Corp Terminal device, method of managing nonvolatile memory used therein, and program therefor
JP2012221025A (en) * 2011-04-05 2012-11-12 Nec Casio Mobile Communications Ltd Backup notification system for data held by flash memory, and method and program for the same
JP2013114679A (en) * 2011-11-30 2013-06-10 Samsung Electronics Co Ltd Memory system including wear level control logic

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009537055A (en) * 2006-05-12 2009-10-22 アノビット テクノロジーズ リミテッド Memory device with adaptive capability
JP2010079659A (en) * 2008-09-26 2010-04-08 Nec Personal Products Co Ltd Apparatus for prolonging life of flash memory, and method and program for the same
JP2011059907A (en) * 2009-09-09 2011-03-24 Nec Corp Terminal device, method of managing nonvolatile memory used therein, and program therefor
JP2012221025A (en) * 2011-04-05 2012-11-12 Nec Casio Mobile Communications Ltd Backup notification system for data held by flash memory, and method and program for the same
JP2013114679A (en) * 2011-11-30 2013-06-10 Samsung Electronics Co Ltd Memory system including wear level control logic

Similar Documents

Publication Publication Date Title
CN102160030B (en) Aggregation of write traffic to data store
US8560759B1 (en) Hybrid drive storing redundant copies of data on disk and in non-volatile semiconductor memory based on read frequency
JP4778942B2 (en) Apparatus and method for managing nonvolatile memory
CN111724827B (en) Memory system and nonvolatile memory
EP2034414A1 (en) Semiconductor storage device and method of controlling semiconductor storage device
US10346096B1 (en) Shingled magnetic recording trim operation
TW201013647A (en) Disc drive and method of enhancing command executing performance thereof
WO2009006803A1 (en) Method and apparatus for performing wear leveling in memory
US9069474B2 (en) Retention based defecting in a hybrid memory system
US10089234B2 (en) Disk cache allocation
CN107665219B (en) Log management method and device
WO2012094400A1 (en) Selecting storage locations for storing data based on storage location attributes and data usage statistics
CN107122130B (en) Data deduplication method and device
US10083181B2 (en) Method and system for storing metadata of log-structured file system
CN104991743B (en) Loss equalizing method applied to solid state hard disc resistance-variable storing device caching
CN108733318A (en) A kind of wiring method of TLC NAND FLASH solid state disks
CN103383666A (en) Method and system for improving cache prefetch data locality and cache assess method
CN106598504A (en) Data storage method and apparatus
CN108446187B (en) Data backup method and data recovery method
JP4189342B2 (en) Storage apparatus, storage controller, and write-back cache control method
CN113031872A (en) Data writing method of storage system and related device
WO2015151261A1 (en) Nonvolatile memory system and information processing system
JP4245021B2 (en) Storage device, storage system, and storage device control method
CN100429633C (en) Apparatus with disc drive that uses cache management policy to reduce power consumption
WO2014185038A1 (en) Semiconductor storage device and control method thereof

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

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP