WO2014203316A1 - 情報処理装置、制御回路、制御プログラム、及び制御方法 - Google Patents

情報処理装置、制御回路、制御プログラム、及び制御方法 Download PDF

Info

Publication number
WO2014203316A1
WO2014203316A1 PCT/JP2013/066625 JP2013066625W WO2014203316A1 WO 2014203316 A1 WO2014203316 A1 WO 2014203316A1 JP 2013066625 W JP2013066625 W JP 2013066625W WO 2014203316 A1 WO2014203316 A1 WO 2014203316A1
Authority
WO
WIPO (PCT)
Prior art keywords
address
physical
data
logical address
physical address
Prior art date
Application number
PCT/JP2013/066625
Other languages
English (en)
French (fr)
Inventor
早坂 和美
雅紀 日下田
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to JP2015522392A priority Critical patent/JP5967308B2/ja
Priority to PCT/JP2013/066625 priority patent/WO2014203316A1/ja
Publication of WO2014203316A1 publication Critical patent/WO2014203316A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Definitions

  • the present invention relates to an information processing device, a control circuit, a control program, and a control method.
  • an information processing apparatus using a nonvolatile memory that operates faster than a magnetic disk is known.
  • an information processing apparatus using a NAND flash memory device as a storage device such as a storage is known.
  • the NAND flash memory device is described as a NAND device.
  • the NAND device performs movement related to data writing, reading, and data updating in units of physical pages that are data storage areas, and erases data in units of physical blocks including a plurality of physical pages. For this reason, the NAND device may have a physical block in which valid data and invalid data are mixed. In addition, since the device deteriorates when erasing data in the NAND device, the device deteriorates between a physical page in which frequently updated data is written and a physical page in which less frequently updated data is written. Variation occurs in the speed at which it is performed.
  • a NAND controller that performs data migration and leveling of deterioration by moving data written to each physical block according to the data write status and data write time for each physical block. It has been.
  • the NAND controller has, for each physical block, a management information table in which information indicating whether data of each physical page is valid and information indicating the time when the data was last written are stored. .
  • the NAND controller refers to the management information table and determines whether or not to move data for each physical block according to the number of valid data and the time elapsed since the data was written. After that, if the NAND controller determines to move the data, the valid data written in the physical block is moved to the physical page of the spare block, and the new physical data is deleted by deleting the data of the selected physical block. Secure spare blocks and level out deterioration.
  • the NAND controller has an address conversion table for converting a logical address used for designating data by a system executed by the information processing apparatus into a physical address indicating a physical page in which data is stored. Then, when the data is moved, the NAND controller updates the address conversion table using the physical address indicating the data movement source and the data movement destination.
  • the NAND controller reversely converts a physical address indicating a data movement source into a logical address by using an address reverse conversion table that reversely converts a physical address into a logical address. Then, the NAND controller rewrites the physical address using the reversely converted logical address as an index among the physical addresses stored in the address conversion table to the physical address indicating the data movement destination.
  • the address conversion table is updated using the physical address indicating the data movement source and the data movement destination.
  • the NAND controller has an address reverse conversion table for performing reverse conversion from a physical address indicating a data movement source to a logical address, which causes a problem that the circuit scale increases. Further, even when a conventional technique for writing a plurality of data in a distributed manner is used, conversion from a physical address to a logical address is not considered, and it is difficult to avoid using an address reverse conversion table.
  • the disclosed technique has been made in view of the above, and an object thereof is to provide an information processing apparatus, a control circuit, a control program, and a control method that improve access performance while suppressing the circuit scale of a NAND controller. .
  • an information processing device, a control circuit, a control program, and a control method disclosed in the present application are such that the selection unit includes a predetermined block including a plurality of the storage areas in a group of logical addresses indicating the storage areas A group including a logical address indicating a storage area in which valid data is stored is specified among the storage areas included, and logical addresses included in the specified group are sequentially selected.
  • the acquisition unit acquires a physical address associated with the logical address selected by the selection unit from a conversion table representing a correspondence between the logical address and the physical address.
  • the determination unit determines whether to move the data stored in the storage area indicated by the physical address acquired by the acquisition unit using a predetermined condition.
  • the moving unit moves the data stored in the storage area indicated by the physical address acquired by the acquiring unit to another storage area.
  • the update unit updates a physical address associated with the logical address selected by the selection unit among the physical addresses stored in the conversion table to a physical address indicating the other storage area.
  • control circuit control program, and control method disclosed in the present application, it is possible to improve the access performance while suppressing the circuit scale of the NAND controller.
  • FIG. 1 is a schematic configuration diagram of an information processing apparatus according to the first embodiment.
  • FIG. 2 is a diagram for explaining an example of memory access.
  • FIG. 3 is a block diagram of the NAND controller according to the first embodiment.
  • FIG. 4 is a diagram illustrating an example of an address conversion table according to the first embodiment.
  • FIG. 5 is a diagram of an example of the management information table according to the first embodiment.
  • FIG. 6 is a schematic diagram illustrating an example of a process executed by the NAND controller according to the first embodiment.
  • FIG. 7 is a flowchart of processing executed by the NAND controller according to the first embodiment.
  • FIG. 8 is a flowchart of flag setting processing in the management information table according to the first embodiment.
  • FIG. 9 is a diagram of an example of a NAND controller that executes a control program.
  • FIG. 1 is a schematic configuration diagram of an information processing apparatus according to the first embodiment.
  • the information processing apparatus 1 includes a plurality of memories 2a and 2b, a plurality of CPUs (Central Processing Units) 3a and 3b, an I / O (Input Output) hub 4, and a plurality of SSDs (Solid State Drives) 5a and 5b.
  • the SSD 5a includes a NAND controller 6a and a plurality of NAND devices 7a to 10a.
  • the SSD 5b includes a NAND controller 6b and a plurality of NAND devices 7b to 10b.
  • the SSD 5b, the NAND controller 6b, and the plurality of NAND devices 7b to 10b perform the same functions as the SSD 5a, the NAND controller 6a, and the plurality of NAND devices 7a to 10a, and the description thereof is omitted. To do.
  • the memories 2a and 2b are storage devices that store data used by the CPUs 3a and 3b for arithmetic processing.
  • the CPUs 3a and 3b are arithmetic processing devices that perform various arithmetic processes using data stored in the memories 2a and 2b.
  • the CPUs 3a and 3b use NUMA (Non-Uniform Memory Access) technology to acquire data stored in the memories 2a and 2b, and execute arithmetic processing using the acquired data.
  • NUMA Non-Uniform Memory Access
  • the CPUs 3a and 3b acquire data stored in the SSDs 5a and 5b via the I / O hub 4, and execute arithmetic processing using the acquired data. Specifically, the CPU 3a issues a data read request or write request to the SSD 5a, and reads or writes data from each of the NAND devices 7a to 10a. For example, the CPU 3a issues a read request storing a logical address designating data to be read to the SSD 5a. In addition, the CPU 3a issues a write request in which a logical address that specifies a data write destination and data to be written are stored.
  • the NAND device 7a is a non-volatile memory that stores various data. More specifically, the NAND device 7a has a plurality of physical pages, which are data storage areas, and writes data in units of physical pages.
  • the NAND device 7a has a plurality of physical blocks having a plurality of physical pages, and erases data in units of blocks.
  • one physical page has a storage capacity of, for example, 8 kilobytes, and one physical block has, for example, 128 physical pages.
  • the NAND controller 6a accesses each of the NAND devices 7a to 10a, and reads and writes data. For example, the NAND controller 6a associates a logical address used when the CPUs 3a and 3b specify a storage area in which data is stored with a physical address indicating a storage area of the NAND devices 7a to 10a in which the data is stored. An address translation table.
  • the NAND controller 6a When the NAND controller 6a receives the logical address together with the read request, the NAND controller 6a uses the address conversion table to identify the physical address associated with the logical address, and reads data from the storage area indicated by the identified physical address. . Thereafter, the NAND controller 6a transmits the read data to the CPU 3a via the I / O hub 4.
  • the logical address that is the start address of each physical page is simply described as a logical address
  • the physical address that is the start address of each physical page is simply described as a physical address.
  • the system executed by the information processing apparatus 1 issues a read request and a write request for a logical address that is a head address of each physical page.
  • the NAND controller 6a performs the following processing. First, the NAND controller 6a uses the lower q bits of the logical address as a logical page number for identifying a physical page in one logical block, and the upper p bits of the remaining logical addresses as one logical block. Is a logical block address.
  • the NAND controller 6a uses the upper p bits of the physical address as a physical block address indicating one physical block, and the lower q bits of the physical address identify each physical page within one physical block. Physical page number. That is, the NAND controller 6a divides a logical address into a logical block address indicating a logical block and a logical page number indicating a logical page for each logical block. The NAND controller 6a divides the physical address into a physical block address indicating a physical block and a physical page number indicating a physical page for each physical block.
  • FIG. 2 is a diagram for explaining an example of memory access.
  • the NAND device 7 a in which the number of blocks is “8” and the number of physical pages in each block is “4” is described.
  • the NAND controller 6a writes data in units of physical pages of the NAND devices 7a to 10a using an address conversion table in which logical block addresses and physical block addresses are associated with each other. Was described.
  • the NAND controller 6a issues a write request to the logical page number “3” of the logical block address “LB00”, that is, the logical address “L0003” from the file system executed by the CPU 3a. Issue. Then, the NAND controller 6a acquires the physical address “P0403” associated with the logical address “L0003” using the address conversion table, and stores the data before update as shown in FIG. Identifies the physical page being served.
  • the NAND controller 6a reads the data of the physical page indicated by the physical address “P0403”, updates the read data to the data to be written, and updates the updated data. Store in free physical page of spare block. As a detailed example, the NAND controller 6a stores the updated data in the physical page indicated by the physical address “P0800”, as shown in FIG. Thereafter, as shown in FIG. 2E, the NAND controller 6a updates the physical address “P0403” associated with the logical address “L0003” to “P0800”, and ends the processing.
  • valid data and invalid data may be mixed in one physical block.
  • the NAND controller 6a when updating the data indicated by the logical address “L0003”, the NAND controller 6a invalidates the data in the physical block indicated by the physical block address “B04”. Then, the NAND controller 6a stores the updated data in the physical block indicated by the physical block address “B08”. Therefore, valid data and invalid data are mixed in the physical block indicated by the physical block address “B04”.
  • the NAND devices 7a to 10a cannot overwrite data on a physical page in which invalid data is stored, and write data to a spare block from which data has been erased in advance.
  • the NAND devices 7a to 10a have elements for holding data. Such an element deteriorates when data is erased, and when the deterioration progresses, it becomes impossible to hold charges appropriately.
  • the conventional NAND controller executes data movement control for organizing valid data and securing a new spare block.
  • the NAND controller 6a updates the address conversion table according to the data movement. However, the NAND controller 6a determines whether or not to move data for each physical block using page valid of the management information table. Therefore, the NAND controller 6a can identify the data source physical address after performing the data movement control, but cannot identify the logical address corresponding to the data source physical address.
  • the NAND controller 6a specifies a block for moving data. Then, the NAND controller 6a refers to the address conversion table and selects one logical address. Next, the NAND controller 6a acquires a physical address associated with the selected logical address from the address conversion table. Then, the NAND controller 6a uses the management information table to determine whether or not the physical block including the physical page indicated by the acquired physical address is a block for moving data. Thereafter, when the data is moved, the NAND controller 6a updates the physical address associated with the selected logical address among the physical addresses stored in the address conversion table to the movement destination physical address.
  • the NAND controller 6a can complete the data movement of all the pages of the block in which data movement is performed by repeating the above processing in order from the first logical address of the address conversion table. However, when data movement determination is performed in order from the first logical address in the address conversion table, processing is performed for all the logical addresses at the maximum, and the data movement process takes a long time.
  • the information processing apparatus divides the logical address into several logical address blocks, and each logical address block corresponds to the physical address of the page included in the physical block that is the target of data movement. Determine if there is a logical address.
  • a logical address corresponding to a physical address of a page included in a certain physical block may be simply referred to as “logical address corresponding to a physical block”.
  • the information processing apparatus determines whether or not to move data to each logical address included in a logical address block including a logical address corresponding to a physical block to be moved. As a result, the information processing apparatus according to the present embodiment reduces the number of data movement determination processes to shorten the time required for the data movement process, and prevents a decrease in access performance.
  • FIG. 3 is a block diagram of the NAND controller according to the first embodiment.
  • the NAND controller 6 a includes a table storage unit 11, a requester interface unit 12, a request arbitration unit 13, and a table control unit 14.
  • the NAND controller 6 a includes a device access control unit 15, a cyclic reference control unit 16, and a data movement control unit 17.
  • the table storage unit 11 stores an address conversion table 18 and a management information table 19.
  • FIG. 4 is a diagram illustrating an example of an address conversion table according to the first embodiment.
  • the address conversion table 18 stores logical addresses, valid flags, and physical addresses in association with each other.
  • the valid flag is a valid bit indicating whether or not the data stored in the physical page indicated by the associated physical address is valid data.
  • the address conversion table 18 stores the logical address “L0000”, the valid flag “0”, and the physical address “P0011” in association with each other. That is, the address conversion table 18 indicates that valid data designated by the logical address “L0000” is not stored in the block indicated by the physical address “P0011”.
  • the address conversion table 18 stores the logical address “L0002”, the valid flag “1”, and the physical address “P0003” in association with each other. That is, the address conversion table 18 indicates that valid data specified by the logical address “L0002” is stored in the block indicated by the physical address “P0003”.
  • the logical addresses in the address conversion table 18 are divided into a plurality of groups.
  • this group is referred to as a “logical address block”.
  • the logical address block # 0 includes logical addresses L0000 to L003F.
  • the logical address block # 1 includes logical addresses L0040 to L007F.
  • the logical address block # 2 includes logical addresses L0080 to L00BF.
  • the logical address block # 3 includes logical addresses L00C0 to L00FF.
  • all logical addresses on the address conversion table 18 are grouped to form a logical address block.
  • the cyclic reference control unit 16 to be described later stores the correspondence between each logical address block and the logical address.
  • FIG. 5 is a diagram of an example of the management information table according to the first embodiment.
  • the management information table 19 stores a physical block address and the number of valid pages in association with each other.
  • the number of valid pages is the number of pages having valid data included in the physical block indicated by the associated physical block address.
  • the management information table 19 when n valid pages are included in one physical block, the number of valid pages is n.
  • each logical address block includes a logical address corresponding to a physical address indicating a valid page included in the corresponding physical block in correspondence with the physical block address is logically displayed. It is added for each address block. Specifically, when “1” is described in a column that is a column starting from the logical address block, a logical indicating a valid page included in the physical block corresponding to the physical block address at the top of the row of the column. This indicates that the logical address block has an address.
  • the management information table 19 stores the physical block address “B00” and the number of valid pages “11” in association with each other. That is, the management information table 19 indicates that 11 pages are valid among the physical pages included in the physical block indicated by the physical block address “B00”.
  • the logical address block corresponds to “# 0”, “# 2”, “# 3”, “# 5”, and “#m” in the row of the physical block address “B00”. “1” is set as the flag of the column. That is, the logical address blocks # 0, # 2, # 3, # 5, and #m include a logical block indicating a valid page included in the physical block corresponding to the physical block address “B00”.
  • the physical block address “B01” has no valid page, and no flag including a valid page is added to any logical address block.
  • “0” is set as a flag in the column corresponding to all the logical address blocks in the row representing the physical block.
  • the logical address block can actually be divided into any blocks.
  • the cyclic reference control unit 16 described later reads all the flags of the management information table 19. Therefore, for example, when the logical address block is divided finely, the number of flags included in one entry of the management information table 19 increases. In this case, the cyclic reference control unit 16 reads from the management information table 19 many times in order to read all the flags. Since the management information table 19 is large in size, it is stored in a DIMM (Dual Inline Memory Module) or the like and takes time to read. Therefore, when reading from the management information table 19 is performed a plurality of times, the reading process takes a lot of time.
  • DIMM Direct Inline Memory Module
  • the logical addresses included in one logical address block increase.
  • the search range in the data movement determination becomes wide, and the data movement determination processing described later increases.
  • the logical address block in consideration of the time for the entry reading process and the time for the data movement determination process. For example, it is preferable that the number of addresses that can be read by one reading for the NAND devices 7a, 8a, 9a, and 10a is one logical address block.
  • the NAND device 7a has a physical address area of 1 TByte with 1 KByte / page and 64 page / Block.
  • the NAND device 7a has a physical address area larger than the logical address area shown to the system.
  • the logical address area is also 1 TByte, which is the same as the physical address area.
  • the physical block is divided into 16 MBlocks. Therefore, the entry in the management information table 19 is also 16 MBlock. Thus, the size of the management information table 19 is increased.
  • the size of one entry is set to 64 bytes corresponding to one reading amount of the DIMM.
  • the requester interface unit 12 is an interface for requests from the CPUs 3a and 3b to the NAND devices 7a to 10a.
  • the requester interface unit 12 receives a read request including a logical address from the CPU 3 a or 3 b via the I / O hub 4. In that case, the requester interface unit 12 outputs a read request to the request arbitration unit 13. Further, when the requester interface unit 12 receives the data read from the NAND devices 7a to 10a from the request arbitration unit 13, the requester interface unit 12 transmits the data to the CPU 3a or 3b that is the issuing source of the read request.
  • the requester interface unit 12 receives a write request including data to be written to the NAND devices 7a to 10a and a logical address of data to be written from the CPUs 3a and 3b. In this case, the requester interface unit 12 outputs the received write request to the request arbitration unit 13. When the requester interface unit 12 receives a response from the request arbitration unit 13 to the effect that data writing has been completed, the requester interface unit 12 transmits the response to the CPU 3a or 3b that is the source of the write request.
  • the request arbitration unit 13 arbitrates various requests issued by the requester interface unit 12, the data movement control unit 17, and the cyclic reference control unit 16. Specifically, the request arbitration unit 13 receives a read request or a write request from the requester interface unit 12. Further, the request arbitration unit 13 receives from the data movement control unit 17 a movement request that requests the data stored in the NAND devices 7a to 10a to be moved from the currently stored block to another block. Further, the request arbitration unit 13 receives from the data movement control unit 17 an erasure request that requests to erase data in the physical block. In addition, the request arbitration unit 13 receives a table reference request for requesting reference to the management information table 19 from the cyclic reference control unit 16.
  • the request arbitration unit 13 arbitrates the read request, write request, move request, erase request, and table reference request received from the requester interface unit 12, the data movement control unit 17, and the cyclic reference control unit 16. For example, the request arbitration unit 13 executes the read request and the write request issued by the requester interface unit 12 with the highest priority so that reading and writing of data to the NAND devices 7a to 10a from the CPUs 3a and 3b are not hindered. For example, the request arbitration unit 13 executes the movement request with priority over the deletion request and the table reference request, and executes the deletion request with priority over the table reference request. In addition, about the rule in which the request arbitration part 13 arbitrates each request
  • the request arbitration unit 13 when receiving a read request, the request arbitration unit 13 outputs a logical address included in the read request to the table control unit 14.
  • the request arbitration unit 13 issues a read request storing the received physical address to the device access control unit 15.
  • the request arbitration unit 13 outputs the received data to the requester interface unit 12.
  • the request arbitration unit 13 when receiving the write request, the request arbitration unit 13 outputs the logical address included in the write request to the table control unit 14. As a result, when the data to be written is new data, the request arbitration unit 13 receives from the table control unit 14 the physical address of the page to which the data is written among the spare blocks in which no data is stored. To do.
  • the request arbitration unit 13 issues a write request including the physical address received from the table control unit 14 and the write target data to the device access control unit 15.
  • the request arbitration unit 13 receives a response from the device access control unit 15 indicating that the data writing has been completed
  • receives a table update request including the physical address of the page to which the data is to be written and the logical address included in the write request. Is output to the table control unit 14. If the request arbitration unit 13 receives from the table control unit 14 a response indicating that the table update has been completed, the request arbitration unit 13 outputs a response to the write request to the requester interface unit 12.
  • the request arbitration unit 13 receives the physical address of the page storing the update source data from the table control unit 14 as the update source physical address. Further, the request arbitration unit 13 receives from the table control unit 14 the physical address of the page included in the spare block, that is, the physical address of the page that is the data write destination, as the update destination physical address.
  • the request arbitration unit 13 issues an update request for requesting data update to the device access control unit 15. Specifically, the request arbitration unit 13 issues an update request including an update source physical address, an update destination physical address, and data to be written to the device access control unit 15.
  • the request arbitration unit 13 When the request arbitration unit 13 receives a response to the effect that data writing has been completed from the device access control unit 15, the request arbitration unit 13 updates the table update request including the update source physical address, the update destination physical address, and the logical address included in the write request. Is output to the table control unit 14. Thereafter, when the request arbitration unit 13 receives a response to the table update request from the table control unit 14, the request arbitration unit 13 outputs a response to the requester interface unit 12 indicating that the data writing has been completed.
  • the request arbitration unit 13 receives a movement request including a movement source physical address that is a physical address of a physical page in which the data to be moved is stored and a logical address for designating the data to be moved from the data movement control unit 17 or the like. To do. In addition, the request arbitration unit 13 makes an inquiry to the table control unit 14 and acquires the physical address of the physical page that is the data transfer destination as the transfer destination physical address.
  • the request arbitration unit 13 issues a movement request including the movement source physical address and the movement destination physical address to the device access control unit 15. Further, the request arbitration unit 13 receives from the device access control unit 15 a response indicating that the data movement has been completed. Then, the request arbitration unit 13 outputs to the table control unit 14 a table update request that includes a logical address that specifies data to be moved received from the data movement control unit 17, a movement destination physical address, and a movement source physical address. Thereafter, when the request arbitration unit 13 receives a response to the table update request from the table control unit 14, the request arbitration unit 13 outputs a response indicating that the data movement is completed to the data movement control unit 17.
  • the request arbitration unit 13 receives an erasure request including a physical block address indicating a physical block to be erased from the data movement control unit 17 or the like. Upon receiving the erasure request, the request arbitration unit 13 issues the received erasure request to the device access control unit 15. Upon receiving a response from the device access control unit 15 that the data erasure is complete, the request arbitration unit 13 outputs a table update request including the physical block address stored in the erasure request to the table control unit 14. When the request arbitration unit 13 receives from the table control unit 14 a response indicating that the data update has been completed, the request arbitration unit 13 outputs a response indicating that the data erasure has been completed to the data movement control unit 17.
  • the request arbitration unit 13 receives a table reference request from the cyclic reference control unit 16
  • the request arbitration unit 13 transmits a reference request for the address conversion table 18 and the management information table 19 to the table control unit 14.
  • the request arbitration unit 13 receives the address conversion table 18 and the management information table 19 from the table control unit 14, the request arbitration unit 13 outputs the received address conversion table 18 and management information table 19 to the cyclic reference control unit 16.
  • the table control unit 14 converts a logical address into a physical address. For example, when the logical address stored in the read request is received from the request arbitration unit 13, the table control unit 14 acquires a physical address associated with the received logical address from the address conversion table 18. Then, the table control unit 14 outputs the acquired physical address to the request arbitration unit 13.
  • the table control unit 14 When the table control unit 14 receives the logical address stored in the write request from the request arbitration unit 13, the table control unit 14 refers to the address conversion table 18 and determines whether the valid flag “1” is associated with the received logical address. To do. When the valid flag “0” is associated with the received logical address, that is, when the data to be written is new data, the table control unit 14 executes the following processing.
  • the table control unit 14 refers to the management information table 19 and identifies a physical block in which no data is stored, that is, a spare block. For example, the table control unit 14 refers to the management information table 19 and searches for physical blocks whose associated valid page numbers are all “0”, and sets the detected physical block as a spare block. Then, the table control unit 14 outputs the physical address of the physical page included in the spare block to the request arbitration unit 13.
  • the table control unit 14 sets the physical address of the physical page included in the same spare block until data is written to all physical pages of the physical page included in the identified spare block. Output. Specifically, the table control unit 14 outputs the physical addresses of physical pages in which no data is written among the physical pages included in the spare block, in the order of physical page numbers. Then, when data is written in all physical pages included in the spare block, the table control unit 14 refers to the management information table 19 and identifies a new spare block.
  • the table control unit 14 executes the following processing. First, the table control unit 14 outputs the physical address associated with the received logical address to the request arbitration unit 13 as an update source physical address. Further, the table control unit 14 identifies the spare block and outputs the physical address of the physical page in which no data is stored among the physical pages included in the identified spare block to the request arbitration unit 13 as the update destination physical address. .
  • the table control unit 14 receives an inquiry about the movement destination physical address from the request arbitration unit 13. In this case, the table control unit 14 identifies the spare block, and outputs the physical address of the physical page in which no data is stored among the physical pages included in the identified spare block to the request arbitration unit 13 as the movement destination physical address. To do.
  • the table control unit 14 updates the address conversion table 18 and the management information table 19 according to data writing, movement, or erasure. For example, when the request arbitration unit 13 writes new data, the table control unit 14 receives a table update request including the physical address of the physical page that is the data write destination and the logical address included in the write request. .
  • the table control unit 14 extracts the physical address and logical address of the physical page that is the data write destination from the table update request. Then, the table control unit 14 updates the valid flag associated with the extracted logical address in the address conversion table 18 to “1”. The table control unit 14 stores the extracted physical address in the address conversion table 18 in association with the extracted logical address.
  • the table control unit 14 sets “1” in the column of the logical address block including the extracted logical address corresponding to the extracted physical block in the management information table 19.
  • the table control unit 14 extracts an entry associated with the physical block address indicated by the extracted physical address from the management information table 19. Then, the table control unit 14 increases the number of valid pages of the extracted entry by one. Further, the table control unit 14 sets “1” in the column of the logical address block including the extracted logical address in the extracted entry. Here, the table control unit 14 does not perform a process of adding a flag to a column in which “1” is already described. Thereafter, the table control unit 14 outputs a response to the table update request to the request arbitration unit 13.
  • the table control unit 14 When the request arbitration unit 13 updates data, the table control unit 14 receives a table update request including the update source physical address, the update destination physical address, and the logical address included in the write request from the request arbitration unit 13. To do. In this case, the table control unit 14 extracts the update source physical address, the update destination physical address, and the logical address from the table update request. Then, the table control unit 14 updates the physical address associated with the extracted logical address in the address conversion table 18 to the extracted update destination physical address.
  • the table control unit 14 extracts an entry associated with the physical block address corresponding to the update source physical address from the management information table 19. Then, the table control unit 14 reduces the number of valid pages of the extracted entry by one.
  • the table control unit 14 extracts an entry associated with the update destination physical block address from the management information table 19. Then, the table control unit 14 increases the number of valid pages of the extracted entry by one. Further, the table control unit 14 sets “1” in the column of the logical address block including the extracted logical address in the extracted entry. Thereafter, the table control unit 14 outputs a response to the table update request to the request arbitration unit 13.
  • the table control unit 14 receives a table update request including a movement source physical address, a movement destination physical address, and a logical address designating data to be moved. In this case, the table control unit 14 extracts the movement source physical address, the movement destination physical address, and the logical address from the table update request. Then, the table control unit 14 refers to the address conversion table 18 and updates the physical address associated with the extracted logical address to the extracted destination physical address.
  • the table control unit 14 extracts an entry associated with the physical block address corresponding to the movement source physical address from the management information table 19. Then, the table control unit 14 reduces the number of valid pages of the extracted entry by one.
  • the table control unit 14 extracts an entry associated with the destination physical block address from the management information table 19. Then, the table control unit 14 increases the number of valid pages of the extracted entry by one. Further, the table control unit 14 sets “1” in the column of the logical address block including the extracted logical address in the extracted entry. Thereafter, the table control unit 14 outputs a response to the table update request to the request arbitration unit 13.
  • the table control unit 14 receives a table update request including the physical block address stored in the erase request from the request arbitration unit 13. Then, the table control unit 14 sets “0” in the column corresponding to all the logical address blocks in the entry corresponding to the designated physical block address. Thereafter, the table control unit 14 outputs a response to the table update request to the request arbitration unit 13.
  • the table control unit 14 when receiving a table reference request, acquires the address conversion table 18 and the management information table 19 from the table storage unit 11. Then, the table control unit 14 outputs the acquired management information table 19 to the request arbitration unit 13. For example, when the table control unit 14 receives an instruction to cancel the association between the logical address and the data from the system executed by the information processing apparatus 1, the table control unit 14 corresponds to the target logical address in the address conversion table 18. The attached valid flag is updated to “0”.
  • the device access control unit 15 executes device access to the NAND devices 7a to 10a according to various requests from the request arbitration unit 13. For example, the device access control unit 15 receives a read request including a physical address from the request arbitration unit 13. In this case, the device access control unit 15 reads data stored in the page indicated by the physical address stored in the read request among the pages of the NAND devices 7a to 10a. Then, the device access control unit 15 outputs the read data to the request arbitration unit 13.
  • the device access control unit 15 receives a write request including a physical address and data to be written from the request arbitration unit 13. In this case, the device access control unit 15 stores the write target data in the physical page indicated by the physical address included in the write request. Thereafter, the device access control unit 15 outputs a response to the effect that the data writing has been completed to the request arbitration unit 13.
  • the device access control unit 15 receives an update request including an update source physical address, an update destination physical address, and data to be written from the request arbitration unit 13.
  • the device access control unit 15 reads the data of the physical page indicated by the update source physical address.
  • the device access control unit 15 updates the read data to data included in the update request.
  • the device access control unit 15 stores the updated data in the physical page indicated by the update destination physical address. Thereafter, the device access control unit 15 outputs a response to the effect that the data writing has been completed to the request arbitration unit 13.
  • the device access control unit 15 receives a movement request including the movement source physical address and the movement destination physical address from the request arbitration unit 13. In this case, the device access control unit 15 reads data from the physical page indicated by the source physical address, and stores the read data in the physical page indicated by the destination physical address. Thereafter, the device access control unit 15 outputs a response to the effect that the data movement has been completed to the request arbitration unit 13.
  • the device access control unit 15 receives from the request arbitration unit 13 an erasure request including a physical block address indicating a physical block that is a data erasure target. In this case, the device access control unit 15 erases the data stored in the physical block indicated by the physical block address included in the erase request, and outputs a response to the request arbitration unit 13 that the data erase is complete.
  • the cyclic reference control unit 16 executes cyclic reference control at a predetermined timing. For example, the cyclic reference control unit 16 executes the cyclic reference control in response to a predetermined time interval, a predetermined time, or an instruction of an application program executed by the information processing apparatus 1.
  • the cyclic reference control unit 16 includes a logical address selection unit 161, a physical address acquisition unit 162, and a determination unit 163.
  • the logical address selection unit 161 outputs a reference request for the address conversion table 18 and the management information table 19 to the request arbitration unit 13. Then, the logical address selection unit 161 receives the address conversion table 18 and the management information table 19 from the request arbitration unit 13.
  • the logical address selection unit 161 specifies one physical block whose number of valid pages is smaller than the threshold from the management information table 19. Next, the logical address selection unit 161 selects a logical address block including a logical address corresponding to a valid page included in the identified physical block. Then, the logical address selection unit 161 sets a search pointer at the head logical address of the selected logical address block. Thereafter, the logical address selection unit 161 outputs the top logical address of the selected logical address block to the physical address acquisition unit 162.
  • the logical address selection unit 161 receives an instruction to select the next logical address from the determination unit 163, the logical address selection unit 161 increments the search pointer by one and newly sets a logical address having the next largest address as a target of the movement determination process. Select Then, the logical address selection unit 161 outputs the selected logical address to the physical address acquisition unit 162. That is, the logical address selection unit 161 selects the logical addresses one by one in the order of increasing addresses with the minimum logical address as the search start address.
  • the logical address selection unit 161 when the logical address selection unit 161 receives an instruction to move to the next logical address block from the determination unit 163, the logical address selection unit 161 includes a logical address corresponding to the valid page included in the identified physical block and determines whether to move the data. Select a logical address block that has not been performed. Then, the logical address selection unit 161 selects a logical address from the selected logical address block.
  • the physical address acquisition unit 162 acquires a logical address from the logical address selection unit 161. Next, the physical address acquisition unit 162 acquires a physical address associated with the acquired logical address from the address conversion table 18. Then, the physical address acquisition unit 162 outputs the acquired physical address to the determination unit 163.
  • the determination unit 163 acquires a physical address from the physical address acquisition unit 162. Then, the determination unit 163 determines whether or not the page having the acquired physical address is included in the physical block specified by the logical address selection unit 161.
  • the determination unit 163 instructs the logical address selection unit 161 to select the next logical address.
  • the determination unit 163 determines whether the valid flag of the address conversion table 18 corresponding to the acquired physical address is “1”. Confirm whether or not. When the valid flag is “0”, the determination unit 163 instructs the logical address selection unit 161 to select the next logical address.
  • the determination unit 163 outputs the set of the acquired physical address and the selected logical address to the data movement control unit 17.
  • the determination unit 163 determines whether or not the data movement determination has been performed for all the logical addresses in the logical address block selected by the logical address selection unit 161.
  • the determination unit 163 instructs the logical address selection unit 161 to select the next logical address when there is a logical address for which the data movement determination has not been completed at the logical address in the selected logical address block.
  • the determination unit 163 determines whether there is still a valid page in the acquired physical block. For example, the determination unit 163 decrements 1 from the number of valid pages of the acquired physical block in the management information table 19 when the data is moved, and when the number of valid pages becomes 0, the valid page It is determined that is gone.
  • the determination unit 163 notifies the logical address selection unit 161 of an instruction to move to the next logical address block.
  • the determination unit 163 displays the acquired physical address, the selected logical address, and the last indicating that the block is empty.
  • the set of flags is output to the data movement control unit 17.
  • the cyclic reference control unit 16 moves the data in the selected physical block and deletes the block to create a free capacity, and then determines whether a free capacity equal to or greater than a predetermined threshold value has been secured. If free space equal to or greater than the threshold value cannot be secured, the cyclic reference control unit 16 newly selects a physical block and repeats the above processing. When a free space equal to or greater than a predetermined threshold value can be secured, the cyclic reference control unit 16 ends the garbage collection process.
  • the data movement control unit 17 performs data movement. Specifically, the data movement control unit 17 receives a set of a logical address and a physical address or a set of a logical address, a physical address, and a last flag from the cyclic reference control unit 16.
  • the data movement control unit 17 When the data movement control unit 17 receives a combination of a logical address and a physical address, the data movement control unit 17 sets a physical address included in the received pair as a movement source physical address. Then, the data movement control unit 17 outputs a movement request including the movement source physical address and the logical address included in the received set to the request arbitration unit 13. Thereafter, when receiving a response from the request arbitration unit 13 that the data movement has been completed, the data movement control unit 17 ends the data movement process of the physical page indicated by the physical address included in the received set.
  • the data movement control unit 17 when the data movement control unit 17 receives the set of the logical address, the physical address, and the last flag from the cyclic reference control unit 16, the data movement control unit 17 sets the physical address included in the received set as the movement source physical address. Then, the data movement control unit 17 outputs a movement request including the movement source physical address and the logical address included in the received set to the request arbitration unit 13. Thereafter, when receiving a response indicating that the data movement is completed, the data movement control unit 17 outputs an erasure request including the physical block address included in the received set to the request arbitration unit 13. Then, when receiving a response from the request arbitration unit 13 that the data erasure is completed, the data movement control unit 17 ends the data movement process of the physical page indicated by the physical address included in the received set.
  • the data movement control unit 17 receives a set of the logical address “L0001”, the physical address “P0032”, and the last flag from the cyclic reference control unit 16. In this case, the data movement control unit 17 outputs a movement request including the movement source physical address “P0032” and the logical address “L0001” to the request arbitration unit 13.
  • the data movement control unit 17 receives a response indicating that the data movement has been completed, the data movement control unit 17 outputs a request to erase the physical block address including the physical address “P0032” to the request arbitration unit 13.
  • the NAND controller 6a erases the data of the physical block indicated by the physical block address including the physical address “P0032” to make a new spare block.
  • the requester interface unit 12, the request arbitration unit 13, the table control unit 14, the device access control unit 15, the cyclic reference control unit 16, and the data movement control unit 17 are electronic circuits.
  • an integrated circuit such as ASIC (Application Specific Integrated Circuit) or FPGA (Field Programmable Gate Array), or CPU (Central Processing Unit) or MPU (Micro Processing Unit) is applied.
  • the table storage unit 11 is a storage device such as a semiconductor memory element such as a RAM (Random Access Memory) or a flash memory.
  • a semiconductor memory element such as a RAM (Random Access Memory) or a flash memory.
  • FIG. 6 is a schematic diagram illustrating an example of a process executed by the NAND controller according to the first embodiment.
  • the NAND controller 6a refers to the management information table 19 and selects a physical block whose number of valid pages is equal to or less than a threshold value. Next, the NAND controller 6 a acquires a logical address block including a logical address indicating a valid page included in the selected physical block from the management information table 19.
  • the NAND controller 6a obtains logical addresses in order from the logical address block, and obtains a physical address associated with the obtained logical address from the address conversion table 18. get. Then, the NAND controller 6a specifies a physical block address from the acquired physical address. Then, as illustrated in FIG. 6C, the NAND controller 6a refers to the management information table 19, and determines whether or not the identified physical block address is included in the address of the selected physical block. When the identified physical block address is included in the address of the selected physical block, the NAND controller 6a determines to move the data stored in the physical block.
  • the NAND controller 6a determines to move the data of the physical block, the NAND controller 6a executes data movement control as shown in (D) of FIG. Specifically, the NAND controller 6a uses the valid flag of the address conversion table 18 to identify the physical page in which valid data is stored, and sets the physical address indicating the identified physical page as the source physical address. Further, the NAND controller 6a acquires the physical address of the spare block from the management information table 19 as the movement destination physical address. Then, the NAND controller 6a performs data movement control using the selected logical address, movement source physical address, and movement destination physical address.
  • the NAND controller 6a executes device access control related to data movement using the movement source physical address and the movement destination physical address. As a result, as shown in FIG. 6F, the NAND controller 6a moves the data stored in the physical page indicated by the source physical address to the physical page indicated by the destination physical address. Then, the NAND controller 6a receives a response relating to the movement of data, as indicated by (G) and (H) in FIG.
  • the NAND controller 6a updates the management information table 19 according to the data movement. Further, as shown in FIG. 6J, the NAND controller 6a updates the physical address associated with the selected logical address among the physical addresses stored in the address conversion table 18 to the movement destination physical address.
  • the NAND controller 6a does not determine whether to move data for each physical block, but determines whether to move data for each logical address. For this reason, the NAND controller 6a can update the address conversion table 18 without having an address reverse conversion table for converting the source physical address to the logical address. As a result, the NAND controller 6a can reduce the circuit scale. Further, since the data movement determination is performed only for the logical address in the logical block address including the logical address corresponding to the valid page included in the physical block, the NAND controller 6a performs the data movement determination processing time. Can be shortened.
  • FIG. 7 is a flowchart of processing executed by the NAND controller according to the first embodiment.
  • the NAND controller 6a executes data movement control shown in FIG. 7 when a predetermined time has elapsed or when an instruction from software is received.
  • the logical address selection unit 161 of the cyclic reference control unit 16 selects one physical block and searches the management information table 19 for the number of valid pages of the selected physical block (step S101).
  • the logical address selection unit 161 of the cyclic reference control unit 16 determines whether or not the number of valid pages of the selected physical block is less than a threshold value (step S102). If the number of valid pages is equal to or greater than the threshold (No at Step S102), the logical address selection unit 161 of the cyclic reference control unit 16 returns to Step S101.
  • step S102 when the number of valid pages is less than the threshold value (step S102: affirmative), the cyclic reference control unit 16 sets the number of the logical address block that is the object of the data movement determination to “# 0” (step 0). S103).
  • the logical address selection unit 161 of the cyclic reference control unit 16 determines whether or not the column of the logical address block that is the target of data movement determination corresponding to the selected physical block is “1” in the management information table 19. Is determined (step S104). If it is not “1” (No at Step S104), the logical address selection unit 161 of the cyclic reference control unit 16 increments the number of the logical address block that is the object of data movement determination by one (Step S113), and Step S104. Return to.
  • step S104 affirmative
  • the logical address selection unit 161 of the cyclic reference control unit 16 sets a search pointer to the first logical address of the logical address block that is the target of data movement determination. Set (step S105).
  • the physical address acquisition unit 162 of the cyclic reference control unit 16 acquires a physical address corresponding to the logical address indicated by the search pointer from the address conversion table 18, and uses the acquired physical address as the physical address of the movement determination target ( Step S106).
  • the determination unit 163 of the cyclic reference control unit 16 determines whether or not a page having a physical address to be moved is included in the selected physical block (step S107). If not included in the selected physical block (No at Step S107), the logical address selection unit 161 of the cyclic reference control unit 16 updates the search pointer by incrementing the search pointer by one (Step S111), and Step S106. Return to.
  • step S107 when included in the selected physical block (step S107: affirmative), the determination unit 163 of the cyclic reference control unit 16 performs address conversion to determine whether or not valid data is stored in the page having the movement determination target physical address. The determination is made from the table 18 (step S108). If valid data is not stored (No at Step S108), the logical address selection unit 161 of the cyclic reference control unit 16 increments the search pointer by one to update the search pointer (Step S111), and returns to Step S106. .
  • step S108 when valid data is stored (step S108: Yes), the determination unit 163 of the cyclic reference control unit 16 sets the acquired physical address as a physical address to be moved. Then, the determination unit 163 of the cyclic reference control unit 16 outputs a set of a physical address to be moved and a logical address corresponding thereto to the data movement control unit 17. The data movement control unit 17 outputs a data movement request to the request arbitration unit 13 and moves the data from the physical address to be moved. Further, the table control unit 14 changes the physical address associated with the logical address of the address conversion table 18 and updates the address conversion table 18. Further, the determination unit 163 of the cyclic reference control unit 16 reduces the number of valid pages of the selected physical block in the management information table 19 by one, and updates the management information table 19 (step S109).
  • the determination unit 163 of the cyclic reference control unit 16 determines whether or not the data movement determination has been performed for all the logical addresses included in the logical address block that is the target of the data movement determination (step S110). If there is a logical address that has not been subjected to data movement determination (No at Step S110), the logical address selection unit 161 of the cyclic reference control unit 16 increments the search pointer by one and updates the search pointer (Step S111). Return to step S106.
  • step S110 when the data movement determination is performed for all the logical addresses (step S110: Yes), the determination unit 163 of the cyclic reference control unit 16 determines whether the number of valid pages of the selected physical block has become zero. Is determined (step S112). When the number of valid pages is not 0 (No at Step S112), the logical address selection unit 161 of the cyclic reference control unit 16 increments the number of the logical address block that is the target of data movement determination by 1 (Step S113). The process returns to step S104.
  • step S112 when the number of valid pages is 0 (step S112: Yes), the determination unit 163 of the cyclic reference control unit 16 outputs the last flag set to the data movement control unit 17.
  • the data movement control unit 17 transmits a request for erasing a physical block including the physical address to be moved to the request arbitration unit 13 and erases the physical block.
  • the determination unit 163 of the cyclic reference control unit 16 updates the management information table 19 by clearing a flag indicating whether or not the logical address block corresponding to the selected physical block in the management information table 19 is included in “0”. (Step S114).
  • the traveling reference control unit 16 determines whether or not the free capacity is equal to or less than a threshold value (step S115). When the free space is equal to or smaller than the threshold (step S115: Yes), the cyclic reference control unit 16 returns to step S101. On the other hand, if the free space is larger than the threshold (No at Step S115), the NAND controller 6a ends the data movement control process.
  • FIG. 8 is a flowchart of flag setting processing in the management information table according to the first embodiment.
  • the table control unit 14 determines whether or not the request arbitration unit 13 has received a write command from the requester interface unit 12 (step S201). When the write command has not been received (No at Step S201), the table control unit 14 ends the flag setting process.
  • step S201 when a write command is received (step S201: Yes), the table control unit 14 specifies a logical address block including a logical address designated as a data storage destination by the write command (step S202).
  • the table control unit 14 acquires a physical address corresponding to the logical address designated by the write command from the address conversion table 18 (step S203).
  • the table control unit 14 specifies a physical block including a page corresponding to the acquired physical address from the management information table 19 (step S204).
  • the table control unit 14 acquires an entry corresponding to the identified physical block from the management information table 19 (step S205).
  • the table control unit 14 determines whether or not the flag of the identified logical address block is “0” in the acquired entry (step S206). When the flag is “1” (No at Step S206), the table control unit 14 ends the flag setting process.
  • step S206 when the flag is “0” (step S206: Yes), the table control unit 14 sets the flag of the specified logical address block in the acquired entry to “1” (step S207).
  • the information processing apparatus when the information processing apparatus according to the present embodiment groups logical addresses and performs garbage collection, the information processing apparatus allocates logical addresses included in logical address blocks including valid pages included in the target physical block. On the other hand, data movement is determined. Thereby, garbage collection can be performed without using a reverse lookup table for retrieving a logical address from a physical address, and the circuit scale of the NAND controller can be suppressed. In addition, since it is possible to omit the data movement determination process for the logical address included in the logical address block not including the valid page, the garbage collection time can be shortened and the access performance can be improved.
  • FIG. 9 is a diagram of an example of a NAND controller that executes a control program.
  • the NAND controller 6 e includes a CPU 40 and a device access control unit 15.
  • the CPU 40 is connected to the memory device 11a.
  • the memory device 11a may be a memory built in the NAND controller 6e.
  • the control program 30 functions as follows when the CPU 40 reads out, expands and executes the control program 30. That is, the control program 30 causes the CPU 40 to operate as the table control unit 31, the request arbitration unit 32, the cyclic reference control unit 33, and the data movement control unit 34.
  • the table control unit 31, the request arbitration unit 32, the cyclic reference control unit 33, and the data movement control unit 34 are the table control unit 14, the request arbitration unit 13, the cyclic reference control unit 16, and the data movement control shown in FIG. The same function as the unit 17 is exhibited.
  • the NAND controller 6e may execute the control program 30 by using an arithmetic device such as an MPU or FPGA instead of the CPU.
  • the control program 30 may be stored in, for example, the memory device 11a and the NAND devices 7a to 10a, or may be executed by the CPU 40 by other methods.
  • each program is stored in a “portable physical medium” such as a flexible disk, so-called FD (Flexible Disk), CD (Compact Disk) -ROM, DVD (Digital Versatile Disk), magneto-optical disk, and IC card.
  • the NAND controller 6e may acquire and execute each program from these portable physical media via each CPU 40.
  • each program stored in another computer or server device may be acquired and executed via a public line, the Internet, a LAN (Local Area Network), a WAN (Wide Area Network), or the like.

Landscapes

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

Abstract

 論理アドレス選択部(161)は、論理アドレスのグループ中、ブロックに含まれる有効なデータが格納されたNANDデバイス(7a)を示す論理アドレスを含むグループを特定し、該グループに含まれる論理アドレスを順に選択する。物理アドレス取得部(162)は、選択された論理アドレスに対応する物理アドレスを、アドレス変換テーブル(18)から取得する。判定部(163)は、所定の条件を用いて、取得された物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定する。データ移動制御部(17)は、データを移動させると判定された場合、取得された物理アドレスが示す記憶領域に格納されたデータを、他のNANDデバイス(8a)へ移動させる。テーブル制御部(14)は、アドレス変換テーブル(18)における選択された論理アドレスに対応付けられた物理アドレスを、他のNANDデバイス(8a)を示す物理アドレスに更新する。

Description

情報処理装置、制御回路、制御プログラム、及び制御方法
 本発明は、情報処理装置、制御回路、制御プログラム、及び制御方法に関する。
 従来、磁気ディスクよりも高速に動作する不揮発性メモリを用いた情報処理装置が知られている。このような情報処理システムの一例として、NANDフラッシュメモリデバイスをストレージ等の記憶装置として使用する情報処理装置が知られている。なお、以下の説明では、NANDフラッシュメモリデバイスをNANDデバイスと記載する。
 ここで、NANDデバイスは、データの記憶領域である物理ページ単位でデータの書込み、読出し、データの更新に係る移動を行い、複数の物理ページを含む物理ブロック単位でデータの消去を行う。このため、NANDデバイスは、有効なデータと無効なデータとが混在した物理ブロックを有する場合がある。また、NANDデバイスは、データを消去する際に素子が劣化するので、頻繁に更新されるデータが書込まれた物理ページと、あまり更新されないデータが書込まれた物理ページとでは、素子が劣化する速度にばらつきが発生する。
 このため、各物理ブロックに対するデータの書込み状況やデータの書込時刻に応じて、各物理ブロックに書込まれたデータの移動を実行し、データの整理や劣化の平準化を行うNANDコントローラが知られている。例えば、NANDコントローラは、物理ブロックごとに、各物理ページのデータが有効であるか否かを示す情報と、最後にデータが書込まれた時刻を示す情報とが格納された管理情報テーブルを有する。
 そして、NANDコントローラは、管理情報テーブルを参照し、物理ブロックごとに、有効なデータの数やデータが書込まれてから経過した時間に応じて、データを移動させるか否かを判定する。その後、NANDコントローラは、データを移動させると判定した場合は、物理ブロックに書込まれた有効なデータを、予備ブロックの物理ページに移動し、選択した物理ブロックのデータを消去することで、新たな予備ブロックの確保や、劣化の平準化を行う。
 また、NANDコントローラは、情報処理装置が実行するシステムがデータの指定に用いる論理アドレスを、データが格納された物理ページを示す物理アドレスに変換するアドレス変換テーブルを有する。そして、NANDコントローラは、データの移動を行った場合は、データの移動元、および、データの移動先を示す物理アドレスを用いて、アドレス変換テーブルの更新を行う。
 例えば、従来技術として、以下のような技術がある。NANDコントローラは、物理アドレスを論理アドレスに逆変換するアドレス逆変換テーブルを用いて、データの移動元を示す物理アドレスを論理アドレスに逆変換する。そして、NANDコントローラは、アドレス変換テーブルに格納された物理アドレスのうち、逆変換された論理アドレスをインデックスとする物理アドレスを、データの移動先を示す物理アドレスに書き換える。
 また、空き容量を確保するためのデータ移動の技術として、無効セクタ数が所定の閾値を超えているデータユニットの有効セクタのみをコピーして、コピー元のデータユニットを消去する従来技術がある。
特開2009-003784号公報 特開2005-275722号公報
 しかしながら、上述した物理ブロックごとにデータを移動させるか否かを判定する技術では、データの移動元、および、データの移動先を示す物理アドレスを用いて、アドレス変換テーブルの更新を行う。かかる処理を行うため、例えば、NANDコントローラは、データの移動元を示す物理アドレスから論理アドレスに逆変換するアドレス逆変換テーブルを有するので、回路規模が増大するという問題がある。また、複数のデータを分散して書き込む従来技術を用いても、物理アドレスから論理アドレスへの変換については考慮されておらず、アドレス逆変換テーブルの使用を回避することは困難である。
 開示の技術は、上記に鑑みてなされたものであって、NANDコントローラの回路規模を抑えつつアクセス性能を向上させる情報処理装置、制御回路、制御プログラム、及び制御方法を提供することを目的とする。
 本願の開示する情報処理装置、制御回路、制御プログラム、及び制御方法は、一つの態様において、選択部は、前記記憶領域を示す論理アドレスのグループの中で、前記記憶領域を複数含む所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定し、特定したグループに含まれる論理アドレスを順に選択していく。取得部は、前記選択部により選択された論理アドレスに対応付けられた物理アドレスを、論理アドレスと物理アドレスとの対応を表す変換テーブルから取得する。判定部は、所定の条件を用いて、前記取得部により取得された物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定する。移動部は、前記判定部が前記データを移動させると判定した場合、前記取得部により取得された物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動させる。更新部は、前記変換テーブルに格納された物理アドレスのうち、前記選択部により選択された論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する。
 本願の開示する情報処理装置、制御回路、制御プログラム、及び制御方法の一つの態様によれば、NANDコントローラの回路規模を抑えつつアクセス性能を向上させることができるという効果を奏する。
図1は、実施例1に係る情報処理装置の概略構成図である。 図2は、メモリアクセスの一例を説明するための図である。 図3は、実施例1に係るNANDコントローラのブロック図である。 図4は、実施例1に係るアドレス変換テーブルの一例の図である。 図5は、実施例1に係る管理情報テーブルの一例の図である。 図6は、実施例1に係るNANDコントローラが実行する処理の一例を説明するための図である。 図7は、実施例1に係るNANDコントローラが実行する処理のフローチャートである。 図8は、実施例1に係る管理情報テーブルにおけるフラグの設定処理のフローチャートである。 図9は、制御プログラムを実行するNANDコントローラの一例の図である。
 以下に、本願の開示する情報処理装置、制御回路、制御プログラム、及び制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、制御回路、制御プログラム、及び制御方法が限定されるものではない。
 図1は、実施例1に係る情報処理装置の概略構成図である。情報処理装置1は、複数のメモリ2a及び2b、複数のCPU(Central Processing Unit)3a及び3b、I/O(Input Output)ハブ4、並びに、複数のSSD(Solid State Drive)5a及び5bを有する。また、SSD5aは、NANDコントローラ6a及び複数のNANDデバイス7a~10aを有する。
 また、SSD5bは、NANDコントローラ6b及び複数のNANDデバイス7b~10bを有する。なお、以下の説明では、SSD5b、NANDコントローラ6b、及び複数のNANDデバイス7b~10bは、SSD5a、NANDコントローラ6a、及び複数のNANDデバイス7a~10aと同様の機能を発揮するものとして、説明を省略する。
 各メモリ2a及び2bは、各CPU3a及び3bが演算処理に用いるデータを記憶する記憶装置である。また、各CPU3a及び3bは、メモリ2a及び2bが記憶するデータを用いて、各種演算処理を行う演算処理装置である。例えば、CPU3a及び3bは、NUMA(Non-Uniform Memory Access)の技術を用いて、メモリ2a及び2bが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。
 また、CPU3a及び3bは、I/Oハブ4を介して、各SSD5a及び5bが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。詳細には、CPU3aは、SSD5aに対し、データの読出し要求や書込み要求を発行し、各NANDデバイス7a~10aからデータの読出しや書込みを行う。例えば、CPU3aは、SSD5aに対し、読出し対象となるデータを指定する論理アドレスが格納された読出し要求を発行する。また、CPU3aは、データの書込み先を指定する論理アドレスと、書込み対象となるデータとが格納された書込み要求を発行する。
 NANDデバイス7aは、各種データを記憶する不揮発性メモリである。詳細には、NANDデバイス7aは、データの記憶領域である物理ページを複数有し、物理ページ単位でデータの書込みを行う。また、NANDデバイス7aは、複数の物理ページを有する物理ブロックを複数有し、ブロック単位でデータの消去を行う。ここで、1つの物理ページは、例えば、8キロバイトの記憶容量を有し、1つの物理ブロックは、例えば、128の物理ページを有する。
 NANDコントローラ6aは、各NANDデバイス7a~10aに対してアクセスし、データの読出しや書込みを行う。例えば、NANDコントローラ6aは、データが記憶された記憶領域を各CPU3a及び3bが指定する際に用いる論理アドレスと、データが格納されたNANDデバイス7a~10aの記憶領域を示す物理アドレスとを対応付けたアドレス変換テーブルを有する。
 そして、NANDコントローラ6aは、読出し要求とともに論理アドレスを受信すると、アドレス変換テーブルを用いて、論理アドレスと対応付けられた物理アドレスを識別し、識別した物理アドレスが示す記憶領域からデータの読出しを行う。その後、NANDコントローラ6aは、I/Oハブ4を介して、読出したデータをCPU3aに送信する。
 なお、以下の説明では、理解を容易にするため、各物理ページの先頭アドレスとなる論理アドレスを単に論理アドレスと記載し、各物理ページの先頭アドレスとなる物理アドレスを単に物理アドレスと記載する。また、情報処理装置1が実行するシステムは、各物理ページの先頭アドレスとなる論理アドレスに対する読出し要求や書込み要求を発行するものとする。
 例えば、NANDコントローラ6aは、NANDデバイス7a~10aが、複数のブロックを有し、各ブロックに2個の物理ページが含まれている場合は、以下の処理を行う。まず、NANDコントローラ6aは、論理アドレスの下位qビットを論理的な1つのブロック内において、物理ページを識別するための論理ページ番号とし、残りの論理アドレスの上位pビットを論理的な1つのブロックを示す論理ブロックアドレスとする。
 また、NANDコントローラ6aは、物理アドレスの上位pビットを物理的な1つのブロックを示す物理ブロックアドレスとし、物理アドレスの下位qビットを物理的な1つのブロック内において、各物理ページを識別するための物理ページ番号とする。つまり、NANDコントローラ6aは、論理アドレスを、論理ブロックを示す論理ブロックアドレスと、論理ページを論理ブロックごとに示す論理ページ番号とに分割する。また、NANDコントローラ6aは、物理アドレスを、物理ブロックを示す物理ブロックアドレスと、物理ページを物理ブロックごとに示す物理ページ番号とに分割する。
 以下、図2を用いて、NANDコントローラ6aが実行するメモリアクセスの一例について説明する。図2は、メモリアクセスの一例を説明するための図である。なお、図2に示す例では、理解を容易にするため、ブロック数を「8」とし、各ブロック内の物理ページ数が「4」のNANDデバイス7aについて記載した。また、図2に示す例では、NANDコントローラ6aが、論理ブロックアドレスと物理ブロックアドレスとを対応付けたアドレス変換テーブルを用いて、NANDデバイス7a~10aが有する物理ページ単位でデータの書込みを行う処理について記載した。
 例えば、NANDコントローラ6aは、図2中(a)に示すように、CPU3aが実行するファイルシステムから、論理ブロックアドレス「LB00」の論理ページ番号「3」、すなわち論理アドレス「L0003」に書き込み要求を発行する。すると、NANDコントローラ6aは、アドレス変換テーブルを用いて、論理アドレス「L0003」に対応付けられた物理アドレス「P0403」を取得し、図2中(b)に示すように、更新前のデータが格納されている物理ページを識別する。
 続いて、NANDコントローラ6aは、図2中(c)に示すように、物理アドレス「P0403」が示す物理ページのデータを読出し、読み出したデータを書込み対象のデータに更新し、更新後のデータを予備ブロックの空き物理ページに格納する。詳細な例を挙げると、NANDコントローラ6aは、図2中(d)に示すように、物理アドレス「P0800」が示す物理ページに更新後のデータを格納する。その後、NANDコントローラ6aは、図2中(e)に示すように、論理アドレス「L0003」と対応付けられていた物理アドレス「P0403」を「P0800」に更新し、処理を終了する。
 ここで、NANDデバイス7a~10aに格納されたデータに対し、物理ページ単位で書込みや移動を行う場合は、1つの物理ブロック内に有効なデータと無効なデータとが混在する場合がある。例えば、図2に示す例では、NANDコントローラ6aは、論理アドレス「L0003」が示すデータを更新する際、物理ブロックアドレス「B04」が示す物理ブロック内のデータを無効化する。そして、NANDコントローラ6aは、更新後のデータを物理ブロックアドレス「B08」が示す物理ブロックに格納する。このため、物理ブロックアドレス「B04」が示す物理ブロックには、有効なデータと無効なデータとが混在する。
 ここで、NANDデバイス7a~10aは、無効なデータが格納された物理ページに対してデータの上書きを行うことができず、あらかじめデータを消去した予備ブロックにデータの書込みを行う。しかしながら、有効なデータと無効なデータとが混在する物理ブロックが増えると、新たにデータを書込む予備ブロックを確保できなくなる。また、NANDデバイス7a~10aは、データを保持するための素子を有する。かかる素子は、データの消去を行う際に劣化が進行し、劣化が進むと、電荷を適切に保持することができなくなる。
 そこで、従来のNANDコントローラは、有効なデータを整理して新たな予備ブロックを確保するデータ移動制御を実行する。
 ここで、NANDコントローラ6aは、ガベージコレクション処理などのデータ移動制御を実行した場合は、データの移動に応じて、アドレス変換テーブルの更新を行う。しかしながら、NANDコントローラ6aは、管理情報テーブルのページバリッドなどを用いて、物理ブロック毎に、データを移動させるか否かを判定する。このため、NANDコントローラ6aは、データ移動制御を行った後、データの移動元物理アドレスを識別できるが、データの移動元物理アドレスに対応する論理アドレスを識別できない。
 そこで、NANDコントローラ6aに以下の処理を行わせることが考えられる。まず、NANDコントローラ6aは、データの移動を行うブロックを特定する。そして、NANDコントローラ6aは、アドレス変換テーブルを参照し、論理アドレスを1つ選択する。次に、NANDコントローラ6aは、選択した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブルから取得する。そして、NANDコントローラ6aは、管理情報テーブルを用いて、取得した物理アドレスが示す物理ページを含む物理ブロックがデータの移動を行うブロックか否かを判定する。その後、NANDコントローラ6aは、データの移動を行った場合は、アドレス変換テーブルに格納された物理アドレスのうち、選択した論理アドレスと対応付けられた物理アドレスを、移動先物理アドレスに更新する。NANDコントローラ6aは、以上の処理を、アドレス変換テーブルの最初の論理アドレスから順に繰り返し行っていくことで、データの移動を行うブロックの全てのページのデータ移動を完了することができる。しかし、アドレス変換テーブルの最初の論理アドレスから順番にデータの移動判定を行う場合、最大で全ての論理アドレスに対して処理を行うことになり、データの移動処理に多大な時間が掛かってしまう。
 そこで、本実施例に係る情報処理装置は、論理アドレスをいくつかの論理アドレスブロックに分け、各論理アドレスブロック内に、データの移動の対象とする物理ブロックに含まれるページの物理アドレスに対応する論理アドレスがあるかを判定する。以下では、ある物理ブロックに含まれるページの物理アドレスに対応する論理アドレスを、単に、「物理ブロックに対応する論理アドレス」という場合がある。本実施例に係る情報処理装置は、移動対象の物理ブロックに対応する論理アドレスを含む論理アドレスブロックに含まれる各論理アドレスに対してデータの移動を行うか否かを判定する。これにより、本実施例に係る情報処理装置は、データ移動の判定の処理数を減らしてデータ移動処理に係る時間を短縮し、アクセス性能の低下を防ぐ。
 以下、図3を用いて、NANDコントローラ6aについて説明する。図3は、実施例1に係るNANDコントローラのブロック図である。図3に示す例では、NANDコントローラ6aは、テーブル記憶部11、リクエスタインターフェース部12、リクエスト調停部13、及びテーブル制御部14を有する。また、NANDコントローラ6aは、デバイスアクセス制御部15、巡回参照制御部16、及びデータ移動制御部17を有する。また、テーブル記憶部11は、アドレス変換テーブル18及び管理情報テーブル19を記憶する。
 まず、図4、図5を参照して、テーブル記憶部11が記憶するアドレス変換テーブル18と、管理情報テーブル19に格納された情報について説明する。図4は、実施例1に係るアドレス変換テーブルの一例の図である。図4に示すように、アドレス変換テーブル18には、論理アドレスと有効フラグと物理アドレスとが対応付けて格納されている。ここで、有効フラグとは、対応付けられた物理アドレスが示す物理ページに格納されたデータが有効なデータであるか否かを示すバリッドビットである。
 例えば、図4に示す例では、アドレス変換テーブル18には、論理アドレス「L0000」と、有効フラグ「0」と、物理アドレス「P0011」とが対応付けて格納されている。すなわち、アドレス変換テーブル18は、物理アドレス「P0011」が示すブロックに論理アドレス「L0000」が指定する有効なデータが格納されていない旨を示す。
 同様に、図4に示す例では、アドレス変換テーブル18には、論理アドレス「L0002」と、有効フラグ「1」と、物理アドレス「P0003」とが対応付けて格納されている。すなわち、アドレス変換テーブル18は、物理アドレス「P0003」が示すブロックに論理アドレス「L0002」が指定する有効なデータが格納されている旨を示す。
 さらに、アドレス変換テーブル18における論理アドレスは、複数のグループに分けられている。以下、このグループを「論理アドレスブロック」と言う。本実施例では、図4に示すように、論理アドレスブロック#0は、論理アドレスL0000~L003Fを含む。また、論理アドレスブロック#1は、論理アドレスL0040~L007Fを含む。また、論理アドレスブロック#2は、論理アドレスL0080~L00BFを含む。また、論理アドレスブロック#3は、論理アドレスL00C0~L00FFを含む。図4では、論理アドレスブロック#0~#3しか示していないが、実際には、アドレス変換テーブル18上の全ての論理アドレスがグループ化され論理アドレスブロックを形成している。そして、後述する巡回参照制御部16は、各論理アドレスブロックと論理アドレスとの対応を記憶している。
 次に、図5を用いて、管理情報テーブル19に格納される情報について説明する。図5は、実施例1に係る管理情報テーブルの一例の図である。図5に示すように、管理情報テーブル19には、物理ブロックアドレス及び有効ページ数が対応付けて格納されている。ここで、有効ページ数とは、対応付けられた物理ブロックアドレスが示す物理ブロックに含まれる有効なデータを有するページの数である。例えば、管理情報テーブル19は、1つの物理ブロックに、n個の有効ページが含まれる場合は、有効ページ数はnとなる。
 管理情報テーブル19には、物理ブロックアドレスに対応させて、対応する物理ブロックに含まれる有効ページを示す物理アドレスに対応する論理アドレスが各論理アドレスブロックに含まれるか否かを示すフラグが、論理アドレスブロック毎に付加されている。具体的には、論理アドレスブロックを先頭とする列である欄に「1」が記載されている場合、その欄の行の先頭の物理ブロックアドレスに対応する物理ブロックに含まれる有効ページを示す論理アドレスをその論理アドレスブロックが有していることを表している。また、論理アドレスブロックを先頭とする列である欄に「0」が記載されている場合、その欄の行の先頭の物理ブロックアドレスに対応する物理ブロックに含まれる有効ページを示す論理アドレスをその論理アドレスブロックが有していないことを表している。
 例えば、図5に示す例では、管理情報テーブル19には、物理ブロックアドレス「B00」と有効ページ数「11」とが対応付けて格納される。すなわち、管理情報テーブル19は、物理ブロックアドレス「B00」が示す物理ブロックに含まれる物理ページのうち、11個のページが有効であることを示す。また、管理情報テーブル19は、物理ブロックアドレス「B00」の行において、論理アドレスブロックが「#0」、「#2」、「#3」、「#5」、及び「#m」に対応する欄のフラグとして「1」が設定されている。すなわち、論理アドレスブロック#0,#2,#3,#5,及び#mに、物理ブロックアドレス「B00」に対応する物理ブロックに含まれる有効ページを示す論理ブロックが含まれている。
 さらに、図5に示す例では、管理情報テーブル19には、物理ブロックアドレス「B01」には、有効ページがなく、また、いずれの論理アドレスブロックにも有効ページを含むフラグは付加されていない。ここで、物理ブロックに有効ページがない場合、すなわち、その物理ブロックが使用されていない場合、その物理ブロックを表す行の全ての論理アドレスブロックに対応する欄にフラグとして「0」を設定する。
 ここで、論理アドレスブロックは、実際にはどのようなブロックに分割することもできる。ただし、ある物理ブロックの有効ページが各論理アドレスブロックに含まれているか否かを判定するために、後述する巡回参照制御部16は、管理情報テーブル19のフラグを全て読み出す。そこで、例えば、論理アドレスブロックを細かく分けた場合、管理情報テーブル19の1つのエントリに含まれるフラグの数が増えてしまう。この場合、巡回参照制御部16は、フラグを全て読み出すために何度も管理情報テーブル19から読み出しを行うことになる。管理情報テーブル19は、サイズが大きいためDIMM(Dual Inline Memory Module)などに記憶されており、読み出しに時間が掛かる。そのため、管理情報テーブル19からの読み出しを複数回行った場合、読み出し処理に多くの時間が掛かってしまう。また、論理アドレスブロックを大きく分けた場合、1つの論理アドレスブロックに含まれる論理アドレスが増えてしまう。後述するデータの移動判定において、論理アドレスブロックのサイズが大きくなるとデータの移動判定における検索範囲が広くなってしまい、後述するデータの移動判定の処理が増えてしまう。
 そこで、論理アドレスブロックは、エントリの読み出し処理の時間と、データの移動判定の処理の時間とを考慮して決定することが好ましい。例えば、NANDデバイス7a,8a,9a,10aに対する1回の読み出しで読み出せる数のアドレスを1つの論理アドレスブロックとすることが好ましい。
 ここで、論理アドレスブロックの決定の一例についてNANDデバイス7aを例に説明する。例えば、NANDデバイス7aが1KByte/page,64page/Blockで1TByteの物理アドレス領域を持っている場合で説明する。また、NANDデバイス7aは、システムに見せる論理アドレス領域より大きな物理アドレス領域を持つが、簡略化のため、論理アドレス領域も物理アドレス領域と同じ1TByteとする。このようなNANDデバイス7aは、物理ブロックが16MBlockに分割されている。そこで、管理情報テーブル19におけるエントリも16MBlockとなる。このように、管理情報テーブル19のサイズが大きくなる。そこで、なるべく読み出しの時間を短縮するため、1エントリ分のサイズを、DIMMの1回の読み出し量に相当する64Byteとする。論理アドレスブロックのサイズは小さいほどデータの移動判定における検索範囲が細分化でき効率が良い。そこで、論理アドレス領域を512個に分割する。この場合、1論理アドレスのサイズは2Mpageとなる。
 図3に戻り、リクエスタインターフェース部12は、CPU3a及び3bからNANDデバイス7a~10aに対するリクエストのインターフェースである。例えば、リクエスタインターフェース部12は、論理アドレスを含む読出し要求をCPU3a又は3bからI/Oハブ4を介して受信する。その場合、リクエスタインターフェース部12は、読出し要求をリクエスト調停部13に出力する。また、リクエスタインターフェース部12は、NANDデバイス7a~10aから読出したデータをリクエスト調停部13から受信すると、読出し要求の発行元となるCPU3a又は3bに対してデータを送信する。
 また、リクエスタインターフェース部12は、NANDデバイス7a~10aに対して書込むデータ及び書込み対象となるデータの論理アドレスとを含む書込み要求をCPU3a及び3bから受信する。この場合、リクエスタインターフェース部12は、受信した書込み要求をリクエスト調停部13に出力する。また、リクエスタインターフェース部12は、リクエスト調停部13から、データ書込みが完了した旨の応答を受信すると、受信した応答を、書込み要求の発行元となるCPU3a又は3bに対して、応答を送信する。
 リクエスト調停部13は、リクエスタインターフェース部12、データ移動制御部17、巡回参照制御部16が発行する各種リクエストの調停を行う。詳細には、リクエスト調停部13は、読出し要求又は書込み要求をリクエスタインターフェース部12から受信する。また、リクエスト調停部13は、NANDデバイス7a~10aが記憶するデータを、現在記憶するブロックから他のブロックに移動するよう要求する移動要求をデータ移動制御部17から受信する。また、リクエスト調停部13は、物理ブロック内のデータを消去するよう要求する消去要求をデータ移動制御部17から受信する。また、リクエスト調停部13は、管理情報テーブル19の参照を要求するテーブル参照要求を巡回参照制御部16から受信する。
 そして、リクエスト調停部13は、リクエスタインターフェース部12、データ移動制御部17及び巡回参照制御部16から受信する読出し要求、書込み要求、移動要求、消去要求及びテーブル参照要求の調停を行う。例えば、リクエスト調停部13は、CPU3a及び3bからNANDデバイス7a~10aに対するデータの読出しや書込みが阻害されないよう、リクエスタインターフェース部12が発行する読出し要求及び書込み要求を最優先で実行する。また、例えば、リクエスト調停部13は、移動要求を消去要求及びテーブル参照要求よりも優先して実行し、消去要求をテーブル参照要求よりも優先して実行する。なお、リクエスト調停部13が各要求を調停するルールについては、上述した処理に限定されるものではなく、任意のルールを適用してよい。
 以下、リクエスト調停部13が読出し要求、書込み要求、移動要求、消去要求及びテーブル参照要求を受信した際に実行する処理の一例を説明する。例えば、リクエスト調停部13は、読出し要求を受信すると、読出し要求に含まれる論理アドレスをテーブル制御部14に出力する。そして、リクエスト調停部13は、読出し対象となる物理アドレスをテーブル制御部14から受信すると、受信した物理アドレスを格納した読出し要求をデバイスアクセス制御部15へ発行する。その後、リクエスト調停部13は、読出し対象となるデータをデバイスアクセス制御部15から受信すると、受信したデータをリクエスタインターフェース部12へ出力する。
 また、リクエスト調停部13は、書込み要求を受信すると、書込み要求に含まれる論理アドレスをテーブル制御部14に出力する。この結果、リクエスト調停部13は、書込み対象のデータが新たなデータである場合は、データが格納されていない予備ブロックのうち、データの書込み先となるページの物理アドレスをテーブル制御部14から受信する。
 その後、リクエスト調停部13は、テーブル制御部14から受信した物理アドレスと、書込み対象のデータとを含む書込み要求とをデバイスアクセス制御部15へ発行する。また、リクエスト調停部13は、デバイスアクセス制御部15からデータの書込みが完了した旨の応答を受信すると、データの書込み先となるページの物理アドレス及び書込み要求に含まれる論理アドレスを含むテーブル更新要求をテーブル制御部14へ出力する。そして、リクエスト調停部13は、テーブルの更新が終了した旨の応答をテーブル制御部14から受信した場合は、書込み要求に対する応答をリクエスタインターフェース部12へ出力する。
 また、リクエスト調停部13は、書込みがデータの更新を目的とする場合は、更新元のデータが格納されたページの物理アドレスを更新元物理アドレスとしてテーブル制御部14から受信する。また、リクエスト調停部13は、予備ブロックに含まれるページの物理アドレス、すなわちデータの書込み先となるページの物理アドレスを更新先物理アドレスとしてテーブル制御部14から受信する。
 そして、リクエスト調停部13は、更新元物理アドレス及び更新先物理アドレスをテーブル制御部14から受信した場合は、データの更新を要求する更新要求をデバイスアクセス制御部15へ発行する。詳細には、リクエスト調停部13は、更新元物理アドレス、更新先物理アドレス、及び書込むデータを含む更新要求をデバイスアクセス制御部15へ発行する。
 また、リクエスト調停部13は、データの書込みが完了した旨の応答をデバイスアクセス制御部15から受信すると、更新元物理アドレス、更新先物理アドレス、及び書込み要求に含まれる論理アドレスを含むテーブル更新要求をテーブル制御部14へ出力する。その後、リクエスト調停部13は、テーブル更新要求に対する応答をテーブル制御部14から受信すると、データの書込みが完了した旨の応答をリクエスタインターフェース部12へ出力する。
 また、リクエスト調停部13は、移動させるデータが格納された物理ページの物理アドレスである移動元物理アドレス及び移動させるデータを指定するための論理アドレスを含む移動要求をデータ移動制御部17などから受信する。また、リクエスト調停部13は、テーブル制御部14への問い合わせなどを行い、データの移動先となる物理ページの物理アドレスを移動先物理アドレスとして取得する。
 そして、リクエスト調停部13は、移動元物理アドレス及び移動先物理アドレスを含む移動要求をデバイスアクセス制御部15に発行する。また、リクエスト調停部13は、データの移動が完了した旨の応答をデバイスアクセス制御部15から受信する。そして、リクエスト調停部13は、データ移動制御部17から受信した移動対象のデータを指定する論理アドレス、移動先物理アドレス、及び移動元物理アドレスを含むテーブル更新要求をテーブル制御部14へ出力する。その後、リクエスト調停部13は、テーブル更新要求に対する応答をテーブル制御部14から受信した場合は、データの移動が完了した旨の応答をデータ移動制御部17へ出力する。
 また、リクエスト調停部13は、データの消去対象となる物理ブロックを示す物理ブロックアドレスを含む消去要求をデータ移動制御部17などから受信する。リクエスト調停部13は、消去要求を受信すると、受信した消去要求をデバイスアクセス制御部15へ発行する。そして、リクエスト調停部13は、データの消去が完了した旨の応答をデバイスアクセス制御部15から受信すると、消去要求に格納された物理ブロックアドレスを含むテーブル更新要求をテーブル制御部14へ出力する。そして、リクエスト調停部13は、データの更新が終了した旨の応答をテーブル制御部14から受信した場合は、データの消去が完了した旨の応答をデータ移動制御部17へ出力する。
 また、リクエスト調停部13は、テーブル参照要求を巡回参照制御部16から受信した場合は、アドレス変換テーブル18と管理情報テーブル19の参照要求をテーブル制御部14へ送信する。そして、リクエスト調停部13は、アドレス変換テーブル18及び管理情報テーブル19をテーブル制御部14から受信すると、受信したアドレス変換テーブル18及び管理情報テーブル19を巡回参照制御部16に出力する。
 テーブル制御部14は、論理アドレスを物理アドレスに変換する。例えば、テーブル制御部14は、読出し要求に格納された論理アドレスをリクエスト調停部13から受信すると、受信した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブル18から取得する。そして、テーブル制御部14は、取得した物理アドレスをリクエスト調停部13へ出力する。
 また、テーブル制御部14は、書込み要求に格納された論理アドレスをリクエスト調停部13から受信すると、アドレス変換テーブル18を参照し、受信した論理アドレスに有効フラグ「1」が対応付けられているか判定する。そして、テーブル制御部14は、受信した論理アドレスに有効フラグ「0」が対応付けられている場合、すなわち、書込み対象のデータが新たなデータである場合は、以下の処理を実行する。
 まず、テーブル制御部14は、管理情報テーブル19を参照し、データが格納されていない物理ブロック、すなわち、予備ブロックを識別する。例えば、テーブル制御部14は、管理情報テーブル19を参照し、対応付けられた有効ページ数がすべて「0」である物理ブロックを検索し、検出した物理ブロックを予備ブロックとする。そして、テーブル制御部14は、予備ブロックに含まれる物理ページの物理アドレスをリクエスト調停部13へ出力する。
 なお、テーブル制御部14は、一度予備ブロックを識別すると、識別した予備ブロックに含まれる物理ページの全ての物理ページにデータが書込まれるまで、同一の予備ブロックに含まれる物理ページの物理アドレスを出力する。詳細には、テーブル制御部14は、予備ブロックに含まれる物理ページのうち、データが書込まれていない物理ページの物理アドレスを、物理ページ番号の順に出力する。そして、テーブル制御部14は、予備ブロックに含まれる全ての物理ページにデータが書込まれた場合は、管理情報テーブル19を参照して、新たな予備ブロックを識別する。
 一方、テーブル制御部14は、受信した論理アドレスに有効フラグ「1」が対応付けられている場合、すなわち、書込みがデータの更新を目的とする場合は、以下の処理を実行する。まず、テーブル制御部14は、受信した論理アドレスと対応付けられた物理アドレスを更新元物理アドレスとしてリクエスト調停部13へ出力する。また、テーブル制御部14は、予備ブロックを識別し、識別した予備ブロックに含まれる物理ページのうち、データが格納されていない物理ページの物理アドレスを更新先物理アドレスとしてリクエスト調停部13へ出力する。
 また、テーブル制御部14は、リクエスト調停部13が移動要求を受信した際には、移動先物理アドレスの問い合わせをリクエスト調停部13から受ける。この場合、テーブル制御部14は、予備ブロックを識別し、識別した予備ブロックに含まれる物理ページのうち、データが格納されていない物理ページの物理アドレスを移動先物理アドレスとしてリクエスト調停部13へ出力する。
 また、テーブル制御部14は、データの書込み、移動、又は消去に応じて、アドレス変換テーブル18及び管理情報テーブル19の更新を行う。例えば、テーブル制御部14は、リクエスト調停部13が新たなデータの書込みを行う場合は、データの書込み先となる物理ページの物理アドレス及び書込み要求に含まれる論理アドレスを含むテーブル更新要求を受信する。
 この場合、テーブル制御部14は、データの書込み先となる物理ページの物理アドレス及び論理アドレスをテーブル更新要求から抽出する。そして、テーブル制御部14は、アドレス変換テーブル18における抽出した論理アドレスと対応付けられた有効フラグを「1」に更新する。また、テーブル制御部14は、抽出した論理アドレスに対応付けて、抽出した物理アドレスをアドレス変換テーブル18に格納する。
 さらに、テーブル制御部14は、管理情報テーブル19において、抽出した物理ブロックに対応する、抽出した論理アドレスを含む論理アドレスブロックの欄を「1」とする。
 また、テーブル制御部14は、抽出した物理アドレスが示す物理ブロックアドレスに対応付けられたエントリを管理情報テーブル19から抽出する。そして、テーブル制御部14は、抽出したエントリの有効ページ数を1つ増やす。また、テーブル制御部14は、抽出したエントリにおける抽出した論理アドレスを含む論理アドレスブロックの欄を「1」とする。ここで、テーブル制御部14は、既に「1」が記載されている欄に対しては、フラグを付加する処理は行わない。その後、テーブル制御部14は、テーブル更新要求に対する応答をリクエスト調停部13に出力する。
 また、テーブル制御部14は、リクエスト調停部13がデータの更新を行う場合は、更新元物理アドレス、更新先物理アドレス及び書込み要求に含まれる論理アドレスを含むテーブル更新要求をリクエスト調停部13から受信する。この場合、テーブル制御部14は、テーブル更新要求から更新元物理アドレス、更新先物理アドレス、及び論理アドレスを抽出する。そして、テーブル制御部14は、アドレス変換テーブル18における抽出した論理アドレスと対応付けられた物理アドレスを抽出した更新先物理アドレスに更新する。
 また、テーブル制御部14は、更新元物理アドレスに対応する物理ブロックアドレスと対応付けられたエントリを管理情報テーブル19から抽出する。そして、テーブル制御部14は、抽出したエントリの有効ページ数を1つ減らす。
 次に、テーブル制御部14は、更新先物理ブロックアドレスと対応付けられたエントリを管理情報テーブル19から抽出する。そして、テーブル制御部14は、抽出したエントリの有効ページ数を1つ増やす。また、テーブル制御部14は、抽出したエントリにおける抽出した論理アドレスを含む論理アドレスブロックの欄を「1」とする。その後、テーブル制御部14は、テーブル更新要求に対する応答をリクエスト調停部13に出力する。
 また、テーブル制御部14は、リクエスト調停部13がデータの移動を行う場合は、移動元物理アドレス、移動先物理アドレス、及び移動対象のデータを指定する論理アドレスを含むテーブル更新要求を受信する。この場合、テーブル制御部14は、テーブル更新要求から移動元物理アドレス、移動先物理アドレス、及び論理アドレスを抽出する。そして、テーブル制御部14は、アドレス変換テーブル18を参照し、抽出した論理アドレスと対応付けられた物理アドレスを抽出した移動先物理アドレスに更新する。
 また、テーブル制御部14は、移動元物理アドレスに対応する物理ブロックアドレスと対応付けられたエントリを管理情報テーブル19から抽出する。そして、テーブル制御部14は、抽出したエントリの有効ページ数を1つ減らす。
 次に、テーブル制御部14は、移動先物理ブロックアドレスと対応付けられたエントリを管理情報テーブル19から抽出する。そして、テーブル制御部14は、抽出したエントリの有効ページ数を1つ増やす。また、テーブル制御部14は、抽出したエントリにおける抽出した論理アドレスを含む論理アドレスブロックの欄を「1」とする。その後、テーブル制御部14は、テーブル更新要求に対する応答をリクエスト調停部13に出力する。
 また、テーブル制御部14は、リクエスト調停部13がデータの消去を行う場合は、消去要求に格納された物理ブロックアドレスを含むテーブル更新要求をリクエスト調停部13から受信する。そして、テーブル制御部14は、指定された物理ブロックアドレスに対応するエントリにおける全ての論理アドレスブロックに対応する欄に「0」を設定する。その後、テーブル制御部14は、テーブル更新要求に対する応答をリクエスト調停部13へ出力する。
 また、テーブル制御部14は、テーブル参照要求を受信した場合は、テーブル記憶部11からアドレス変換テーブル18と管理情報テーブル19とを取得する。そして、テーブル制御部14は、取得した管理情報テーブル19をリクエスト調停部13に出力する。なお、テーブル制御部14は、例えば、情報処理装置1が実行するシステムから、論理アドレスとデータとの対応付けを解消する旨の指示を受けると、アドレス変換テーブル18における対象となる論理アドレスと対応付けられた有効フラグを「0」に更新する。
 デバイスアクセス制御部15は、リクエスト調停部13からの各種リクエストに従って、NANDデバイス7a~10aに対するデバイスアクセスを実行する。例えば、デバイスアクセス制御部15は、物理アドレスを含む読出し要求をリクエスト調停部13から受信する。この場合、デバイスアクセス制御部15は、NANDデバイス7a~10aが有するページのうち、読出し要求に格納されていた物理アドレスが示すページに格納されたデータの読み出しを実行する。そして、デバイスアクセス制御部15は、読み出したデータをリクエスト調停部13へ出力する。
 また、例えば、デバイスアクセス制御部15は、物理アドレス及び書込み対象のデータを含む書込み要求をリクエスト調停部13から受信する。この場合、デバイスアクセス制御部15は、書込み要求に含まれる物理アドレスが示す物理ページに書込み対象のデータを格納する。その後、デバイスアクセス制御部15は、データの書込みを終了した旨の応答をリクエスト調停部13へ出力する。
 また、例えば、デバイスアクセス制御部15は、更新元物理アドレス、更新先物理アドレス、及び書込むデータを含む更新要求をリクエスト調停部13から受信する。この場合、デバイスアクセス制御部15は、更新元物理アドレスが示す物理ページのデータを読み出す。続いて、デバイスアクセス制御部15は、読み出したデータを更新要求に含まれるデータに更新する。そして、デバイスアクセス制御部15は、更新したデータを更新先物理アドレスが示す物理ページに格納する。その後、デバイスアクセス制御部15は、データの書込みを終了した旨の応答をリクエスト調停部13へ出力する。
 また、デバイスアクセス制御部15は、移動元物理アドレス及び移動先物理アドレスを含む移動要求をリクエスト調停部13から受信する。この場合、デバイスアクセス制御部15は、移動元物理アドレスが示す物理ページからデータを読出し、読出したデータを移動先物理アドレスが示す物理ページに格納する。その後、デバイスアクセス制御部15は、データの移動を終了した旨の応答をリクエスト調停部13へ出力する。
 また、デバイスアクセス制御部15は、データの消去対象となる物理ブロックを示す物理ブロックアドレスを含む消去要求をリクエスト調停部13から受信する。この場合、デバイスアクセス制御部15は、消去要求に含まれる物理ブロックアドレスが示す物理ブロックに格納されたデータを消去し、データの消去が完了した旨の応答をリクエスト調停部13へ出力する。
 巡回参照制御部16は、所定のタイミングで、巡回参照制御を実行する。例えば、巡回参照制御部16は、所定の時間間隔、所定の時刻、又は情報処理装置1が実行するアプリケーションプログラムの指示などを契機として、巡回参照制御を実行する。
 以下、巡回参照制御部16が実行する巡回参照制御の処理内容について説明する。巡回参照制御部16は、論理アドレス選択部161、物理アドレス取得部162、及び判定部163を有している。
 論理アドレス選択部161は、アドレス変換テーブル18及び管理情報テーブル19の参照要求をリクエスト調停部13へ出力する。そして、論理アドレス選択部161は、リクエスト調停部13からアドレス変換テーブル18及び管理情報テーブル19を受信する。
 そして、論理アドレス選択部161は、管理情報テーブル19から有効ページ数が閾値よりも小さい物理ブロックを1つ特定する。次に、論理アドレス選択部161は、特定した物理ブロックに含まれる有効ページに対応する論理アドレスを含む論理アドレスブロックを選択する。そして、論理アドレス選択部161は、選択した論理アドレスブロックの先頭の論理アドレスに検索ポインタを設定する。その後、論理アドレス選択部161は、選択した論理アドレスブロックの先頭の論理アドレスを物理アドレス取得部162へ出力する。
 その後、論理アドレス選択部161は、判定部163から次の論理アドレスの選択の指示を受けると、検索ポインタを1つ増加させて、次に大きいアドレスを有する論理アドレスを移動判定処理の対象として新たに選択する。そして、論理アドレス選択部161は、選択した論理アドレスを物理アドレス取得部162へ出力する。すなわち、論理アドレス選択部161は、最小論理アドレスを検索開始アドレスとしてアドレスが大きくなる順に論理アドレスを1つずつ選択していく。
 さらに、論理アドレス選択部161は、次の論理アドレスブロックへの移行の指示を判定部163から受けると、特定した物理ブロックに含まれる有効ページに対応する論理アドレスを含み、且つ、データの移動判定を行っていない論理アドレスブロックを選択する。そして、論理アドレス選択部161は、選択した論理アドレスブロックの中からの論理アドレスの選択を行う。
 物理アドレス取得部162は、論理アドレスを論理アドレス選択部161から取得する。次に、物理アドレス取得部162は、取得した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブル18から取得する。そして、物理アドレス取得部162は、取得した物理アドレスを判定部163へ出力する。
 判定部163は、物理アドレスを物理アドレス取得部162から取得する。そして、判定部163は、取得した物理アドレスを有するページが、論理アドレス選択部161により特定された物理ブロックに含まれているか否かを判定する。
 取得した物理アドレスが特定された物理ブロックの物理ブロックアドレスに含まれていない場合、判定部163は、次の論理アドレスの選択を論理アドレス選択部161へ指示する。
 これに対して、取得した物理アドレスを有するページが特定した物理ブロックに含まれている場合、判定部163は、取得した物理アドレスに対応するアドレス変換テーブル18の有効フラグが「1」であるか否かを確認する。判定部163は、有効フラグが「0」の場合、次の論理アドレスの選択を論理アドレス選択部161へ指示する。
 これに対して、判定部163は、有効フラグが「1」の場合、取得した物理アドレス及び選択した論理アドレスの組をデータ移動制御部17へ出力する。そして、判定部163は、データ移動が完了すると、論理アドレス選択部161により選択された論理アドレスブロック内の全ての論理アドレスについてデータの移動判定を行ったか否かを判定する。判定部163は、選択された論理アドレスブロック内の論理アドレスにおいてデータの移動判定が完了していない論理アドレスがある場合、次の論理アドレスの選択を論理アドレス選択部161へ指示する。
 一方、選択された論理アドレスブロック内の全ての論理アドレスにおいてデータの移動判定を行った場合、判定部163は、取得した物理ブロックに未だ有効ページがあるか否かを判定する。例えば、判定部163は、データの移動を行った際に、管理情報テーブル19における取得した物理ブロックの有効ページ数から1をデクリメントしていき、有効ページ数が0になった場合に、有効ページがなくなったと判定する。
 有効ページが未だある場合、判定部163は、次の論理アドレスブロックへの移行の指示を論理アドレス選択部161へ通知する。
 一方、有効ページがなくなった、すなわち、データの移動により物理ブロックが空になったと判定した場合、判定部163は、取得した物理アドレス、選択した論理アドレス、及びブロックが空になる旨を示すラストフラグの組をデータ移動制御部17に出力する。
 巡回参照制御部16は、選択した物理ブロックにおけるデータの移動及びブロックの消去を行い空き容量を作成した後、予め決められた閾値以上の空き容量が確保できたか否かを判定する。閾値以上の空き容量が確保できていない場合、巡回参照制御部16は、新たに物理ブロックを選択して以上の処理を繰り返す。予め決められた閾値以上の空き容量が確保できた場合、巡回参照制御部16は、ガベージコレクションの処理を終了する。
 データ移動制御部17は、データの移動を行う。具体的には、データ移動制御部17は、巡回参照制御部16から、論理アドレス及び物理アドレスの組、又は、論理アドレス、物理アドレス、及びラストフラグとの組を受信する。
 データ移動制御部17は、論理アドレス及び物理アドレスの組を受信した場合、受信した組に含まれる物理アドレスを移動元物理アドレスとする。そして、データ移動制御部17は、移動元物理アドレスと、受信した組に含まれる論理アドレスとを含む移動要求をリクエスト調停部13へ出力する。その後、データ移動制御部17は、データの移動が完了した旨の応答をリクエスト調停部13から受信すると、受信した組に含まれる物理アドレスが示す物理ページのデータ移動処理を終了する。
 一方、データ移動制御部17は、論理アドレス、物理アドレス、及びラストフラグの組を巡回参照制御部16から受信した場合、受信した組に含まれる物理アドレスを移動元物理アドレスとする。そして、データ移動制御部17は、移動元物理アドレス及び受信した組に含まれる論理アドレスを含む移動要求をリクエスト調停部13へ出力する。その後、データ移動制御部17は、データの移動が完了した旨の応答を受信すると、受信した組に含まれる物理ブロックアドレスを含む消去要求をリクエスト調停部13へ出力する。そして、データ移動制御部17は、データの消去が完了した旨の応答をリクエスト調停部13から受信すると、受信した組に含まれる物理アドレスが示す物理ページのデータ移動処理を終了する。
 例えば、データ移動制御部17は、巡回参照制御部16から、論理アドレス「L0001」と、物理アドレス「P0032」と、ラストフラグとの組を受信する。かかる場合は、データ移動制御部17は、移動元物理アドレス「P0032」と、論理アドレス「L0001」とを含む移動要求をリクエスト調停部13に出力する。そして、データ移動制御部17は、データの移動が完了した旨の応答を受信した場合は、物理アドレス「P0032」を含む物理ブロックアドレスの消去要求をリクエスト調停部13に出力する。この結果、NANDコントローラ6aは、物理アドレス「P0032」を含む物理ブロックアドレスが示す物理ブロックのデータを消去し、新たな予備ブロックとする。
 なお、例えば、リクエスタインターフェース部12、リクエスト調停部13、テーブル制御部14、デバイスアクセス制御部15、巡回参照制御部16、データ移動制御部17とは、電子回路である。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路、またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。
 また、テーブル記憶部11とは、RAM(Random Access Memory)、フラッシュメモリ(flash memory)などの半導体メモリ素子などの記憶装置である。
 次に、図6を参照して、本実施例に係るNANDコントローラ6aが実行する処理をまとめて説明する。図6は、実施例1に係るNANDコントローラが実行する処理の一例を説明するための図である。
 例えば、NANDコントローラ6aは、図6中(A)に示すように、管理情報テーブル19を参照し、有効ページ数が閾値以下の物理ブロックを選択する。次に、NANDコントローラ6aは、選択した物理ブロックに含まれる有効ページを示す論理アドレスを含む論理アドレスブロックを管理情報テーブル19から取得する。
 次に、NANDコントローラ6aは、図6中(B)に示すように、論理アドレスブロックの中から順番に論理アドレスを取得し、取得した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブル18から取得する。そして、NANDコントローラ6aは、取得した物理アドレスから物理ブロックアドレスを特定する。そして、NANDコントローラ6aは、図6中(C)に示すように、管理情報テーブル19を参照し、特定した物理ブロックアドレスが選択した物理ブロックのアドレスに含まれているか否かを判定する。NANDコントローラ6aは、特定した物理ブロックアドレスが選択した物理ブロックのアドレスに含まれている場合、その物理ブロックに格納されているデータを移動させると判定する。
 そして、NANDコントローラ6aは、物理ブロックのデータを移動させると判定した場合は、図6中(D)に示すように、データ移動制御を実行する。具体的には、NANDコントローラ6aは、アドレス変換テーブル18の有効フラグを用いて、有効なデータが格納された物理ページを特定し、特定した物理ページを示す物理アドレスを移動元物理アドレスとする。また、NANDコントローラ6aは、管理情報テーブル19から予備ブロックの物理アドレスを移動先物理アドレスとして取得する。そして、NANDコントローラ6aは、選択した論理アドレス、移動元物理アドレス、および、移動先物理アドレスを用いて、データ移動制御を実行する。
 詳細には、NANDコントローラ6aは、図6中(E)に示すように、移動元物理アドレスと移動先物理アドレスとを用いて、データの移動に係るデバイスアクセス制御を実行する。この結果、NANDコントローラ6aは、図6中(F)に示すように、移動元物理アドレスが示す物理ページに格納されたデータを、移動先物理アドレスが示す物理ページに移動させる。そして、NANDコントローラ6aは、図6中(G)及び(H)に示すように、データの移動に係る応答を受信する。
 すると、NANDコントローラ6aは、図6中(I)に示すように、データの移動に応じて、管理情報テーブル19の更新を行う。また、NANDコントローラ6aは、図6中(J)に示すように、アドレス変換テーブル18が記憶する物理アドレスのうち、選択した論理アドレスと対応付けられた物理アドレスを移動先物理アドレスに更新する。
 すなわち、NANDコントローラ6aは、物理ブロック毎にデータを移動させるか判定するのではなく、論理アドレス毎にデータを移動させるか否かを判定する。このため、NANDコントローラ6aは、移動元物理アドレスを論理アドレスに変換するアドレス逆変換テーブルを有さずとも、アドレス変換テーブル18の更新を行うことができる。この結果、NANDコントローラ6aは、回路規模を縮小することができる。また、物理ブロックに含まれる有効ページに対応する論理アドレスを含む論理ブロックアドレスの中の論理アドレスに対してのみ、データの移動判定を行うので、NANDコントローラ6aは、データの移動判定の処理の時間を短縮できる。
 次に、図7を参照して、NANDコントローラ6aが実行する処理の流れについて説明する。図7は、実施例1に係るNANDコントローラが実行する処理のフローチャートである。NANDコントローラ6aは、所定の時間が経過した場合や、ソフトウェアからの指示を受けた場合は、図7に示すデータ移動制御を実行する。
 巡回参照制御部16の論理アドレス選択部161は、物理ブロックを一つ選択し、管理情報テーブル19における選択した物理ブロックの有効ページ数を検索する(ステップS101)。
 そして、巡回参照制御部16の論理アドレス選択部161は、選択した物理ブロックの有効ページ数が閾値未満か否を判定する(ステップS102)。有効ページ数が閾値以上の場合(ステップS102:否定)、巡回参照制御部16の論理アドレス選択部161は、ステップS101へ戻る。
 これに対して、有効ページ数が閾値未満の場合(ステップS102:肯定)、巡回参照制御部16は、データの移動判定の対象とする論理アドレスブロックの番号を「#0」にセットする(ステップS103)。
 次に、巡回参照制御部16の論理アドレス選択部161は、管理情報テーブル19において、選択した物理ブロックに対応するデータの移動判定の対象とする論理アドレスブロックの欄が「1」であるか否かを判定する(ステップS104)。「1」でない場合(ステップS104:否定)、巡回参照制御部16の論理アドレス選択部161は、データの移動判定の対象とする論理アドレスブロックの番号を1つインクリメントし(ステップS113)、ステップS104へ戻る。
 これに対して、「1」の場合(ステップS104:肯定)、巡回参照制御部16の論理アドレス選択部161は、データの移動判定の対象とする論理アドレスブロックの先頭の論理アドレスに検索ポインタをセットする(ステップS105)。
 そして、巡回参照制御部16の物理アドレス取得部162は、検索ポインタが示す論理アドレスに対応する物理アドレスをアドレス変換テーブル18から取得して、取得した物理アドレスを移動判定対象の物理アドレスとする(ステップS106)。
 次に、巡回参照制御部16の判定部163は、移動判定対象の物理アドレスを有するページが選択した物理ブロックに含まれているか否かを判定する(ステップS107)。選択した物理ブロックに含まれていない場合(ステップS107:否定)、巡回参照制御部16の論理アドレス選択部161は、検索ポインタを1つインクリメントして検索ポインタを更新し(ステップS111)、ステップS106へ戻る。
 一方、選択した物理ブロックに含まれる場合(ステップS107:肯定)、巡回参照制御部16の判定部163は、移動判定対象の物理アドレスを有するページに有効データが格納されているか否かをアドレス変換テーブル18から判定する(ステップS108)。有効データが格納されていない場合(ステップS108:否定)、巡回参照制御部16の論理アドレス選択部161は、検索ポインタを1つインクリメントして検索ポインタを更新し(ステップS111)、ステップS106へ戻る。
 これに対して、有効データが格納されている場合(ステップS108:肯定)、巡回参照制御部16の判定部163は、取得した物理アドレスを移動対象の物理アドレスとする。そして、巡回参照制御部16の判定部163は、移動対象の物理アドレス及びそれに対応する論理アドレスの組をデータ移動制御部17へ出力する。データ移動制御部17は、データの移動要求をリクエスト調停部13へ出力し、移動対象の物理アドレスからデータを移動させる。また、テーブル制御部14は、アドレス変換テーブル18の論理アドレスに関連付けられた物理アドレスを変更し、アドレス変換テーブル18を更新する。さらに、巡回参照制御部16の判定部163は、管理情報テーブル19における選択した物理ブロックの有効ページ数を1つ減らし、管理情報テーブル19を更新する(ステップS109)。
 次に、巡回参照制御部16の判定部163は、データの移動判定の対象とする論理アドレスブロックに含まれる全ての論理アドレスについてデータの移動判定を行ったか否かを判定する(ステップS110)。データの移動判定を行っていない論理アドレスがある場合(ステップS110:否定)、巡回参照制御部16の論理アドレス選択部161は、検索ポインタを1つインクリメントして検索ポインタを更新し(ステップS111)、ステップS106へ戻る。
 これに対して、全ての論理アドレスについてデータの移動判定を行った場合(ステップS110:肯定)、巡回参照制御部16の判定部163は、選択した物理ブロックの有効ページ数が0になったか否かを判定する(ステップS112)。有効ページ数が0でない場合(ステップS112:否定)、巡回参照制御部16の論理アドレス選択部161は、データの移動判定の対象とする論理アドレスブロックの番号を1つインクリメントし(ステップS113)、ステップS104へ戻る。
 これに対して、有効ページ数が0の場合(ステップS112:肯定)、巡回参照制御部16の判定部163は、ラストフラグの組をデータ移動制御部17へ出力する。データ移動制御部17は、移動対象の物理アドレスを含む物理ブロックの消去要求をリクエスト調停部13へ送信し、その物理ブロックを消去させる。また、巡回参照制御部16の判定部163は、管理情報テーブル19における選択した物理ブロックに対応する論理アドレスブロック含まれるか否かのフラグを「0」にクリアして管理情報テーブル19を更新する(ステップS114)。
 その後、巡回参照制御部16は、空き容量が閾値以下か否かを判定する(ステップS115)。空き容量が閾値以下の場合(ステップS115:肯定)、巡回参照制御部16は、ステップS101へ戻る。これに対して、空き容量が閾値より大きい場合(ステップS115:否定)、NANDコントローラ6aは、データの移動制御の処理を終了する。
 次に、図8を参照して、本実施例に係る管理情報テーブル19における有効ページを含むか否かを示すフラグの設定処理について説明する。図8は、実施例1に係る管理情報テーブルにおけるフラグの設定処理のフローチャートである。
 テーブル制御部14は、リクエスト調停部13が書き込み命令をリクエスタインターフェース部12から受信したか否かを判定する(ステップS201)。書き込み命令を受信していない場合(ステップS201:否定)、テーブル制御部14は、フラグの設定処理を終了する。
 これに対して、書き込み命令を受信した場合(ステップS201:肯定)、テーブル制御部14は、書き込み命令でデータの格納先として指定された論理アドレスを含む論理アドレスブロックを特定する(ステップS202)。
 次に、テーブル制御部14は、書き込み命令で指定された論理アドレスに対応する物理アドレスをアドレス変換テーブル18から取得する(ステップS203)。
 そして、テーブル制御部14は、取得した物理アドレスに対応するページを含む物理ブロックを管理情報テーブル19から特定する(ステップS204)。
 テーブル制御部14は、特定した物理ブロックに対応するエントリを管理情報テーブル19から取得する(ステップS205)。
 その後、テーブル制御部14は、取得したエントリにおいて、特定した論理アドレスブロックのフラグが「0」か否かを判定する(ステップS206)。フラグが「1」の場合(ステップS206:否定)テーブル制御部14は、フラグの設定処理を終了する。
 これに対して、フラグが「0」の場合(ステップS206:肯定)、テーブル制御部14は、取得したエントリにおける特定した論理アドレスブロックのフラグを「1」に設定する(ステップS207)。
 以上に説明したように、本実施例に係る情報処理装置は、論理アドレスをグループ化し、ガベージコレクションを行う場合に、対象の物理ブロックに含まれる有効ページを含む論理アドレスブロックに含まれる論理アドレスに対してデータの移動判定を行う。これにより、物理アドレスから論理アドレスを検索する逆引きのテーブルを用いずにガベージコレクションが行え、NANDコントローラの回路規模を抑えることができる。また、有効ページを含まない論理アドレスブロックに含まれる論理アドレスに対するデータの移動判定の処理を省略できるので、ガベージコレクションの時間を短縮でき、アクセス性能を向上させることができる。
 図9は、制御プログラムを実行するNANDコントローラの一例の図である。図9に示すように、NANDコントローラ6eは、CPU40、デバイスアクセス制御部15を有する。また、CPU40は、メモリデバイス11aと接続される。なお、メモリデバイス11aは、NANDコントローラ6eに内蔵されるメモリであってもよい。
 メモリデバイス11aには、アドレス変換テーブル18、管理情報テーブル19があらかじめ記憶される。ここで、CPU40が制御プログラム30を読出して展開して実行することにより、制御プログラム30は、以下の様に機能する。すなわち、制御プログラム30は、CPU40をテーブル制御部31、リクエスト調停部32、巡回参照制御部33、データ移動制御部34として動作させる。ここで、テーブル制御部31、リクエスト調停部32、巡回参照制御部33、及びデータ移動制御部34は、図3に示すテーブル制御部14、リクエスト調停部13、巡回参照制御部16、データ移動制御部17と同様の機能を発揮する。
 なお、NANDコントローラ6eは、CPUではなく、例えばMPUやFPGA等の演算装置を用いて制御プログラム30を実行しても良い。また、上記の制御プログラム30については、例えば、メモリデバイス11aや、NANDデバイス7a~10aに記憶させてもよいし、他の方法でCPU40に実行させてもよい。例えば、フレキシブルディスク、いわゆるFD(Flexible Disk)、CD(Compact Disk)-ROM、DVD(Digital Versatile Disk)、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。
 そして、NANDコントローラ6eが各CPU40を介して、これらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などを介して他のコンピュータまたはサーバ装置などに記憶させた各プログラムを取得して実行するようにしてもよい。
 1 情報処理装置
 2a,2b メモリ
 3a,3b,40 CPU
 4 I/Oハブ
 5a,5b SSD
 6a,6b,6e NANDコントローラ
 7a~10a,7b~10b NANDデバイス
 11 テーブル記憶部
 12 リクエスタインターフェース部
 13,32 リクエスト調停部
 14,31 テーブル制御部
 15 デバイスアクセス制御部
 16,33 巡回参照制御部
 17,34 データ移動制御部
 18 アドレス変換テーブル
 19 管理情報テーブル
 30 制御プログラム
 161 論理アドレス選択部
 162 物理アドレス取得部
 163 判定部

Claims (7)

  1.  複数の記憶領域を有する記憶装置と、
     前記記憶領域を示す論理アドレスのグループの中で、前記記憶領域を複数含む所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定し、特定したグループに含まれる論理アドレスを順に選択していく選択部と、
     前記選択部により選択された論理アドレスに対応付けられた物理アドレスを、論理アドレスと物理アドレスとの対応を表す変換テーブルから取得する取得部と、
     所定の条件を用いて、前記取得部により取得された物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定する判定部と、
     前記判定部が前記データを移動させると判定した場合、前記取得部により取得された物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動させる移動部と、
     前記変換テーブルに格納された物理アドレスのうち、前記選択部により選択された論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する更新部と
     を有することを特徴とする情報処理装置。
  2.  前記選択部は、有効なデータを格納している記憶領域が閾値以下のブロックを前記所定のブロックとして選択し、前記グループの中で、前記所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定し、特定したグループに含まれる論理アドレスを順に選択していくことを特徴とする請求項1に記載の情報処理装置。
  3.  各前記グループに対して、複数のブロックのそれぞれに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスを含むか否かを表すフラグを、前記ブロック毎に立てるフラグ設定部をさらに備え、
     前記選択部は、前記フラグ設定部によって設定されたフラグを基に、前記所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定する
     ことを特徴とする請求項1に記載の情報処理装置。
  4.  前記グループは、各前記記憶領域を示す論理アドレスの集合を、前記選択部が一度に読み込める前記フラグの数で分割して生成されていることを特徴とする請求項1に記載の情報処理装置。
  5.  記憶領域を示す論理アドレスのグループの中で、前記記憶領域を複数含む所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定し、特定したグループに含まれる論理アドレスを順に選択していく選択部と、
     前記選択部により選択された論理アドレスに対応付けられた物理アドレスを、論理アドレスと物理アドレスとの対応を表す変換テーブルから取得する取得部と、
     所定の条件を用いて、前記取得部により取得された物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定する判定部と、
     前記判定部が前記データを移動させると判定した場合、前記取得部により取得された物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動させる移動部と、
     前記変換テーブルに格納された物理アドレスのうち、前記選択部により選択された論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する更新部と
     を有することを特徴とする制御回路。
  6.  各記憶領域を示す論理アドレスのグループの中で、前記記憶領域を複数含む所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定し、
     特定したグループに含まれる論理アドレスを順に選択していき、
     選択した論理アドレスに対応付けられた物理アドレスを、論理アドレスと物理アドレスとの対応を表す変換テーブルから取得し、
     所定の条件を用いて、取得した物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定し、
     前記データを移動させると判定した場合は、前記取得部が取得した物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動し、
     前記変換テーブルに格納された物理アドレスのうち、選択した論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する
     処理をコンピュータに実行させることを特徴とする制御プログラム。
  7.  各記憶領域を示す論理アドレスのグループの中で、前記記憶領域を複数含む所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定し、
     特定したグループに含まれる論理アドレスを順に選択していき、
     選択した論理アドレスに対応付けられた物理アドレスを、論理アドレスと物理アドレスとの対応を表す変換テーブルから取得し、
     所定の条件を用いて、取得した物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定し、
     前記データを移動させると判定した場合は、前記取得部が取得した物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動し、
     前記変換テーブルに格納された物理アドレスのうち、選択した論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する
     ことを特徴とする制御方法。
PCT/JP2013/066625 2013-06-17 2013-06-17 情報処理装置、制御回路、制御プログラム、及び制御方法 WO2014203316A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015522392A JP5967308B2 (ja) 2013-06-17 2013-06-17 情報処理装置、制御回路、制御プログラム、及び制御方法
PCT/JP2013/066625 WO2014203316A1 (ja) 2013-06-17 2013-06-17 情報処理装置、制御回路、制御プログラム、及び制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/066625 WO2014203316A1 (ja) 2013-06-17 2013-06-17 情報処理装置、制御回路、制御プログラム、及び制御方法

Publications (1)

Publication Number Publication Date
WO2014203316A1 true WO2014203316A1 (ja) 2014-12-24

Family

ID=52104086

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/066625 WO2014203316A1 (ja) 2013-06-17 2013-06-17 情報処理装置、制御回路、制御プログラム、及び制御方法

Country Status (2)

Country Link
JP (1) JP5967308B2 (ja)
WO (1) WO2014203316A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110928806A (zh) * 2018-09-20 2020-03-27 爱思开海力士有限公司 存储器系统及其操作方法
JP2021509981A (ja) * 2018-09-12 2021-04-08 ホアウェイ・テクノロジーズ・カンパニー・リミテッド システムガベージコレクションの方法およびソリッドステートディスクにおけるガベージコレクションの方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011192260A (ja) * 2010-02-16 2011-09-29 Toshiba Corp 半導体記憶装置
JP2012068863A (ja) * 2010-09-22 2012-04-05 Toshiba Corp 半導体記憶制御装置
JP2012068765A (ja) * 2010-09-21 2012-04-05 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011192260A (ja) * 2010-02-16 2011-09-29 Toshiba Corp 半導体記憶装置
JP2012068765A (ja) * 2010-09-21 2012-04-05 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2012068863A (ja) * 2010-09-22 2012-04-05 Toshiba Corp 半導体記憶制御装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021509981A (ja) * 2018-09-12 2021-04-08 ホアウェイ・テクノロジーズ・カンパニー・リミテッド システムガベージコレクションの方法およびソリッドステートディスクにおけるガベージコレクションの方法
US11928053B2 (en) 2018-09-12 2024-03-12 Huawei Technologies Co., Ltd. System garbage collection method and method for garbage collection in solid state disk
CN110928806A (zh) * 2018-09-20 2020-03-27 爱思开海力士有限公司 存储器系统及其操作方法
CN110928806B (zh) * 2018-09-20 2023-04-07 爱思开海力士有限公司 存储器系统及其操作方法

Also Published As

Publication number Publication date
JP5967308B2 (ja) 2016-08-10
JPWO2014203316A1 (ja) 2017-02-23

Similar Documents

Publication Publication Date Title
US9928167B2 (en) Information processing system and nonvolatile storage unit
US8417878B2 (en) Selection of units for garbage collection in flash memory
KR101176702B1 (ko) 판독 실패 관리 방법 및 시스템
KR102042643B1 (ko) 비휘발성 메모리(nvm)에서 다중 네임스페이스 관리
US9367444B2 (en) Non-volatile memory device, control method for information processing device, and information processing device
US11270734B2 (en) Method for accessing shingled magnetic recording SMR disk, and server
JP2015001908A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
US10922011B2 (en) Controllers configured to perform secure deletion, key-value storage devices including said controllers, and methods of operation thereof
US10120606B2 (en) Data storage devices including storage controller circuits to select data streams based on application tags and computing systems including the same
JP2009276853A (ja) フラッシュメモリ装置
KR20170038853A (ko) 호스트-관리 비휘발성 메모리
TW202001573A (zh) 記憶系統
JP2015001909A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
JP6167646B2 (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
US11126558B2 (en) Data storage device and control method for non-volatile memory
CN108228088B (zh) 用于管理存储系统的方法和设备
JP6179355B2 (ja) 情報処理装置、データ転送制御方法及びデータ転送制御プログラム
JP5967307B2 (ja) 情報処理装置、制御回路、制御プログラム、及び制御方法
JP5967308B2 (ja) 情報処理装置、制御回路、制御プログラム、及び制御方法
CN111611178B (zh) 数据储存装置以及非挥发式存储器控制方法
JP2009259145A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP5943153B2 (ja) 情報処理装置、書き込み制御回路、書き込み制御方法、及び書き込み制御プログラム
JP6132010B2 (ja) 制御装置、制御プログラム、および制御方法
JP2017151609A (ja) ストレージ、ストレージシステム
JP2020170477A (ja) 記憶装置、その制御方法、及びプログラム

Legal Events

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

Ref document number: 13887406

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2015522392

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13887406

Country of ref document: EP

Kind code of ref document: A1