WO2014147768A1 - Control device, control program, and control method - Google Patents

Control device, control program, and control method Download PDF

Info

Publication number
WO2014147768A1
WO2014147768A1 PCT/JP2013/057909 JP2013057909W WO2014147768A1 WO 2014147768 A1 WO2014147768 A1 WO 2014147768A1 JP 2013057909 W JP2013057909 W JP 2013057909W WO 2014147768 A1 WO2014147768 A1 WO 2014147768A1
Authority
WO
WIPO (PCT)
Prior art keywords
logical
address
physical
block
data
Prior art date
Application number
PCT/JP2013/057909
Other languages
French (fr)
Japanese (ja)
Inventor
雅紀 日下田
早坂 和美
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to JP2015506463A priority Critical patent/JP6132010B2/en
Priority to PCT/JP2013/057909 priority patent/WO2014147768A1/en
Publication of WO2014147768A1 publication Critical patent/WO2014147768A1/en

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
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Definitions

  • the present invention relates to a control device, a control program, and a control method.
  • an information processing system using a non-volatile memory that operates faster than a magnetic disk is known.
  • an information processing system using a plurality of NAND flash memory devices as storage is known.
  • the NAND flash memory device is described as a NAND device.
  • a controller that reads data from a NAND device has an address conversion table that associates a logical address used for data designation by the information processing system with a physical address indicating an area of the NAND device in which data to be read is stored. Have. When the controller receives the data read request and the logical address to be read, the controller obtains a physical address associated with the received logical address from the address conversion table. The controller then accesses the area indicated by the acquired physical address and reads data from the NAND device.
  • the size of the address conversion table is proportional to the total capacity of the NAND device, it is not realistic to store the entire address conversion table in the controller for a large capacity storage. For this reason, a technique is known in which an address conversion table is stored on a NAND device, and a controller holds a part of the address conversion table.
  • the controller holds a part of the address conversion table and a conversion table tag indicating a physical address in which the address conversion table is stored.
  • the controller determines whether or not the received logical address is included in the held address conversion table.
  • the controller reads data from the NAND device using the physical address associated with the logical address.
  • the controller identifies the physical address in which the address conversion table including the received logical address is stored using the conversion table tag. In addition, the controller reads a part of the address conversion table from the NAND device using the identified physical address. Then, the controller acquires a physical address associated with the logical address from the read address conversion table, and reads data from the NAND device using the acquired physical address.
  • JP 2012-174086 A Japanese Patent No. 3251968 Japanese Patent No. 4643315
  • the controller holds a part of the address conversion table described above, if the read address does not include the logical address to be read, the address conversion table is read from the NAND device. Thereafter, data is read from the NAND device in accordance with the read address conversion table, so that there is a problem that latency when reading data from the NAND device increases.
  • the overall size of the address conversion table also increases. As a result, the probability that the logical address to be read is included in the address conversion table held by the controller is lowered, and the latency is increased.
  • the present application aims to shorten the time required for address conversion in accessing a nonvolatile memory.
  • the control device reads data from a storage device. Further, the control device stores a conversion table in which a physical number obtained by combining a physical block number and a physical page number is associated with a logical number obtained by combining a logical block number and a logical page number. Further, the control device selects one logical block number, and identifies the physical number associated with the logical number including the selected logical block number from the conversion table. In addition, the control device stores the data in the storage area indicated by the identified physical number in the storage area included in one block and indicated by the same physical page number as the logical page number included in the logical number of the data Move to.
  • control device stores a quick lookup table in which the physical block number of the block to which the data has been moved is associated with the logical block number selected by the selection unit. Then, when receiving the logical number indicating the area in which the data to be read is stored, the control device acquires the physical block number associated with the logical block number included in the received logical number from the early lookup table. Thereafter, the control device reads data stored in the area indicated by the same physical page number as the logical page number included in the received logical number, among the data stored in the block indicated by the acquired physical block number.
  • FIG. 1 is a diagram illustrating the information processing apparatus according to the first embodiment.
  • FIG. 2 is a first diagram for explaining a conventional writing process.
  • FIG. 3 is a second diagram for explaining the conventional writing process.
  • FIG. 4 is a diagram for explaining the flow of the alignment process.
  • FIG. 5 is a diagram for explaining the flow of the reading process.
  • FIG. 6 is a diagram illustrating a functional configuration of the NAND controller according to the first embodiment.
  • FIG. 7 is a diagram for explaining the conversion table tag.
  • FIG. 8 is a diagram for explaining an example of the address conversion table held by the NAND controller.
  • FIG. 9 is a diagram for explaining an example of the early lookup table.
  • FIG. 10 is a diagram for explaining the entire address conversion table.
  • FIG. 1 is a diagram illustrating the information processing apparatus according to the first embodiment.
  • FIG. 2 is a first diagram for explaining a conventional writing process.
  • FIG. 3 is a second diagram for explaining the conventional writing process.
  • FIG. 11 is a diagram for explaining the flow of address conversion using the address conversion table.
  • FIG. 12 is a diagram for explaining the flow of address conversion using the early lookup table.
  • FIG. 13 is a flowchart for explaining the flow of data read processing.
  • FIG. 14 is a flowchart for explaining the flow of data write processing.
  • FIG. 15 is a flowchart for explaining the flow of the alignment process.
  • FIG. 16 is a flowchart for explaining a first variation of the alignment process.
  • FIG. 17 is a flowchart for explaining a second variation of the alignment process.
  • FIG. 18 is a diagram illustrating a functional configuration of a NAND controller that executes alignment processing according to the frequency of occurrence of read requests and write requests.
  • FIG. 19 is a flowchart for explaining a third variation of the alignment process.
  • FIG. 20 is a diagram for explaining a functional configuration of a NAND controller in which a conversion table tag and a quick lookup table are shared.
  • FIG. 21 is a diagram for explaining the flow of the address conversion process when the conversion table tag and the early lookup table are shared.
  • FIG. 22 is a diagram for explaining the functional configuration of the NAND controller that holds a part of the early lookup table.
  • FIG. 23 is a diagram for explaining the flow of the address conversion process executed using the early lookup table tag.
  • FIG. 24 is a diagram illustrating an example of a NAND controller that executes a control program.
  • FIG. 1 is a diagram illustrating the 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 storage devices 7a to 10a.
  • the SSD 5b includes a NAND controller 6b and a plurality of storage devices 7b to 10b.
  • the NAND controller 6b and the plurality of storage devices 7b to 10b perform the same functions as the NAND controller 6a and the plurality of storage devices 7a to 10a, and the description thereof is omitted.
  • 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 respective 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 storage devices 7a to 10a. For example, the CPU 3a issues a read request in which a logical address designating data is stored to the SSD 5a. In addition, the CPU 3a issues a write request in which a logical address designating a data write destination and data to be written are stored.
  • the storage device 7a is a nonvolatile memory that stores various data. Specifically, the storage device 7a has a plurality of pages as data storage areas, and writes data in units of pages. The storage device 7a has a plurality of blocks each having a plurality of pages, and erases data in units of blocks.
  • the NAND controller 6a accesses each of the storage devices 7a to 10a, and reads and writes data. For example, the NAND controller 6a associates logical addresses used when the CPUs 3a and 3b specify storage areas in which data is stored with physical addresses indicating storage areas of the storage devices 7a to 10a in which 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 top address of each page is simply described as a logical address
  • the physical address that is the top address of each 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 the top address of each page.
  • the NAND controller 6a performs the following processing when the storage devices 7a to 10a have a plurality of blocks and each block includes 2q pages. First, the NAND controller 6a uses the lower q bits of the logical address as a logical page number for identifying a page in one logical block, and the upper p bits of the remaining logical addresses as one logical block.
  • 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 for identifying each page in one physical block.
  • the 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 block number indicating a physical page for each physical block.
  • FIG. 2 is a first diagram for explaining a conventional writing process.
  • a storage device in which the number of blocks is “8” and the number of pages in each block is “4” is described.
  • processing executed by the NAND controller having an address conversion table in which a logical block address and a physical block address are associated with each other is described.
  • the file system issues a write request for the logical page indicated by the logical page number “1” among the logical pages included in the logical block address “L4”. That is, the file system issues a write request for the logical address “L4-1”. Then, the NAND controller obtains the physical block address “P7” associated with the logical block address “L4” as shown in (B) of FIG. 2, and writes it as shown in (C) of FIG. Identify the block that contains the page of interest.
  • the NAND controller copies all data of the physical block indicated by the physical block address “P7” to the spare block.
  • the NAND controller updates the data of the physical page number “1” that is the same as the logical page number “1” that is the target of the write request with the data that is the target of the write.
  • the NAND controller updates the physical block address “P7” associated with the logical block address “L4” to the physical block address “P8” of the spare block. Then, the NAND controller erases the data of the block indicated by the physical block address “P7”.
  • FIG. 3 is a second diagram for explaining a conventional writing process.
  • the storage device in which the number of blocks is “8” and the number of pages in each block is “4” is described as in FIG.
  • the process executed by the NAND controller having the address conversion table in which the logical address and the physical address are associated is described.
  • the file system issues a write request to the logical page number “3” of the logical block address “L0”, that is, the logical address “L0-3”.
  • the NAND controller obtains the physical address “P4-3” associated with the logical address “L0-3” as shown in (G) of FIG. 3, and as shown in (H) of FIG. Identify the page where the pre-update data is stored.
  • the NAND controller updates the data of the page indicated by the physical address “P4-3” and copies it to the spare block.
  • the NAND controller updates the physical address “P4-3” associated with the logical address “L0-3” to “P8-0” as shown in (J) of FIG. To do.
  • the size of the address conversion table is proportional to the total capacity of the NAND device regardless of whether the address conversion table is stored for each block or page unit. Will increase.
  • the NAND controller 6a stores the address conversion table in the storage devices 7a to 10a and holds a part of the address conversion table. For example, in the address conversion table, a physical address physically indicating the storage area indicated by the logical address is stored in an entry associated with each logical address.
  • the NAND controller 6a includes a conversion table tag that associates a physical address in which an address conversion table for converting a logical address having a common upper i bit of a logical address into a physical address and an upper i bit of the logical address are associated with each other. Hold.
  • the NAND controller 6a acquires the physical address associated with the upper i bits of the logical address to be read or written from the conversion table tag, and from the storage area indicated by the acquired physical address, Read a part.
  • the storage area indicated by one physical address stores an address conversion table in which the physical address of the conversion destination is stored in a plurality of entries associated with the lower j bits of the logical address. Therefore, the NAND controller 6a can read the physical address of the entry associated with the lower j bits of the logical address to be read or written in the read address conversion table.
  • the upper i bits of the logical address are simply described as the upper address
  • the lower j bits are described as the lower address.
  • the NAND controller when the logical address to be processed is not included in the address conversion table to be held, the NAND controller converts the address conversion table including the logical address to be processed. Get from. Then, the logical address is converted into a physical address using the address conversion table acquired from the NAND controller, and the memory is accessed using the converted physical address.
  • the NAND controller holds a part of the address conversion table, it takes time for address conversion, and the latency of memory access increases.
  • the NAND controller 6a executes the following alignment process when a predetermined condition is met. That is, the NAND controller 6a selects a plurality of logical addresses having a common logical block address, and identifies a physical address associated with the selected logical address using the address conversion table.
  • the NAND controller 6a moves the data stored in the identified physical address from the first page included in the spare block to each page in the order of logical page numbers. That is, the NAND controller 6a aligns and moves the data so that the logical page number of each data and the physical page number of the movement destination have the same value. Then, the NAND controller 6a stores the logical block address of the aligned data and the physical block address of the block to which the data has been moved in association with each other.
  • the NAND controller 6a when the NAND controller 6a receives the logical address together with the read request, the NAND controller 6a acquires the upper bits of the received logical address, that is, the physical block address stored in association with the logical block address of the data to be read.
  • the logical page number and the physical page number of each data have the same value in the aligned block. Therefore, the NAND controller 6a acquires the physical address where the data to be read is stored by adding the logical page number of the received logical address to the acquired physical block address. Thereafter, the NAND controller 6 acquires data to be read using the acquired physical address.
  • the NAND controller 6a moves each data of the page designated by the logical address having the common logical block address to one physical block. At this time, the NAND controller 6a moves each data to a page indicated by the same physical page number as the logical page number of each data. Then, the NAND controller 6a stores a fast lookup table 13 in which a physical block address indicating a physical block that is a destination of each data is associated with a logical block address of the moved data.
  • the NAND controller 6a when receiving the logical address to be read, acquires the physical block address associated with the logical block address included in the logical address from the early lookup table 13. Then, the NAND controller 6a acquires a physical address indicating a storage area in which data to be read is stored by adding the logical page number of the received logical address to the acquired physical block address.
  • the NAND controller 6 a performs the address conversion without performing the read process of the address conversion table 20. realizable. For this reason, the NAND controller 6a can shorten the latency of the address conversion process.
  • FIG. 4 is a diagram for explaining the flow of the alignment process.
  • the storage devices 7a to 10a in which the number of blocks is “8” and the number of pages in each block are “4” are described as in FIG.
  • the NAND controller 6a confirms the fast-drawing table, and as shown in (K) in FIG. 4, the physical block address is not associated with the logical block address “L0” and is not registered or has a valid physical It is determined that the block address is not associated. In such a case, the NAND controller 6a selects the logical addresses “L0-0” to “L0-3” including the logical block address “L0”, as indicated by (L) in FIG. Further, the NAND controller 6a uses the address conversion table to convert the logical addresses “L0-0” to “L0-3” into physical addresses “P0-0”, “P7-0”, “P2-2”, “P4”. -3 ”. Then, as indicated by (M) in FIG. 4, the page indicated by each physical address is identified.
  • the NAND controller 6a moves the data of each identified page to the spare block.
  • the NAND controller 6a has the same logical page number of the logical address used when designating each data and the physical page number of the page to which the data is moved. Each data is moved so that it becomes.
  • the NAND controller 6a moves the data of the logical address “L0-0” stored in the physical address “P4-0” to the physical address “P8-0”. Further, the NAND controller 6a moves the data of the logical address “L0-1” stored in the physical address “P7-0” to the physical address “P8-1”. Further, the NAND controller 6a moves the data of the logical address “L0-2” stored in the physical address “P2-2” to the physical address “P8-2”. Further, the NAND controller 6a moves the data of the logical address “L0-3” stored in the physical address “P4-3” to the physical address “P8-3”.
  • the NAND controller 6a updates the address conversion table as indicated by (O) in FIG. 4 and also stores the logical block address “L0” and the physical address in the early lookup table as indicated by (P) in FIG.
  • the block address “P8” is stored in association with each other.
  • FIG. 5 is a diagram for explaining the flow of the reading process.
  • the storage devices 7a to 10a in which the number of blocks is “8” and the number of pages in each block is “4” are described, as in FIG.
  • the file system issues a read request to the logical address “L0-3” as indicated by (Q) in FIG.
  • the NAND controller 6a quickly sets the physical block address “P8” associated with the logical block address “L0” of the logical address “L0-3”. Get from the pull table.
  • each data is stored in the same physical page number as the logical page number of each data.
  • the NAND controller 6a has the same logical page number “3” of the logical address “L0-3” among the pages included in the block of the physical block address “P8”, as shown in FIG. Data is read from the page indicated by the physical page number “3”. As a result, even when the logical address “L0-3” is not included in the held address conversion table, the NAND controller 6a performs address conversion without reading the address conversion table from the storage devices 7a to 10a. Can do.
  • FIG. 6 is a diagram illustrating a functional configuration of the NAND controller according to the first embodiment.
  • the NAND controller 6 a includes a conversion table tag 11, an address conversion table cache 12, an early search table 13, a requester interface unit 14, and a request arbitration unit 15.
  • the NAND controller 6 a includes an address conversion control unit 16, a device access control unit 17, a data alignment control unit 18, and a garbage collection control unit 19.
  • the storage devices 7a to 10a store an address conversion table 20 and user data 21.
  • the conversion table tag 11 is a table in which an upper address is associated with a physical address in which an address conversion table for converting a logical address including the upper address into a physical address is stored.
  • FIG. 7 is a diagram illustrating a conversion table tag.
  • the conversion table tag 11 has a plurality of entries respectively associated with the upper addresses “0” to “2 i ⁇ 1” of the logical address.
  • Each entry of the translation table tag 11 includes a physical address (table PA: Physical Address) “a” to “a” that stores an address translation table for converting a logical address including the associated upper address into a physical address. “M” is stored. The values of the physical addresses “a” to “m” change to different values every time a part of the address conversion table held by the NAND controller 6a is changed.
  • the address translation table cache 12 is a part of the address translation table 20 stored on the storage devices 7a to 10a.
  • FIG. 8 is a diagram for explaining an example of the address conversion table held by the NAND controller.
  • the address conversion table cache 12 has entries associated with lower addresses “0” to “2 j ⁇ 1”. Further, the address conversion table cache 12 stores valid bits (Valid) and data PA “BA” to “BN”, which are physical addresses in which data is stored, in association with each entry.
  • the valid bit is a bit indicating whether or not the associated physical address is a valid physical address.
  • the physical address “BC” of the entry associated with the lower address “2” is a valid physical address, but the physical address of the entry associated with the lower address “1”. “BB” is not a valid physical address.
  • the NAND controller 6a holds, as the address translation table cache 12, a range specified by the physical address indicated by the translation table tag in the address translation table 20.
  • the NAND controller 6 a holds the address conversion table cache 12 stored in the physical page whose physical address is “b”.
  • the early lookup table 13 stores the logical block address and the physical block address in association with each other.
  • FIG. 9 is a diagram for explaining an example of the early lookup table.
  • the early lookup table has entries associated with logical block addresses “0” to “2 p ⁇ 1”.
  • the fast-drawing table 13 stores a registration flag and a physical block address in association with each entry.
  • the registration flag is a flag indicating whether or not the data is aligned and moved to the block indicated by the associated physical block address. When the data is aligned and moved, the flag is “1” and the data is aligned. When it is not moved, it is “0”.
  • the address conversion table 20 is an address conversion table used when converting a physical address into a logical address.
  • FIG. 10 is a diagram illustrating the entire address conversion table.
  • the address conversion table 20 is a table stored in the range of physical addresses “a” to “m” in the storage areas of the storage devices 7a to 10a.
  • the address conversion table 20 has entries associated with logical page numbers “0” to “2 j ⁇ 1” in one page, and the valid bit and each logical page number are included in each entry.
  • the physical address where the indicated data is stored is stored.
  • the physical address “0” and the low-order addresses “0” to “2 j ⁇ 1” corresponding to the logical addresses “0” to “2 j ⁇ 1” “AA” to “AN” are stored.
  • the address conversion table stored in the page indicated by the physical address “b” includes the physical address “1” corresponding to the logical address having the upper address “1” and the lower addresses “0” to “2 j ⁇ 1”. “BA” to “BN” are stored.
  • the address conversion table stored in the page indicated by the physical address “m” corresponds to the logical address having the upper address “2 i ⁇ 1” and the lower addresses “0” to “2 j ⁇ 1”.
  • Physical addresses “MA” to “MN” are stored.
  • the correspondence between the physical addresses “a” to “m” stored in the address conversion table and the higher addresses “0” to “2 i ⁇ 1” of the logical address is managed by the conversion table tag 11.
  • the requester interface unit 14 receives a read request or a write request via the I / O hub.
  • the requester interface unit 14 When receiving the read request, the requester interface unit 14 outputs the received read request to the request arbitration unit 15. Further, when the requester interface unit 14 receives data that is the target of a read request from the device access control unit 17, the requester interface unit 14 outputs the received data to the CPUs 3a and 3b that are the issuers of the read request.
  • the requester interface unit 14 when it receives a write request, it executes the following write process. For example, the requester interface unit 14 outputs a read request including the logical address stored in the received write request to the request arbitration unit 15. When the requester interface unit 14 receives the data to be read, the requester interface unit 14 updates the received data with the data to be written. The requester interface unit 14 then outputs a write request including the logical address stored in the received write request and the updated data to the request arbitration unit 15.
  • the request arbitration unit 15 arbitrates read requests and write requests from the requester interface unit 14, the data alignment control unit 18, and the garbage collection control unit 19, and executes them in the order according to the arbitration result. For example, when receiving a read request, the request arbitration unit 15 outputs a logical address to be read to the address conversion control unit 16. When the request arbitration unit 15 receives a physical address to be read from the address translation control unit 16, it issues a read request for the received physical address to the device access control unit 17.
  • the request arbitration unit 15 inquires of the address translation control unit 16 and acquires the physical address of the spare block in which no data is stored in each page. Thereafter, the request arbitration unit 15 outputs a write request for requesting writing of updated data to the device access control unit 17 for the acquired physical address. In addition, the request arbitration unit 15 outputs the logical address stored in the write request and the physical address storing the data to the address conversion control unit 16.
  • the address conversion control unit 16 converts a logical address into a physical address. For example, when receiving the logical address, the address conversion control unit 16 refers to the early lookup table 13 and identifies an entry associated with the logical block address of the received logical address. Further, the address conversion control unit 16 determines whether or not the registration flag of the identified entry is “1”.
  • the address translation control unit 16 acquires the physical block address stored in the identified entry. Further, the address conversion control unit 16 generates a physical address by adding the lower q bits of the received logical address, that is, the logical page number, to the acquired physical block address.
  • the address translation control unit 16 executes address translation processing using the address translation table. .
  • the address conversion control unit 16 acquires the physical address stored in the entry associated with the higher-order address of the received logical address among the entries of the conversion table tag 11.
  • the address conversion control unit 16 acquires a part of the address conversion table 20 by outputting the acquired physical address to the device access control unit 17. Then, the address translation control unit 16 sets a part of the received address translation table 20 as the address translation table cache 12. Then, the address translation control unit 16 acquires the physical address stored in the entry associated with the lower address of the received logical address among the entries of the address translation table cache 12. Thereafter, the address translation control unit 16 outputs the acquired physical address to the request arbitration unit 15.
  • the address conversion control unit 16 receives from the request arbitration unit 15 the logical address stored in the write request and the physical address storing the data. Then, the address translation control unit 16 acquires a part of the address translation table 20 as the address translation table cache 12 using the upper address of the received logical address. Then, the address translation control unit 16 rewrites the physical address of the entry associated with the lower address of the logical address in the acquired address translation table cache 12 with the physical address received from the request arbitration unit 15.
  • the address translation control unit 16 outputs the address translation table cache 12 to the device access control unit 17 and instructs rewriting of the address translation table 20 stored in the storage devices 7a to 10a.
  • the address translation control unit 16 updates the translation table tag 11 so that the physical address to which the address translation table cache 12 is written back is associated with the upper bits of the logical address corresponding to the written address translation table cache 12. .
  • the address conversion control unit 16 sets the registration flag of the entry associated with the logical block address of the received logical address among the entries of the early lookup table 13 to “0”. That is, the address translation control unit 16 invalidates the corresponding entry among the entries in the fast-drawing table 13 when the aligned data is moved to another physical block due to data writing.
  • FIG. 11 is a diagram for explaining the flow of address conversion using the address conversion table.
  • the address conversion control unit 16 when receiving the logical address, the address conversion control unit 16, as shown in (S) in FIG. 11, of the entries associated with the upper address of the received logical address among the entries of the conversion table tag 11. Get physical address. Then, since the address translation control unit 16 obtains the physical address “b”, the address translation table stored in the physical address “b” is obtained as the address translation table cache 12 as shown in FIG. To do.
  • the address translation control unit 16 stores the physical stored in the entry associated with the lower address of the received logical address among the entries of the address translation table cache 12.
  • the address “BC” is acquired.
  • the address translation control unit 16 outputs the acquired physical address “BC” to the request arbitration unit 15 as a translation result, as indicated by (V) in FIG.
  • FIG. 12 is a diagram for explaining the flow of address conversion using the early lookup table.
  • the address translation control unit 16 selects an entry associated with the logical block address that is the upper p bits of the received logical address from among the entries of the early lookup table 13. Identify.
  • the address translation control unit 16 acquires the physical block address “B” stored in the identified entry.
  • the address conversion control unit 16 uses the logical page number that is the lower q bits of the received logical address as the physical page number, and the physical block address “ It is added to the lower part of “B”. As a result, the address conversion control unit 16 performs address conversion without reading the address conversion table from the storage devices 7a to 10a even when the address conversion table for converting the received logical address to the physical address is not held. be able to.
  • the device access control unit 17 executes data write / read processing on the storage devices 7a to 10a. For example, the device access control unit 17 receives a data write request from the request arbitration unit 15 or the address translation control unit 16. In such a case, the device access control unit 17 writes the data stored in the write request to the page indicated by the physical address stored in the received write request. Then, the device access control unit 17 transmits a write completion notification to the issuer of the write request.
  • the device access control unit 17 when the device access control unit 17 receives a data read request from the request arbitration unit 15 or the address conversion control unit 16, the device access control unit 17 reads data from the page indicated by the physical address stored in the received read request. Then, the device access control unit 17 transmits the read data to the read request issuer.
  • the data alignment control unit 18 executes data alignment processing at a predetermined timing. For example, the data alignment control unit 18 executes the following processing for each logical block address “0” to “2 p ⁇ 1”. First, the data alignment control unit 18 is associated with the logical block address that is the target of the alignment process among the entries of the early lookup table 13 directly or through the request arbitration unit 15 and the address conversion control unit 16. Check the registration flag of the entry. When the registration flag is “1”, the data alignment control unit 18 checks the registration flag of the entry associated with the next logical block address.
  • the data alignment control unit 18 executes the following process. First, the data alignment control unit 18 secures a spare physical block that is a data alignment destination. For example, the data alignment control unit 18 causes the garbage collection control unit 19 to execute garbage collection to secure a spare physical block. Then, the data alignment control unit 18 indicates the data of the pages indicated by the logical page numbers “0” to “2 q ⁇ 1” as indicated by the physical page numbers “0” to “2 q ⁇ 1” of the spare physical block. Move to page.
  • the data alignment control unit 18 secures a spare physical block with the physical block address “X” in order to perform alignment processing for a certain logical block address “x”. Then, the data alignment control unit 18 issues a read request to read the data of the page indicated by the logical block address “x” and the logical page number “0”. Then, the data alignment control unit 18 issues a write request to write the read data to the page indicated by the physical block address “X” and the logical page number “0”.
  • the data alignment control unit 18 issues a read request to read the data of the page indicated by the logical block address “x” and the logical page number “1”. Then, the data alignment control unit 18 issues a write request to write the read data to the page indicated by the physical block address “X” and the logical page number “1”. By repeatedly executing such processing up to the logical page number “2 q ⁇ 1”, the data alignment control unit 18 performs alignment for data whose logical block address is “x”.
  • the data alignment control unit 18 instructs the device access control unit 17 via the request arbitration unit 15 to update the early lookup table 13. Specifically, the data alignment control unit 18 instructs to store a physical block indicating a physical block that is a data transfer destination in an entry associated with the logical block address subjected to the alignment process. As a result, the device access control unit 17 stores the physical block address that is the data transfer destination in the entry associated with the logical block address that has undergone the alignment process, and changes the registration flag to “1”.
  • the data alignment control unit 18 determines whether or not the registration flag of the entry in the early lookup table 13 associated with the next logical block address is “0”. Determine. By executing such processing for all logical block addresses, the data alignment control unit 18 can align all data.
  • the garbage collection control unit 19 executes garbage collection using a physical block in which valid data is stored in some pages as a spare block. For example, the garbage collection control unit 19 reads the address conversion table 20 and identifies physical blocks in which valid data is stored in some pages as erasure target blocks. The garbage collection control unit 19 issues a read request by designating a page storing valid data in the erasure target block, and reads the data.
  • the garbage collection control unit 19 designates a page in which valid data is not stored among the physical blocks other than the erasure target block, and writes the read data. Then, the garbage collection control unit 19 outputs to the request arbitration unit 15 an erasure request instructing erasure of data in the erasure target block. In such a case, the request arbitration unit 15 transfers an erasure request to the device access control unit 17. Then, the device access control unit 17 erases the data of the block to be erased.
  • the requester interface unit 14, the request arbitration unit 15, the address translation control unit 16, the device access control unit 17, the data alignment control unit 18, and the garbage collection control unit 19 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 conversion table tag 11, the address conversion table cache 12, and the quick lookup table 13 are information stored in a storage device such as a semiconductor memory element such as a RAM (Random Access Memory) or a flash memory.
  • a storage device such as a semiconductor memory element such as a RAM (Random Access Memory) or a flash memory.
  • FIG. 13 is a flowchart for explaining the flow of data read processing.
  • the NAND controller 6a receives a read request including a logical address from a system realized by a program executed by the CPUs 3a and 3b (step S101). Then, the NAND controller 6a searches for an entry associated with the logical block address, which is the higher-order bit of the received logical address, from among the entries in the early lookup table 13 (step S102). Then, the NAND controller 6a determines whether or not the registration flag of the searched entry is “1” (step S103).
  • the NAND controller 6a is an entry associated with the higher-order address of the received logical address among the entries of the conversion table tag 11. Is searched (step S104). Further, the NAND controller 6a acquires a part of the address conversion table 20 as the address conversion table cache 12 using the physical address stored in the searched entry. Then, the NAND controller 6a searches for the entry associated with the lower address of the received logical address among the obtained entries of the address translation table cache 12 (step S105).
  • the NAND controller 6a determines whether or not the valid bit of the searched entry is “1” (step S106). If the valid bit of the searched entry is not “1” (No at Step S106), the NAND controller 6a notifies the system of an address exception error notification (Step S107), and ends the processing abnormally. On the other hand, if the valid bit of the searched entry is “1” (Yes at Step S106), the NAND controller 6a converts the received logical address into a physical address stored in the searched entry (Step S108).
  • the NAND controller 6a issues a read request (Read) including the acquired physical address (Step S109).
  • the read data is returned to the system (step S110), and the process is terminated.
  • the NAND controller 6a skips the processes of Steps S104 to S106.
  • the NAND controller 6a converts the logical address into a physical address that combines the physical block address stored in the searched entry and the logical page number of the received logical address (step S108).
  • FIG. 14 is a flowchart for explaining the flow of data write processing.
  • the NAND controller 6a receives a write request including a logical address from the system (step S200). Then, the NAND controller 6a searches for an entry associated with the logical block address, which is the higher-order bit of the received logical address, among the entries in the early lookup table 13 (step S201). Then, the NAND controller 6a determines whether or not the registration flag of the searched entry is “1” (step S202).
  • the NAND controller 6a if the registration flag of the searched entry is not “1” (No at Step S202), the NAND controller 6a has an entry associated with the higher-order address of the received logical address among the entries of the conversion table tag 11. Is searched (step S203). Further, the NAND controller 6a acquires a part of the address conversion table 20 as the address conversion table cache 12 using the physical address stored in the searched entry. Then, the NAND controller 6a searches for the entry associated with the lower address of the received logical address among the obtained entries of the address translation table cache 12 (step S204).
  • the NAND controller 6a determines whether or not the valid bit of the searched entry is “1” (step S205). If the valid bit is “1” (Yes at Step S205), the NAND controller 6a converts the received logical address into a physical address stored in the searched entry (Step S206). On the other hand, if the registration flag of the searched entry is “1” (Yes at step S202), the NAND controller 6a skips the processing of steps S203 to S205. Then, the NAND controller 6a converts the logical address into a physical address that combines the physical block address stored in the searched entry and the logical page number of the received logical address (step S206).
  • the NAND controller 6a issues a read request to the physical page indicated by the acquired physical address (step S207), and updates the read data with the write data (step S208). Then, the NAND controller 6a issues an updated data write request (Write) to the new physical page (step S209).
  • the NAND controller 6a updates the physical address associated with the logical address of the write request received from the system in the address conversion table cache 12 to the physical address indicating the physical page to which data is newly written. Then, the NAND controller 6a writes back the address conversion table cache 12 to the storage devices 7a to 10a, and updates the address conversion table 20 (step S210).
  • the NAND controller 6a updates the conversion table tag 11 (step S211). Specifically, the NAND controller 6a updates the physical address of the entry associated with the upper bits of the logical address received from the address system to the physical address written back to the address conversion table cache 12. Next, the NAND controller 6a invalidates the entry by setting the registration flag of the entry associated with the logical block address of the received logical address to “0” among the entries of the early lookup table 13 (step S212). . Thereafter, the NAND controller 6a returns a completion notification to the system (step S213) and ends the process.
  • the NAND controller 6a performs steps S206 to S208. Skip processing.
  • FIG. 15 is a flowchart for explaining the flow of the alignment process.
  • the NAND controller 6a executes the alignment process shown in FIG. 15 in response to a predetermined time interval or an execution instruction from the system.
  • the NAND controller 6a searches for an entry associated with the logical block address “0” among the entries in the quick lookup table 13 (step S301). Then, the NAND controller 6a determines whether or not the registration flag of the searched entry is “0” (step S302).
  • the NAND controller 6a executes the alignment process of the subsequent Steps S303 to S307.
  • the NAND controller 6a secures a spare physical block for alignment (step S303).
  • the NAND controller 6a issues a read request to the page having the logical block address “0” and the logical page number “0” (step S304).
  • the NAND controller 6a writes the read data to the physical page indicated by the same physical page number as the logical page number “0” among the physical pages of the spare physical block (step S305).
  • the NAND controller 6a determines whether or not the data has been aligned for all the logical page numbers having the logical block address “0” (step S306). If the NAND controller 6a has not aligned the data for all the logical page numbers having the logical block address “0” (No in step S306), the NAND controller 6a performs other logical page numbers (for example, logical page number “1”). The process of step S304 is performed.
  • the NAND controller 6a updates the early lookup table 13 (Step S307). Specifically, the NAND controller 6a stores the physical block address of the spare physical block in the entry associated with the logical block address “0” among the entries of the fast-drawing table 13, and sets the registration flag to “1”. To do.
  • the NAND controller 6a determines whether or not the alignment process has been executed for all the logical block addresses (step S308). Then, if the alignment process has not been performed for all logical block addresses (No at Step S308), the NAND controller 6a performs the process at Step S301 for the next logical block address (for example, logical block address “1”). To do. If the registration flag of the searched entry is not “0” (No at Step S302), the NAND controller 6a skips the alignment process and executes the process at Step S308 because the alignment process has already been performed. .
  • the NAND controller 6a stores the address conversion table cache 12 in which the physical block address and the physical page number are associated with the logical address including the logical block address and the logical page number.
  • the NAND controller 6a selects one logical block number, and acquires a physical address associated with the logical address including the selected logical block number from the address conversion table cache 12.
  • the NAND controller 6a converts the physical page data indicated by the acquired physical address into the physical page included in one physical block, and has the same physical page number as the logical page number included in the logical address of each data. Move to the indicated physical page.
  • the NAND controller 6a associates the physical block address of the physical block to which the data has been moved with the selected logical block number and stores them in the early lookup table 13.
  • the NAND controller 6a when receiving the logical address indicating the logical page in which the data to be read is stored, acquires the physical block address associated with the logical block address included in the logical address from the early lookup table 13. Then, the NAND controller 6a, among the physical pages included in the physical block indicated by the physical block address acquired from the quick lookup table 13, has the physical page number indicated by the same physical page number as the logical page number included in the received logical address. Read data from the page.
  • the NAND controller 6a can reduce the time required for address conversion even when the address conversion table 20 for converting a logical address indicating a logical page storing read target data into a physical address is not held. Can do. As a result, the NAND controller 6a can improve the latency of access to the storage devices 7a to 10a.
  • the holding ratio becomes relatively small as the size of the address conversion table increases, so the probability that a logical address hits the cache deteriorates, and the address conversion becomes difficult.
  • the time required will increase.
  • the size of the conversion table tag also increases. Therefore, a technique for preventing an increase in circuit scale by caching a part of the conversion table tag can be considered.
  • a technique for preventing an increase in circuit scale by caching a part of the conversion table tag can be considered.
  • a plurality of accesses are performed when data is read from or written to the storage device. As a result, latency when accessing the storage device increases.
  • the NAND controller 6a can always perform address conversion on the logical addresses subjected to the alignment processing. As a result, the NAND controller 6a can improve read performance and write performance for the storage devices 7a to 10a.
  • the quick lookup table 13 can be realized with the same number of entries as the number of physical blocks included in the storage devices 7a to 10a.
  • the size of the quick lookup table 13 is much smaller than when the number of entries equal to the number of physical pages included in the storage devices 7a to 10a is set in the address translation table 20. Therefore, the NAND controller 6a can improve the read performance and the write performance for the storage devices 7a to 10a without increasing the circuit scale.
  • the NAND controller 6a uses the upper bits of the logical address as the logical block address and the lower bits of the logical address as the logical page number. Also, the NAND controller 6a uses the upper bits of the physical address as the physical block address and the lower bits of the physical address as the physical page number. Therefore, the NAND controller 6a can make any number of logical pages a constituent unit of the early lookup table. The NAND controller 6a can easily perform address conversion without performing complicated processing.
  • the NAND controller 6a duplicates data stored in a physical block including an unused physical page to another block, and erases data in the physical block including an unused physical page. 19 Since the NAND controller 6a uses the physical block from which the garbage collection control unit 19 has erased data as a spare block, the NAND controller 6a efficiently performs data alignment processing even when the free space of the storage devices 7a to 10a is small. be able to.
  • the NAND controller 6a described above targets all the entries in the early lookup table 13 when executing the data alignment process.
  • the embodiment is not limited to this.
  • the NAND controller 6a may perform alignment control for only some of the logical block addresses among all the logical block addresses in one alignment process.
  • the NAND controller 6a executes the alignment process for each entry of the early lookup table 13, and stores a last logical block address for which the alignment process has been performed when a predetermined time has elapsed. Then, the NAND controller 6a may restart the alignment process from the logical block address next to the stored logical block address when performing the next alignment process.
  • FIG. 16 is a flowchart for explaining a first variation of the alignment process.
  • steps S403 to S409 execute the same processes as steps S301 to S307 shown in FIG.
  • the NAND controller 6a loads the end address, which is the logical block address that was last subjected to the alignment process in the previous alignment process (step S401).
  • the NAND controller 6a sets a value obtained by adding 1 to the loaded end address as the start address of the alignment process (step S402).
  • the NAND controller 6a executes the process of step S403 from the start address.
  • the NAND controller 6a determines whether or not a predetermined time has elapsed since the start of the alignment process (step S410). If the predetermined time has elapsed (Yes at Step S410), the NAND controller 6a stores the last logical block address on which the alignment process has been executed as an end address (Step S411), and ends the process. On the other hand, if the predetermined time has not elapsed since the start of the alignment process (No at Step S410), the NAND controller 6a executes the process at Step S403 for the next logical block address.
  • the NAND controller 6a divides each entry in the quick-draw table 13 into a plurality of groups, and assigns a group number (group number) to each group.
  • the NAND controller 6a may perform the alignment process only for one group in one alignment process.
  • FIG. 17 is a flowchart for explaining the second variation of the alignment process.
  • steps S503 to S509 are the same as steps S301 to S307 shown in FIG.
  • the NAND controller 6a loads the group number that was last subjected to the alignment process in the previous alignment process (step S501).
  • the NAND controller 6a sets the group number next to the loaded group number as the target of the alignment process (step S502).
  • the NAND controller 6a executes the process of step S503 for the first entry to which the group number that is the target of the alignment process is assigned.
  • the NAND controller 6a determines whether or not the alignment process has been performed on all the entries to which the group number to be subjected to the alignment process is assigned among the entries in the quick-draw table 13. (Step S510). If the NAND controller 6a performs the alignment process for all the entries to which the group number to be the alignment process is assigned (Yes in step S510), the NAND controller 6a stores the group number for which the alignment process has been performed (step S511). The process is terminated.
  • the NAND controller 6a executes the process of step S503 for the next logical block address. To do.
  • the NAND controller 6a can shorten the processing time required for one alignment process when the alignment process is executed for each part of the logical block address. As a result, the NAND controller 6a can make scheduling of the alignment process flexible.
  • the NAND controller 6a counts the frequency of occurrence of read requests or write requests for each logical block address, and executes alignment processing for logical block addresses with a high frequency of read requests and a low frequency of write requests. May be.
  • the NAND controller 6c that executes the alignment process for a group of logical block addresses that have a high frequency of read requests and a low frequency of write requests will be described.
  • FIG. 18 is a diagram illustrating a functional configuration of a NAND controller that executes alignment processing according to the frequency of occurrence of read requests and write requests.
  • the NAND controller 6c includes a data alignment control unit 18a and a request counter 22.
  • the request counter 22 acquires the contents of the read request and the write request received by the requester interface unit 14 via the I / O hub 4.
  • the request counter 22 counts the number of read requests and the number of write requests received by the requester interface unit 14 for each group including a plurality of logical block addresses.
  • the request counter 22 when the request counter 22 receives the notification of execution of the alignment process from the data alignment control unit 18a, the request counter 22 calculates a value obtained by subtracting the number of write requests from the number of read requests counted for each group. Then, the request counter 22 notifies the data alignment control unit 18a of the logical block address included in the group having the largest calculated value. That is, the request counter 22 notifies the data alignment control unit 18a of logical block addresses included in a group having a large number of read requests and a small number of write requests.
  • the data alignment control unit 18a notifies the request counter 22 of an alignment process execution notification when executing the alignment process in response to a predetermined time interval or an alignment process execution request from the system.
  • the data alignment control unit 18a receives the logical block address from the request counter 22, the data alignment control unit 18a executes alignment processing on the received logical block address in the same manner as the data alignment control unit 18.
  • the data alignment control unit 18a and the request counter 22 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.
  • ASIC Application Specific Integrated Circuit
  • FPGA Field Programmable Gate Array
  • CPU Central Processing Unit
  • MPU Micro Processing Unit
  • FIG. 19 is a flowchart for explaining a third variation of the alignment process.
  • steps S603 to S609 are the same as the processes in steps S301 to S307 shown in FIG.
  • the NAND controller 6c subtracts the number of write requests from the number of read requests for each group (step S601). Next, the NAND controller 6c sets the group with the largest subtraction result value as the target of the current alignment process (step S602). Then, the NAND controller 6c executes the process of step S603 for the logical addresses included in the group subjected to the alignment process. Further, when executing the process of step S609, the NAND controller 6c determines whether or not the alignment process has been executed for all the logical block addresses in the group (step S610).
  • step S610 if the NAND controller 6c has performed the alignment process for all the logical block addresses in the group (Yes at step S610), the process ends. On the other hand, if the NAND controller 6c has not performed the alignment process for all the logical block addresses in the group (No in step S610), the NAND controller 6c executes the process of step S603 for the next logical block address in the group.
  • the NAND controller 6c counts the number of read requests and the number of write requests for each logical block address. Then, the NAND controller 6c executes the alignment process for the logical block address having the largest number obtained by subtracting the number of write requests from the number of read requests. For this reason, the NAND controller 6c can execute an effective alignment process.
  • the NAND controller 6c preferentially aligns the logical block addresses with a large number of read requests and a small number of write requests, so that an efficient alignment process can be executed.
  • the logical unit and the physical block are the data units registered in the quick-drawing table 13, but the embodiment is not limited to this. That is, the NAND controllers 6a to 6c may divide the logical address and the physical address in arbitrary data units and register them in the early lookup table 13.
  • the NAND controllers 6a to 6c may associate the upper i bits of the logical address with the upper i bits of the physical address as the fast lookup table 13. Further, when such division is performed, the conversion table tag 11 and the quick lookup table 13 may be shared.
  • FIG. 20 is a diagram for explaining a functional configuration of a NAND controller in which a conversion table tag and a quick lookup table are shared.
  • the NAND controller 6d includes a quick lookup table 13a and an address conversion control unit 16a.
  • the early lookup table 13a has a plurality of entries associated with upper i bits of the logical address. In the same manner as the early lookup table 13, the early lookup table 13a stores each entry in association with a registration flag and the higher-order i bits of the physical address.
  • the fast lookup table 13 a is a physical address in which an address translation table for converting a logical address including a higher address associated with each entry into a physical address is stored in each entry. Is stored further.
  • the address translation control unit 16a performs the same processing as the address translation control unit 16. At this time, the address conversion control unit 16 a uses the early lookup table 13 a as the translation table tag 11 and the early lookup table 13. Hereinafter, the flow of address conversion processing executed by the address conversion control unit 16a will be described with reference to FIG.
  • FIG. 21 is a diagram for explaining the flow of the address conversion process when the conversion table tag and the early lookup table are shared.
  • each entry of the early lookup table 13a is associated with upper addresses “0” to “2 i ⁇ 1” which are upper i bits of the logical address.
  • each entry of the fast-drawing table 13a stores “A” to “M” that are higher-order i bits of the physical address.
  • Each entry of the early lookup table 13a stores physical addresses “a” to “m” in which an address conversion table for converting a logical address including a corresponding higher address into a physical address is stored.
  • the address translation control unit 16a when the address translation control unit 16a receives the logical address, as shown in FIG. 21 (a), the entry associated with the higher order address of the received logical address among the entries of the early lookup table 13a. Identify. For example, in the example shown in FIG. 21, the address translation control unit 16a identifies an entry associated with the upper address “1”.
  • the address conversion control unit 16a executes the following process when the registration flag of the identified entry is “0”. First, the address translation control unit 16a acquires the physical address “b” stored in the identified entry, and as shown in FIG. 21B, the address translation table 20 stored in the physical address “b”. To get a part of. Then, the address translation control unit 16a sets a part of the acquired address translation table 20 as the address translation table cache 12 as shown in (c) of FIG.
  • the address translation control unit 16a identifies an entry associated with the lower address of the received logical address among the entries of the address translation table cache 12. Then, the address translation control unit 16a outputs the physical address “BC” stored in the identified entry to the request arbitration unit 15 as a translated physical address.
  • the address conversion control section 16a for example, if the upper address of the logical address received is "2 i -1", of each entry in the fast lookup table 13a, the upper address "2 i -1" Identifies the associated entry. Then, since the registration flag of the identified entry is “1”, the address translation control unit 16a acquires the upper i bits “M” of the physical address stored in the identified entry. Then, the address translation control unit 16a outputs, to the request arbitration unit 15, a physical address having the acquired “M” as the upper i bits and the lower address of the received logical address as the lower j bits as the translated physical address. .
  • the address conversion control unit 16a is an electronic circuit.
  • an integrated circuit such as an ASIC or FPGA, or a CPU or MPU is applied.
  • the fast-drawing table 13a is information stored in a storage device such as a semiconductor memory.
  • the NAND controller 6d stores the address conversion table cache 12.
  • the NAND controller 6d has a fast-drawing table 13a having an entry in which the upper bits of the logical address, the registration flag, and the upper bits of the physical address indicating the physical storage area to which data is arranged are associated with each other.
  • the NAND controller 6d stores, in each entry, a physical address in which a conversion table for converting a logical address including the upper bits of the logical address of the same entry into a physical address is stored in the fast-draw table 13a.
  • the NAND controller 6d acquires the upper bits from the logical address to be read, and if the registration flag associated with the acquired upper bits is “0”, the physical address associated with the acquired upper bits. Is used to obtain the address conversion table. In addition, when the registration flag associated with the acquired upper bit is “1”, the NAND controller 6d acquires the upper bit of the physical address associated with the acquired upper bit. Then, the NAND controller 6d reads data from the page indicated by the physical address obtained by adding the lower bits of the logical address to be read to the acquired upper bits.
  • the NAND controller 6d integrates the conversion table tag 11 and the quick lookup table 13a into one table.
  • the NAND controller 6d can reduce the latency required for table search and update, and improve the access performance to the storage devices 7a to 10a.
  • the NAND controller 6d reduces the storage capacity for storing the conversion table tag 11 and the fast-drawing table 13a, the circuit scale can be reduced.
  • the quick-drawing table is installed on the NAND controllers 6a to 6d
  • the embodiments are not limited to this. Therefore, in the following fourth embodiment, a NAND controller 6e will be described in which the early lookup table 13a is installed on the storage devices 7a to 10a and a part of the early lookup table 13a is held as the early lookup table cache 13b.
  • FIG. 22 is a diagram for explaining the functional configuration of the NAND controller that holds a part of the quick lookup table.
  • the NAND controller 6e shown in FIG. 22 the same functional configuration as that of the NAND controller 6a shown in FIG.
  • the NAND controller 6e includes an early lookup table tag 11a, an address translation control unit 16b, and an early lookup table cache 13b.
  • the storage devices 7a to 10a store the quick-drawing table 13a.
  • the early lookup table tag 11a associates an index that is the upper k bits of the upper address of the logical address with a physical address that stores the early lookup table of each logical address including the upper address including the corresponding index.
  • the early lookup table cache 13b is a part of the early lookup table 13a stored in the storage devices 7a to 10a.
  • FIG. 23 is a diagram for explaining the flow of the address conversion process executed using the early lookup table tag.
  • the address translation control unit 16b receives the logical address that is the target of the read request, as shown in (f) of FIG. 23, the fast lookup table tag 11a using the index that is the upper k bits of the received logical address. Search for. Then, the address conversion control unit 16b acquires the physical address “z” in which the fast lookup table for performing the fast lookup of the higher address included in the received logical address is stored from the fast lookup table tag 11a.
  • the address conversion control unit 16b acquires a part of the quick lookup table 13a stored in the page indicated by the acquired physical address “z”. As shown in (h), the fast-drawing table cache 13b is assumed. Next, as shown in (i) of FIG. 23, the address translation control unit 16b selects an entry associated with the upper address of the logical address that is the target of the read request among the entries in the early lookup table cache 13b. Identify.
  • the address translation control unit 16b acquires the physical address “f” stored in the identified entry. Further, the address translation control unit 16b acquires a part of the address translation table 20 stored in the physical address “f” as shown in (j) of FIG. Then, the address conversion control unit 16b sets a part of the acquired address conversion table 20 as the address conversion table cache 12 as shown in (k) of FIG.
  • the address translation control unit 16b identifies an entry associated with the lower address of the received logical address among the entries of the address translation table cache 12. Then, the address translation control unit 16b outputs the physical address “BC” stored in the identified entry to the request arbitration unit 15 as a translated physical address, as shown in (m) of FIG.
  • the address conversion control unit 16b is an electronic circuit.
  • an integrated circuit such as an ASIC or FPGA, or a CPU or MPU is applied.
  • the early lookup table tag 11a and the early lookup table cache 13b are information stored in a storage device such as a semiconductor memory.
  • the NAND controller 6e includes the early lookup table tag 11a in which an index is associated with a physical address indicating a page storing a fast lookup table for a logical address including an upper address including the index.
  • the NAND controller 6e stores a part of the early lookup table 13a as the early lookup table cache 13b.
  • the NAND controller 6e acquires the physical address associated with the index of the logical address to be read from the early lookup table tag 11a. Thereafter, the NAND controller 6e uses the acquired physical address to hold a part of the early lookup table 13a as the early lookup table cache 13b. In addition, the NAND controller 6e acquires the upper bits of the physical address associated with the upper bits of the logical address to be read from the held early lookup table cache 13b.
  • the NAND controller 6e holds the early lookup table 13a on the storage devices 7a to 10a and holds a part of the early lookup table 13a. Therefore, the NAND controller 6e uses the early lookup table even when the capacity of the early lookup table 13a increases as a result of the increase in the capacity of the storage devices 7a to 10a and the increase in the capacity of the address conversion table. Address translation can be performed.
  • the size of the quick lookup table 13a can be within, for example, about 1/100 to 1/1000 of the size of the address conversion table 20.
  • the NAND controller 6e does not significantly reduce the cache hit rate of the early lookup table even when a part of the early lookup table 13a is held as the early lookup table cache 13b. Therefore, the NAND controller 6e can prevent an increase in time required for address conversion.
  • the NAND controller 6a described above performs data alignment processing for each logical block in accordance with the physical blocks of the storage devices 7a to 10a.
  • the embodiment is not limited to this. That is, the NAND controller 6a does not need to adjust the size of the logical block to the physical block of the storage devices 7a to 10a, and can execute the data alignment process for the logical block of any size.
  • the NAND controller 6a may use a continuous logical page smaller than a physical block of about several pages as a unit of alignment processing.
  • the NAND controller 6a can also execute data alignment processing in units of logical blocks each having a size that is as large as a plurality of physical blocks. That is, the NAND controller 6a can divide the logical address into an arbitrary number of bits when dividing the logical address into the logical block address and the logical page address.
  • the NAND controllers 6a to 6e described above execute data write processing accompanying data movement when executing the alignment processing.
  • the NAND controllers 6a to 6e may perform alignment processing in consideration of a data invalidity notification command called Trim. For example, the NAND controllers 6a to 6e may avoid alignment processing for data that is not actually used by excluding pages that are targets of Trim from management targets.
  • the NAND controller 6a checks the early lookup table 13, and the registration flag of the entry corresponding to the logical block address included in the logical address is “ In the case of “1”, the address conversion using the early lookup table 13 was performed. In addition, when the registration flag of the corresponding entry is “0”, the NAND controller 6a executes the address conversion process using the address conversion table.
  • the NAND controller 6a executes the address conversion process using the quick lookup table 13 and the address conversion process using the address conversion table in parallel, and when the address conversion is completed in either process, the other You may cancel the process.
  • FIG. 24 is a diagram illustrating an example of a NAND controller that executes a control program.
  • the NAND controller 6 f includes a CPU (Central Processing Unit) 30 and a device access control unit 35.
  • the CPU 30 is connected to the memory device 6g.
  • CPU Central Processing Unit
  • a conversion table tag 11 In the memory device 6g, a conversion table tag 11, an address conversion table cache 12, a quick lookup table 13, and a control program 36 are stored in advance.
  • the address translation table 20 and the user data 21 are stored in advance in the storage devices 7a to 10a.
  • the control program 36 functions as follows. That is, the control program 36 functions as an address translation control process 31, a request arbitration process 32, a data alignment control process 33, and a garbage collection control process 34.
  • the address translation control process 31, the request arbitration process 32, and the data alignment control process 33 exhibit the same functions as the address translation control unit 16, the request arbitration unit 15, and the data alignment control unit 18 shown in FIG.
  • the garbage collection control process 34 exhibits the same function as the garbage collection control unit 19 shown in FIG.
  • control program 36 is not necessarily stored in the memory device 6g from the beginning.
  • 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.
  • FD Flexible Disk
  • CD Compact Disk
  • DVD Digital Versatile Disk
  • magneto-optical disk and IC card.
  • the NAND controller 6f may solve the CPUs 3a and 3b to acquire and execute each program from these portable physical media. Further, each program stored in another computer or a server device may be acquired and executed via a public line, the Internet, a LAN, 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)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

A NAND controller (6a) selects one logical block number and identifies, in an address conversion table cache (12), a physical address associated with the logical address containing the selected logical block number. In addition, the NAND controller (6a) moves each instance of data stored in a page indicated by the identified physical address to a physical page which is contained in one physical block and the physical page number of which is identical to the logical page number of each instance of data. In addition, the NAND controller (6a) associates the selected physical block number and the physical block number of the physical block to which the data has been moved, and stores these in a quick-reference table (13).

Description

制御装置、制御プログラム、および制御方法Control device, control program, and control method
 本発明は、制御装置、制御プログラム、および制御方法に関する。 The present invention relates to a control device, a control program, and a control method.
 従来、磁気ディスクよりも高速に動作する不揮発性メモリを用いた情報処理システムが知られている。このような情報処理システムの一例として、複数のNANDフラッシュメモリデバイスをストレージとして使用する情報処理システムが知られている。なお、以下の説明では、NANDフラッシュメモリデバイスをNANDデバイスと記載する。 Conventionally, an information processing system using a non-volatile memory that operates faster than a magnetic disk is known. As an example of such an information processing system, an information processing system using a plurality of NAND flash memory devices as storage is known. In the following description, the NAND flash memory device is described as a NAND device.
 例えば、NANDデバイスからデータを読み出すコントローラは、情報処理システムがデータの指定に用いる論理アドレスと、読み出し対象となるデータが格納されたNANDデバイスの領域を示す物理アドレスとを対応付けたアドレス変換テーブルを有する。また、コントローラは、データの読み出し要求と読み出し対象の論理アドレスとを受信すると、受信した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブルから取得する。そして、コントローラは、取得した物理アドレスが示す領域にアクセスして、NANDデバイスからデータの読み出しを行う。 For example, a controller that reads data from a NAND device has an address conversion table that associates a logical address used for data designation by the information processing system with a physical address indicating an area of the NAND device in which data to be read is stored. Have. When the controller receives the data read request and the logical address to be read, the controller obtains a physical address associated with the received logical address from the address conversion table. The controller then accesses the area indicated by the acquired physical address and reads data from the NAND device.
 ここで、アドレス変換テーブルのサイズは、NANDデバイスの総容量に比例するので、大容量のストレージについて、アドレス変換テーブルの全てをコントローラに記憶させるのは、現実的ではない。このため、アドレス変換テーブルをNANDデバイス上に格納し、コントローラがアドレス変換テーブルの一部を保持する技術が知られている。 Here, since the size of the address conversion table is proportional to the total capacity of the NAND device, it is not realistic to store the entire address conversion table in the controller for a large capacity storage. For this reason, a technique is known in which an address conversion table is stored on a NAND device, and a controller holds a part of the address conversion table.
 例えば、コントローラは、アドレス変換テーブルの一部と、アドレス変換テーブルが格納された物理アドレスを示す変換テーブルタグとを保持する。そして、コントローラは、読み出し要求と論理アドレスとを受信すると、保持するアドレス変換テーブルに受信した論理アドレスが含まれるか否かを判定する。そして、コントローラは、保持するアドレス変換テーブルに受信した論理アドレスが含まれている場合は、論理アドレスに対応付けられた物理アドレスを用いて、NANDデバイスからデータの読み出しを行う。 For example, the controller holds a part of the address conversion table and a conversion table tag indicating a physical address in which the address conversion table is stored. When receiving the read request and the logical address, the controller determines whether or not the received logical address is included in the held address conversion table. When the received logical address is included in the held address conversion table, the controller reads data from the NAND device using the physical address associated with the logical address.
 一方、コントローラは、保持するアドレス変換テーブルに受信した論理アドレスが含まれていない場合は、変換テーブルタグを用いて、受信した論理アドレスを含むアドレス変換テーブルが記憶された物理アドレスを識別する。また、コントローラは、識別した物理アドレスを用いて、NANDデバイスからアドレス変換テーブルの一部を読み出す。そして、コントローラは、読み出したアドレス変換テーブルから、論理アドレスに対応付けられた物理アドレスを取得し、取得した物理アドレスを用いて、NANDデバイスからデータの読み出しを行う。 On the other hand, when the received logical address is not included in the held address conversion table, the controller identifies the physical address in which the address conversion table including the received logical address is stored using the conversion table tag. In addition, the controller reads a part of the address conversion table from the NAND device using the identified physical address. Then, the controller acquires a physical address associated with the logical address from the read address conversion table, and reads data from the NAND device using the acquired physical address.
特開2012-174086号公報JP 2012-174086 A 特許第3251968号公報Japanese Patent No. 3251968 特許第4643315号公報Japanese Patent No. 4643315
 しかしながら、上述したアドレス変換テーブルの一部をコントローラが保持する技術では、保持するアドレス変換テーブルに読み出し対象の論理アドレスが含まれていないと、アドレス変換テーブルをNANDデバイスから読み出す。その後、読み出したアドレス変換テーブルに従って、NANDデバイスからデータの読み出しを行うので、NANDデバイスからデータを読み出す際のレイテンシが増加するという問題がある。 However, in the technique in which the controller holds a part of the address conversion table described above, if the read address does not include the logical address to be read, the address conversion table is read from the NAND device. Thereafter, data is read from the NAND device in accordance with the read address conversion table, so that there is a problem that latency when reading data from the NAND device increases.
 また、NANDデバイスの容量が増大すると、アドレス変換テーブル全体の大きさも増大する。この結果、コントローラが保持するアドレス変換テーブルに読み出し対象の論理アドレスが含まれる確率が低くなるので、レイテンシが増加してしまう。 Also, as the capacity of the NAND device increases, the overall size of the address conversion table also increases. As a result, the probability that the logical address to be read is included in the address conversion table held by the controller is lowered, and the latency is increased.
 1つの側面では、本願は、不揮発性メモリに対するアクセスにおいて、アドレス変換に要する時間の短縮を目的とする。 In one aspect, the present application aims to shorten the time required for address conversion in accessing a nonvolatile memory.
 1つの側面では、記憶装置からデータを読み出す制御装置である。また、制御装置は、論理ブロック番号と論理ページ番号とを組み合わせた論理番号に、物理ブロック番号と物理ページ番号とを組み合わせた物理番号を対応付けた変換テーブルを記憶する。また、制御装置は、論理ブロック番号を1つ選択し、選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を変換テーブルから識別する。また、制御装置は、識別した物理番号が示す記憶領域のデータを、1つのブロックに含まれる記憶領域であって、データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させる。また、制御装置は、データを移動させたブロックの物理ブロック番号と、選択部が選択した論理ブロック番号とを対応付けた早引きテーブルを記憶する。そして、制御装置は、読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を早引きテーブルから取得する。その後、制御装置は、取得した物理ブロック番号が示すブロックに格納されたデータのうち、受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す。 In one aspect, the control device reads data from a storage device. Further, the control device stores a conversion table in which a physical number obtained by combining a physical block number and a physical page number is associated with a logical number obtained by combining a logical block number and a logical page number. Further, the control device selects one logical block number, and identifies the physical number associated with the logical number including the selected logical block number from the conversion table. In addition, the control device stores the data in the storage area indicated by the identified physical number in the storage area included in one block and indicated by the same physical page number as the logical page number included in the logical number of the data Move to. In addition, the control device stores a quick lookup table in which the physical block number of the block to which the data has been moved is associated with the logical block number selected by the selection unit. Then, when receiving the logical number indicating the area in which the data to be read is stored, the control device acquires the physical block number associated with the logical block number included in the received logical number from the early lookup table. Thereafter, the control device reads data stored in the area indicated by the same physical page number as the logical page number included in the received logical number, among the data stored in the block indicated by the acquired physical block number.
 1つの側面では、不揮発性メモリに対するアクセスにおいて、アドレス変換に要する時間を短縮できる。 In one aspect, it is possible to shorten the time required for address conversion in accessing a nonvolatile memory.
図1は、実施例1に係る情報処理装置を説明する図である。FIG. 1 is a diagram illustrating the information processing apparatus according to the first embodiment. 図2は、従来の書き込み処理を説明するための第1の図である。FIG. 2 is a first diagram for explaining a conventional writing process. 図3は、従来の書き込み処理を説明するための第2の図である。FIG. 3 is a second diagram for explaining the conventional writing process. 図4は、整列処理の流れを説明する図である。FIG. 4 is a diagram for explaining the flow of the alignment process. 図5は、読み出し処理の流れを説明する図である。FIG. 5 is a diagram for explaining the flow of the reading process. 図6は、実施例1に係るNANDコントローラの機能構成を説明する図である。FIG. 6 is a diagram illustrating a functional configuration of the NAND controller according to the first embodiment. 図7は、変換テーブルタグを説明する図である。FIG. 7 is a diagram for explaining the conversion table tag. 図8は、NANDコントローラが保持するアドレス変換テーブルの一例を説明する図である。FIG. 8 is a diagram for explaining an example of the address conversion table held by the NAND controller. 図9は、早引きテーブルの一例を説明する図である。FIG. 9 is a diagram for explaining an example of the early lookup table. 図10は、アドレス変換テーブルの全体を説明する図である。FIG. 10 is a diagram for explaining the entire address conversion table. 図11は、アドレス変換テーブルを用いたアドレス変換の流れを説明する図である。FIG. 11 is a diagram for explaining the flow of address conversion using the address conversion table. 図12は、早引きテーブルを用いたアドレス変換の流れを説明する図である。FIG. 12 is a diagram for explaining the flow of address conversion using the early lookup table. 図13は、データの読み出し処理の流れを説明するためのフローチャートである。FIG. 13 is a flowchart for explaining the flow of data read processing. 図14は、データの書き込み処理の流れを説明するためのフローチャートである。FIG. 14 is a flowchart for explaining the flow of data write processing. 図15は、整列処理の流れを説明するためのフローチャートである。FIG. 15 is a flowchart for explaining the flow of the alignment process. 図16は、整列処理の第1のバリエーションを説明するためのフローチャートである。FIG. 16 is a flowchart for explaining a first variation of the alignment process. 図17は、整列処理の第2のバリエーションを説明するためのフローチャートである。FIG. 17 is a flowchart for explaining a second variation of the alignment process. 図18は、読み出し要求と書き込み要求との発生頻度に応じて整列処理を実行するNANDコントローラの機能構成を説明する図である。FIG. 18 is a diagram illustrating a functional configuration of a NAND controller that executes alignment processing according to the frequency of occurrence of read requests and write requests. 図19は、整列処理の第3のバリエーションを説明するためのフローチャートである。FIG. 19 is a flowchart for explaining a third variation of the alignment process. 図20は、変換テーブルタグと早引きテーブルとを共通化したNANDコントローラの機能構成を説明する図である。FIG. 20 is a diagram for explaining a functional configuration of a NAND controller in which a conversion table tag and a quick lookup table are shared. 図21は、変換テーブルタグと早引きテーブルとを共通化した際のアドレス変換処理の流れを説明する図である。FIG. 21 is a diagram for explaining the flow of the address conversion process when the conversion table tag and the early lookup table are shared. 図22は、早引きテーブルの一部を保持するNANDコントローラの機能構成を説明する図である。FIG. 22 is a diagram for explaining the functional configuration of the NAND controller that holds a part of the early lookup table. 図23は、早引きテーブルタグを用いて実行するアドレス変換処理の流れを説明する図である。FIG. 23 is a diagram for explaining the flow of the address conversion process executed using the early lookup table tag. 図24は、制御プログラムを実行するNANDコントローラの一例について説明する図である。FIG. 24 is a diagram illustrating an example of a NAND controller that executes a control program.
 以下に添付図面を参照して本願に係る制御装置、制御プログラムおよび制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例により開示技術が限定されるものではない。また、各実施例は、矛盾しない範囲で適宜組みあわせてもよい。 Embodiments of a control device, a control program, and a control method according to the present application will be described below in detail with reference to the accompanying drawings. The disclosed technology is not limited by this embodiment. In addition, the embodiments may be combined as appropriate within a consistent range.
 以下の実施例1では、図1を用いて、本願に係る制御装置を含む情報処理装置の一例を説明する。図1は、実施例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、および複数の記憶デバイス7a~10aを有する。 In the following first embodiment, an example of an information processing apparatus including the control apparatus according to the present application will be described with reference to FIG. FIG. 1 is a diagram illustrating the information processing apparatus according to the first embodiment. In the example shown in FIG. 1, 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. Further, the SSD 5a includes a NAND controller 6a and a plurality of storage devices 7a to 10a.
 また、SSD5bは、NANDコントローラ6b、および複数の記憶デバイス7b~10bを有する。なお、以下の説明では、NANDコントローラ6b、および複数の記憶デバイス7b~10bは、NANDコントローラ6a、および複数の記憶デバイス7a~10aと同様の機能を発揮するものとして、説明を省略する。 Further, the SSD 5b includes a NAND controller 6b and a plurality of storage devices 7b to 10b. In the following description, the NAND controller 6b and the plurality of storage devices 7b to 10b perform the same functions as the NAND controller 6a and the plurality of storage devices 7a to 10a, and the description thereof is omitted.
 各メモリ2a、2bは、各CPU3a、3bが演算処理に用いるデータを記憶する記憶装置である。また、各CPU3a、3bは、メモリ2a、2bが記憶するデータを用いて、各種演算処理を行う演算処理装置である。例えば、CPU3a、3bは、NUMA(Non-Uniform Memory Access)の技術を用いて、メモリ2a、2bが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。 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. For example, 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.
 また、CPU3a、3bは、I/Oハブ4を介して、各SSD5a、5bが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。詳細には、CPU3aは、SSD5aに対し、データの読み出し要求や書き込み要求を発行し、各記憶デバイス7a~10aからデータの読み出しや書き込みを行う。例えば、CPU3aは、SSD5aに対し、データを指定する論理アドレスが格納された読み出し要求を発行する。また、CPU3aは、データの書き込み先を指定する論理アドレスと、書き込み対象となるデータとが格納された書き込み要求を発行する。 Further, the CPUs 3a and 3b acquire data stored in the respective 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 storage devices 7a to 10a. For example, the CPU 3a issues a read request in which a logical address designating data is stored to the SSD 5a. In addition, the CPU 3a issues a write request in which a logical address designating a data write destination and data to be written are stored.
 記憶デバイス7aは、各種データを記憶する不揮発性メモリである。詳細には、記憶デバイス7aは、データの記憶領域であるページを複数有し、ページ単位でデータの書き込みを行う。また、記憶デバイス7aは、複数のページを有するブロックを複数有し、ブロック単位でデータの消去を行う。 The storage device 7a is a nonvolatile memory that stores various data. Specifically, the storage device 7a has a plurality of pages as data storage areas, and writes data in units of pages. The storage device 7a has a plurality of blocks each having a plurality of pages, and erases data in units of blocks.
 NANDコントローラ6aは、各記憶デバイス7a~10aに対してアクセスし、データの読み出しや書き込みを行う。例えば、NANDコントローラ6aは、各CPU3a、3bがデータが記憶された記憶領域を指定する際に用いる論理アドレスと、データが格納された記憶デバイス7a~10aの記憶領域を示す物理アドレスとを対応付けたアドレス変換テーブルを有する。 The NAND controller 6a accesses each of the storage devices 7a to 10a, and reads and writes data. For example, the NAND controller 6a associates logical addresses used when the CPUs 3a and 3b specify storage areas in which data is stored with physical addresses indicating storage areas of the storage devices 7a to 10a in which data is stored. An address translation table.
 そして、NANDコントローラ6aは、読み出し要求とともに論理アドレスを受信すると、アドレス変換テーブルを用いて、論理アドレスと対応付けられた物理アドレスを識別し、識別した物理アドレスが示す記憶領域からデータの読み出しを行う。その後、NANDコントローラ6aは、I/Oハブ4を介して、読み出したデータをCPU3aに送信する。 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.
 なお、以下の説明では、理解を容易にするため、各ページの先頭アドレスとなる論理アドレスを単に論理アドレスと記載し、各ページの先頭アドレスとなる物理アドレスを単に物理アドレスと記載する。また、情報処理装置1が実行するシステムは、各ページの先頭アドレスとなる論理アドレスに対する読み出し要求や書き込み要求を発行するものとする。 In the following description, in order to facilitate understanding, the logical address that is the top address of each page is simply described as a logical address, and the physical address that is the top address of each page is simply described as a physical address. In addition, the system executed by the information processing apparatus 1 issues a read request and a write request for a logical address that is the top address of each page.
 また、NANDコントローラ6aは、記憶デバイス7a~10aが、複数のブロックを有し、各ブロックに2個のページが含まれている場合は、以下の処理を行う。まず、NANDコントローラ6aは、論理アドレスの下位qビットを論理的な1つのブロック内において、ページを識別するための論理ページ番号とし、残りの論理アドレスの上位pビットを論理的な1つのブロックを示す論理ブロックアドレスとする。 The NAND controller 6a performs the following processing when the storage devices 7a to 10a have a plurality of blocks and each block includes 2q pages. First, the NAND controller 6a uses the lower q bits of the logical address as a logical page number for identifying a page in one logical block, and the upper p bits of the remaining logical addresses as one logical block. The logical block address shown in FIG.
 また、NANDコントローラ6aは、物理アドレスの上位pビットを物理的な1つのブロックを示す物理ブロックアドレスとし、物理アドレスの下位qビットを物理的な1つのブロック内において、各ページを識別するための物理ページ番号とする。つまり、NANDコントローラ6aは、論理アドレスを、論理ブロックを示す論理ブロックアドレスと、論理ページを論理ブロックごとに示す論理ページ番号とに分割する。また、NANDコントローラ6aは、物理アドレスを、物理ブロックを示す物理ブロックアドレスと、物理ページを物理ブロックごとに示す物理ブロック番号とに分割する。 Further, 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 for identifying each page in one physical block. The 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 block number indicating a physical page for each physical block.
 ここで、アドレス変換テーブルを用いて論理アドレスを物理アドレスに変換する技術では、記憶デバイスの容量が増大すると、アドレス変換テーブルのエントリ数も増大してしまい、NANDコントローラの回路規模が増大してしまう。例えば、図2は、従来の書き込み処理を説明するための第1の図である。なお、図2に示す例では、理解を容易にするため、ブロック数を「8」とし、各ブロック内のページ数が「4」の記憶デバイスについて記載した。また、図2に示す例では、論理ブロックアドレスと物理ブロックアドレスとを対応付けたアドレス変換テーブルを有するNANDコントローラが実行する処理について記載した。 Here, in the technique of converting a logical address to a physical address using the address conversion table, when the capacity of the storage device increases, the number of entries in the address conversion table also increases, and the circuit scale of the NAND controller increases. . For example, FIG. 2 is a first diagram for explaining a conventional writing process. In the example shown in FIG. 2, in order to facilitate understanding, a storage device in which the number of blocks is “8” and the number of pages in each block is “4” is described. In the example illustrated in FIG. 2, processing executed by the NAND controller having an address conversion table in which a logical block address and a physical block address are associated with each other is described.
 例えば、ファイルシステムは、図2中(A)に示すように、論理ブロックアドレス「L4」に含まれる論理ページのうち、論理ページ番号「1」が示す論理ページに対する書き込み要求を発行する。すなわち、ファイルシステムは、論理アドレス「L4-1」に対する書き込み要求を発行する。すると、NANDコントローラは、図2中(B)に示すように、論理ブロックアドレス「L4」に対応付けられた物理ブロックアドレス「P7」を取得し、図2中(C)に示すように、書き込み対象となるページを含むブロックを識別する。 For example, as shown in FIG. 2A, the file system issues a write request for the logical page indicated by the logical page number “1” among the logical pages included in the logical block address “L4”. That is, the file system issues a write request for the logical address “L4-1”. Then, the NAND controller obtains the physical block address “P7” associated with the logical block address “L4” as shown in (B) of FIG. 2, and writes it as shown in (C) of FIG. Identify the block that contains the page of interest.
 続いて、NANDコントローラは、図2中(D)に示すように、物理ブロックアドレス「P7」が示す物理ブロックの全データを予備ブロックにコピーする。この際、NANDコントローラは、書き込み要求の対象となる論理ページ番号「1」と同じ物理ページ番号「1」のデータを書き込み対象となるデータで更新する。その後、NANDコントローラは、図2中(E)に示すように、論理ブロックアドレス「L4」と対応付けられていた物理ブロックアドレス「P7」を予備ブロックの物理ブロックアドレス「P8」に更新する。そして、NANDコントローラは、物理ブロックアドレス「P7」が示すブロックのデータを消去する。 Subsequently, as shown in FIG. 2D, the NAND controller copies all data of the physical block indicated by the physical block address “P7” to the spare block. At this time, the NAND controller updates the data of the physical page number “1” that is the same as the logical page number “1” that is the target of the write request with the data that is the target of the write. Thereafter, as shown in FIG. 2E, the NAND controller updates the physical block address “P7” associated with the logical block address “L4” to the physical block address “P8” of the spare block. Then, the NAND controller erases the data of the block indicated by the physical block address “P7”.
 また、別の従来例として、アドレス変換テーブルをページごとに管理する場合がある。例えば、図3は、従来の書き込み処理を説明するための第2の図である。なお、図3に示す例では、理解を容易にするため、図2と同様に、ブロック数を「8」とし、各ブロック内のページ数を「4」の記憶デバイスについて記載した。また、図3に示す例では、論理アドレスと物理アドレスとを対応付けたアドレス変換テーブルを有するNANDコントローラが実行する処理について記載した。 Also, as another conventional example, the address conversion table may be managed for each page. For example, FIG. 3 is a second diagram for explaining a conventional writing process. In the example shown in FIG. 3, for the sake of easy understanding, the storage device in which the number of blocks is “8” and the number of pages in each block is “4” is described as in FIG. In the example illustrated in FIG. 3, the process executed by the NAND controller having the address conversion table in which the logical address and the physical address are associated is described.
 例えば、図3中(F)に示すように、ファイルシステムは、論理ブロックアドレス「L0」の論理ページ番号「3」、すなわち論理アドレス「L0-3」に書き込み要求を発行する。すると、NANDコントローラは、図3中(G)に示すように、論理アドレス「L0-3」に対応付けられた物理アドレス「P4-3」を取得し、図3中(H)に示すように、更新前のデータが格納されているページを識別する。続いて、NANDコントローラは、図3中(I)に示すように、物理アドレス「P4-3」が示すページのデータを更新して予備ブロックにコピーする。その後、NANDコントローラは、図3中(J)に示すように、論理アドレス「L0-3」と対応付けられていた物理アドレス「P4-3」を「P8-0」に更新し、処理を終了する。 For example, as shown in FIG. 3F, the file system issues a write request to the logical page number “3” of the logical block address “L0”, that is, the logical address “L0-3”. Then, the NAND controller obtains the physical address “P4-3” associated with the logical address “L0-3” as shown in (G) of FIG. 3, and as shown in (H) of FIG. Identify the page where the pre-update data is stored. Subsequently, as shown in (I) of FIG. 3, the NAND controller updates the data of the page indicated by the physical address “P4-3” and copies it to the spare block. Thereafter, the NAND controller updates the physical address “P4-3” associated with the logical address “L0-3” to “P8-0” as shown in (J) of FIG. To do.
 しかしながら、従来のNANDシステムでは、アドレス変換テーブルをブロックごとに記憶する場合であっても、ページ単位で記憶する場合であっても、アドレス変換テーブルの大きさは、NANDデバイスの総容量に比例して増大してしまう。 However, in the conventional NAND system, the size of the address conversion table is proportional to the total capacity of the NAND device regardless of whether the address conversion table is stored for each block or page unit. Will increase.
 そこで、NANDコントローラ6aは、アドレス変換テーブルを記憶デバイス7a~10aに格納しており、アドレス変換テーブルの一部を保持する。例えば、アドレス変換テーブルには、各論理アドレスと対応付けられたエントリに、論理アドレスが示す記憶領域を物理的に示す物理アドレスが格納されている。また、NANDコントローラ6aは、論理アドレスの上位iビットが共通する論理アドレスを物理アドレスに変換するアドレス変換テーブルが格納された物理アドレスと、論理アドレスの上位iビットとを対応付けた変換テーブルタグを保持する。 Therefore, the NAND controller 6a stores the address conversion table in the storage devices 7a to 10a and holds a part of the address conversion table. For example, in the address conversion table, a physical address physically indicating the storage area indicated by the logical address is stored in an entry associated with each logical address. In addition, the NAND controller 6a includes a conversion table tag that associates a physical address in which an address conversion table for converting a logical address having a common upper i bit of a logical address into a physical address and an upper i bit of the logical address are associated with each other. Hold.
 そして、NANDコントローラ6aは、読み出し対象、または書き込み対象となる論理アドレスの上位iビットと対応付けられた物理アドレスを変換テーブルタグから取得し、取得した物理アドレスが示す記憶領域から、アドレス変換テーブルの一部を読み出す。ここで、1つの物理アドレスが示す記憶領域には、論理アドレスの下位jビットと対応付けられた複数のエントリに変換先の物理アドレスが格納されたアドレス変換テーブルが格納されている。このため、NANDコントローラ6aは、読み出したアドレス変換テーブルのうち、読み出し対象、または書き込み対象となる論理アドレスの下位jビットと対応付けられたエントリの物理アドレスを読み出すことができる。なお、以下の説明では、論理アドレスの上位iビットを単に上位アドレスと記載し、下位jビットを下位アドレスと記載する。 Then, the NAND controller 6a acquires the physical address associated with the upper i bits of the logical address to be read or written from the conversion table tag, and from the storage area indicated by the acquired physical address, Read a part. Here, the storage area indicated by one physical address stores an address conversion table in which the physical address of the conversion destination is stored in a plurality of entries associated with the lower j bits of the logical address. Therefore, the NAND controller 6a can read the physical address of the entry associated with the lower j bits of the logical address to be read or written in the read address conversion table. In the following description, the upper i bits of the logical address are simply described as the upper address, and the lower j bits are described as the lower address.
 ここで、アドレス変換テーブルの一部をNANDコントローラが保持する技術では、処理対象の論理アドレスが保持するアドレス変換テーブルに含まれていない場合は、処理対象の論理アドレスを含むアドレス変換テーブルをNANDコントローラから取得する。そして、NANDコントローラから取得したアドレス変換テーブルを用いて論理アドレスを物理アドレスに変換し、変換後の物理アドレスを用いてメモリアクセスを行う。この結果、アドレス変換テーブルの一部をNANDコントローラが保持する技術では、アドレス変換に時間がかかり、メモリアクセスのレイテンシが増大してしまう。 Here, in the technology in which the NAND controller holds a part of the address conversion table, when the logical address to be processed is not included in the address conversion table to be held, the NAND controller converts the address conversion table including the logical address to be processed. Get from. Then, the logical address is converted into a physical address using the address conversion table acquired from the NAND controller, and the memory is accessed using the converted physical address. As a result, in the technique in which the NAND controller holds a part of the address conversion table, it takes time for address conversion, and the latency of memory access increases.
 そこで、NANDコントローラ6aは、所定の条件がそろうと、以下の整列処理を実行する。すなわち、NANDコントローラ6aは、論理ブロックアドレスが共通する複数の論理アドレスを選択し、アドレス変換テーブルを用いて、選択した論理アドレスと対応付けられた物理アドレスを識別する。 Therefore, the NAND controller 6a executes the following alignment process when a predetermined condition is met. That is, the NAND controller 6a selects a plurality of logical addresses having a common logical block address, and identifies a physical address associated with the selected logical address using the address conversion table.
 そして、NANDコントローラ6aは、識別した物理アドレスに格納されているデータを、論理ページ番号の順で、予備のブロックに含まれる先頭のページから各ページへと移動させる。すなわち、NANDコントローラ6aは、各データの論理ページ番号と、移動先の物理ページ番号が同じ値になるように、各データを整列移動させる。そして、NANDコントローラ6aは、整列移動させたデータの論理ブロックアドレスと、データを移動させたブロックの物理ブロックアドレスとを対応付けて記憶する。 Then, the NAND controller 6a moves the data stored in the identified physical address from the first page included in the spare block to each page in the order of logical page numbers. That is, the NAND controller 6a aligns and moves the data so that the logical page number of each data and the physical page number of the movement destination have the same value. Then, the NAND controller 6a stores the logical block address of the aligned data and the physical block address of the block to which the data has been moved in association with each other.
 また、NANDコントローラ6aは、読み出し要求とともに論理アドレスを受信すると、受信した論理アドレスの上位ビット、すなわち読み出し対象となるデータの論理ブロックアドレスと対応付けて記憶する物理ブロックアドレスを取得する。ここで、整列移動させたブロック内では、各データの論理ページ番号と物理ページ番号とが同一の値となっている。そこで、NANDコントローラ6aは、取得した物理ブロックアドレスに受信した論理アドレスの論理ページ番号を付加することで、読み出し対象となるデータが格納された物理アドレスを取得する。その後、NANDコントローラ6は、取得した物理アドレスを用いて、読み出し対象となるデータを取得する。 Further, when the NAND controller 6a receives the logical address together with the read request, the NAND controller 6a acquires the upper bits of the received logical address, that is, the physical block address stored in association with the logical block address of the data to be read. Here, the logical page number and the physical page number of each data have the same value in the aligned block. Therefore, the NAND controller 6a acquires the physical address where the data to be read is stored by adding the logical page number of the received logical address to the acquired physical block address. Thereafter, the NAND controller 6 acquires data to be read using the acquired physical address.
 このように、NANDコントローラ6aは、論理ブロックアドレスが共通する論理アドレスによって指定されるページの各データを、1つの物理ブロックに移動させる。この際、NANDコントローラ6aは、各データの論理ページ番号と同一の物理ページ番号が示すページに各データを移動させる。そして、NANDコントローラ6aは、各データの移動先となる物理ブロックを示す物理ブロックアドレスと、移動させたデータの論理ブロックアドレスとを対応付けた早引きテーブル13を記憶する。 In this way, the NAND controller 6a moves each data of the page designated by the logical address having the common logical block address to one physical block. At this time, the NAND controller 6a moves each data to a page indicated by the same physical page number as the logical page number of each data. Then, the NAND controller 6a stores a fast lookup table 13 in which a physical block address indicating a physical block that is a destination of each data is associated with a logical block address of the moved data.
 その後、NANDコントローラ6aは、読み出し対象の論理アドレスを受信すると、論理アドレスに含まれる論理ブロックアドレスと対応付けられた物理ブロックアドレスを早引きテーブル13から取得する。そして、NANDコントローラ6aは、取得した物理ブロックアドレスに、受信した論理アドレスの論理ページ番号を付加することで、読み出し対象となるデータが格納された記憶領域を示す物理アドレスを取得する。 After that, when receiving the logical address to be read, the NAND controller 6a acquires the physical block address associated with the logical block address included in the logical address from the early lookup table 13. Then, the NAND controller 6a acquires a physical address indicating a storage area in which data to be read is stored by adding the logical page number of the received logical address to the acquired physical block address.
 この結果、NANDコントローラ6aは、アドレス変換テーブルキャッシュ12に、読み出し対象となる論理アドレスと対応する物理アドレスが格納されていない場合にも、アドレス変換テーブル20の読み出し処理を行わなずともアドレス変換を実現できる。このため、NANDコントローラ6aは、アドレス変換処理のレイテンシを短縮することができる。 As a result, even when the physical address corresponding to the logical address to be read is not stored in the address conversion table cache 12, the NAND controller 6 a performs the address conversion without performing the read process of the address conversion table 20. realizable. For this reason, the NAND controller 6a can shorten the latency of the address conversion process.
 ここで、図4、図5を用いてNANDコントローラ6aが実行する処理の一例について説明する。まず、図4を用いて、NANDコントローラ6aが実行する整列処理について説明する。図4は、整列処理の流れを説明する図である。なお、図4に示す例では、理解を容易にするため、図2と同様に、ブロック数を「8」とし、各ブロック内のページ数を「4」の記憶デバイス7a~10aについて記載した。 Here, an example of processing executed by the NAND controller 6a will be described with reference to FIGS. First, the alignment process executed by the NAND controller 6a will be described with reference to FIG. FIG. 4 is a diagram for explaining the flow of the alignment process. In the example shown in FIG. 4, in order to facilitate understanding, the storage devices 7a to 10a in which the number of blocks is “8” and the number of pages in each block are “4” are described as in FIG.
 例えば、NANDコントローラ6aは、早引きテーブルを確認し、図4中(K)に示すように、論理ブロックアドレス「L0」に物理ブロックアドレスが対応付けられておらず、未登録、もしくは有効な物理ブロックアドレスが対応付けられていないと判定する。このような場合には、NANDコントローラ6aは、図4中(L)に示すように、論理ブロックアドレス「L0」を含む論理アドレス「L0-0」~「L0-3」を選択する。また、NANDコントローラ6aは、アドレス変換テーブルを用いて、論理アドレス「L0-0」~「L0-3」を物理アドレス「P0-0」、「P7-0」、「P2-2」、「P4-3」に変換する。そして、図4中(M)に示すように、各物理アドレスが示すページを識別する。 For example, the NAND controller 6a confirms the fast-drawing table, and as shown in (K) in FIG. 4, the physical block address is not associated with the logical block address “L0” and is not registered or has a valid physical It is determined that the block address is not associated. In such a case, the NAND controller 6a selects the logical addresses “L0-0” to “L0-3” including the logical block address “L0”, as indicated by (L) in FIG. Further, the NAND controller 6a uses the address conversion table to convert the logical addresses “L0-0” to “L0-3” into physical addresses “P0-0”, “P7-0”, “P2-2”, “P4”. -3 ”. Then, as indicated by (M) in FIG. 4, the page indicated by each physical address is identified.
 次に、NANDコントローラ6aは、識別した各ページのデータを予備ブロックに移動させる。この際、NANDコントローラ6aは、図4中(N)に示すように、各データを指定する際に用いる論理アドレスの論理ページ番号と、データの移動先となるページの物理ページ番号とが同一となるように、各データを移動させる。 Next, the NAND controller 6a moves the data of each identified page to the spare block. At this time, as shown in FIG. 4 (N), the NAND controller 6a has the same logical page number of the logical address used when designating each data and the physical page number of the page to which the data is moved. Each data is moved so that it becomes.
 詳細には、NANDコントローラ6aは、物理アドレス「P4-0」に格納されていた論理アドレス「L0-0」のデータを物理アドレス「P8-0」に移動させる。また、NANDコントローラ6aは、物理アドレス「P7-0」に格納されていた論理アドレス「L0-1」のデータを物理アドレス「P8-1」に移動させる。また、NANDコントローラ6aは、物理アドレス「P2-2」に格納されていた論理アドレス「L0-2」のデータを物理アドレス「P8-2」に移動させる。また、NANDコントローラ6aは、物理アドレス「P4-3」に格納されていた論理アドレス「L0-3」のデータを物理アドレス「P8-3」に移動させる。 Specifically, the NAND controller 6a moves the data of the logical address “L0-0” stored in the physical address “P4-0” to the physical address “P8-0”. Further, the NAND controller 6a moves the data of the logical address “L0-1” stored in the physical address “P7-0” to the physical address “P8-1”. Further, the NAND controller 6a moves the data of the logical address “L0-2” stored in the physical address “P2-2” to the physical address “P8-2”. Further, the NAND controller 6a moves the data of the logical address “L0-3” stored in the physical address “P4-3” to the physical address “P8-3”.
 そして、NANDコントローラ6aは、図4中(O)に示すように、アドレス変換テーブルを更新するとともに、図4中(P)に示すように、早引きテーブルに、論理ブロックアドレス「L0」と物理ブロックアドレス「P8」とを対応付けて記憶する。 Then, the NAND controller 6a updates the address conversion table as indicated by (O) in FIG. 4 and also stores the logical block address “L0” and the physical address in the early lookup table as indicated by (P) in FIG. The block address “P8” is stored in association with each other.
 次に、図5を用いてNANDコントローラ6aがデータの読み出し時に早引きテーブルを用いて実行する処理の一例について説明する。図5は、読み出し処理の流れを説明する図である。なお、図5に示す例では、理解を容易にするため、図2と同様に、ブロック数を「8」とし、各ブロック内のページ数を「4」の記憶デバイス7a~10aについて記載した。 Next, an example of processing executed by the NAND controller 6a using the early lookup table when reading data will be described with reference to FIG. FIG. 5 is a diagram for explaining the flow of the reading process. In the example shown in FIG. 5, in order to facilitate understanding, the storage devices 7a to 10a in which the number of blocks is “8” and the number of pages in each block is “4” are described, as in FIG.
 例えば、図5に示す例では、図5中(Q)に示すように、ファイルシステムが論理アドレス「L0-3」への読み出し要求を発行する。このような場合には、NANDコントローラ6aは、図5中(R)に示すように、論理アドレス「L0-3」の論理ブロックアドレス「L0」と対応付けられた物理ブロックアドレス「P8」を早引きテーブルから取得する。ここで、物理ブロックアドレス「P8」が示すブロック中では、各データが、各データの論理ページ番号と同一の物理ページ番号に格納されている。 For example, in the example shown in FIG. 5, the file system issues a read request to the logical address “L0-3” as indicated by (Q) in FIG. In such a case, as shown in (R) in FIG. 5, the NAND controller 6a quickly sets the physical block address “P8” associated with the logical block address “L0” of the logical address “L0-3”. Get from the pull table. Here, in the block indicated by the physical block address “P8”, each data is stored in the same physical page number as the logical page number of each data.
 このため、NANDコントローラ6aは、図5中(S)に示すように、物理ブロックアドレス「P8」のブロックに含まれるページのうち、論理アドレス「L0-3」の論理ページ番号「3」と同じ物理ページ番号「3」が示すページからデータの読み出しを行う。この結果、NANDコントローラ6aは、保持するアドレス変換テーブルに、論理アドレス「L0-3」が含まれていない場合にも、記憶デバイス7a~10aからアドレス変換テーブルを読み出すことなく、アドレス変換を行うことができる。 Therefore, the NAND controller 6a has the same logical page number “3” of the logical address “L0-3” among the pages included in the block of the physical block address “P8”, as shown in FIG. Data is read from the page indicated by the physical page number “3”. As a result, even when the logical address “L0-3” is not included in the held address conversion table, the NAND controller 6a performs address conversion without reading the address conversion table from the storage devices 7a to 10a. Can do.
 次に、図6を用いて、NANDコントローラ6aの機能構成について説明する。図6は、実施例1に係るNANDコントローラの機能構成を説明する図である。図6に示す例では、NANDコントローラ6aは、変換テーブルタグ11、アドレス変換テーブルキャッシュ12、早引きテーブル13、リクエスタインタフェース部14、リクエスト調停部15を有する。また、NANDコントローラ6aは、アドレス変換制御部16、デバイスアクセス制御部17、データ整列制御部18、ガベージコレクション制御部19を有する。また、記憶デバイス7a~10aは、アドレス変換テーブル20とユーザデータ21とを記憶する。 Next, the functional configuration of the NAND controller 6a will be described with reference to FIG. FIG. 6 is a diagram illustrating a functional configuration of the NAND controller according to the first embodiment. In the example illustrated in FIG. 6, the NAND controller 6 a includes a conversion table tag 11, an address conversion table cache 12, an early search table 13, a requester interface unit 14, and a request arbitration unit 15. The NAND controller 6 a includes an address conversion control unit 16, a device access control unit 17, a data alignment control unit 18, and a garbage collection control unit 19. The storage devices 7a to 10a store an address conversion table 20 and user data 21.
 変換テーブルタグ11は、上位アドレスと、上位アドレスを含む論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが格納された物理アドレスとを対応付けたテーブルである。例えば、図7は、変換テーブルタグを説明する図である。図7に示す例では、変換テーブルタグ11は、論理アドレスの上位アドレス「0」~「2-1」とそれぞれ対応付けられた複数のエントリを有する。 The conversion table tag 11 is a table in which an upper address is associated with a physical address in which an address conversion table for converting a logical address including the upper address into a physical address is stored. For example, FIG. 7 is a diagram illustrating a conversion table tag. In the example shown in FIG. 7, the conversion table tag 11 has a plurality of entries respectively associated with the upper addresses “0” to “2 i −1” of the logical address.
 また、変換テーブルタグ11の各エントリには、対応付けられた上位アドレスを含む論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが格納された物理アドレス(テーブルPA:Physical Address)「a」~「m」が格納されている。なお、物理アドレス「a」~「m」の値は、NANDコントローラ6aが保持するアドレス変換テーブルの一部を変更する度に、異なる値に変化することとなる。 Each entry of the translation table tag 11 includes a physical address (table PA: Physical Address) “a” to “a” that stores an address translation table for converting a logical address including the associated upper address into a physical address. “M” is stored. The values of the physical addresses “a” to “m” change to different values every time a part of the address conversion table held by the NAND controller 6a is changed.
 図6に戻って、アドレス変換テーブルキャッシュ12は、記憶デバイス7a~10a上に格納されたアドレス変換テーブル20の一部である。例えば、図8は、NANDコントローラが保持するアドレス変換テーブルの一例を説明する図である。図8に示す例では、アドレス変換テーブルキャッシュ12は、下位アドレス「0」~「2-1」と対応付けられたエントリを有する。また、アドレス変換テーブルキャッシュ12は、各エントリにバリッドビット(Valid)とデータが格納された物理アドレスであるデータPA「BA」~「BN」を対応付けて格納している。 Returning to FIG. 6, the address translation table cache 12 is a part of the address translation table 20 stored on the storage devices 7a to 10a. For example, FIG. 8 is a diagram for explaining an example of the address conversion table held by the NAND controller. In the example shown in FIG. 8, the address conversion table cache 12 has entries associated with lower addresses “0” to “2 j −1”. Further, the address conversion table cache 12 stores valid bits (Valid) and data PA “BA” to “BN”, which are physical addresses in which data is stored, in association with each entry.
 ここで、バリッドビットは、対応付けられた物理アドレスが有効な物理アドレスであるか否かを示すビットである。例えば、図8に示す例では、下位アドレス「2」と対応付けられたエントリの物理アドレス「BC」は、有効な物理アドレスであるが、下位アドレス「1」と対応付けられたエントリの物理アドレス「BB」は、有効な物理アドレスではない。 Here, the valid bit is a bit indicating whether or not the associated physical address is a valid physical address. For example, in the example shown in FIG. 8, the physical address “BC” of the entry associated with the lower address “2” is a valid physical address, but the physical address of the entry associated with the lower address “1”. “BB” is not a valid physical address.
 なお、NANDコントローラ6aは、アドレス変換テーブル20のうち、変換テーブルタグによって示された物理アドレスで指定される範囲をアドレス変換テーブルキャッシュ12として保持する。例えば、図8、10に示す例では、NANDコントローラ6aは、物理アドレスが「b」となる物理ページに格納されたアドレス変換テーブルキャッシュ12を保持する。 Note that the NAND controller 6a holds, as the address translation table cache 12, a range specified by the physical address indicated by the translation table tag in the address translation table 20. For example, in the example illustrated in FIGS. 8 and 10, the NAND controller 6 a holds the address conversion table cache 12 stored in the physical page whose physical address is “b”.
 図6に戻って、早引きテーブル13は、論理ブロックアドレスと物理ブロックアドレスとを対応付けて記憶する。例えば、図9は、早引きテーブルの一例を説明する図である。例えば、図9に示す例では、早引きテーブルは、論理ブロックアドレス「0」~「2-1」と対応付けたエントリを有する。また、早引きテーブル13は、各エントリに登録フラグと、物理ブロックアドレスとを対応付けて格納している。ここで、登録フラグとは、対応付けられた物理ブロックアドレスが示すブロックにデータを整列移動させたか否かを示すフラグであり、データを整列移動させた場合は、「1」となり、データを整列移動させていない場合は、「0」となる。 Returning to FIG. 6, the early lookup table 13 stores the logical block address and the physical block address in association with each other. For example, FIG. 9 is a diagram for explaining an example of the early lookup table. For example, in the example shown in FIG. 9, the early lookup table has entries associated with logical block addresses “0” to “2 p −1”. In addition, the fast-drawing table 13 stores a registration flag and a physical block address in association with each entry. Here, the registration flag is a flag indicating whether or not the data is aligned and moved to the block indicated by the associated physical block address. When the data is aligned and moved, the flag is “1” and the data is aligned. When it is not moved, it is “0”.
 図6に戻って、アドレス変換テーブル20は、物理アドレスを論理アドレスに変換する際に用いるアドレス変換テーブルである。例えば、図10は、アドレス変換テーブルの全体を説明する図である。例えば、図10に示すように、アドレス変換テーブル20は、記憶デバイス7a~10aが有する記憶領域のうち、物理アドレス「a」~「m」の範囲に格納されたテーブルである。また、アドレス変換テーブル20は、1つのページ内に、論理ページ番号「0」~「2-1」と対応付けられたエントリを有し、各エントリ内に、バリッドビットと各論理ページ番号が示すデータが格納された物理アドレスが格納されている。 Returning to FIG. 6, the address conversion table 20 is an address conversion table used when converting a physical address into a logical address. For example, FIG. 10 is a diagram illustrating the entire address conversion table. For example, as shown in FIG. 10, the address conversion table 20 is a table stored in the range of physical addresses “a” to “m” in the storage areas of the storage devices 7a to 10a. The address conversion table 20 has entries associated with logical page numbers “0” to “2 j −1” in one page, and the valid bit and each logical page number are included in each entry. The physical address where the indicated data is stored is stored.
 例えば、物理アドレス「a」が示すページに格納されたアドレス変換テーブルには、上位アドレスが「0」で下位アドレスが「0」~「2-1」である論理アドレスに対応する物理アドレス「AA」~「AN」が格納されている。また、物理アドレス「b」が示すページに格納されたアドレス変換テーブルには、上位アドレスが「1」で下位アドレスが「0」~「2-1」である論理アドレスに対応する物理アドレス「BA」~「BN」が格納されている。また、物理アドレス「m」が示すページに格納されたアドレス変換テーブルには、上位アドレスが「2-1」で下位アドレスが「0」~「2-1」である論理アドレスに対応する物理アドレス「MA」~「MN」が格納されている。ここで、アドレス変換テーブルに格納された物理アドレス「a」~「m」と論理アドレスの上位アドレス「0」~「2-1」との対応は、変換テーブルタグ11によって管理されている。 For example, in the address conversion table stored in the page indicated by the physical address “a”, the physical address “0” and the low-order addresses “0” to “2 j −1” corresponding to the logical addresses “0” to “2 j −1” “AA” to “AN” are stored. The address conversion table stored in the page indicated by the physical address “b” includes the physical address “1” corresponding to the logical address having the upper address “1” and the lower addresses “0” to “2 j −1”. “BA” to “BN” are stored. Further, the address conversion table stored in the page indicated by the physical address “m” corresponds to the logical address having the upper address “2 i −1” and the lower addresses “0” to “2 j −1”. Physical addresses “MA” to “MN” are stored. Here, the correspondence between the physical addresses “a” to “m” stored in the address conversion table and the higher addresses “0” to “2 i −1” of the logical address is managed by the conversion table tag 11.
 図6に戻り、リクエスタインタフェース部14は、I/Oハブを介して、読み出し要求、または書き込み要求を受信する。リクエスタインタフェース部14は、読み出し要求を受信すると、受信した読み出し要求をリクエスト調停部15に出力する。また、リクエスタインタフェース部14は、デバイスアクセス制御部17から読み出し要求の対象となるデータを受信すると、受信したデータを読み出し要求の発行元となるCPU3a、3bに出力する。 Returning to FIG. 6, the requester interface unit 14 receives a read request or a write request via the I / O hub. When receiving the read request, the requester interface unit 14 outputs the received read request to the request arbitration unit 15. Further, when the requester interface unit 14 receives data that is the target of a read request from the device access control unit 17, the requester interface unit 14 outputs the received data to the CPUs 3a and 3b that are the issuers of the read request.
 また、リクエスタインタフェース部14は、書き込み要求を受信すると、以下の書き込み処理を実行する。例えば、リクエスタインタフェース部14は、受信した書き込み要求に格納された論理アドレスを含む読み出し要求をリクエスト調停部15に出力する。そして、リクエスタインタフェース部14は、読み出し対象のデータを受信すると、受信したデータを書き込み対象のデータで更新する。そして、リクエスタインタフェース部14は、受信した書き込み要求に格納された論理アドレスと、更新後のデータとを含む書き込み要求をリクエスト調停部15に出力する。 Further, when the requester interface unit 14 receives a write request, it executes the following write process. For example, the requester interface unit 14 outputs a read request including the logical address stored in the received write request to the request arbitration unit 15. When the requester interface unit 14 receives the data to be read, the requester interface unit 14 updates the received data with the data to be written. The requester interface unit 14 then outputs a write request including the logical address stored in the received write request and the updated data to the request arbitration unit 15.
 リクエスト調停部15は、リクエスタインタフェース部14、データ整列制御部18、およびガベージコレクション制御部19からの読み出し要求および書き込み要求を調停し、調停結果に応じた順序で実行する。例えば、リクエスト調停部15は、読み出し要求を受信すると、読み出し対象となる論理アドレスをアドレス変換制御部16に出力する。そして、リクエスト調停部15は、アドレス変換制御部16から、読み出し対象となる物理アドレスを受信すると、受信した物理アドレスに対する読み出し要求をデバイスアクセス制御部17に発行する。 The request arbitration unit 15 arbitrates read requests and write requests from the requester interface unit 14, the data alignment control unit 18, and the garbage collection control unit 19, and executes them in the order according to the arbitration result. For example, when receiving a read request, the request arbitration unit 15 outputs a logical address to be read to the address conversion control unit 16. When the request arbitration unit 15 receives a physical address to be read from the address translation control unit 16, it issues a read request for the received physical address to the device access control unit 17.
 また、リクエスト調停部15は、書き込み要求を受信すると、アドレス変換制御部16に問い合わせる等して、各ページにデータが格納されていない予備ブロックの物理アドレスを取得する。その後、リクエスト調停部15は、取得した物理アドレスに対して、更新したデータの書き込みを要求する書き込み要求をデバイスアクセス制御部17に出力する。また、リクエスト調停部15は、書き込み要求に格納されていた論理アドレスとデータを格納した物理アドレスとをアドレス変換制御部16に出力する。 Further, when the request arbitration unit 15 receives the write request, the request arbitration unit 15 inquires of the address translation control unit 16 and acquires the physical address of the spare block in which no data is stored in each page. Thereafter, the request arbitration unit 15 outputs a write request for requesting writing of updated data to the device access control unit 17 for the acquired physical address. In addition, the request arbitration unit 15 outputs the logical address stored in the write request and the physical address storing the data to the address conversion control unit 16.
 アドレス変換制御部16は、論理アドレスを物理アドレスに変換する。例えば、アドレス変換制御部16は、論理アドレスを受信すると、早引きテーブル13を参照し、受信した論理アドレスの論理ブロックアドレスと対応付けられたエントリを識別する。また、アドレス変換制御部16は、識別したエントリの登録フラグが「1」であるか否かを判定する。 The address conversion control unit 16 converts a logical address into a physical address. For example, when receiving the logical address, the address conversion control unit 16 refers to the early lookup table 13 and identifies an entry associated with the logical block address of the received logical address. Further, the address conversion control unit 16 determines whether or not the registration flag of the identified entry is “1”.
 そして、アドレス変換制御部16は、識別したエントリの登録フラグが「1」である場合は、識別したエントリに格納された物理ブロックアドレスを取得する。また、アドレス変換制御部16は、取得した物理ブロックアドレスに対し、受信した論理アドレスの下位qビット、すなわち論理ページ番号を付加することで、物理アドレスを生成する。 Then, when the registration flag of the identified entry is “1”, the address translation control unit 16 acquires the physical block address stored in the identified entry. Further, the address conversion control unit 16 generates a physical address by adding the lower q bits of the received logical address, that is, the logical page number, to the acquired physical block address.
 一方、アドレス変換制御部16は、識別したエントリの登録フラグが「0」である場合、すなわち、受信した論理アドレスが整列移動されていない場合は、アドレス変換テーブルを用いたアドレス変換処理を実行する。例えば、アドレス変換制御部16は、変換テーブルタグ11の各エントリのうち、受信した論理アドレスの上位アドレスと対応付けられたエントリに格納されている物理アドレスを取得する。 On the other hand, if the registration flag of the identified entry is “0”, that is, if the received logical address is not aligned, the address translation control unit 16 executes address translation processing using the address translation table. . For example, the address conversion control unit 16 acquires the physical address stored in the entry associated with the higher-order address of the received logical address among the entries of the conversion table tag 11.
 そして、アドレス変換制御部16は、取得した物理アドレスをデバイスアクセス制御部17に出力することで、アドレス変換テーブル20の一部を取得する。すると、アドレス変換制御部16は、受信したアドレス変換テーブル20の一部をアドレス変換テーブルキャッシュ12とする。そして、アドレス変換制御部16は、アドレス変換テーブルキャッシュ12の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリに格納されている物理アドレスを取得する。その後、アドレス変換制御部16は、取得した物理アドレスをリクエスト調停部15に出力する。 Then, the address conversion control unit 16 acquires a part of the address conversion table 20 by outputting the acquired physical address to the device access control unit 17. Then, the address translation control unit 16 sets a part of the received address translation table 20 as the address translation table cache 12. Then, the address translation control unit 16 acquires the physical address stored in the entry associated with the lower address of the received logical address among the entries of the address translation table cache 12. Thereafter, the address translation control unit 16 outputs the acquired physical address to the request arbitration unit 15.
 また、アドレス変換制御部16は、リクエスト調停部15から、書き込み要求に格納されていた論理アドレスとデータを格納した物理アドレスとを受信する。すると、アドレス変換制御部16は、受信した論理アドレスの上位アドレスを用いてアドレス変換テーブル20の一部をアドレス変換テーブルキャッシュ12として取得する。そして、アドレス変換制御部16は、取得したアドレス変換テーブルキャッシュ12のうち、論理アドレスの下位アドレスと対応付けられたエントリの物理アドレスを、リクエスト調停部15から受信した物理アドレスで書き換える。 Further, the address conversion control unit 16 receives from the request arbitration unit 15 the logical address stored in the write request and the physical address storing the data. Then, the address translation control unit 16 acquires a part of the address translation table 20 as the address translation table cache 12 using the upper address of the received logical address. Then, the address translation control unit 16 rewrites the physical address of the entry associated with the lower address of the logical address in the acquired address translation table cache 12 with the physical address received from the request arbitration unit 15.
 その後、アドレス変換制御部16は、アドレス変換テーブルキャッシュ12をデバイスアクセス制御部17に出力し、記憶デバイス7a~10aが記憶するアドレス変換テーブル20の書き換えを指示する。ここで、アドレス変換テーブルキャッシュ12を記憶デバイス7a~10aに書き戻す際は、キャッシュ元のページに書き戻されるわけではない。このため、アドレス変換制御部16は、アドレス変換テーブルキャッシュ12を書き戻した物理アドレスと、書き戻したアドレス変換テーブルキャッシュ12に対応する論理アドレスの上位ビットとを対応付けるよう変換テーブルタグ11を更新する。 Thereafter, the address translation control unit 16 outputs the address translation table cache 12 to the device access control unit 17 and instructs rewriting of the address translation table 20 stored in the storage devices 7a to 10a. Here, when the address translation table cache 12 is written back to the storage devices 7a to 10a, it is not written back to the cache source page. For this reason, the address translation control unit 16 updates the translation table tag 11 so that the physical address to which the address translation table cache 12 is written back is associated with the upper bits of the logical address corresponding to the written address translation table cache 12. .
 また、アドレス変換制御部16は、早引きテーブル13の各エントリのうち、受信した論理アドレスの論理ブロックアドレスと対応付けられたエントリの登録フラグを「0」にする。つまり、アドレス変換制御部16は、データの書き込みにより、整列されたデータが他の物理ブロックに移動した場合には、早引きテーブル13の各エントリのうち、対応するエントリを無効にする。 In addition, the address conversion control unit 16 sets the registration flag of the entry associated with the logical block address of the received logical address among the entries of the early lookup table 13 to “0”. That is, the address translation control unit 16 invalidates the corresponding entry among the entries in the fast-drawing table 13 when the aligned data is moved to another physical block due to data writing.
 次に、図11、12を用いて、アドレス変換制御部16が実行するアドレス変換の一例を説明する。まず、図11を用いて、アドレス変換制御部16がアドレス変換テーブルを用いて実行するアドレス変換の流れについて説明する。図11は、アドレス変換テーブルを用いたアドレス変換の流れを説明する図である。 Next, an example of address conversion executed by the address conversion control unit 16 will be described with reference to FIGS. First, the flow of address conversion executed by the address conversion control unit 16 using the address conversion table will be described with reference to FIG. FIG. 11 is a diagram for explaining the flow of address conversion using the address conversion table.
 まず、アドレス変換制御部16は、論理アドレスを受信すると、図11中(S)に示すように、変換テーブルタグ11の各エントリのうち、受信した論理アドレスの上位アドレスと対応付けられたエントリの物理アドレスを取得する。すると、アドレス変換制御部16は、物理アドレス「b」を取得するので、図11中(T)に示すように、物理アドレス「b」に格納されたアドレス変換テーブルをアドレス変換テーブルキャッシュ12として取得する。 First, when receiving the logical address, the address conversion control unit 16, as shown in (S) in FIG. 11, of the entries associated with the upper address of the received logical address among the entries of the conversion table tag 11. Get physical address. Then, since the address translation control unit 16 obtains the physical address “b”, the address translation table stored in the physical address “b” is obtained as the address translation table cache 12 as shown in FIG. To do.
 次に、アドレス変換制御部16は、図11中(U)に示すように、アドレス変換テーブルキャッシュ12の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリに格納された物理アドレス「BC」を取得する。そして、アドレス変換制御部16は、図11中(V)に示すように、取得した物理アドレス「BC」を変換結果としてリクエスト調停部15に出力する。 Next, as shown in FIG. 11 (U), the address translation control unit 16 stores the physical stored in the entry associated with the lower address of the received logical address among the entries of the address translation table cache 12. The address “BC” is acquired. Then, the address translation control unit 16 outputs the acquired physical address “BC” to the request arbitration unit 15 as a translation result, as indicated by (V) in FIG.
 次に、図12を用いて、アドレス変換制御部16が早引きテーブル13を用いて実行するアドレス変換について説明する。図12は、早引きテーブルを用いたアドレス変換の流れを説明する図である。例えば、アドレス変換制御部16は、図12中(W)に示すように、早引きテーブル13の各エントリのうち、受信した論理アドレスの上位pビットである論理ブロックアドレスと対応付けられたエントリを識別する。ここで、識別したエントリの登録フラグが「1」であるので、アドレス変換制御部16は、識別したエントリに格納されている物理ブロックアドレス「B」を取得する。 Next, address conversion executed by the address conversion control unit 16 using the early lookup table 13 will be described with reference to FIG. FIG. 12 is a diagram for explaining the flow of address conversion using the early lookup table. For example, as shown in (W) of FIG. 12, the address translation control unit 16 selects an entry associated with the logical block address that is the upper p bits of the received logical address from among the entries of the early lookup table 13. Identify. Here, since the registration flag of the identified entry is “1”, the address translation control unit 16 acquires the physical block address “B” stored in the identified entry.
 また、アドレス変換制御部16は、図12中(X)に示すように、受信した論理アドレスの下位qビットである論理ページ番号を物理ページ番号として、早引きテーブル13から取得した物理ブロックアドレス「B」の下位に付加する。この結果、アドレス変換制御部16は、受信した論理アドレスを物理アドレスに変換するアドレス変換テーブルを保持していない場合にも、記憶デバイス7a~10aからアドレス変換テーブルを読み出すことなく、アドレス変換を行うことができる。 Further, as shown in (X) of FIG. 12, the address conversion control unit 16 uses the logical page number that is the lower q bits of the received logical address as the physical page number, and the physical block address “ It is added to the lower part of “B”. As a result, the address conversion control unit 16 performs address conversion without reading the address conversion table from the storage devices 7a to 10a even when the address conversion table for converting the received logical address to the physical address is not held. be able to.
 図6に戻って、デバイスアクセス制御部17は、記憶デバイス7a~10aに対するデータの書き込み、読み出し処理を実行する。例えば、デバイスアクセス制御部17は、リクエスト調停部15、またはアドレス変換制御部16からデータの書き込み要求を受信する。このような場合には、デバイスアクセス制御部17は、受信した書き込み要求に格納されている物理アドレスが示すページに対して、書き込み要求に格納されているデータの書き込みを行う。そして、デバイスアクセス制御部17は、書き込み要求の発行元に対して、書き込み完了通知を送信する。 Referring back to FIG. 6, the device access control unit 17 executes data write / read processing on the storage devices 7a to 10a. For example, the device access control unit 17 receives a data write request from the request arbitration unit 15 or the address translation control unit 16. In such a case, the device access control unit 17 writes the data stored in the write request to the page indicated by the physical address stored in the received write request. Then, the device access control unit 17 transmits a write completion notification to the issuer of the write request.
 また、デバイスアクセス制御部17は、リクエスト調停部15、またはアドレス変換制御部16からデータの読み出し要求を受信すると、受信した読み出し要求に格納されている物理アドレスが示すページからデータの読み出しを行う。そして、デバイスアクセス制御部17は、読み出したデータを読み出し要求の発行元に送信する。 Further, when the device access control unit 17 receives a data read request from the request arbitration unit 15 or the address conversion control unit 16, the device access control unit 17 reads data from the page indicated by the physical address stored in the received read request. Then, the device access control unit 17 transmits the read data to the read request issuer.
 データ整列制御部18は、所定のタイミングでデータの整列処理を実行する。例えば、データ整列制御部18は、各論理ブロックアドレス「0」~「2-1」について、以下の処理を実行する。まず、データ整列制御部18は、直接、もしくはリクエスト調停部15、およびアドレス変換制御部16を介して、早引きテーブル13の各エントリのうち、整列処理の対象となる論理ブロックアドレスと対応付けられたエントリの登録フラグを確認する。そして、データ整列制御部18は、登録フラグが「1」である場合は、次の論理ブロックアドレスと対応付けられたエントリの登録フラグを確認する。 The data alignment control unit 18 executes data alignment processing at a predetermined timing. For example, the data alignment control unit 18 executes the following processing for each logical block address “0” to “2 p −1”. First, the data alignment control unit 18 is associated with the logical block address that is the target of the alignment process among the entries of the early lookup table 13 directly or through the request arbitration unit 15 and the address conversion control unit 16. Check the registration flag of the entry. When the registration flag is “1”, the data alignment control unit 18 checks the registration flag of the entry associated with the next logical block address.
 そして、データ整列制御部18は、整列処理の対象となる論理ブロックアドレスと対応付けられたエントリの登録フラグが「0」である場合は、以下の処理を実行する。まず、データ整列制御部18は、データの整列先となる予備物理ブロックを確保する。例えば、データ整列制御部18は、ガベージコレクション制御部19にガベージコレクションを実行させ、予備物理ブロックを確保する。そして、データ整列制御部18は、各論理ページ番号「0」~「2-1」が示すページのデータを、予備物理ブロックの各物理ページ番号「0」~「2-1」が示すページに移動させる。 When the registration flag of the entry associated with the logical block address that is the target of the alignment process is “0”, the data alignment control unit 18 executes the following process. First, the data alignment control unit 18 secures a spare physical block that is a data alignment destination. For example, the data alignment control unit 18 causes the garbage collection control unit 19 to execute garbage collection to secure a spare physical block. Then, the data alignment control unit 18 indicates the data of the pages indicated by the logical page numbers “0” to “2 q −1” as indicated by the physical page numbers “0” to “2 q −1” of the spare physical block. Move to page.
 詳細な例を説明する。例えば、データ整列制御部18は、ある論理ブロックアドレス「x」について整列処理を行うため、物理ブロックアドレス「X」の予備物理ブロックを確保する。すると、データ整列制御部18は、論理ブロックアドレス「x」、論理ページ番号「0」が示すページのデータを読み出すよう読み出し要求を発行する。そして、データ整列制御部18は、読み出したデータを物理ブロックアドレス「X」、論理ページ番号「0」が示すページに書き込むよう書き込み要求を発行する。 A detailed example will be described. For example, the data alignment control unit 18 secures a spare physical block with the physical block address “X” in order to perform alignment processing for a certain logical block address “x”. Then, the data alignment control unit 18 issues a read request to read the data of the page indicated by the logical block address “x” and the logical page number “0”. Then, the data alignment control unit 18 issues a write request to write the read data to the page indicated by the physical block address “X” and the logical page number “0”.
 次に、データ整列制御部18は、論理ブロックアドレス「x」、論理ページ番号「1」が示すページのデータを読み出すよう読み出し要求を発行する。そして、データ整列制御部18は、読み出したデータを物理ブロックアドレス「X」、論理ページ番号「1」が示すページに書き込むよう書き込み要求を発行する。このような処理を論理ページ番号「2-1」まで繰り返し実行することで、データ整列制御部18は、論理ブロックアドレスが「x」となるデータについての整列を行う。 Next, the data alignment control unit 18 issues a read request to read the data of the page indicated by the logical block address “x” and the logical page number “1”. Then, the data alignment control unit 18 issues a write request to write the read data to the page indicated by the physical block address “X” and the logical page number “1”. By repeatedly executing such processing up to the logical page number “2 q −1”, the data alignment control unit 18 performs alignment for data whose logical block address is “x”.
 また、データ整列制御部18は、1つの論理ブロックアドレスについて整列処理が終了すると、早引きテーブル13の更新を行うよう、リクエスト調停部15を介して、デバイスアクセス制御部17に指示する。詳細には、データ整列制御部18は、整列処理を行った論理ブロックアドレスと対応付けられたエントリに、データの移動先となる物理ブロックを示す物理ブロックを格納するよう指示する。この結果、デバイスアクセス制御部17は、整列処理を行った論理ブロックアドレスと対応付けられたエントリに、データの移動先となる物理ブロックアドレスを格納し、登録フラグを「1」に変更する。 In addition, when the alignment process is completed for one logical block address, the data alignment control unit 18 instructs the device access control unit 17 via the request arbitration unit 15 to update the early lookup table 13. Specifically, the data alignment control unit 18 instructs to store a physical block indicating a physical block that is a data transfer destination in an entry associated with the logical block address subjected to the alignment process. As a result, the device access control unit 17 stores the physical block address that is the data transfer destination in the entry associated with the logical block address that has undergone the alignment process, and changes the registration flag to “1”.
 また、データ整列制御部18は、1つの論理ブロックアドレスについて整列処理が終了すると、次の論理ブロックアドレスと対応付けられた早引きテーブル13のエントリの登録フラグが「0」であるか否かを判別する。このような処理を全ての論理ブロックアドレスについて実行することで、データ整列制御部18は、全てのデータを整列させることができる。 In addition, when the alignment process is completed for one logical block address, the data alignment control unit 18 determines whether or not the registration flag of the entry in the early lookup table 13 associated with the next logical block address is “0”. Determine. By executing such processing for all logical block addresses, the data alignment control unit 18 can align all data.
 ガベージコレクション制御部19は、一部のページに有効なデータが格納されている物理ブロックを予備ブロックとするガベージコレクションを実行する。例えば、ガベージコレクション制御部19は、アドレス変換テーブル20の読み出し等を行い、一部のページに有効なデータが格納されている物理ブロックを消去対象ブロックとして識別する。そして、ガベージコレクション制御部19は、消去対象ブロック内の有効なデータが格納されているページを指定して読み出し要求を発行し、データの読み出しを行う。 The garbage collection control unit 19 executes garbage collection using a physical block in which valid data is stored in some pages as a spare block. For example, the garbage collection control unit 19 reads the address conversion table 20 and identifies physical blocks in which valid data is stored in some pages as erasure target blocks. The garbage collection control unit 19 issues a read request by designating a page storing valid data in the erasure target block, and reads the data.
 次に、ガベージコレクション制御部19は、消去対象ブロック以外の物理ブロックのうち、有効なデータが格納されていないページを指定して、読み出したデータの書き込みを行う。そして、ガベージコレクション制御部19は、消去対象ブロックのデータの消去を指示する消去要求をリクエスト調停部15に出力する。このような場合にはリクエスト調停部15はデバイスアクセス制御部17に消去要求を転送する。すると、デバイスアクセス制御部17は、消去対象となるブロックのデータを消去する。 Next, the garbage collection control unit 19 designates a page in which valid data is not stored among the physical blocks other than the erasure target block, and writes the read data. Then, the garbage collection control unit 19 outputs to the request arbitration unit 15 an erasure request instructing erasure of data in the erasure target block. In such a case, the request arbitration unit 15 transfers an erasure request to the device access control unit 17. Then, the device access control unit 17 erases the data of the block to be erased.
 例えば、リクエスタインタフェース部14、リクエスト調停部15、アドレス変換制御部16、デバイスアクセス制御部17、データ整列制御部18、ガベージコレクション制御部19とは、電子回路である。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路、またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。 For example, the requester interface unit 14, the request arbitration unit 15, the address translation control unit 16, the device access control unit 17, the data alignment control unit 18, and the garbage collection control unit 19 are electronic circuits. Here, as an example of the electronic circuit, 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.
 また、変換テーブルタグ11、アドレス変換テーブルキャッシュ12、早引きテーブル13とは、RAM(Random Access Memory)、フラッシュメモリ(flash memory)などの半導体メモリ素子などの記憶装置に格納された情報である。 Further, the conversion table tag 11, the address conversion table cache 12, and the quick lookup table 13 are information stored in a storage device such as a semiconductor memory element such as a RAM (Random Access Memory) or a flash memory.
 次に、図13を用いて、NANDコントローラ6aがデータの読み出しを行う際に実行する処理の流れについて説明する。図13は、データの読み出し処理の流れを説明するためのフローチャートである。例えば、NANDコントローラ6aは、各CPU3a、3bが実行するプログラム等により実現されるシステムから論理アドレスを含む読み出し要求を受信する(ステップS101)。すると、NANDコントローラ6aは、早引きテーブル13の各エントリのうち、受信した論理アドレスの上位ビットである論理ブロックアドレスと対応付けられたエントリを検索する(ステップS102)。そして、NANDコントローラ6aは、検索したエントリの登録フラグが「1」であるか否かを判定する(ステップS103)。 Next, the flow of processing executed when the NAND controller 6a reads data will be described with reference to FIG. FIG. 13 is a flowchart for explaining the flow of data read processing. For example, the NAND controller 6a receives a read request including a logical address from a system realized by a program executed by the CPUs 3a and 3b (step S101). Then, the NAND controller 6a searches for an entry associated with the logical block address, which is the higher-order bit of the received logical address, from among the entries in the early lookup table 13 (step S102). Then, the NAND controller 6a determines whether or not the registration flag of the searched entry is “1” (step S103).
 ここで、NANDコントローラ6aは、検索したエントリの登録フラグが「1」ではない場合は(ステップS103否定)、変換テーブルタグ11の各エントリのうち受信した論理アドレスの上位アドレスと対応付けられたエントリを検索する(ステップS104)。また、NANDコントローラ6aは、検索したエントリに格納されている物理アドレスを用いて、アドレス変換テーブル20の一部をアドレス変換テーブルキャッシュ12として取得する。そして、NANDコントローラ6aは、取得したアドレス変換テーブルキャッシュ12の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリを検索する(ステップS105)。 Here, if the registration flag of the searched entry is not “1” (No at Step S103), the NAND controller 6a is an entry associated with the higher-order address of the received logical address among the entries of the conversion table tag 11. Is searched (step S104). Further, the NAND controller 6a acquires a part of the address conversion table 20 as the address conversion table cache 12 using the physical address stored in the searched entry. Then, the NAND controller 6a searches for the entry associated with the lower address of the received logical address among the obtained entries of the address translation table cache 12 (step S105).
 ここで、NANDコントローラ6aは、検索したエントリのバリッドビットが「1」であるか否かを判定する(ステップS106)。そして、NANDコントローラ6aは、検索したエントリのバリッドビットが「1」ではない場合は(ステップS106否定)、アドレス例外エラー通知をシステムに通知し(ステップS107)、処理を異常終了する。一方、NANDコントローラ6aは、検索したエントリのバリッドビットが「1」である場合は(ステップS106肯定)、受信した論理アドレスを検索したエントリに格納された物理アドレスにアドレス変換する(ステップS108)。 Here, the NAND controller 6a determines whether or not the valid bit of the searched entry is “1” (step S106). If the valid bit of the searched entry is not “1” (No at Step S106), the NAND controller 6a notifies the system of an address exception error notification (Step S107), and ends the processing abnormally. On the other hand, if the valid bit of the searched entry is “1” (Yes at Step S106), the NAND controller 6a converts the received logical address into a physical address stored in the searched entry (Step S108).
 そして、NANDコントローラ6aは、取得した物理アドレスを含む読み出し要求(Read)を発行し(ステップS109)。読み出したデータをシステムに返送し(ステップS110)、処理を終了する。一方、NANDコントローラ6aは、検索したエントリの登録フラグが「1」である場合は(ステップS103肯定)、ステップS104~S106の処理をスキップする。そして、NANDコントローラ6aは、検索したエントリに格納されている物理ブロックアドレスと受信した論理アドレスの論理ページ番号とを組み合わせた物理アドレスに論理アドレスを変換する(ステップS108)。 Then, the NAND controller 6a issues a read request (Read) including the acquired physical address (Step S109). The read data is returned to the system (step S110), and the process is terminated. On the other hand, if the registration flag of the searched entry is “1” (Yes at Step S103), the NAND controller 6a skips the processes of Steps S104 to S106. Then, the NAND controller 6a converts the logical address into a physical address that combines the physical block address stored in the searched entry and the logical page number of the received logical address (step S108).
 次に、図14を用いて、NANDコントローラ6aがデータの書き込みを行う際に実行する処理の流れについて説明する。図14は、データの書き込み処理の流れを説明するためのフローチャートである。例えば、NANDコントローラ6aは、システムから論理アドレスを含む書き込み要求を受信する(ステップS200)。すると、NANDコントローラ6aは、早引きテーブル13の各エントリのうち、受信した論理アドレスの上位ビットである論理ブロックアドレスと対応付けられたエントリを検索する(ステップS201)。そして、NANDコントローラ6aは、検索したエントリの登録フラグが「1」であるか否かを判定する(ステップS202)。 Next, the flow of processing executed when the NAND controller 6a writes data will be described with reference to FIG. FIG. 14 is a flowchart for explaining the flow of data write processing. For example, the NAND controller 6a receives a write request including a logical address from the system (step S200). Then, the NAND controller 6a searches for an entry associated with the logical block address, which is the higher-order bit of the received logical address, among the entries in the early lookup table 13 (step S201). Then, the NAND controller 6a determines whether or not the registration flag of the searched entry is “1” (step S202).
 ここで、NANDコントローラ6aは、検索したエントリの登録フラグが「1」ではない場合は(ステップS202否定)、変換テーブルタグ11の各エントリのうち受信した論理アドレスの上位アドレスと対応付けられたエントリを検索する(ステップS203)。また、NANDコントローラ6aは、検索したエントリに格納されている物理アドレスを用いて、アドレス変換テーブル20の一部をアドレス変換テーブルキャッシュ12として取得する。そして、NANDコントローラ6aは、取得したアドレス変換テーブルキャッシュ12の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリを検索する(ステップS204)。 Here, if the registration flag of the searched entry is not “1” (No at Step S202), the NAND controller 6a has an entry associated with the higher-order address of the received logical address among the entries of the conversion table tag 11. Is searched (step S203). Further, the NAND controller 6a acquires a part of the address conversion table 20 as the address conversion table cache 12 using the physical address stored in the searched entry. Then, the NAND controller 6a searches for the entry associated with the lower address of the received logical address among the obtained entries of the address translation table cache 12 (step S204).
 ここで、NANDコントローラ6aは、検索したエントリのバリッドビットが「1」であるか否かを判定する(ステップS205)。そして、NANDコントローラ6aは、バリッドビットが「1」である場合は(ステップS205肯定)、受信した論理アドレスを検索したエントリに格納された物理アドレスにアドレス変換する(ステップS206)。一方、NANDコントローラ6aは、検索したエントリの登録フラグが「1」である場合は(ステップS202肯定)、ステップS203~S205の処理をスキップする。そして、NANDコントローラ6aは、検索したエントリに格納されている物理ブロックアドレスと受信した論理アドレスの論理ページ番号とを組み合わせた物理アドレスに論理アドレスを変換する(ステップS206)。 Here, the NAND controller 6a determines whether or not the valid bit of the searched entry is “1” (step S205). If the valid bit is “1” (Yes at Step S205), the NAND controller 6a converts the received logical address into a physical address stored in the searched entry (Step S206). On the other hand, if the registration flag of the searched entry is “1” (Yes at step S202), the NAND controller 6a skips the processing of steps S203 to S205. Then, the NAND controller 6a converts the logical address into a physical address that combines the physical block address stored in the searched entry and the logical page number of the received logical address (step S206).
 続いて、NANDコントローラ6aは、取得した物理アドレスが示す物理ページに読み出し要求を発行し(ステップS207)、読み出したデータを書き込みデータで更新する(ステップS208)。そして、NANDコントローラ6aは、新たな物理ページに対して、更新したデータの書き込み要求(Write)を発行する(ステップS209)。 Subsequently, the NAND controller 6a issues a read request to the physical page indicated by the acquired physical address (step S207), and updates the read data with the write data (step S208). Then, the NAND controller 6a issues an updated data write request (Write) to the new physical page (step S209).
 また、NANDコントローラ6aは、アドレス変換テーブルキャッシュ12のうち、システムから受信した書き込み要求の論理アドレスに対応付けられた物理アドレスを、新たにデータを書き込んだ物理ページを示す物理アドレスに更新する。そして、NANDコントローラ6aは、アドレス変換テーブルキャッシュ12を記憶デバイス7a~10aに書き戻し、アドレス変換テーブル20を更新する(ステップS210)。 Further, the NAND controller 6a updates the physical address associated with the logical address of the write request received from the system in the address conversion table cache 12 to the physical address indicating the physical page to which data is newly written. Then, the NAND controller 6a writes back the address conversion table cache 12 to the storage devices 7a to 10a, and updates the address conversion table 20 (step S210).
 また、NANDコントローラ6aは、変換テーブルタグ11を更新する(ステップS211)。詳細には、NANDコントローラ6aは、アドレスシステムから受信した論理アドレスの上位ビットと対応付けられたエントリの物理アドレスを、アドレス変換テーブルキャッシュ12を書き戻した物理アドレスに更新する。次に、NANDコントローラ6aは、早引きテーブル13の各エントリのうち、受信した論理アドレスの論理ブロックアドレスと対応付けられたエントリの登録フラグを「0」にすることで無効化する(ステップS212)。その後、NANDコントローラ6aは、完了通知をシステムに返送し(ステップS213)、処理を終了する。 Further, the NAND controller 6a updates the conversion table tag 11 (step S211). Specifically, the NAND controller 6a updates the physical address of the entry associated with the upper bits of the logical address received from the address system to the physical address written back to the address conversion table cache 12. Next, the NAND controller 6a invalidates the entry by setting the registration flag of the entry associated with the logical block address of the received logical address to “0” among the entries of the early lookup table 13 (step S212). . Thereafter, the NAND controller 6a returns a completion notification to the system (step S213) and ends the process.
 なお、NANDコントローラ6aは、検索したエントリのバリッドビットが「0」である場合は、検索したエントリに格納されている物理アドレスが示す物理ページにデータが格納されていないので、ステップS206~S208の処理をスキップする。 Note that if the valid bit of the searched entry is “0”, the NAND controller 6a does not store data in the physical page indicated by the physical address stored in the searched entry. Therefore, the NAND controller 6a performs steps S206 to S208. Skip processing.
 次に、図15を用いて、NANDコントローラ6aが実行する整列処理の流れについて説明する。図15は、整列処理の流れを説明するためのフローチャートである。例えば、NANDコントローラ6aは、所定の時間間隔、もしくはシステムからの実行指示を契機として、図15に示す整列処理を実行する。 Next, the flow of the alignment process executed by the NAND controller 6a will be described with reference to FIG. FIG. 15 is a flowchart for explaining the flow of the alignment process. For example, the NAND controller 6a executes the alignment process shown in FIG. 15 in response to a predetermined time interval or an execution instruction from the system.
 まず、NANDコントローラ6aは、早引きテーブル13の各エントリのうち、論理ブロックアドレス「0」と対応付けられたエントリを検索する(ステップS301)。そして、NANDコントローラ6aは、検索したエントリの登録フラグが「0」であるか否かを判定する(ステップS302)。 First, the NAND controller 6a searches for an entry associated with the logical block address “0” among the entries in the quick lookup table 13 (step S301). Then, the NAND controller 6a determines whether or not the registration flag of the searched entry is “0” (step S302).
 ここで、NANDコントローラ6aは、登録フラグが「0」である場合は(ステップS302肯定)、続くステップS303~S307の整列処理を実行する。まず、NANDコントローラ6aは、整列用の予備物理ブロックを確保する(ステップS303)。次に、NANDコントローラ6aは、論理ブロックアドレスが「0」で論理ページ番号が「0」のページに対して、読み出し要求を発行する(ステップS304)。続いてNANDコントローラ6aは、読み出したデータを、予備物理ブロックの物理ページのうち、論理ページ番号「0」と同じ物理ページ番号が示す物理ページに書き込む(ステップS305)。 Here, when the registration flag is “0” (Yes at Step S302), the NAND controller 6a executes the alignment process of the subsequent Steps S303 to S307. First, the NAND controller 6a secures a spare physical block for alignment (step S303). Next, the NAND controller 6a issues a read request to the page having the logical block address “0” and the logical page number “0” (step S304). Subsequently, the NAND controller 6a writes the read data to the physical page indicated by the same physical page number as the logical page number “0” among the physical pages of the spare physical block (step S305).
 また、NANDコントローラ6aは、論理ブロックアドレスが「0」の全ての論理ページ番号について、データを整列させたか否かを判定する(ステップS306)。そして、NANDコントローラ6aは、論理ブロックアドレスが「0」の全ての論理ページ番号についてデータを整列させていない場合は(ステップS306否定)、他の論理ページ番号(例えば論理ページ番号「1」)について、ステップS304の処理を行う。 Further, the NAND controller 6a determines whether or not the data has been aligned for all the logical page numbers having the logical block address “0” (step S306). If the NAND controller 6a has not aligned the data for all the logical page numbers having the logical block address “0” (No in step S306), the NAND controller 6a performs other logical page numbers (for example, logical page number “1”). The process of step S304 is performed.
 また、NANDコントローラ6aは、論理ブロックアドレスが「0」の全ての論理ページ番号について、データを整列させた場合は(ステップS306肯定)、早引きテーブル13を更新する(ステップS307)。詳細には、NANDコントローラ6aは、早引きテーブル13の各エントリのうち、論理ブロックアドレス「0」と対応付けられたエントリに予備物理ブロックの物理ブロックアドレスを格納し、登録フラグを「1」にする。 Further, when the data is aligned for all the logical page numbers having the logical block address “0” (Yes at Step S306), the NAND controller 6a updates the early lookup table 13 (Step S307). Specifically, the NAND controller 6a stores the physical block address of the spare physical block in the entry associated with the logical block address “0” among the entries of the fast-drawing table 13, and sets the registration flag to “1”. To do.
 その後、NANDコントローラ6aは、整列処理を全ての論理ブロックアドレスについて実行したか否かを判定する(ステップS308)。そして、NANDコントローラ6aは、整列処理を全ての論理ブロックアドレスについて実行していない場合は(ステップS308否定)、次の論理ブロックアドレス(例えば論理ブロックアドレス「1」)について、ステップS301の処理を実行する。また、NANDコントローラ6aは、検索したエントリの登録フラグが「0」ではない場合は(ステップS302否定)、すでに整列処理が行われているので、整列処理をスキップし、ステップS308の処理を実行する。 Thereafter, the NAND controller 6a determines whether or not the alignment process has been executed for all the logical block addresses (step S308). Then, if the alignment process has not been performed for all logical block addresses (No at Step S308), the NAND controller 6a performs the process at Step S301 for the next logical block address (for example, logical block address “1”). To do. If the registration flag of the searched entry is not “0” (No at Step S302), the NAND controller 6a skips the alignment process and executes the process at Step S308 because the alignment process has already been performed. .
[NANDコントローラ6aの効果]
 上述したように、NANDコントローラ6aは、論理ブロックアドレスと論理ページ番号とを含む論理アドレスに、物理ブロックアドレスと物理ページ番号とを対応付けたアドレス変換テーブルキャッシュ12を記憶する。また、NANDコントローラ6aは、1つの論理ブロック番号を選択し、選択した論理ブロック番号を含む論理アドレスと対応付けられた物理アドレスをアドレス変換テーブルキャッシュ12から取得する。そして、NANDコントローラ6aは、取得した物理アドレスが示す物理ページのデータを、1つの物理ブロックに含まれる物理ページであって、各データの論理アドレスに含まれる論理ページ番号と同一の物理ページ番号が示す物理ページに移動させる。その後、NANDコントローラ6aは、データを移動させた物理ブロックの物理ブロックアドレスと、選択した論理ブロック番号とを対応付けて早引きテーブル13に格納する。
[Effect of NAND controller 6a]
As described above, the NAND controller 6a stores the address conversion table cache 12 in which the physical block address and the physical page number are associated with the logical address including the logical block address and the logical page number. In addition, the NAND controller 6a selects one logical block number, and acquires a physical address associated with the logical address including the selected logical block number from the address conversion table cache 12. Then, the NAND controller 6a converts the physical page data indicated by the acquired physical address into the physical page included in one physical block, and has the same physical page number as the logical page number included in the logical address of each data. Move to the indicated physical page. Thereafter, the NAND controller 6a associates the physical block address of the physical block to which the data has been moved with the selected logical block number and stores them in the early lookup table 13.
 また、NANDコントローラ6aは、読み出し対象のデータが格納された論理ページを示す論理アドレスを受信すると、論理アドレスに含まれる論理ブロックアドレスと対応付けられた物理ブロックアドレスを早引きテーブル13から取得する。そして、NANDコントローラ6aは、早引きテーブル13から取得した物理ブロックアドレスが示す物理ブロックに含まれた各物理ページのうち、受信した論理アドレスに含まれる論理ページ番号と同一の物理ページ番号が示す物理ページからデータを読み出す。 Further, when receiving the logical address indicating the logical page in which the data to be read is stored, the NAND controller 6a acquires the physical block address associated with the logical block address included in the logical address from the early lookup table 13. Then, the NAND controller 6a, among the physical pages included in the physical block indicated by the physical block address acquired from the quick lookup table 13, has the physical page number indicated by the same physical page number as the logical page number included in the received logical address. Read data from the page.
 このため、NANDコントローラ6aは、読み出し対象のデータが格納された論理ページを示す論理アドレスを物理アドレスに変換するアドレス変換テーブル20を保持していない場合にも、アドレス変換に要する時間を短縮することができる。この結果、NANDコントローラ6aは、記憶デバイス7a~10aに対するアクセスのレイテンシを改善することができる。 For this reason, the NAND controller 6a can reduce the time required for address conversion even when the address conversion table 20 for converting a logical address indicating a logical page storing read target data into a physical address is not held. Can do. As a result, the NAND controller 6a can improve the latency of access to the storage devices 7a to 10a.
 また、例えば、アドレス変換テーブルの一部を保持する技術では、アドレス変換テーブルのサイズが大きくなると、保持する割合が相対的に小さくなるので、論理アドレスがキャッシュヒットする確率が悪化し、アドレス変換に要する時間が増大してしまう。また、アドレス変換テーブルのサイズが増大すると、変換テーブルタグの大きさも増大するので、変換テーブルタグの一部をキャッシュすることで、回路規模の増大を防ぐ手法が考えられる。しかしながら、このような手法では、記憶デバイスからデータの読み出しや書き込みを行う際に、複数回のアクセスが行われることとなる。この結果、記憶デバイスにアクセスする際のレイテンシが増大してしまう。 In addition, for example, in the technology that holds a part of the address conversion table, the holding ratio becomes relatively small as the size of the address conversion table increases, so the probability that a logical address hits the cache deteriorates, and the address conversion becomes difficult. The time required will increase. Further, as the size of the address conversion table increases, the size of the conversion table tag also increases. Therefore, a technique for preventing an increase in circuit scale by caching a part of the conversion table tag can be considered. However, in such a method, when data is read from or written to the storage device, a plurality of accesses are performed. As a result, latency when accessing the storage device increases.
 しかし、NANDコントローラ6aは、アドレス変換テーブル20の大きさによらず、整列処理を行った論理アドレスについては、必ずアドレス変換を行うことができる。この結果、NANDコントローラ6aは、記憶デバイス7a~10aに対する読み出し性能、および書き込み性能を向上させることができる。 However, regardless of the size of the address conversion table 20, the NAND controller 6a can always perform address conversion on the logical addresses subjected to the alignment processing. As a result, the NAND controller 6a can improve read performance and write performance for the storage devices 7a to 10a.
 また、早引きテーブル13は、記憶デバイス7a~10aが有する物理ブロックの数と同数のエントリで実現可能である。この結果、早引きテーブル13のサイズは、アドレス変換テーブル20に記憶デバイス7a~10aが有する物理ページの数と同数のエントリを設定する場合よりも、非常に小さくなる。このため、NANDコントローラ6aは、回路規模を増大させることなく、記憶デバイス7a~10aに対する読み出し性能、および書き込み性能を向上させることができる。 In addition, the quick lookup table 13 can be realized with the same number of entries as the number of physical blocks included in the storage devices 7a to 10a. As a result, the size of the quick lookup table 13 is much smaller than when the number of entries equal to the number of physical pages included in the storage devices 7a to 10a is set in the address translation table 20. Therefore, the NAND controller 6a can improve the read performance and the write performance for the storage devices 7a to 10a without increasing the circuit scale.
 また、NANDコントローラ6aは、論理アドレスの上位ビットを論理ブロックアドレスとし、論理アドレスの下位ビットを論理ページ番号とする。また、NANDコントローラ6aは、物理アドレスの上位ビットを物理ブロックアドレスとし、物理アドレスの下位ビットを物理ページ番号とする。このため、NANDコントローラ6aは、任意の数の論理ページを早引きテーブルの構成単位とすることができる。また、NANDコントローラ6aは、複雑な処理を行うことなく、容易にアドレス変換を行うことができる。 Also, the NAND controller 6a uses the upper bits of the logical address as the logical block address and the lower bits of the logical address as the logical page number. Also, the NAND controller 6a uses the upper bits of the physical address as the physical block address and the lower bits of the physical address as the physical page number. Therefore, the NAND controller 6a can make any number of logical pages a constituent unit of the early lookup table. The NAND controller 6a can easily perform address conversion without performing complicated processing.
 また、NANDコントローラ6aは、使用されていない物理ページを含む物理ブロックに格納されたデータを他のブロックに複製し、使用されていない物理ページを含む物理ブロック内のデータを消去するガベージコレクション制御部19を有する。そして、NANDコントローラ6aは、ガベージコレクション制御部19がデータを消去した物理ブロックを予備ブロックとして利用するので、記憶デバイス7a~10aの空き容量が少ない場合にも、効率的にデータの整列処理を行うことができる。 Further, the NAND controller 6a duplicates data stored in a physical block including an unused physical page to another block, and erases data in the physical block including an unused physical page. 19 Since the NAND controller 6a uses the physical block from which the garbage collection control unit 19 has erased data as a spare block, the NAND controller 6a efficiently performs data alignment processing even when the free space of the storage devices 7a to 10a is small. be able to.
 上述したNANDコントローラ6aは、データ整列処理を実行する際に、早引きテーブル13の全エントリを対象としていた。しかし、実施例はこれに限定されるものではない。例えば、NANDコントローラ6aは、1回の整列処理で、全論理ブロックアドレスのうち、一部の論理ブロックアドレスのみについて整列制御を行っても良い。 The NAND controller 6a described above targets all the entries in the early lookup table 13 when executing the data alignment process. However, the embodiment is not limited to this. For example, the NAND controller 6a may perform alignment control for only some of the logical block addresses among all the logical block addresses in one alignment process.
 例えば、NANDコントローラ6aは、早引きテーブル13の各エントリについて整列処理を実行し、所定の時間が経過した場合には、整列処理を行った最後の論理ブロックアドレスを記憶する。そして、NANDコントローラ6aは、次回の整列処理を行う際に、記憶した論理ブロックアドレスの次の論理ブロックアドレスから整列処理を再開してもよい。 For example, the NAND controller 6a executes the alignment process for each entry of the early lookup table 13, and stores a last logical block address for which the alignment process has been performed when a predetermined time has elapsed. Then, the NAND controller 6a may restart the alignment process from the logical block address next to the stored logical block address when performing the next alignment process.
 以下、図16を用いて、NANDコントローラ6aが実行する処理の流れについて説明する。図16は、整列処理の第1のバリエーションを説明するためのフローチャートである。なお、図16に示す処理のうち、ステップS403~ステップS409は、図15に示すステップS301~S307と同様の処理を実行するものとして、説明を省略する。 Hereinafter, the flow of processing executed by the NAND controller 6a will be described with reference to FIG. FIG. 16 is a flowchart for explaining a first variation of the alignment process. Of the processes shown in FIG. 16, steps S403 to S409 execute the same processes as steps S301 to S307 shown in FIG.
 例えば、NANDコントローラ6aは、前回の整列処理において最後に整列処理を行った論理ブロックアドレスである終了アドレスをロードする(ステップS401)。次に、NANDコントローラ6aは、ロードした終了アドレスに1を加算した値を整列処理の開始アドレスとする(ステップS402)。そして、NANDコントローラ6aは、開始アドレスからステップS403の処理を実行する。 For example, the NAND controller 6a loads the end address, which is the logical block address that was last subjected to the alignment process in the previous alignment process (step S401). Next, the NAND controller 6a sets a value obtained by adding 1 to the loaded end address as the start address of the alignment process (step S402). Then, the NAND controller 6a executes the process of step S403 from the start address.
 また、NANDコントローラ6aは、ステップS409の処理を実行すると、整列処理を開始してから一定時間が経過したか否かを判定する(ステップS410)。そして、NANDコントローラ6aは、一定時間が経過している場合は(ステップS410肯定)、整列処理を実行した最後の論理ブロックアドレスを終了アドレスとして保存し(ステップS411)、処理を終了する。一方、NANDコントローラ6aは、整列処理を開始してから一定時間が経過していない場合は(ステップS410否定)、次の論理ブロックアドレスについて、ステップS403の処理を実行する。 Further, when executing the process of step S409, the NAND controller 6a determines whether or not a predetermined time has elapsed since the start of the alignment process (step S410). If the predetermined time has elapsed (Yes at Step S410), the NAND controller 6a stores the last logical block address on which the alignment process has been executed as an end address (Step S411), and ends the process. On the other hand, if the predetermined time has not elapsed since the start of the alignment process (No at Step S410), the NAND controller 6a executes the process at Step S403 for the next logical block address.
 また、NANDコントローラ6aは、早引きテーブル13の各エントリを複数のグループに分割し、各グループにグループ番号(グループNo)を付与する。そして、NANDコントローラ6aは、1回の整列処理で1つのグループについてのみ整列処理を行っても良い。 Also, the NAND controller 6a divides each entry in the quick-draw table 13 into a plurality of groups, and assigns a group number (group number) to each group. The NAND controller 6a may perform the alignment process only for one group in one alignment process.
 例えば、図17は、整列処理の第2のバリエーションを説明するためのフローチャートである。なお、図17に示す処理のうち、ステップS503~ステップS509は、図15に示すステップS301~S307と同様の処理を実行するものとして、説明を省略する。 For example, FIG. 17 is a flowchart for explaining the second variation of the alignment process. Of the processes shown in FIG. 17, steps S503 to S509 are the same as steps S301 to S307 shown in FIG.
 例えば、NANDコントローラ6aは、前回の整列処理において最後に整列処理を行ったグループ番号をロードする(ステップS501)。次に、NANDコントローラ6aは、ロードしたグループ番号の次のグループ番号を整列処理の対象とする(ステップS502)。そして、NANDコントローラ6aは、整列処理の対象とするグループ番号が付与された最初のエントリについて、ステップS503の処理を実行する。 For example, the NAND controller 6a loads the group number that was last subjected to the alignment process in the previous alignment process (step S501). Next, the NAND controller 6a sets the group number next to the loaded group number as the target of the alignment process (step S502). Then, the NAND controller 6a executes the process of step S503 for the first entry to which the group number that is the target of the alignment process is assigned.
 また、NANDコントローラ6aは、ステップS509の処理を実行すると、早引きテーブル13の各エントリのうち、整列処理の対象となるグループ番号が付与された全てのエントリについて整列処理を行ったか否か判定する(ステップS510)。そして、NANDコントローラ6aは、整列処理の対象となるグループ番号が付与された全てのエントリについて整列処理を行った場合は(ステップS510肯定)、整列処理を実行したグループ番号を保存し(ステップS511)、処理を終了する。一方、NANDコントローラ6aは、整列処理の対象となるグループ番号が付与された全てのエントリについて整列処理を行っていない場合は(ステップS510否定)、次の論理ブロックアドレスについて、ステップS503の処理を実行する。 Further, when executing the process of step S509, the NAND controller 6a determines whether or not the alignment process has been performed on all the entries to which the group number to be subjected to the alignment process is assigned among the entries in the quick-draw table 13. (Step S510). If the NAND controller 6a performs the alignment process for all the entries to which the group number to be the alignment process is assigned (Yes in step S510), the NAND controller 6a stores the group number for which the alignment process has been performed (step S511). The process is terminated. On the other hand, if the NAND controller 6a has not performed the alignment process for all entries to which the group number to be subjected to the alignment process has been assigned (No at step S510), the NAND controller 6a executes the process of step S503 for the next logical block address. To do.
 NANDコントローラ6aは、論理ブロックアドレスの一部ずつについて整列処理を実行した場合は、1回の整列処理に要する処理時間を短縮することができる。この結果、NANDコントローラ6aは、整列処理のスケジューリングを柔軟にすることができる。 The NAND controller 6a can shorten the processing time required for one alignment process when the alignment process is executed for each part of the logical block address. As a result, the NAND controller 6a can make scheduling of the alignment process flexible.
 また、NANDコントローラ6aは、読み出し要求、または書き込み要求の発生頻度を論理ブロックアドレスごとに計数し、読み出し要求の発生頻度が多く、書き込み要求の発生頻度が少ない論理ブロックアドレスについて、整列処理を実行しても良い。以下、読み出し要求の発生頻度が多く、書き込み要求の発生頻度が少ない論理ブロックアドレスのグループについて、整列処理を実行するNANDコントローラ6cについて説明する。 In addition, the NAND controller 6a counts the frequency of occurrence of read requests or write requests for each logical block address, and executes alignment processing for logical block addresses with a high frequency of read requests and a low frequency of write requests. May be. Hereinafter, the NAND controller 6c that executes the alignment process for a group of logical block addresses that have a high frequency of read requests and a low frequency of write requests will be described.
 図18は、読み出し要求と書き込み要求との発生頻度に応じて整列処理を実行するNANDコントローラの機能構成を説明する図である。なお、図18に示すNANDコントローラ6cの機能構成のうち、図6に示すNANDコントローラ6aと同様の機能構成については、同一の符号を付し、説明を省略する。 FIG. 18 is a diagram illustrating a functional configuration of a NAND controller that executes alignment processing according to the frequency of occurrence of read requests and write requests. Of the functional configuration of the NAND controller 6c shown in FIG. 18, the same functional configuration as that of the NAND controller 6a shown in FIG.
 例えば、NANDコントローラ6cは、データ整列制御部18a、リクエストカウンタ22を有する。リクエストカウンタ22は、リクエスタインタフェース部14がI/Oハブ4を介して受信した読み出し要求、および書き込み要求の内容を取得する。そして、リクエストカウンタ22は、複数の論理ブロックアドレスを含むグループごとに、リクエスタインタフェース部14が受信した読み出し要求の数、および書き込み要求の数を計数する。 For example, the NAND controller 6c includes a data alignment control unit 18a and a request counter 22. The request counter 22 acquires the contents of the read request and the write request received by the requester interface unit 14 via the I / O hub 4. The request counter 22 counts the number of read requests and the number of write requests received by the requester interface unit 14 for each group including a plurality of logical block addresses.
 また、リクエストカウンタ22は、データ整列制御部18aから整列処理の実行通知を受信すると、グループごとに、計数した読み出し要求の数から書き込み要求の数を減算した値を算出する。そして、リクエストカウンタ22は、算出した値が最も大きいグループに含まれる論理ブロックアドレスをデータ整列制御部18aに通知する。すなわち、リクエストカウンタ22は、読み出し要求の数が大きく、書き込み要求の数が少ないグループに含まれる論理ブロックアドレスをデータ整列制御部18aに通知する。 Further, when the request counter 22 receives the notification of execution of the alignment process from the data alignment control unit 18a, the request counter 22 calculates a value obtained by subtracting the number of write requests from the number of read requests counted for each group. Then, the request counter 22 notifies the data alignment control unit 18a of the logical block address included in the group having the largest calculated value. That is, the request counter 22 notifies the data alignment control unit 18a of logical block addresses included in a group having a large number of read requests and a small number of write requests.
 データ整列制御部18aは、所定の時間間隔、もしくはシステムからの整列処理実行要求に応じて、整列処理を実行する場合は、整列処理の実行通知をリクエストカウンタ22に通知する。そして、データ整列制御部18aは、リクエストカウンタ22から論理ブロックアドレスを受信すると、データ整列制御部18と同様に、受信した論理ブロックアドレスについて整列処理を実行する。 The data alignment control unit 18a notifies the request counter 22 of an alignment process execution notification when executing the alignment process in response to a predetermined time interval or an alignment process execution request from the system. When the data alignment control unit 18a receives the logical block address from the request counter 22, the data alignment control unit 18a executes alignment processing on the received logical block address in the same manner as the data alignment control unit 18.
 例えば、データ整列制御部18a、リクエストカウンタ22とは、電子回路である。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路、またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。 For example, the data alignment control unit 18a and the request counter 22 are electronic circuits. Here, as an example of the electronic circuit, 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.
 次に、図19を用いて、NANDコントローラ6cが実行する整列処理の流れを説明する。図19は、整列処理の第3のバリエーションを説明するためのフローチャートである。なお、図19に示す処理のうち、ステップS603~ステップS609は、図15に示すステップS301~S307と同様の処理を実行するものとして、説明を省略する。 Next, the flow of alignment processing executed by the NAND controller 6c will be described with reference to FIG. FIG. 19 is a flowchart for explaining a third variation of the alignment process. Of the processes shown in FIG. 19, steps S603 to S609 are the same as the processes in steps S301 to S307 shown in FIG.
 例えば、NANDコントローラ6cは、各グループの読み出し要求の数から書き込み要求の数を減算する(ステップS601)。次に、NANDコントローラ6cは、減算結果の値が最も大きいグループを今回の整列処理の対象に設定する(ステップS602)。そして、NANDコントローラ6cは、整列処理の対象となったグループに含まれる論理アドレスについて、ステップS603の処理を実行する。また、NANDコントローラ6cは、ステップS609の処理を実行すると、グループ内の全ての論理ブロックアドレスについて整列処理を実行したか否かを判定する(ステップS610)。 For example, the NAND controller 6c subtracts the number of write requests from the number of read requests for each group (step S601). Next, the NAND controller 6c sets the group with the largest subtraction result value as the target of the current alignment process (step S602). Then, the NAND controller 6c executes the process of step S603 for the logical addresses included in the group subjected to the alignment process. Further, when executing the process of step S609, the NAND controller 6c determines whether or not the alignment process has been executed for all the logical block addresses in the group (step S610).
 そして、NANDコントローラ6cは、グループ内の全ての論理ブロックアドレスについて整列処理を行った場合は(ステップS610肯定)、処理を終了する。一方、NANDコントローラ6cは、グループ内全ての論理ブロックアドレスについて整列処理を行っていない場合は(ステップS610否定)、グループ内の次の論理ブロックアドレスについて、ステップS603の処理を実行する。 Then, if the NAND controller 6c has performed the alignment process for all the logical block addresses in the group (Yes at step S610), the process ends. On the other hand, if the NAND controller 6c has not performed the alignment process for all the logical block addresses in the group (No in step S610), the NAND controller 6c executes the process of step S603 for the next logical block address in the group.
[NANDコントローラ6cの効果]
 上述したように、NANDコントローラ6cは、論理ブロックアドレスごとに、読み出し要求の数と書き込み要求の数とを計数する。そして、NANDコントローラ6cは、読み出し要求の数から書き込み要求の数を減算した数が最も多い論理ブロックアドレスについて、整列処理を実行する。このため、NANDコントローラ6cは、効果的な整列処理を実行することができる。
[Effect of NAND controller 6c]
As described above, the NAND controller 6c counts the number of read requests and the number of write requests for each logical block address. Then, the NAND controller 6c executes the alignment process for the logical block address having the largest number obtained by subtracting the number of write requests from the number of read requests. For this reason, the NAND controller 6c can execute an effective alignment process.
 すなわち、読み出し要求の数が多く、書き込み要求の数が少ない論理ブロックアドレスの各論理ページを物理ブロック上で整列させた場合は、無効になる確率が少なく、早引きテーブル13を用いたアドレス変換が多く実行されると考えられる。このため、NANDコントローラ6cは、読み出し要求の数が多く、書き込み要求の数が少ない論理ブロックアドレスを優先的に整列させるので、効率的な整列処理を実行することができる。 That is, when logical pages with logical block addresses with a large number of read requests and a small number of write requests are aligned on a physical block, there is little probability of invalidity, and address conversion using the early lookup table 13 is performed. Many are thought to be implemented. For this reason, the NAND controller 6c preferentially aligns the logical block addresses with a large number of read requests and a small number of write requests, so that an efficient alignment process can be executed.
 実施例1、2では、論理ブロック、および物理ブロックを早引きテーブル13に登録したデータ単位としたが、実施例はこれに限定されるものではない。すなわち、NANDコントローラ6a~6cは、任意のデータ単位で、論理アドレス、および物理アドレスを分割し、早引きテーブル13に登録してもよい。 In the first and second embodiments, the logical unit and the physical block are the data units registered in the quick-drawing table 13, but the embodiment is not limited to this. That is, the NAND controllers 6a to 6c may divide the logical address and the physical address in arbitrary data units and register them in the early lookup table 13.
 例えば、NANDコントローラ6a~6cは、論理アドレスの上位iビットと、物理アドレスの上位iビットとを対応付けて早引きテーブル13としてもよい。また、このような分割を行う場合は、変換テーブルタグ11と早引きテーブル13とを共通化してもよい。 For example, the NAND controllers 6a to 6c may associate the upper i bits of the logical address with the upper i bits of the physical address as the fast lookup table 13. Further, when such division is performed, the conversion table tag 11 and the quick lookup table 13 may be shared.
 以下、図20を用いて、変換テーブルタグ11と早引きテーブル13とを共通化したNANDコントローラ6dについて説明する。図20は、変換テーブルタグと早引きテーブルとを共通化したNANDコントローラの機能構成を説明する図である。なお、図20に示すNANDコントローラ6dの機能構成のうち、図6に示すNANDコントローラ6aと同様の機能構成については、同一の符号を付し、説明を省略する。 Hereinafter, a NAND controller 6d in which the conversion table tag 11 and the quick lookup table 13 are made common will be described with reference to FIG. FIG. 20 is a diagram for explaining a functional configuration of a NAND controller in which a conversion table tag and a quick lookup table are shared. Of the functional configuration of the NAND controller 6d shown in FIG. 20, the same functional configuration as that of the NAND controller 6a shown in FIG.
 例えば、NANDコントローラ6dは、早引きテーブル13a、およびアドレス変換制御部16aを有する。早引きテーブル13aは、論理アドレスのうち上位iビットと対応付けられた複数のエントリを有する。そして、早引きテーブル13aは、早引きテーブル13と同様に、各エントリに登録フラグと、物理アドレスの上位iビットとを対応付けて記憶する。また、早引きテーブル13aは、変換テーブルタグ11と同様に、各エントリに、各エントリと対応付けられた上位アドレスを含む論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが格納された物理アドレスをさらに格納する。 For example, the NAND controller 6d includes a quick lookup table 13a and an address conversion control unit 16a. The early lookup table 13a has a plurality of entries associated with upper i bits of the logical address. In the same manner as the early lookup table 13, the early lookup table 13a stores each entry in association with a registration flag and the higher-order i bits of the physical address. Similarly to the translation table tag 11, the fast lookup table 13 a is a physical address in which an address translation table for converting a logical address including a higher address associated with each entry into a physical address is stored in each entry. Is stored further.
 アドレス変換制御部16aは、アドレス変換制御部16と同様の処理を行う。この際、アドレス変換制御部16aは、早引きテーブル13aを変換テーブルタグ11、および早引きテーブル13として利用する。以下、図21を用いて、アドレス変換制御部16aが実行するアドレス変換処理の流れを説明する。 The address translation control unit 16a performs the same processing as the address translation control unit 16. At this time, the address conversion control unit 16 a uses the early lookup table 13 a as the translation table tag 11 and the early lookup table 13. Hereinafter, the flow of address conversion processing executed by the address conversion control unit 16a will be described with reference to FIG.
 図21は、変換テーブルタグと早引きテーブルとを共通化した際のアドレス変換処理の流れを説明する図である。図21に示すように早引きテーブル13aの各エントリには、論理アドレスの上位iビットである上位アドレス「0」~「2-1」が対応付けられている。また、早引きテーブル13aの各エントリには、物理アドレスの上位iビットである「A」~「M」が格納されている。また、早引きテーブル13aの各エントリには、対応する上位アドレスを含む論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが格納された物理アドレス「a」~「m」が格納されている。 FIG. 21 is a diagram for explaining the flow of the address conversion process when the conversion table tag and the early lookup table are shared. As shown in FIG. 21, each entry of the early lookup table 13a is associated with upper addresses “0” to “2 i −1” which are upper i bits of the logical address. In addition, each entry of the fast-drawing table 13a stores “A” to “M” that are higher-order i bits of the physical address. Each entry of the early lookup table 13a stores physical addresses “a” to “m” in which an address conversion table for converting a logical address including a corresponding higher address into a physical address is stored.
 例えば、アドレス変換制御部16aは、論理アドレスを受信すると、図21中(a)に示すように、早引きテーブル13aの各エントリのうち、受信した論理アドレスの上位アドレスと対応付けられたエントリを識別する。例えば、アドレス変換制御部16aは、図21に示す例では、上位アドレス「1」と対応付けられたエントリを識別する。 For example, when the address translation control unit 16a receives the logical address, as shown in FIG. 21 (a), the entry associated with the higher order address of the received logical address among the entries of the early lookup table 13a. Identify. For example, in the example shown in FIG. 21, the address translation control unit 16a identifies an entry associated with the upper address “1”.
 そして、アドレス変換制御部16aは、識別したエントリの登録フラグが「0」である場合は、以下の処理を実行する。まず、アドレス変換制御部16aは、識別したエントリに格納された物理アドレス「b」を取得し、図21中(b)に示すように、物理アドレス「b」に格納されているアドレス変換テーブル20の一部を取得する。そして、アドレス変換制御部16aは、図21中(c)に示すように、取得したアドレス変換テーブル20の一部をアドレス変換テーブルキャッシュ12とする。 Then, the address conversion control unit 16a executes the following process when the registration flag of the identified entry is “0”. First, the address translation control unit 16a acquires the physical address “b” stored in the identified entry, and as shown in FIG. 21B, the address translation table 20 stored in the physical address “b”. To get a part of. Then, the address translation control unit 16a sets a part of the acquired address translation table 20 as the address translation table cache 12 as shown in (c) of FIG.
 また、アドレス変換制御部16aは、図21中(d)に示すように、アドレス変換テーブルキャッシュ12の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリを識別する。そして、アドレス変換制御部16aは、識別したエントリに格納されている物理アドレス「BC」を変換後の物理アドレスとして、リクエスト調停部15に出力する。 Further, as shown in FIG. 21 (d), the address translation control unit 16a identifies an entry associated with the lower address of the received logical address among the entries of the address translation table cache 12. Then, the address translation control unit 16a outputs the physical address “BC” stored in the identified entry to the request arbitration unit 15 as a translated physical address.
 なお、アドレス変換制御部16aは、例えば、受信した論理アドレスの上位アドレスが「2-1」であった場合は、早引きテーブル13aの各エントリのうち、上位アドレス「2-1」と対応付けられたエントリを識別する。そして、アドレス変換制御部16aは、識別したエントリの登録フラグが「1」であるので、識別したエントリに格納されている物理アドレスの上位iビット「M」を取得する。そして、アドレス変換制御部16aは、取得した「M」を上位iビットとし、受信した論理アドレスの下位アドレスを下位jビットとする物理アドレスを変換後の物理アドレスとして、リクエスト調停部15に出力する。 The address conversion control section 16a, for example, if the upper address of the logical address received is "2 i -1", of each entry in the fast lookup table 13a, the upper address "2 i -1" Identifies the associated entry. Then, since the registration flag of the identified entry is “1”, the address translation control unit 16a acquires the upper i bits “M” of the physical address stored in the identified entry. Then, the address translation control unit 16a outputs, to the request arbitration unit 15, a physical address having the acquired “M” as the upper i bits and the lower address of the received logical address as the lower j bits as the translated physical address. .
 例えば、アドレス変換制御部16aは、電子回路である。ここで、電子回路の例として、ASICやFPGAなどの集積回路、またはCPUやMPUなどを適用する。また、早引きテーブル13aとは、半導体メモリ等の記憶装置に記憶される情報である。 For example, the address conversion control unit 16a is an electronic circuit. Here, as an example of the electronic circuit, an integrated circuit such as an ASIC or FPGA, or a CPU or MPU is applied. The fast-drawing table 13a is information stored in a storage device such as a semiconductor memory.
[NANDコントローラ6dの効果]
 このように、NANDコントローラ6dは、アドレス変換テーブルキャッシュ12を記憶する。また、NANDコントローラ6dは、論理アドレスの上位ビットと、登録フラグと、データの整理先となる物理記憶領域を示す物理アドレスの上位ビットとを対応付けたエントリを有する早引きテーブル13aを有する。また、NANDコントローラ6dは、早引きテーブル13aに、同一エントリの論理アドレスの上位ビットを含む論理アドレスを物理アドレスに変換する変換テーブルが格納された物理アドレスを各エントリに格納する。
[Effect of NAND controller 6d]
Thus, the NAND controller 6d stores the address conversion table cache 12. The NAND controller 6d has a fast-drawing table 13a having an entry in which the upper bits of the logical address, the registration flag, and the upper bits of the physical address indicating the physical storage area to which data is arranged are associated with each other. In addition, the NAND controller 6d stores, in each entry, a physical address in which a conversion table for converting a logical address including the upper bits of the logical address of the same entry into a physical address is stored in the fast-draw table 13a.
 そして、NANDコントローラ6dは、読み出し対象の論理アドレスから上位ビットを取得し、取得した上位ビットと対応付けられた登録フラグが「0」である場合は、取得した上位ビットと対応付けられた物理アドレスを用いて、アドレス変換テーブルを取得する。また、NANDコントローラ6dは、取得した上位ビットと対応付けられた登録フラグが「1」である場合は、取得した上位ビットと対応付けられた物理アドレスの上位ビットを取得する。そして、NANDコントローラ6dは、取得した上位ビットに読み出し対象の論理アドレスの下位ビットを付加した物理アドレスが示すページからデータの読み出しを行う。 Then, the NAND controller 6d acquires the upper bits from the logical address to be read, and if the registration flag associated with the acquired upper bits is “0”, the physical address associated with the acquired upper bits. Is used to obtain the address conversion table. In addition, when the registration flag associated with the acquired upper bit is “1”, the NAND controller 6d acquires the upper bit of the physical address associated with the acquired upper bit. Then, the NAND controller 6d reads data from the page indicated by the physical address obtained by adding the lower bits of the logical address to be read to the acquired upper bits.
 このように、NANDコントローラ6dは、変換テーブルタグ11と早引きテーブル13aとを1つのテーブルに統合する。この結果、NANDコントローラ6dは、テーブルの検索や更新に要するレイテンシを削減し、記憶デバイス7a~10aに対するアクセス性能を向上させることができる。また、NANDコントローラ6dは、変換テーブルタグ11と早引きテーブル13aとを記憶するための記憶容量を削減するので、回路規模を縮小することができる。 In this way, the NAND controller 6d integrates the conversion table tag 11 and the quick lookup table 13a into one table. As a result, the NAND controller 6d can reduce the latency required for table search and update, and improve the access performance to the storage devices 7a to 10a. Further, since the NAND controller 6d reduces the storage capacity for storing the conversion table tag 11 and the fast-drawing table 13a, the circuit scale can be reduced.
 実施例1~3では、早引きテーブルをNANDコントローラ6a~6d上に設置する例について記載したが、実施例はこれに限定されるものではない。そこで、以下の実施例4では、早引きテーブル13aを記憶デバイス7a~10a上に設置し、早引きテーブル13aの一部を早引きテーブルキャッシュ13bとして保持するNANDコントローラ6eについて説明する。 In the first to third embodiments, an example in which the quick-drawing table is installed on the NAND controllers 6a to 6d has been described, but the embodiments are not limited to this. Therefore, in the following fourth embodiment, a NAND controller 6e will be described in which the early lookup table 13a is installed on the storage devices 7a to 10a and a part of the early lookup table 13a is held as the early lookup table cache 13b.
 図22は、早引きテーブルの一部を保持するNANDコントローラの機能構成を説明する図である。なお、図22に示すNANDコントローラ6eの機能構成のうち、図6に示すNANDコントローラ6aと同様の機能構成については、同一の符号を付し、説明を省略する。例えば、NANDコントローラ6eは、早引きテーブルタグ11a、アドレス変換制御部16b、および早引きテーブルキャッシュ13bを有する。また記憶デバイス7a~10aは、早引きテーブル13aを記憶する。 FIG. 22 is a diagram for explaining the functional configuration of the NAND controller that holds a part of the quick lookup table. Of the functional configuration of the NAND controller 6e shown in FIG. 22, the same functional configuration as that of the NAND controller 6a shown in FIG. For example, the NAND controller 6e includes an early lookup table tag 11a, an address translation control unit 16b, and an early lookup table cache 13b. Further, the storage devices 7a to 10a store the quick-drawing table 13a.
 早引きテーブルタグ11aは、論理アドレスの上位アドレスのうちの上位kビットであるインデックスと、対応するインデックスを含んだ上位アドレスを含む各論理アドレスの早引きテーブルを記憶する物理アドレスとを対応付けて記憶する。また、早引きテーブルキャッシュ13bは、記憶デバイス7a~10aが記憶する早引きテーブル13aの一部である。 The early lookup table tag 11a associates an index that is the upper k bits of the upper address of the logical address with a physical address that stores the early lookup table of each logical address including the upper address including the corresponding index. Remember. The early lookup table cache 13b is a part of the early lookup table 13a stored in the storage devices 7a to 10a.
 以下、図23を用いて、アドレス変換制御部16bが実行する処理の流れについて説明する。図23は、早引きテーブルタグを用いて実行するアドレス変換処理の流れを説明する図である。例えばアドレス変換制御部16bは、読み出し要求の対象となる論理アドレスを受信すると、図23中(f)に示すように、受信した論理アドレスの上位kビットであるインデックスを用いて早引きテーブルタグ11aを検索する。そして、アドレス変換制御部16bは、受信した論理アドレスに含まれる上位アドレスの早引きを行うための早引きテーブルが格納された物理アドレス「z」を早引きテーブルタグ11aから取得する。 Hereinafter, the flow of processing executed by the address translation control unit 16b will be described with reference to FIG. FIG. 23 is a diagram for explaining the flow of the address conversion process executed using the early lookup table tag. For example, when the address translation control unit 16b receives the logical address that is the target of the read request, as shown in (f) of FIG. 23, the fast lookup table tag 11a using the index that is the upper k bits of the received logical address. Search for. Then, the address conversion control unit 16b acquires the physical address “z” in which the fast lookup table for performing the fast lookup of the higher address included in the received logical address is stored from the fast lookup table tag 11a.
 次に、アドレス変換制御部16bは、図23中(g)に示すように、取得した物理アドレス「z」が示すページに格納されている早引きテーブル13aの一部を取得し、図23中(h)に示すように、早引きテーブルキャッシュ13bとする。次に、アドレス変換制御部16bは、図23中(i)に示すように、早引きテーブルキャッシュ13bの各エントリのうち、読み出し要求の対象となる論理アドレスの上位アドレスと対応付けられたエントリを識別する。 Next, as shown in (g) of FIG. 23, the address conversion control unit 16b acquires a part of the quick lookup table 13a stored in the page indicated by the acquired physical address “z”. As shown in (h), the fast-drawing table cache 13b is assumed. Next, as shown in (i) of FIG. 23, the address translation control unit 16b selects an entry associated with the upper address of the logical address that is the target of the read request among the entries in the early lookup table cache 13b. Identify.
 ここで、アドレス変換制御部16bは、識別したエントリの登録フラグが「0」であるので、識別したエントリに格納された物理アドレス「f」を取得する。また、アドレス変換制御部16bは、図23中(j)に示すように、物理アドレス「f」に格納されているアドレス変換テーブル20の一部を取得する。そして、アドレス変換制御部16bは、図23中(k)に示すように、取得したアドレス変換テーブル20の一部をアドレス変換テーブルキャッシュ12とする。 Here, since the registration flag of the identified entry is “0”, the address translation control unit 16b acquires the physical address “f” stored in the identified entry. Further, the address translation control unit 16b acquires a part of the address translation table 20 stored in the physical address “f” as shown in (j) of FIG. Then, the address conversion control unit 16b sets a part of the acquired address conversion table 20 as the address conversion table cache 12 as shown in (k) of FIG.
 また、アドレス変換制御部16bは、図23中(l)に示すように、アドレス変換テーブルキャッシュ12の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリを識別する。そして、アドレス変換制御部16bは、図23中(m)に示すように、識別したエントリに格納されている物理アドレス「BC」を変換後の物理アドレスとして、リクエスト調停部15に出力する。 Further, as shown in (l) of FIG. 23, the address translation control unit 16b identifies an entry associated with the lower address of the received logical address among the entries of the address translation table cache 12. Then, the address translation control unit 16b outputs the physical address “BC” stored in the identified entry to the request arbitration unit 15 as a translated physical address, as shown in (m) of FIG.
 例えば、アドレス変換制御部16bは、電子回路である。ここで、電子回路の例として、ASICやFPGAなどの集積回路、またはCPUやMPUなどを適用する。また、早引きテーブルタグ11a、早引きテーブルキャッシュ13bとは、半導体メモリ等の記憶装置に記憶される情報である。 For example, the address conversion control unit 16b is an electronic circuit. Here, as an example of the electronic circuit, an integrated circuit such as an ASIC or FPGA, or a CPU or MPU is applied. The early lookup table tag 11a and the early lookup table cache 13b are information stored in a storage device such as a semiconductor memory.
[NANDコントローラ6eの効果]
 このように、NANDコントローラ6eは、インデックスと、インデックスを含む上位アドレスを含む論理アドレスについての早引きテーブルを記憶するページを示す物理アドレスとを対応付けた早引きテーブルタグ11aを有する。また、NANDコントローラ6eは、早引きテーブル13aの一部を早引きテーブルキャッシュ13bとして記憶する。
[Effect of NAND controller 6e]
As described above, the NAND controller 6e includes the early lookup table tag 11a in which an index is associated with a physical address indicating a page storing a fast lookup table for a logical address including an upper address including the index. The NAND controller 6e stores a part of the early lookup table 13a as the early lookup table cache 13b.
 そして、NANDコントローラ6eは、読み出し対象の論理アドレスのインデックスと対応付けられた物理アドレスを早引きテーブルタグ11aから取得する。その後、NANDコントローラ6eは、取得した物理アドレスを用いて、早引きテーブル13aの一部を早引きテーブルキャッシュ13bとして保持する。また、NANDコントローラ6eは、保持した早引きテーブルキャッシュ13bから、読み出し対象の論理アドレスの上位ビットと対応付けられた物理アドレスの上位ビットを取得する。 Then, the NAND controller 6e acquires the physical address associated with the index of the logical address to be read from the early lookup table tag 11a. Thereafter, the NAND controller 6e uses the acquired physical address to hold a part of the early lookup table 13a as the early lookup table cache 13b. In addition, the NAND controller 6e acquires the upper bits of the physical address associated with the upper bits of the logical address to be read from the held early lookup table cache 13b.
 このように、NANDコントローラ6eは、早引きテーブル13aを記憶デバイス7a~10a上に保持し、早引きテーブル13aの一部を保持する。このため、NANDコントローラ6eは、記憶デバイス7a~10aの容量が増大し、アドレス変換テーブルの容量が増大する結果、早引きテーブル13aの容量が増大した場合であっても、早引きテーブルを用いたアドレス変換を行える。 In this way, the NAND controller 6e holds the early lookup table 13a on the storage devices 7a to 10a and holds a part of the early lookup table 13a. Therefore, the NAND controller 6e uses the early lookup table even when the capacity of the early lookup table 13a increases as a result of the increase in the capacity of the storage devices 7a to 10a and the increase in the capacity of the address conversion table. Address translation can be performed.
 また、早引きテーブル13aの大きさは、アドレス変換テーブル20のサイズの例えば100分の1から1000分の1程度に収めることができる。この結果、NANDコントローラ6eは、早引きテーブル13aの一部を早引きテーブルキャッシュ13bとして保持した場合であっても早引きテーブルのキャッシュヒット率をあまり下げない。このため、NANDコントローラ6eは、アドレス変換に要する時間が増大するのを防ぐことができる。 Also, the size of the quick lookup table 13a can be within, for example, about 1/100 to 1/1000 of the size of the address conversion table 20. As a result, the NAND controller 6e does not significantly reduce the cache hit rate of the early lookup table even when a part of the early lookup table 13a is held as the early lookup table cache 13b. Therefore, the NAND controller 6e can prevent an increase in time required for address conversion.
 これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例5として本発明に含まれる他の実施例を説明する。 Although the embodiments of the present invention have been described so far, the embodiments may be implemented in various different forms other than the embodiments described above. Therefore, another embodiment included in the present invention will be described below as a fifth embodiment.
(1)整列処理の単位について
 上述したNANDコントローラ6aは、記憶デバイス7a~10aの物理ブロックにあわせた論理ブロックごとにデータの整列処理を行った。しかし、実施例はこれに限定されるものではない。すなわち、NANDコントローラ6aは、論理ブロックの大きさを記憶デバイス7a~10aの物理ブロックにあわせる必要はなく、任意の大きさの論理ブロックについて、データの整列処理を実行することができる。
(1) Unit of alignment processing The NAND controller 6a described above performs data alignment processing for each logical block in accordance with the physical blocks of the storage devices 7a to 10a. However, the embodiment is not limited to this. That is, the NAND controller 6a does not need to adjust the size of the logical block to the physical block of the storage devices 7a to 10a, and can execute the data alignment process for the logical block of any size.
 例えば、NANDコントローラ6aは、数ページ程度の物理ブロックよりも小さな連続する論理ページを整列処理の単位としてもよい。また、NANDコントローラ6aは、複数の物理ブロックほどの大きさを持つ論理ブロック単位でデータの整列処理を実行することもできる。すなわち、NANDコントローラ6aは、論理アドレスを論理ブロックアドレスと論理ページアドレスとに分割する際に、任意のビット数で分割を行うことができる。 For example, the NAND controller 6a may use a continuous logical page smaller than a physical block of about several pages as a unit of alignment processing. The NAND controller 6a can also execute data alignment processing in units of logical blocks each having a size that is as large as a plurality of physical blocks. That is, the NAND controller 6a can divide the logical address into an arbitrary number of bits when dividing the logical address into the logical block address and the logical page address.
(2)記憶デバイスの寿命について
 上述したNANDコントローラ6a~6eは、整列処理を実行するにあたり、データの移動にともなうデータの書き込み処理を実行する。ここで、記憶デバイス7a~10aの寿命を考慮した場合は、書き込み処理の回数を削減するため、過剰な整列を行わないようにするのが望ましい。特に、ファイルシステムが実際には使用していないデータに対する整列処理を行わないようにするのが望ましい。
(2) Lifetime of Storage Device The NAND controllers 6a to 6e described above execute data write processing accompanying data movement when executing the alignment processing. Here, when considering the lifetime of the storage devices 7a to 10a, it is desirable not to perform excessive alignment in order to reduce the number of write processes. In particular, it is desirable not to perform alignment processing on data that is not actually used by the file system.
 そこで、NANDコントローラ6a~6eは、Trimと呼ばれるデータ無効通知コマンドを考慮した整列処理を行っても良い。例えば、NANDコントローラ6a~6eは、Trimの対象となったページを管理対象から除外することで、実際には使用していないデータに対する整列処理を回避するようにしてもよい。 Therefore, the NAND controllers 6a to 6e may perform alignment processing in consideration of a data invalidity notification command called Trim. For example, the NAND controllers 6a to 6e may avoid alignment processing for data that is not actually used by excluding pages that are targets of Trim from management targets.
(3)早引きテーブルとアドレス変換テーブルとについて
 上述したNANDコントローラ6aは、論理アドレスを受信すると、早引きテーブル13を確認し、論理アドレスに含まれる論理ブロックアドレスに対応するエントリの登録フラグが「1」である場合には、早引きテーブル13を用いたアドレス変換を行った。また、NANDコントローラ6aは、対応するエントリの登録フラグが「0」である場合は、アドレス変換テーブルを用いたアドレス変換処理を実行した。
(3) About the early lookup table and the address conversion table When the NAND controller 6a receives the logical address, the NAND controller 6a checks the early lookup table 13, and the registration flag of the entry corresponding to the logical block address included in the logical address is “ In the case of “1”, the address conversion using the early lookup table 13 was performed. In addition, when the registration flag of the corresponding entry is “0”, the NAND controller 6a executes the address conversion process using the address conversion table.
 しかし、実施例はこれに限定されるものではない。例えば、NANDコントローラ6aは、早引きテーブル13を用いたアドレス変換処理とアドレス変換テーブルを用いたアドレス変換処理とを平行して実行し、いずれかの処理においてアドレス変換が完了した場合には、他方の処理を中止してもよい。 However, the embodiment is not limited to this. For example, the NAND controller 6a executes the address conversion process using the quick lookup table 13 and the address conversion process using the address conversion table in parallel, and when the address conversion is completed in either process, the other You may cancel the process.
(4)プログラム
 上記の実施例で説明した各種の処理は、予め用意された制御プログラムをNANDコントローラ内の演算処理装置が実行することで実現してもよい。そこで、以下では、図24を用いて、上記のNANDコントローラ6aと同様の機能を有する制御プログラムを実行するコンピュータの一例について説明する。
(4) Program The various processes described in the above embodiments may be realized by executing a control program prepared in advance by an arithmetic processing unit in the NAND controller. In the following, an example of a computer that executes a control program having the same function as that of the NAND controller 6a will be described with reference to FIG.
 図24は、制御プログラムを実行するNANDコントローラの一例について説明する図である。図24に示すように、NANDコントローラ6fは、CPU(Central Processing Unit)30、デバイスアクセス制御部35を有する。また、CPU30は、メモリデバイス6gと接続される。 FIG. 24 is a diagram illustrating an example of a NAND controller that executes a control program. As illustrated in FIG. 24, the NAND controller 6 f includes a CPU (Central Processing Unit) 30 and a device access control unit 35. The CPU 30 is connected to the memory device 6g.
 メモリデバイス6gには、変換テーブルタグ11、アドレス変換テーブルキャッシュ12、早引きテーブル13、制御プログラム36があらかじめ記憶される。また、記憶デバイス7a~10aには、アドレス変換テーブル20、およびユーザデータ21があらかじめ格納されている。 In the memory device 6g, a conversion table tag 11, an address conversion table cache 12, a quick lookup table 13, and a control program 36 are stored in advance. In addition, the address translation table 20 and the user data 21 are stored in advance in the storage devices 7a to 10a.
 ここで、CPU30がメモリデバイス6gから制御プログラム36を読み出して展開して実行することにより、制御プログラム36は、以下の様に機能する。すなわち、制御プログラム36は、アドレス変換制御プロセス31、リクエスト調停プロセス32、データ整列制御プロセス33、ガベージコレクション制御プロセス34として機能する。ここで、アドレス変換制御プロセス31、リクエスト調停プロセス32、データ整列制御プロセス33は、図6に示すアドレス変換制御部16、リクエスト調停部15、データ整列制御部18と同様の機能を発揮する。また、ガベージコレクション制御プロセス34は、図6に示すガベージコレクション制御部19と同様の機能を発揮する。 Here, when the CPU 30 reads out the control program 36 from the memory device 6g, expands and executes it, the control program 36 functions as follows. That is, the control program 36 functions as an address translation control process 31, a request arbitration process 32, a data alignment control process 33, and a garbage collection control process 34. Here, the address translation control process 31, the request arbitration process 32, and the data alignment control process 33 exhibit the same functions as the address translation control unit 16, the request arbitration unit 15, and the data alignment control unit 18 shown in FIG. Moreover, the garbage collection control process 34 exhibits the same function as the garbage collection control unit 19 shown in FIG.
 なお、上記の制御プログラム36については、必ずしも最初からメモリデバイス6gに記憶させておく必要はない。例えば、フレキシブルディスク、いわゆるFD(Flexible Disk)、CD(Compact Disk)-ROM、DVD(Digital Versatile Disk)、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。 Note that the control program 36 is not necessarily stored in the memory device 6g from the beginning. For example, 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.
 そして、NANDコントローラ6fが各CPU3a、3bを解して、これらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WAN(Wide Area Network)などを介して他のコンピュータまたはサーバ装置などに記憶させた各プログラムを取得して実行するようにしてもよい。 Then, the NAND controller 6f may solve the CPUs 3a and 3b to acquire and execute each program from these portable physical media. Further, each program stored in another computer or a server device may be acquired and executed via a public line, the Internet, a LAN, a WAN (Wide Area Network), or the like.
 1 情報処理装置
 2a、2b メモリ
 3a、3b CPU
 4 I/Oハブ
 5a、5b SSD
 6a~6f NANDコントローラ
 6g メモリデバイス
 7a~10a、7b~10b 記憶デバイス
 11 変換テーブルタグ
 11a 早引きテーブルタグ
 12 アドレス変換テーブルキャッシュ
 13、13a 早引きテーブル
 13b 早引きテーブルキャッシュ
 14 リクエスタインタフェース部
 15 リクエスト調停部
 16、16a、16b アドレス変換制御部
 17 デバイスアクセス制御部
 18、18a データ整列制御部
 19 ガベージコレクション制御部
 20 アドレス変換テーブル
 21 ユーザデータ
 30 CPU
 31 アドレス変換制御プロセス
 32 リクエスト調停プロセス
 33 データ整列制御プロセス
 34 ガベージコレクション制御プロセス
1 Information processing apparatus 2a, 2b Memory 3a, 3b CPU
4 I / O hub 5a, 5b SSD
6a to 6f NAND controller 6g Memory device 7a to 10a, 7b to 10b Storage device 11 Conversion table tag 11a Early lookup table tag 12 Address translation table cache 13, 13a Early lookup table 13b Early lookup table cache 14 Requester interface unit 15 Request arbitration unit 16, 16a, 16b Address conversion control unit 17 Device access control unit 18, 18a Data alignment control unit 19 Garbage collection control unit 20 Address conversion table 21 User data 30 CPU
31 Address translation control process 32 Request arbitration process 33 Data alignment control process 34 Garbage collection control process

Claims (8)

  1.  記憶領域を複数有するブロックを論理的に示す論理ブロック番号と前記ブロックが含む記憶領域を論理的に示す論理ページ番号とを組み合わせた論理番号に、前記ブロックを物理的に示す物理ブロック番号と前記記憶領域を物理的に示す物理ページ番号とを組み合わせた物理番号を対応付けた変換テーブルを記憶する第1の記憶部と、
     1つの論理ブロック番号を選択する選択部と、
     前記選択部が選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を前記第1の記憶部が記憶する変換テーブルから識別する識別部と、
     前記識別部が識別した物理番号が示す記憶領域のデータを、1つのブロックに含まれる記憶領域であって、当該データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させる移動部と、
     前記移動部が前記データを移動させたブロックの物理ブロック番号と、前記選択部が選択した論理ブロック番号とを対応付けた早引きテーブルを記憶する第2の記憶部と、
     読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を前記第2の記憶部が記憶する早引きテーブルから取得する取得部と、
     前記取得部が取得した物理ブロック番号が示すブロックに格納されたデータのうち、前記受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す読み出し部と
     を有することを特徴とする制御装置。
    A physical block number that physically indicates the block and a logical number that combines a logical block number that logically indicates a block having a plurality of storage areas and a logical page number that logically indicates a storage area included in the block, and the storage A first storage unit that stores a conversion table in which physical numbers that combine physical page numbers that physically indicate areas are associated;
    A selection unit for selecting one logical block number;
    An identification unit for identifying a physical number associated with a logical number including a logical block number selected by the selection unit from a conversion table stored in the first storage unit;
    The data in the storage area indicated by the physical number identified by the identification unit is stored in a storage area indicated by the same physical page number as the logical page number included in the logical number of the data. A moving part to be moved;
    A second storage unit that stores a fast-drawing table that associates the physical block number of the block to which the moving unit has moved the data with the logical block number selected by the selection unit;
    When a logical number indicating an area in which data to be read is stored is received, a physical block number associated with the logical block number included in the received logical number is acquired from the fast lookup table stored in the second storage unit. An acquisition unit to
    A reading unit that reads data stored in an area indicated by the same physical page number as the logical page number included in the received logical number, among the data stored in the block indicated by the physical block number acquired by the acquisition unit; A control device comprising:
  2.  前記記憶領域を論理的に示す論理アドレスの上位ビットを前記論理ブロック番号とし、前記論理アドレスの下位ビットを前記論理ページ番号とし、前記記憶領域を物理的に示す物理アドレスの上位ビットを前記物理ブロック番号とし、前記物理アドレスの下位ビットを前記物理ページ番号とすることを特徴とする請求項1に記載の制御装置。 The upper bit of the logical address that logically indicates the storage area is the logical block number, the lower bit of the logical address is the logical page number, and the upper bit of the physical address that physically indicates the storage area is the physical block The control apparatus according to claim 1, wherein a number is used, and a lower-order bit of the physical address is used as the physical page number.
  3.  使用されていない記憶領域を含むブロックに格納されたデータを他のブロックに複製して、前記ブロック内のデータを消去する消去部を有し、
     前記移動部は、前記消去部がデータを消去したブロックに対し、前記データを移動させることを特徴とする請求項1または2に記載の制御装置。
    It has an erasing unit for erasing data in the block by copying the data stored in the block including the unused storage area to another block,
    The control device according to claim 1, wherein the moving unit moves the data to a block from which the erasing unit has erased the data.
  4.  複数の論理ブロック番号を含むグループごとに、前記データの読み出し要求の数と、前記データの書き込み要求の数とを計数する計数部を有し、
     前記選択部は、前記計数部が計数した前記読み出し要求の数から前記書き込み要求の数を減算した数が最も多いグループに含まれる論理ブロック番号を選択することを特徴とする請求項1または2に記載の制御装置。
    For each group including a plurality of logical block numbers, the counter has a counting unit that counts the number of data read requests and the number of data write requests.
    The selection unit selects a logical block number included in a group having the largest number obtained by subtracting the number of write requests from the number of read requests counted by the counting unit. The control device described.
  5.  前記第1の記憶部は、記憶装置が記憶する前記変換テーブルの一部を記憶し、
     前記第2の記憶部は、前記移動部が前記データを移動させたブロックの物理ブロック番号と、当該ブロックに前記移動部がデータを移動させたか否かを示すフラグと、前記選択部が選択した論理ブロック番号と、当該論理ブロック番号を含む論理番号を物理番号に変換する変換テーブルが記憶された領域を示す物理番号とを対応付けた早引きテーブルを記憶し
     前記移動部は、前記データを移動させると、当該データを移動させたブロックの物理ブロック番号と対応付けて前記データを移動させた旨を示すフラグを前記早引きテーブルに格納し、
     前記取得部は、読み出し対象の論理番号に含まれる論理ブロック番号に、前記データを移動させた旨を示すフラグが対応付けられている場合は、当該論理ブロック番号と対応付けられた物理ブロック番号を取得し、該論理ブロック番号に、前記データを移動させた旨を示すフラグが対応付けられていない場合は、当該論理ブロック番号に対応付けられた物理番号が示す記憶領域に格納された変換テーブルを前記第1の記憶部に格納し、
     前記読み出し部は、前記読み出し対象の論理番号に含まれる論理ブロック番号に、前記データを移動させた旨を示すフラグが対応付けられていない場合は、前記第1の記憶部に格納された変換テーブルを用いて、読み出し対象の論理番号に対応付けられた物理番号を取得し、当該取得した物理番号が示す記憶領域からデータの読み出しを行うことを特徴とする請求項1または2に記載の制御装置。
    The first storage unit stores a part of the conversion table stored in a storage device,
    The second storage unit selects the physical block number of the block to which the moving unit has moved the data, a flag indicating whether the moving unit has moved the data to the block, and the selection unit selected Stores a fast lookup table in which a logical block number is associated with a physical number indicating an area in which a conversion table for converting a logical number including the logical block number into a physical number is stored, and the moving unit moves the data Then, a flag indicating that the data has been moved in association with the physical block number of the block to which the data has been moved is stored in the quick lookup table,
    If the flag indicating that the data has been moved is associated with the logical block number included in the logical number to be read, the acquisition unit sets the physical block number associated with the logical block number. If the flag indicating that the data has been moved is not associated with the logical block number, the conversion table stored in the storage area indicated by the physical number associated with the logical block number is stored. Storing in the first storage unit;
    The reading unit, when a flag indicating that the data has been moved is not associated with the logical block number included in the logical number to be read, the conversion table stored in the first storage unit 3. The control device according to claim 1, wherein a physical number associated with a logical number to be read is acquired using and the data is read from a storage area indicated by the acquired physical number. .
  6.  前記早引きテーブルが記憶された記憶領域を示す物理アドレスと、当該物理アドレスが示す記憶領域に格納された早引きテーブルに格納されている論理アドレスの上位ビットであるインデックスとを対応付けて記憶する第3の記憶部を有し、
     前記第2の記憶部は、前記記憶装置が記憶する前記早引きテーブルの一部を記憶し、
     前記取得部が、読み出し対象の論理アドレスの上位ビットのインデックスと対応付けられた物理アドレスを前記第3の記憶部から取得し、当該取得した物理アドレスが示す記憶領域から読み出した早引きテーブルを前記第2の記憶部に格納し、当該第2の記憶部に格納した早引きテーブルから、前記読み出し対象の論理アドレスの上位ビットと対応付けられた物理アドレスの上位ビットを前記第2の記憶部が記憶する早引きテーブルから取得することを特徴とする請求項2に記載の制御装置。
    A physical address indicating a storage area in which the early lookup table is stored is associated with an index that is an upper bit of the logical address stored in the early lookup table stored in the storage area indicated by the physical address. A third storage unit;
    The second storage unit stores a part of the quick lookup table stored in the storage device,
    The acquisition unit acquires the physical address associated with the higher-order bit index of the logical address to be read from the third storage unit, and reads the fast lookup table read from the storage area indicated by the acquired physical address. The second storage unit stores the high-order bits of the physical address associated with the high-order bits of the logical address to be read out from the fast lookup table stored in the second storage unit and stored in the second storage unit. The control device according to claim 2, wherein the control device is obtained from a stored fast-drawing table.
  7.  記憶装置からデータを読み出す制御装置が有するコンピュータに、
     記憶領域を複数有するブロックを論理的に示す論理ブロック番号を1つ選択し、
     論理ブロック番号と前記ブロックが含む記憶領域を論理的に示す論理ページ番号とを組み合わせた論理番号に、前記ブロックを物理的に示す物理ブロック番号と前記記憶領域を物理的に示す物理ページ番号とを組み合わせた物理番号を対応付けた変換テーブルを記憶する第1の記憶部から、前記選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を識別し、
     前記識別した物理番号が示す記憶領域のデータを、1つのブロックに含まれる記憶領域であって、当該データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させ、
     前記データを移動させたブロックの物理ブロック番号と、前記選択部が選択した論理ブロック番号とを対応付けて第2の記憶部に記憶させ、
     読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を前記第2の記憶部から取得し、
     前記取得した物理ブロック番号が示すブロックに格納されたデータのうち、前記受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す
     処理を実行させることを特徴とする制御プログラム。
    In the computer of the control device that reads data from the storage device,
    Select one logical block number that logically indicates a block having a plurality of storage areas,
    A logical number obtained by combining a logical block number and a logical page number that logically indicates a storage area included in the block, and a physical block number that physically indicates the block and a physical page number that physically indicates the storage area. Identifying a physical number associated with a logical number including the selected logical block number from a first storage unit storing a conversion table in which the combined physical numbers are associated;
    The storage area data indicated by the identified physical number is moved to a storage area included in one block and indicated by the same physical page number as the logical page number included in the logical number of the data,
    The physical block number of the block to which the data has been moved and the logical block number selected by the selection unit are associated with each other and stored in the second storage unit,
    When a logical number indicating an area in which data to be read is stored is received, a physical block number associated with a logical block number included in the received logical number is acquired from the second storage unit,
    Out of the data stored in the block indicated by the acquired physical block number, the process of reading the data stored in the area indicated by the same physical page number as the logical page number included in the received logical number is executed. A characteristic control program.
  8.  記憶装置からデータを読み出す制御装置が、
     記憶領域を複数有するブロックを論理的に示す論理ブロック番号を1つ選択し、
     論理ブロック番号と前記ブロックが含む記憶領域を論理的に示す論理ページ番号とを組み合わせた論理番号に、前記ブロックを物理的に示す物理ブロック番号と前記記憶領域を物理的に示す物理ページ番号とを組み合わせた物理番号を対応付けた変換テーブルを記憶する第1の記憶部から、前記選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を識別し、
     前記識別した物理番号が示す記憶領域のデータを、1つのブロックに含まれる記憶領域であって、当該データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させ、
     前記データを移動させたブロックの物理ブロック番号と、前記選択部が選択した論理ブロック番号とを対応付けて第2の記憶部に記憶させ、
     読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を前記第2の記憶部から取得し、
     前記取得した物理ブロック番号が示すブロックに格納されたデータのうち、前記受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す
     処理を実行することを特徴とする制御方法。
    A control device that reads data from the storage device
    Select one logical block number that logically indicates a block having a plurality of storage areas,
    A logical number obtained by combining a logical block number and a logical page number that logically indicates a storage area included in the block, and a physical block number that physically indicates the block and a physical page number that physically indicates the storage area. Identifying a physical number associated with a logical number including the selected logical block number from a first storage unit storing a conversion table in which the combined physical numbers are associated;
    The storage area data indicated by the identified physical number is moved to a storage area included in one block and indicated by the same physical page number as the logical page number included in the logical number of the data,
    The physical block number of the block to which the data has been moved and the logical block number selected by the selection unit are associated with each other and stored in the second storage unit,
    When a logical number indicating an area in which data to be read is stored is received, a physical block number associated with a logical block number included in the received logical number is acquired from the second storage unit,
    Executing the process of reading the data stored in the area indicated by the same physical page number as the logical page number included in the received logical number among the data stored in the block indicated by the acquired physical block number Characteristic control method.
PCT/JP2013/057909 2013-03-19 2013-03-19 Control device, control program, and control method WO2014147768A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015506463A JP6132010B2 (en) 2013-03-19 2013-03-19 Control device, control program, and control method
PCT/JP2013/057909 WO2014147768A1 (en) 2013-03-19 2013-03-19 Control device, control program, and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/057909 WO2014147768A1 (en) 2013-03-19 2013-03-19 Control device, control program, and control method

Publications (1)

Publication Number Publication Date
WO2014147768A1 true WO2014147768A1 (en) 2014-09-25

Family

ID=51579500

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/057909 WO2014147768A1 (en) 2013-03-19 2013-03-19 Control device, control program, and control method

Country Status (2)

Country Link
JP (1) JP6132010B2 (en)
WO (1) WO2014147768A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021528783A (en) * 2018-06-29 2021-10-21 マイクロン テクノロジー,インク. Control of NAND operation latency

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009301491A (en) * 2008-06-17 2009-12-24 Tdk Corp Memory controller, flash memory system equipped with memory controller, and control method for flash memory
JP2012174086A (en) * 2011-02-23 2012-09-10 Hitachi Ltd Storage device and computer with the same

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009301491A (en) * 2008-06-17 2009-12-24 Tdk Corp Memory controller, flash memory system equipped with memory controller, and control method for flash memory
JP2012174086A (en) * 2011-02-23 2012-09-10 Hitachi Ltd Storage device and computer with the same

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021528783A (en) * 2018-06-29 2021-10-21 マイクロン テクノロジー,インク. Control of NAND operation latency
US11663120B2 (en) 2018-06-29 2023-05-30 Micron Technology, Inc. Controlling NAND operation latency

Also Published As

Publication number Publication date
JP6132010B2 (en) 2017-05-24
JPWO2014147768A1 (en) 2017-02-16

Similar Documents

Publication Publication Date Title
US11030094B2 (en) Apparatus and method for performing garbage collection by predicting required time
JP2020046963A (en) Memory system and control method
US10437738B2 (en) Storage device performing hashing-based translation between logical address and physical address
JP2015001908A (en) Information processing device, control circuit, control program, and control method
US20170228191A1 (en) Systems and methods for suppressing latency in non-volatile solid state devices
JP2015001909A (en) Information processor, control circuit, control program, and control method
US20200225882A1 (en) System and method for compaction-less key-value store for improving storage capacity, write amplification, and i/o performance
CN112596667A (en) High throughput method and system for organizing NAND blocks and placing data for random writing in a solid state drive
JP6167646B2 (en) Information processing apparatus, control circuit, control program, and control method
JP2020123038A (en) Memory system and control method
US10235284B2 (en) Memory system
JP2020123040A (en) Memory system and control method
US11048623B2 (en) Memory controller including mapping tables to efficiently process an iteration command and a method of operating the same
US20220413729A1 (en) Tiered Storage System with Defragmentation Based on Weighted Flash Fragmentation Factor
JP6179355B2 (en) Information processing apparatus, data transfer control method, and data transfer control program
JP5967307B2 (en) Information processing apparatus, control circuit, control program, and control method
JP6132010B2 (en) Control device, control program, and control method
US10445014B2 (en) Methods of operating a computing system including a host processing data of first size and a storage device processing data of second size and including a memory controller and a non-volatile memory
KR20150139383A (en) Semiconductor device
JP5967308B2 (en) Information processing apparatus, control circuit, control program, and control method
US10725675B2 (en) Management apparatus, information processing apparatus, management method, and computer program product
JP2013109404A (en) Information processing device
CN110119361B (en) Memory controller and method of operating the same
JP2019045974A (en) Information processing apparatus, information processing program, and information processing method
JP6028866B2 (en) Information processing apparatus, control circuit, control program, and control method

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2015506463

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

Country of ref document: EP

Kind code of ref document: A1