WO2015173889A1 - Storage device - Google Patents

Storage device Download PDF

Info

Publication number
WO2015173889A1
WO2015173889A1 PCT/JP2014/062714 JP2014062714W WO2015173889A1 WO 2015173889 A1 WO2015173889 A1 WO 2015173889A1 JP 2014062714 W JP2014062714 W JP 2014062714W WO 2015173889 A1 WO2015173889 A1 WO 2015173889A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
cache
write
write data
internal
Prior art date
Application number
PCT/JP2014/062714
Other languages
French (fr)
Japanese (ja)
Inventor
悠二 伊藤
彬史 鈴木
山本 彰
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2014/062714 priority Critical patent/WO2015173889A1/en
Publication of WO2015173889A1 publication Critical patent/WO2015173889A1/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control

Definitions

  • the present invention relates to a storage apparatus.
  • SSD Solid State Drive
  • SSDs are superior in random access performance compared to conventional HDDs (Hard Disk Drives), and especially SSDs using NAND flash memories are increasing in capacity and price, and are being replaced by HDDs.
  • SCM Storage Class Memory
  • SCM Storage Class Memory
  • MRAM Magnetic Random Access Memory
  • PRAM Phase Change Random Access Memory
  • ReRAM Resistance Random Access Memory
  • Servers and storage systems improve system performance by using data access bias and providing caches using high-speed storage media for servers and storage controllers. This is because if the access to the HDD that is the final storage destination of data is performed one by one, a large overhead occurs. By storing frequently accessed data in the cache, it is possible to access the data at high speed without accessing the HDD when accessing the data again. Therefore, the larger the cache capacity, the larger the amount of data that can be accessed at high speed. In other words, the data hit rate in the cache is improved, and an improvement in system performance can be expected.
  • DRAM is widely used as a cache in servers and storage systems. DRAM is much faster than HDD, but has a problem of large capacity and price.
  • Patent Document 1 a technique for applying an SSD having a low-cost and large-capacity characteristic as compared with a DRAM as a cache of a storage system has been disclosed (Patent Document 1). By using a NAND flash memory that is lower in price and larger than DRAM as a cache, the cache hit rate is improved and system performance and cost performance can be improved.
  • Flash memory has a limited number of data erasures. Further, in the flash memory, data cannot be overwritten on the same physical address, and it is necessary to write after erasing in a unit (block) larger than a read / write unit (page). Erasing one by one for overwriting has a large overhead and wastes a limited number of erasures. Therefore, a system using flash memory has a capacity larger than the capacity that can be recognized by the user, secures an update area for overwritten data, and logical addresses in the logical area that can be recognized by the user, Update processing is performed by associating with a physical address.
  • staging In a server or storage system cache, reading data to the cache is called staging, and eviction of data from the cache is called destaging.
  • a storage medium used as a cache of a server or a storage system the number of times of data erasure becomes much larger than that of a normal final storage device (storage device in which data is finally managed) due to staging and destaging of cache data. This is because in a cache having a small capacity relative to the capacity of the entire system, I / O processed by a large number of final storage devices is processed by a small number of cache storage media, so the load per storage medium This is because the update frequency increases.
  • write processing for storing read data is performed on the storage medium for cache.
  • an MLC (Multi Level Cell) type NAND flash memory has a limited number of data erasures, and therefore, if used as a cache, it will have a shorter lifetime than that used as a final storage device.
  • SLC (Single Level Cell) type flash memory and SCM which have a longer life than MLC type NAND flash memory, have a higher capacity unit price than MLC type flash memory, as described above, so increase the cache capacity. It is difficult to improve system performance.
  • an SSD with a problem in life When an SSD with a problem in life is used as a cache for a host device such as a server or a storage system, data with a small effect of caching may not be cached only in a high-cost, small-capacity DRAM with a long life, or may not be cached in an SSD. Conceivable. However, if the data is not cached in the SSD, the function of the SSD used as the cache device becomes unusable, and it is necessary to realize an equivalent function by the CPU of the host device or separately installed hardware. When the CPU of the host device is used, the processing overhead is increased and the system performance is degraded. If hardware is installed separately, the cost of the system will increase.
  • the data stored in the SSD is encrypted internally and the encrypted data can be read.
  • the SSD as a cache device, when data is cached, it is encrypted inside the SSD, and the data destaged from the SSD is stored in the final storage medium while being encrypted, thereby consuming resources such as the CPU of the host device It is possible to realize a system that encrypts all data without having to do so.
  • the data is stored once in the SSD so that it can be decoded inside the SSD, and when it hits as a cache, the data can be read faster than the HDD.
  • a storage device includes a cache device that caches data requested by a host device such as a server or a storage controller, and the cache device includes a high-speed, small-capacity, long-life internal cache unit, It has a storage unit that has a shorter lifetime than the cache unit and includes an internal controller that controls them.
  • the internal controller controls the priority of the internal destage from the internal cache unit to the storage unit according to the attribute / characteristic of each data stored in the internal cache unit of the cache device.
  • the internal controller preferentially destages data having a high internal destage priority from the internal cache unit to the storage unit, and suppresses writing of data having a low internal destage priority to the storage unit.
  • the cache device included in the storage device has a function of performing data conversion processing such as encryption and compression on the data stored in the cache device, and the write data received from the host device is data When conversion processing is performed and the data is stored in the cache device and data is transmitted to the host device, data is inversely converted and data is transmitted to the host device.
  • data conversion processing such as encryption and compression
  • the number of data writes to the storage unit can be appropriately suppressed.
  • the life can be extended.
  • the cache device has a function such as data conversion, the function of the cache device can be applied to the write data while suppressing the number of times of data writing to the short-lived storage unit.
  • FIG. 1 is a configuration diagram of an example of a storage system according to the first embodiment.
  • FIG. 2 is a diagram illustrating an example of a cache management table according to the first embodiment.
  • FIG. 3 is a configuration diagram of an example of the cache SSD according to the first embodiment.
  • FIG. 4 is a diagram illustrating an example of an internal cache management table according to the first embodiment.
  • FIG. 5 is a diagram illustrating an example of a logical-physical address conversion table according to the first embodiment.
  • FIG. 6 is a diagram illustrating an example of a write request command and a response command between the storage controller and the cache SSD controller according to the first embodiment.
  • FIG. 7 is a diagram illustrating an example of a read / data invalidation request command and a response command between the storage controller and the cache SSD controller according to the first embodiment.
  • FIG. 8 is a flowchart of write processing by the storage controller according to the first embodiment.
  • FIG. 9 is a flowchart of the cache storage process to the cache SSD by the storage controller according to the first embodiment.
  • FIG. 10 is a diagram illustrating the destage processing from the cache SSD to the final storage medium by the storage controller according to the first embodiment.
  • FIG. 11 is a flowchart of processing when a read request is received in the cache SSD according to the first embodiment.
  • FIG. 12 is a flowchart of processing when a data invalidation request is received in the cache SSD according to the first embodiment.
  • FIG. 13 is a flowchart of processing when a write request is received in the cache SSD according to the first embodiment.
  • FIG. 14 is a flowchart of internal destage processing in the cache SSD according to the first embodiment.
  • FIG. 15 is a flowchart of read processing by the storage controller according to the first embodiment.
  • FIG. 16 is a flowchart of internal destage processing in the cache SSD according to the second embodiment.
  • FIG. 17 is a flowchart of a write process to the cache SSD by the storage controller according to the second embodiment.
  • FIG. 18 is a flowchart of write processing by the storage controller according to the third embodiment.
  • FIG. 19 is a flowchart of read processing by the storage controller according to the third embodiment.
  • FIG. 20 is a flowchart of write processing by the storage controller according to the fourth embodiment.
  • FIG. 21 is a flowchart of a write process executed by the cache SSD according to the fifth embodiment.
  • FIG. 1 is a configuration diagram of an example of a computer system according to Embodiment 1 of the present invention.
  • the computer system includes a storage device 10 as an example of a cache control device and a host computer 40.
  • the storage apparatus 10 and the host computer 40 are connected via a network 20 such as a SAN (Storage Area Network) or a LAN (Local Area Network).
  • the host computer 40 is, for example, a general-purpose computer, and reads data stored in the storage device 10 or stores data in the storage device 10 to execute predetermined business processing.
  • the storage device 10 includes a storage controller 100 and one or more final storage media 190.
  • the final storage medium 190 is a storage medium that finally stores data written from the host computer 40 to the storage apparatus 10, and an HDD is used as an example. However, a configuration using a storage medium other than the HDD, such as an SSD, may be used.
  • the storage controller 100 is connected to the final storage medium 190 via the bus 170.
  • the storage controller 100 includes a host interface controller (I / F CTL) 110, a CPU 120, for example, a memory 130 represented by DRAM, a disk interface controller (I / F CTL) 150, a cache SSD 200 used as a secondary cache, and an ASIC 140.
  • the host I / F CTL 110, CPU 120, memory 130, disk I / F CTL 150, and cache SSD 200 are connected to the ASIC 140 via a dedicated internal bus 160 such as PCI and a memory bus 180.
  • the host I / F CTL 110 is a device for performing communication via the network 20.
  • the CPU 120 controls the operation of the entire storage apparatus 10.
  • the memory 130 includes a cache management table 1301 for managing the entire cache of the storage controller 100, a cache area 1302 for caching data, and a buffer area 1303 used as a temporary storage area for data transfer.
  • the cache area 1302 may be referred to as a cache DRAM 1302.
  • the ASIC 140 includes a DMA (Direct Memory Access) 141 that transfers data on the memory 130 without using the CPU 120.
  • the disk I / F CTL 150 is a device for communicating with the final storage medium 190 via the internal bus 170.
  • the storage controller 100 caches data read or written by the host computer 40 on the cache area 1302 on the memory 130 or the cache SSD 200. Processing for storing and reading data in the cache area 1302 or the cache SSD 200 will be described later.
  • FIG. 2 is an example of a cache management table for managing the cache of the storage controller 100 according to the first embodiment.
  • the cache management table 1301 is information for managing location information on the cache area 1301 or the cache SSD 200 in which data written from the host computer 40 is stored, and is stored on the memory 130 of the storage controller 100.
  • the contents of the cache management table 1301 are updated by the CPU 120 of the storage controller when data is stored in the cache.
  • the storage controller 100 (the CPU 120) manages the storage area on the cache DRAM 1302 and the cache SSD 200 by dividing the storage area into 64 KB fixed areas. In the embodiment of the present invention, this 64 KB fixed area is referred to as a cache segment. Call (or also called “segment”).
  • the CPU 120 manages each segment with a unique identification number (ID) in the storage apparatus 10, and this identification number is called a cache segment ID (or also called a “segment ID”).
  • 0x0 to 0x1FFFFF of the cache segment ID 13011 is attached to each segment (total storage area of 128 GB) of the cache DRAM 1302, and 0x200000 to 0x9FFFFF of the cache segment ID 13011 is allocated to each segment of the cache SSD 200 (total storage area of 512 GB).
  • the allocation method of the cache management unit and the cache segment ID is not limited to this.
  • the storage controller 100 manages the storage areas on the cache DRAM 1302 and the cache SSD 200 in 64 KB segment units, but the storage controller 100 secures the storage areas in the cache DRAM 1302 and / or the cache SSD 200. This is the minimum unit when releasing, and is not the minimum access unit when the storage controller 100 accesses (reads / writes) data to the cache DRAM 1302 and the cache SSD 200.
  • the storage controller 100 can read / write data from / to the cache segment in units of disk blocks (512 bytes, also referred to as sectors), which are the minimum access unit for the storage apparatus 10 of the host computer 40.
  • 4 KB which is a data unit for performing data compression or encryption is the minimum access. Become a unit.
  • the cache management table 1301 includes, for each cache segment specified by the cache segment ID 13011, the final storage medium 190 (or a plurality of final storage media 190) in which the data stored in the cache segment should be originally stored.
  • LBA 13012 which is a storage position (address) on the logical volume
  • bitmap 13013 representing a position where data is actually stored in the cache segment
  • cache state 13014 a cache state 13014
  • reference when destaged to the final storage medium 190 The latest access time 13015 (or also called the last access time 13015) is stored.
  • Bit map 13013 is 128-bit information representing the position where data is actually stored on the cache segment.
  • the cache segment size is 64 KB, but data may be stored (cached) in all 64 KB areas, or may not necessarily be stored.
  • Each bit of the bitmap 13013 indicates whether data is stored in each disk block in the cache segment (one disk block has 512 bytes. Therefore, one cache segment consists of 128 disk blocks).
  • the first bit (MSB) of the bitmap 13013 indicates whether data is stored in the first disk block in the cache segment.
  • the second, third,... Bits in the following order are the second, third, and third bits in the cache segment, respectively. This indicates whether data is stored in the disk blocks. When the content of each bit is 1, it means that data is stored in the disk block on the cache segment corresponding to the bit, and when 0, data is stored in the disk block on the cache segment corresponding to the bit. Means not stored.
  • the cache state 13014 indicates whether or not the cached data has been updated with respect to the data stored in the final storage medium 190.
  • “dirty” is stored in the cache state 13014, and when it is not updated (that is, stored in the cache segment).
  • Cache data 13014 is stored in the cache state 13014 (when the stored data and the data stored in the final storage medium 190 have the same content).
  • dirty data needs to be written (destaged) to the final storage medium 190.
  • the cache state 13014 includes Dirty is stored.
  • the latest access time 13015 information on the time when the cache segment corresponding to the latest access time 13015 was last accessed is stored.
  • the time information for example, the number of seconds elapsed from a certain point in time (such as January 1, 2010) is stored, but the time information may be stored in a format other than this.
  • the latest access time 13015 is information necessary when the storage controller 100 selects data to be destaged to the final storage medium 190 by using the LRU (Least Recently Used) algorithm.
  • the data selection policy at the time of destage is not limited to LRU.
  • the cache management table 1301 stores information necessary for the data selection policy instead of the most recent access time 13015.
  • the cache DRAM 1302 is used as a primary cache and the cache SSD 200 is used as a secondary cache. Therefore, the write data from the host computer 40 may be stored in both the cache DRAM 1302 and the cache SSD 200.
  • an entry having the same LBA 13012 exists among entries having a cache segment ID 13011 of 0x0 to 0x1FFFFF (segment in the cache DRAM 1302) and entries having a cache segment ID 13011 of 0x200000 to 0x9FFFFF (segment in the cache SSD 200).
  • FIG. 3 is an example of a configuration diagram of the cache SSD 200 in the present embodiment.
  • the cache SSD 200 in this embodiment is mainly a flash memory (which may be abbreviated as FM hereinafter) which is a non-volatile storage medium.
  • the cache SSD 200 includes one or more SSD controllers (SSD CTL) 201 and a plurality of FM 2011.
  • the SSD controller 201 includes an interface controller (I / F CTL) 2001, a processor 2003, an internal memory (DRAM) 2005, a data processing assist unit (Assist) 2006, an FM controller (FMC) 2007, and data transfer with each other.
  • An internal switch (S / W) 2004 is provided.
  • the interface controller 2001, the processor 2003, the data processing assist unit 2006, and the FM controller 2007 are connected to the internal switch 2004 via an internal bus.
  • the internal memory 2005 is connected to the internal switch 2004 via the memory bus 2009.
  • the interface controller 2001 is for accepting various commands for the cache SSD 200 or transferring data from the CPU 120 of the storage controller 100.
  • the interface controller 2001 is connected to the ASIC 140 included in the storage controller 100 in the storage apparatus 10.
  • the CPU 2003 is connected to each part of the SSD controller 201 via the internal switch 2004, and controls the entire SSD controller 201 using programs and management information (such as an internal cache management table 20052 described later) recorded in the internal memory 2005. To do.
  • the internal memory 2005 is a volatile memory such as a DRAM, which has a higher bit cost than FM2011 but has a higher speed and a longer life than FM2011.
  • an internal cache area 20051 used for temporarily storing data in the middle of data transfer processing in the SSD controller 201, and an internal cache management for managing data information stored in the internal cache area 20051
  • the internal cache area 20051 may be simply referred to as an internal cache 20051.
  • the size (capacity) of the internal cache 20051 is smaller than the total capacity of the plurality of FM 2011, but the size of the internal cache 20051 is smaller than the total capacity of the FM 2011. Even if it is not, the present invention is effective.
  • the FM controller 2007 is connected to the FM 2011 by a plurality of buses (for example, 16) 2010.
  • a plurality (for example, 2) of FM 2011 is connected to each bus 2010.
  • the cache SSD 200 provides a logical storage space composed of storage areas of a plurality of FM 2011 to the storage controller 100 to which the cache SSD 200 is connected. .
  • the storage controller 100 accesses (reads, writes, etc.) the cache SSD 200, for example, when data is written (written) to the cache SSD 200, a write command specifying a one-dimensional logical address in the logical storage space is cached.
  • the write target data can be written (virtually) on the logical storage space provided by the cache SSD 200.
  • the data that has arrived at the cache SSD 200 together with the write command is temporarily stored in the internal cache area 20051 and then moved (internal destage) to a storage area on the FM 2011 associated with a logical storage space.
  • These controls are realized by the CPU 2003 using the program and management information recorded in the internal memory 2005.
  • the cache SSD 200 has a function of performing data conversion processing and reverse conversion processing such as compression / decompression, parity generation, encryption / decryption of data stored in the cache SSD 200.
  • the data processing assist unit 2006 is hardware having a function of performing these data conversion processing / inverse conversion processing, for example, data compression / decompression processing.
  • the data processing assist unit 2006 performs data conversion processing (compression, encryption, etc.) on data that arrives from the interface controller 2001 and is written to the FM 2011 in accordance with an instruction from the CPU 2003, or data that is sent from the FM 2011 to the interface controller 2001.
  • Data reverse conversion processing decompression of compressed data, decryption of encrypted data, etc.
  • Each part of the SSD controller 201 described above may be configured in one semiconductor element as an ASIC or FPGA (Field Programmable Gate Array), or a plurality of individual dedicated ICs (Integrated Circuits) are connected to each other. It may be a configuration. Further, the cache SSD 200 may be provided with a capacitor or battery for the internal memory 2005, and the data and management information stored in the internal memory 2005 that volatilizes when power is interrupted may be saved in the FM 2011.
  • FM is used as a main storage medium as shown in FIG. 3, but the storage medium installed in the cache SSD 200 is not limited to FM, and Phase Change RAM. Or non-volatile memory such as Resistance RAM. Further, a configuration in which a part or all of the FM 2011 is a volatile RAM (DRAM or the like) may be used.
  • DRAM volatile RAM
  • the storage controller 100 designates an address (logical address) on the logical storage space as the write destination.
  • a write command is issued to the cache SSD 200.
  • Data that arrives at the cache SSD 200 together with the write command is temporarily stored (cached) in the internal cache area 20051.
  • the CPU 2003 of the cache SSD 200 associates the logical address, which is the write destination of the write data, with the location on the internal cache 20051 where the write data is temporarily stored, and records and manages it in the internal cache management table 20052.
  • the CPU 2003 of the cache SSD 200 manages the internal cache area 20051 by dividing it into fixed areas (called internal cache segments) of a predetermined size (for example, 4 KB or 8 KB). This is a unit for allocating and releasing the internal cache area 20051, and a unit for performing data processing (compression and encryption) by the data processing assist unit 2006. Further, the CPU 2003 manages each internal cache segment with an identification number (referred to as an internal cache segment ID, but may be abbreviated as “segment ID”) that is unique within the cache SSD 200.
  • an identification number referred to as an internal cache segment ID, but may be abbreviated as “segment ID”
  • the original write destination of the data stored in the internal cache segment (in the logical storage space described above)
  • a logical address 20052 that is a write destination address designated by the storage controller 100
  • a data size 200533 representing a data size after data processing (compression, etc.) of the internal cache segment
  • an internal cache State 200524 the latest access time 200525 to be referred to at the time of destage to FM
  • internal destage priority 200526 (sometimes abbreviated as destage priority) to FM are stored.
  • the data size 200533 is used when the data size fluctuates as a result of performing data processing by the data processing assist unit 2006 when data is stored in the cache SSD 200. For example, when compression is performed as data processing, the data size is often reduced.
  • the data size 20053 stores data size information after data processing (for example, compression). For example, in the example of FIG. 4, taking the information stored in the row (20052-0) where the internal cache segment ID 200521 is 0x1 as an example, the 4 KB internal cache area 20051 whose internal cache segment ID 200521 is 0x1 is secured. However, data after data processing is stored in the internal cache area, and it can be seen that the size is 1 KB when referring to the contents stored in the data size 200533.
  • the cache SSD 200 provides the storage controller 100 even when the cache SSD 200 performs data compression by the data processing assist unit 2006 and stores the compressed data in the internal cache area 20051 or FM 2011, for example.
  • the logical storage space is not affected, and the storage controller 100 seems to read / write data before compression (uncompressed data).
  • the internal cache state 200524 is the same as the cache state 13014 of the cache management table 1301 described above, and the internal cache state 200524 stores either “clean” or “dirty” information.
  • the latest access time 200525 is the same as the latest access time 13015 of the cache management table 1301 described above, and information on the last access time to the internal cache segment corresponding to the latest access time 200525 is stored. Similar to the cache area 1302, when data is moved (destaged) from the internal cache area 20051 to the FM 2011, an LRU algorithm is used as a selection policy for data to be moved, but the policy is not necessarily limited to the LRU algorithm. When the LRU algorithm is not used, information corresponding to the destage policy is stored in the internal cache management table 20052 instead of the latest access time 200525.
  • the write data is immediately evicted from the cache SSD 200 by using the data information 3005 included in the write request command 3000 described later transmitted from the storage controller 100. Is determined (or the storage controller 100 is unlikely to re-access the write data) or is held (re-accessed from the storage controller 100), and the internal destage priority 200526 is determined. And set when the internal cache management table 20052 is updated. In order to suppress deterioration due to writing of the short-lived FM 2011, for data predicted to be immediately evicted from the cache SSD 200, the internal destage priority 200526 is set low, and the internal cache 20051 is not written to the FM as much as possible. Fasten with.
  • the data is on the internal cache 20051 of the cache SSD 200 when the storage controller 100 destages to the final storage medium 190.
  • a read from the cache SSD 200 becomes a hit in the internal cache 20051, and data is invalidated from the cache SSD 200 by a subsequent invalidation request, so that no write to the FM occurs. Details of this series of processing will be described later.
  • the destage priority to the FM 200526 is used for selecting data to be destaged from the internal cache 20051 to the FM, together with the latest access time 200525, when the data is evicted from the internal cache 20051.
  • the destage priority 2005526 either high (High) information or low (Low) information is stored (in addition, “1” is stored instead of storing high (High) information, or low ( (“Low”) may be stored instead of storing "0").
  • the data destage from the internal cache 20051 to the FM by the SSD controller 201 is referred to as an internal destage.
  • data to be internally destaged by the LRU algorithm is selected from data having a high destage priority level of 200526.
  • Data with a low destage priority 200526 is selected for internal destage only when there is no data with a high destage priority 200526.
  • the internal destage policy is not limited to the above policy.
  • a policy is adopted such that in addition to data with a high destage priority 200526, data with a low destage priority 200526 is also an internal destage candidate. May be.
  • a plurality of levels of information may be stored.
  • the CPU 120 of the storage controller 100 determines whether each write data is sequential access data or random access data.
  • a known method such as determining whether or not an access request has arrived can be used), and during a write request to the cache SSD 200 (specifically, in the data information 3005 described later).
  • Information of either “random access data” or “sequential access data” is stored and transmitted to the SSD controller 201.
  • sequential access there is a low possibility that re-access to write data will be performed (that is, the possibility of a cache hit is low). Therefore, the sequential access data stored in the cache DRAM 1302 and the cache SSD 200 is destaged to the final storage medium 190 without hitting.
  • the SSD controller 201 predicts that the data notified as sequential access data has a low possibility of a cache hit, and sets the internal destage priority 200526 to “low” when the data is stored in the internal cache 20051. And set.
  • the internal destage priority 200526 is set to “high” to make internal destage easier (easier to be written to FM) than sequential access data.
  • the sequential access data is relatively kept in the internal cache 20051 as much as possible to make it difficult to be internally destaged.
  • the logical / physical address translation / update (logical / physical conversion / logical / physical update) of the cache SSD 200 will be described with reference to FIG.
  • the FM 2011 cannot overwrite the same physical address.
  • the cache SSD 200 assigns a new (unwritten) physical address of the FM 2011 to the logical address specified by the write command, and writes to the assigned physical address.
  • the mapping between the logical address 20000531 designated by the storage controller 100 and the physical address on the FM 2011 assigned to the logical address 2005312 is stored in the logical / physical address conversion table 20053 on the internal memory 2005, and Manage the mapping.
  • the CPU 2003 refers to and updates the logical / physical address conversion table 20053.
  • the CPU 2003 When the SSD controller 201 receives a read request, the CPU 2003 refers to the logical / physical address conversion table 20053 and acquires the physical address 20000532 corresponding to the logical address 20000531 for which the read request has been made. This process is called logical-physical conversion. Thereafter, the CPU 2003 makes a read request to the corresponding FM 2011 using the physical address 20052, reads data from the FM 2011, and transfers the read data to the storage controller 100 via the interface controller 2001.
  • the CPU 2003 secures an unwritten area on the FM 2011 for storing write data, and writes the data to the FM 2011 having the secured area. Thereafter, the CPU 2003 refers to the logical / physical address conversion table 20053 and updates the physical address 20000532 corresponding to the logical address 20000531 for which the write request has been made, to the physical address of the area in which data is newly stored. This process is called logical update.
  • the cache SSD 200 performs data processing in units of 4 KB when performing data processing (compression or encryption) by the data processing assist unit 2006.
  • the management of logical addresses in the address conversion table 20053 is also performed in units of 4 KB.
  • the write request command 3000 includes a command number (command No.) 3001 for identifying a command, a request content 3002 indicating that it is a write, a start address 3003 in the write destination logical space, a data size 3004 of the write data, and an SSD controller 201.
  • Data information 3005 serving as a hint for setting the destage priority to the FM is included.
  • the request content 3002 includes information indicating the type of command (information indicating that it is a write), the address of the area where the write target data is currently stored (for example, the address of the cache area 1302), and the data processing assist unit. Information specifying whether or not to perform data compression or encryption is included in 2006. As described above, the data information 3005 stores either “random access data” or “sequential access data”.
  • the SSD controller 201 transmits a response command 4000 to the write request command 3000 to the CPU 120 of the storage controller 100.
  • the response command 4000 includes a command number 4001 for identifying the command and result information 4002 indicating information such as completion or failure.
  • the command number 4001 stores the same information as the command number 3001 included in the write request command 3000.
  • the CPU 120 of the storage controller 100 can determine whether the write request by the write request command 3000 issued by the storage controller 100 has ended normally or has failed.
  • the CPU 120 of the storage controller 100 transmits a read or data invalidation request command 5000 to the SSD controller 201.
  • the read or data invalidation request command 5000 includes a command number 5001 for identifying the command, a request content 5002 indicating read or data invalidation, a read or invalidation start address 5003, and a read or invalidation request size 5004.
  • the request content 5002 includes information indicating the type of command (information indicating that it is a read request or invalidation request), and the data processing assist unit 2006 decompresses or decrypts the read data to store the controller. Information specifying whether or not to return to 100 is included.
  • a response command 6000 is transmitted from the SSD controller 201 to the CPU 120 of the storage controller 100. Similar to the response command 4000 to the write request command 3000, the response command 6000 includes a command number 6001 for identifying the command and result information 6002 indicating information such as completion or failure.
  • the cache DRAM 1302 is a primary cache and the cache SSD 200 is a secondary cache for the cache destination selection by the CPU 120 of the storage controller 100 will be described.
  • the area specified by the read / write request from the host computer 40 is the final storage medium 190 (or a volume composed of one or more final storage media 190) accessed by the host computer 40.
  • the boundary coincides with the 4 KB boundary in the storage space (this is because the minimum unit of data processing by the data processing assist unit 2006 is 4 KB) will be described.
  • FIG. 8 is processing executed by the CPU 120 of the storage controller 100 unless otherwise specified.
  • the write request received from the host computer 40 may be referred to as a host write request below.
  • a read request received from the host computer 40 may be referred to as a host read request.
  • the CPU 120 of the storage controller 100 When the CPU 120 of the storage controller 100 receives a host write request from the host computer 40 (S10), it performs a hit determination of the cache DRAM 1302 using the cache management table 1301 (S20).
  • the cache DRAM 1302 When the cache DRAM 1302 is hit, that is, when a cache segment for storing the data specified by the host write request has been secured on the cache DRAM 1302 (S20: hit), the write data is overwritten on the corresponding segment on the cache DRAM 1302 (S60). If there is a miss in the cache DRAM 1302 (S20: miss), it is checked whether there is an empty (unused) segment in the cache DRAM 1302 (S30).
  • the cache SSD 200 After the data is stored in the cache DRAM 1302, it is checked whether the cache SSD 200 is hit using the cache management table 1301 (whether the cache segment for storing the write target data written by the host write request has been secured) (S70). . If there is a hit (S70: hit), the storage controller 100 requests the cache SSD 200 to invalidate the corresponding data (S80). The case of hit means that the cache SSD 200 stores pre-update data of the write target data written by the host write request, but the pre-update data is unnecessary and invalid. Process. Data invalidation processing in the cache SSD 200 will be described later.
  • the storage controller 100 notifies the host computer 40 of the write completion (S90).
  • the hit determination of the cache SSD 200 may be performed when the hit of the cache DRAM 1302 is determined in S20.
  • destage (S40) process to the cache SSD 200 which is performed in order to secure the free space in the cache DRAM 1302, will be described. This process is also executed by the CPU 120 of the storage controller 100.
  • the CPU 120 of the storage controller 100 selects data to be destaged from the cache DRAM 1302 to the cache SSD 200 (S41). As described above, the selection is performed in order from the data having the oldest access time (last access time) using the cache management table 1301. Further, since this destage process is a process for securing an area necessary for storing the data designated by the host write request, in S41, a plurality of data to be destaged (at least the host write request) May be the same or larger than the data specified in.
  • the cache management table 1301 is used to perform a hit determination of the cache SSD 200, that is, a process of confirming whether or not a segment for storing data to be destaged has been secured in the cache SSD 200. (S42). If it is a miss (S42: miss), it is confirmed whether there is an empty segment in the cache SSD 200 (S43). If there is no space (S43: No), the data in the cache SSD 200 is destaged to the final storage medium 190 (S44). The destage processing from the cache SSD 200 to the final storage medium 190 will be described later.
  • a new cache segment corresponding to the cache SSD 200 is secured (S45), and a write request command 3000 is transmitted to the cache SSD 200.
  • the destaged data is written from the cache DRAM 1302 to the cache SSD 200 (S46).
  • the data information 3005 stores either “random access data” or “sequential access data” for transmission.
  • a response command 4000 which is a write request completion result, is received from the cache SSD 200, and the destage processing from the cache DRAM 1302 is completed.
  • the CPU 120 of the storage controller 100 uses the cache management table 1301 to select data to be destaged from the cache SSD 200 using LRU as described above (S441). Subsequently, the CPU 120 reads the selected data from the cache SSD 200 (S442, S443, S444), and writes the read data to the final storage medium 190 (S445, S446, S447). Thereafter, since the data is stored in the final storage medium 190, the CPU 120 invalidates the data on the cache SSD 200 (S448, S449, S4410), and stores information about the last invalidated segment on the cache SSD 200 from the cache management table 1301. By deleting, a segment release process is performed (S4411). For the read from the cache SSD 200 (S443) and the data invalidation request (S449) on the cache SSD 200, the commands shown in FIG. 7 are used. Details of this processing will be described later.
  • the read process (S443) executed by the cache SSD 200 will be described with reference to FIG.
  • the CPU 2003 of the SSD controller 201 uses the internal cache management table 20052 to make a hit determination of the internal cache 20051 (S4432).
  • the CPU 2003 reads data from the internal cache 20051 (S4435). If there is a miss in the internal cache 20051 (S4432: miss), the CPU 2003 performs the above-described logical-physical conversion (S4433) and reads data from the FM 2011 (S4434). Thereafter, the CPU 2003 applies the data processing function of the cache SSD 200 to the read data as necessary (S4436), transfers the data to the storage controller 100 (S4437), and notifies the CPU 120 of completion (S4438). In the processing of S4436, the CPU 2003 performs data processing using the data processing assist unit 2006.
  • the read data is not cached in the internal cache 20051 of the cache SSD 200.
  • the data at the time of reading may be cached in the internal cache 20051.
  • the free space in the internal cache 20051 is confirmed. If there is no free space, internal destage is performed to secure the free space. Thereafter, a new empty segment is secured, and data read from the FM is transferred to the storage controller 100 and stored in the internal cache 20051.
  • the storage controller 100 since the storage controller 100 destages to the final storage medium 190, data conversion / inverse conversion processing is not performed when data is read from the cache SSD 200. .
  • the compressed data is read and destaged to the final storage medium 190, so that the storage controller 100 destages to the final storage medium 190.
  • the request content 5002 of the read request command specifies that conversion / reverse conversion of the read data is not performed (therefore, the process of S4436 described above is performed).
  • the storage controller 100 reads the read data for returning to the host computer 40 from the cache SSD 200 (and the cache SSD 200 stores data that has been converted by the data processing assist unit 2006). In this case, it is necessary to read data that has been subjected to data inverse transformation (decompression, decoding, etc.). For this reason, the request content 5002 of the read request command 5000 issued to the cache SSD 200 by the CPU 120 of the storage controller 100 specifies that reverse conversion of the read data is performed (therefore, the processing of S4436 described above is performed). Done).
  • the CPU 2003 of the SSD controller 201 When the CPU 2003 of the SSD controller 201 receives the data invalidation request command 5000 (S4491), it performs a hit determination of the internal cache 20051 using the internal cache management table 20052 (S4492). When the internal cache is hit (S4492: hit), the CPU 2003 releases the corresponding segment in the internal cache 20051 (S4493). When the segment is released or when a miss is made in the internal cache 20051 (S4492: miss), the CPU 2003 performs the above-described logical-physical conversion (S4494), and confirms the corresponding table entry in the logical-physical address conversion table 20053 (S4495).
  • data may be stored in both the internal cache 20051 and the FM 2011, and it is necessary to invalidate both of them, so that logical-physical conversion is performed even when the internal cache hits.
  • the corresponding table entry is valid (S4495: Valid)
  • the CPU 2003 records that the data of the relevant physical address is invalid in the block information 20054 (S4496), and further logically Information on the corresponding physical address recorded in the logical physical address conversion table 20053 is deleted from the physical address conversion table 20053 (S4497). Thereafter, the CPU 2003 sends a completion notification to the CPU 120 of the storage controller 100 (S4498) and ends the process.
  • the CPU 2003 of the SSD controller 201 uses the data processing assist unit 2006 as necessary according to the request content 3002 of the command 3000 (for example, a compression instruction, an encryption instruction, etc.). Data conversion processing is performed on the write data (S462).
  • the cache SSD 200 performs data conversion. For this reason, when the write request command 3000 is issued in order to store the write data received from the host computer 40 in the cache SSD 200 by the storage controller 100, the request content 3002 of the write request command is converted to data. Is specified.
  • the cache SSD 200 is not subjected to data conversion / inverse conversion processing. Therefore, in this case, the request content 3002 of the write request command issued to the cache SSD 200 by the CPU 120 of the storage controller 100 specifies that data conversion / inverse conversion is not performed (therefore, in S462 described above) No processing is performed).
  • the CPU 2003 makes a hit determination of the internal cache 20051 using the internal cache management table 20052 (S463).
  • the CPU 2003 overwrites the data in the corresponding segment of the internal cache (S467).
  • the CPU 2003 checks whether there is an empty (unused) segment in the internal cache 20051 (S464). If there is no free space (S464: No), the CPU 2003 internally destages the data on the internal cache 20051 to the FM 2011 in order to secure a free segment (S465). The internal destage process will be described later.
  • the determination in S464 is not limited to the mode in which the internal destage (S465) process is performed when there are no unused segments.
  • the unused area size (number of segments) is insufficient (when the size of the unused area is smaller than the size of the data requested to be written from the storage controller 100, or the size of the unused area is a predetermined value)
  • the internal destage (S465) process may be performed when the value is less than the threshold value.
  • the CPU 2003 secures a new segment of the internal cache 20051 (S466) and writes data to the internal cache 20051 (S467).
  • the CPU 2003 sets the cache segment in which the write data is stored based on the “random access data” or “sequential access data” information included in the data information 3005 of the write request command 300 received in step S461. Corresponding “high” or “low” is stored in the column of the destage priority 200526 of the internal cache management table 20052. Thereafter, the CPU 2003 sends a response command 4000 to the CPU 120 of the storage controller 100 to give a write completion notification (S468).
  • the CPU 2003 of the SSD controller 201 selects data to be internally destaged (S4641).
  • the internal destage target data is selected, for example, by using the latest access time 200525 and the destage priority 200526 of the internal cache management table 20052, and the data whose destage priority 200526 is “high”. Is selected by selecting the oldest one having the latest access time of 200525. If there is no data with the destage priority 200526 “high”, the oldest data having the latest access time 200525 is selected from the data with the destage priority 200526 “low”.
  • other data selection methods may be employed.
  • the CPU 2003 After selecting data to be internally destaged, the CPU 2003 searches for an empty (unused) area (physical address) of the FM 2011 that is the internal destage destination (S4642). When there are a plurality of free areas (physical addresses) that can store the internal destage target data, the CPU 2003 selects an appropriate physical address in consideration of the life of the FM 2011 or the like. The CPU 2003 issues a write request to the FM 2011 corresponding to the selected write destination physical address (S4643), and writes that the data of the write destination physical address is valid in the block information 20054 (S4644). Further, the CPU 2003 updates the logical physical address conversion table 20053 in order to associate the requested logical address with the write destination physical address (S4645). Since the data has been stored in the FM 2011 as described above, the CPU 2003 updates the internal cache management table 20052 to release the corresponding segment in the internal cache 20051 (S4646), and the internal destage processing ends.
  • the CPU 120 of the storage controller 100 receives a host read request from the host computer 40 (S100), it performs cache hit determination using the cache management table 1301 (S110, S120).
  • the cache DRAM 1302 is hit (S110: hit)
  • the CPU 120 reads data from the cache DRAM 1302 (S190).
  • the cache DRAM 1302 is not hit (S110: miss) and the cache SSD 200 is hit (S120: hit)
  • the CPU 120 issues a read request command to the cache SSD 200 (S140).
  • the read process performed in the cache SSD 200 is the same as the process performed in S443.
  • the cache SSD 200 applies the data processing function in the cache SSD 200 to the data, and processes the data (data decompression or data decryption). ). Then, the processed data is transferred to the buffer area 1303 of the storage controller 100.
  • the CPU 120 If there is also a miss in the cache SSD 200 (S120: miss), the CPU 120 reads the data from the final storage medium 190 and stores the data in the temporary storage area in the memory 130, ASIC 140, or IF CTL 150 (S130). Further, the CPU 120 checks whether there is an empty segment in the cache SSD 200 (S150). If there is no empty segment (S150: No), the CPU 120 performs destage processing from the cache SSD 200 to the final storage medium 190 (S160). The empty confirmation of the cache SSD 200 and the destage processing (S150, S160) may be performed before reading from the final storage medium 190 (S130). The destage processing (S160) is the same as S44.
  • the CPU 120 After destage or when the cache SSD 200 is empty (S150: Yes), the CPU 120 secures a new cache segment corresponding to the cache SSD 200 and issues a request to the cache SSD 200 to write the data read from the final storage medium 190. (S170).
  • the write process to the cache SSD 200 is the same as S46.
  • the CPU 120 issues a request to read the data written in the cache SSD 200 to the cache SSD 200 (S180).
  • the cache SSD 200 that has received this read request performs processing (data decompression and data decryption) on the data as in S443, and the processed data is transferred to the buffer area 1303 of the storage controller 100.
  • the storage controller 100 transfers the data read from any medium to the host computer 40 (S200) and ends the process.
  • the CPU 120 when any of the caches misses and is read from the final storage medium 190 (S130), the CPU 120 once writes the data read from the final storage medium 190 to the cache SSD 200 and then writes to the cache SSD 200.
  • Read data Since the data processing function of the cache SSD 200 is applied to the data on the final storage medium 190 at the time of writing and processing such as compression and encryption is performed, the data is stored in the cache SSD 200 once and the data processing function is applied again. This is because the data needs to be handled by the host computer 40 by performing data expansion or decryption. For this reason, data to be transmitted to the host computer 40 needs to be temporarily written from the final storage medium 190 to the cache SSD 200.
  • the FM 2011 Is unlikely to occur and the read latency is low.
  • the storage controller 100 may manage it.
  • the cache SSD 200 is notified of necessary information by a write request command 3000 and a read request command 5000 to the cache SSD 200.
  • another information different from the write request command 3000 and the read request command 5000 may be issued to notify the cache SSD 200 of necessary information.
  • data in which the destage priority level 200526 is set high is preferentially written to the FM 2011. This prevents data with a low destage priority 200526 from being written to the FM 2011 as much as possible, and minimizes the lifetime degradation of the FM 2011. However, if data having a high destage priority 200526 does not exist in the internal cache 20051 of the cache SSD 200, data having a low destage priority 200526 is also written to the FM 2011. On the other hand, in the storage apparatus 10 and the cache SSD 200 according to the second embodiment, control is performed so that only data having a high destage priority 200526 is written to the FM 2011.
  • the cache SSD 200 notifies the CPU 120 of the storage controller 100 that destage is necessary. This notification is performed at the timing when the cache SSD 200 receives a write request, but may be notified at other timings.
  • the SSD controller 200 may periodically monitor the free capacity of the internal cache 20051 and notify the CPU 120 of the storage controller 100 that destage is necessary when the free capacity of the internal cache 20051 becomes small.
  • FIG. 16 is an example of a flow of internal destage processing performed by the cache SSD 200 in the second embodiment.
  • the CPU 2003 of the SSD controller 201 confirms whether or not there is data having a high internal destage priority 200526 for the data in the internal cache 20051 (S46411), and if there is no such data (S46411: No), the SSD controller 201 Of the data in the internal cache 20051 that the destage to the final storage medium 190 is necessary, and the data (the last access time 200525 of the data managed by the internal cache management table 20052) among the data in the internal cache 20051 is the oldest ( (Data stored in the cache segment) is included in the result information 4002 of the response command 4000 to the write request command 3000 and notified to the CPU 120 of the storage controller 100 (S46412). , Internal de-stage processing of cache SSD20 is completed.
  • the CPU 120 of the storage controller 100 includes information indicating that destage to the final storage medium 190 is required in the result information 4002 of the response command 4000 returned from the SSD controller 201. In such a case, a process of destageing the data in the cache SSD 200 to the final storage medium 190 is performed.
  • the write completion notification is received from the cache SSD 200 with a response command 4000 to the write request command 3000. (S47).
  • the CPU 120 confirms from the result information 4002 whether write completion or destage is necessary (S48).
  • the result information 4002 includes information indicating that destage to the final storage medium 190 is necessary (S48: destage required)
  • the CPU 120 destages data from the cache SSD 200 to the final storage medium 190 ( S49).
  • This destage processing is substantially the same as S44 of the first embodiment (that is, the processing described in FIG.
  • the CPU 120 determines the final data among the data in the internal cache 20051 notified from the cache SSD 200 as destaged data. Select data with the oldest access time. This is because new data cannot be written to the cache SSD 200 unless the data in the internal cache 20051 is destaged. After the destage, the CPU 120 makes a write request to the cache SSD 200 again, and repeats the above processing until the write is completed.
  • the memory 130 (specifically, the cache DRAM 1302 in the memory 130) on the storage controller 100 is used as the primary cache and the cache SSD 200 is used as the secondary cache.
  • the primary cache is not used. That is, the point that only the cache SSD 200 is used as the cache of the storage apparatus 10 is different from the storage apparatus 10 according to the first or second embodiment.
  • the configuration of the storage apparatus 10 according to the third embodiment is substantially the same as that described in the first embodiment (described in FIG. 1), the illustration is omitted.
  • the storage apparatus 10 according to the third embodiment is different from the storage apparatus 10 according to the first embodiment in that the memory cache area 1302 does not exist in the memory 130.
  • Other points are the same as those described in the first embodiment.
  • the cache management table 1301 managed by the storage apparatus 10 according to the third embodiment Since the information included in the cache management table 1301 according to the third embodiment is the same as that in the first embodiment, the illustration is omitted. However, in the cache management table 1301 in the first embodiment, information about the cache segment of the cache DRAM 1302 (FIG. 2: 1310) is stored, but in the storage apparatus 10 according to the third embodiment, the storage area used as a cache is Since only the cache SSD 200 is stored, only information on the cache segment of the cache SSD (FIG. 2: 1311) is stored, and information on the cache segment of the cache DRAM 1302 (FIG. 2: 1310) is not stored.
  • the configuration of the cache SSD 200 according to the third embodiment and information managed by the cache SSD 200 in the internal memory 2005 are the same as the cache SSD 200 according to the first embodiment. Since they are the same, they will not be described here.
  • the CPU 120 of the storage controller 100 receives a write request from the host computer 40 (S10). This process is the same as the process S10 described with reference to FIG. Subsequently, the storage controller 100 performs a hit determination on the cache SSD 200 using the cache management table 1301 (S20 ').
  • the cache SSD 200 is hit, that is, when the cache segment for storing the data specified by the write request has been secured on the cache SSD 200 (S20 ′: hit), the write data of the corresponding segment on the cache SSD 200 is stored. Overwriting is performed (S60 '). If there is a miss in the cache SSD 200 (S20 ': miss), it is checked whether there is an empty (unused) segment in the cache SSD 200 (S30').
  • the CPU 120 of the storage controller 100 performs a cache hit determination using the cache management table 1301 (S120).
  • the cache SSD 200 is hit (S120: hit)
  • the CPU 120 issues a read request to the cache SSD 200 (S140).
  • the read process of the cache SSD 200 is the same as the process of S443 described in the first embodiment (that is, the process of FIG. 11).
  • the CPU 120 reads data from the final storage medium 190 and stores it in the temporary storage area in the memory 130, ASIC 140, or IF CTL 150 (S130).
  • the CPU 120 checks whether or not there is an empty segment in the cache SSD 200 (S150). If there is no empty segment (S150: No), the CPU 120 destages data from the cache SSD 200 to the final storage medium 190 (S160). The empty confirmation of the cache SSD 200 and the destage processing (S150, S160) may be performed before the read from the final storage medium 190 (S130). The destage processing (S160) is the same as S44. After destage or when there is a free space in the cache SSD 200 (S150: Yes), the CPU 120 newly secures a cache segment and writes the data read from the final storage medium 190 to the cache SSD 200 (S170). The write process to the cache SSD 200 is the same as S46.
  • the data processing function in the cache SSD 200 is applied to the data.
  • the CPU 120 issues a request for reading the data written in the cache SSD 200 to the cache SSD 200 (S180).
  • the cache SSD 200 that has received this read request performs processing (data decompression and data decryption) on the data as in S443, and the processed data is transferred to the buffer area 1303 of the storage controller 100.
  • the CPU 120 transfers the data read from any medium to the host computer 40 (S200), and ends the process.
  • the internal destage processing described in FIG. 14 is performed.
  • the internal destage processing as in the first embodiment, by selecting the data to be internally destaged by the LRU algorithm from the data having the high destage priority 200526, there is a possibility that the data will be reaccessed like sequential access data. Is less likely to be stored in the FM 2010 (internal destage).
  • the internal destage processing (the processing in FIG. 16) described in the second embodiment may be employed. Then, like the storage apparatus 10 according to the second embodiment, the storage apparatus 10 according to the third embodiment operates so as to write only data with a high destage priority 200526 to the FM 2011.
  • Example 4 Since the hardware configuration of the storage device and the cache SSD according to the fourth embodiment is the same as that described in the first or second embodiment, it will not be described here.
  • the memory 130 (specifically, the cache DRAM 1302 in the memory 130) on the storage controller 100 is used as the primary cache and the cache SSD 200 is used as the secondary cache.
  • the CPU of the storage controller 100 selects either the cache SSD 200 or the cache DRAM 1302 according to the data characteristics (for example, the final storage destination of the write data) and caches the data.
  • the final storage location of the write data can be determined by referring to the address information (LBA or the like) of the write target data included in the host write request.
  • the final storage medium 190 is a high-speed medium such as an SSD, for example, even if it is cached in the cache SSD 200 having the same access speed, the effect of improving the access performance is small.
  • the final storage medium 190 is a medium that is slower than the SSD, such as an HDD, only the cache SSD 200 is cached. In this case, the data stored in the cache DRAM 1302 cannot be used with the data processing function of the cache SSD 200, so the CPU 120 of the storage controller 100 or other hardware performs similar processing.
  • the handling of the data cached in the cache SSD 200 is the same as that in the third embodiment and the details are omitted.
  • write data is cached in either the cache DRAM 1302 or the cache SSD 200 based on the first data characteristic such as the type of the final storage medium.
  • the cache SSD 200 destages from the internal cache to the FM based on the second data characteristic (for example, write access type (sequential / random)) received from the CPU 120 of the storage controller 100. Determine the priority of.
  • the CPU 120 of the storage controller 100 receives a write request from the host computer 40 (S10). This process is the same as the process S10 described with reference to FIG. Subsequently, the CPU 120 confirms the LBA of the write request command and determines whether the final storage destination of the write data is a high speed medium such as SSD or a low speed medium such as HDD (S11). If the final storage destination is SSD (S11: SSD), the write data is stored in the cache DRAM 1302 (S13).
  • the storage processing in the cache DRAM 1302 is processing excluding S70 and S80 in FIG. This is because the cache DRAM 1302 and the cache SSD 200 do not hold the same LBA data, and therefore the data on the cache DRAM 1302 is not on the cache SSD 200.
  • the write data is stored in the cache SSD 200 (S12).
  • the storage process in the cache SSD 200 is the same as that after S42 in FIG.
  • the storage device of the fourth embodiment only the data stored in the final storage medium 190 that uses a storage medium with lower access performance than the SSD, such as an HDD, is cached in the cache SSD 200, such as an SSD.
  • the cache SSD 200 such as an SSD.
  • data stored in the final storage medium 190 using a storage medium having an access performance equivalent to that of the cache SSD 200 is not cached. Therefore, the amount of data written to the cache SSD 200 can be reduced, and the life of the storage medium (FM 2011) of the cache SSD 200 can be extended.
  • Example 5 will be described.
  • the hardware configurations of the storage device and the cache SSD according to the fifth embodiment are the same as those described in the first or second embodiment.
  • the cache SSD 200 according to the fifth embodiment when the deterioration of the FM 2011 of the cache SSD 200 progresses and it becomes difficult to keep the data, the cache SSD 200 does not perform internal destage and is the same as the second embodiment.
  • the storage controller 100 is requested to destage, and the data is destaged to the final storage medium 190. At this time, among the data stored in the FM 2011, a destage request is also made to the storage controller 100 for data whose cache state 13014 is “dirty”.
  • the cacheable capacity of the cache SSD 200 is reduced, but the data of the cache SSD 200 with respect to the write data or the data read from the final storage medium 190 is prevented while preventing the data from being lost due to the deterioration of the FM 2011. You can continue to apply functions such as data conversion.
  • FIG. 21 will be used to explain the operation when the FM 2011 of the cache SSD 200 reaches the end of its life.
  • FIG. 21 is a diagram for explaining the flow of processing executed by the cache SSD 200 when the cache SSD 200 receives a write request command from the storage controller 100. Many of the processes are the same as those in FIG. 13 of the first embodiment. Yes.
  • the cache SSD 200 when the cache SSD 200 receives a write request from the CPU 120 of the storage controller 100 (S461), the cache SSD 200 performs data processing (S462), and uses the internal cache management table 20052 to determine whether the internal cache 20051 is hit. This is performed (S463). When there is a hit in the internal cache (S463: hit), it overwrites the corresponding segment in the internal cache (S467).
  • miss If there is a miss in the internal cache 20051 (S463: miss), it is confirmed whether there is an empty (unused) segment in the internal cache 20051 (S464). If the internal cache 20051 has a free space (S464: Yes), a new internal cache segment is secured as in the first embodiment, and data is written to the internal cache. On the other hand, if there is no empty segment in the internal cache 20051 (S464: No), it is determined whether the FM 2011 has reached the end of its life (S469). As a determination method here, for example, the CPU 2003 of the SSD controller 201 periodically reads the data regardless of the request from the host device, and uses the guarantee code such as CRC attached to the data to determine the error rate. There may be a method of checking and determining that the lifetime has been reached when the error rate exceeds a preset threshold value.
  • the cache SSD 200 requests the CPU 120 of the storage controller 100 that destage is necessary (S46412). However, you may make it notify to CPU120 that a destage is required by the opportunity other than that.
  • the SSD controller 200 periodically monitors the free capacity of the internal cache 20051 and notifies the CPU 120 of the storage controller 100 that destage is necessary when the free capacity of the internal cache 20051 becomes small. May be. Further, the cache SSD 200 may notify the storage controller 100 that the FM 2011 has reached the end of its life.
  • the CPU 120 of the storage controller 100 that has received the notification that the FM 2011 of the cache SSD 200 has reached the end of its life, stores data whose cache state 13014 is “dirty” to the final storage medium 190 for the data already stored in the cache SSD 200. Stage.
  • the cache management table 1301 is updated and stored in the cache SSD 200 for those data. Treat as not. Specifically, the cache management information is updated assuming that the data recorded in the cache SSD 200 has been lost. Thereafter, for data stored in the cache SSD 200 that cannot be stored in the internal cache 20051, as described above, the storage controller 100 is notified that destage is necessary, and the storage controller 100 is destaged. No data is stored in the FM 2011 that has reached the end of its life.
  • the CPU 120 of the storage controller 100 acquires information based on the life of the FM 2011 from the cache SSD 200, and stores the data in the internal memory 2005 including the DRAM of the cache SSD 200. Destaging to the final storage medium 190 makes it possible to improve reliability.
  • Example 6 The hardware configurations of the storage device and the cache SSD according to the sixth embodiment are the same as those described in the first or second embodiment.
  • the storage apparatus manages a plurality of final storage media 190 as a RAID group, generates RAID Parity (hereinafter also abbreviated as “Parity”) from write data from the host computer 40, and writes A configuration in which Parity is stored in the final storage medium 190 together with data is targeted.
  • Parity RAID Parity
  • the cache SSD 200 generates a RAID parity from the data stored in the cache SSD 200 (write data written from the host computer 40) based on an instruction from the storage controller 100. According to this configuration, it is possible to offload a load related to RAID parity generation from the storage controller 100, and it is possible to improve the performance of the entire storage apparatus 10. For this reason, the cache SSD according to the sixth embodiment has a function of generating a parity. As described in the first embodiment, this function may be provided in the data processing assist unit 2006, or may be implemented in the cache SSD 200 as parity generation hardware different from the data processing assist unit 2006. Also good. Alternatively, the CPU 2003 may execute the parity generation.
  • the storage controller 100 stores the write data from the host computer 40 in the cache SSD 200 and then issues a parity generation command to the SSD.
  • This Parity generation command is at least an LBA that specifies the storage location of data to be generated for Parity (this is an address on the logical storage space provided by the cache SSD to the storage controller described in the first embodiment). ), One or two LBAs that specify the storage destination of the generated parity (one for RAID5, two for RAID6), and data length information.
  • the cache SSD 200 that has received this parity generation command from the CPU 120 of the storage controller 100 acquires data associated with the LBA specified by the command from the FM 2011 or the internal cache 20051, and performs a parity operation. Then, a parity is generated using the acquired data, stored in the internal cache 20051, and managed in association with the LBA specified by the parity generation command (specifically, managed using the internal cache management table 20052). Keep it).
  • a storage device performs destage processing to transfer infrequently accessed data from a cache to a final storage medium such as an HDD when the free capacity of the cache is reduced and new data cannot be placed in the cache.
  • An empty area is generated by deleting from the cache the data recorded in the final storage medium according to the stage.
  • the storage apparatus since the storage apparatus generally generates a parity for data determined to be destaged (destage target data), the generated parity is also generated in a short period of time after the generation, similar to the destage target data. It is transferred to the final storage medium and erased from the cache.
  • the parity generated by the parity generation described above is expected to be destaged in a short period of time. Therefore, when storing the generated parity in the internal cache 20051, the cache SSD 200 manages the parity as data having a low internal destage priority (the internal destage priority 200526 of the internal cache management table 20052 is “ Record as “Low”).
  • the Parity is preferentially stored in the DRAM 2005 (internal cache 20051) until the storage controller destages the Parity to the final storage medium 190 and an instruction to erase data (Parity) from the cache SSD 200 is given, and FM2011.
  • the amount of writing to FM2011 can be reduced and FM degradation can be reduced.
  • a storage apparatus includes an internal cache composed of a high-speed storage medium such as a DRAM and a cache apparatus (cache SSD) having a low-priced and large-capacity storage medium such as FM as a main storage area. . Since FM has a defect that the number of times of data erasure (the number of rewrites) is limited, the lifetime is shortened when rewriting is performed frequently.
  • the cache apparatus controls the priority of the internal destage of the cache target data based on the attribute / characteristic of the data.
  • a higher-level device such as a storage controller stores (caches) data in the cache device
  • it notifies the cache device of information related to the attributes and characteristics of the data (for example, sequential access, random access, etc.)
  • the cache device obtains data attributes and characteristics.
  • data that is evicted without being re-accessed from the host device data having a small cache effect
  • sequential write data is moved from the internal cache to the FM (internal destage). Therefore, it is possible to reduce the frequency of writing to the FM and extend the life (service life) of the cache device.
  • data is destaged from the cache device to the final storage medium based on a standard (such as LRU) that is different from the priority of data movement from the internal cache to the FM (internal destage). Without destaging to the final storage medium, and the frequency of writing to the FM is suppressed.
  • a standard such as LRU
  • the present invention is not limited to an example in which the storage controller designates data attributes and the cache device changes the priority of the internal destage based on the attributes. Even in a mode in which the cache device autonomously changes the destage priority depending on the type of data as in the cache SSD according to the sixth embodiment, the write frequency to the FM is reduced, and the life of the cache device (lifetime) ) Can be obtained.
  • Storage device 20 Network 40: Host computer 100: Storage controller 110: I / F CTL 120: CPU 130: Memory 140: ASIC 150: I / F CTL 160: Dedicated internal bus 170: Internal bus 180: Memory bus 190: Final storage medium 200: Cache SSD 2001: I / F CTL 2003: CPU 2004: Internal switch 2005: Internal memory 2006: Data processing assist unit (Assist) 2007: FMC 2011: FM

Abstract

A storage device according to the present invention is provided with a cache device that caches data requested from an upper-level device such as a host computer. The cache device is provided with an internal controller that includes an internal cache configured from a memory capable of high speed access, such as a DRAM, and a storage unit configured from a storage medium having an erasure number limit, such as a flash memory (FM), and that has the function of controlling the internal cache and the storage unit and of performing a conversion and inverse-conversion process with respect to stored data. After the storage device stores write data in the cache device, the cache device, on the basis of an attribute or characteristics of the write data, determines the priority of an internal destage of the write data from the internal cache unit to the storage unit. The cache device then performs an internal destage from the internal cache unit to the storage unit preferentially from data with higher internal destage priority.

Description

ストレージ装置Storage device
 本発明は、ストレージ装置に関する。 The present invention relates to a storage apparatus.
 近年、サーバやストレージシステム(ストレージ装置)には、記憶媒体として半導体デバイスを用いたSSD(Solid State Drive)が盛んに利用されている。SSDは、従来のHDD(Hard Disk Drive)に比べてランダムアクセス性能に優れ、特にNANDフラッシュメモリを用いたSSDについては大容量化、低価格化が進み、HDDとの置き換えが進んでいる。また、不揮発記憶媒体としてSCM(Storage Class Memory)は、NANDフラッシュメモリに比べ小容量で高価格であるが、アクセス速度や書き換え回数に優れ、高性能・長寿命の記憶媒体として注目されている。SCMは、不揮発性半導体メモリの一種であり、例えば、MRAM(Magnetic Random Access Memory)、PRAM(Phase Change Random Access Memory)、ReRAM(Resistance Random Access Memory)である。 Recently, SSD (Solid State Drive) using a semiconductor device as a storage medium is actively used in servers and storage systems (storage devices). SSDs are superior in random access performance compared to conventional HDDs (Hard Disk Drives), and especially SSDs using NAND flash memories are increasing in capacity and price, and are being replaced by HDDs. In addition, SCM (Storage Class Memory) as a nonvolatile storage medium is attracting attention as a high-performance, long-life storage medium that is superior in access speed and number of rewrites, although it has a small capacity and high price compared to a NAND flash memory. The SCM is a kind of nonvolatile semiconductor memory, for example, MRAM (Magnetic Random Access Memory), PRAM (Phase Change Random Access Memory), ReRAM (Resistance Random Access Memory).
 サーバやストレージシステムでは、データへのアクセス頻度の偏りを利用し、サーバやストレージコントローラに高速な記憶媒体を用いたキャッシュを設けることで、システム性能を向上させている。データの最終格納先であるHDDへのアクセスを逐一行うと、大きなオーバヘッドとなってしまうためである。キャッシュに高頻度でアクセスされるデータを格納しておくことで、再度同データにアクセスする際にはHDDへアクセスを行わずに高速にアクセスすることができる。そのため、キャッシュ容量が大きいほど、高速にアクセスできるデータ量が増加する。つまりキャッシュでのデータのヒット率が向上して、システム性能の向上が期待できる。 Servers and storage systems improve system performance by using data access bias and providing caches using high-speed storage media for servers and storage controllers. This is because if the access to the HDD that is the final storage destination of data is performed one by one, a large overhead occurs. By storing frequently accessed data in the cache, it is possible to access the data at high speed without accessing the HDD when accessing the data again. Therefore, the larger the cache capacity, the larger the amount of data that can be accessed at high speed. In other words, the data hit rate in the cache is improved, and an improvement in system performance can be expected.
 サーバやストレージシステムにおけるキャッシュとしてDRAMが広く用いられている。DRAMはHDDより遥かに高速であるが、大容量化や価格に問題がある。近年では、DRAMに比べ安価かつ大容量な特性を持つSSDをストレージシステムのキャッシュとして適用する技術が公開されている(特許文献1)。DRAMよりも低価格で大容量なNANDフラッシュメモリをキャッシュとして用いることで、キャッシュヒット率を向上させ、システム性能、コストパフォーマンスの改善を可能としている。 DRAM is widely used as a cache in servers and storage systems. DRAM is much faster than HDD, but has a problem of large capacity and price. In recent years, a technique for applying an SSD having a low-cost and large-capacity characteristic as compared with a DRAM as a cache of a storage system has been disclosed (Patent Document 1). By using a NAND flash memory that is lower in price and larger than DRAM as a cache, the cache hit rate is improved and system performance and cost performance can be improved.
米国特許第8214595号明細書U.S. Pat. No. 8,214,595
 フラッシュメモリでは、データ消去回数が限られている。さらにフラッシュメモリでは、同じ物理アドレスに対するデータの上書きはできず、一度リード/ライト単位(ページ)よりも大きい単位(ブロック)で消去してから書き込む必要がある。上書きのために逐一消去することはオーバヘッドが大きく、限られた消去回数を浪費してしまう。そのため、フラッシュメモリを用いたシステムでは、ユーザが認識できる容量よりも大きな容量を持ち、上書きされるデータ用に更新領域を確保して、ユーザが認識できる論理的な領域における論理アドレスと、実際の物理アドレスとの対応付けを行って更新処理を行う。例えば、論理アドレスLに対して物理アドレスPを割り当てているデータが更新された場合、論理アドレスLに対して新たに物理アドレスP’を割り当て、その物理ページにデータを書き込み、物理アドレスPのデータを無効化する。この後、フラッシュメモリの容量が足りなくなった場合には、新たに書き込める領域を確保するために無効化したデータの消去を行う必要がある。つまり、書き込みが行われるということは、SSDの寿命を消費することにつながる。 * Flash memory has a limited number of data erasures. Further, in the flash memory, data cannot be overwritten on the same physical address, and it is necessary to write after erasing in a unit (block) larger than a read / write unit (page). Erasing one by one for overwriting has a large overhead and wastes a limited number of erasures. Therefore, a system using flash memory has a capacity larger than the capacity that can be recognized by the user, secures an update area for overwritten data, and logical addresses in the logical area that can be recognized by the user, Update processing is performed by associating with a physical address. For example, when data in which a physical address P is assigned to a logical address L is updated, a new physical address P ′ is assigned to the logical address L, data is written to the physical page, and data of the physical address P is written. Disable. Thereafter, when the capacity of the flash memory becomes insufficient, it is necessary to erase invalidated data in order to secure a new writable area. In other words, the fact that writing is performed leads to the consumption of the life of the SSD.
 サーバやストレージシステムのキャッシュにおいて、キャッシュへのデータの読み上げをステージング、キャッシュからデータの追い出しをディステージングと呼ぶ。サーバやストレージシステムのキャッシュとして用いられる記憶媒体では、キャッシュデータのステージング、ディステージングにより通常の最終記憶装置(データが最終的に管理される記憶装置)よりもデータ消去回数が非常に多くなる。なぜなら、システム全体の容量に対して小容量であるキャッシュでは、多数の最終記憶装置が処理するI/Oを少数のキャッシュ用の記憶媒体で処理することになるため、記憶媒体1台あたりの負荷が高くなって更新頻度が増加してしまうからである。また、リード処理時にデータのステージングを行う際には、キャッシュ用の記憶媒体に対してはリードデータを格納するためのライト処理が行われる。つまりリードのみのアクセスしかない場合でも、キャッシュ用記憶媒体の内容の書き換えが行われ、消去回数消費につながる。特にMLC(Multi Level Cell)タイプのNANDフラッシュメモリは、データ消去回数が限られているため、キャッシュとして用いると、最終記憶装置として用いるよりもさらに短寿命となってしまう。一方で、MLCタイプのNANDフラッシュメモリより長寿命なSLC(Single Level Cell)タイプのフラッシュメモリやSCMなどは、前述した通り、MLCタイプのフラッシュメモリよりも容量単価が高いため、キャッシュ容量を増やすことが難しく、システム性能の向上に効果的でない。 In a server or storage system cache, reading data to the cache is called staging, and eviction of data from the cache is called destaging. In a storage medium used as a cache of a server or a storage system, the number of times of data erasure becomes much larger than that of a normal final storage device (storage device in which data is finally managed) due to staging and destaging of cache data. This is because in a cache having a small capacity relative to the capacity of the entire system, I / O processed by a large number of final storage devices is processed by a small number of cache storage media, so the load per storage medium This is because the update frequency increases. When staging data during read processing, write processing for storing read data is performed on the storage medium for cache. That is, even when there is only read access, the contents of the cache storage medium are rewritten, leading to consumption of the number of erasures. In particular, an MLC (Multi Level Cell) type NAND flash memory has a limited number of data erasures, and therefore, if used as a cache, it will have a shorter lifetime than that used as a final storage device. On the other hand, SLC (Single Level Cell) type flash memory and SCM, which have a longer life than MLC type NAND flash memory, have a higher capacity unit price than MLC type flash memory, as described above, so increase the cache capacity. It is difficult to improve system performance.
 寿命に課題のあるSSDをサーバやストレージシステムといった上位装置のキャッシュとして用いる場合、キャッシュする効果の小さいデータについては、高コスト、小容量だが長寿命なDRAMのみにキャッシュ、またはSSDにキャッシュしないことが考えられる。しかし、データをSSDにキャッシュしない場合、キャッシュ装置として用いるSSDの機能が利用不可となってしまい、上位装置のCPU、または別途搭載したハードウェアによって同等の機能を実現する必要がある。上位装置のCPUを用いる場合、処理オーバヘッドが大きくなり、システム性能が低下してしまう。別途ハードウェアを搭載する場合はシステムのコストが上昇してしまう。 When an SSD with a problem in life is used as a cache for a host device such as a server or a storage system, data with a small effect of caching may not be cached only in a high-cost, small-capacity DRAM with a long life, or may not be cached in an SSD. Conceivable. However, if the data is not cached in the SSD, the function of the SSD used as the cache device becomes unusable, and it is necessary to realize an equivalent function by the CPU of the host device or separately installed hardware. When the CPU of the host device is used, the processing overhead is increased and the system performance is degraded. If hardware is installed separately, the cost of the system will increase.
 例えば、SSDが格納したデータを内部で暗号化し、暗号化後のデータをリードできる機能を持つとする。そのSSDをキャッシュ装置として用い、データをキャッシュする際にSSD内部で暗号化し、SSDからディステージされるデータを暗号化したまま最終記憶媒体に格納することで、上位装置のCPUなどのリソースを消費することなく全データの暗号化するシステムを実現できる。データのリード時は、SSDに一度格納することで、SSD内部で復号させ、さらにはキャッシュとしてヒットした場合にHDDよりも高速にデータを読み出せる。しかし、SSDの寿命を考慮して、前述したキャッシュする効果の小さいデータについてSSDへキャッシュしない場合、暗号化および復号化ができず、同等の処理を行う上位装置のCPUまたは別ハードウェアなどのリソースが必要となる。 Suppose, for example, that the data stored in the SSD is encrypted internally and the encrypted data can be read. Using the SSD as a cache device, when data is cached, it is encrypted inside the SSD, and the data destaged from the SSD is stored in the final storage medium while being encrypted, thereby consuming resources such as the CPU of the host device It is possible to realize a system that encrypts all data without having to do so. When data is read, the data is stored once in the SSD so that it can be decoded inside the SSD, and when it hits as a cache, the data can be read faster than the HDD. However, in consideration of the life of the SSD, if the above-mentioned data having a small effect of caching is not cached in the SSD, it cannot be encrypted and decrypted, and resources such as a CPU of a higher-level device or other hardware that performs equivalent processing Is required.
 本発明の一実施形態に係るストレージ装置は、サーバやストレージコントローラといった上位装置から要求されたデータをキャッシュするキャッシュ装置を備え、キャッシュ装置は、高速・小容量・長寿命な内部キャッシュ部と、内部キャッシュ部より寿命の短い記憶部を有し、それらの制御を行う内部コントローラを備える。内部コントローラは、キャッシュ装置の内部キャッシュ部に格納された各データの属性・特性に応じて、内部キャッシュ部から記憶部への内部ディステージの優先度を制御する。内部コントローラは、内部ディステージ優先度の高いデータを優先的に、内部キャッシュ部から記憶部へとディステージし、内部ディステージ優先度が低いデータの記憶部へのライトを抑制する。 A storage device according to an embodiment of the present invention includes a cache device that caches data requested by a host device such as a server or a storage controller, and the cache device includes a high-speed, small-capacity, long-life internal cache unit, It has a storage unit that has a shorter lifetime than the cache unit and includes an internal controller that controls them. The internal controller controls the priority of the internal destage from the internal cache unit to the storage unit according to the attribute / characteristic of each data stored in the internal cache unit of the cache device. The internal controller preferentially destages data having a high internal destage priority from the internal cache unit to the storage unit, and suppresses writing of data having a low internal destage priority to the storage unit.
 また本発明の一実施形態に係るストレージ装置が備えるキャッシュ装置は、キャッシュ装置に格納されたデータに対する、暗号化や圧縮などのデータ変換処理を行う機能を備え、上位装置から受信したライトデータにデータ変換処理を施してキャッシュ装置に格納し、上位装置に対してデータを送信する際には、データ逆変換を施して上位装置にデータを送信する。 In addition, the cache device included in the storage device according to the embodiment of the present invention has a function of performing data conversion processing such as encryption and compression on the data stored in the cache device, and the write data received from the host device is data When conversion processing is performed and the data is stored in the cache device and data is transmitted to the host device, data is inversely converted and data is transmitted to the host device.
 本発明によれば、フラッシュメモリなどの、データ消去回数の限られている記憶媒体を記憶部として用いたキャッシュ装置において、記憶部へのデータ書き込み回数を適切に抑制することができ、記憶部を長寿命化することができる。また、キャッシュ装置がデータ変換等の機能を備えている場合、短寿命な記憶部へのデータ書き込み回数を抑制しつつ、ライトデータに対するキャッシュ装置の機能の適用を可能にすることができる。 According to the present invention, in a cache device using a storage medium with a limited number of data erasures, such as a flash memory, as a storage unit, the number of data writes to the storage unit can be appropriately suppressed. The life can be extended. Further, when the cache device has a function such as data conversion, the function of the cache device can be applied to the write data while suppressing the number of times of data writing to the short-lived storage unit.
図1は、実施例1に係るストレージシステムの一例の構成図である。FIG. 1 is a configuration diagram of an example of a storage system according to the first embodiment. 図2は、実施例1に係るキャッシュ管理テーブルの一例を示す図である。FIG. 2 is a diagram illustrating an example of a cache management table according to the first embodiment. 図3は、実施例1に係るキャッシュSSDの一例の構成図である。FIG. 3 is a configuration diagram of an example of the cache SSD according to the first embodiment. 図4は、実施例1に係る内部キャッシュ管理テーブルの一例を示す図である。FIG. 4 is a diagram illustrating an example of an internal cache management table according to the first embodiment. 図5は、実施例1に係る論理物理アドレス変換テーブルの一例を示す図である。FIG. 5 is a diagram illustrating an example of a logical-physical address conversion table according to the first embodiment. 図6は、実施例1に係るストレージコントローラとキャッシュSSDコントローラとの間のライト要求コマンドとその応答コマンドの一例を示す図である。FIG. 6 is a diagram illustrating an example of a write request command and a response command between the storage controller and the cache SSD controller according to the first embodiment. 図7は、実施例1に係るストレージコントローラとキャッシュSSDコントローラとの間のリードおよびデータ無効化要求コマンドとその応答コマンドの一例を示す図である。FIG. 7 is a diagram illustrating an example of a read / data invalidation request command and a response command between the storage controller and the cache SSD controller according to the first embodiment. 図8は、実施例1に係るストレージコントローラによるライト処理のフローチャートである。FIG. 8 is a flowchart of write processing by the storage controller according to the first embodiment. 図9は、実施例1に係るストレージコントローラによるキャッシュSSDへのキャッシュ格納処理のフローチャートである。FIG. 9 is a flowchart of the cache storage process to the cache SSD by the storage controller according to the first embodiment. 図10は、実施例1に係るストレージコントローラによるキャッシュSSDから最終記憶媒体へのディステージ処理を説明する図である。FIG. 10 is a diagram illustrating the destage processing from the cache SSD to the final storage medium by the storage controller according to the first embodiment. 図11は、実施例1に係るキャッシュSSDでのリード要求を受領した時の処理のフローチャートである。FIG. 11 is a flowchart of processing when a read request is received in the cache SSD according to the first embodiment. 図12は、実施例1に係るキャッシュSSDでのデータ無効化要求を受領した時の処理のフローチャートである。FIG. 12 is a flowchart of processing when a data invalidation request is received in the cache SSD according to the first embodiment. 図13は、実施例1に係るキャッシュSSDでのライト要求を受領した時の処理のフローチャートである。FIG. 13 is a flowchart of processing when a write request is received in the cache SSD according to the first embodiment. 図14は、実施例1に係るキャッシュSSDでの内部ディステージ処理のフローチャートである。FIG. 14 is a flowchart of internal destage processing in the cache SSD according to the first embodiment. 図15は、実施例1に係るストレージコントローラによるリード処理のフローチャートである。FIG. 15 is a flowchart of read processing by the storage controller according to the first embodiment. 図16は、実施例2に係るキャッシュSSDでの内部ディステージ処理のフローチャートである。FIG. 16 is a flowchart of internal destage processing in the cache SSD according to the second embodiment. 図17は、実施例2に係るストレージコントローラによるキャッシュSSDへのライト処理のフローチャートである。FIG. 17 is a flowchart of a write process to the cache SSD by the storage controller according to the second embodiment. 図18は、実施例3に係るストレージコントローラによるライト処理のフローチャートである。FIG. 18 is a flowchart of write processing by the storage controller according to the third embodiment. 図19は、実施例3に係るストレージコントローラによるリード処理のフローチャートである。FIG. 19 is a flowchart of read processing by the storage controller according to the third embodiment. 図20は、実施例4に係るストレージコントローラによる、ライト処理のフローチャートである。FIG. 20 is a flowchart of write processing by the storage controller according to the fourth embodiment. 図21は、実施例5に係るキャッシュSSDで実行されるライト処理のフローチャートである。FIG. 21 is a flowchart of a write process executed by the cache SSD according to the fifth embodiment.
 以下、図面を用いて、本発明の実施形態について述べる。 Hereinafter, embodiments of the present invention will be described with reference to the drawings.
 図1は、本発明の実施例1に係る計算機システムの一例の構成図である。計算機システムは、キャッシュ制御装置の一例としてのストレージ装置10と、ホスト計算機40とを有する。ストレージ装置10とホスト計算機40とは、SAN(Storage Area Network)やLAN(Local Area Network)などのネットワーク20を介して接続される。ホスト計算機40は、例えば、汎用的な計算機であり、ストレージ装置10に格納されたデータを読み出したり、ストレージ装置10にデータを格納させたりして、所定の業務処理を実行する。 FIG. 1 is a configuration diagram of an example of a computer system according to Embodiment 1 of the present invention. The computer system includes a storage device 10 as an example of a cache control device and a host computer 40. The storage apparatus 10 and the host computer 40 are connected via a network 20 such as a SAN (Storage Area Network) or a LAN (Local Area Network). The host computer 40 is, for example, a general-purpose computer, and reads data stored in the storage device 10 or stores data in the storage device 10 to execute predetermined business processing.
 ストレージ装置10は、ストレージコントローラ100と、1以上の最終記憶媒体190とを含む。最終記憶媒体190は、ホスト計算機40からストレージ装置10に対して書き込まれたデータを最終的に格納しておく記憶媒体であり、一例としてHDDが用いられる。ただしHDD以外の記憶媒体、たとえばSSDを用いる構成であってもよい。ストレージコントローラ100は、バス170を介して、最終記憶媒体190と接続される。 The storage device 10 includes a storage controller 100 and one or more final storage media 190. The final storage medium 190 is a storage medium that finally stores data written from the host computer 40 to the storage apparatus 10, and an HDD is used as an example. However, a configuration using a storage medium other than the HDD, such as an SSD, may be used. The storage controller 100 is connected to the final storage medium 190 via the bus 170.
 ストレージコントローラ100は、ホストインタフェースコントローラ(I/F CTL)110、CPU120、例えばDRAMに代表されるメモリ130、ディスクインタフェースコントローラ(I/F CTL)150、2次キャッシュとして用いられるキャッシュSSD200、およびASIC140を備える。ホストI/F CTL110、CPU120、メモリ130、およびディスクI/F CTL150、キャッシュSSD200は、PCIなどの専用内部バス160、メモリバス180を介してASIC140に接続される。ホストI/F CTL110は、ネットワーク20を介しての通信を行うためのデバイスである。CPU120は、ストレージ装置10全体の動作制御を行う。メモリ130は、ストレージコントローラ100のキャッシュ全体を管理するキャッシュ管理テーブル1301とデータをキャッシュするキャッシュ領域1302、データ転送のための一時格納領域として用いられるバッファ領域1303を含む。以降、キャッシュ領域1302のことをキャッシュDRAM1302と呼ぶこともある。ASIC140は、CPU120を介さずにメモリ130上のデータを転送するDMA(Direct Memory Acccess)141を備える。ディスクI/F CTL150は、内部バス170を介して、最終記憶媒体190と通信を行うためのデバイスである。 The storage controller 100 includes a host interface controller (I / F CTL) 110, a CPU 120, for example, a memory 130 represented by DRAM, a disk interface controller (I / F CTL) 150, a cache SSD 200 used as a secondary cache, and an ASIC 140. Prepare. The host I / F CTL 110, CPU 120, memory 130, disk I / F CTL 150, and cache SSD 200 are connected to the ASIC 140 via a dedicated internal bus 160 such as PCI and a memory bus 180. The host I / F CTL 110 is a device for performing communication via the network 20. The CPU 120 controls the operation of the entire storage apparatus 10. The memory 130 includes a cache management table 1301 for managing the entire cache of the storage controller 100, a cache area 1302 for caching data, and a buffer area 1303 used as a temporary storage area for data transfer. Hereinafter, the cache area 1302 may be referred to as a cache DRAM 1302. The ASIC 140 includes a DMA (Direct Memory Access) 141 that transfers data on the memory 130 without using the CPU 120. The disk I / F CTL 150 is a device for communicating with the final storage medium 190 via the internal bus 170.
 ストレージコントローラ100は、ホスト計算機40がリードまたはライトするデータを、メモリ130上のキャッシュ領域1302またはキャッシュSSD200上にキャッシュする。キャッシュ領域1302またはキャッシュSSD200へのデータの格納及び読み出し処理については後述する。 The storage controller 100 caches data read or written by the host computer 40 on the cache area 1302 on the memory 130 or the cache SSD 200. Processing for storing and reading data in the cache area 1302 or the cache SSD 200 will be described later.
 図2は、実施例1に係るストレージコントローラ100のキャッシュを管理するキャッシュ管理テーブルの一例である。 FIG. 2 is an example of a cache management table for managing the cache of the storage controller 100 according to the first embodiment.
 キャッシュ管理テーブル1301は、ホスト計算機40から書き込まれたデータが格納されている、キャッシュ領域1301またはキャッシュSSD200上の位置情報等を管理する情報で、ストレージコントローラ100のメモリ130上に格納されている。そしてキャッシュ管理テーブル1301の内容は、キャッシュへのデータの格納時等に、ストレージコントローラのCPU120によって更新される。 The cache management table 1301 is information for managing location information on the cache area 1301 or the cache SSD 200 in which data written from the host computer 40 is stored, and is stored on the memory 130 of the storage controller 100. The contents of the cache management table 1301 are updated by the CPU 120 of the storage controller when data is stored in the cache.
 ストレージコントローラ100(のCPU120)は、キャッシュDRAM1302及びキャッシュSSD200上の記憶領域を、64KBの固定領域に分割して管理しており、本発明の実施例ではこの64KBの固定領域のことをキャッシュセグメントと呼ぶ(または「セグメント」とも呼ばれる)。CPU120は各セグメントにストレージ装置10内で一意な識別番号(ID)を付して管理しており、この識別番号はキャッシュセグメントIDと呼ばれる(または「セグメントID」とも呼ばれる)。 The storage controller 100 (the CPU 120) manages the storage area on the cache DRAM 1302 and the cache SSD 200 by dividing the storage area into 64 KB fixed areas. In the embodiment of the present invention, this 64 KB fixed area is referred to as a cache segment. Call (or also called “segment”). The CPU 120 manages each segment with a unique identification number (ID) in the storage apparatus 10, and this identification number is called a cache segment ID (or also called a “segment ID”).
 図2の例では、キャッシュセグメントID13011の0x0~0x1FFFFFをキャッシュDRAM1302の各セグメント(計128GBの記憶領域)に付し、キャッシュセグメントID13011の0x200000~0x9FFFFFをキャッシュSSD200の各セグメント(計512GBの記憶領域)に付して管理している。ただしキャッシュ管理単位、キャッシュセグメントIDの割り当て方について、これに限定されない。 In the example of FIG. 2, 0x0 to 0x1FFFFF of the cache segment ID 13011 is attached to each segment (total storage area of 128 GB) of the cache DRAM 1302, and 0x200000 to 0x9FFFFF of the cache segment ID 13011 is allocated to each segment of the cache SSD 200 (total storage area of 512 GB). To manage. However, the allocation method of the cache management unit and the cache segment ID is not limited to this.
 また、ストレージコントローラ100は、キャッシュDRAM1302及びキャッシュSSD200上の記憶領域を、64KBのセグメント単位に管理しているが、セグメントとは、ストレージコントローラ100がキャッシュDRAM1302及び/またはキャッシュSSD200内の記憶領域を確保、解放する時の最小単位であり、ストレージコントローラ100がキャッシュDRAM1302及びキャッシュSSD200に対してデータのアクセス(読み書き)を行う場合の、最小アクセス単位ではない。ストレージコントローラ100はホスト計算機40のストレージ装置10に対する最小アクセス単位であるディスクブロック(512バイト。セクタとも呼ばれる)単位で、キャッシュセグメントへのデータの読み書きを行うことが可能である。ただし、本発明の実施例に係るストレージ装置10において、後述するキャッシュSSD200が有するデータ処理機能により、データ圧縮や暗号化を行う場合、データ圧縮や暗号化を行うデータ単位である4KBが、最小アクセス単位になる。 The storage controller 100 manages the storage areas on the cache DRAM 1302 and the cache SSD 200 in 64 KB segment units, but the storage controller 100 secures the storage areas in the cache DRAM 1302 and / or the cache SSD 200. This is the minimum unit when releasing, and is not the minimum access unit when the storage controller 100 accesses (reads / writes) data to the cache DRAM 1302 and the cache SSD 200. The storage controller 100 can read / write data from / to the cache segment in units of disk blocks (512 bytes, also referred to as sectors), which are the minimum access unit for the storage apparatus 10 of the host computer 40. However, in the storage apparatus 10 according to the embodiment of the present invention, when data compression or encryption is performed by a data processing function of the cache SSD 200 described later, 4 KB which is a data unit for performing data compression or encryption is the minimum access. Become a unit.
 キャッシュ管理テーブル1301には、キャッシュセグメントID13011で特定される各キャッシュセグメントについて、当該キャッシュセグメントに格納されているデータが本来格納されるべき最終記憶媒体190(あるいは複数の最終記憶媒体190から構成される論理ボリューム)上の格納位置(アドレス)であるLBA13012、当該キャッシュセグメント内に、実際にデータが格納されている位置を表すビットマップ13013、キャッシュ状態13014、最終記憶媒体190へのディステージ時に参照する直近アクセス時刻13015(または最終アクセス時刻13015とも呼ばれる)が格納されている。 The cache management table 1301 includes, for each cache segment specified by the cache segment ID 13011, the final storage medium 190 (or a plurality of final storage media 190) in which the data stored in the cache segment should be originally stored. LBA 13012 which is a storage position (address) on the logical volume), a bitmap 13013 representing a position where data is actually stored in the cache segment, a cache state 13014, and a reference when destaged to the final storage medium 190 The latest access time 13015 (or also called the last access time 13015) is stored.
 ビットマップ13013は、キャッシュセグメント上の、実際にデータが格納されている位置を表す128ビットの情報である。本発明の実施例では、キャッシュセグメントサイズは64KBだが、64KBの領域すべてにデータが格納されている(キャッシュされている)場合もあれば、必ずしもそうでない場合もある。ビットマップ13013の各ビットは、キャッシュセグメント内の各ディスクブロック(1ディスクブロックは512バイトとする。そのため、1キャッシュセグメントは128個のディスクブロックからなる)にデータが格納されているか否かを表す。ビットマップ13013の先頭ビット(MSB)は、キャッシュセグメント内の先頭ディスクブロックにデータが格納されているか表しており、以下順に2、3、…番目のビットはそれぞれ、キャッシュセグメント内の2番目、3番目、…のディスクブロックにデータが格納されているか表している。各ビットの内容が1の場合、当該ビットに対応するキャッシュセグメント上ディスクブロックにデータが格納されていることを意味し、0の場合には、当該ビットに対応するキャッシュセグメント上ディスクブロックにデータが格納されていないことを意味する。 Bit map 13013 is 128-bit information representing the position where data is actually stored on the cache segment. In the embodiment of the present invention, the cache segment size is 64 KB, but data may be stored (cached) in all 64 KB areas, or may not necessarily be stored. Each bit of the bitmap 13013 indicates whether data is stored in each disk block in the cache segment (one disk block has 512 bytes. Therefore, one cache segment consists of 128 disk blocks). . The first bit (MSB) of the bitmap 13013 indicates whether data is stored in the first disk block in the cache segment. The second, third,... Bits in the following order are the second, third, and third bits in the cache segment, respectively. This indicates whether data is stored in the disk blocks. When the content of each bit is 1, it means that data is stored in the disk block on the cache segment corresponding to the bit, and when 0, data is stored in the disk block on the cache segment corresponding to the bit. Means not stored.
 キャッシュ状態13014は、キャッシュされているデータが最終記憶媒体190に格納されているものに対して更新されているか否かを表すものである。キャッシュされているデータが最終記憶媒体190に格納されているものに対して更新されている場合にはキャッシュ状態13014には「dirty」が格納され、更新されていない場合(つまり、キャッシュセグメントに格納されているデータと最終記憶媒体190に格納されているデータとが同じ内容である場合)には、キャッシュ状態13014には「clean」が格納される。cleanなデータである場合にはディステージ時に最終記憶媒体190へ追い出す必要はない。一方、dirtyなデータは、最終記憶媒体190へ書き出す(ディステージする)必要がある。なお、1キャッシュセグメント内にcleanなデータとdirtyなデータが混在している場合があるが、1キャッシュセグメント内にcleanなデータとdirtyなデータが混在している場合には、キャッシュ状態13014にはdirtyが格納される。 The cache state 13014 indicates whether or not the cached data has been updated with respect to the data stored in the final storage medium 190. When the cached data is updated with respect to what is stored in the final storage medium 190, “dirty” is stored in the cache state 13014, and when it is not updated (that is, stored in the cache segment). Cache data 13014 is stored in the cache state 13014 (when the stored data and the data stored in the final storage medium 190 have the same content). In the case of clean data, there is no need to drive out to the final storage medium 190 at the time of destage. On the other hand, dirty data needs to be written (destaged) to the final storage medium 190. There may be a case where clean data and dirty data are mixed in one cache segment. However, when clean data and dirty data are mixed in one cache segment, the cache state 13014 includes Dirty is stored.
 直近アクセス時刻13015には、直近アクセス時刻13015に対応するキャッシュセグメントに最後にアクセスがあった時刻の情報が格納される。時刻情報としてたとえば、ある時点(2010年1月1日など)からの経過秒数が格納されるが、これ以外の形式で時刻情報を格納してもよい。直近アクセス時刻13015は、ストレージコントローラ100が最終記憶媒体190へディステージするデータを選択する際に、LRU(Least Recently Used)アルゴリズムを用いて選択する場合に必要となる情報である。ただし、ディステージ時のデータ選択ポリシはLRUに限定されない。最終記憶媒体190へのディステージするデータの選択を別ポリシで行う場合は、キャッシュ管理テーブル1301には直近アクセス時刻13015に代えて、データ選択ポリシに必要な情報を格納するようにする。 In the latest access time 13015, information on the time when the cache segment corresponding to the latest access time 13015 was last accessed is stored. As the time information, for example, the number of seconds elapsed from a certain point in time (such as January 1, 2010) is stored, but the time information may be stored in a format other than this. The latest access time 13015 is information necessary when the storage controller 100 selects data to be destaged to the final storage medium 190 by using the LRU (Least Recently Used) algorithm. However, the data selection policy at the time of destage is not limited to LRU. When the data to be destaged to the final storage medium 190 is selected by another policy, the cache management table 1301 stores information necessary for the data selection policy instead of the most recent access time 13015.
 なお、本発明の実施例1に係るストレージ装置10では、キャッシュDRAM1302を1次キャッシュとし、キャッシュSSD200を2次キャッシュとして用いる。そのため、ホスト計算機40からのライトデータが、キャッシュDRAM1302、キャッシュSSD200の両方に格納されている場合もある。その場合、キャッシュセグメントID13011が0x0~0x1FFFFF(キャッシュDRAM1302内セグメント)のエントリと、キャッシュセグメントID13011が0x200000~0x9FFFFF(キャッシュSSD200内セグメント)のエントリの中に、LBA13012が同一であるエントリが存在する。 In the storage apparatus 10 according to the first embodiment of the present invention, the cache DRAM 1302 is used as a primary cache and the cache SSD 200 is used as a secondary cache. Therefore, the write data from the host computer 40 may be stored in both the cache DRAM 1302 and the cache SSD 200. In this case, an entry having the same LBA 13012 exists among entries having a cache segment ID 13011 of 0x0 to 0x1FFFFF (segment in the cache DRAM 1302) and entries having a cache segment ID 13011 of 0x200000 to 0x9FFFFF (segment in the cache SSD 200).
 図3は、本実施例におけるキャッシュSSD200の構成図の一例である。本実施例におけるキャッシュSSD200は、不揮発記憶媒体であるフラッシュメモリ(以下ではFMと略記することもある)を主たる記憶媒体とする。キャッシュSSD200は、内部に1または複数のSSDコントローラ(SSD CTL)201と複数のFM2011を備える。 FIG. 3 is an example of a configuration diagram of the cache SSD 200 in the present embodiment. The cache SSD 200 in this embodiment is mainly a flash memory (which may be abbreviated as FM hereinafter) which is a non-volatile storage medium. The cache SSD 200 includes one or more SSD controllers (SSD CTL) 201 and a plurality of FM 2011.
 SSDコントローラ201は、その内部にインタフェースコントローラ(I/F CTL)2001、プロセッサ2003、内部メモリ(DRAM)2005、データ処理アシストユニット(Assist)2006、FMコントローラ(FMC)2007、およびデータ転送を相互に行う内部スイッチ(S/W)2004を備えている。インタフェースコントローラ2001、プロセッサ2003、データ処理アシストユニット2006、FMコントローラ2007は内部バスを介して内部スイッチ2004に接続される。また内部メモリ2005は、メモリバス2009を介して内部スイッチ2004に接続されている。 The SSD controller 201 includes an interface controller (I / F CTL) 2001, a processor 2003, an internal memory (DRAM) 2005, a data processing assist unit (Assist) 2006, an FM controller (FMC) 2007, and data transfer with each other. An internal switch (S / W) 2004 is provided. The interface controller 2001, the processor 2003, the data processing assist unit 2006, and the FM controller 2007 are connected to the internal switch 2004 via an internal bus. The internal memory 2005 is connected to the internal switch 2004 via the memory bus 2009.
 インタフェースコントローラ2001は、ストレージコントローラ100が備えるCPU120から、キャッシュSSD200に対する各種コマンドを受け付ける、あるいはデータ転送を行うためのものである。インタフェースコントローラ2001は、ストレージ装置10内のストレージコントローラ100が備えるASIC140と接続される。 The interface controller 2001 is for accepting various commands for the cache SSD 200 or transferring data from the CPU 120 of the storage controller 100. The interface controller 2001 is connected to the ASIC 140 included in the storage controller 100 in the storage apparatus 10.
 CPU2003は、内部スイッチ2004を介してSSDコントローラ201の各部位と接続され、内部メモリ2005に記録されたプログラム及び管理情報(後述する内部キャッシュ管理テーブル20052など)を用いて、SSDコントローラ201全体を制御する。 The CPU 2003 is connected to each part of the SSD controller 201 via the internal switch 2004, and controls the entire SSD controller 201 using programs and management information (such as an internal cache management table 20052 described later) recorded in the internal memory 2005. To do.
 内部メモリ2005には具体的には、ビットコストはFM2011より高いものの、高速でかつFM2011より長寿命である、DRAMなどの揮発性メモリが用いられる。内部メモリ2005上には、SSDコントローラ201でのデータ転送処理途中のデータを一時的に格納するために用いられる内部キャッシュ領域20051、内部キャッシュ領域20051に格納されたデータの情報を管理する内部キャッシュ管理テーブル20052、FM2011の格納情報を管理する論理物理変換テーブル20053、FM2011の物理ブロックに有効な情報が格納されているか否かなどの情報を格納するブロック情報20054が存在する。なお、これらの領域やテーブルについては、1つの内部メモリ2005上に格納してもよいし、複数の内部メモリ2005に分散して格納してもよい。以降、内部キャッシュ領域20051については、単に内部キャッシュ20051と呼ぶこともある。また、本発明の実施例に係るキャッシュSSDでは、内部キャッシュ20051のサイズ(容量)は、複数のFM2011の合計容量よりも小さいものとするが、内部キャッシュ20051のサイズがFM2011の合計容量よりも小さくない場合であっても、本発明は有効である。 Specifically, the internal memory 2005 is a volatile memory such as a DRAM, which has a higher bit cost than FM2011 but has a higher speed and a longer life than FM2011. On the internal memory 2005, an internal cache area 20051 used for temporarily storing data in the middle of data transfer processing in the SSD controller 201, and an internal cache management for managing data information stored in the internal cache area 20051 There are a table 20052, a logical-physical conversion table 20053 for managing information stored in the FM 2011, and block information 20054 for storing information such as whether or not valid information is stored in the physical block of the FM 2011. Note that these areas and tables may be stored in one internal memory 2005 or may be distributed and stored in a plurality of internal memories 2005. Hereinafter, the internal cache area 20051 may be simply referred to as an internal cache 20051. In the cache SSD according to the embodiment of the present invention, the size (capacity) of the internal cache 20051 is smaller than the total capacity of the plurality of FM 2011, but the size of the internal cache 20051 is smaller than the total capacity of the FM 2011. Even if it is not, the present invention is effective.
 FMコントローラ2007は、複数バス(例えば16)2010によってFM2011と接続する。各バス2010には複数(例えば2)のFM2011が接続される。 The FM controller 2007 is connected to the FM 2011 by a plurality of buses (for example, 16) 2010. A plurality (for example, 2) of FM 2011 is connected to each bus 2010.
 また詳細は後述するが、本発明の実施例に係るキャッシュSSD200は、複数のFM2011の有する記憶領域から構成される論理的な記憶空間を、キャッシュSSD200が接続されるストレージコントローラ100に対して提供する。ストレージコントローラ100がキャッシュSSD200にアクセス(リード、ライト等)する際、たとえばキャッシュSSD200にデータの書き込み(ライト)を行う場合、論理的な記憶空間上の一次元の論理アドレスを指定したライトコマンドをキャッシュSSD200に対して発行することで、ライト対象データをキャッシュSSD200が提供する論理的記憶空間上に(仮想的に)書き込むことができる。なお、ライトコマンドとともにキャッシュSSD200に到来したデータは、一旦内部キャッシュ領域20051に格納され、その後、論理的な記憶空間に対応付けられたFM2011上の記憶領域へと移動(内部ディステージ)される。これらの制御は、CPU2003が内部メモリ2005に記録されたプログラム及び管理情報を用いて実行することで実現される。 Although details will be described later, the cache SSD 200 according to the embodiment of the present invention provides a logical storage space composed of storage areas of a plurality of FM 2011 to the storage controller 100 to which the cache SSD 200 is connected. . When the storage controller 100 accesses (reads, writes, etc.) the cache SSD 200, for example, when data is written (written) to the cache SSD 200, a write command specifying a one-dimensional logical address in the logical storage space is cached. By issuing to the SSD 200, the write target data can be written (virtually) on the logical storage space provided by the cache SSD 200. The data that has arrived at the cache SSD 200 together with the write command is temporarily stored in the internal cache area 20051 and then moved (internal destage) to a storage area on the FM 2011 associated with a logical storage space. These controls are realized by the CPU 2003 using the program and management information recorded in the internal memory 2005.
 キャッシュSSD200は、キャッシュSSD200内に格納するデータの圧縮/伸長やParity生成、暗号化/復号化などの、データ変換処理及び逆変換処理を行う機能を備える。データ処理アシストユニット2006は、これらのデータ変換処理/逆変換処理、たとえばデータ圧縮/伸長処理を行う機能を有するハードウェアである。データ処理アシストユニット2006は、CPU2003からの指示に従って、インタフェースコントローラ2001から到来してFM2011に書き込まれるデータに対するデータ変換処理(圧縮、暗号化など)を行い、またはFM2011からインタフェースコントローラ2001へ送出されるデータに対する、データ逆変換処理(圧縮データの伸長、暗号化データの復号化など)を行う。なお、これらのデータ変換/逆変換処理を行う機能をキャッシュSSD200に実装する方法として、データ処理アシストユニット(Assist)2006のようなハードウェアを設ける方法のほか、CPU2003にデータの圧縮/伸長やParity生成、暗号化/復号化などのデータ処理を行うプログラムを実行させることで、データ変換/逆変換を行う方法をとってもよい。 The cache SSD 200 has a function of performing data conversion processing and reverse conversion processing such as compression / decompression, parity generation, encryption / decryption of data stored in the cache SSD 200. The data processing assist unit 2006 is hardware having a function of performing these data conversion processing / inverse conversion processing, for example, data compression / decompression processing. The data processing assist unit 2006 performs data conversion processing (compression, encryption, etc.) on data that arrives from the interface controller 2001 and is written to the FM 2011 in accordance with an instruction from the CPU 2003, or data that is sent from the FM 2011 to the interface controller 2001. Data reverse conversion processing (decompression of compressed data, decryption of encrypted data, etc.) is performed. In addition, as a method of mounting these data conversion / inverse conversion functions in the cache SSD 200, in addition to a method of providing hardware such as a data processing assist unit (Assist) 2006, data compression / decompression and parity in the CPU 2003 are provided. A method of performing data conversion / inverse conversion by executing a program that performs data processing such as generation and encryption / decryption may be used.
 以上説明した、SSDコントローラ201の各部位は、ASICやFPGA(Field Programmable Gate Array)として、一つの半導体素子内で構成してもよいし、複数の個別専用IC(Integrated Circuit)を相互に接続した構成であってもよい。また、キャッシュSSD200に内部メモリ2005用のキャパシタやバッテリを備え、電断時などに揮発する内部メモリ2005に格納されたデータや管理情報をFM2011に退避する構成としてもよい。 Each part of the SSD controller 201 described above may be configured in one semiconductor element as an ASIC or FPGA (Field Programmable Gate Array), or a plurality of individual dedicated ICs (Integrated Circuits) are connected to each other. It may be a configuration. Further, the cache SSD 200 may be provided with a capacitor or battery for the internal memory 2005, and the data and management information stored in the internal memory 2005 that volatilizes when power is interrupted may be saved in the FM 2011.
 なお、本実施例に係るキャッシュSSD200では、図3に示すように、主たる記憶媒体としてFMを使用しているが、キャッシュSSD200に搭載する記憶媒体はFMに限定されるものではなく、Phase Change RAMやResistance RAMなどの不揮発メモリであってもよい。また、FM2011の一部または全部を揮発性のRAM(DRAM等)とする構成であってもよい。 In the cache SSD 200 according to the present embodiment, FM is used as a main storage medium as shown in FIG. 3, but the storage medium installed in the cache SSD 200 is not limited to FM, and Phase Change RAM. Or non-volatile memory such as Resistance RAM. Further, a configuration in which a part or all of the FM 2011 is a volatile RAM (DRAM or the like) may be used.
 続いて図4を用いて、内部キャッシュ管理テーブル20052について説明する。 Next, the internal cache management table 20052 will be described with reference to FIG.
 先に述べたとおり、ストレージコントローラ100はキャッシュSSD200が提供する論理的な記憶空間に対してデータの書き込み(ライト)を行う場合、ライト先として論理的記憶空間上のアドレス(論理アドレス)を指定したライトコマンドをキャッシュSSD200に対して発行する。ライトコマンドとともにキャッシュSSD200に到来したデータは、一旦内部キャッシュ領域20051に格納(キャッシュ)される。キャッシュSSD200のCPU2003は、ライトデータのライト先である論理アドレスと、当該ライトデータが一旦格納される内部キャッシュ20051上の位置とを対応付けて、内部キャッシュ管理テーブル20052に記録して管理する。 As described above, when writing (writing) data to the logical storage space provided by the cache SSD 200, the storage controller 100 designates an address (logical address) on the logical storage space as the write destination. A write command is issued to the cache SSD 200. Data that arrives at the cache SSD 200 together with the write command is temporarily stored (cached) in the internal cache area 20051. The CPU 2003 of the cache SSD 200 associates the logical address, which is the write destination of the write data, with the location on the internal cache 20051 where the write data is temporarily stored, and records and manages it in the internal cache management table 20052.
 ストレージコントローラ100のキャッシュ領域1302と同様、キャッシュSSD200のCPU2003は、内部キャッシュ領域20051を、所定サイズ(たとえば4KBあるいは8KB)の固定領域(内部キャッシュセグメントと呼ぶ)に分割して管理している。これは、内部キャッシュ領域20051の割り当て、解放の単位であるとともに、データ処理アシストユニット2006による、データ処理(圧縮や暗号化)を行う際の単位である。またCPU2003は各内部キャッシュセグメントに、キャッシュSSD200内で一意な識別番号(内部キャッシュセグメントIDと呼ぶ。ただし「セグメントID」と略記されることもある)を付して管理する。 Similar to the cache area 1302 of the storage controller 100, the CPU 2003 of the cache SSD 200 manages the internal cache area 20051 by dividing it into fixed areas (called internal cache segments) of a predetermined size (for example, 4 KB or 8 KB). This is a unit for allocating and releasing the internal cache area 20051, and a unit for performing data processing (compression and encryption) by the data processing assist unit 2006. Further, the CPU 2003 manages each internal cache segment with an identification number (referred to as an internal cache segment ID, but may be abbreviated as “segment ID”) that is unique within the cache SSD 200.
 内部キャッシュ管理テーブル20052には、内部キャッシュセグメントのセグメントID200521で特定される各内部キャッシュセグメントについて、当該内部キャッシュセグメントに格納されているデータの本来の書き込み先(先に述べた論理的な記憶空間上の位置(論理アドレス)であって、ストレージコントローラ100から指定された書き込み先アドレス)である論理アドレス200522、当該内部キャッシュセグメントのデータ処理(圧縮等)後のデータサイズを表すデータサイズ200523、内部キャッシュ状態200524、FMへのディステージ時に参照する直近アクセス時刻200525、FMへの内部ディステージ優先度200526(ディステージ優先度と略記されることもある)が格納されている。 In the internal cache management table 20052, for each internal cache segment specified by the segment ID 20051 of the internal cache segment, the original write destination of the data stored in the internal cache segment (in the logical storage space described above) , A logical address 20052 that is a write destination address designated by the storage controller 100, a data size 200533 representing a data size after data processing (compression, etc.) of the internal cache segment, an internal cache State 200524, the latest access time 200525 to be referred to at the time of destage to FM, and internal destage priority 200526 (sometimes abbreviated as destage priority) to FM are stored.
 データサイズ200523は、キャッシュSSD200にデータが格納される時に、データ処理アシストユニット2006によるデータ処理を行った結果、データサイズが変動する場合に用いられる。たとえばデータ処理として圧縮を行った場合、多くの場合データサイズが小さくなる。データサイズ200523には、データ処理(たとえば圧縮)後のデータサイズの情報が格納される。たとえば図4の例で、内部キャッシュセグメントID200521が0x1の行(20052-0)に格納されている情報を例にとると、内部キャッシュセグメントID200521が0x1である4KBの内部キャッシュ領域20051が確保されているが、当該内部キャッシュ領域にはデータ処理後のデータが格納されており、そのサイズは、データサイズ200523に格納されている内容を参照すると、1KBであることがわかる。 The data size 200533 is used when the data size fluctuates as a result of performing data processing by the data processing assist unit 2006 when data is stored in the cache SSD 200. For example, when compression is performed as data processing, the data size is often reduced. The data size 20053 stores data size information after data processing (for example, compression). For example, in the example of FIG. 4, taking the information stored in the row (20052-0) where the internal cache segment ID 200521 is 0x1 as an example, the 4 KB internal cache area 20051 whose internal cache segment ID 200521 is 0x1 is secured. However, data after data processing is stored in the internal cache area, and it can be seen that the size is 1 KB when referring to the contents stored in the data size 200533.
 なお、キャッシュSSD200がデータ処理アシストユニット2006によるデータ処理として、たとえばデータ圧縮を行って圧縮後のデータを内部キャッシュ領域20051あるいはFM2011に格納する場合であっても、キャッシュSSD200がストレージコントローラ100に提供している論理的な記憶空間に影響はなく、ストレージコントローラ100からは、あたかも圧縮前のデータ(非圧縮データ)を読み書きしているようにみえている。 Note that the cache SSD 200 provides the storage controller 100 even when the cache SSD 200 performs data compression by the data processing assist unit 2006 and stores the compressed data in the internal cache area 20051 or FM 2011, for example. The logical storage space is not affected, and the storage controller 100 seems to read / write data before compression (uncompressed data).
 内部キャッシュ状態200524は、先に説明したキャッシュ管理テーブル1301のキャッシュ状態13014と同様のもので、内部キャッシュ状態200524には「clean」または「dirty」のいずれかの情報が格納される。 The internal cache state 200524 is the same as the cache state 13014 of the cache management table 1301 described above, and the internal cache state 200524 stores either “clean” or “dirty” information.
 直近アクセス時刻200525も、先に説明したキャッシュ管理テーブル1301の直近アクセス時刻13015と同様のもので、直近アクセス時刻200525に対応する内部キャッシュセグメントに最後にアクセスがあった時刻の情報が格納される。キャッシュ領域1302と同様、内部キャッシュ領域20051からFM2011へとデータを移動(ディステージ)する際に、移動対象データの選択ポリシにはLRUアルゴリズムが用いられるが、ポリシは必ずしもLRUアルゴリズムに限定されない。LRUアルゴリズムを用いない場合、直近アクセス時刻200525に代えて、そのディステージポリシに応じた情報を内部キャッシュ管理テーブル20052に格納する。 The latest access time 200525 is the same as the latest access time 13015 of the cache management table 1301 described above, and information on the last access time to the internal cache segment corresponding to the latest access time 200525 is stored. Similar to the cache area 1302, when data is moved (destaged) from the internal cache area 20051 to the FM 2011, an LRU algorithm is used as a selection policy for data to be moved, but the policy is not necessarily limited to the LRU algorithm. When the LRU algorithm is not used, information corresponding to the destage policy is stored in the internal cache management table 20052 instead of the latest access time 200525.
 続いて内部ディステージ優先度200526について説明する。本発明の実施例に係るキャッシュSSD200では、ストレージコントローラ100から送信される、後述するライト要求コマンド3000に含まれるデータ情報3005を用いて、SSDコントローラ201が、そのライトデータがすぐにキャッシュSSD200から追い出されるか(あるいはストレージコントローラ100が当該ライトデータに対して再アクセスする可能性が低い)、それとも保持される(ストレージコントローラ100から再アクセスされる)かを予測し、内部ディステージ優先度200526を決定し、内部キャッシュ管理テーブル20052の更新時に設定する。短寿命なFM2011のライトによる劣化を抑止するため、キャッシュSSD200からすぐ追い出されると予測されるデータについては、内部ディステージ優先度200526を低と設定して、できるだけFMへライトせずに内部キャッシュ20051で留める。予測通りであれば、ストレージコントローラ100による最終記憶媒体190へのディステージの際にはデータがキャッシュSSD200の内部キャッシュ20051上にある。キャッシュSSD200からのリードは内部キャッシュ20051でヒットとなり、続く無効化要求でキャッシュSSD200からデータが無効化されるため、FMへのライトが発生しない。この一連の処理の詳細については後述する。 Next, the internal destage priority 200526 will be described. In the cache SSD 200 according to the embodiment of the present invention, the write data is immediately evicted from the cache SSD 200 by using the data information 3005 included in the write request command 3000 described later transmitted from the storage controller 100. Is determined (or the storage controller 100 is unlikely to re-access the write data) or is held (re-accessed from the storage controller 100), and the internal destage priority 200526 is determined. And set when the internal cache management table 20052 is updated. In order to suppress deterioration due to writing of the short-lived FM 2011, for data predicted to be immediately evicted from the cache SSD 200, the internal destage priority 200526 is set low, and the internal cache 20051 is not written to the FM as much as possible. Fasten with. If predicted, the data is on the internal cache 20051 of the cache SSD 200 when the storage controller 100 destages to the final storage medium 190. A read from the cache SSD 200 becomes a hit in the internal cache 20051, and data is invalidated from the cache SSD 200 by a subsequent invalidation request, so that no write to the FM occurs. Details of this series of processing will be described later.
 FMへのディステージ優先度200526は、内部キャッシュ20051からデータを追い出す際に、直近アクセス時刻200525と合わせて、内部キャッシュ20051からFMへディステージするべきデータの選択に用いられる。ディステージ優先度200526には、高(High)または低(Low)のいずれかの情報が格納される(また、高(High)の情報を格納する代わりに「1」を格納する、あるいは低(Low)の情報を格納する代わりに「0」を格納するようにしてもよい)。なお、以降では、SSDコントローラ201による、内部キャッシュ20051からFMへのデータディステージのことを、内部ディステージと呼ぶ。内部ディステージする必要がある時、ディステージ優先度200526の高いデータの中から、LRUアルゴリズムにより内部ディステージするデータを選択する。ディステージ優先度200526の低いデータについては、ディステージ優先度200526の高いデータがない時にのみ、内部ディステージの対象として選ばれる。 The destage priority to the FM 200526 is used for selecting data to be destaged from the internal cache 20051 to the FM, together with the latest access time 200525, when the data is evicted from the internal cache 20051. In the destage priority 2005526, either high (High) information or low (Low) information is stored (in addition, “1” is stored instead of storing high (High) information, or low ( ("Low") may be stored instead of storing "0"). Hereinafter, the data destage from the internal cache 20051 to the FM by the SSD controller 201 is referred to as an internal destage. When it is necessary to perform internal destage, data to be internally destaged by the LRU algorithm is selected from data having a high destage priority level of 200526. Data with a low destage priority 200526 is selected for internal destage only when there is no data with a high destage priority 200526.
 ただし、内部ディステージポリシは上記のポリシに限定されない。たとえば直近アクセス時刻200525が一定時間以上前であった場合には、ディステージ優先度200526の高いデータに加えてディステージ優先度200526の低いデータも内部ディステージ候補とする、などのポリシを採用しても良い。また、ディステージ優先度200526に、高(High)と低(Low)の2段階の情報を格納する態様のほか、複数段階の情報を格納するようにしてもよい。 However, the internal destage policy is not limited to the above policy. For example, if the most recent access time 200525 is more than a certain time ago, a policy is adopted such that in addition to data with a high destage priority 200526, data with a low destage priority 200526 is also an internal destage candidate. May be. In addition to the aspect of storing high-level and low-level information in the destage priority 200526, a plurality of levels of information may be stored.
 本発明の実施例1に係るストレージ装置10の場合、ストレージコントローラ100のCPU120が各ライトデータについて、シーケンシャルアクセスデータかランダムアクセスデータかを判定し(判定の方法には、ホスト計算機40から連続領域に対するアクセス要求が到来しているか否かを判定する等の、公知の手法を用いることができる)、キャッシュSSD200へライト要求する際に、ライトコマンド中に(具体的には後述するデータ情報3005に)、「ランダムアクセスデータ」または「シーケンシャルアクセスデータ」のいずれかの情報を格納してSSDコントローラ201へ送信する。シーケンシャルアクセスの場合、ライトデータに対する再アクセスが行われる可能性が低い(つまりキャッシュヒットする可能性が低い)。そのため、キャッシュDRAM1302およびキャッシュSSD200に格納されたシーケンシャルアクセスデータは、ヒットすることなく最終記憶媒体190にディステージされる。そのため、SSDコントローラ201は、シーケンシャルアクセスデータであると通知されたデータはキャッシュヒットする可能性が低いと予測し、そのデータの内部キャッシュ20051への格納時に、内部ディステージ優先度200526を「低」と設定する。一方、ランダムアクセスデータの場合には内部ディステージ優先度200526を「高」と設定し、シーケンシャルアクセスのデータに比べて、内部ディステージされやすくする(FMへライトされやすくする)。これにより、相対的にシーケンシャルアクセスデータを、できるだけ内部キャッシュ20051に留めて、内部ディステージされにくくしている。 In the case of the storage apparatus 10 according to the first embodiment of the present invention, the CPU 120 of the storage controller 100 determines whether each write data is sequential access data or random access data. A known method such as determining whether or not an access request has arrived can be used), and during a write request to the cache SSD 200 (specifically, in the data information 3005 described later). , Information of either “random access data” or “sequential access data” is stored and transmitted to the SSD controller 201. In the case of sequential access, there is a low possibility that re-access to write data will be performed (that is, the possibility of a cache hit is low). Therefore, the sequential access data stored in the cache DRAM 1302 and the cache SSD 200 is destaged to the final storage medium 190 without hitting. Therefore, the SSD controller 201 predicts that the data notified as sequential access data has a low possibility of a cache hit, and sets the internal destage priority 200526 to “low” when the data is stored in the internal cache 20051. And set. On the other hand, in the case of random access data, the internal destage priority 200526 is set to “high” to make internal destage easier (easier to be written to FM) than sequential access data. As a result, the sequential access data is relatively kept in the internal cache 20051 as much as possible to make it difficult to be internally destaged.
 続いて図5を用いて、キャッシュSSD200の論理物理アドレス変換/更新(論物変換/論物更新)について説明する。前述したとおり、FM2011は同物理アドレスに対して上書きができない。そのため、キャッシュSSD200はライトコマンドを受け付けると、ライトコマンドで指定されている論理アドレスに対して新たな(未書き込みの)FM2011の物理アドレスを割り当て、当該割り当てられた物理アドレスに対してライトを行う。そのために、ストレージコントローラ100から指定される論理アドレス200531と、当該論理アドレス200531に対して割り当てられたFM2011上物理アドレス200532のマッピングを、内部メモリ2005上の論理物理アドレス変換テーブル20053に格納して、マッピングの管理を行う。SSDコントローラ201がリード/ライトを受けた際に、CPU2003が論理物理アドレス変換テーブル20053の参照、更新を行う。 Next, the logical / physical address translation / update (logical / physical conversion / logical / physical update) of the cache SSD 200 will be described with reference to FIG. As described above, the FM 2011 cannot overwrite the same physical address. For this reason, when the cache SSD 200 receives a write command, the cache SSD 200 assigns a new (unwritten) physical address of the FM 2011 to the logical address specified by the write command, and writes to the assigned physical address. For this purpose, the mapping between the logical address 20000531 designated by the storage controller 100 and the physical address on the FM 2011 assigned to the logical address 2005312 is stored in the logical / physical address conversion table 20053 on the internal memory 2005, and Manage the mapping. When the SSD controller 201 receives a read / write, the CPU 2003 refers to and updates the logical / physical address conversion table 20053.
 SSDコントローラ201がリード要求を受けた場合、CPU2003は、論理物理アドレス変換テーブル20053を参照して、リード要求のあった論理アドレス200531に対応する物理アドレス200532を取得する。この処理を論物変換と呼ぶ。その後、CPU2003は、その物理アドレス200532を用いて、該当するFM2011に対してリード要求を行い、FM2011からデータをリードして、インタフェースコントローラ2001を介してストレージコントローラ100へリードデータを転送する。 When the SSD controller 201 receives a read request, the CPU 2003 refers to the logical / physical address conversion table 20053 and acquires the physical address 20000532 corresponding to the logical address 20000531 for which the read request has been made. This process is called logical-physical conversion. Thereafter, the CPU 2003 makes a read request to the corresponding FM 2011 using the physical address 20052, reads data from the FM 2011, and transfers the read data to the storage controller 100 via the interface controller 2001.
 SSDコントローラ201がライト要求を受けた場合、CPU2003はライトデータを格納するための、FM2011上の未書き込み領域を確保し、確保された領域のあるFM2011にデータをライトする。その後、CPU2003は、論理物理アドレス変換テーブル20053を参照して、ライト要求のあった論理アドレス200531に対応する物理アドレス200532を、新たにデータを格納した領域の物理アドレスへと更新する。この処理を論物更新と呼ぶ。 When the SSD controller 201 receives a write request, the CPU 2003 secures an unwritten area on the FM 2011 for storing write data, and writes the data to the FM 2011 having the secured area. Thereafter, the CPU 2003 refers to the logical / physical address conversion table 20053 and updates the physical address 20000532 corresponding to the logical address 20000531 for which the write request has been made, to the physical address of the area in which data is newly stored. This process is called logical update.
 なお、図4の説明の際に述べたとおり、キャッシュSSD200では、データ処理アシストユニット2006によるデータ処理(圧縮や暗号化)を行う際に、4KB単位でデータ処理を行うため、図5の論理物理アドレス変換テーブル20053における論理アドレスの管理も4KB単位で行う。 As described in the description of FIG. 4, the cache SSD 200 performs data processing in units of 4 KB when performing data processing (compression or encryption) by the data processing assist unit 2006. The management of logical addresses in the address conversion table 20053 is also performed in units of 4 KB.
 次に、図6を用いてストレージコントローラ100のCPU120からキャッシュSSD200へ発行されるライトコマンド(ライト要求コマンド)について説明する。 Next, a write command (write request command) issued from the CPU 120 of the storage controller 100 to the cache SSD 200 will be described with reference to FIG.
 ライト要求コマンド3000には、コマンドを識別するコマンド番号(コマンドNo)3001、ライトであることを示す依頼内容3002、ライト先の論理空間上先頭アドレス3003、ライトデータのデータサイズ3004、SSDコントローラ201がFMへのディステージ優先度を設定するためのヒントとなるデータ情報3005が含まれる。依頼内容3002には、コマンドの種類を表す情報(ライトであることを示す情報)や、ライト対象データが現在格納されている領域のアドレス(たとえばキャッシュ領域1302のアドレス)のほか、データ処理アシストユニット2006によって、データ圧縮や暗号化などを行うか否かを指定する情報が含まれる。データ情報3005には先に述べたとおり、「ランダムアクセスデータ」または「シーケンシャルアクセスデータ」のいずれかの情報が格納される。 The write request command 3000 includes a command number (command No.) 3001 for identifying a command, a request content 3002 indicating that it is a write, a start address 3003 in the write destination logical space, a data size 3004 of the write data, and an SSD controller 201. Data information 3005 serving as a hint for setting the destage priority to the FM is included. The request content 3002 includes information indicating the type of command (information indicating that it is a write), the address of the area where the write target data is currently stored (for example, the address of the cache area 1302), and the data processing assist unit. Information specifying whether or not to perform data compression or encryption is included in 2006. As described above, the data information 3005 stores either “random access data” or “sequential access data”.
 キャッシュSSD200によるライト処理が終了(正常終了または失敗)した後、SSDコントローラ201はライト要求コマンド3000に対する応答コマンド4000をストレージコントローラ100のCPU120へ送信する。応答コマンド4000は、コマンドを識別するコマンド番号4001、完了または失敗などの情報を示す結果情報4002から成る。コマンド番号4001には、ライト要求コマンド3000に含まれているコマンド番号3001と同内容の情報が格納される。これにより、ストレージコントローラ100のCPU120は、自身が発行したライト要求コマンド3000によるライト要求が正常に終了したのか失敗したのかを判別できる。 After the write processing by the cache SSD 200 is completed (normal end or failure), the SSD controller 201 transmits a response command 4000 to the write request command 3000 to the CPU 120 of the storage controller 100. The response command 4000 includes a command number 4001 for identifying the command and result information 4002 indicating information such as completion or failure. The command number 4001 stores the same information as the command number 3001 included in the write request command 3000. As a result, the CPU 120 of the storage controller 100 can determine whether the write request by the write request command 3000 issued by the storage controller 100 has ended normally or has failed.
 続けて、図7を用いてストレージコントローラ100のCPU120からキャッシュSSD200へのリードまたはデータ無効化要求するためのコマンドについて説明する。ストレージコントローラ100のCPU120は、SSDコントローラ201にリードまたはデータ無効化要求コマンド5000を送信する。リードまたはデータ無効化要求コマンド5000は、コマンドを識別するコマンド番号5001、リードまたはデータ無効化であることを示す依頼内容5002、リードまたは無効化先の先頭アドレス5003、リードまたは無効化要求サイズ5004から成る。依頼内容5002には、コマンドの種類を表す情報(リード要求であること、あるいは無効化要求であることを示す情報)のほか、データ処理アシストユニット2006によって、リードデータを伸長あるいは復号化してストレージコントローラ100に返送するか否かを指定する情報が含まれる。 Next, a command for reading from the CPU 120 of the storage controller 100 to the cache SSD 200 or requesting data invalidation will be described with reference to FIG. The CPU 120 of the storage controller 100 transmits a read or data invalidation request command 5000 to the SSD controller 201. The read or data invalidation request command 5000 includes a command number 5001 for identifying the command, a request content 5002 indicating read or data invalidation, a read or invalidation start address 5003, and a read or invalidation request size 5004. Become. The request content 5002 includes information indicating the type of command (information indicating that it is a read request or invalidation request), and the data processing assist unit 2006 decompresses or decrypts the read data to store the controller. Information specifying whether or not to return to 100 is included.
 キャッシュSSD200が要求に対する処理を完了または失敗した後、応答コマンド6000がSSDコントローラ201からストレージコントローラ100のCPU120へ送信される。応答コマンド6000は、ライト要求コマンド3000に対する応答コマンド4000と同様、コマンドを識別するコマンド番号6001、完了または失敗などの情報を示す結果情報6002から成る。 After the cache SSD 200 completes or fails the processing for the request, a response command 6000 is transmitted from the SSD controller 201 to the CPU 120 of the storage controller 100. Similar to the response command 4000 to the write request command 3000, the response command 6000 includes a command number 6001 for identifying the command and result information 6002 indicating information such as completion or failure.
 続いて図8を用いて、ホスト計算機40からのライト要求を受け取ったときにストレージ装置10で行われる処理の流れを説明する。ここでは、ストレージコントローラ100のCPU120によるキャッシュ先選択について、キャッシュDRAM1302を1次キャッシュとし、キャッシュSSD200を2次キャッシュとする例について説明する。また、以降では断りのない限り、ホスト計算機40からのリード、ライト要求で指定される領域が、ホスト計算機40がアクセスする最終記憶媒体190(あるいは1以上の最終記憶媒体190から構成されるボリューム)の記憶空間上の4KB境界に一致している場合の例(これはデータ処理アシストユニット2006によるデータ処理の最小単位が4KBのため)について説明する。また、図8の処理は特に断りのない限り、ストレージコントローラ100のCPU120が実行する処理である。 Subsequently, the flow of processing performed in the storage apparatus 10 when a write request from the host computer 40 is received will be described with reference to FIG. Here, an example in which the cache DRAM 1302 is a primary cache and the cache SSD 200 is a secondary cache for the cache destination selection by the CPU 120 of the storage controller 100 will be described. In the following, unless otherwise noted, the area specified by the read / write request from the host computer 40 is the final storage medium 190 (or a volume composed of one or more final storage media 190) accessed by the host computer 40. An example in the case where the boundary coincides with the 4 KB boundary in the storage space (this is because the minimum unit of data processing by the data processing assist unit 2006 is 4 KB) will be described. Further, the processing of FIG. 8 is processing executed by the CPU 120 of the storage controller 100 unless otherwise specified.
 なお、ストレージコントローラ100のCPU120がキャッシュSSD200に発行するライト要求コマンド3000、リード要求コマンド5000と区別するため、以下ではホスト計算機40から受信するライト要求のことを、ホストライト要求と呼ぶこともあり、またホスト計算機40から受信するリード要求のことを、ホストリード要求と呼ぶこともある。 In order to distinguish from the write request command 3000 and the read request command 5000 issued by the CPU 120 of the storage controller 100 to the cache SSD 200, the write request received from the host computer 40 may be referred to as a host write request below. A read request received from the host computer 40 may be referred to as a host read request.
 ストレージコントローラ100のCPU120は、ホスト計算機40からホストライト要求を受けると(S10)、キャッシュ管理テーブル1301を用いてキャッシュDRAM1302のヒット判定を行う(S20)。キャッシュDRAM1302にヒットした、つまりキャッシュDRAM1302上にホストライト要求で指定されたデータを格納するためのキャッシュセグメントが確保済みの場合(S20:ヒット)、キャッシュDRAM1302上の該当セグメントに対してライトデータの上書きを行う(S60)。キャッシュDRAM1302でミスした場合(S20:ミス)、キャッシュDRAM1302に空き(未使用)のセグメントがあるかを確認する(S30)。空きがない場合(S30:No)、空きセグメントを確保するため、ホストライト要求で指定されたデータを格納するために必要となるサイズ以上のデータを、キャッシュDRAM1302から2次キャッシュであるキャッシュSSD200へとディステージする(S40)。このディステージ処理については後述する。 When the CPU 120 of the storage controller 100 receives a host write request from the host computer 40 (S10), it performs a hit determination of the cache DRAM 1302 using the cache management table 1301 (S20). When the cache DRAM 1302 is hit, that is, when a cache segment for storing the data specified by the host write request has been secured on the cache DRAM 1302 (S20: hit), the write data is overwritten on the corresponding segment on the cache DRAM 1302 (S60). If there is a miss in the cache DRAM 1302 (S20: miss), it is checked whether there is an empty (unused) segment in the cache DRAM 1302 (S30). If there is no free space (S30: No), in order to secure a free segment, data larger than the size required to store the data specified by the host write request is transferred from the cache DRAM 1302 to the cache SSD 200 as the secondary cache. Is destaged (S40). This destage processing will be described later.
 空きがある場合(S30:Yes)またはデータディステージ後(S40の実行後)、キャッシュDRAM1302に該当する新たなセグメントを確保してキャッシュDRAM1302にライトデータを格納する(S50)。S50において、セグメントを確保すると、キャッシュ管理テーブル1301の内容を更新する。 If there is a space (S30: Yes) or after data destage (after execution of S40), a new segment corresponding to the cache DRAM 1302 is secured and write data is stored in the cache DRAM 1302 (S50). When a segment is secured in S50, the contents of the cache management table 1301 are updated.
 キャッシュDRAM1302にデータ格納後、キャッシュ管理テーブル1301を用いてキャッシュSSD200にヒットしているか(ホストライト要求によってライトされるライト対象データを格納するためのキャッシュセグメントが確保済みか)を確認する(S70)。ヒットしている場合(S70:ヒット)には、ストレージコントローラ100はキャッシュSSD200に対して該当データの無効化を要求する(S80)。なぜなら、ヒットしている場合とは、キャッシュSSD200に、ホストライト要求によってライトされるライト対象データの更新前データが格納されていることを意味するが、更新前データは不要なデータであるため無効化処理を行う。キャッシュSSD200でのデータ無効化処理については後述する。 After the data is stored in the cache DRAM 1302, it is checked whether the cache SSD 200 is hit using the cache management table 1301 (whether the cache segment for storing the write target data written by the host write request has been secured) (S70). . If there is a hit (S70: hit), the storage controller 100 requests the cache SSD 200 to invalidate the corresponding data (S80). The case of hit means that the cache SSD 200 stores pre-update data of the write target data written by the host write request, but the pre-update data is unnecessary and invalid. Process. Data invalidation processing in the cache SSD 200 will be described later.
 無効化要求が完了、またはミス(S70:ミス)で無効化の必要がない場合、ストレージコントローラ100はホスト計算機40へライト完了を通知する(S90)。また、キャッシュ管理テーブル1301を用いたキャッシュSSD200のヒット判定(S70)については、S20におけるキャッシュDRAM1302のヒット判定の際にキャッシュSSD200のヒット判定を行うようにしてもよい。 If the invalidation request is completed or there is no need for invalidation due to a mistake (S70: miss), the storage controller 100 notifies the host computer 40 of the write completion (S90). As for the hit determination of the cache SSD 200 using the cache management table 1301 (S70), the hit determination of the cache SSD 200 may be performed when the hit of the cache DRAM 1302 is determined in S20.
 図9を用いて、キャッシュDRAM1302の空きを確保するために行われる、キャッシュSSD200へのディステージ(S40)処理について説明する。この処理も、ストレージコントローラ100のCPU120によって実行される。 Referring to FIG. 9, the destage (S40) process to the cache SSD 200, which is performed in order to secure the free space in the cache DRAM 1302, will be described. This process is also executed by the CPU 120 of the storage controller 100.
 まずストレージコントローラ100のCPU120は、キャッシュDRAM1302からキャッシュSSD200へディステージすべきデータを選択する(S41)。この選択はすでに述べたように、キャッシュ管理テーブル1301を用いて、直近アクセス時刻(最終アクセス時刻)が最も古いデータから順に選択する。また、このディステージ処理は、ホストライト要求で指定されたデータを格納するために必要な領域を確保するための処理であるため、S41では、ディステージすべきデータを複数個(少なくともホストライト要求で指定されたデータと同量またはそれより大きい量)選択することもある。 First, the CPU 120 of the storage controller 100 selects data to be destaged from the cache DRAM 1302 to the cache SSD 200 (S41). As described above, the selection is performed in order from the data having the oldest access time (last access time) using the cache management table 1301. Further, since this destage process is a process for securing an area necessary for storing the data designated by the host write request, in S41, a plurality of data to be destaged (at least the host write request) May be the same or larger than the data specified in.
 続いてキャッシュSSD200へディステージされるデータについて、キャッシュ管理テーブル1301を用いて、キャッシュSSD200のヒット判定、つまりディステージ対象のデータを格納するためのセグメントがキャッシュSSD200に確保済みか確認する処理を行う(S42)。ミスである場合(S42:ミス)、キャッシュSSD200に空きセグメントがあるかを確認する(S43)。空きがない場合(S43:No)、キャッシュSSD200内のデータを最終記憶媒体190へとディステージする(S44)。このキャッシュSSD200から最終記憶媒体190へのディステージ処理については後述する。このディステージ処理後、またはキャッシュSSD200に空きがあった場合(S43:Yes)、キャッシュSSD200に該当するキャッシュセグメントを新たに確保し(S45)、キャッシュSSD200に対してライト要求コマンド3000を送信することで、キャッシュDRAM1302からキャッシュSSD200にディステージするデータのライトを行う(S46)。このライト要求コマンドを送信する際、データ情報3005に、「ランダムアクセスデータ」または「シーケンシャルアクセスデータ」のいずれかの情報を格納して送信する。S47で、ライト要求の完了結果である応答コマンド4000をキャッシュSSD200から受領し、キャッシュDRAM1302からのディステージ処理を完了する。 Subsequently, with respect to data destaged to the cache SSD 200, the cache management table 1301 is used to perform a hit determination of the cache SSD 200, that is, a process of confirming whether or not a segment for storing data to be destaged has been secured in the cache SSD 200. (S42). If it is a miss (S42: miss), it is confirmed whether there is an empty segment in the cache SSD 200 (S43). If there is no space (S43: No), the data in the cache SSD 200 is destaged to the final storage medium 190 (S44). The destage processing from the cache SSD 200 to the final storage medium 190 will be described later. After this destage processing or when there is an empty space in the cache SSD 200 (S43: Yes), a new cache segment corresponding to the cache SSD 200 is secured (S45), and a write request command 3000 is transmitted to the cache SSD 200. Thus, the destaged data is written from the cache DRAM 1302 to the cache SSD 200 (S46). When transmitting this write request command, the data information 3005 stores either “random access data” or “sequential access data” for transmission. In S47, a response command 4000, which is a write request completion result, is received from the cache SSD 200, and the destage processing from the cache DRAM 1302 is completed.
 図10を用いて、キャッシュSSD200の空きを確保するために行われる、最終記憶媒体190へのディステージ処理(S44)の流れについて説明する。 Referring to FIG. 10, the flow of destage processing (S44) to the final storage medium 190, which is performed to secure the free space of the cache SSD 200, will be described.
 ストレージコントローラ100のCPU120は、キャッシュ管理テーブル1301を用いて、すでに述べたようにキャッシュSSD200からディステージするデータをLRUなどで選択する(S441)。続いてCPU120は、選択されたデータについて、キャッシュSSD200からデータをリードし(S442、S443、S444)、リードしたデータを最終記憶媒体190へライトする(S445、S446、S447)。その後、データは最終記憶媒体190に格納されたため、CPU120はキャッシュSSD200上のデータを無効化し(S448、S449、S4410)、最後に無効化したキャッシュSSD200上のセグメントについての情報をキャッシュ管理テーブル1301から削除することにより、セグメントの解放処理を行う(S4411)。キャッシュSSD200からのリード(S443)およびキャッシュSSD200上データの無効化要求(S449)については、図7に記載のコマンドを用いるが、この処理の詳細については後述する。 The CPU 120 of the storage controller 100 uses the cache management table 1301 to select data to be destaged from the cache SSD 200 using LRU as described above (S441). Subsequently, the CPU 120 reads the selected data from the cache SSD 200 (S442, S443, S444), and writes the read data to the final storage medium 190 (S445, S446, S447). Thereafter, since the data is stored in the final storage medium 190, the CPU 120 invalidates the data on the cache SSD 200 (S448, S449, S4410), and stores information about the last invalidated segment on the cache SSD 200 from the cache management table 1301. By deleting, a segment release process is performed (S4411). For the read from the cache SSD 200 (S443) and the data invalidation request (S449) on the cache SSD 200, the commands shown in FIG. 7 are used. Details of this processing will be described later.
 図11を用いて、キャッシュSSD200で実行されるリード処理(S443)を説明する。 The read process (S443) executed by the cache SSD 200 will be described with reference to FIG.
 SSDコントローラ201のCPU2003は、リード要求コマンド5000を受領すると(S4431)、内部キャッシュ管理テーブル20052を用いて、内部キャッシュ20051のヒット判定を行う(S4432)。内部キャッシュ20051にヒットした場合(S4432:ヒット)、CPU2003は内部キャッシュ20051からデータをリードする(S4435)。内部キャッシュ20051でミスした場合(S4432:ミス)、CPU2003は前述の論物変換を行って(S4433)、FM2011からデータをリードする(S4434)。その後CPU2003は必要に応じてリードしたデータにキャッシュSSD200のデータ処理機能を適用し(S4436)、ストレージコントローラ100へデータを転送し(S4437)、CPU120へ完了通知する(S4438)。S4436の処理では、CPU2003はデータ処理アシストユニット2006を用いてデータ処理を行う。 When the CPU 2003 of the SSD controller 201 receives the read request command 5000 (S4431), it uses the internal cache management table 20052 to make a hit determination of the internal cache 20051 (S4432). When the internal cache 20051 is hit (S4432: hit), the CPU 2003 reads data from the internal cache 20051 (S4435). If there is a miss in the internal cache 20051 (S4432: miss), the CPU 2003 performs the above-described logical-physical conversion (S4433) and reads data from the FM 2011 (S4434). Thereafter, the CPU 2003 applies the data processing function of the cache SSD 200 to the read data as necessary (S4436), transfers the data to the storage controller 100 (S4437), and notifies the CPU 120 of completion (S4438). In the processing of S4436, the CPU 2003 performs data processing using the data processing assist unit 2006.
 図11の例では、キャッシュSSD200の内部キャッシュ20051にリードデータをキャッシュしない。しかし、内部キャッシュ20051にリード時のデータをキャッシュしてもよい。その場合、FMからデータをリードする前に、内部キャッシュ20051の空きを確認し、空きがなければ内部ディステージを行って空きを確保する。その後、空きセグメントを新たに確保し、FMからリードするデータをストレージコントローラ100へ転送するとともに、内部キャッシュ20051に格納する。また、本発明の実施例1に係るストレージ装置10では、ストレージコントローラ100が最終記憶媒体190にディステージするために、キャッシュSSD200からデータを読み出す際には、データ変換/逆変換処理は行わせない。たとえば、キャッシュSSD200に圧縮データが格納されている場合、圧縮されたままのデータを読み出して最終記憶媒体190にディステージするので、ストレージコントローラ100が最終記憶媒体190にディステージするために、キャッシュSSD200に対してリード要求コマンド5000を発行する場合、リード要求コマンドの依頼内容5002には、リードデータの変換/逆変換は行わない旨が指定されている(そのため、上で説明したS4436の処理は行われない)。逆に、ストレージコントローラ100がホスト計算機40へ返送するためのリードデータをキャッシュSSD200から読み出す場合(かつ、キャッシュSSD200に、データ処理アシストユニット2006によって変換処理が施されたデータが格納されている場合)には、データ逆変換(伸長や復号化等)を行ったデータを読み出す必要がある。そのため、ストレージコントローラ100のCPU120がキャッシュSSD200に対して発行するリード要求コマンド5000の依頼内容5002には、リードデータの逆変換を行う旨が指定されている(そのため、上で説明したS4436の処理が行われる)。 In the example of FIG. 11, the read data is not cached in the internal cache 20051 of the cache SSD 200. However, the data at the time of reading may be cached in the internal cache 20051. In that case, before reading data from the FM, the free space in the internal cache 20051 is confirmed. If there is no free space, internal destage is performed to secure the free space. Thereafter, a new empty segment is secured, and data read from the FM is transferred to the storage controller 100 and stored in the internal cache 20051. Further, in the storage apparatus 10 according to the first embodiment of the present invention, since the storage controller 100 destages to the final storage medium 190, data conversion / inverse conversion processing is not performed when data is read from the cache SSD 200. . For example, when compressed data is stored in the cache SSD 200, the compressed data is read and destaged to the final storage medium 190, so that the storage controller 100 destages to the final storage medium 190. When the read request command 5000 is issued, the request content 5002 of the read request command specifies that conversion / reverse conversion of the read data is not performed (therefore, the process of S4436 described above is performed). Not) Conversely, when the storage controller 100 reads the read data for returning to the host computer 40 from the cache SSD 200 (and the cache SSD 200 stores data that has been converted by the data processing assist unit 2006). In this case, it is necessary to read data that has been subjected to data inverse transformation (decompression, decoding, etc.). For this reason, the request content 5002 of the read request command 5000 issued to the cache SSD 200 by the CPU 120 of the storage controller 100 specifies that reverse conversion of the read data is performed (therefore, the processing of S4436 described above is performed). Done).
 続いて、図12を用いて、キャッシュSSD200がデータ無効化要求を受信した時に行われる処理(S449)の流れを説明する。 Subsequently, a flow of processing (S449) performed when the cache SSD 200 receives a data invalidation request will be described with reference to FIG.
 SSDコントローラ201のCPU2003は、データ無効化要求コマンド5000を受領すると(S4491)、内部キャッシュ管理テーブル20052を用いて、内部キャッシュ20051のヒット判定を行う(S4492)。内部キャッシュにヒットした場合(S4492:ヒット)、CPU2003は内部キャッシュ20051の該当セグメントを解放する(S4493)。セグメント解放後または内部キャッシュ20051でミスした場合(S4492:ミス)、CPU2003は前述の論物変換を行って(S4494)、論理物理アドレス変換テーブル20053の該当テーブルエントリを確認する(S4495)。これは、内部キャッシュ20051およびFM2011の両方にデータが格納されていることがあり、その両方を無効化する必要があるため内部キャッシュヒット時にも論物変換を行う。FM2011にデータが格納されている場合は、該当テーブルエントリは有効であるため(S4495:有効)、CPU2003は該当物理アドレスのデータが無効である旨をブロック情報20054に記録し(S4496)、さらに論理物理アドレス変換テーブル20053から、論理物理アドレス変換テーブル20053に記録されている該当物理アドレスの情報を削除する(S4497)。その後CPU2003は、ストレージコントローラ100のCPU120へ完了通知を行い(S4498)、処理を終了する。 When the CPU 2003 of the SSD controller 201 receives the data invalidation request command 5000 (S4491), it performs a hit determination of the internal cache 20051 using the internal cache management table 20052 (S4492). When the internal cache is hit (S4492: hit), the CPU 2003 releases the corresponding segment in the internal cache 20051 (S4493). When the segment is released or when a miss is made in the internal cache 20051 (S4492: miss), the CPU 2003 performs the above-described logical-physical conversion (S4494), and confirms the corresponding table entry in the logical-physical address conversion table 20053 (S4495). In this case, data may be stored in both the internal cache 20051 and the FM 2011, and it is necessary to invalidate both of them, so that logical-physical conversion is performed even when the internal cache hits. When data is stored in the FM 2011, the corresponding table entry is valid (S4495: Valid), so the CPU 2003 records that the data of the relevant physical address is invalid in the block information 20054 (S4496), and further logically Information on the corresponding physical address recorded in the logical physical address conversion table 20053 is deleted from the physical address conversion table 20053 (S4497). Thereafter, the CPU 2003 sends a completion notification to the CPU 120 of the storage controller 100 (S4498) and ends the process.
 続いて図13を用いて、ストレージコントローラ100からライト要求コマンド(S46)を受信したときに、キャッシュSSD200が実行する処理について説明する。 Next, a process executed by the cache SSD 200 when a write request command (S46) is received from the storage controller 100 will be described with reference to FIG.
 SSDコントローラ201のCPU2003は、ライト要求コマンド3000を受領すると(S461)、コマンド3000の依頼内容3002(たとえば圧縮の指示、暗号化の指示など)に従って、必要に応じてデータ処理アシストユニット2006を用いて、ライトデータにデータ変換処理を施す(S462)。なお、本発明の実施例1に係るストレージ装置10では、ストレージコントローラ100がホスト計算機40から受信したライトデータをキャッシュSSD200に格納する場合には、キャッシュSSD200にデータ変換を行わせる。そのため、ストレージコントローラ100がホスト計算機40から受信したライトデータをキャッシュSSD200に格納するために、ライト要求コマンド3000を発行する場合には、当該ライト要求コマンドの依頼内容3002にはデータの変換を行う旨が指定されている。一方、最終記憶媒体190に格納されていたデータをキャッシュSSD200に格納(ステージング)する場合には、キャッシュSSD200にデータ変換/逆変換処理は行わせない。そのため、この場合にストレージコントローラ100のCPU120がキャッシュSSD200に発行するライト要求コマンドの依頼内容3002には、データの変換/逆変換は行わない旨が指定されている(そのため、上で説明したS462の処理は行われない)。 Upon receiving the write request command 3000 (S461), the CPU 2003 of the SSD controller 201 uses the data processing assist unit 2006 as necessary according to the request content 3002 of the command 3000 (for example, a compression instruction, an encryption instruction, etc.). Data conversion processing is performed on the write data (S462). In the storage apparatus 10 according to the first embodiment of the present invention, when the storage controller 100 stores the write data received from the host computer 40 in the cache SSD 200, the cache SSD 200 performs data conversion. For this reason, when the write request command 3000 is issued in order to store the write data received from the host computer 40 in the cache SSD 200 by the storage controller 100, the request content 3002 of the write request command is converted to data. Is specified. On the other hand, when the data stored in the final storage medium 190 is stored (staged) in the cache SSD 200, the cache SSD 200 is not subjected to data conversion / inverse conversion processing. Therefore, in this case, the request content 3002 of the write request command issued to the cache SSD 200 by the CPU 120 of the storage controller 100 specifies that data conversion / inverse conversion is not performed (therefore, in S462 described above) No processing is performed).
 続いてCPU2003は内部キャッシュ管理テーブル20052を用いて、内部キャッシュ20051のヒット判定を行う(S463)。内部キャッシュにヒットした場合(S463:ヒット)、CPU2003は内部キャッシュの該当セグメントにデータを上書きする(S467)。内部キャッシュ20051でミスした場合(S463:ミス)、CPU2003は内部キャッシュ20051に空きの(未使用の)セグメントがあるか確認する(S464)。空きがない場合(S464:No)、空きセグメントを確保するため、CPU2003は内部キャッシュ20051上のデータをFM2011に内部ディステージする(S465)。内部ディステージ処理については後述する。なお、S464の判定において、未使用のセグメントがなくなった場合に内部ディステージ(S465)処理を実施する態様に限定されるわけではない。たとえば、未使用の領域サイズ(セグメント数)が不足した場合(ストレージコントローラ100からライト要求のあったデータのサイズよりも未使用の領域のサイズが小さい場合、あるいは未使用の領域のサイズが所定の閾値未満になった場合など)に内部ディステージ(S465)処理を行うようにしてもよい。 Subsequently, the CPU 2003 makes a hit determination of the internal cache 20051 using the internal cache management table 20052 (S463). When the internal cache is hit (S463: hit), the CPU 2003 overwrites the data in the corresponding segment of the internal cache (S467). If there is a miss in the internal cache 20051 (S463: miss), the CPU 2003 checks whether there is an empty (unused) segment in the internal cache 20051 (S464). If there is no free space (S464: No), the CPU 2003 internally destages the data on the internal cache 20051 to the FM 2011 in order to secure a free segment (S465). The internal destage process will be described later. Note that the determination in S464 is not limited to the mode in which the internal destage (S465) process is performed when there are no unused segments. For example, when the unused area size (number of segments) is insufficient (when the size of the unused area is smaller than the size of the data requested to be written from the storage controller 100, or the size of the unused area is a predetermined value) The internal destage (S465) process may be performed when the value is less than the threshold value.
 内部ディステージ後、または内部キャッシュ20051に空きがある場合(S464:Yes)、CPU2003は内部キャッシュ20051のセグメントを新たに確保し(S466)、内部キャッシュ20051にデータをライトする(S467)。なお、S467では、CPU2003はS461で受信したライト要求コマンド300のデータ情報3005に含まれている「ランダムアクセスデータ」または「シーケンシャルアクセスデータ」の情報に基づいて、ライトデータの格納されるキャッシュセグメントに対応する、内部キャッシュ管理テーブル20052のディステージ優先度200526の欄に、「高」または「低」を格納する。その後CPU2003は、ストレージコントローラ100のCPU120に応答コマンド4000を送信することでライト完了通知を行う(S468)。 After the internal destage or when the internal cache 20051 has a free space (S464: Yes), the CPU 2003 secures a new segment of the internal cache 20051 (S466) and writes data to the internal cache 20051 (S467). In step S467, the CPU 2003 sets the cache segment in which the write data is stored based on the “random access data” or “sequential access data” information included in the data information 3005 of the write request command 300 received in step S461. Corresponding “high” or “low” is stored in the column of the destage priority 200526 of the internal cache management table 20052. Thereafter, the CPU 2003 sends a response command 4000 to the CPU 120 of the storage controller 100 to give a write completion notification (S468).
 続いて図14を用いて、キャッシュSSD200で行われる内部ディステージ処理(S465)について説明する。 Subsequently, the internal destage processing (S465) performed in the cache SSD 200 will be described with reference to FIG.
 内部キャッシュ20051からデータをFM2011へ内部ディステージする必要がある場合、SSDコントローラ201のCPU2003は、内部ディステージするデータを選択する(S4641)。先に述べた通り、内部ディステージ対象データの選択は、一例として、内部キャッシュ管理テーブル20052の直近アクセス時間200525とディステージ優先度200526を用いて、ディステージ優先度200526が「高」であるデータの中から直近アクセス時間200525の最も古いものを選択することによって行う。そしてディステージ優先度200526が「高」であるデータが存在しない場合には、ディステージ優先度200526が「低」のデータの中から直近アクセス時間200525の最も古いものを選択する。ただし、これ以外のデータ選択方法を採用してもよい。 When it is necessary to internally destage data from the internal cache 20051 to the FM 2011, the CPU 2003 of the SSD controller 201 selects data to be internally destaged (S4641). As described above, the internal destage target data is selected, for example, by using the latest access time 200525 and the destage priority 200526 of the internal cache management table 20052, and the data whose destage priority 200526 is “high”. Is selected by selecting the oldest one having the latest access time of 200525. If there is no data with the destage priority 200526 “high”, the oldest data having the latest access time 200525 is selected from the data with the destage priority 200526 “low”. However, other data selection methods may be employed.
 内部ディステージするデータを選択後、CPU2003は内部ディステージ先となるFM2011の空き(未使用)領域(物理アドレス)を探す(S4642)。内部ディステージ対象データを格納可能な空き領域(物理アドレス)が複数存在する場合、CPU2003はFM2011の寿命等を考慮して適切な物理アドレスを選択する。そしてCPU2003は、選択した書き先物理アドレスに対応するFM2011へのライト要求を行い(S4643)、書き先物理アドレスのデータが有効である旨をブロック情報20054に書き込む(S4644)。さらにCPU2003は、要求された論理アドレスに書き先物理アドレスに対応付けるために論理物理アドレス変換テーブル20053を更新する(S4645)。以上でデータをFM2011に格納したので、CPU2003は内部キャッシュ管理テーブル20052を更新して内部キャッシュ20051の該当セグメントを解放し(S4646)、内部ディステージ処理を終了する。 After selecting data to be internally destaged, the CPU 2003 searches for an empty (unused) area (physical address) of the FM 2011 that is the internal destage destination (S4642). When there are a plurality of free areas (physical addresses) that can store the internal destage target data, the CPU 2003 selects an appropriate physical address in consideration of the life of the FM 2011 or the like. The CPU 2003 issues a write request to the FM 2011 corresponding to the selected write destination physical address (S4643), and writes that the data of the write destination physical address is valid in the block information 20054 (S4644). Further, the CPU 2003 updates the logical physical address conversion table 20053 in order to associate the requested logical address with the write destination physical address (S4645). Since the data has been stored in the FM 2011 as described above, the CPU 2003 updates the internal cache management table 20052 to release the corresponding segment in the internal cache 20051 (S4646), and the internal destage processing ends.
 次に、図15を用いて、ホスト装置40からのリード要求(ホストリード要求)を受信した時に、ストレージ装置10が行う処理について説明する。 Next, processing performed by the storage apparatus 10 when a read request (host read request) from the host apparatus 40 is received will be described with reference to FIG.
 ストレージコントローラ100のCPU120は、ホスト計算機40からホストリード要求を受領すると(S100)、キャッシュ管理テーブル1301を用いて、キャッシュヒット判定を行う(S110、S120)。キャッシュDRAM1302にヒットした場合(S110:ヒット)、CPU120はキャッシュDRAM1302からデータをリードする(S190)。キャッシュDRAM1302にヒットせず(S110:ミス)、キャッシュSSD200にヒットした場合(S120:ヒット)、CPU120はキャッシュSSD200へリード要求コマンドを発行する(S140)。キャッシュSSD200で行われるリード処理は、S443で行われる処理と同様で、データが読み出される過程で、キャッシュSSD200はデータにキャッシュSSD200内部のデータ処理機能を適用し、データに対する処理(データ伸長やデータ復号化)を行う。そして処理が施されたデータがストレージコントローラ100のバッファ領域1303にに転送される。 When the CPU 120 of the storage controller 100 receives a host read request from the host computer 40 (S100), it performs cache hit determination using the cache management table 1301 (S110, S120). When the cache DRAM 1302 is hit (S110: hit), the CPU 120 reads data from the cache DRAM 1302 (S190). When the cache DRAM 1302 is not hit (S110: miss) and the cache SSD 200 is hit (S120: hit), the CPU 120 issues a read request command to the cache SSD 200 (S140). The read process performed in the cache SSD 200 is the same as the process performed in S443. In the process of reading data, the cache SSD 200 applies the data processing function in the cache SSD 200 to the data, and processes the data (data decompression or data decryption). ). Then, the processed data is transferred to the buffer area 1303 of the storage controller 100.
 キャッシュSSD200でもミスした場合(S120:ミス)、CPU120は最終記憶媒体190からデータをリードし、メモリ130、ASIC140、あるいはIF CTL150内の一時記憶領域にデータを格納する(S130)。さらにCPU120は、キャッシュSSD200に空きセグメントが存在するか確認し(S150)、空きがないなら(S150:No)、キャッシュSSD200から最終記憶媒体190へディステージ処理を行う(S160)。なお、このキャッシュSSD200の空き確認とディステージ処理(S150、S160)については、最終記憶媒体190からのリード(S130)の前に行うようにしてもよい。ディステージ処理(S160)は、S44と同様である。ディステージ後、またはキャッシュSSD200に空きがある場合(S150:Yes)、CPU120はキャッシュSSD200に該当するキャッシュセグメントを新たに確保し、最終記憶媒体190からリードしたデータをライトする要求をキャッシュSSD200に発行する(S170)。キャッシュSSD200へのライト処理はS46と同様である。続いてS170でCPU120は、キャッシュSSD200に書き込んだデータをリードする要求を、キャッシュSSD200に発行する(S180)。このリード要求を受け付けたキャッシュSSD200ではS443と同様、データに対する処理(データ伸長やデータ復号化)を行い、処理が施されたデータがストレージコントローラ100のバッファ領域1303にに転送される。最後に、ストレージコントローラ100はいずれかの媒体からリードしたデータをホスト計算機40へ転送し(S200)、処理を終了する。 If there is also a miss in the cache SSD 200 (S120: miss), the CPU 120 reads the data from the final storage medium 190 and stores the data in the temporary storage area in the memory 130, ASIC 140, or IF CTL 150 (S130). Further, the CPU 120 checks whether there is an empty segment in the cache SSD 200 (S150). If there is no empty segment (S150: No), the CPU 120 performs destage processing from the cache SSD 200 to the final storage medium 190 (S160). The empty confirmation of the cache SSD 200 and the destage processing (S150, S160) may be performed before reading from the final storage medium 190 (S130). The destage processing (S160) is the same as S44. After destage or when the cache SSD 200 is empty (S150: Yes), the CPU 120 secures a new cache segment corresponding to the cache SSD 200 and issues a request to the cache SSD 200 to write the data read from the final storage medium 190. (S170). The write process to the cache SSD 200 is the same as S46. Subsequently, in S170, the CPU 120 issues a request to read the data written in the cache SSD 200 to the cache SSD 200 (S180). The cache SSD 200 that has received this read request performs processing (data decompression and data decryption) on the data as in S443, and the processed data is transferred to the buffer area 1303 of the storage controller 100. Finally, the storage controller 100 transfers the data read from any medium to the host computer 40 (S200) and ends the process.
 上で述べたように、いずれのキャッシュでもミスし、最終記憶媒体190からリードした場合(S130)、CPU120は最終記憶媒体190からリードしたデータを一旦キャッシュSSD200にライトし、その後キャッシュSSD200にライトしたデータをリードする。最終記憶媒体190上のデータは、ライト時にキャッシュSSD200のデータ処理機能が適用されて、圧縮や暗号化等の処理がなされているので、一度キャッシュSSD200に格納し、再度データ処理機能を適用してデータ伸長あるいは復号化を行うことでホスト計算機40が扱えるデータにする必要があるためである。そのため、ホスト計算機40に送信するデータを、最終記憶媒体190から一旦キャッシュSSD200にライトする必要があるが、内部キャッシュ20051にヒットする、或いは内部キャッシュ20051の空き領域に書き込める可能性が高いため、FM2011へのライトが発生する可能性は低く、リードレイテンシも小さい。 As described above, when any of the caches misses and is read from the final storage medium 190 (S130), the CPU 120 once writes the data read from the final storage medium 190 to the cache SSD 200 and then writes to the cache SSD 200. Read data. Since the data processing function of the cache SSD 200 is applied to the data on the final storage medium 190 at the time of writing and processing such as compression and encryption is performed, the data is stored in the cache SSD 200 once and the data processing function is applied again. This is because the data needs to be handled by the host computer 40 by performing data expansion or decryption. For this reason, data to be transmitted to the host computer 40 needs to be temporarily written from the final storage medium 190 to the cache SSD 200. However, since there is a high possibility that the internal cache 20051 will be hit or written to a free area of the internal cache 20051, the FM 2011 Is unlikely to occur and the read latency is low.
 なお、たとえばデータ処理機能によりデータ暗号化・復号化を行う場合、データ暗号化・復号化のために必要な暗号鍵などの情報については、ライト時からキャッシュSSD200が保持し続けてもよいし、ストレージコントローラ100が管理してもよい。ストレージコントローラ100が管理する場合、キャッシュSSD200へのライト要求コマンド3000、リード要求コマンド5000によって必要な情報をキャッシュSSD200に通知する。あるいはライト要求コマンド3000やリード要求コマンド5000とは異なる、別のコマンドを発行することで、必要な情報をキャッシュSSD200に通知するようにしてもよい。 For example, when data encryption / decryption is performed by a data processing function, information such as an encryption key necessary for data encryption / decryption may be kept in the cache SSD 200 from the time of writing, The storage controller 100 may manage it. When the storage controller 100 manages, the cache SSD 200 is notified of necessary information by a write request command 3000 and a read request command 5000 to the cache SSD 200. Alternatively, another information different from the write request command 3000 and the read request command 5000 may be issued to notify the cache SSD 200 of necessary information.
 また、上では、ホスト計算機40からのホストリード要求、ホストライト要求で指定される領域が、4KB境界に一致している場合の例について説明したが、ホスト計算機40からのリード、ライト要求で指定される領域が4KB境界に一致しておらず、かつキャッシュDRAMあるいはキャッシュSSDにアクセス対象のデータが格納されていない(キャッシュミス)の場合には、最終記憶媒体190からアクセス対象の範囲を含む、4KB境界に一致したサイズのデータをキャッシュDRAMあるいはキャッシュSSDに読み出して、キャッシュされたデータに対して、リード、ライト処理を行えばよい。 In the above description, an example in which the area specified by the host read request and the host write request from the host computer 40 coincides with the 4 KB boundary has been described. However, the area specified by the read and write request from the host computer 40 has been described. If the area to be accessed does not coincide with the 4 KB boundary and the access target data is not stored in the cache DRAM or the cache SSD (cache miss), the access target range is included from the final storage medium 190. Data having a size matching the 4 KB boundary may be read into the cache DRAM or the cache SSD, and read / write processing may be performed on the cached data.
 実施例2に係るストレージ装置10及びキャッシュSSD200のハードウェア構成は、実施例1で説明したものと同じであるため、ここでは説明しない。また、実施例2に係るストレージ装置10及びキャッシュSSD200で実施される大半の処理も、実施例1で説明したものと同じであるため、ここでは、実施例1と異なる点(具体的には、実施例1における、キャッシュSSD200の内部ディステージ処理(図13:S465、図14)、そしてストレージコントローラ100のCPU120がキャッシュSSD200にライト要求を発行する際の処理(図9:S46)が、実施例2では異なる処理になる)を中心に説明する。 Since the hardware configurations of the storage apparatus 10 and the cache SSD 200 according to the second embodiment are the same as those described in the first embodiment, they will not be described here. In addition, since most of the processes performed in the storage device 10 and the cache SSD 200 according to the second embodiment are the same as those described in the first embodiment, here, the points that differ from the first embodiment (specifically, The internal destage processing of the cache SSD 200 in the first embodiment (FIG. 13: S465, FIG. 14) and the processing when the CPU 120 of the storage controller 100 issues a write request to the cache SSD 200 (FIG. 9: S46) 2 will be different processing).
 実施例1に係るストレージ装置10及びキャッシュSSD200では、ディステージ優先度200526を高く設定したデータが優先的にFM2011にライトされる。これにより、ディステージ優先度200526が低いデータが極力FM2011にライトされないようにし、FM2011の寿命劣化を最小限に抑える。ただし、ディステージ優先度200526が高いデータがキャッシュSSD200の内部キャッシュ20051に存在しない場合には、ディステージ優先度200526が低いデータもFM2011にライトされる。一方、実施例2に係るストレージ装置10及びキャッシュSSD200では、ディステージ優先度200526が高いデータのみをFM2011にライトするように制御する。 In the storage apparatus 10 and the cache SSD 200 according to the first embodiment, data in which the destage priority level 200526 is set high is preferentially written to the FM 2011. This prevents data with a low destage priority 200526 from being written to the FM 2011 as much as possible, and minimizes the lifetime degradation of the FM 2011. However, if data having a high destage priority 200526 does not exist in the internal cache 20051 of the cache SSD 200, data having a low destage priority 200526 is also written to the FM 2011. On the other hand, in the storage apparatus 10 and the cache SSD 200 according to the second embodiment, control is performed so that only data having a high destage priority 200526 is written to the FM 2011.
 しかし、そのままでは内部ディステージ優先度200526が低いデータが内部キャッシュ20051を占有してしまうため、ストレージコントローラ100がキャッシュSSD200から最終記憶媒体190へデータをディステージする必要がある。そのためにキャッシュSSD200からストレージコントローラ100のCPU120へディステージが必要であることを通知する。この通知は、キャッシュSSD200がライト要求を受領したタイミングで行うが、それ以外の契機で通知するようにしてもよい。例えば、SSDコントローラ200が内部キャッシュ20051の空き容量を定期的に監視し、内部キャッシュ20051の空き容量が小さくなった際にストレージコントローラ100のCPU120にディステージが必要であると通知してもよい。 However, since the data with the low internal destage priority 200526 occupies the internal cache 20051 as it is, it is necessary for the storage controller 100 to destage the data from the cache SSD 200 to the final storage medium 190. Therefore, the cache SSD 200 notifies the CPU 120 of the storage controller 100 that destage is necessary. This notification is performed at the timing when the cache SSD 200 receives a write request, but may be notified at other timings. For example, the SSD controller 200 may periodically monitor the free capacity of the internal cache 20051 and notify the CPU 120 of the storage controller 100 that destage is necessary when the free capacity of the internal cache 20051 becomes small.
 図16は、実施例2におけるキャッシュSSD200で行われる内部ディステージ処理のフローの一例である。 FIG. 16 is an example of a flow of internal destage processing performed by the cache SSD 200 in the second embodiment.
 SSDコントローラ201のCPU2003は、内部キャッシュ20051内のデータについて、内部ディステージ優先度200526が高いデータの有無を確認し(S46411)、そのようなデータがない場合(S46411:No)、SSDコントローラ201から最終記憶媒体190へのディステージが必要である旨、及び内部キャッシュ20051内のデータのうち、最終アクセス時刻(内部キャッシュ管理テーブル20052で管理しているデータの最終アクセス時刻200525)が最も古いデータ(キャッシュセグメントに格納されているデータ)の情報を、ライト要求コマンド3000に対する応答コマンド4000の結果情報4002に含めて、ストレージコントローラ100のCPU120へ通知し(S46412)、キャッシュSSD20の内部ディステージ処理は終了する。なお、詳細は後述するが、ストレージコントローラ100のCPU120は、SSDコントローラ201から返送された応答コマンド4000の結果情報4002に、最終記憶媒体190へのディステージが必要である旨の情報が含まれていた場合、キャッシュSSD200内のデータを最終記憶媒体190へディステージする処理を実施する。 The CPU 2003 of the SSD controller 201 confirms whether or not there is data having a high internal destage priority 200526 for the data in the internal cache 20051 (S46411), and if there is no such data (S46411: No), the SSD controller 201 Of the data in the internal cache 20051 that the destage to the final storage medium 190 is necessary, and the data (the last access time 200525 of the data managed by the internal cache management table 20052) among the data in the internal cache 20051 is the oldest ( (Data stored in the cache segment) is included in the result information 4002 of the response command 4000 to the write request command 3000 and notified to the CPU 120 of the storage controller 100 (S46412). , Internal de-stage processing of cache SSD20 is completed. Although details will be described later, the CPU 120 of the storage controller 100 includes information indicating that destage to the final storage medium 190 is required in the result information 4002 of the response command 4000 returned from the SSD controller 201. In such a case, a process of destageing the data in the cache SSD 200 to the final storage medium 190 is performed.
 一方、内部ディステージ優先度200526が高いデータがある場合(S46411:Yes)、CPU2003は実施例1における内部ディステージ処理(S4641~S4646)と同様の処理を行う。 On the other hand, when there is data with high internal destage priority 200526 (S46411: Yes), the CPU 2003 performs the same processing as the internal destage processing (S4641 to S4646) in the first embodiment.
 続いて図17を用いて、ストレージコントローラ100のCPU120がキャッシュSSD200へライト要求を発行したときに、ストレージコントローラ100のCPU120の実行する処理の流れを説明する。 Next, the flow of processing executed by the CPU 120 of the storage controller 100 when the CPU 120 of the storage controller 100 issues a write request to the cache SSD 200 will be described with reference to FIG.
 実施例1と同様に、ストレージコントローラ100のCPU120がキャッシュSSD200へライト要求コマンド3000を送信することでライト要求(S46)した後、キャッシュSSD200からライト要求コマンド3000に対する応答コマンド4000でライト完了通知を受領する(S47)。本実施例では、CPU120はその結果情報4002からライト完了またはディステージが必要なのかを確認する(S48)。結果情報4002に、最終記憶媒体190へのディステージが必要である旨の情報が含まれていた場合(S48:ディステージ要)、CPU120はキャッシュSSD200からデータを最終記憶媒体190へディステージする(S49)。このディステージ処理は実施例1のS44(つまり図10に記載の処理)とほぼ同様であるが、CPU120はディステージするデータとして、キャッシュSSD200から通知された、内部キャッシュ20051内のデータのうち最終アクセス時刻が最も古いデータを選択するようにする。これは、内部キャッシュ20051のデータをディステージしなければ、キャッシュSSD200に新たにデータを書き込めないからである。ディステージ後、CPU120は再度キャッシュSSD200へライト要求を行い、ライトが完了するまで上記の処理を繰り返す。 As in the first embodiment, after the CPU 120 of the storage controller 100 sends a write request command 3000 to the cache SSD 200 to make a write request (S46), the write completion notification is received from the cache SSD 200 with a response command 4000 to the write request command 3000. (S47). In this embodiment, the CPU 120 confirms from the result information 4002 whether write completion or destage is necessary (S48). When the result information 4002 includes information indicating that destage to the final storage medium 190 is necessary (S48: destage required), the CPU 120 destages data from the cache SSD 200 to the final storage medium 190 ( S49). This destage processing is substantially the same as S44 of the first embodiment (that is, the processing described in FIG. 10), but the CPU 120 determines the final data among the data in the internal cache 20051 notified from the cache SSD 200 as destaged data. Select data with the oldest access time. This is because new data cannot be written to the cache SSD 200 unless the data in the internal cache 20051 is destaged. After the destage, the CPU 120 makes a write request to the cache SSD 200 again, and repeats the above processing until the write is completed.
 実施例2に係るストレージ装置10及びキャッシュSSD200では、ディステージ優先度が低いデータのFM2011への書き込みが完全に抑止される。そのため、キャッシュSSDの記憶媒体(FM)に書き込まれるデータ量を削減することができ、FM2011の寿命を延ばすことができる。 In the storage device 10 and the cache SSD 200 according to the second embodiment, writing of data with low destage priority to the FM 2011 is completely inhibited. For this reason, the amount of data written to the storage medium (FM) of the cache SSD can be reduced, and the life of the FM 2011 can be extended.
 実施例1または2に係るストレージ装置10では、ストレージコントローラ100上のメモリ130(具体的にはメモリ130内のキャッシュDRAM1302)を1次キャッシュとし、キャッシュSSD200を2次キャッシュとして用いていたが、実施例3に係るストレージ装置10では、1次キャッシュを用いない。つまりキャッシュSSD200のみをストレージ装置10のキャッシュとして用いる点が、実施例1または2に係るストレージ装置10と異なる。 In the storage apparatus 10 according to the first or second embodiment, the memory 130 (specifically, the cache DRAM 1302 in the memory 130) on the storage controller 100 is used as the primary cache and the cache SSD 200 is used as the secondary cache. In the storage apparatus 10 according to Example 3, the primary cache is not used. That is, the point that only the cache SSD 200 is used as the cache of the storage apparatus 10 is different from the storage apparatus 10 according to the first or second embodiment.
 実施例3に係るストレージ装置10の構成は、実施例1で説明したもの(図1に記載のもの)とほぼ同様であるため、図示は省略する。ただし実施例3に係るストレージ装置10の場合、メモリ130内にメモリキャッシュ領域1302が存在しない点が、実施例1に係るストレージ装置10と異なる。その他の点は実施例1で説明したものと同じである。 Since the configuration of the storage apparatus 10 according to the third embodiment is substantially the same as that described in the first embodiment (described in FIG. 1), the illustration is omitted. However, the storage apparatus 10 according to the third embodiment is different from the storage apparatus 10 according to the first embodiment in that the memory cache area 1302 does not exist in the memory 130. Other points are the same as those described in the first embodiment.
 続いて実施例3に係るストレージ装置10が管理する、キャッシュ管理テーブル1301について説明する。実施例3に係るキャッシュ管理テーブル1301に含まれる情報は、実施例1におけるものと同じであるので図示は省略する。ただし、実施例1におけるキャッシュ管理テーブル1301には、キャッシュDRAM1302のキャッシュセグメントについての情報(図2:1310)が格納されていたが、実施例3に係るストレージ装置10では、キャッシュとして用いる記憶領域は、キャッシュSSD200だけであるため、キャッシュSSDのキャッシュセグメントについての情報(図2:1311)だけが格納され、キャッシュDRAM1302のキャッシュセグメントについての情報(図2:1310)は格納されない。 Subsequently, the cache management table 1301 managed by the storage apparatus 10 according to the third embodiment will be described. Since the information included in the cache management table 1301 according to the third embodiment is the same as that in the first embodiment, the illustration is omitted. However, in the cache management table 1301 in the first embodiment, information about the cache segment of the cache DRAM 1302 (FIG. 2: 1310) is stored, but in the storage apparatus 10 according to the third embodiment, the storage area used as a cache is Since only the cache SSD 200 is stored, only information on the cache segment of the cache SSD (FIG. 2: 1311) is stored, and information on the cache segment of the cache DRAM 1302 (FIG. 2: 1310) is not stored.
 なお、実施例3に係るキャッシュSSD200の構成、及びキャッシュSSD200が内部メモリ2005で管理する情報(内部キャッシュ管理テーブル、論理物理アドレス変換テーブル20053、ブロック情報20054)は、実施例1に係るキャッシュSSD200と同一であるため、ここでは説明を行わない。 The configuration of the cache SSD 200 according to the third embodiment and information managed by the cache SSD 200 in the internal memory 2005 (internal cache management table, logical physical address translation table 20053, block information 20054) are the same as the cache SSD 200 according to the first embodiment. Since they are the same, they will not be described here.
 続いて図18を用いて、実施例3に係るストレージ装置10が、ホスト計算機40からライト要求を受信した時の処理の流れを説明する。この処理は、一般的なディスクキャッシュ付きストレージ装置が行う処理と同様の処理である。 Subsequently, the flow of processing when the storage apparatus 10 according to the third embodiment receives a write request from the host computer 40 will be described with reference to FIG. This process is the same as the process performed by a general storage device with a disk cache.
 ストレージコントローラ100のCPU120は、ホスト計算機40からライト要求を受信する(S10)。この処理は図8を用いて説明した処理S10と同じである。続いてストレージコントローラ100は、キャッシュ管理テーブル1301を用いてキャッシュSSD200のヒット判定を行う(S20’)。キャッシュSSD200にヒットした、つまりキャッシュSSD200上に、ライト要求で指定されたデータを格納するためのキャッシュセグメントが確保済みの場合(S20’:ヒット)、キャッシュSSD200上の該当セグメントに対してライトデータの上書きを行う(S60’)。キャッシュSSD200でミスした場合(S20’:ミス)、キャッシュSSD200に空き(未使用)のセグメントがあるかを確認する(S30’)。空きがない場合(S30’:No)、空きセグメントを確保するため、キャッシュSSD200から最終記憶媒体190へデータのディステージを行う(S40’)。このディステージ処理は、実施例1で説明した図10の処理(図9:S44の処理)と同じ処理である。 The CPU 120 of the storage controller 100 receives a write request from the host computer 40 (S10). This process is the same as the process S10 described with reference to FIG. Subsequently, the storage controller 100 performs a hit determination on the cache SSD 200 using the cache management table 1301 (S20 '). When the cache SSD 200 is hit, that is, when the cache segment for storing the data specified by the write request has been secured on the cache SSD 200 (S20 ′: hit), the write data of the corresponding segment on the cache SSD 200 is stored. Overwriting is performed (S60 '). If there is a miss in the cache SSD 200 (S20 ': miss), it is checked whether there is an empty (unused) segment in the cache SSD 200 (S30'). If there is no free space (S30 ': No), data is destaged from the cache SSD 200 to the final storage medium 190 to secure a free segment (S40'). This destage processing is the same processing as the processing of FIG. 10 (FIG. 9: processing of S44) described in the first embodiment.
 空きがある場合(S30’:Yes)またはデータディステージ後(S40’の実行後)、キャッシュSSD200に新たなセグメントを確保してキャッシュSSD200にライトデータを格納する(S50’)。この処理は、実施例1で説明した、図9のS45、S46と同じ処理である。キャッシュSSD200にデータ格納後、ストレージコントローラ100はホスト計算機40へライト完了を通知し(S90)、処理を終了する。 If there is a free space (S30 ': Yes) or after data destage (after execution of S40'), a new segment is secured in the cache SSD 200 and write data is stored in the cache SSD 200 (S50 '). This process is the same as S45 and S46 of FIG. 9 described in the first embodiment. After the data is stored in the cache SSD 200, the storage controller 100 notifies the host computer 40 of the write completion (S90) and ends the process.
 次に、図19を用いて、ホスト装置40からのリード要求を受信した時のストレージ装置10の行う処理について説明する。この処理は、図15を用いて説明した、実施例1に係るストレージ装置10が実施するリード処理から、キャッシュDRAM1302に対する処理を取り除いたものである。 Next, processing performed by the storage apparatus 10 when a read request from the host apparatus 40 is received will be described with reference to FIG. This process is obtained by removing the process for the cache DRAM 1302 from the read process performed by the storage apparatus 10 according to the first embodiment described with reference to FIG.
 最初にストレージコントローラ100のCPU120は、ホスト計算機40からリード要求を受領すると(S100)、キャッシュ管理テーブル1301を用いて、キャッシュヒット判定を行う(S120)。キャッシュSSD200にヒットした場合(S120:ヒット)、CPU120はキャッシュSSD200へリード要求する(S140)。キャッシュSSD200のリード処理は、実施例1で説明したS443の処理(つまり図11の処理)と同様である。キャッシュSSD200でキャッシュミスの場合(S120:ミス)、CPU120は最終記憶媒体190からデータをリードして、メモリ130、ASIC140、あるいはIF CTL150内の一時記憶領域に格納する(S130)。 First, when receiving a read request from the host computer 40 (S100), the CPU 120 of the storage controller 100 performs a cache hit determination using the cache management table 1301 (S120). When the cache SSD 200 is hit (S120: hit), the CPU 120 issues a read request to the cache SSD 200 (S140). The read process of the cache SSD 200 is the same as the process of S443 described in the first embodiment (that is, the process of FIG. 11). In the case of a cache miss in the cache SSD 200 (S120: miss), the CPU 120 reads data from the final storage medium 190 and stores it in the temporary storage area in the memory 130, ASIC 140, or IF CTL 150 (S130).
 さらにCPU120は、キャッシュSSD200に空きセグメントが存在するか確認し(S150)、空きがない場合(S150:No)、キャッシュSSD200から最終記憶媒体190へデータのディステージ処理を行う(S160)。このキャッシュSSD200の空き確認とディステージ処理(S150、S160)については、最終記憶媒体190からのリード(S130)の前に行うようにしてもよい。ディステージ処理(S160)は、S44と同様である。ディステージ後、またはキャッシュSSD200に空きがある場合(S150:Yes)、CPU120はキャッシュセグメントを新たに確保し、最終記憶媒体190からリードしたデータをキャッシュSSD200にライトする(S170)。キャッシュSSD200へのライト処理はS46と同様である。このライト処理の過程で、データにキャッシュSSD200内部のデータ処理機能が適用される。続いて、S170でCPU120はキャッシュSSD200に書き込んだデータをリードする要求を、キャッシュSSD200に発行する(S180)。このリード要求を受け付けたキャッシュSSD200ではS443と同様、データに対する処理(データ伸長やデータ復号化)を行い、処理が施されたデータがストレージコントローラ100のバッファ領域1303に転送される。最後にCPU120は、いずれかの媒体からリードしたデータをホスト計算機40へ転送し(S200)、処理を終了する。 Further, the CPU 120 checks whether or not there is an empty segment in the cache SSD 200 (S150). If there is no empty segment (S150: No), the CPU 120 destages data from the cache SSD 200 to the final storage medium 190 (S160). The empty confirmation of the cache SSD 200 and the destage processing (S150, S160) may be performed before the read from the final storage medium 190 (S130). The destage processing (S160) is the same as S44. After destage or when there is a free space in the cache SSD 200 (S150: Yes), the CPU 120 newly secures a cache segment and writes the data read from the final storage medium 190 to the cache SSD 200 (S170). The write process to the cache SSD 200 is the same as S46. During the write process, the data processing function in the cache SSD 200 is applied to the data. Subsequently, in S170, the CPU 120 issues a request for reading the data written in the cache SSD 200 to the cache SSD 200 (S180). The cache SSD 200 that has received this read request performs processing (data decompression and data decryption) on the data as in S443, and the processed data is transferred to the buffer area 1303 of the storage controller 100. Finally, the CPU 120 transfers the data read from any medium to the host computer 40 (S200), and ends the process.
 なお、実施例3に係るキャッシュSSD200でも、実施例1と同様に、内部キャッシュ領域20051に空きセグメントが存在しない場合、図14に記載された内部ディステージ処理が行われる。内部ディステージ処理では実施例1と同様、ディステージ優先度200526の高いデータの中から、LRUアルゴリズムにより内部ディステージするデータを選択することにより、シーケンシャルアクセスデータのように、再アクセスされる可能性が低いデータをFM2010に格納(内部ディステージ)されにくくしている。 Note that, in the cache SSD 200 according to the third embodiment as well, similarly to the first embodiment, when there is no free segment in the internal cache area 20051, the internal destage processing described in FIG. 14 is performed. In the internal destage processing, as in the first embodiment, by selecting the data to be internally destaged by the LRU algorithm from the data having the high destage priority 200526, there is a possibility that the data will be reaccessed like sequential access data. Is less likely to be stored in the FM 2010 (internal destage).
 また、実施例3に係るストレージ装置10においても、実施例2において説明した内部ディステージ処理(図16の処理)を採用してもよい。そうすると、実施例3に係るストレージ装置10は、実施例2に係るストレージ装置10と同様に、ディステージ優先度200526が高いデータのみをFM2011にライトするように動作する。 Also, in the storage apparatus 10 according to the third embodiment, the internal destage processing (the processing in FIG. 16) described in the second embodiment may be employed. Then, like the storage apparatus 10 according to the second embodiment, the storage apparatus 10 according to the third embodiment operates so as to write only data with a high destage priority 200526 to the FM 2011.
 続いて実施例4の説明を行う。実施例4に係るストレージ装置及びキャッシュSSDのハードウェア構成は、実施例1または2で説明したものと同じであるため、ここでは説明しない。実施例1または2に係るストレージ装置10では、ストレージコントローラ100上のメモリ130(具体的にはメモリ130内のキャッシュDRAM1302)を1次キャッシュとし、キャッシュSSD200を2次キャッシュとして用いていたが、実施例4では、ストレージコントローラ100のCPUがデータ特性(例えば、ライトデータの最終的な格納先)に応じて、キャッシュSSD200又はキャッシュDRAM1302のいずれか一方を選択してデータをキャッシュする。ライトデータの最終的な格納先については、ホストライト要求に含まれるライト対象データのアドレス情報(LBA等)を参照することで判断できる。 Subsequently, Example 4 will be described. Since the hardware configuration of the storage device and the cache SSD according to the fourth embodiment is the same as that described in the first or second embodiment, it will not be described here. In the storage apparatus 10 according to the first or second embodiment, the memory 130 (specifically, the cache DRAM 1302 in the memory 130) on the storage controller 100 is used as the primary cache and the cache SSD 200 is used as the secondary cache. In Example 4, the CPU of the storage controller 100 selects either the cache SSD 200 or the cache DRAM 1302 according to the data characteristics (for example, the final storage destination of the write data) and caches the data. The final storage location of the write data can be determined by referring to the address information (LBA or the like) of the write target data included in the host write request.
 最終記憶媒体190が、例えばSSDを始めとする高速な媒体である場合、アクセス速度が同等であるキャッシュSSD200にキャッシュしても、アクセス性能向上の効果が小さいため、ストレージコントローラ100のメモリ130上のキャッシュDRAM1302にのみ格納する。一方、最終記憶媒体190がHDDのような、SSDよりも低速な媒体である場合、キャッシュSSD200にのみキャッシュする。この場合では、キャッシュDRAM1302に格納されたデータについては、キャッシュSSD200が備えるデータ処理機能を用いることができないため、ストレージコントローラ100のCPU120または別ハードウェアで同様の処理を行う。 If the final storage medium 190 is a high-speed medium such as an SSD, for example, even if it is cached in the cache SSD 200 having the same access speed, the effect of improving the access performance is small. Stored only in the cache DRAM 1302. On the other hand, when the final storage medium 190 is a medium that is slower than the SSD, such as an HDD, only the cache SSD 200 is cached. In this case, the data stored in the cache DRAM 1302 cannot be used with the data processing function of the cache SSD 200, so the CPU 120 of the storage controller 100 or other hardware performs similar processing.
 キャッシュSSD200にキャッシュされたデータの扱いは実施例3等と同等となるので詳細は省略する。 The handling of the data cached in the cache SSD 200 is the same as that in the third embodiment and the details are omitted.
 実施例4では、最終記憶媒体の種類などの第一のデータ特性に基づき、キャッシュDRAM1302又はキャッシュSSD200のいずれか一方にライトデータをキャッシュする。キャッシュSSD200に格納されたデータに関して、キャッシュSSD200が、ストレージコントローラ100のCPU120から受信した第二のデータ特性(例えば、ライトアクセスの種類(シーケンシャル/ランダム))に基づき、内部キャッシュからFMへのディステージの優先度を決定する。 In the fourth embodiment, write data is cached in either the cache DRAM 1302 or the cache SSD 200 based on the first data characteristic such as the type of the final storage medium. Regarding the data stored in the cache SSD 200, the cache SSD 200 destages from the internal cache to the FM based on the second data characteristic (for example, write access type (sequential / random)) received from the CPU 120 of the storage controller 100. Determine the priority of.
 図20を用いて、ホスト装置40からのライト要求を受信した時のストレージ装置10の行う処理について説明する。 The processing performed by the storage apparatus 10 when a write request from the host apparatus 40 is received will be described with reference to FIG.
 ストレージコントローラ100のCPU120は、ホスト計算機40からライト要求を受信する(S10)。この処理は図8を用いて説明した処理S10と同じである。続いてCPU120は、ライト要求コマンドのLBAを確認して、ライトデータの最終格納先がSSDのような高速な媒体かHDDのような低速な媒体かを判定する(S11)。最終格納先がSSDであれば(S11:SSD)、ライトデータをキャッシュDRAM1302へ格納する(S13)。このキャッシュDRAM1302への格納処理については、図8のS70、S80を除いた処理となる。なぜなら、キャッシュDRAM1302とキャッシュSSD200は同じLBAのデータを保持しないため、キャッシュDRAM1302上のデータがキャッシュSSD200上にはないからである。 The CPU 120 of the storage controller 100 receives a write request from the host computer 40 (S10). This process is the same as the process S10 described with reference to FIG. Subsequently, the CPU 120 confirms the LBA of the write request command and determines whether the final storage destination of the write data is a high speed medium such as SSD or a low speed medium such as HDD (S11). If the final storage destination is SSD (S11: SSD), the write data is stored in the cache DRAM 1302 (S13). The storage processing in the cache DRAM 1302 is processing excluding S70 and S80 in FIG. This is because the cache DRAM 1302 and the cache SSD 200 do not hold the same LBA data, and therefore the data on the cache DRAM 1302 is not on the cache SSD 200.
 一方、最終格納先がHDDであれば(S11:HDD)、ライトデータをキャッシュSSD200に格納する(S12)。キャッシュSSD200への格納処理は、図9のS42以降と同様である。 On the other hand, if the final storage destination is the HDD (S11: HDD), the write data is stored in the cache SSD 200 (S12). The storage process in the cache SSD 200 is the same as that after S42 in FIG.
 実施例4に係るストレージ装置によれば、キャッシュSSD200には、HDDのように、SSDよりもアクセス性能の低い記憶媒体が用いられた最終記憶媒体190に格納されるデータのみがキャッシュされ、SSD等のようにキャッシュSSD200と同等のアクセス性能の記憶媒体が用いられた最終記憶媒体190に格納されるデータはキャッシュされない。そのため、キャッシュSSD200に書き込まれるデータ量を削減することができ、キャッシュSSD200の記憶媒体(FM2011)の寿命を延ばすことができる。 According to the storage device of the fourth embodiment, only the data stored in the final storage medium 190 that uses a storage medium with lower access performance than the SSD, such as an HDD, is cached in the cache SSD 200, such as an SSD. As described above, data stored in the final storage medium 190 using a storage medium having an access performance equivalent to that of the cache SSD 200 is not cached. Therefore, the amount of data written to the cache SSD 200 can be reduced, and the life of the storage medium (FM 2011) of the cache SSD 200 can be extended.
 続いて実施例5の説明を行う。実施例5に係るストレージ装置及びキャッシュSSDのハードウェア構成は、実施例1または2で説明したものと同じである。実施例5に係るストレージ装置及びキャッシュSSD200では、キャッシュSSD200のFM2011の劣化が進み、データを保持し続けることが難しくなった場合に、キャッシュSSD200が内部ディステージを行わずに、実施例2と同様にストレージコントローラ100へディステージを要求して、データを最終記憶媒体190へディステージする。このとき、FM2011に格納されているデータのうち、キャッシュ状態13014が「dirty」のデータについても、ストレージコントローラ100へディステージ要求する。これにより、キャッシュSSD200がキャッシュ可能な容量は小さくなるが、FM2011の劣化によってデータが消失してしまうことを防止しつつ、ライトデータまたは最終記憶媒体190からリードされたデータに対して、キャッシュSSD200の持つデータ変換等の機能を引き続き適用できる。 Subsequently, Example 5 will be described. The hardware configurations of the storage device and the cache SSD according to the fifth embodiment are the same as those described in the first or second embodiment. In the storage device and the cache SSD 200 according to the fifth embodiment, when the deterioration of the FM 2011 of the cache SSD 200 progresses and it becomes difficult to keep the data, the cache SSD 200 does not perform internal destage and is the same as the second embodiment. The storage controller 100 is requested to destage, and the data is destaged to the final storage medium 190. At this time, among the data stored in the FM 2011, a destage request is also made to the storage controller 100 for data whose cache state 13014 is “dirty”. As a result, the cacheable capacity of the cache SSD 200 is reduced, but the data of the cache SSD 200 with respect to the write data or the data read from the final storage medium 190 is prevented while preventing the data from being lost due to the deterioration of the FM 2011. You can continue to apply functions such as data conversion.
 図21を用いて、キャッシュSSD200のFM2011が寿命に到達した場合の動作を説明する。図21は、キャッシュSSD200がストレージコントローラ100からライト要求コマンドを受信したときに、キャッシュSSD200で実行される処理の流れを説明する図であり、多くの処理は実施例1の図13と共通している。 21 will be used to explain the operation when the FM 2011 of the cache SSD 200 reaches the end of its life. FIG. 21 is a diagram for explaining the flow of processing executed by the cache SSD 200 when the cache SSD 200 receives a write request command from the storage controller 100. Many of the processes are the same as those in FIG. 13 of the first embodiment. Yes.
 キャッシュSSD200は、実施例1と同様に、ストレージコントローラ100のCPU120からライト要求を受け取ると(S461)、データ処理を行い(S462)、内部キャッシュ管理テーブル20052を用いて、内部キャッシュ20051のヒット判定を行う(S463)。内部キャッシュにヒットした場合(S463:ヒット)、内部キャッシュの該当セグメントに上書きライトする(S467)。 As in the first embodiment, when the cache SSD 200 receives a write request from the CPU 120 of the storage controller 100 (S461), the cache SSD 200 performs data processing (S462), and uses the internal cache management table 20052 to determine whether the internal cache 20051 is hit. This is performed (S463). When there is a hit in the internal cache (S463: hit), it overwrites the corresponding segment in the internal cache (S467).
 内部キャッシュ20051でミスした場合(S463:ミス)、内部キャッシュ20051に空きの(未使用の)セグメントがあるか確認する(S464)。内部キャッシュ20051に空きがある場合(S464:Yes)、実施例1と同様に新たに内部キャッシュセグメントを確保し、データを内部キャッシュへライトする。一方、内部キャッシュ20051に空きのセグメントがない場合(S464:No)、FM2011が寿命に到達したかを判定する(S469)。ここでの判定方法として例えば、SSDコントローラ201のCPU2003が、上位装置からの要求とは無関係にデータを定期的にリードして、データに付与されているCRCなどの保証コードを用いてエラー率を確認し、エラー率が予め設定してある閾値を越えた場合に寿命に到達したと判定する、という方法があり得る。 If there is a miss in the internal cache 20051 (S463: miss), it is confirmed whether there is an empty (unused) segment in the internal cache 20051 (S464). If the internal cache 20051 has a free space (S464: Yes), a new internal cache segment is secured as in the first embodiment, and data is written to the internal cache. On the other hand, if there is no empty segment in the internal cache 20051 (S464: No), it is determined whether the FM 2011 has reached the end of its life (S469). As a determination method here, for example, the CPU 2003 of the SSD controller 201 periodically reads the data regardless of the request from the host device, and uses the guarantee code such as CRC attached to the data to determine the error rate. There may be a method of checking and determining that the lifetime has been reached when the error rate exceeds a preset threshold value.
 FM2011が寿命に到達していない場合(S469:No)、他の実施例で説明したライト処理と同様に内部ディステージを行って(S465)、空きセグメントを確保する。空きセグメントを確保するための内部ディステージを行うことができない場合、すなわちFM2011が寿命に到達した場合(S469:Yes)、内部ディステージを行うとデータを消失する危険がある。そこで、実施例2と同様に、キャッシュSSD200からストレージコントローラ100のCPU120へディステージが必要であることを要求する(S46412)。ただし、それ以外の契機でディステージが必要であることをCPU120へ通知するようにしてもよい。実施例1と同様に、SSDコントローラ200が内部キャッシュ20051の空き容量を定期的に監視し、内部キャッシュ20051の空き容量が小さくなった際にストレージコントローラ100のCPU120にディステージが必要であると通知してもよい。さらに、キャッシュSSD200はFM2011が寿命に到達したことをストレージコントローラ100に通知してもよい。 If the FM 2011 has not reached its end of life (S469: No), internal destage is performed in the same manner as the write process described in the other embodiments (S465) to secure an empty segment. When the internal destage for securing the empty segment cannot be performed, that is, when the FM 2011 reaches the end of life (S469: Yes), there is a risk that data will be lost if the internal destage is performed. Therefore, as in the second embodiment, the cache SSD 200 requests the CPU 120 of the storage controller 100 that destage is necessary (S46412). However, you may make it notify to CPU120 that a destage is required by the opportunity other than that. As in the first embodiment, the SSD controller 200 periodically monitors the free capacity of the internal cache 20051 and notifies the CPU 120 of the storage controller 100 that destage is necessary when the free capacity of the internal cache 20051 becomes small. May be. Further, the cache SSD 200 may notify the storage controller 100 that the FM 2011 has reached the end of its life.
 キャッシュSSD200のFM2011が寿命に到達した旨の通知を受けたストレージコントローラ100のCPU120は、すでにキャッシュSSD200に格納してあるデータについて、キャッシュ状態13014が「dirty」であるデータを最終記憶媒体190へディステージする。また、キャッシュ状態13014が「clean」であるデータについては、キャッシュSSD200に格納したままでは読み出せない可能性があるため、それらのデータについては、キャッシュ管理テーブル1301を更新し、キャッシュSSD200に格納されていないものとして扱う。具体的には、キャッシュの管理情報を、キャッシュSSD200に記録したデータが消失したものとして更新する。以降、キャッシュSSD200に格納されるデータは、内部キャッシュ20051に格納できないものについては、上述の通り、ストレージコントローラ100にディステージが必要であることを通知し、ストレージコントローラ100にディステージしてもらうため、寿命に到達したFM2011にデータが格納されることはない。 The CPU 120 of the storage controller 100 that has received the notification that the FM 2011 of the cache SSD 200 has reached the end of its life, stores data whose cache state 13014 is “dirty” to the final storage medium 190 for the data already stored in the cache SSD 200. Stage. In addition, since there is a possibility that data whose cache state 13014 is “clean” cannot be read while being stored in the cache SSD 200, the cache management table 1301 is updated and stored in the cache SSD 200 for those data. Treat as not. Specifically, the cache management information is updated assuming that the data recorded in the cache SSD 200 has been lost. Thereafter, for data stored in the cache SSD 200 that cannot be stored in the internal cache 20051, as described above, the storage controller 100 is notified that destage is necessary, and the storage controller 100 is destaged. No data is stored in the FM 2011 that has reached the end of its life.
 本発明の実施例5に係るストレージ装置及びキャッシュSSD200によれば、ストレージコントローラ100のCPU120が、キャッシュSSD200からFM2011の寿命に基づく情報を取得し、キャッシュSSD200のDRAMなどからなる内部メモリ2005のデータを最終記憶媒体190へディステージすることで、信頼性を高めることを可能とする。 According to the storage apparatus and the cache SSD 200 according to the fifth embodiment of the present invention, the CPU 120 of the storage controller 100 acquires information based on the life of the FM 2011 from the cache SSD 200, and stores the data in the internal memory 2005 including the DRAM of the cache SSD 200. Destaging to the final storage medium 190 makes it possible to improve reliability.
 続いて実施例6について説明する。実施例6に係るストレージ装置及びキャッシュSSDのハードウェア構成も、実施例1または2で説明したものと同様である。実施例6は、ストレージ装置が、複数の最終記憶媒体190をRAIDグループとして管理し、ホスト計算機40からのライトデータからRAID Parity(以下、「Parity」と略記することもある)を生成し、ライトデータとともにParityを最終記憶媒体190に格納する構成を対象とする。 Subsequently, Example 6 will be described. The hardware configurations of the storage device and the cache SSD according to the sixth embodiment are the same as those described in the first or second embodiment. In the sixth embodiment, the storage apparatus manages a plurality of final storage media 190 as a RAID group, generates RAID Parity (hereinafter also abbreviated as “Parity”) from write data from the host computer 40, and writes A configuration in which Parity is stored in the final storage medium 190 together with data is targeted.
 また実施例6に係るストレージ装置10では、キャッシュSSD200がストレージコントローラ100からの指示に基づいて、キャッシュSSD200に格納されたデータ(ホスト計算機40から書き込まれたライトデータ)からRAID Parityを生成する。この構成によれば、ストレージコントローラ100からRAID Parity生成に係る負荷をオフロードすることができ、ストレージ装置10全体の性能を向上させる事が可能となる。そのため、実施例6に係るキャッシュSSDは、Parityを生成する機能を備える。実施例1においても述べたとおり、この機能はデータ処理アシストユニット2006に備えられていてもよいし、あるいはデータ処理アシストユニット2006とは異なる、Parity生成用のハードウェアとしてキャッシュSSD200に実装されていてもよい。あるいは、CPU2003がParity生成を実行する構成であってもよい。 In the storage apparatus 10 according to the sixth embodiment, the cache SSD 200 generates a RAID parity from the data stored in the cache SSD 200 (write data written from the host computer 40) based on an instruction from the storage controller 100. According to this configuration, it is possible to offload a load related to RAID parity generation from the storage controller 100, and it is possible to improve the performance of the entire storage apparatus 10. For this reason, the cache SSD according to the sixth embodiment has a function of generating a parity. As described in the first embodiment, this function may be provided in the data processing assist unit 2006, or may be implemented in the cache SSD 200 as parity generation hardware different from the data processing assist unit 2006. Also good. Alternatively, the CPU 2003 may execute the parity generation.
 実施例6に係るストレージ装置では、ストレージコントローラ100はホスト計算機40からのライトデータをキャッシュSSD200に格納した後、SSDに対しParity生成コマンドを発行する。 In the storage apparatus according to the sixth embodiment, the storage controller 100 stores the write data from the host computer 40 in the cache SSD 200 and then issues a parity generation command to the SSD.
 このParity生成コマンドは少なくとも、Parity生成対象とするデータの格納位置を指定するLBA(これは実施例1で説明した、キャッシュSSDがストレージコントローラに提供している論理的な記憶空間上のアドレスである)を複数個、生成されるParityの格納先を指定するLBAを1または2個(RAID5であれば1つ、RAID6であれば2つ)、そしてデータ長の情報を有している。 This Parity generation command is at least an LBA that specifies the storage location of data to be generated for Parity (this is an address on the logical storage space provided by the cache SSD to the storage controller described in the first embodiment). ), One or two LBAs that specify the storage destination of the generated parity (one for RAID5, two for RAID6), and data length information.
 このParity生成コマンドをストレージコントローラ100のCPU120から受領したキャッシュSSD200は、コマンドにて指定されたLBAに対応付けられたデータを、FM2011または内部キャッシュ20051より取得し、Parity演算を実施する。そして取得されたデータを用いてParityを生成し、内部キャッシュ20051に格納し、Parity生成コマンドにて指定されたLBAに対応付けて管理する(具体的には、内部キャッシュ管理テーブル20052を用いて管理しておく)。 The cache SSD 200 that has received this parity generation command from the CPU 120 of the storage controller 100 acquires data associated with the LBA specified by the command from the FM 2011 or the internal cache 20051, and performs a parity operation. Then, a parity is generated using the acquired data, stored in the internal cache 20051, and managed in association with the LBA specified by the parity generation command (specifically, managed using the internal cache management table 20052). Keep it).
 ストレージ装置は一般に、キャッシュの空き容量が低下し、新たなデータをキャッシュに載せる事ができない場合に、アクセス頻度の低いデータをキャッシュからHDDなどの最終記憶媒体に転送するディステージ処理を行い、ディステージによって最終記憶媒体に記録されたデータをキャッシュから削除することで空き領域を生成する。またストレージ装置は一般に、ディステージされるべきと決定されたデータ(ディステージ対象データ)に対してParityを生成するため、生成されたParityもディステージ対象データと同様に、生成後、短期間で最終記憶媒体に転送され、キャッシュから消去される。 In general, a storage device performs destage processing to transfer infrequently accessed data from a cache to a final storage medium such as an HDD when the free capacity of the cache is reduced and new data cannot be placed in the cache. An empty area is generated by deleting from the cache the data recorded in the final storage medium according to the stage. In addition, since the storage apparatus generally generates a parity for data determined to be destaged (destage target data), the generated parity is also generated in a short period of time after the generation, similar to the destage target data. It is transferred to the final storage medium and erased from the cache.
 このことから、本発明の実施例6に係るキャッシュSSDでも、上で説明したParity生成により生成されたParityは、短期間でディステージされることが期待される。そのためキャッシュSSD200は、生成されたParityを内部キャッシュ20051に格納する際、当該Parityが内部ディステージ優先度の低いデータであるとして管理する(内部キャッシュ管理テーブル20052の、内部ディステージ優先度200526を「Low」として記録する)。 Therefore, even in the cache SSD according to the sixth embodiment of the present invention, the parity generated by the parity generation described above is expected to be destaged in a short period of time. Therefore, when storing the generated parity in the internal cache 20051, the cache SSD 200 manages the parity as data having a low internal destage priority (the internal destage priority 200526 of the internal cache management table 20052 is “ Record as “Low”).
 これにより、ストレージコントローラがParityを最終記憶媒体190にディステージし、キャッシュSSD200からのデータ(Parity)消去が指示されるまでの期間、Parityは優先的にDRAM2005(内部キャッシュ20051)に格納され、FM2011に書き込まれる(内部ディステージされる)確率を低下させることで、FM2011へのライト量を減らし、FMの劣化を軽減できる。 As a result, the Parity is preferentially stored in the DRAM 2005 (internal cache 20051) until the storage controller destages the Parity to the final storage medium 190 and an instruction to erase data (Parity) from the cache SSD 200 is given, and FM2011. By reducing the probability of being written to (internally destaged), the amount of writing to FM2011 can be reduced and FM degradation can be reduced.
 以上で、本発明の実施例に係るストレージ装置及びキャッシュSSDの説明を終了する。本発明の実施例に係るストレージ装置では、DRAM等の高速の記憶媒体から成る内部キャッシュと、FMのような低価格で大容量の記憶媒体を主たる記憶領域とするキャッシュ装置(キャッシュSSD)を備える。FMは、データ消去回数(書き換え回数)に制限があるという欠点があるため、高頻度の書き替えが行われると、寿命が短くなってしまう。 This is the end of the description of the storage apparatus and the cache SSD according to the embodiment of the present invention. A storage apparatus according to an embodiment of the present invention includes an internal cache composed of a high-speed storage medium such as a DRAM and a cache apparatus (cache SSD) having a low-priced and large-capacity storage medium such as FM as a main storage area. . Since FM has a defect that the number of times of data erasure (the number of rewrites) is limited, the lifetime is shortened when rewriting is performed frequently.
 本発明の実施例に係るストレージ装置では、キャッシュ装置がデータの属性・特性に基づいて、キャッシュ対象データの内部ディステージの優先度を制御する。一例として、ストレージコントローラ等の上位装置がキャッシュ装置にデータを格納(キャッシュ)する際に、データの属性・特性に関する情報(たとえばシーケンシャルアクセス、ランダムアクセスである等)をキャッシュ装置に通知することにより、キャッシュ装置はデータの属性・特性を得る。これにより、たとえばシーケンシャルライトデータのように、上位装置から再アクセスされることなく追い出されてしまうデータ(キャッシュする効果が小さいデータ)が、内部キャッシュからFMにデータ移動(内部ディステージ)されることを抑制できるので、FMへのライト頻度を低下させ、キャッシュ装置の寿命(耐用年数)を延ばすことが可能である。 In the storage apparatus according to the embodiment of the present invention, the cache apparatus controls the priority of the internal destage of the cache target data based on the attribute / characteristic of the data. As an example, when a higher-level device such as a storage controller stores (caches) data in the cache device, it notifies the cache device of information related to the attributes and characteristics of the data (for example, sequential access, random access, etc.) The cache device obtains data attributes and characteristics. As a result, data that is evicted without being re-accessed from the host device (data having a small cache effect), such as sequential write data, is moved from the internal cache to the FM (internal destage). Therefore, it is possible to reduce the frequency of writing to the FM and extend the life (service life) of the cache device.
 また、内部キャッシュからFMへのデータ移動(内部ディステージ)の優先度とは異なる基準(LRUなど)に基づき、データをキャッシュ装置から最終記憶媒体へディステージすることにより、内部キャッシュからFMを介さずに最終記憶媒体へディステージすることを可能とし、FMへのライト頻度を抑制している。 In addition, data is destaged from the cache device to the final storage medium based on a standard (such as LRU) that is different from the priority of data movement from the internal cache to the FM (internal destage). Without destaging to the final storage medium, and the frequency of writing to the FM is suppressed.
 また、FMのような書き替え回数に制限のある記憶媒体を用いたキャッシュ装置を長寿命化させる場合、キャッシュする効果が小さいデータをキャッシュ装置に格納しないように制御する方法も考えられるが、そのように制御すると、本発明の実施例に係るキャッシュ装置(キャッシュSSD)のように、ライトデータの圧縮や暗号化などを行うデータ処理機能を有している場合、キャッシュする効果が小さいデータに対して、キャッシュ装置のデータ処理機能を適用できない。本発明の実施例に係るストレージ装置及びキャッシュ装置では、キャッシュする効果が小さいデータを極力FMに格納しないように制御できるため、キャッシュする効果が小さいデータに対してもキャッシュ装置のデータ処理機能を適用でき、かつキャッシュ装置の長寿命化が可能である。 In addition, when extending the life of a cache device using a storage medium with a limited number of rewrites such as FM, a method of controlling so that data having a small effect of caching is not stored in the cache device can be considered. With such control, when the data processing function for compressing or encrypting write data is provided as in the cache device (cache SSD) according to the embodiment of the present invention, the cache is less effective. Therefore, the data processing function of the cache device cannot be applied. In the storage apparatus and the cache apparatus according to the embodiment of the present invention, data that has a small cache effect can be controlled so as not to be stored in the FM as much as possible. And the life of the cache device can be extended.
 なお、実施例6で説明したとおり、本発明はストレージコントローラがデータの属性を指定し、その属性に基づいて、キャッシュ装置が内部ディステージの優先度を変更する例に限定されるものではない。実施例6に係るキャッシュSSDのように、キャッシュ装置がデータの種別によって自律的にディステージ優先度を変更する態様であっても、FMへのライト頻度を低下させ、キャッシュ装置の寿命(耐用年数)を延ばすという効果を得ることが可能である。 As described in the sixth embodiment, the present invention is not limited to an example in which the storage controller designates data attributes and the cache device changes the priority of the internal destage based on the attributes. Even in a mode in which the cache device autonomously changes the destage priority depending on the type of data as in the cache SSD according to the sixth embodiment, the write frequency to the FM is reduced, and the life of the cache device (lifetime) ) Can be obtained.
10:ストレージ装置
20:ネットワーク
40:ホスト計算機
100:ストレージコントローラ
110:I/F CTL
120:CPU
130:メモリ
140:ASIC
150:I/F CTL
160:専用内部バス
170:内部バス
180:メモリバス
190:最終記憶媒体
200:キャッシュSSD
2001:I/F CTL
2003:CPU
2004:内部スイッチ
2005:内部メモリ
2006:データ処理アシストユニット(Assist)
2007:FMC
2011:FM
10: Storage device 20: Network 40: Host computer 100: Storage controller 110: I / F CTL
120: CPU
130: Memory 140: ASIC
150: I / F CTL
160: Dedicated internal bus 170: Internal bus 180: Memory bus 190: Final storage medium 200: Cache SSD
2001: I / F CTL
2003: CPU
2004: Internal switch 2005: Internal memory 2006: Data processing assist unit (Assist)
2007: FMC
2011: FM

Claims (14)

  1.  1以上の最終記憶装置と、ホスト計算機及び前記最終記憶装置とが接続されるストレージコントローラを有するストレージ装置であって、
     前記ストレージコントローラは、少なくともプロセッサと、前記ホスト計算機からのライトデータを一時的に格納するキャッシュ装置を有し、
     前記キャッシュ装置は、書き替え回数に制限のある不揮発記憶媒体と、前記不揮発記憶媒体に比べて高速なアクセスが可能な揮発性記憶媒体から成る内部キャッシュを有し、
     前記ストレージコントローラは、前記キャッシュ装置に前記ホスト計算機からのライトデータを格納する際、前記ライトデータの格納を指示するためのライト要求であって、前記ライトデータの特性に関する情報が含まれている前記ライト要求を前記キャッシュ装置に発行し、
     前記キャッシュ装置は、前記ライト要求を受信すると、前記ライト要求に伴うライトデータを前記内部キャッシュに格納するとともに、前記ライトデータの特性に関する情報から前記ライトデータの内部ディステージ優先度を決定し、前記内部ディステージ優先度を前記ライトデータに対応付けて記憶し、
     前記キャッシュ装置は前記内部キャッシュに格納された前記ライトデータのうち、前記ライトデータに対応付けられた前記内部ディステージ優先度に基づき、前記不揮発記憶媒体へと移動する、
    ことを特徴とする、ストレージ装置。
    A storage device having a storage controller to which one or more final storage devices are connected to a host computer and the final storage device,
    The storage controller has at least a processor and a cache device for temporarily storing write data from the host computer,
    The cache device has an internal cache composed of a nonvolatile storage medium with a limited number of rewrites and a volatile storage medium that can be accessed at a higher speed than the nonvolatile storage medium,
    The storage controller is a write request for instructing storage of the write data when storing write data from the host computer in the cache device, and includes information related to the characteristics of the write data Issue a write request to the cache device;
    When the cache device receives the write request, the cache device stores the write data accompanying the write request in the internal cache, determines the internal destage priority of the write data from information on the characteristics of the write data, and Store the internal destage priority in association with the write data,
    The cache device moves to the non-volatile storage medium based on the internal destage priority associated with the write data among the write data stored in the internal cache.
    A storage apparatus characterized by the above.
  2.  前記ストレージコントローラは、前記ライトデータの特性に関する情報として、ライトデータがシーケンシャルアクセスデータであるかランダムアクセスデータであるかを示す情報を、前記ライト要求に含ませて、前記キャッシュ装置に発行し、
     前記キャッシュ装置は、前記ライト要求を受信すると、前記ライト要求に伴うライトデータを前記内部キャッシュに格納するとともに、前記ライトデータの特性に関する情報がシーケンシャルアクセスデータであることを示す情報であった場合、前記ライト要求に伴うライトデータの前記内部ディステージ優先度は低いと決定し、前記ライトデータの特性に関する情報がランダムアクセスデータであることを示す情報であった場合、前記ライト要求に伴うライトデータの前記内部ディステージ優先度は高いと決定することを特徴とする、請求項1に記載のストレージ装置。
    The storage controller includes information indicating whether the write data is sequential access data or random access data as information related to the characteristics of the write data, and includes the write request to issue to the cache device,
    When the cache device receives the write request, stores the write data accompanying the write request in the internal cache, and when the information on the characteristics of the write data is information indicating that it is sequential access data, When it is determined that the internal destage priority of the write data accompanying the write request is low, and the information related to the characteristics of the write data is information indicating that it is random access data, the write data of the write data accompanying the write request The storage apparatus according to claim 1, wherein the internal destage priority is determined to be high.
  3.  前記キャッシュ装置は、前記ライトデータに対して最後にアクセスがあった時刻を前記ライトデータに対応付けて記憶しており、
     前記内部キャッシュの未使用領域の量が所定の閾値未満になった時、前記内部キャッシュに格納された前記ライトデータの中に、前記ライトデータに対応付けられた前記内部ディステージ優先度の高いライトデータが存在しなかった場合、前記ライトデータに対応付けられた前記内部ディステージ優先度が低い前記ライトデータの中から、前記ライトデータに最後にアクセスがあった時刻が最も古いデータを前記不揮発記憶媒体へと移動することを特徴とする、請求項2に記載のストレージ装置。
    The cache device stores the time when the write data was last accessed in association with the write data,
    When the amount of unused area in the internal cache becomes less than a predetermined threshold, among the write data stored in the internal cache, a write with a high internal destage priority associated with the write data If there is no data, the nonvolatile data is stored in the nonvolatile memory among the write data having a low internal destage priority associated with the write data and having the oldest access time to the write data. The storage apparatus according to claim 2, wherein the storage apparatus moves to a medium.
  4.  前記キャッシュ装置は、前記ライトデータに対して最後にアクセスがあった時刻を前記ライトデータに対応付けて記憶しており、
     前記キャッシュ装置は、前記内部キャッシュの未使用領域の量が所定の閾値未満になった時、前記内部キャッシュに格納された前記ライトデータの中に、前記ライトデータに対応付けられた前記内部ディステージ優先度の高いライトデータが存在しなかった場合、前記ストレージコントローラに、前記ライトデータの前記最終記憶装置へのディステージが必要である旨を通知し、
     前記ストレージコントローラは、前記通知に応じて、前記キャッシュ装置内の内部キャッシュに格納された前記ライトデータの中から、前記ライトデータに最後にアクセスがあった時刻が最も古いデータを読み出して、前記最終記憶装置へ書き込むことを特徴とする、請求項2に記載のストレージ装置。
    The cache device stores the time when the write data was last accessed in association with the write data,
    When the amount of unused area in the internal cache becomes less than a predetermined threshold, the cache device includes the internal destage associated with the write data in the write data stored in the internal cache. If write data with high priority does not exist, the storage controller is notified that destage to the final storage device of the write data is necessary,
    In response to the notification, the storage controller reads, from the write data stored in the internal cache in the cache device, data having the oldest time when the write data was last accessed, The storage apparatus according to claim 2, wherein the storage apparatus writes to the storage apparatus.
  5.  前記キャッシュ装置は、前記前記ストレージコントローラからライトデータを受信すると、前記ライトデータに対して変換処理を施して、前記キャッシュ装置に格納し、
     前記ストレージコントローラが前記キャッシュ装置に格納された前記変換処理が施されたデータを前記最終記憶装置へディステージする際には、前記変換処理が施されたデータを読み出して、前記最終記憶装置に格納することを特徴とする、
    請求項1に記載のストレージ装置。
    When the cache device receives write data from the storage controller, the cache device performs a conversion process on the write data, stores the write data in the cache device,
    When the storage controller destages the converted data stored in the cache device to the final storage device, the converted data is read and stored in the final storage device. It is characterized by
    The storage apparatus according to claim 1.
  6.  前記ストレージコントローラは、前記ホスト計算機からデータリード要求を受け付けると、
     前記最終記憶装置から前記変換処理が施されたデータを読み出して、前記キャッシュ装置に格納し、
     前記キャッシュ装置に対し、前記キャッシュ装置に格納された前記変換処理が施されたデータを読み出すリード要求であって、データ逆変換を行う旨が指定された前記リード要求を発行し、
     前記キャッシュ装置は、前記リード要求を受信すると、前記変換処理が施されたデータを逆変換して前記ストレージコントローラに送信することを特徴とする、
    請求項5に記載のストレージ装置。
    When the storage controller receives a data read request from the host computer,
    Read the converted data from the final storage device and store it in the cache device;
    Is a read request for reading the data subjected to the conversion processing stored in the cache device to the cache device, and issues the read request designated to perform reverse data conversion,
    When the cache device receives the read request, the cache device reversely converts the data subjected to the conversion processing and transmits the data to the storage controller.
    The storage device according to claim 5.
  7.  前記変換処理は、データの圧縮処理であって、前記変換処理が施されたデータを逆変換する処理は、圧縮データの伸長処理であることを特徴とする、
    請求項6に記載のストレージ装置。
    The conversion process is a data compression process, and the process of inversely converting the data subjected to the conversion process is a decompression process of compressed data,
    The storage apparatus according to claim 6.
  8.  前記変換処理は、データの暗号化処理であって、前記変換処理が施されたデータを逆変換する処理は、暗号化データの復号化処理であることを特徴とする、
    請求項6に記載のストレージ装置。
    The conversion process is a data encryption process, and the process of inversely converting the data subjected to the conversion process is a process of decrypting encrypted data,
    The storage apparatus according to claim 6.
  9.  前記ストレージ装置はさらに、前記ホスト計算機からのライトデータを一時的に格納するためのメモリを有し、
     前記ストレージコントローラは、前記ホスト計算機からホストライト要求を受信すると、前記ホストライト要求で対象とされるライト対象データを格納するための空き領域が前記メモリに存在するか判定し、
     前記空き領域が前記メモリに存在しない場合、前記メモリ内に格納されているデータのうち、最後にアクセスがあった時刻が最も古いデータを前記キャッシュ装置へ移動した後で空き領域を確保し、
     前記確保された空き領域に前記ライト対象データを格納する、
    ことを特徴とする、請求項1に記載のストレージ装置。
    The storage device further includes a memory for temporarily storing write data from the host computer,
    When the storage controller receives a host write request from the host computer, the storage controller determines whether there is a free area in the memory for storing write target data targeted by the host write request,
    If the free area does not exist in the memory, of the data stored in the memory, secure the free area after moving the data with the oldest access time to the cache device,
    Storing the write target data in the reserved free space;
    The storage apparatus according to claim 1, wherein:
  10.  前記ストレージコントローラは、前記確保された空き領域に前記ライト対象データを格納した後、前記ライト対象データの更新前データが前記キャッシュ装置に格納されているか判定し、
     前記ライト対象データの更新前データが前記キャッシュ装置に格納されている場合、前記キャッシュ装置に前記更新前データの無効化を要求することを特徴とする、
    請求項9に記載のストレージ装置。
    The storage controller determines whether pre-update data of the write target data is stored in the cache device after storing the write target data in the reserved free space,
    When the pre-update data of the write target data is stored in the cache device, the cache device is requested to invalidate the pre-update data.
    The storage device according to claim 9.
  11.  1以上の最終記憶装置と、ホスト計算機及び前記最終記憶装置とが接続されるストレージコントローラを有するストレージ装置の制御方法であって、
     前記ストレージコントローラは、少なくともプロセッサと、前記ホスト計算機からのライトデータを一時的に格納するキャッシュ装置を有し、
     前記キャッシュ装置は、書き替え回数に制限のある不揮発記憶媒体と、前記不揮発記憶媒体に比べて高速なアクセスが可能な揮発性記憶媒体から成る内部キャッシュを有するキャッシュ装置であって、
     前記方法は、
     前記ストレージコントローラが前記キャッシュ装置に前記ホスト計算機からのライトデータを格納する際、前記ライトデータの格納を指示するためのライト要求であって、前記ライトデータの特性に関する情報が含まれている前記ライト要求を前記キャッシュ装置に発行し、
     前記キャッシュ装置は前記ライト要求を受信すると、
     前記内部キャッシュに、前記ライト要求に伴うライトデータを格納するための未使用の領域が存在するか判定し、
     前記未使用の領域が存在しない場合、前記内部キャッシュに格納されたデータのうち、前記データに対応付けられた内部ディステージ優先度の高いデータを、前記不揮発記憶媒体へと移動した後、前記ライト要求に伴うライトデータを格納するための前記未使用の領域を確保して、
     前記ライト要求に伴うライトデータを前記確保された前記未使用の領域に格納するとともに、前記ライトデータの特性に関する情報から前記ライトデータの内部ディステージ優先度を決定し、前記内部ディステージ優先度を前記ライトデータに対応付けて記憶する、
    処理を実行することを特徴とする、ストレージ装置の制御方法。
    A storage device control method comprising a storage controller to which one or more final storage devices are connected to a host computer and the final storage device,
    The storage controller has at least a processor and a cache device for temporarily storing write data from the host computer,
    The cache device is a cache device having a non-volatile storage medium with a limited number of rewrites and an internal cache composed of a volatile storage medium that can be accessed at a higher speed than the non-volatile storage medium,
    The method
    When the storage controller stores write data from the host computer in the cache device, it is a write request for instructing storage of the write data, and the write controller includes information related to the characteristics of the write data Issue a request to the cache device;
    When the cache device receives the write request,
    Determining whether there is an unused area in the internal cache for storing write data associated with the write request;
    If the unused area does not exist, after the data stored in the internal cache having high internal destage priority associated with the data is moved to the nonvolatile storage medium, the write Reserve the unused area to store the write data accompanying the request,
    Write data associated with the write request is stored in the reserved unused area, and the internal destage priority of the write data is determined from information related to the characteristics of the write data, and the internal destage priority is determined. Storing in association with the write data;
    A method of controlling a storage apparatus, characterized by executing processing.
  12.  前記ストレージコントローラは、前記ライトデータの特性に関する情報として、ライトデータがシーケンシャルアクセスデータであるかランダムアクセスデータであるかを示す情報を、前記ライト要求に含ませて、前記キャッシュ装置に発行し、
     前記キャッシュ装置は、前記ライト要求に伴うライトデータを前記確保された前記未使用の領域に格納する際、前記ライトデータの特性に関する情報がシーケンシャルアクセスデータであることを示す情報であった場合、前記ライト要求に伴うライトデータの前記内部ディステージ優先度は低いと決定し、前記ライトデータの特性に関する情報がランダムアクセスデータであることを示す情報であった場合、前記ライト要求に伴うライトデータの前記内部ディステージ優先度は高いと決定することを特徴とする、
    請求項11に記載のストレージ装置の制御方法。
    The storage controller includes information indicating whether the write data is sequential access data or random access data as information related to the characteristics of the write data, and includes the write request to issue to the cache device,
    When the cache device stores the write data associated with the write request in the reserved unused area, the information regarding the characteristics of the write data is information indicating that it is sequential access data. When the internal destage priority of the write data accompanying the write request is determined to be low, and the information regarding the characteristics of the write data is information indicating that it is random access data, the write data of the write data accompanying the write request The internal destage priority is determined to be high,
    The method of controlling a storage apparatus according to claim 11.
  13.  前記キャッシュ装置は、前記ライトデータに対して最後にアクセスがあった時刻を前記ライトデータに対応付けて記憶しており、
     前記内部キャッシュに、前記ライト要求に伴うライトデータを格納するための未使用の領域が存在せず、かつ前記内部キャッシュに格納された前記ライトデータの中に、前記ライトデータに対応付けられた前記内部ディステージ優先度の高いライトデータが存在しなかった場合、
     前記キャッシュ装置は、前記ライトデータに対応付けられた前記内部ディステージ優先度が低い前記ライトデータの中から、前記ライトデータに最後にアクセスがあった時刻が最も古いデータを前記不揮発記憶媒体へと移動する処理を行うことを特徴とする、
    請求項12に記載のストレージ装置の制御方法。
    The cache device stores the time when the write data was last accessed in association with the write data,
    There is no unused area in the internal cache for storing write data associated with the write request, and the write data stored in the internal cache is associated with the write data. If there is no write data with high internal destage priority,
    The cache device transfers, to the nonvolatile storage medium, data having the oldest access time to the write data from among the write data having a low internal destage priority associated with the write data. It is characterized by performing processing to move,
    The method for controlling a storage apparatus according to claim 12.
  14.  前記キャッシュ装置は、前記ライトデータに対して最後にアクセスがあった時刻を前記ライトデータに対応付けて記憶しており、
     前記キャッシュ装置は、前記内部キャッシュに、前記ライト要求に伴うライトデータを格納するための未使用の領域が存在せず、かつ前記内部キャッシュに格納された前記ライトデータの中に、前記ライトデータに対応付けられた前記内部ディステージ優先度の高いライトデータが存在しなかった場合、
     前記キャッシュ装置は、前記ストレージコントローラに、前記ライトデータの前記最終記憶装置へのディステージが必要である旨を通知し、
     前記ストレージコントローラは、前記通知に応じて、前記キャッシュ装置内の内部キャッシュに格納された前記ライトデータの中から、前記ライトデータに最後にアクセスがあった時刻が最も古いデータを読み出して、前記最終記憶装置へ書き込む処理を行うことを特徴とする、
    請求項12に記載のストレージ装置の制御方法。
    The cache device stores the time when the write data was last accessed in association with the write data,
    The cache device has no unused area in the internal cache for storing write data associated with the write request, and the write data stored in the internal cache includes the write data. If the associated internal destage priority write data does not exist,
    The cache device notifies the storage controller that destaging of the write data to the final storage device is necessary,
    In response to the notification, the storage controller reads, from the write data stored in the internal cache in the cache device, data having the oldest time when the write data was last accessed, A process of writing to a storage device is performed.
    The method for controlling a storage apparatus according to claim 12.
PCT/JP2014/062714 2014-05-13 2014-05-13 Storage device WO2015173889A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/062714 WO2015173889A1 (en) 2014-05-13 2014-05-13 Storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/062714 WO2015173889A1 (en) 2014-05-13 2014-05-13 Storage device

Publications (1)

Publication Number Publication Date
WO2015173889A1 true WO2015173889A1 (en) 2015-11-19

Family

ID=54479461

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/062714 WO2015173889A1 (en) 2014-05-13 2014-05-13 Storage device

Country Status (1)

Country Link
WO (1) WO2015173889A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019133252A (en) * 2018-01-29 2019-08-08 東芝メモリ株式会社 Memory system
CN111865326A (en) * 2020-07-14 2020-10-30 北京灵汐科技有限公司 Data compression method, device, equipment and storage medium
CN114067879A (en) * 2021-10-14 2022-02-18 西安紫光国芯半导体有限公司 3D nonvolatile memory device and data reading method and data writing method thereof

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008015918A (en) * 2006-07-07 2008-01-24 Toshiba Corp Disk drive and disk controller
JP2008217527A (en) * 2007-03-06 2008-09-18 Hitachi Ltd Storage system and data control method
JP2009205335A (en) * 2008-02-27 2009-09-10 Hitachi Ltd Storage system using two kinds of memory devices for cache and method for controlling the storage system
JP2011204060A (en) * 2010-03-26 2011-10-13 Nec Corp Disk device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008015918A (en) * 2006-07-07 2008-01-24 Toshiba Corp Disk drive and disk controller
JP2008217527A (en) * 2007-03-06 2008-09-18 Hitachi Ltd Storage system and data control method
JP2009205335A (en) * 2008-02-27 2009-09-10 Hitachi Ltd Storage system using two kinds of memory devices for cache and method for controlling the storage system
JP2011204060A (en) * 2010-03-26 2011-10-13 Nec Corp Disk device

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019133252A (en) * 2018-01-29 2019-08-08 東芝メモリ株式会社 Memory system
CN111865326A (en) * 2020-07-14 2020-10-30 北京灵汐科技有限公司 Data compression method, device, equipment and storage medium
CN114067879A (en) * 2021-10-14 2022-02-18 西安紫光国芯半导体有限公司 3D nonvolatile memory device and data reading method and data writing method thereof

Similar Documents

Publication Publication Date Title
US10210084B1 (en) Multi-leveled cache management in a hybrid storage system
US7613876B2 (en) Hybrid multi-tiered caching storage system
US9128847B2 (en) Cache control apparatus and cache control method
US9026734B2 (en) Memory system and data deleting method
US20190108120A1 (en) Memory system and method for controlling nonvolatile memory
US9378135B2 (en) Method and system for data storage
US10489295B2 (en) Systems and methods for managing cache pre-fetch
US9063862B2 (en) Expandable data cache
US20140082310A1 (en) Method and apparatus of storage tier and cache management
US20170139825A1 (en) Method of improving garbage collection efficiency of flash-oriented file systems using a journaling approach
US20130185488A1 (en) Systems and methods for cooperative cache management
US20070005894A1 (en) Computer system having logically ordered cache management
TWI761608B (en) Dedupe cache and method thereof
JP2018073040A (en) Memory system
TWI699650B (en) Memory device and computer system
US11747979B2 (en) Electronic device, computer system, and control method
US10635581B2 (en) Hybrid drive garbage collection
KR102304130B1 (en) Segment cleaning method using non-volatile random access memory and memory management apparatus thereof
JP2015191654A (en) Data storage device and method
WO2007146845A2 (en) Configurable and scalable hybrid multi-tiered caching storage system
WO2015173889A1 (en) Storage device
JP6595654B2 (en) Information processing device
US9734067B1 (en) Write buffering
US20200151098A1 (en) Write buffering
CN113778324A (en) Data storage device and operation method thereof

Legal Events

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

Ref document number: 14892087

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14892087

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP