Source: http://www.patentsencyclopedia.com/app/20120005402
Timestamp: 2018-12-18 12:00:03
Document Index: 737077745

Matched Legal Cases: ['art 4000', 'art 4000', 'art 4400', 'art 4400', 'art 4400', 'art 4400', 'art 4400', 'art 4400', 'art 4400', 'art 4500', 'art 4500', 'art 4400', 'art 4500', 'art 4500', 'art 4500', 'art 4400', 'art 4500', 'art 4500', 'art 4500', 'art 4500', 'art 4500', 'art 4500', 'art 4500', 'art 4500', 'art 4500', 'art 4500', 'art 4500', 'art 4500', 'art 4500', 'art 4500', 'art 4500', 'art 4500', 'art 12000', 'art 12100', 'art 12200', 'art 12300', 'art 12400', 'art 12000', 'art 12000', 'art 12000', 'art 12000', 'art 12000', 'art 12000', 'art 12000', 'art 12000', 'art 12000', 'art 12100', 'art 12100', 'art 12100', 'art 12100', 'art 12100', 'art 12100', 'art 12100', 'art 12100', 'art 12100', 'art 12400', 'art 12400', 'art 12400', 'art 12400', 'art 12400', 'art 12400', 'art 12400', 'art 12400', 'art 12400', 'art 12400']

Patent application number: 20120005402
21. A storage system comprising: first and second package groups, each including multiple flash packages; and a controller, which is coupled to the first and second package groups, wherein each of the flash packages includes multiple physical blocks, each of the physical blocks is a data deletion unit, multiple pages, which are based on the multiple flash packages, are provided each of the pages is configured from two or more physical blocks and is a data transfer unit, and the controller, based on the number of deletion times of a physical block belonging to a transfer-source page, which is based on the first package group, transfers data inside the transfer-source page from the transfer-source page to a transfer-destination page, which is based on the second package group.
22. A storage system according to claim 21, wherein multiple pages are provided, and the controller, in a case where a page has not been allocated to a write destination in a virtual volume, which is a virtual logical volume, allocates an unallocated page from among the multiple pages to the virtual volume.
23. A storage system according to claim 21, wherein the first and second package groups are RAID (Redundant Array of Independent (or Inexpensive) Disks) groups.
24. A storage system according to claim 21, wherein the transfer-source page is a page of one of (x) and (y) below: (x) a first page, which is based on the first package group and corresponds to a cumulative number of deletion times that is as close as possible to a difference between a cumulative number of deletion times of a first page based on the first package group and the cumulative number of deletion times of the transfer-destination page; and (y) a first page, which is based on the first package group and corresponds to an occupancy that is as close as possible to a difference between an occupancy of the first page based on the first package group and an occupancy of the transfer-destination page, the cumulative number of page deletion times is the cumulative number of deletion times of multiple physical blocks of this page, and the page occupancy is a percentage of the number of allocated physical blocks of the page with respect to the total number of physical blocks of this page.
25. A storage system according to claim 21, wherein each of the flash packages is constituted so as to allocate a physical block to a logical block, which has been allocated to a page, and the controller, when transferring data from the transfer-source page to the transfer-destination page, carries out the following: identifying multiple logical blocks, which have been allocated to the transfer-source page, and instructing one or more flash packages of the first package group, which manages the identified multiple logical blocks, to carry out a data read; identifying multiple logical blocks, which have been allocated to the transfer-destination page, and instructing one or more flash packages of the second package group, which manages the identified multiple logical blocks, to write the data that has been read; and allocating the transfer-destination page in place of the transfer-source page to the allocation destination of the transfer-source page in the virtual volume.
26. A storage system according to claim 21, wherein a flash package of the first package group has a shorter life than a flash package of the second package group, the short life signifies either (x) or (y) below: (x) a total number of deletion times or average number of deletion times per unit of time is large; or (y) a life expectancy is short, wherein the flash package of the first package group is a flash package corresponding to any of (P1) through (P3) below: (P1) the average number of deletion times per unit of time exceeds a prescribed threshold; (P2) a higher average number of deletion times per unit of time of the multiple flash packages is exhibited; and (P3) the life expectancy is shorter than a guarantee period.
27. A storage system according to claim 21, wherein at least one of the first package group's deletion limitation times, guarantee period, and RAID configuration is equivalent to the second package group's deletion limitation times, guarantee period, and RAID configuration.
28. A storage system according to claim 21, wherein each of the flash packages includes a sub-controller, and each sub-controller is constituted so as to allocate a physical block to a logical block, which has been allocated to a page, wherein the controller, in a case where repetitive writing of data of a specific pattern to the virtual volume has been detected, identifies one or more pages, which have been allocated to this write destination, and sends to one or more sub-controllers one or more release instructions specifying two or more logical blocks, which have been allocated to the identified one or more pages, and the sub-controller, which receives the release instruction, cancels the allocation of the physical block to the logical block specified in this release instruction.
29. A storage system according to claim 28, wherein the detection of the repetitive writing of data of a specific pattern to the virtual volume is detection of the receiving of a write-same command, which is a request signifying repetitive writing of data of a specific pattern.
30. A storage system according to claim 21, wherein a total storage capacity of a logical block is larger than a total storage capacity of a physical block with respect to at least one flash package, and the controller determines whether or not a physical block has been allocated to a write-destination logical block, and in a case where a result of this determination is negative, allocates any unallocated physical block to the write-destination logical block and writes data to the allocated physical block.
31. A storage system according to claim 30, wherein the controller manages the physical block occupancy for each flash package, a physical block occupancy is the percentage of physical blocks allocated to a logical block in a flash package, and the first and second package groups are package groups determined by the controller from multiple package groups based on the physical block occupancy of each of the flash packages.
32. A storage system according to claim 21, wherein the controller comprises: a first controller, which receives a write request and data from an external device; and a second controller, which is a lower-level controller than the first controller and exists for each of the flash packages, wherein the first controller manages a total number of deletion times for each of the flash packages, and, in addition, manages multiple real pages and a virtual volume having multiple virtual pages, each package group is a RAID group, the multiple real pages are multiple logical storage areas based on multiple package groups, each of the real pages is based on two or more flash packages constituting a package group, two or more logical blocks of multiple logical blocks of a package group, which forms the basis of a real page, are allocated to this real page, the size of a real page is larger than the size of a logical block, any one or more physical blocks of multiple physical blocks of the flash package corresponding to a logical block are allocated to this logical block, the first controller manages a first corresponding relationship as to which real page is allocated to which virtual page, and a second corresponding relationship as to which two or more logical blocks are allocated to which real page, the second controller manages a third corresponding relationship as to which one or more physical blocks are allocated to which logical block, the second controller manages the number of block deletion times of the respective physical blocks inside the flash package corresponding to this second controller, the second controller, based on the number of block deletion times of the respective physical blocks inside the flash package corresponding to this second controller, carries out wear leveling control with respect to this flash package, the first controller, upon receiving a write request and data from the external device, determines on the basis of the first corresponding relationship whether or not a real page has been allocated to the write-destination virtual page to be identified based on the write request, and in a case where the result of this determination is negative, allocates any unallocated real page to the write-destination virtual page and writes the received data to the allocated real page, the first controller, when writing data to the real page, identifies on the basis of the second corresponding relationship the logical block that has been allocated to this real page, sends a write instruction specifying an address inside the identified logical block to the second controller, which manages this logical block, and the second controller, which receives this write instruction, writes the data targeted by this write instruction to the physical block allocated to the logical block including the address specified in this write instruction, the first controller, upon reading the data from the real page, identifies on the basis of the second corresponding relationship the logical block that has been allocated to this real page, sends a read instruction specifying an address inside the identified logical block to the second controller, which manages this logical block, and the second controller, which receives this read instruction, identifies on the basis of the third corresponding relationship the physical block, which has been allocated to the logical block including the address specified in this read instruction, reads data from the identified physical block, and sends this data to the first controller, in the (A), the first controller decides on first and second package groups based on the total number of deletion times for each of the flash packages, in the (B), the first controller reads data from a transfer-source page based on the first package group, and writes the read-out data to the transfer-destination page based on the second package group, the transfer-source page is a real page allocated to the virtual volume of multiple real pages based on the first package group, and the transfer-destination page is an unallocated real page of the multiple real pages based on the second package group.
33. A storage control method comprising the steps of: identifying the number of deletion times of a physical block belonging to a transfer-source page based on a first package group; and transferring, on the basis of the number of deletion times, data inside the transfer-source page from the transfer-source page to a transfer-destination page based on a second package group, wherein the first and second package groups have multiple flash packages, each of the flash packages has multiple physical blocks, each of the physical blocks is a data deletion unit, multiple pages, which are based on the multiple flash packages, are provided, and each of the pages has two or more physical blocks and is a data transfer unit.
34. A storage control method according to claim 33, wherein, in a case where a page has not been allocated to a write destination in a virtual volume, which is a virtual logical volume, an unallocated page of the multiple pages is allocated to the virtual volume.
35. A storage control method according to claim 33, wherein the first and second package groups are RAID groups.
[0005] However, the above-mentioned capacity virtualization technology is not necessarily a required condition for the storage system of the present invention. On the other hand, technology for transferring a page between storage devices (typically, HDD (Hard Disk Drives)) in page units to realize enhanced performance in a storage system having capacity virtualization technology is known (Patent Literature 2). Furthermore, a technology for transferring a page between storage devices having different price-performance ratios for enhancing the price-performance ratio is also known. Prior to storing user data in a HDD, a specific pattern, for example, all 0s, is normally used to format the HDD. A technology in which the storage system detects this specific pattern written by the host at this time, and frees up an already allocated page is also known (Patent Literature 3).
[0006] [PTL 1] [0007] Japanese Patent Publication No. 3507132 [0008] [PTL 2] [0009] Japanese Patent Application Laid-open No. 2007-66259 [0010] [PTL 3] [0011] Japanese Patent Application Laid-open No. 2007-199922
[0014] The second problem will be explained. In a storage system that applies capacity virtualization technology, a page is secured when a data write is performed. Therefore, making the page size smaller has a big effect on reducing capacity. However, in a case where this technology is applied, sequential addresses on volume as seen from the host are likely to be stored randomly on the HDD because each page is allocated randomly. Normally, accessing sequential areas of the HDD (a sequential access) is markedly faster than accessing random areas (a random access), and as such, host application software is constructed with this performance difference in mind. Therefore, even when capacity virtualization is implemented, the page size must be made larger to a certain extent in order to maintain performance with respect to a sequential access. Consequently, the problem is that reductions in capacity are not efficient enough (As already mentioned, it was decided to make the size of the page larger than the size of the flash memory block in the present invention.).
[0015] A first characteristic feature of the present invention for solving the above-mentioned first problem is the carrying out of hierarchical wear leveling. That is, wear leveling is configured in accordance with higher-level wear leveling and lower-level wear leveling. Making wear leveling hierarchical makes it possible to efficiently reduce the imbalance of the number of block deletions of all of the tens of thousands of flash memory chips in the entire storage system. Since the first characteristic feature of the present invention is the carrying out of hierarchical wear leveling, no particular unit is stipulated for higher-level wear leveling (This is an arbitrary unit.). The lower-level wear leveling is aimed at reducing the imbalance of the number of block deletions in a flash package, which is equipped with a plurality of chips (for example, hundreds of chips), and a known technology such as that of Patent Literature 1 may be used. Fundamentally, the unit for lower-level wear leveling is generally the block, which is the delete unit of the flash memory. Furthermore, the present invention is valid even when a single flash package is used as a SSD (Solid State Disk Drive). In a case where a flash package has a processor, one method of lower-level wear leveling is for this processor to reduce the imbalance of the number of block deletions of the flash memories inside this package. However, lower-level wear leveling may also be carried out by the processor of the storage system controller. The second characteristic feature of the present invention is that the higher-level wear leveling is carried out in the page unit introduced for the capacity virtualization of the storage system (This signifies that the storage system controller having a capacity virtualization function is not an indispensable condition in a case where only the first characteristic feature of the present invention is realized.). In a storage system that realizes capacity virtualization, performing transfer control in page units will become the mainstream in the future, and carrying out the higher-level wear leveling of a flash memory in pages will be very advantageous in making it possible to integrate this higher-level wear leveling into the control of this page unit. Also, carrying out wear leveling at a size that is larger than the block called a page will make it possible to reduce overhead.
[0018] A fourth characteristic feature for solving the second problem of the present invention includes using the lower-level capacity virtualization function to free up capacity in block units and to make an effective reduction in capacity a possibility even in a case where all 0s or some other such formatting information has been recognized. However, the characteristics of the flash memory make it necessary to carry out a delete one time in order to allocate a freed-up block to another area. Furthermore, in a case where all 0s or some other such formatting pattern has been written in accordance with a normal write command, it is also possible to recognize the formatting pattern, free up the corresponding block, and reduce the capacity of the data stored in the storage system. In a case where the flash package has a processor, one method of lower-level capacity virtualization is for this processor to virtualize the capacity inside this package. However, the processor of the storage system controller may also carry out the lower-level capacity virtualization. Further, a capacity virtualization function, which regards the storage medium as a flash memory, has a virtual capacity that is larger than the real capacity, and regards a block, which is the delete unit, as the allocation unit, may be provided to the host without a conventional higher-level capacity virtualization function.
[0065] The flash package 230 is recognized as a single storage device from the storage controller 200. For enhanced reliability, the storage controller 200 comprises a RAID (Redundant Array of Independent (or Inexpensive) Disks) function that makes it possible to recover the data of the flash package 230 even in a case where an error occurs in a prescribed number (for example, one or two) of the flash packages 230 (Furthermore, the "D" in the term "RAID" stands for "Disk", but when a failure occurs in a certain storage device, the function for restoring the data of the failed device based on redundant data of a different storage device is also applicable to a storage device other than a Disk.). In the case of the RAID function, a single RAID configuration is constructed from a plurality of flash packages 230. A group that accords with this RAID configuration will be called a "package group" below. However, when the storage system 100 need not have a RAID configuration, this invention is valid.
[0152] The flash block capacity 3004 is the physical capacity of the block, which is the deletion unit of the flash memory. By contrast, the package block capacity 3005 is the capacity of the data stored in the virtual block and real block. In this embodiment, the flash block capacity 3004 (physical capacity of real block) is larger than the package block capacity (capacity (size)) stored in real block. The reason the two capacities 3004 and 3005 differ is primarily due to performance enhancement and extending the life of the block. These reasons will be explained below. Hypothetically, it is supposed that the two capacities 3004 and 3005 are the same. In this case, data is stored in all of the real blocks of the flash memory. It is supposed that the package controller 315 has received from the storage controller 200 a request (an ordinary write request) for rewriting a portion of the data inside the real block. Since the real block of the flash memory is not capable of a rewrite, the package controller 315 must read out all the data of this real block to the buffer 330, update only the rewrite part, and after deleting the relevant real block one time, store all the post-update data in the relevant real block. In a case where this kind of processing is executed each time the flash package 230 receives a write request, processing time is prolonged. To solve for this, in this embodiment, the value of the package block capacity 3005 is a smaller value than that of the flash block capacity 3004. Consequently, an empty capacity will exist in the real block, and when rewrite data enters the empty capacity, an additional write is carried out in the empty capacity. Furthermore, in a case where this additional write has been performed, the flash package 230 manages which address (may be a relative address) date inside the corresponding virtual block is written. In a case where the empty capacity becomes smaller and the rewrite data can no longer be entered, a delete process is carried out. In accordance with this, since the delete nth process may be carried out one time for every (n being an integer of 1 or higher) write request, it is possible to enhance performance. Further, reducing the number of delete processes also contributes toward extending the life of the flash memory.
[0173] The real block information 3300 comprises areal block ID 3301, an empty block pointer 3302, a real block error flag 3303, an empty capacity in real block 3304, additional write data address information 3305, and a number of real block deletions 3306.
[0191] Step 5003: Ina case where the format information 2005 is valid, as for the execution part 4000, this pattern data (repetitive information) is stored in the read-source area. For this reason, the execution part 4000 stores the pattern data of this information 2005 in the cache memory 210, and jumps to Step 5010.
[0239] The schedule part 4400 is able to determine a package group that has a short life expectancy as the transfer-source package group, and the "life expectancy" is calculated based on the average number of deletions and the deletion limitation times 2512. Specifically, for example, the life expectancy for one package group 230 is obtained by calculating {(the deletion limitation times 2512-the cumulative number of deleted blocks in package 2508)/the average number of deletions}+the current time (the time acquired from the timer 240).
(B1) The average number of deletions is not greater than a second predetermined threshold (the second threshold is not greater than the above-mentioned first threshold); (B2) The life expectancy is longer than the guarantee period end time 2511; and (B3) The average number of deletions is less than a fixed percentage compared to another flash package 230. More specifically, for example, the package group 280 comprising the flash package 230 of (B1) is determined as the transfer destination with respect to the transfer-source package group comprising the flash package 230 of the above-mentioned (A1), the package group 280 comprising the flash package 230 of (B2) is determined as the transfer destination with respect to the transfer-source package group comprising the flash package 230 of the above-mentioned (A2), and the package group 280 comprising the flash package 230 of (B3) is determined as the transfer destination with respect to the transfer-source package group comprising the flash package 230 of the above-mentioned (A3). The package group 280 that becomes the transfer destination at this time, for example, is determined based on either the difference of the average number of deletions or the difference in the life expectancy with the transfer source.
[0244] The schedule part 4400, for example, determines as the transfer-source package group a package group 280 comprising a flash package that conforms to at least one of (X1) and (X2) below:
[0245] The schedule part 4400, for example, determines as the transfer-destination package group a package group comprising a flash package that conforms to at least one of (Y1) and (Y2) below:
[0246] Step 10003: The schedule part 4400 executes processes as follows:
[0247] The above-mentioned (c) and (d) are executed for all the determined transfer-source pages. Consequently, a transfer-source page and transfer-destination page pair are determined.
[0248] In (a), the schedule part 4400, for example, determines the transfer-source page based on at least one of the cumulative period of allocated real blocks 2106, cumulative number of deleted blocks 2107 (alternately, the write data amount 2112), and the number of allocated real blocks 2104 of the respective real block information 2100 belonging to the transfer-source package group 280. Specifically, for example, the transfer-source page determined by the schedule part 4400 is characterized by either (x) or (y) below:
[0249] A transfer-source page having the characteristic feature of (x), for example, is determined in the case of a group in which the transfer-source package group corresponds to any of the above-mentioned (A1) through (A3). A transfer-source page having the characteristic feature of (y) is determined in the case of a group in which the transfer-source package group corresponds to either of the above-mentioned (B1) or (B2).
[0250] Step 10004: The schedule part 4400 starts up, from among the page transfer process execution part 4500 that exists for each package group 160, the page transfer process execution part 4500 corresponding to the package group 280 having at least one transfer-source page.
[0251] Step 10005: The schedule part 4400 executes (a) and (b) below:
[0252] FIG. 25 shows the flow of processing of the page transfer process execution part 4500.
[0253] The page transfer process execution part 4500 exists for each package group 280. Further, as described in Step 10004 of FIG. 24, the page transfer process execution part 4500 corresponding to the package group 280 having at least one transfer-source page is started up from the page transfer schedule part 4400.
[0254] Step 11000: The execution part 4500 retrieves real page information 2100 comprising the waiting state for transferring 2111 that is ON. The real page corresponding to this real page information 2100 is the transfer-source page. In a case where there is no real page information 2100 comprising the waiting state for transferring 2111 that is ON, this processing flow ends.
[0255] Step 11001: The execution part 4500 sets the waiting state for transferring 2111 inside the retrieved real page information 2100 to OFF, and sets the moving state flag 2109 to ON.
[0256] Step 11002: The execution part 4500 specifies a group of virtual blocks that is allocated to the transfer-source page. The package group information 2300 shown by the package group 2101 corresponding to the transfer-source page is the relevant package group information 2300. The flash package 230 corresponding to the flash package information 2500 shown by the flash package pointer 2305 inside this package group information 2300 is the flash package (transfer-source package) 230 constituting the basis of the transfer-source page. The execution part 4500, based on the real page address 2102 corresponding to the transfer-source page and the block capacity 2503 corresponding to the transfer-source package, specifies the group of virtual blocks targeted for transfer within the respective flash packages 230 for all the flash packages 230.
[0257] Step 11003: The execution part 4500 sends a request to the package controller 315 of each flash package 230 configuring the transfer-source group (the package group constituting the basis of the transfer-source page) 280 to read the data stored in the specified group of virtual blocks.
[0258] Step 11004: The execution part 4500 waits for completion reports from all the flash packages 230 of the request send destinations in Step 11003.
[0259] Step 11005: The execution part 4500 stores in the cache memory 210 the information included in the completion report from the flash package 230. Furthermore, this completion report comprises information denoting whether or not a real block has been allocated to each virtual block (read-source virtual block) specified in the request sent in Step 11003. In a case where the real block has been allocated to the read-source virtual block, the completion report comprises the following information (A) through (C):
[0260] Step 11006: The execution part 4500 specifies the group of virtual blocks allocated to the transfer-destination page. In this case, the real page information 2100 shown by the transfer-destination page pointer 2110 inside the real page information 2100 corresponding to the transfer-source page is the real page information 2100 corresponding to the transfer-destination page.
[0261] Step 11007: The execution part 4500 sends a write request for storing data in the specified virtual block (the write-destination virtual block) to the package controller 315 of each flash package 230 configuring the transfer-destination group (the package group constituting the basis of the transfer-destination page) 280. The information sent to each package controller 315 at this time is the information (information sent from the transfer-source package 230) that was stored in the cache memory 210 in Step 1105.
[0262] Step 11008: The execution part 4500 waits for completion reports from all the flash packages 230 of the write request sent destinations.
[0263] Step 11009: The execution part 4500 executes (a) through (c) below:
[0264] Step 11010: The execution part 4500 updates all of the package group information 2300 corresponding to the transfer source and all of the package group information 2300 corresponding to the transfer destination. Specifically, the execution part 4500 subtracts the number (for example, 1) of transfer-source pages from the number of real pages 2303 inside the package group information 2300 corresponding to the transfer source, and adds the number of transfer-destination pages to the number of real pages 2303 inside the package group information 2300 corresponding to the transfer destination.
Step 11011: The execution part 4500 updates all of the flash package information 2500 corresponding to the transfer source, and all of the flash package information 2500 corresponding to the transfer destination. Specifically, the execution part 4500, for example, executes (a) and (b) below: (a) Subtracts the respective values of the below-mentioned (U) through (Z) corresponding to the respective flash packages 230 of the real page information 2100 corresponding to the transfer-destination page from the respective values of the below-mentioned (A) through (F) inside the respective flash package information 2500 corresponding to the transfer source (that is, carries out (A)-(U), (B)-(V), (C)-(W), (D)-(X), (E)-(Y), and ((F)-(Z))); (A) The number of allocated real blocks in package 2505, (B) The additional number of real blocks in package 2506, (C) The cumulative period of allocated real blocks in package 2507, (D) The cumulative number of deleted blocks in package 2508, (E) The additional period of allocated blocks in package 2509, ((F) The cumulative write data amount in package 2510)), (U) The number of allocated real blocks 2104, (V) The additional number of real blocks 2105, (W) The cumulative period of allocated real blocks 2106, (X) The cumulative number of deleted blocks 2107, (Y) The additional period of allocated real blocks 2108, ((Z)) The write data amount 2112)). (There are cases in which the cumulative write data amount in package 2510 and the write data amount 2112 do not exist, and in such cases, processing for subtracting the write data amount 2112 from the cumulative write data amount in package 2510 is not executed.) (b) Adds the respective values of the below-mentioned (O) through (T) corresponding to the respective flash packages 230 of the real page information 2100 corresponding to the transfer-destination page to the respective values of the below-mentioned (G) through (L) inside the respective flash package information 2500 corresponding to the transfer source (that is, carries out (G)+(O), (H)+(P), (I)+(Q), (J)+(R), (K)+(S) and ((L)+(T))); (G) The number of allocated real blocks in package 2505, (H) The additional number of real blocks in package 2506, (I) The cumulative period of allocated real blocks in package 2507, (J) The cumulative number of deleted blocks in package 2508, (K) The additional period of allocated blocks in package 2509, ((L) The cumulative write data amount in package 2510)), (O) The number of allocated real blocks 2104, (P) The additional number of real blocks 2105, (Q) The cumulative period of allocated real blocks 2106, (R) The cumulative number of deleted blocks 2107, (S) The additional period of allocated real blocks 2108, ((T)) The write data amount 2112)). (There are cases in which the cumulative write data amount in package 2510 and the write data amount 2112 do not exist, and in such cases, processing for subtracting the write data amount 2112 from the cumulative write data amount in package 2510 is not executed.) Thereafter, the execution part 4500 returns to Step 11000.
[0265] The cumulative period of allocation of (a) may be managed more simply than in this embodiment. For example, even in a case where there is a change in the number of allocated real blocks between the carrying out of the higher-level long life control of the previous time and the carrying out of the higher-level long life control of this time, this change may be arbitrarily ignored.
[0266] The storage controller 200, based on the information received from the flash package 230, for example, is able to specify the number of deleted real blocks and the period of allocated real blocks, and is able to reflect the specified number of deletions and period of allocation in the cumulative period of allocation and overall number deletions for each flash package.
[0267] Next, an explanation of the operations executed by the flash package 230 will be given. The operation of the flash package 230 is executed by the package controller 315 (typically, the package processor 310), and the program is stored inside the package memory 320.
[0268] FIG. 26 shows the programs stored in the package memory 320.
[0269] The programs, for example, include a data read process execution part 12000, a data write process execution part 12100, a real block release process execution part 12200, a virtual block transfer process execution part 12300, and a virtual block store process execution part 12400. These programs are for realizing the lower-level wear-leveling control and the lower-level capacity virtualization function. As described above, in this embodiment, the flash package 230 realizes the lower-level wear-leveling control and the lower-level capacity virtualization function, but these may also be realized by the storage controller 200. In accordance with this, as shown in FIG. 27, substantially the same programs as the programs shown in FIG. 26 are stored in the common memory 220. In the configuration shown in FIG. 27, since the storage controller 200 executes this information, slight differences occur in the respective programs shown in FIG. 26.
[0270] The processes explained below by giving the programs 12000, 12100, 12200, 12300 and 12400 inside the package memory 320 as the subjects are actually carried out by the package processor 310.
[0271] FIG. 28 shows the flow of processing of the data read process execution part 12000.
[0272] The data read process execution part 12000 is executed when a read request is received from the storage controller 200. In the following explanation, an example will be given in which data is read out from a single virtual block, but the processing flow of FIG. 28 is also valid in a case where data is read out from a plurality of virtual blocks.
[0273] Step 13000: The execution part 12000, based on an address specified in the received read request and the package block capacity 3005, calculates the virtual block constituting the read source and the relative address inside the read-source virtual block.
[0274] Step 13001: The execution part 12000 acquires the real block information 3300 corresponding to the real block (read-source real block) allocated to the read-source virtual block from the real block information pointer 3202 inside the virtual block information 3200 corresponding to the read-source virtual block.
[0275] Step 13002: The execution part 12000 executes (a) and (b) below:
[0276] Step 13003: The execution part 12000 references the chip information 3100 corresponding to the flash chip 300 in which the read-targeted data is stored, identifies the package bus 340 to which this flash chip 300 is connected, and recognizes the corresponding package bus transfer unit 350.
[0277] Step 13004: The execution part 12000 requests the package bus transfer unit 350 recognized in Step 13003 to transfer the data from the address (the real block address) of the flash chip 300 to the buffer 330.
[0278] Step 13005: The execution part 12000 waits for the transfer to be completed.
[0279] Step 13006: The execution part 12000 sends the data that has been stored in the buffer 330 (the data targeted in the read request from the storage controller 200) to the storage controller 200.
[0280] FIGS. 29 and 30 show the flow of processing of the data write process execution part 12100.
[0281] The data write process execution part 12100 is executed when the flash package 230 receives a write request from the storage controller 200. In the explanation that follows, an example is given in which data is written to a single virtual block, but the flow of processing of FIGS. 29 and 30 is also valid in a case where data is written to a plurality of virtual blocks.
[0282] Step 14000: Execution part 12100 calculates the write-destination virtual block and the relative address of this virtual block based on the address specified in the received write request and the package block capacity 3005.
[0283] Step 14001: The execution part 12100 stores the write-targeted data appended to the above-mentioned write request in the buffer 330.
[0284] Step 14002: The execution part 12100 references the real block information pointer 3202 inside the virtual block information 3200 corresponding to the write-destination virtual block. The execution part 12100 determines whether or not the value of this pointer 3202 is the NULL value, that is, whether or not a real block has been allocated. In a case where a real block has been allocated (in a case where the result of this determination is affirmative), the execution part 12100 jumps to Step 14005.
[0285] Step 14003: This step is for allocating an empty block to the write-destination virtual block. Furthermore, it is supposed that the empty block allocated here has been deleted and is not storing data. The execution part 12100 executes (a) through (e) below:
(a) References the number of empty blocks in chip 3103 of the respective chip information 3100, and determines which flash chip 300 empty block is to be allocated; (b) References the empty block information management pointer 3400 corresponding to the flash chip 300 having the determined empty block, and performs updating so that the physical block information pointer 3302 corresponding to the write-destination virtual block shows the start of the real block information 3300 (This results in the real block being allocated to the write-destination virtual block); (c) Performs updating so that the empty real block information management pointer 3400 shows the next real block information 3300 (the real block information 3300 shown by the empty block pointer 3302 inside the real block information 3300 corresponding to the real block allocated to the virtual block); (d) Sets the empty block pointer 3302 inside the real block information 3300 corresponding to the real block allocated to the write-destination virtual block to the NULL value; and (e) Subtracts the number of allocated real blocks (for example, 1) from the value of the number of empty blocks in chip 3103 inside the chip information 3100 corresponding to this allocated real block. Step 14004: The execution part 12100 executes (a) through (c) below: (a) Sets the time information furnished in the above-mentioned write request in the virtual page allocation time 3203 inside the virtual block information 3200 corresponding to the write-destination virtual block; (b) Sets the number of virtual block deletions 3204 corresponding to the write-destination virtual block to 0; and (c) Creates an initial pattern (the pattern signifying that the write-targeted data (the data appended to the write request in the explanation of FIGS. 29 and 30) has not been received from the storage controller 200) the size of the package block capacity 3005 in the buffer 330.
(A) Information showing whether or not a real block has been allocated to each virtual block of the set of storage-destination virtual blocks; (B) All the data of this virtual block for all the virtual blocks to which areal block has been allocated (Specifically, the data inside the real block allocated to this virtual block); and (C) The virtual page allocation time 3203 and the number of virtual block deletions 3204 corresponding to the virtual block to which the real block has been allocated.
[0333] This information is stored in the buffer 330. In addition, the package controller 315 (the package processor 310) acquires from the buffer 330 the information of each virtual block (the information showing whether or not a real block has been allocated).
[0334] Step 17002: This is the same as Step 16002. The execution part 12400 searches for a virtual block to which a real block has been allocated on the basis of the acquired information. If no such virtual block exists, the execution part 12400 jumps to Step 17010.
[0335] Step 17003: The execution part 12400 allocates an empty block to the virtual block found in Step 17002. Since this process is the same as that in Step 14003 of FIG. 29, a detailed explanation will be omitted.
[0336] Step 17004: The execution part 12400 copies the information (the virtual page allocation time 3203 and the number of virtual block deletions 3204 to which the real block has been allocated) of (C) stored in the buffer 330 to the virtual page allocation time 3203 and the number of virtual block deletions 3204 inside the virtual block information 3200 corresponding to the empty block allocation-destination virtual block.
[0337] Step 17005: This is basically the same as Step 16004. The execution part 12400 analyzes the real block ID 3301 corresponding to the allocated real block, and specifies from which address of which flash chip 300 the real block allocated in Step 17003 exists.
[0338] Step 17006: This is basically the same as Step 16005. The execution part 12400 references the chip information 3100 corresponding to the flash chip 300 in which the specified real block is stored, identifies the package bus 340 to which this flash chip 300 is connected, and recognizes the corresponding package bus transfer unit 350.
[0339] Step 17007: The execution part 12400 instructs the package bus transfer unit 350 recognized in Step 17006 from which address of which flash chip 300 the data inside the buffer 330 (the data of (B) in Step 17001) is to be written.
[0340] Step 17008: The execution part 12400 waits for the transfer to be completed.
[0341] Step 17009: The execution part 12400 returns to Step 17002.
[0342] Step 17010: The execution part 12400 sends a completion report to the storage controller 200.
[0343] The preceding has been an explanation of one embodiment of the present invention, but this embodiment is merely an example for explaining the present invention, and does not purport to limit the scope of the present invention solely to this embodiment. The present invention may be put into practice in a variety of other modes.
[0344] For example, the package controller 315 may be disposed externally to the flash package 230. In accordance with this, the number of package controllers 315 may be greater or fewer than the number of flash packages 230. Specifically, for example, one package controller 315 may be provided for X (where X is an integer of 2 or higher) flash packages 230. In this case, the one package controller 315 will manage the corresponding relationship between a logical address and a physical address for each of X flash packages 230.
[0345] Also, for example, a data transfer (a data transfer in page units) between package groups may be carried out without going through the storage controller 200. Specifically, for example, the storage controller 200 may notify the package controller(s) 315 corresponding to the transfer source and/or the transfer destination of the transfer-source address and the transfer-destination address, and the data inside the real block allocated to the virtual block corresponding to the transfer-source page may be transferred to the real block allocated to the virtual block corresponding to the transfer-destination page between the package controller 315 corresponding to the transfer source and the package controller 315 corresponding to the transfer destination without going through the storage controller 200.
[0346] 100 Storage system