WO2016002325A1 - 情報処理システム、情報処理方法、記憶制御装置およびその制御方法と制御プログラム - Google Patents

情報処理システム、情報処理方法、記憶制御装置およびその制御方法と制御プログラム Download PDF

Info

Publication number
WO2016002325A1
WO2016002325A1 PCT/JP2015/062435 JP2015062435W WO2016002325A1 WO 2016002325 A1 WO2016002325 A1 WO 2016002325A1 JP 2015062435 W JP2015062435 W JP 2015062435W WO 2016002325 A1 WO2016002325 A1 WO 2016002325A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
write
virtual
medium
storage
Prior art date
Application number
PCT/JP2015/062435
Other languages
English (en)
French (fr)
Inventor
周吾 小川
Original Assignee
日本電気株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Priority to JP2016531165A priority Critical patent/JPWO2016002325A1/ja
Publication of WO2016002325A1 publication Critical patent/WO2016002325A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • 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

Definitions

  • the present invention relates to an information processing system, an information processing method, a storage control device, a control method thereof, and a control program.
  • HDDs Hard Disk Drives
  • SSDs Solid State Drives
  • Patent Literature 1 and Patent Literature 2 are generally called FTL (Flash Translation Layer), and disclose a technique for performing mapping processing in NAND flash block units in SSD. Specifically, by dynamically mapping the storage area of the NAND flash in a state where no data is stored in the logical address space provided by the SSD, the data is stored in different blocks for each update to the stored data at the same address. Is stored.
  • FTL Flash Translation Layer
  • Non-Patent Document 1 and Non-Patent Document 2 show mapping methods for solving the problems that occur in the NAND flash block unit and page unit mapping in FTL, respectively.
  • mapping in units of blocks is basically performed, but mapping in units of pages is performed for logical addresses to which random write access having a size smaller than the block is performed.
  • the processing efficiency for random writing is improved while suppressing an increase in the capacity of the mapping table.
  • Non-Patent Document 3 describes a technique for improving access performance by using a part of a storage area as a logical cache for an HDD and storing Write access data smaller than a certain size in a write-once format. It is shown.
  • Non-Patent Document 3 data written to the HDD is temporarily stored in the cache area, and when the load due to the access request is eliminated, the data is originally written to the area where the data should be stored.
  • the amount of write data when storing random write data for the first time has been reduced, but the amount of write data throughout the entire storage process, including the process of re-storing temporarily stored data, has been reduced. Not done.
  • An object of the present invention is to provide a technique for solving the above-described problems.
  • a storage control device provides: Receiving means for receiving a data write instruction to the virtual medium by the host computer; In accordance with the data write instruction, the current write data amount and the future indicate whether to write data into the address space of the virtual medium or the address space of the virtual cache generated corresponding to the virtual medium.
  • Write address selection means for selecting in consideration of the total amount of generated write data; and According to the selection by the write address selection means, the write address to the virtual medium or the write address to the virtual cache is converted into a write address for the storage medium, and data is written to the storage medium.
  • a storage control device control method provides: A receiving step of receiving a data write instruction to the virtual medium by the host computer; In accordance with the data write instruction, the current write data amount and the future indicate whether to write data into the address space of the virtual medium or the address space of the virtual cache generated corresponding to the virtual medium.
  • a write address selection step to select in consideration of the total amount of generated write data; and According to the selection in the write address selection step, the write address to the virtual medium or the write address to the virtual cache is converted into the write address for the storage medium, and the data is written to the storage medium.
  • a writing instruction step for instructing including.
  • a storage control device control program provides: A receiving step of receiving a data write instruction to the virtual medium by the host computer; In accordance with the data write instruction, the current write data amount and the future indicate whether to write data into the address space of the virtual medium or the address space of the virtual cache generated corresponding to the virtual medium.
  • a write address selection step to select in consideration of the total amount of generated write data; and According to the selection in the write address selection step, the write address to the virtual medium or the write address to the virtual cache is converted into the write address for the storage medium, and the data is written to the storage medium.
  • an information processing system provides: A host computer; A storage medium; A storage control device for controlling access to the storage medium by the host computer; With The storage controller is Receiving means for receiving a data write instruction to the virtual medium by the host computer; In accordance with the data write instruction, the current write data amount and the future indicate whether to write data into the address space of the virtual medium or the address space of the virtual cache generated corresponding to the virtual medium.
  • Write address selection means for selecting in consideration of the total amount of generated write data; and According to the selection by the write address selection means, the write address to the virtual medium or the write address to the virtual cache is converted into the write address for the storage medium, and the data is transferred to the storage medium.
  • an information processing method includes: An issuing step in which the host computer issues a data read instruction from the virtual medium or a data write instruction to the virtual medium; In accordance with the data write instruction, the current write data amount and the future indicate whether to write data into the address space of the virtual medium or the address space of the virtual cache generated corresponding to the virtual medium.
  • a write address selection step to select in consideration of the total amount of generated write data; and Write to write data to the storage medium by converting the write address to the virtual medium or the write address to the virtual cache into a write address for the storage medium according to the selection in the write address selection step Steps, including.
  • FIG. 1 is a block diagram illustrating a configuration of a storage control device according to a first embodiment of the present invention. It is a block diagram which shows the structure of the information processing system which concerns on 2nd Embodiment of this invention. It is a block diagram which shows the function structure of the storage control apparatus which concerns on 2nd Embodiment of this invention. It is a figure which shows the structure of the buffer memory which concerns on 2nd Embodiment of this invention. It is a figure which shows the structure of the virtual medium mapping table which concerns on 2nd Embodiment of this invention. It is a figure which shows the structure of the virtual cache mapping table which concerns on 2nd Embodiment of this invention.
  • SSD Solid State Drive
  • the SSD has a function of dynamically mapping a NAND flash to the outside of a storage medium and a function of equalizing the number of updates between storage areas.
  • a storage control device 100 as a first embodiment of the present invention will be described with reference to FIG.
  • the storage control device 100 is a device that controls an access address to a storage medium.
  • the storage control device 100 includes a receiving unit 110, a write address selection unit 120, and a write instruction unit 130.
  • the receiving unit 110 receives a data write instruction 111 to the virtual medium from the host computer 101.
  • the write address selection unit 120 determines whether to write data in the address space 121 of the virtual medium or the address space 122 of the virtual cache generated corresponding to the virtual medium. The selection is made in consideration of the total amount 123 of the current write data amount and the future write data amount.
  • the write instruction unit 130 converts the write address 131 to the virtual medium or the write address 132 to the virtual cache into the write address 133 for the storage medium 103 according to the selection by the write address selection unit 120, and stores it. An instruction to write data on the medium 103 is given.
  • the storage process for the storage medium The entire amount of write data can be reduced.
  • the information processing system including the storage control device according to the present embodiment determines whether to write to a virtual storage medium (virtual medium) and to a virtual cache (virtual cache), and to determine the usage status and load of the virtual cache
  • the storage destination is determined based on the result. Further, data movement is determined based on the usage status of the virtual cache, the load determination result, and the like. Furthermore, it has a virtual cache pointer and stores storage areas in the cache.
  • the host accessing the SSD does not use the information regarding the hardware configuration of the SSD, the accurate information regarding the operation of the controller, and the usage status of the storage area for storing the random write data in the SSD.
  • a configuration for minimizing the amount of data written to the NAND flash in the SSD is provided.
  • a virtual storage medium (virtual medium) and a virtual cache (virtual cache) are defined in the logical address space representing the storage area of the SSD.
  • a storage area allocation unit from the SSD for a virtual storage medium and a virtual cache is defined in advance as a virtual block (hereinafter, vBlock).
  • the minimum unit of data storage for a virtual storage medium and a virtual cache is defined as a virtual page (hereinafter referred to as vPage).
  • the vBlock includes n pages (n is a natural number) having consecutive addresses.
  • the size of vPage and vBlock is preferably equal to the size of the data body stored in the NAND flash page in the SSD and the data size stored in the block, but for example, n times 2 (n is a natural number) Even with the size, it can be expected to reduce the amount of write to NAND flash.
  • a virtual medium to which a logical address of SSD is mapped in a host and a means for constructing a virtual cache for the virtual medium. Then, in order to minimize the data to be written according to the nature of the write access from the host, the storage location of the write data is set to the virtual medium by using auxiliary information regarding the subsequent write request from the software, the OS, and A means for optimally selecting from a virtual cache is provided. Furthermore, a configuration is provided in which stored data is optimally moved so as to minimize the amount of write data between the virtual medium and the virtual cache in accordance with the usage status of the storage areas in the virtual medium and the virtual cache.
  • the cache hit indicates whether the data is read from the virtual storage medium address space or the virtual cache address space.
  • the read address is selected based on whether or not it has been done. Then, according to the read selection, the read address for the virtual storage medium or the read address for the virtual cache is converted into the read address for the storage medium, and a read instruction is given to read data from the storage medium. .
  • the NAND flash which is an SSD storage element, requires an operation called Erase that erases old stored data when updating data.
  • Erase an operation called Erase that erases old stored data when updating data.
  • the Erase for the NAND flash is generally larger than a unit called a page for reading and writing, and needs to be performed in a unit called a block including a plurality of pages. Therefore, when updating data stored in a NAND flash page, it is necessary to save and re-store data so that other pages included in the same block are not lost by Erase.
  • a typical SSD hides the problem of life-time consumption associated with access operations specific to NAND flash and block erase so that access can be performed using a common interface and protocol with conventional storage media such as HDDs. . Specifically, by dynamically mapping the storage area of the NAND flash in a state where no data is stored in the logical address space provided by the SSD, the data is stored in different blocks for each update to the stored data at the same address. Is stored.
  • mapping in units of blocks is basically performed, but mapping in units of pages is performed for logical addresses to which random write access having a size smaller than the block is performed.
  • the FTL has a role of concealing the access processing specific to the NAND flash and the optimization for the random write access accompanied with many processes in the NAND flash. Therefore, the host accessing the SSD can access without knowing the access unit such as the NAND flash access characteristics, the page, the block size, and the internal configuration information of the SSD.
  • the capacity of NAND flash has increased in recent years.
  • the capacity of SSD has increased.
  • the number of times that data can be updated is reduced due to the miniaturization of the manufacturing process for increasing the capacity of the NAND flash and the increase in the amount of information stored in the memory cell.
  • the NAND flash called MLC (Multi Level Cell) or TLC (Triple Level Cell) which has been used in SSDs in recent years, has multi-valued bits stored in memory cells, has a large capacity,
  • the number of renewable times is limited while realizing low cost.
  • the data update frequency for the SSD that is, the reduction of the amount of write data is particularly important from the viewpoint of not only performance but also life and reliability.
  • the FTL so as to perform mapping in units of stripes composed of blocks or pages in a plurality of NAND flashes that can be accessed in parallel.
  • mapping in units of stripes continuous access performance can be improved and the capacity of the mapping table can be reduced.
  • the mapping unit for the logical address becomes large. For this reason, as the stripe size increases, the proportion of write accesses having a size smaller than the FTL mapping unit increases. When a write access smaller than the mapping unit is performed, a copy of peripheral data corresponding to the write data storage destination occurs in the SSD, and the write access to the NAND flash increases.
  • random write data for NAND flash is used to prevent an increase in the amount of write due to GC or merge that occurs in storage area reuse. It is necessary to grasp the amount of use of the storage area for storing.
  • these pieces of information are normally managed in the FTL inside the SSD, it is also a problem that it is difficult to grasp from the software and OS operating on the host side.
  • the software that writes to the SSD from the host grasps in advance information such as whether each write access is continuous, random, or how often it is updated by the subsequent write access. Therefore, it is possible to efficiently determine and manage the storage area.
  • it is difficult for the FTL that stores data to the NAND flash in the SSD to know whether the written data is continuous or random.
  • the SSD hardware configuration, the accurate information on the operation of the controller, and the information on the usage status of the storage area for storing the random write data in the SSD are not used from the access source host. Minimize the amount of data written to the NAND flash.
  • a virtual storage medium (virtual medium) and a virtual cache (virtual cache) are defined on the logical address space of the storage medium.
  • the storage control device includes a mapping function, an access execution function, a hit determination function, a cache usage status management function, a load determination function, a processing order determination function, a storage destination determination function, a data movement function, And a storage medium access function.
  • mapping function manages the mapping of the logical address space of the storage medium to the virtual medium and the virtual cache. That is, the mapping function defines a virtual storage medium (virtual medium) and a virtual cache (virtual cache) on the logical address space of the storage medium.
  • LA Logical Address
  • VDA Virtual Drive Address
  • VCA Virtual Cache Address
  • the virtual medium operates as a virtual storage medium that can be referred to by software and OS on the host. That is, the user accesses the virtual medium using VDA.
  • the virtual cache is invisible to the software on the host and operates as a cache for the virtual medium. Further, the virtual cache has a role of reducing the amount of internal write data generated due to the characteristics of the storage medium by storing write data smaller than the written fine vBlock instead of the virtual medium.
  • the mapping function allocates the LA of the storage medium in units of vBlocks to the VDA of the virtual medium and the VCA of the virtual cache.
  • the access execution function receives an access request from the host, manages the execution status of the process, and returns a result.
  • the access execution function receives a read / write request for the virtual medium from the software and the OS, and performs necessary access processing for the storage medium. Further, the execution status of access is managed, and a response to the execution completion of the processing related to the access request is sent to the host. Further, the access execution function receives the write request and the predicted value of the continuous write size including the subsequent write request and the predicted update frequency by the subsequent write request by the OS and the software that is the access request source.
  • the hit determination function determines a cache hit in the virtual cache. That is, the hit determination function determines whether data corresponding to an access request from the host is stored in the virtual cache. It also manages the mapping information of the VCA in the virtual cache that stores the data corresponding to the VDA of the virtual medium used in the determination.
  • the cache usage status management function manages the corresponding address on the virtual medium of each data stored on the virtual cache. That is, the cache usage status management function manages the valid / invalid state of stored data for each VCA of the virtual cache and the correspondence of the VDA of the virtual medium to which each data corresponds.
  • the cache usage status management function manages the size of the storage area allocated to the virtual cache and the distribution of storage of cache data in the storage area.
  • the load determination function determines the load on the storage medium from the usage amount of the virtual cache. In other words, the load determination function calculates the amount of data that can be stored from the size of the storage area allocated to the virtual cache and the storage state of the cache data in the storage area until the GC processing for the virtual medium is required. When the amount of data decreases compared to a predetermined condition, it is determined that the load state is present. The load determination function notifies the load state to the software and OS operating on the host.
  • the processing order determination function determines a host write request to be processed next.
  • the processing order determination function uses the information on the issuance and issuance of the write request for the subsequent VDA predicted from the software and the OS for the write on the host and the software on the host, and the prediction for the update.
  • the processing priority is calculated, and the write request with the highest priority is selected as the next processing target.
  • the storage destination determination function determines the storage destination address from either the virtual medium or the virtual cache for the write data to be stored. That is, the storage destination determination function temporarily stores the write data in the virtual cache for the write request selected by the processing order determination function, or stores it in the specified storage destination VDA of the virtual medium without going through the virtual cache. Decide whether to store. When the write data is temporarily stored in the virtual cache, the storage destination determination function determines the storage destination VCA of the write data in the virtual cache.
  • the storage destination determination function refers to the predicted value of the continuous write size and overwrites the LA of the storage medium that has been allocated as the VDA of the virtual medium or newly through the mapping function The storage location of the write data is determined so that the storage area assigned as the storage location is the write destination.
  • the data movement function moves data stored in the virtual cache to a virtual medium or another area of the virtual cache. That is, when the load determined by the load determination function increases and a certain condition is satisfied, the data movement function selects data to be moved from the data stored in the virtual cache, and sets the movement destination as a virtual medium. Alternatively, it is determined from another area of the virtual cache.
  • the storage medium access function accesses the storage medium. That is, the storage medium access function receives an instruction from the access execution function and the data movement function, issues an access request to the storage medium, and acquires a result when a read access is performed.
  • the method according to the present embodiment does not use the information regarding the hardware configuration and the operation of the controller for the SSD in which optimization for random write access is insufficient. Reduce data movement between NAND flashes that occur in Further, by visualizing the data amount of the random write request issued to the SSD from the host, it is possible to prevent a sudden load increase inside the SSD due to area management processing such as Garbage Collection.
  • FIG. 2A is a block diagram illustrating a configuration of the information processing system 200 including the storage control unit 220 according to the present embodiment.
  • the configuration of the entire system includes one or more host computers 210 that access data, a storage medium 240, and a network 250 that connects the host computer 210 and the storage medium 240.
  • the storage medium 240 is composed of a single storage medium or a plurality of storage media such as an SSD configured by NAND flash, for example.
  • the storage control unit 220 defines a virtual medium 241 and a virtual cache 242 as virtual storage media in the storage area of the storage medium 240.
  • a storage area allocation unit from the storage medium 240 to the virtual medium 241 and the virtual cache 242 is defined in advance as a virtual block (vBlock).
  • the minimum unit of data storage for the virtual medium 241 and the virtual cache 242 is defined as a virtual page (vPage).
  • the vBlock includes n pages (n is a natural number) having consecutive addresses.
  • the storage control unit 220 is mounted on the host computer 210, and either the virtual medium 241 or the virtual cache 242 is received upon access to the virtual storage medium from the OS 211 or software (application) 212. Address control is performed so that the storage area of the allocated storage medium 240 is accessed.
  • the form of the network 250 is not particularly limited, and may be a form in which the host computer 210 and the storage medium 240 are directly connected.
  • the host computer 210 may be configured by a plurality of devices or systems connected by the network 250.
  • FIG. 2A only the virtual medium 241 and the virtual cache 242 are illustrated as the storage medium 240, but when the storage medium 240 is an SSD configured with NAND flash, FTL (Flash Translation Layer) or the like The mapping process is performed, and those existing technologies are not shown.
  • NAND flash NAND flash
  • FTL Flash Translation Layer
  • FIG. 2B is a block diagram illustrating a functional configuration of the storage control unit 220 according to the present embodiment.
  • the storage control unit 220 includes a buffer memory 221, a mapping unit 222, an access execution unit 223, a hit determination unit 224, a cache usage status management unit 225, a load determination unit 226, and a processing order.
  • a determination unit 227, a storage destination determination unit 228, a data migration unit 229, a storage medium access unit 230, and a virtual cache pointer 231 are provided.
  • the configuration and operation of these functional components will be described in detail.
  • the buffer memory 221 holds data to be written until writing to the storage medium 240 is completed in response to a write request from software or an OS operating on the host computer 210. Further, the buffer memory 221 holds a predicted value of a continuous write size including a subsequent write request and a predicted value of a frequency updated by the subsequent write request by software or OS that is an access request source.
  • the buffer memory 221 may be a non-volatile memory device such as an MRAM (Magnetoresistive Random Access Memory) in addition to a DRAM (Dynamic Random Access Memory) that is currently widely used as a memory of the host computer 210.
  • FIG. 3 is a diagram showing a configuration of the buffer memory 221 according to the present embodiment.
  • FIG. 3 illustrates an outline 310 of the configuration of the buffer memory 221 and a table configuration 320 of the buffer memory 221.
  • the buffer memory 221 is a logical address (VDA) of a write destination in the virtual medium 241.
  • the write destination address 311 and the corresponding write data 312 are stored.
  • a predicted write size 313 including a subsequent write request and a data update frequency 314 that is a predicted value of the frequency updated by the subsequent write request by the software or OS that is the access request source are stored.
  • the write requested data in the buffer memory 221 is not limited to the format shown in FIG. In the table structure 320, for example, in order to determine the processing order of the stored write data using the time of the access request, in addition to the access request time 323 that is the time information when the access request is received, it is used or free
  • the mapping unit 222 defines a logical address (VDA) space of the virtual medium 241 and a logical address (VCA) space of the virtual cache 242. Further, the allocation of the LA of the storage medium 240 to the VDA and VCA spaces is managed as a mapping.
  • the mapping unit 222 allocates the storage area of the storage medium 240 connected to the host computer 210 to the virtual medium 241 and the virtual cache 242 in units of LA vBlocks. Also, the mapping unit 222 manages whether data has been stored for each vPage included in the vBlock for each vBlock corresponding to the VDA and VCA.
  • the storage areas allocated to the virtual medium 241 and the virtual cache 242 may be made variable by releasing or reallocating the storage area in the same unit as when allocated.
  • FIG. 4 and 5 are diagrams showing configurations of the virtual medium mapping table 400 and the virtual cache mapping table 500 according to the present embodiment.
  • the numerical value described in FIG. 4 and FIG. 5 is an example, and is not limited to this.
  • the virtual medium mapping table 400 stores the LA of each vBlock of the storage medium 240 assigned to the VDA of the virtual medium 241. Also, the virtual medium mapping table 400 stores the number of vPages that have been written from the beginning for each vBlock. Similarly, the virtual cache mapping table 500 also stores the vBlock LA of the storage medium 240 and the number of vPages already written from the top of each vBlock, which are allocated to each VCA of the virtual cache 242. When there are a plurality of storage media 240, although not shown in FIGS. 4 and 5, an ID for identifying each storage medium is stored together with LA.
  • the data formats of the virtual medium mapping table 400 and the virtual cache mapping table 500 are not limited to the formats shown in FIGS. 4 and 5.
  • the identifier indicating access to the storage medium 240 is not limited to a numeric ID, and can be arbitrarily set.
  • the format is acceptable. 4 and 5, regarding vBlocks allocated to the virtual medium 241 and the virtual cache 242, whether or not data has been stored for each vPage included in the vBlock, is written from the beginning of the vBlock. Management is performed by the number of However, for example, it may be managed whether or not data has been written to each vPage using a bitmap. Further, in FIGS. 4 and 5, it is managed whether or not data has been stored for all vBlocks assigned to the virtual medium 241 and the virtual cache 242, but only some vBlocks that have been recently written are managed. May be managed.
  • the access execution unit 223 receives access requests from software operating on the host computer 210 and the OS, and performs necessary access processing on the storage medium 240. In addition, the access execution unit 223 obtains the predicted value of the continuous write size including the subsequent write request and the predicted value of the frequency updated by the subsequent write request by the software or OS as the access request source together with the write request. receive. When the storage control unit 220 can calculate the predicted value of the continuous write size and the predicted value of the updated frequency, the access execution unit 223 needs to receive the predicted value of the continuous write size and the predicted value of the updated frequency. Absent.
  • the access execution unit 223 checks whether or not the write data stored in the buffer memory 221 is hit, and if it is hit, reads the data from the buffer memory 221. To return the result. If the write data stored in the buffer memory 221 has not been hit, the hit determination unit 224 checks whether the virtual cache 242 has been hit. When the virtual cache 242 is hit, the address translation is performed through the mapping unit 222 using the VCA of the virtual cache 242, the requested data is read from the storage medium 240 through the storage medium access unit 230, and the result is returned.
  • the address translation is performed through the mapping unit 222 using the VDA of the virtual medium 241 of the access request, the requested data is read from the storage medium 240 through the storage medium access unit 230, and the result is obtained. return.
  • the access execution unit 223 stores Write data in the buffer memory 221. Thereafter, after the processing order determination unit 227 determines the write target, the VCA of the virtual cache 242 or the VDA of the virtual medium 241 that is the storage destination of the write data is determined via the storage destination determination unit 228.
  • the access execution unit 223 obtains the LA of the corresponding storage medium 240 from the VDA of the virtual medium 241 via the mapping unit 222 and stores it in the storage medium 240 via the storage medium access unit 230. Also, information indicating whether or not data has been stored for each vPage included in the vBlock that is the data storage destination in the virtual medium mapping table 400 is updated via the mapping unit 222. In addition, the hit determination unit 224 and the cache usage status management unit 225 are instructed to reflect the write and notify the completion. Finally, the access execution unit 223 deletes the write data that has been stored in the storage medium 240 from the buffer memory 221.
  • the hit determination unit 224 determines whether the access request is stored in the virtual cache 242 and responds with a determination result.
  • the hit determination unit 224 manages the VDA of the virtual medium 241 corresponding to each data stored in the virtual cache 242. Then, the hit determination unit 224 stores the new data in the virtual cache 242 and moves the data from the virtual cache 242 to the virtual medium 241 to store the VDA on the virtual medium 241 and the cached data.
  • the VCA in the virtual cache 242 is updated.
  • FIG. 6 is a diagram showing a configuration of the hit determination table 600 according to the present embodiment.
  • the hit determination table 600 is used for hit determination in the hit determination unit 224.
  • the hit determination table 600 stores the VDA of the virtual medium 241 corresponding to the data stored in the cache.
  • the hit determination table 600 stores the number of vPages cached for each vBlock of the virtual medium 241 (see 601). Then, as many vPages as are cached, a set of vPage VDA 603 in the virtual medium and vPage VCA 604 in the virtual cache are linked (see 602).
  • the hit determination table 600 in FIG. 6 has a hash table format in which vPages in the same vBlock have the same hash value in the virtual medium 241, but is not limited to the data format in FIG.
  • the cache usage status management unit 225 manages the valid or invalid state of the stored data in each VCA of the virtual cache 242 and the correspondence relationship of the VDA in the virtual medium 241 with respect to each valid data. Further, the cache usage status management unit 225 manages the effective cache data amount for each area of a certain size as distribution information of effective cache data in the VCA space of the virtual cache 242. Further, the cache usage status management unit 225 records the capacity of the storage area of the storage medium 240 allocated to the virtual cache 242.
  • FIG. 7A is a diagram showing a configuration of the valid data table 700 according to the present embodiment.
  • the valid data table 700 is referred to by the cache usage status management unit 225.
  • the valid data table 700 records the vDA of the vPage in the virtual medium 241 corresponding to the VCA of each vPage in the virtual cache 242 and the number of valid vPages for each vBlock.
  • the data format of the valid data table 700 is not limited to the format shown in FIG. 7.
  • the number of valid vPages and the capacity of the storage area of the storage medium 240 allocated to the virtual cache 242 are managed in units other than vBlock. May be.
  • the load determination unit 226 refers to the valid data table 700 via the cache usage status management unit 225 and acquires the total cache data capacity effective in the VCA space of the virtual cache 242.
  • the load determination unit 226 determines that the virtual cache 242 is in a high load state when the acquired capacity exceeds a predetermined reference capacity.
  • the determination of the high load state may be made when the ratio of the effective data amount stored in the virtual cache 242 to the storage capacity allocated to the virtual cache 242 exceeds a threshold value.
  • the load determination unit 226 determines that the load is high, the load determination unit 226 notifies the software or OS that accesses the virtual medium 241 that operates on the host computer 210 of the high load state by a ratio notification or the like, and the high load state Encourage suppression of the frequency of issuing Write requests so that the state is resolved.
  • the load determination unit 226 adds capacity of the virtual cache 242 when the determined load is high. Specifically, in the virtual cache mapping table 500 of the mapping unit 222, a new entry is defined for the VCA of the virtual cache 242 for which no corresponding entry exists and the storage area is not allocated. Then, among the vBlocks of the storage medium 240, one that is not allocated to either the virtual medium 241 or the virtual cache 242 is selected, and the corresponding LA is stored in the defined entry.
  • the load determination unit 226 reduces the capacity of the virtual cache 242 when the determined load is low. Specifically, with reference to the valid data table 700, a vBlock with a small number of valid vPages on the VCA of the virtual cache 242 is selected, and the data mover 229 is instructed to move the data stored in the vBlock.
  • the load determination unit 226 accesses the virtual cache mapping table 500 of the mapping unit 222 after deleting the data stored in the vBlock by the data moving unit 229, deletes the entry corresponding to the vBlock, and stores the storage medium Release 240 vBlocks.
  • the processing order determination unit 227 selects data to be stored next in the virtual medium 241 or the virtual cache 242 among the write data stored in the buffer memory 221. Specifically, the number of vPages occupied when each write data is written to the virtual medium 241 and the write data corresponding to the predicted value of the access length of the continuous write data stored together with the write data in the buffer memory 221 are stored. The number of vPages occupied when the virtual medium 241 is written after arrival is compared. As a result of the comparison, the write data having the largest number of vPages occupied by the write data in the vBlock is selected from the write data having the same number of vPages.
  • the number of vPages scheduled to be occupied obtained from the predicted access length of the continuous write data received with the write request and the current write data Compare the number of vPages occupied by and select the write data with the smallest difference in the number of vPages. In other words, if you write before the next write data arrives, the same vBlock will be updated many times. Write to 241 (or virtual cache 242).
  • the storage destination determination unit 228 temporarily stores in the virtual cache 242 the write request that is the next processing target selected by the processing order determination unit 227 by the request from the access execution unit 223 or directly stores it in the virtual medium 241. Decide whether to store. Specifically, the total write amount to the storage medium 240 from the predicted value of the access length of the continuous write data by the access source software and the OS and / or the predicted value of the frequency at which the write data is updated by the subsequent write request. Find the expected value of. One is an expected value of the total write amount to the storage medium 240 when the write data is finally written to the virtual medium 241 by the data moving unit 229 via the virtual cache 242.
  • the other is an expected value of the total amount of writing to the storage medium 240 when writing to the virtual medium 241 directly without going through the virtual cache 242. Then, the storage destination determination unit 228 selects, as the storage destination, either the virtual cache 242 or the virtual medium 241 that has a smaller write amount expected value.
  • FIG. 7B is a diagram showing a configuration of the storage location determination table 710 according to the present embodiment.
  • the storage location determination table 710 in FIG. 7B includes a condition table 711 that stores conditions for determining the storage location, and a determination table 712 that is temporarily generated in the memory to determine the storage location.
  • the condition table 711 stores the condition whether the load determined by the load determination unit 226 is equal to or less than the reference value ⁇ , the expected value of the total write amount for the storage medium when stored directly in the virtual medium, and the virtual cache.
  • 4 is a table showing the conditions for determining the storage destination from the comparison result with the expected value of the total write amount for the storage medium when stored in the virtual medium after the storage.
  • the load of the virtual cache 242 exceeds the reference value ⁇
  • storage in the virtual medium 241 is directly determined without considering the condition of the expected total write amount for the storage medium.
  • condition table 711 is prepared in the storage and is read into the memory when the storage destination is determined.
  • the determination table 712 is temporarily stored in the memory and used for determining the storage location.
  • FIG. 7B shows a plurality of write requests in order to clarify the operation of determining the storage destination, but only one write request is temporarily stored in the memory.
  • the determination table 712 is directly stored in the virtual medium calculated based on the write request contents of each ID, the predicted write size, and the update frequency determined and read from the buffer memory 221 by the processing order determination unit 227. In this case, the expected value of the total write amount for the storage medium and the expected value of the total write amount for the storage medium in the case of moving to the virtual medium once stored in the virtual cache are stored.
  • the comparison result between the load determined by the load determination unit 226 and the reference value ⁇ , the expected value of the total write amount for the storage medium when directly stored in the virtual medium, and the virtual medium are temporarily stored in the virtual cache.
  • the storage location determined in consideration of the result of comparison with the expected value of the total write amount for the storage medium when moving to, or other conditions is stored.
  • the conditions for determining the storage location and the combination thereof are not limited to the above example.
  • the size of the write data stored in the virtual cache may be limited according to the load value. In that case, as the load value ⁇ increases, the write data having a large size prediction value is directly written to the virtual medium. In addition, it is conceivable that Writes of a certain size or larger are directly stored in a virtual medium regardless of the load value.
  • the storage destination determination unit 228 When the storage destination is determined as the virtual medium 241, the storage destination determination unit 228 returns the VBlock VDA designated as the storage destination to the access execution unit 223 as the storage destination determination result.
  • the storage destination determination unit 228 waits for information from the virtual cache pointer 231 that records the VCA of the storage destination vBlock.
  • the storage destination is the virtual cache 242
  • the storage destination determination unit 228 acquires the VCA of the vBlock that is storing data from the virtual cache pointer 231.
  • the storage location determination unit 228 specifies the vPage closest to the top among the vPages that should store the next Write data in the vBlock by the mapping unit 222 and does not store the data, and sends it to the access execution unit 223.
  • the VCA corresponding to the vPage is returned as the storage destination determination result.
  • the storage destination determination unit 228 refers to the valid data table 700 via the cache usage status management unit 225 when data has already been stored in all pages of the vBlock including the vPage. Then, the vBlock with the smallest number of vPages storing valid data in the vBlock of the virtual cache 242 is selected, and the virtual cache pointer 231 is updated with the VCA of the vBlock.
  • the data migration unit 229 starts selecting data to be migrated from the virtual cache 242 to the virtual medium 241 when the load determined by the load determination unit 226 increases and satisfies a certain condition.
  • the data moving unit 229 refers to the hit determination table 600 of the hit determination unit 224 for each area of the vBlock unit on the VDA space of the virtual medium 241.
  • attention is focused on the vBlock of the virtual medium 241 that has the largest amount of data (number of vPages) cached in the virtual cache 242.
  • the data moving unit 229 selects all the valid vPages stored in the vBlock focused on the virtual medium 241 from the vPages in the virtual cache 242 as movement targets.
  • the data moving unit 229 acquires the LA of the storage medium 240 indicating vPage and vBlock by the mapping unit 222, and instructs the storage medium access unit 230 to move data for the vBlock indicated by LA. Thereafter, the data migration unit 229 updates the management information related to the vPage of the virtual cache 242 that is the target of data migration via the mapping unit 222, the hit determination unit 224, and the cache usage status management unit 225.
  • the data mover 229 moves data from the virtual cache 242 to the virtual medium 241 or moves to a different vBlock in the virtual cache 242 for the vBlock specified by the VCA of the virtual cache 242 from the load determination unit 226.
  • the data moving unit 229 acquires the LA of the storage medium 240 indicating the vPage and the vBlock by the mapping unit 222 and instructs the storage medium access unit 230 to move the data for the vBlock indicated by the LA To do.
  • the data migration unit 229 updates the management information related to the vPage of the virtual cache 242 that is the target of data migration via the mapping unit 222, the hit determination unit 224, and the cache usage status management unit 225.
  • the storage medium access unit 230 issues an access request to the storage medium 240 in response to instructions from the access execution unit 223 and the data movement unit 229.
  • the Read result is returned to the access execution unit 223 or the data movement unit 229 that has issued the access instruction.
  • FIG. 8A is a block diagram showing a hardware configuration of the host computer 210 including the storage control unit 220 according to the present embodiment.
  • the storage control unit 220 is illustrated as software processing of the host computer 210, but the storage control unit 220 may be realized by a one-chip computer independent of the host computer 210.
  • a CPU (Central Processing Unit) 810 is a processor for arithmetic control, and implements a functional configuration unit of the storage control unit 220 in FIG. 2B by executing a program.
  • a ROM (Read Only Memory) 820 stores fixed data and programs such as initial data and programs.
  • the communication control unit 830 communicates with the storage medium 240 via the network 250. Note that the number of CPUs 810 is not limited to one, and may be a plurality of CPUs or may include a GPU for image processing.
  • the communication control unit 830 preferably includes a CPU independent of the CPU 810 and writes or reads transmission / reception data in a RAM (Random Access Memory) 840 area.
  • the input / output interface 860 preferably has a CPU independent of the CPU 810 and writes or reads input / output data to / from the area of the RAM 840. Therefore, the CPU 810 recognizes that the data has been received or transferred to the RAM 840 and processes the data. Further, the CPU 810 prepares the processing result in the RAM 840 and leaves the subsequent transmission or transfer to the communication control unit 830, the DMAC, or the input / output interface 860.
  • the RAM 840 is a random access memory that the CPU 810 uses as a work area for temporary storage.
  • the RAM 840 has an area for storing data necessary for realizing the present embodiment.
  • the buffer memory 221 buffers access to the virtual storage medium from software or the OS.
  • the virtual medium mapping table 400 is a table for mapping the address (VDA) of the virtual medium 241 to the address (LA) of the storage medium 240.
  • the virtual cache mapping table 500 is a table for mapping the address (VCA) of the virtual cache 242 to the address (LA) of the storage medium 240.
  • the virtual cache pointer 231 stores an address to be stored next to the virtual cache.
  • the hit determination table 600 is a table that determines whether or not the access to the virtual storage medium is data entered in the virtual cache 242 and provides the address (VCA) of the virtual cache 242 in the case of a hit.
  • the valid data table 700 is a table showing valid data stored in the virtual cache 242.
  • the storage destination determination table 710 is a table for storing conditions for determining whether the storage destination is a virtual medium or via a virtual cache, and data used for storage destination determination based on the conditions.
  • Transmission / reception data 841 is data communicated via the communication control unit 830.
  • the input / output data 842 is data input / output via the input / output interface 860.
  • the work area 843 is an area used for processing other than storage control.
  • the storage 850 stores a database, various parameters, or the following data or programs necessary for realizing the present embodiment.
  • the application storage unit 851 stores application software provided by the host computer 210 so as to be searchable.
  • the storage 850 stores the following programs.
  • the OS 852 is a basic program that controls the entire host computer 210.
  • the application software 853 is an application program that is currently being executed by the host computer 210.
  • the storage control program 854 is a program that realizes access control of the present embodiment upon receiving access to a virtual storage medium from the OS 852 and application software 853.
  • the Write control module 855 is a module that controls writing to a virtual storage medium in the storage control program 854.
  • the Read control module 856 is a module that controls reading from a virtual storage medium in the storage control program 854.
  • the data movement module 857 is a module for moving data from the virtual cache 242 to the virtual medium 241 or moving data in the virtual cache 242 if a predetermined condition is satisfied.
  • the communication control program 858 is a program that controls communication with the storage medium 240 via the communication control unit 830.
  • the input / output interface 860 interfaces input / output data with input / output devices.
  • a display unit 861 and an operation unit 862 are connected to the input / output interface 860.
  • the host computer 210 may further be connected to a speaker that is an audio output unit, a microphone that is an audio input unit, or a GPS position determination unit.
  • RAM 840 and the storage 850 in FIG. 8A do not show programs and data related to general-purpose functions and other realizable functions of the host computer 210.
  • FIG. 8B is a flowchart showing a processing procedure of the storage control unit 220 according to the present embodiment. This flowchart is executed by the CPU 810 of FIG. 8A using the RAM 840, and realizes the processing of the functional configuration unit of FIG. 2B.
  • step S811 the storage control unit 220 determines a processing instruction of the next processing order in the buffer memory 221, and determines whether or not it is a read instruction from a virtual storage medium. If it is determined as a Read command, the storage control unit 220 executes a read process from the virtual medium according to the Read command in Step S813.
  • the storage control unit 220 determines in step S821 whether the command is a write command from a virtual storage medium. If it is determined that the command is a write command, the storage control unit 220 executes a write process to the virtual medium according to the write command in step S823. It is determined whether or not the load on the virtual cache is greater than a threshold value. If it is determined that the load is greater than the threshold, the storage control unit 220 executes virtual cache data movement processing in step S833.
  • FIG. 9 is a flowchart showing the procedure of the Read process (S813) according to the present embodiment.
  • a read request is received from software or an OS running on the host computer 210 and a read result is returned.
  • the access execution unit 223 of the storage control unit 220 receives a read request to the virtual storage medium from the software running on the host computer 210 or the OS, it checks whether the write data stored in the buffer memory 221 is hit. (Step S901). If the write data stored in the buffer memory 221 is hit (Yes in step S903), the access execution unit 223 reads the hit write data from the buffer memory 221, and returns the result to the access source software or OS. The process ends (step S905).
  • the access execution unit 223 uses the hit determination unit 224 to read the virtual storage medium read request to the address stored in the virtual cache 242. It is confirmed whether there is a hit (step S907).
  • the access execution unit 223 uses the mapping unit 222 to convert the VCA on the virtual cache 242 storing the hit data to the LA of the storage medium 240. (Step S911). Then, the access execution unit 223 designates the LA converted in step S911, reads the data stored in the storage medium 240 through the storage medium access unit 230, returns the result to the access source software or OS, and ends the processing. (Step 913).
  • the access execution unit 223 uses the mapping unit 222 to change the VDA of the virtual medium 241 specified in the access request from the host computer 210 to Conversion into LA of the storage medium 240 is performed (step S915). Then, the access execution unit 223 designates the LA converted in step S915, reads the data stored in the storage medium 240 through the storage medium access unit 230, returns the result to the access source software or OS, and ends the processing. (Step S917).
  • FIG. 10 is a flowchart showing the procedure of the write process (S823) according to the present embodiment.
  • the access execution unit 223 of the storage control unit 220 receives a write request from software operating on the host computer 210 or the OS.
  • the access execution unit 223 includes information on the predicted value of the continuous write size including the subsequent write request and the frequency overwritten by the subsequent write request, which is predicted by the access request source software or OS. Receive. Then, the access execution unit 223 confirms whether there is a write request that can be hit or combined with the write data stored in the buffer memory 221 (step S1001).
  • step S1003 If the write data stored in the buffer memory 221 is hit or there is a write request that can be combined (Yes determination in step S1003), the access execution unit 223 overwrites or combines the hit write data with new write data. Is stored in the buffer memory 221 (step S1005). On the other hand, when the write data stored in the buffer memory 221 is not hit (No determination in step S1003), the access execution unit 223 stores the write data received in step S1001 in the buffer memory 221 as new write data ( Step S1007).
  • step S1001 When the write request received in step S1001 is selected by the processing order determination unit 227 as the next storage target in the virtual medium 241 or the virtual cache 242, the access execution unit 223 uses the storage destination determination unit 228.
  • the write data storage destination area (virtual medium 241 or virtual cache 242) and the logical address (VDA / VCA) in the storage destination area are determined (step S1009).
  • the access execution unit 223 determines the processing order for the VDA of the virtual medium 241 determined in step S1009.
  • the write data selected by the unit 227 is stored (step S1013).
  • the access execution unit 223 performs processing on the VCA of the virtual cache 242 determined in step S1011.
  • the write data selected by the order determination unit 227 is stored (step S1015).
  • the access execution unit 223 deletes the write data for which the storage process has been completed in step S1013 or step S1015 from the buffer memory 221, notifies the access source software or OS of the completion, and ends the process (step S1017).
  • the above processing from step S1001 to S1017 is performed, and in this embodiment, a write request is received from the software or OS operating on the host computer 210, and the operation until the processing is completed is completed. Further, the completion notification of the write request to the access source software or OS performed in step S1017 may be performed at the time of step S1005 or step S1007 when the write data is stored in the buffer memory 221.
  • FIG. 11A is a flowchart showing the procedure of the storage process (S1013) in the virtual medium according to the present embodiment.
  • the access execution unit 223 of the storage control unit 220 converts the VDA of the virtual medium 241 acquired in step S1009 into the LA of the storage medium 240 by the mapping unit 222 (step 1101).
  • the access execution unit 223 sends the write data of the write request selected by the processing order determination unit 227 via the storage medium access unit 230 to the vBlock of the storage medium 240 indicated by the LA converted in step S1101. Store (step S1103).
  • the access execution unit 223 uses the mapping unit 222 to store the write data in the virtual medium mapping table 400, and the vBlock indicated by the VDA of the virtual medium 241 acquired in step S1009 indicates that the data is vBlock. Update to the state stored in vPage.
  • step S1105 For the number of vPages that have been written from the beginning of the vBlock shown in the virtual medium mapping table 400 of FIG. 4, the value of the vPage to which the write data is written by the storage medium access unit 230 in step S1103. Change (step S1105).
  • the access execution unit 223 uses the hit determination unit 224 to check whether the write data before update hits the address stored in the virtual cache 242 for the write request selected by the processing order determination unit 227 (step S1107). . When the write request does not hit the address stored in the virtual cache 242 (Yes determination in step S1109), the access execution unit 223 performs the process of executing the write data storage process by the access execution unit 223 in step S1013. Complete.
  • the access execution unit 223 stores the write data before update in the hit determination table 600 via the hit determination unit 224.
  • the entry that is the same as the VDA of the virtual medium 241 acquired in step S1009 is deleted (step S1111).
  • the access execution unit 223 updates the entry corresponding to the write data before update in the valid data table 700 via the cache usage status management unit 225. Specifically, the entry in the valid data table 700 corresponding to the VCA of the virtual cache 242 representing the cache hit entry obtained in step S1107 is changed to an invalid state.
  • step S1113 The process for executing the storage process is completed.
  • step S1101 to S1113 The above processing from step S1101 to S1113 is performed, and in this embodiment, the operation of executing the storage processing of the write data in the virtual medium by the access execution unit 223 of the storage control unit 220 in step S1013 is completed. Further, the execution order of step S1111 and step S1113 may be switched.
  • FIG. 11B is a flowchart showing the procedure of the storage process (S1015) in the virtual cache according to the present embodiment.
  • the access execution unit 223 of the storage control unit 220 converts the VCA of the virtual cache 242 acquired in step S1009 into the LA of the storage medium 240 by the mapping unit 222 (step S1121).
  • the access execution unit 223 passes the write data of the write request selected by the processing order determination unit 227 via the storage medium access unit 230 to the vPage of the storage medium 240 indicated by the LA converted in step S1121.
  • Store step S1123
  • the access execution unit 223 stores the data for the vPage entry indicated by the VCA of the virtual cache 242 acquired in step S1009, which is the write data storage destination in the virtual cache mapping table 500 via the mapping unit 222. Update to the updated state.
  • step S1123 the value of the vPage to which the write data is written by the storage medium access unit 230 in step S1123 is set. Addition is performed (step S1125).
  • the access execution unit 223 uses the hit determination unit 224 to check whether the write data before update hits the address stored in the virtual cache 242 for the write request selected by the processing order determination unit 227 (step S1127). . When the write request does not hit the address stored in the virtual cache 242 (No determination in step S1129), the processing after step S1133 is executed.
  • the access execution unit 223 uses the cache usage status management unit 225 to update the valid data table 700 before the update. Update the entry corresponding to the Write data. Specifically, the entry in the valid data table 700 corresponding to the VCA of the virtual cache 242 representing the cache hit entry obtained in step S1127 is changed to an invalid state. Also, the number of valid vPages for each vBlock including the VCA is changed to a value obtained by subtracting the number of vPages of the invalid cache entry (step S1131).
  • the access execution unit 223 adds an entry equal to the VDA of the virtual medium 241 specified as the write destination address of the write request selected by the processing order determination unit 227 to the hit determination table 600 via the hit determination unit 224. Addition or correction is performed (step S1133).
  • the access execution unit 223 updates the entry corresponding to the updated write data in the valid data table 700 via the cache usage status management unit 225. Specifically, the entry of the valid data table 700 corresponding to the VCA of the virtual cache 242 representing the cache hit entry obtained in step S1127 is designated as the write destination address of the write request. Change to VDA.
  • step S1015 the number of vPages newly stored in the virtual cache 242 is added to the number of valid vPages for each vBlock including the VCA, and the write execution process of the write data in the virtual cache by the access execution unit 223 in step S1015 Is completed (step S1135).
  • step S1121 to S1135 The processing from step S1121 to S1135 described above is performed, and in this embodiment, the operation of executing the write data storage processing in the virtual cache by the access execution unit 223 of the storage control unit 220 in step S1015 is completed.
  • FIG. 12 is a flowchart showing a procedure of the storage area determination process (S1009) according to the present embodiment.
  • the storage destination determination unit 228 of the storage control unit 220 receives the storage destination VDA and data length for the virtual medium 241 of the write request from the access execution unit 223. In addition, the storage destination determination unit 228 receives the predicted value of the continuous write size including the subsequent write request and the predicted value of the frequency overwritten by the subsequent write request by the software or OS that is the access request source. (Step S1201).
  • the storage location determination unit 228 acquires the load information from the load determination unit 226 and compares it with a predetermined reference value of the load (step S1203). When the load exceeds the reference value (No determination in step S1205), the storage destination determination unit 228 executes the processing after step S1215.
  • the storage destination determination unit 228 calculates the expected value of the total write amount for the storage medium 240 when the write data is directly written to the virtual medium 241. To do.
  • the process is performed in units of vBlock, and therefore a save process for a vPage in which the write data in the vBlock is not stored occurs in addition to the storage of the write data. Therefore, when the current write data is directly stored in the virtual medium 241, the amount of write data becomes equal to the capacity of vBlock.
  • step S1207 when the predicted value of the continuous write size including the subsequent write request is “A” and the size of the vBlock is “B”, the expected value of the write data amount satisfies n ⁇ B (n ⁇ A / B). (The smallest natural number) (step S1207).
  • the storage destination determination unit 228 calculates the expected value of the total write amount for the storage medium 240 when the write data is stored in the virtual cache 242 and then written to the virtual medium 241.
  • the amount of write data generated in the virtual cache 242 is finally an estimated value of the continuous write size including subsequent write requests. Is equal to
  • the amount of write data generated when data is moved to the virtual medium 241 is equal to vBlock because the data is stored in the virtual medium 241 in units of vBlock.
  • the probability that the write data is updated before moving to the virtual medium 241 is obtained.
  • the predicted value of the continuous write size including the subsequent write request is “A”
  • the size of the vBlock is “B”
  • the probability that the write data is updated before moving to the virtual medium 241 is “P”.
  • the expected value of the write data amount is obtained by ⁇ A + B ⁇ (1-P) ⁇ (step S1209).
  • the storage location determination unit 228 compares the expected value of the write data amount obtained in step S1207 and step S1209 (step S1211). When the expected value of the total write data amount for the storage medium 240 when the write data is directly written to the virtual medium 241 is smaller (Yes determination in step S1213), the storage destination determination unit 228 sends the access execution unit 223 to the access execution unit 223. On the other hand, the virtual medium 241 is returned as the write data storage destination, and the VDA designated as the data storage destination in the write request is returned, and the process ends (step S1215).
  • the storage destination determination unit 228 displays the virtual cache pointer.
  • the VCA of the vBlock that is storing data is acquired from 231 (step S1217).
  • the storage location determination unit 228 identifies the vPage closest to the top of the vBlock that can store Write data within the vBlock indicated by the VCA acquired in Step S1217 (Step S1219).
  • the storage destination determination unit 228 returns the virtual cache 242 and the VCA of the vPage specified in step S1219 as the write data storage destination to the access execution unit 223 (step S1221).
  • the storage destination determination unit 228 confirms whether or not a vPage that can newly store data remains in the vBlock including the VCA after the write data storage is completed for the vPage corresponding to the VCA returned as the storage destination in step S1221. (Step S1223). If vPages that can store new data remain (Yes determination in step S1225), the storage destination determination unit 228 ends the process of determining the storage destination of the write data.
  • the storage destination determination unit 228 refers to the valid data table 700 via the cache usage status management unit 225. Then, the vBlock with the smallest number of vPages storing valid data in the vBlock of the virtual cache 242 is selected, the virtual cache pointer 231 is updated with the VCA of the vBlock, and the process is terminated (Step S1227).
  • step S1201 to S1227 The above processing from step S1201 to S1227 is performed, and in this embodiment, the operation of executing the processing of determining the storage destination of the write data in the storage destination determination unit 228 of the storage control unit 220 is completed. Note that the execution order of step S1207 and step S1209 may be interchanged.
  • FIG. 13 is a flowchart showing the procedure of the data movement process (S833) according to the present embodiment.
  • the data moving unit 229 of the storage control unit 220 selects a vBlock having the largest amount of data (number of vPages) cached in the virtual cache 242 in the VDA space of the virtual medium 241 as a processing target (step S1301).
  • the data movement unit 229 refers to the hit determination table 600 via the hit determination unit 224, and acquires the VCA of the vPage cached in the virtual cache 242 in the vBlock selected in step S1301 (step S1303).
  • the data moving unit 229 converts the vCA of the vPage in the virtual cache 242 acquired in step S1303 by the mapping unit 222 into an LA indicating the vPage in the storage medium 240.
  • the data moving unit 229 converts the VDA in the virtual medium 241 of the vBlock selected in step S1301 by the mapping unit 222 into the LA of the storage medium 240 (step S1305).
  • the data moving unit 229 reads the vPage of the virtual cache 242 from the storage medium 240 using the LA converted in step S1305 via the storage medium access unit 230 (step S1307).
  • the data moving unit 229 via the storage medium access unit 230, in the vBlock selected in Step S1301, the vPage LA whose data is not cached in the virtual cache 242 is converted to the LA of the vBlock converted in Step S1305.
  • the data moving unit 229 instructs the storage medium access unit 230 to write the vPage data read in steps S1307 and S1309 in order from the first vPage to the vBlock selected in step S1301.
  • Each data of the virtual cache 242 read in step S1307 is stored in the vPage corresponding to each data of the virtual cache 242 with reference to the hit determination table 600 via the hit determination unit 224. Also, the vPage data read in step S1309 is written back to the original vPage (step S1311).
  • the data moving unit 229 updates the number of vPages in which data of the vBlock that is the write destination in step S1311 has been written in the virtual medium mapping table 400 via the mapping unit 222. Further, the data moving unit 229 deletes the entry corresponding to the vPage of the virtual cache 242 that has moved the data to the virtual medium 241 in the hit determination table 600 via the hit determination unit 224. Then, the data migration unit 229 changes the entry of the valid data table 700 corresponding to the vPage of the virtual cache 242 that has migrated data to the virtual medium 241 via the cache usage status management unit 225 to an invalid state.
  • the data migration unit 229 updates the number of valid vPages for each vBlock in the valid data table 700 to a value obtained by subtracting the number of vPages of the virtual cache 242 that has migrated data to the virtual medium 241. Is completed (step S1313).
  • step S1301 to S1313 The above processing from step S1301 to S1313 is performed, and in this embodiment, the operation of moving data from the virtual cache 242 to the virtual medium 241 is completed in the data moving unit 229 of the storage control unit 220. Note that the execution order of step S1307 and step S1309 may be interchanged.
  • FIG. 14 is a diagram showing a specific example of the access request order 1400 from the software according to the second embodiment of the present invention.
  • This specific example shows an operation in the case of sequentially processing Read and Write requests from ID1 to ID4.
  • the predicted value regarding the data update frequency received together with the write request for each ID is expressed as every n access requests (n is a natural number). That is, the ID2 write request is updated by subsequent writes every 100 million accesses, whereas the ID3 write request is updated every 300 access requests, that is, frequently by subsequent writes.
  • FIGS. 15 to 18 show the state of each table when the initial state in this specific example and ID1 to ID4 of FIG. 14 are executed, respectively.
  • FIG. 15 is a table 1500 corresponding to the virtual medium mapping table 400 shown in FIG.
  • FIG. 16 shows a table 1600 of a specific example corresponding to the virtual cache mapping table 500 shown in FIG.
  • FIG. 17 shows a table 1700 of a specific example corresponding to the hit determination table 600 shown in FIG.
  • FIG. 18 shows a table 1800 of a specific example corresponding to the valid data table 700 shown in FIG. All addresses in each table are described in units of sectors (512 bytes).
  • the VCA representing the vBlock storing the cached data in the virtual cache 242 stored by the virtual cache pointer 231 of the storage destination determination unit 228 is 0x00000000.
  • the buffer memory 221 does not store write data in the initial state of this specific example.
  • the processing order determination unit 227 selects the write request from the software on the host computer 210 stored in the buffer memory 221 as the processing target in the order of arrival.
  • the load determination result by the load determination unit 226 does not become a high load.
  • the access execution unit 223 that has received the read request from the virtual storage medium checks whether the buffer memory 221 and the virtual cache 242 are hit in order. Since write data is not stored in the buffer memory 221, the access execution unit 223 performs hit determination in the virtual cache 242 using the hit determination table 1700. While Read of ID1 is for VDA 0x00000010 of the virtual medium, there is no entry corresponding to VDA 0x00000010 in the hit determination table 1700, and this Read is performed for VDA 0x00000010 of the virtual medium 241.
  • the vBlock of SSD 0x00000000 is mapped to the vBlock represented by VDA 0x00000000. That is, a 4 KB Read for VDA 0x00000010 of the virtual medium 241 is issued as a 4 KB Read for the logical address 0x00000010 of the SSD, and the Read result is returned to the requesting software.
  • the access execution unit 223 that has received the write request to the virtual storage medium stores the ID2 write request including the write data in the buffer memory 221 and starts processing. To do. Since the write data is not stored in the buffer memory 221, the access execution unit 223 starts processing when the processing order determination unit 227 selects the write request of ID2 as the processing target.
  • Write of ID2 is a storage request for VDA 0x00000200, that is, data of 224 KB from the top of vBlock.
  • the storage destination determination unit 228 determines the storage destination of the write data of ID2. First, since the predicted write size is 256 KB and this is a write request from the beginning of the vBlock, it can be seen that 256 KB is written to the entire vBlock in the future. Therefore, when the write data is directly stored in the virtual medium 241, the expected value of the write amount generated for the SSD is obtained as 256 KB. Further, the writing of ID2 in FIG. 14 is updated by subsequent writing every 100 million accesses. For this reason, while the write data of ID2 is stored in the virtual cache 242, there is a possibility that the data on the virtual cache 242 is invalidated due to overwriting due to a subsequent write request.
  • the access execution unit 223 directly stores the write data of ID2 in the vBlock indicated by VDA 0x00000200 in the virtual medium 241.
  • a 224 KB write from the virtual medium mapping table 1500 to VDA 0x00000200 is issued as a 224 KB write to the logical address 0x00000200 of the SSD.
  • the entry determination of VDA 0x00000230 and the subtraction of the cached vPage number are performed in the hit determination table 1700 (FIG. 17). 1701).
  • the entry determination of VDA 0x00000230 and the subtraction of the cached vPage number are performed in the hit determination table 1700 (FIG. 17). 1701).
  • the data is switched to an invalid state, and the number of valid pages in the vBlock is reduced from “1” to “0”.
  • the request completion software is notified of the write completion.
  • the expected value of the write amount generated for the SSD when the write data is stored directly in the virtual medium 241 is obtained. Since the predicted write size for the write of ID3 is 4 KB, the expected value of the write amount generated for the SSD is obtained as 256 KB.
  • the write data is temporarily stored in the virtual cache 242, and the expected value of the write amount for the SSD when the write data is moved to the virtual medium 241 later is obtained.
  • the access execution unit 223 caches the ID3 write data in the virtual cache 242 in a vPage that can store new data. Since the VCA of the virtual cache 242 indicated by the virtual cache pointer 231 of the storage destination determination unit 228 is 0x00000000, the storage location of the write data in the virtual cache 242 is vacant in the vBlock indicated by VCA 0x00000000 of the virtual cache 242. Store ID3 Write data in vPage. From the virtual cache mapping table 1600, since the written vPage in the vBlock is one page, the write data is stored in the vPage indicated by VCA 0x00000008 in the virtual cache 242. That is, 4 KB Write for vPage is issued as 4 KB Write for SSD logical address 0x00200008.
  • the number of written vPages is updated to “2” for the vBlock of VCA 0x00000000 in the virtual cache 242 (see 1601 in FIG. 16).
  • an entry of VDA 0x00000100 and the corresponding VCA of 0x00000008 is added to the hit determination table 1700, and the number of cached vPages is set to “1”. ⁇ "1" is added to "2" (see 1702 in FIG. 17).
  • the VDA on the cached virtual medium 241 is recorded as 0x00000100, and the number of valid pages in the vBlock is incremented by “1” (see FIG. 18 1802), the requesting software is notified of the completion of the write request for ID3.
  • (Read ID4) Finally, the operation when the ID4 Read request in FIG. 14 is received is shown.
  • the access execution unit 223 that has received the Read request checks whether the buffer memory 221 and the virtual cache 242 are hit in order. Since write data is not stored in the buffer memory 221, the access execution unit 223 performs hit determination in the virtual cache 242 using the hit determination table 1700.
  • Read of ID4 is for VDA 0x00000100 of the virtual medium 241, and an entry corresponding to VDA 0x00000100 exists in the hit determination table 1700 (see 1702 in FIG. 17). That is, it can be seen that the data requested to be read in the virtual cache 242 is stored in the vPage of VCA 0x00000008.
  • the access execution unit 223 converts the VCA for the vPage in the virtual cache 242 to the logical address 0x00200008 of the SSD, performs 4 KB read, and returns the read result to the requesting software.
  • writing to the virtual storage medium and writing to the virtual cache are selected in consideration of the total amount of the current write data amount and the write data amount to be generated in the future.
  • the amount of write data to the storage medium can be reduced.
  • the size of vPage and vBlock is preferably equal to the size of the data body stored in the NAND flash page in the SSD and the data size stored in the block, but for example, n times 2 (n is a natural number) Even with the size, it can be expected to reduce the amount of write to NAND flash.
  • the method according to the present embodiment does not use information regarding the hardware configuration and the operation of the controller for an SSD that is not sufficiently optimized for random write access as compared with the case where the present embodiment is not applied.
  • the information processing system including the storage control device according to the present embodiment differs from the second embodiment in that the storage control device is on the storage medium side or outside the host computer via a network. . Since other configurations and operations are the same as those of the second embodiment, the same configurations and operations are denoted by the same reference numerals, and detailed description thereof is omitted.
  • FIG. 19 is a block diagram illustrating a configuration of an information processing system 1900 including the storage control unit 1943 or 1920 according to the present embodiment.
  • the same components as those in FIG. 2A are denoted by the same reference numerals, and description thereof is omitted.
  • the host computer 1910 does not have the storage control unit of this embodiment.
  • the storage control unit 1943 of this embodiment is mounted on the storage medium 1940.
  • the storage control unit 1920 of the present embodiment is connected as an independent device via the network 250.
  • the storage control unit 1943 or 1920 may be realized by software or a one-chip processor.
  • the present write data amount and future generation are not limited to the processing by the host computer as in the second embodiment, but writing to a virtual storage medium and writing to a virtual cache are generated in the future. It is possible to reduce the write data amount through the entire storage process for the storage medium by selecting the total amount with the write data amount to be selected.
  • the information processing system including the storage control device according to this embodiment is different from the second embodiment and the third embodiment in that a plurality of storage control devices are connected to the information processing system. The difference is that the host computer is connected. Since other configurations and operations are the same as those of the second embodiment and the third embodiment, the same configurations and operations are denoted by the same reference numerals, and detailed description thereof is omitted.
  • FIG. 20 is a block diagram showing the configuration of the information processing system 2000 according to the present embodiment.
  • the same reference numerals are assigned to the same components as those in FIG. 2A or FIG.
  • a plurality of storage media or a plurality of host computers are connected via a network 250.
  • each of the host computers 210 and 2010 or the independent storage control unit 1920 includes the entire storage media 240 and 2040 as a virtual medium 2041 and a virtual cache 2042. Assign to and. In such a configuration, since the required capacity of the virtual cache 2042 is divided and allocated to the storage media 240 and 2040 in small amounts, the capacity of the virtual medium 2041 can be afforded and the processing speed can be increased. .
  • each host computer may exclusively allocate a virtual cache or share a virtual cache.
  • the host computer 2010 also has a unique storage control unit 2020 that controls access to the virtual storage medium from the OS 2011 and the software 2012.
  • the external storage control unit 1920 may perform unified virtual medium and virtual cache control.
  • FIG. 21 is a diagram showing a configuration of the virtual medium mapping table 2110 and the virtual cache mapping table 2120 according to the present embodiment. In FIG. 21, the description of the same components as those in FIG. 4 or FIG. 5 is omitted.
  • a storage medium ID for identifying a plurality of storage media or a host ID for identifying a plurality of host computers is added.
  • writing to a virtual storage medium and writing to a virtual cache are performed at present.
  • the total amount of the write data amount and the write data amount to be generated in the future can be selected, and the write data amount through the entire storage processing on the storage medium can be reduced.
  • the present invention may be applied to a system composed of a plurality of devices, or may be applied to a single device. Furthermore, the present invention can also be applied to a case where an information processing program that implements the functions of the embodiments is supplied directly or remotely to a system or apparatus. Therefore, in order to realize the functions of the present invention on a computer, a program installed on the computer, a medium storing the program, and a WWW (World Wide Web) server that downloads the program are also included in the scope of the present invention. . In particular, at least a non-transitory computer readable medium storing a program for causing a computer to execute the processing steps included in the above-described embodiments is included in the scope of the present invention.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

 本発明の装置は、記憶媒体に対する格納処理全体を通したWriteデータ量を小さくする記憶制御装置である。記憶制御装置は、ホストコンピュータによる仮想媒体へのデータ書込指示を受信する受信部と、データ書込指示に応じて、仮想媒体のアドレス空間と、仮想媒体に対応して生成された仮想キャッシュのアドレス空間とのいずれにデータを書き込むかを、現在の書込データ量と将来発生する書込データ量との総量を考慮して選択する書込アドレス選択部と、書込アドレス選択部による選択に応じて、仮想媒体への書込アドレスまたは仮想キャッシュへの書込アドレスを記憶媒体に対する書込アドレスに変換して、記憶媒体に対してデータを書き込むよう指示する書込指示部と、を備える。

Description

情報処理システム、情報処理方法、記憶制御装置およびその制御方法と制御プログラム
 本発明は、情報処理システム、情報処理方法、記憶制御装置およびその制御方法と制御プログラムに関する。
 昨今の計算システムの処理能力向上に伴い、情報を保存する記憶媒体の性能向上が求められている。その結果、従来の情報処理システムでは記憶媒体として主にHDD(Hard Disk Drive)が使用されてきたが、近年はより高性能な記憶媒体として、記憶素子にNANDフラッシュを用いたSSD(Solid State Drive)が普及している。
 上記技術分野において、特許文献1および特許文献2には、一般にFTL(Flash Translation Layer)と呼ばれ、SSDにおいてマッピング処理をNANDフラッシュのブロック単位で行う技術が開示されている。具体的には、SSDが提供する論理アドレス空間に対してデータを格納していない状態のNANDフラッシュの記憶領域を動的にマッピングすることで、同じアドレスの格納データに対する更新ごとに異なるブロックにデータを格納する。
 また、FTLにおけるNANDフラッシュのブロック単位、およびページ単位のマッピングでそれぞれ発生する問題を解決するマッピング方式が、非特許文献1および非特許文献2に示されている。これらの方式では、ブロック単位のマッピングを基本とする一方で、ブロックより小さなサイズのランダムWriteアクセスが行われる論理アドレスに対して、ページ単位のマッピングを行う。ページ単位のマッピングを行う領域を一部に限定することで、マッピングテーブルの容量増加を抑えつつ、ランダムWriteに対する処理効率の向上を実現している。
 また、非特許文献3には、HDDに対して記憶領域の一部を論理的なキャッシュとして使用し、一定サイズよりも小さなWriteアクセスデータを追記形式で格納することで、アクセス性能を向上させる技術が示されている。
米国特許5404485号(特開平08-510072号公報) 米国特許5937425号(特開2001-521220号公報)
S. W. Lee, D. J. Park, T. S. Chung, W. K. Choi, D. H. Lee, S. W. Park, and H. J. Song. "A log buffer based flash translation layer using fully associative sector translation," ACM Transactions on Embedded Computing Systems, vol. 6, no. 3, 2007 S. Lee, D. Shin, Y.-J. Kim, and J. Kim, LAST: Locality-Aware Sector Translation for NAND Flash Memory-Based Storage Systems, SIGOPS Oper. Syst. Rev. 42, 6 (October 2008), 36-42 Y. Hu and Q. Yang. DCD - Disk Caching Disk: A New Approach for Boosting I/O Performance. In Proceedings of the International Symposium on Computer Architecture, pages 169-178, 1996.
 しかしながら、上記文献に記載の技術には、各ブロックを可能な限り均等に使用する技術や、ランダムWriteに対する処理効率の向上を実現する技術、アクセス性能を向上させる技術が示されているが、記憶媒体に対するWriteデータ量を小さくするために必要な処理は行われていなかった。例えば、非特許文献3では、HDDに対してWriteされたデータを一旦キャッシュ領域に格納し、アクセス要求による負荷がなくなった時点で、本来データが格納されるべき領域に対する書き込みを行う。ランダムWriteデータを最初に格納する際のWriteデータ量の削減は行われているが、一時格納されたデータを再度格納し直す処理を含めた、格納処理全体を通したWriteデータ量の最小化は行われていない。
 本発明の目的は、上述の課題を解決する技術を提供することにある。
 上記目的を達成するため、本発明に係る記憶制御装置は、
 ホストコンピュータによる仮想媒体へのデータ書込指示を受信する受信手段と、
 前記データ書込指示に応じて、前記仮想媒体のアドレス空間と、前記仮想媒体に対応して生成された仮想キャッシュのアドレス空間とのいずれにデータを書き込むかを、現在の書込データ量と将来発生する書込データ量との総量を考慮して選択する書込アドレス選択手段と、
 前記書込アドレス選択手段による選択に応じて、前記仮想媒体への書込アドレスまたは前記仮想キャッシュへの書込アドレスを記憶媒体に対する書込アドレスに変換して、前記記憶媒体に対してデータを書き込むよう指示する書込指示手段と、
 を備える。
 上記目的を達成するため、本発明に係る記憶制御装置の制御方法は、
 ホストコンピュータによる仮想媒体へのデータ書込指示を受信する受信ステップと、
 前記データ書込指示に応じて、前記仮想媒体のアドレス空間と、前記仮想媒体に対応して生成された仮想キャッシュのアドレス空間とのいずれにデータを書き込むかを、現在の書込データ量と将来発生する書込データ量との総量を考慮して選択する書込アドレス選択ステップと、
 前記書込アドレス選択ステップにおける選択に応じて、前記仮想媒体への書込アドレスまたは前記仮想キャッシュへの書込アドレスを記憶媒体に対する書込アドレスに変換して、前記記憶媒体に対してデータを書き込むよう指示する書込指示ステップと、
 を含む。
 上記目的を達成するため、本発明に係る記憶制御装置の制御プログラムは、
 ホストコンピュータによる仮想媒体へのデータ書込指示を受信する受信ステップと、
 前記データ書込指示に応じて、前記仮想媒体のアドレス空間と、前記仮想媒体に対応して生成された仮想キャッシュのアドレス空間とのいずれにデータを書き込むかを、現在の書込データ量と将来発生する書込データ量との総量を考慮して選択する書込アドレス選択ステップと、
 前記書込アドレス選択ステップにおける選択に応じて、前記仮想媒体への書込アドレスまたは前記仮想キャッシュへの書込アドレスを記憶媒体に対する書込アドレスに変換して、前記記憶媒体に対してデータを書き込むよう指示する書込指示ステップと、
 をコンピュータに実行させる。
 上記目的を達成するため、本発明に係る情報処理システムは、
 ホストコンピュータと、
 記憶媒体と、
 前記ホストコンピュータによる前記記憶媒体へのアクセスを制御する記憶制御装置と、
 を備え、
 前記記憶制御装置が、
  前記ホストコンピュータによる仮想媒体へのデータ書込指示を受信する受信手段と、
  前記データ書込指示に応じて、前記仮想媒体のアドレス空間と、前記仮想媒体に対応して生成された仮想キャッシュのアドレス空間とのいずれにデータを書き込むかを、現在の書込データ量と将来発生する書込データ量との総量を考慮して選択する書込アドレス選択手段と、
  前記書込アドレス選択手段による選択に応じて、前記仮想媒体への書込アドレスまたは前記仮想キャッシュへの書込アドレスを前記記憶媒体に対する書込アドレスに変換して、前記記憶媒体に対してデータを書き込むよう指示する書込指示手段と、
 を備える。
 上記目的を達成するため、本発明に係る情報処理方法は、
 ホストコンピュータが、仮想媒体からのデータ読出指示または前記仮想媒体へのデータ書込指示を発行する発行ステップと、
 前記データ書込指示に応じて、前記仮想媒体のアドレス空間と、前記仮想媒体に対応して生成された仮想キャッシュのアドレス空間とのいずれにデータを書き込むかを、現在の書込データ量と将来発生する書込データ量との総量を考慮して選択する書込アドレス選択ステップと、
 前記書込アドレス選択ステップにおける選択に応じて、前記仮想媒体への書込アドレスまたは前記仮想キャッシュへの書込アドレスを記憶媒体に対する書込アドレスに変換して、前記記憶媒体にデータを書き込む書込ステップと、
 を含む。
 本発明によれば、記憶媒体に対する格納処理全体を通したWriteデータ量を小さくすることができる。
本発明の第1実施形態に係る記憶制御装置の構成を示すブロック図である。 本発明の第2実施形態に係る情報処理システムの構成を示すブロック図である。 本発明の第2実施形態に係る記憶制御装置の機能構成を示すブロック図である。 本発明の第2実施形態に係るバッファメモリの構成を示す図である。 本発明の第2実施形態に係る仮想媒体マッピングテーブルの構成を示す図である。 本発明の第2実施形態に係る仮想キャッシュマッピングテーブルの構成を示す図である。 本発明の第2実施形態に係るヒット判定テーブルの構成を示す図である。 本発明の第2実施形態に係る有効データテーブルの構成を示す図である。 本発明の第2実施形態に係る格納先決定テーブルの構成を示す図である。 本発明の第2実施形態に係る記憶制御部を含むホストコンピュータのハードウェア構成を示すブロック図である。 本発明の第2実施形態に係る記憶制御部の処理手順を示すフローチャートである。 本発明の第2実施形態に係るRead処理の手順を示すフローチャートである。 本発明の第2実施形態に係るWrite処理の手順を示すフローチャートである。 本発明の第2実施形態に係る仮想媒体への格納処理の手順を示すフローチャートである。 本発明の第2実施形態に係る仮想キャッシュへの格納処理の手順を示すフローチャートである。 本発明の第2実施形態に係る格納先領域の決定処理の手順を示すフローチャートである。 本発明の第2実施形態に係るデータ移動処理の手順を示すフローチャートである。 本発明の第2実施形態に係るソフトウェアからのアクセス要求順序の具体例を示す図である。 本発明の第2実施形態に係る仮想媒体マッピングテーブルの具体例を示す図である。 本発明の第2実施形態に係る仮想キャッシュマッピングテーブルの具体例を示す図である。 本発明の第2実施形態に係るヒット判定テーブルの具体例を示す図である。 本発明の第2実施形態に係る有効データテーブルの具体例を示す図である。 本発明の第3実施形態に係る情報処理システムの構成を示すブロック図である。 本発明の第4実施形態に係る情報処理システムの構成を示すブロック図である。 本発明の第4実施形態に係る仮想媒体マッピングテーブルおよび仮想キャッシュマッピングテーブルの構成を示す図である。
 以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素は単なる例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。なお、本明細書では、記憶素子としてNANDフラッシュを用いた記憶媒体を総称してSSD(Solid State Drive)と表す。なお、SSDは、一般に、記憶媒体の外部に対してNANDフラッシュを動的にマッピングする機能、および、記憶領域の間の更新回数を均一化する機能を持っている。
 [第1実施形態]
 本発明の第1実施形態としての記憶制御装置100について、図1を用いて説明する。記憶制御装置100は、記憶媒体へのアクセスアドレスを制御する装置である。
 図1に示すように、記憶制御装置100は、受信部110と、書込アドレス選択部120と、書込指示部130と、を含む。受信部110は、ホストコンピュータ101による仮想媒体へのデータ書込指示111を受信する。書込アドレス選択部120は、データ書込指示111に応じて、仮想媒体のアドレス空間121と、仮想媒体に対応して生成された仮想キャッシュのアドレス空間122とのいずれにデータを書き込むかを、現在の書込データ量と将来発生する書込データ量との総量123を考慮して選択する。書込指示部130は、書込アドレス選択部120による選択に応じて仮想媒体への書込アドレス131または仮想キャッシュへの書込アドレス132を記憶媒体103に対する書込アドレス133に変換して、記憶媒体103にデータを書き込むよう指示する。
 本実施形態によれば、仮想媒体への書き込みと仮想キャッシュへの書き込みとを現在の書込データ量と将来発生する書込データ量との総量を考慮して選択するので、記憶媒体に対する格納処理全体を通したWriteデータ量を小さくすることができる。
 [第2実施形態]
 次に、本発明の第2実施形態に係る記憶制御装置を含む情報処理システムについて説明する。本実施形態に係る記憶制御装置を含む情報処理システムは、仮想的な記憶媒体(仮想媒体)への書き込みと仮想的なキャッシュ(仮想キャッシュ)への書き込みとを、仮想キャッシュの使用状況や負荷判定結果などに基づいて、格納先を決定する。また、仮想キャッシュの使用状況や負荷判定結果などに基づいて、データ移動を決定する。さらに、仮想キャッシュポインタを有して、キャッシュへの格納領域をまとめる。
 例えば、本実施形態においては、SSDにアクセスを行うホストから、SSDのハードウェア構成、コントローラの動作に関する正確な情報、およびSSDにおけるランダムWriteデータを格納する記憶領域の使用状況に関する情報を用いずに、SSD内部のNANDフラッシュに対してWriteされるデータ量を最小化するための構成を提供する。
 具体的には、SSDの記憶領域を表す論理アドレス空間内に、仮想的な記憶媒体(仮想媒体)、および仮想的なキャッシュ(仮想キャッシュ)を定義する。仮想的な記憶媒体、および仮想的なキャッシュに対するSSDからの記憶領域割り当て単位を仮想ブロック(以下、vBlock)として事前に定義する。また、仮想的な記憶媒体、および仮想的なキャッシュに対するデータ格納の最小単位を仮想ページ(以下、vPage)として定義する。vBlockには連続したアドレスを持つnページ(nは自然数)のvPageが含まれるものとする。
 そして、既にデータを格納済のvPageに対してデータをWriteする場合は、vPageを含むvBlockの先頭のvPageから順番にWriteを行うものとする。このようなWrite動作を行うことで、SSD内部のNANDフラッシュ(NANDフラッシュメモリ)の同一ブロックの各ページに連続的にデータが格納される。そのためSSDの同一論理アドレスに対するデータの上書きによって発生する、SSD内部のNANDフラッシュ間のデータ移動に伴うWrite量を削減できる。vPage、vBlockのサイズはSSD内部におけるNANDフラッシュのページに格納されるデータ本体のサイズ、およびブロックに格納されるデータサイズに等しいことが望ましいが、例えば2のn乗倍(nは自然数)などのサイズであってもNANDフラッシュに対する一定のWrite量の削減効果が期待できる。
 また、ホストにおいてSSDの論理アドレスをマッピングした仮想媒体、および仮想媒体に対する仮想キャッシュを構築する手段を提供する。そして、ホストからWriteアクセスの性質に応じてWriteされるデータを最小化するように、ソフトウェア、OSからの、後続のWrite要求に関する補助的な情報を用いてWriteデータの格納先を仮想媒体、および仮想キャッシュから最適に選択する手段を提供する。さらに、仮想媒体と仮想キャッシュにおける記憶領域の使用状況に応じて、仮想媒体と仮想キャッシュ間でWriteデータ量を最小化するように格納データを最適に移動する構成を提供する。
 なお、Read処理においては、仮想的な記憶媒体からのデータ読出指示に応じて、仮想的な記憶媒体のアドレス空間と、仮想的なキャッシュのアドレス空間とのいずれからデータを読み込むかを、キャッシュヒットしたか否かに基づいて読出アドレス選択をする。そして、読出選択に応じて、仮想的な記憶媒体への読出アドレスまたは仮想的なキャッシュへの読出アドレスを記憶媒体に対する読出アドレスに変換して、記憶媒体に対してデータを読み出すよう読出指示をする。
 《前提技術》
 本実施形態の記憶制御を説明する前に、まず、本実施形態の前提技術を説明する。
 SSDの記憶素子であるNANDフラッシュは、データを更新する際に格納済の古いデータを消去するEraseと呼ばれる操作が必要である。しかし、NANDフラッシュに対するEraseは、一般的にReadおよびWriteを行うページと呼ばれる単位よりも大きく、複数のページを含むブロックと呼ばれる単位で行う必要がある。そのため、NANDフラッシュのページに格納されたデータを更新する場合は、同一ブロックに含まれる他のページがEraseによって失われないようにデータの退避、および再格納を行う必要がある。
 また、NANDフラッシュのブロックに対する消去は、ページのRead、Writeに比べて一般に大きな時間を要することが知られている。加えてブロックに対するErase回数が増加することで、NANDフラッシュはデータを正しく保持することが困難になる。つまりErase回数の増加は、性能低下だけでなく寿命消費の原因となるため、特定のブロックの寿命を消費しないように、各ブロックを可能な限り均等に使用する必要がある。
 一般的なSSDでは、HDD等従来の記憶媒体と共通のインタフェース、およびプロトコルを用いてアクセスを行えるように、NANDフラッシュに関する特有のアクセス操作、およびブロック消去に伴う寿命消費の問題を隠蔽している。具体的には、SSDが提供する論理アドレス空間に対してデータを格納していない状態のNANDフラッシュの記憶領域を動的にマッピングすることで、同じアドレスの格納データに対する更新ごとに異なるブロックにデータを格納する。
 これらのFTLは、NANDフラッシュのブロック単位でマッピングを行うため、LBA(Logical Block Address)上で連続したデータが同一ブロックに含まれる各ページに格納される。これらのFTLを持つSSDに対してランダムWriteを行った場合、各Writeデータの格納先である論理アドレスの指し示す領域に対して異なるブロックが割り当てられる。この場合、連続する論理アドレスに対してWriteを行う場合に比べて、頻繁に未使用状態のブロックのマッピングが発生する。ブロックのマッピングでは、古いブロックに格納された有効なページのデータを新しいブロックに退避、再格納する処理、および古いブロックを再利用可能な状態にするためのErase処理が発生する。つまり、ブロック単位でマッピングを行うFTLでは、ランダムWriteに対する処理効率の低さが問題である。
 この問題に対して、FTLにおいて論理アドレスに対するNANDフラッシュの記憶領域をページ単位でマッピングする方法が挙げられる。Read、Writeの単位と同等であるページ単位のマッピングを行うことで、ブロックよりも小さなサイズのランダムWriteに対して単一のブロックに連続して複数のWriteデータを格納できる。つまり、データ退避、再格納が発生せず、ブロックのErase回数(イレース回数)を抑えることで、ランダムWriteに対する処理効率が向上する。しかし、ページ単位のマッピングを行った場合、マッピングテーブルにおいてブロック単位のマッピングよりも多くのエントリ数を必要とする。そのため、マッピング状態を管理するテーブルの容量が増加して、SSDにおいてマッピングテーブルを格納するために大量のメモリ消費、および制御処理が発生する点が問題である。
 FTLにおけるNANDフラッシュのブロック単位、およびページ単位のマッピングでそれぞれ発生する問題を解決するマッピング方式が示されている。これらの方式では、ブロック単位のマッピングを基本とする一方で、ブロックより小さなサイズのランダムWriteアクセスが行われる論理アドレスに対して、ページ単位のマッピングを行う。ページ単位のマッピングを行う領域を一部に限定することで、マッピングテーブルの容量増加を抑えつつ、ランダムWriteに対する処理効率の向上を実現している。つまり、SSDにおいてFTLは、NANDフラッシュ特有のアクセス処理、およびNANDフラッシュにおいて多くの処理を伴うランダムWriteアクセスに対する最適化を隠蔽する役割を持つ。よって、SSDにアクセスするホストはNANDフラッシュのアクセス特性、ページ、ブロックのサイズといったアクセス単位、およびSSD内部の構成情報を知ることなくアクセスすることが可能である。
 しかしながら、近年、NANDフラッシュの大容量化が進んだ結果、SSDの大容量化が進んでいる。一方でNANDフラッシュを大容量化するための製造プロセス微細化、およびメモリセルに格納される情報量の多値化によって、更新可能な回数が減少する問題が発生している。特に、近年、SSDで用いられる機会が増加した、メモリセルに格納されるビットを多値化した、MLC(Multi Level Cell)、もしくはTLC(Triple Level Cell)と呼ばれるNANDフラッシュは、大容量化、低コスト化を実現する一方で更新可能な回数の制限が特に少ない。つまり、SSDに対するデータ更新頻度、つまりWriteデータ量の削減は、性能だけでなく寿命、信頼性の観点から特に重要性を増している。
 SSDに含まれる NANDフラッシュに対するWriteデータ量を削減するために、FTLにおいて発生する、ブロック間のデータ移動等に伴う、本来のWriteデータ以外を格納するために発生するWriteアクセスの最小化が必要である。そのために、SSD内部のFTLにおけるランダムWriteに対する処理の効率化に加えて、ホストで動作するソフトウェア、Operating System (OS)からのSSDに対するWriteアクセスについての最適化が不可欠である。例えば、FTLにおける最小マッピング単位はページであるため、ホストからSSDに対するWriteは少なくともページサイズでアライメントされており、Writeデータのサイズはページサイズのn倍(nは自然数)であることが求められる。また、SSDのFTLはページ以外にブロック単位で記憶領域のマッピングを行うため、ブロック間のデータ移動を最小化するためには格納データをブロックサイズの単位で連続的に格納する必要がある。
 一方で、SSDに対するブロックサイズよりも小さいランダムWriteアクセスは、可能な限り避ける必要がある。SSDのFTLにおいてランダムWriteアクセスに対する最適化を行う場合、ランダムWriteによって格納されたデータは、ブロックよりも細かいページ単位で管理される。しかしランダムWriteされたデータに対して更新が行われた場合、古いデータが格納されていた領域を再利用するためにブロックのEraseが必要である。よってFTLはデータが格納されていた領域の再利用を行うために、一般にGarbage Collection(GC)、あるいはMergeと呼ばれるブロック間のデータ移動を行う。GC、およびMergeの処理量はランダムWriteされるデータ量に比例する。
 さらに、並列にアクセス可能な複数のNANDフラッシュにおけるブロック、もしくはページで構成されたストライプを単位としてマッピングを行うようにFTLを構成することも可能である。ストライプを単位としてマッピングを行うことで、連続アクセス性能の向上、マッピングテーブルの容量削減が可能である。一方で、論理アドレスに対するマッピング単位が大きくなる。そのため、ストライプサイズが大きくなるほどFTLのマッピング単位よりも小さいサイズのWriteアクセスの割合が増加する。マッピング単位よりも小さなWriteアクセスが行われた場合、SSD内部でWriteデータの格納先に相当する周辺のデータのコピーが発生し、NANDフラッシュに対するWriteアクセスが増加する。
 よって、SSD内部のNANDフラッシュに対するWriteを最小化するために、ホストで動作するソフトウェア、OSにおいてSSD内部のNANDフラッシュのページサイズ、ブロックサイズ等の情報、FTLにおけるマッピング単位、および小さいランダムWriteアクセスに対する処理手順、Garbage Collectionの動作条件といったハードウェア構成、コントローラの動作に関する情報が必要である。しかし、通常SSDはホストに対してハードウェア構成、コントローラの動作を隠蔽しており、これらの情報取得が困難なことが課題である。また、SSDごとにハードウェア構成、コントローラの動作は異なるため、様々な環境構成で動作するソフトウェア、OSにおいて事前に前提となる情報の設定は困難である。
 また、小さいランダムWriteデータに対応するためにページ単位でマッピングを行うFTLを持つSSDでは、記憶領域の再利用において発生するGC、もしくはMergeによるWrite量の増加を防ぐために、NANDフラッシュに対するランダムWriteデータを格納する記憶領域の使用量の把握が必要である。しかし、これらの情報は、通常SSD内部のFTLにおいて管理されているため、ホスト側で動作するソフトウェア、OSから把握が困難なことも課題である。一方で、ホストからSSDに対してWriteを行うソフトウェアは、各Writeアクセスが連続であるか、ランダムであるか、後続のWriteアクセスによってどの程度の頻度で更新されるかといった情報を事前に把握することが可能であるため、格納領域を効率的に決定、管理することが可能である。しかし、SSD内部においてNANDフラッシュに対してデータを格納するFTLは、Writeされたデータが連続であるか、ランダムであるか知ることが困難である。
 《本実施形態の概略》
 本実施形態によれば、アクセス元のホストから、SSDのハードウェア構成、コントローラの動作に関する正確な情報、およびSSDにおけるランダムWriteデータを格納する記憶領域の使用状況に関する情報を用いずに、SSD内部のNANDフラッシュに対してWriteされるデータ量を最小化する。そのために、記憶媒体の論理アドレス空間上に仮想的な記憶媒体(仮想媒体)、および仮想的なキャッシュ(仮想キャッシュ)を定義する。そして、記憶制御装置は、マッピング機能と、アクセス実行機能と、ヒット判定機能と、キャッシュ使用状況管理機能と、負荷判定機能と、処理順序決定機能と、格納先決定機能と、データ移動機能と、記憶媒体アクセス機能とを備える。
 (マッピング機能)
 マッピング機能は、仮想媒体、および仮想キャッシュに対する記憶媒体の論理アドレス空間のマッピングを管理する。すなわち、マッピング機能は、記憶媒体の論理アドレス空間上に仮想的な記憶媒体(仮想媒体)、および仮想的なキャッシュ(仮想キャッシュ)を定義する。記憶媒体の論理アドレスをLA(Logical Address)とした場合、LAをマッピングした仮想媒体の論理アドレス(VDA: Virtual Drive Address)の空間、および仮想キャッシュの論理アドレス(VCA: Virtual Cache Address)の空間を構築する。仮想媒体はホスト上のソフトウェア、OSから参照可能な仮想的な記憶媒体として動作する。つまりユーザはVDAを用いて仮想媒体にアクセスを行う。一方で仮想キャッシュは、ホスト上のソフトウェアからは不可視であり、仮想媒体に対するキャッシュとして動作する。また仮想キャッシュは、Writeされた細かなvBlockより小さいWriteデータを仮想媒体の代わりに格納することで、記憶媒体の特性上発生する内部のWriteデータ量を削減する役割を持つ。マッピング機能は、仮想媒体のVDA、および仮想キャッシュのVCAに対して記憶媒体のLAをvBlock単位で割り当てる。
 (アクセス実行機能)
 アクセス実行機能は、ホストのアクセス要求を受け取り、処理の実行状況を管理して結果を応答する。すなわち、アクセス実行機能は、ソフトウェア、OSから仮想媒体に対するRead、Write要求を受け取り、記憶媒体に対して必要なアクセス処理を行う。また、アクセスの実行状況を管理して、アクセス要求に関する処理の実行完了の応答をホストに対して行う。また、アクセス実行機能は、Write要求と共にアクセス要求元であるソフトウェア、OSによる、後続のWrite要求を含めた連続Writeサイズの予測値、および後続のWrite要求による更新頻度の予測値を受け取る。
 (ヒット判定機能)
 ヒット判定機能は、仮想キャッシュにおけるキャッシュヒットを判定する。すなわち、ヒット判定機能は、ホストからのアクセス要求に対応したデータが仮想キャッシュに格納されているか判定する。また、判定で使用する、仮想媒体のVDAに対応するデータが格納された、仮想キャッシュ内のVCAのマッピング情報を管理する。
 (キャッシュ使用状況管理機能)
 キャッシュ使用状況管理機能は、仮想キャッシュ上に格納された各データの仮想媒体上の対応アドレスを管理する。すなわち、キャッシュ使用状況管理機能は、仮想キャッシュのVCAごとに格納データの、有効・無効の状態、および各データが対応する仮想媒体のVDAの対応を管理する。また、キャッシュ使用状況管理機能は、仮想キャッシュに対して割り当てられた記憶領域のサイズ、および記憶領域に対するキャッシュデータの格納の分布を管理する。
 (負荷判定機能)
 負荷判定機能は、仮想キャッシュの使用量から記憶媒体に関する負荷を判定する。すなわち、負荷判定機能は、仮想キャッシュに対して割り当てられた記憶領域のサイズ、および記憶領域に対するキャッシュデータの格納状態から、仮想媒体に対するGC処理が必要となるまでに格納可能なデータ量を算出し、データ量が事前に定めた条件と比べて減少した場合に負荷状態であると判定する。また、負荷判定機能は、ホストで動作するソフトウェア、OSに対して負荷状態を通知する。
 (処理順序決定機能)
 処理順序決定機能は、次に処理するホストのWrite要求を決定する。すなわち、処理順序決定機能は、ホスト上のソフトウェア、OSからのWriteについて、ソフトウェア、OSから予告される後続のVDAに対するWrite要求の発行予測、更新に関する予測の情報を利用して、各Write要求に対する処理の優先度を算出し、優先度の最も高いWrite要求を次の処理対象として選択する。
 (格納先決定機能)
 格納先決定機能は、格納対象のWriteデータについて仮想媒体、および仮想キャッシュのいずれかから格納先アドレスを決定する。すなわち、格納先決定機能は、処理順序決定機能によって選択されたWrite要求について、Writeデータを仮想キャッシュに対して一時格納するか、仮想キャッシュを経由せずに仮想媒体の指定された格納先VDAに格納するか決定する。仮想キャッシュにWriteデータを一時格納する場合、格納先決定機能は仮想キャッシュにおけるWriteデータの格納先VCAを決定する。一方仮想媒体にWriteデータを直接格納する場合、格納先決定機能は連続Writeサイズの予測値を参照して、現在仮想媒体のVDAとして割り当て済の記憶媒体のLAに上書きするか、マッピング機能を通じて新たな格納先として割り当てられた記憶領域を書き込み先とするようにWriteデータの格納先を決定する。
 (データ移動機能)
 データ移動機能は、仮想キャッシュに格納されたデータを仮想媒体または仮想キャッシュの他の領域に移動する。すなわち、データ移動機能は、負荷判定機能によって判定される負荷が増加して一定の条件を満たした場合に、仮想キャッシュに格納されたデータから移動対象となるデータを選択し、移動先を仮想媒体または仮想キャッシュの他の領域から決定する。
 (記憶媒体アクセス機能)
 記憶媒体アクセス機能は、記憶媒体に対してアクセスを行う。すなわち、記憶媒体アクセス機能は、アクセス実行機能、およびデータ移動機能からの指示を受けて、アクセス要求を記憶媒体に対して発行し、Readアクセスを行った場合は結果を取得する。
 本実施形態による方法は、本実施形態の適用を行わない場合に比べて、ランダムWriteアクセスに対する最適化が不十分なSSDに対して、ハードウェア構成、コントローラの動作に関する情報を用いずにSSD内部で発生するNANDフラッシュ間のデータ移動を削減する。また、SSDに対して発行されたランダムWrite要求のデータ量をホストから可視化することで、Garbage Collectionなどの領域管理処理によるSSD内部の急激な負荷増加を防止可能とすることが効果として挙げられる。
 《本実施形態の構成》
 次に、本実施形態に係る記憶制御装置220を含む情報処理システム200の構成について図面を参照して説明する。なお、以下、独立した装置である場合を記憶制御装置220、他の装置に含まれる場合を記憶制御部220と表現するが、基本的な構成は同様である。
 《情報処理システムの構成》
 図2Aは、本実施形態に係る記憶制御部220を含む情報処理システム200の構成を示すブロック図である。
 図2Aを参照すると、本実施形態においてシステム全体の構成は、データにアクセスする1台以上のホストコンピュータ210、記憶媒体240、および、ホストコンピュータ210と記憶媒体240とを接続するネットワーク250を含む。
 記憶媒体240は、例えばNANDフラッシュで構成されたSSDのような単体または複数の記憶媒体から構成される。記憶制御部220は、記憶媒体240の記憶領域内に、仮想的な記憶媒体として仮想媒体241、および、仮想キャッシュ242を定義する。仮想媒体241、および、仮想キャッシュ242に対する記憶媒体240からの記憶領域割り当て単位を仮想ブロック(vBlock)として事前に定義する。また、仮想媒体241、および、仮想キャッシュ242に対するデータ格納の最小単位を仮想ページ(vPage)として定義する。vBlockには連続したアドレスを持つnページ(nは自然数)のvPageが含まれるものとする。
 本実施形態においては、ホストコンピュータ210に記憶制御部220が搭載されており、OS211やソフトウェア(アプリケーション)212からの仮想的な記憶媒体へのアクセスを受けて、仮想媒体241あるいは仮想キャッシュ242のいずれにアクセスするかを決定して、割り当てられた記憶媒体240の記憶領域をアクセスするようにアドレス制御を行なう。
 ネットワーク250の形態は特に限定されず、ホストコンピュータ210と記憶媒体240とが直接接続される形態であってもよい。また、ホストコンピュータ210はネットワーク250によって接続された複数の装置あるいはシステムによって構成されてもよい。
 なお、図2Aにおいては、記憶媒体240は仮想媒体241と仮想キャッシュ242のみを図示しているが、記憶媒体240がNANDフラッシュで構成されたSSDである場合には、FTL(Flash Translation Layer)などによるマッピング処理が実行されており、それらの既存技術は図示されていない。
 《記憶制御部の機能構成》
 図2Bは、本実施形態に係る記憶制御部220の機能構成を示すブロック図である。
 図2Bを参照すると、記憶制御部220は、バッファメモリ221と、マッピング部222と、アクセス実行部223と、ヒット判定部224と、キャッシュ使用状況管理部225と、負荷判定部226と、処理順序決定部227と、格納先決定部228と、データ移動部229と、記憶媒体アクセス部230と、仮想キャッシュポインタ231と、を備える。以下、これら機能構成部について、順次にその構成と動作を詳細に説明する。
 (バッファメモリ)
 バッファメモリ221は、ホストコンピュータ210で動作するソフトウェアやOSなどからのWrite要求について、記憶媒体240に対する書き込みが完了するまでWriteを行うデータを保持する。また、バッファメモリ221は、アクセス要求元であるソフトウェアやOSによる、後続のWrite要求を含めた連続Writeサイズの予測値と、後続のWrite要求によって更新される頻度の予測値とを保持する。バッファメモリ221は、ホストコンピュータ210のメモリとして現在多く用いられるDRAM(Dynamic Random Access Memory)以外に、例えばMRAM(Magnetoresistive Random Access Memory)などの不揮発性を持つメモリデバイスなどでもよい。
 図3は、本実施形態に係るバッファメモリ221の構成を示す図である。図3には、バッファメモリ221の構成の概要310と、バッファメモリ221のテーブル構成320と、を図示している。
 バッファメモリ221は、仮想媒体241におけるWrite先の論理アドレス(VDA)
を表す、Write先アドレス311と、対応するWriteデータ312と、を格納する。併せて、アクセス要求元であるソフトウェアやOSによる、後続のWrite要求を含めた予測Writeサイズ313と、後続のWrite要求によって更新される頻度の予測値であるデータ更新頻度314と、を格納する。
 また、バッファメモリ221におけるWrite要求されたデータは、図3に示した形式に限定されない。テーブル構成320には、例えば、格納されたWriteデータの処理順序をアクセス要求の時刻を用いて決定するために、アクセス要求を受け付けた時刻情報であるアクセス要求時刻323に加えて、使用中か空きかを表わすフラグ321や後述の処理順序決定部227の決定に従う処理順序322が記憶されている。
 (マッピング部)
 マッピング部222は、仮想媒体241の論理アドレス(VDA)空間、および仮想キャッシュ242の論理アドレス(VCA)空間をそれぞれ定義する。また、VDA、VCAの空間に対する、記憶媒体240のLAの割り当てをマッピングとして管理する。マッピング部222は、仮想媒体241および仮想キャッシュ242に対して、ホストコンピュータ210に接続された記憶媒体240の記憶領域を、LAのvBlock単位で割り当てる。また、マッピング部222は、VDA、VCAに対応する各vBlockについて、vBlockに含まれる各vPageに対してデータを格納済みであるか管理する。仮想媒体241、仮想キャッシュ242に割り当てた記憶領域は、割り当てた際と同一単位で開放、あるいは再確保を行うことで、仮想媒体241、仮想キャッシュ242の容量を可変としてもよい。
 図4および図5は、本実施形態に係る仮想媒体マッピングテーブル400と、仮想キャッシュマッピングテーブル500の構成を示す図である。なお、図4と図5とに記載した数値は一例であってこれに限定されない。
 仮想媒体マッピングテーブル400は、仮想媒体241のVDAに対して割り当てられた、記憶媒体240の各vBlockのLAを格納する。また、仮想媒体マッピングテーブル400は、各vBlockについて、先頭からWrite済みのvPageの数を格納する。同様に、仮想キャッシュマッピングテーブル500についても、仮想キャッシュ242の各VCAに対して割り当てられた、記憶媒体240のvBlockのLA、および各vBlockの先頭からWrite済みのvPage数を格納する。なお、記憶媒体240が複数存在する場合、図4および図5において図示していないが、各記憶媒体を識別するためのIDなどをLAと併せて格納する。
 仮想媒体マッピングテーブル400、仮想キャッシュマッピングテーブル500のデータ形式は、図4、図5に示した形式に限定されず、例えば、記憶媒体240に対するアクセスを表す識別子は数字のIDに限らず、任意の形式でよい。また、図4、図5では仮想媒体241、仮想キャッシュ242に割り当てられたvBlockについて、vBlockに含まれる各vPageに対してデータを格納済みであるか否かについて、vBlockの先頭からWrite済みのvPageの数で管理を行っている。しかし、例えば、ビットマップで各vPageに対してデータがWrite済みであるか否かを管理してもよい。さらに、図4、図5では、仮想媒体241、仮想キャッシュ242に割り当てられた全てのvBlockについて、データを格納済であるか否かを管理しているが、最近Writeされた一部のvBlockのみを管理対象としてもよい。
 (アクセス実行部)
 アクセス実行部223は、ホストコンピュータ210で動作するソフトウェアやOSからのアクセス要求を受け取り、記憶媒体240に対して必要なアクセス処理を行う。また、アクセス実行部223は、Write要求と共にアクセス要求元であるソフトウェアやOSによる、後続のWrite要求を含めた連続Writeサイズの予測値と、後続のWrite要求によって更新される頻度の予測値とを受け取る。なお、記憶制御部220が連続Writeサイズの予測値や更新される頻度の予測値を算出できる場合は、アクセス実行部223が連続Writeサイズの予測値や更新される頻度の予測値を受け取る必要はない。
 アクセス実行部223は、受け取ったアクセス要求がReadである場合は、バッファメモリ221に格納されたWriteデータにヒットしているか否か確認を行い、ヒットしている場合はバッファメモリ221からデータを読み出して結果を返す。バッファメモリ221に格納されたWriteデータにヒットしていない場合は、ヒット判定部224によって仮想キャッシュ242にヒットしているか否か確認を行う。仮想キャッシュ242にヒットしている場合は、仮想キャッシュ242のVCA用いてマッピング部222を通じてアドレス変換を行い、記憶媒体アクセス部230を介して記憶媒体240から要求されたデータを読み出して結果を返す。仮想キャッシュ242にヒットしない場合は、アクセス要求の仮想媒体241のVDAを用いてマッピング部222を通じてアドレス変換を行い、記憶媒体アクセス部230を介して記憶媒体240から要求されたデータを読み出して結果を返す。
 一方、アクセス要求がWriteである場合、アクセス実行部223はWriteデータをバッファメモリ221に格納する。その後、処理順序決定部227によってWrite対象に決定された後に、格納先決定部228を介してWriteデータの格納先となる仮想キャッシュ242のVCA、または、仮想媒体241のVDAを決定する。アクセス実行部223は、仮想媒体241のVDAからマッピング部222を介して、対応する記憶媒体240のLAを求め、記憶媒体アクセス部230を介して記憶媒体240に格納する。また、マッピング部222を介して仮想媒体マッピングテーブル400における、データ格納先となったvBlockに含まれる各vPageに対してデータを格納済みであるか否かを示す情報を更新する。加えて、ヒット判定部224およびキャッシュ使用状況管理部225に対して、Writeの反映を指示して完了を通知する。最後に、アクセス実行部223は、記憶媒体240に対する格納が完了したWriteデータをバッファメモリ221から削除する。
 (ヒット判定部)
 ヒット判定部224は、アクセス要求が仮想キャッシュ242に格納されているか否かを判定して、判定結果を応答する。また、ヒット判定部224は、仮想キャッシュ242に格納された各データに対応する仮想媒体241のVDAを管理する。そして、ヒット判定部224は、仮想キャッシュ242に対する新規データの格納、および、仮想キャッシュ242から仮想媒体241に対するデータの移動に伴い、格納データの仮想媒体241上のVDA、および、キャッシュされたデータの仮想キャッシュ242におけるVCAを更新する。
 図6は、本実施形態に係るヒット判定テーブル600の構成を示す図である。ヒット判定テーブル600は、ヒット判定部224におけるヒット判定に使用される。
 ヒット判定テーブル600は、キャッシュに格納されたデータに対応する仮想媒体241のVDAを格納する。また、ヒット判定テーブル600は、仮想媒体241のvBlockごとにキャッシュされているvPageの数を格納する(601参照)。そして、キャッシュされているvPageの数だけ、仮想媒体におけるvPageのVDA603と仮想キャッシュにおけるvPageのVCA604との組がリンクされる(602参照)。図6におけるヒット判定テーブル600は、仮想媒体241において同一vBlock内のvPageが同じハッシュ値を持つハッシュテーブルの形式であるが、図6のデータ形式に限定されない。
 (キャッシュ使用状況管理部)
 キャッシュ使用状況管理部225は、仮想キャッシュ242の各VCAにおける格納データの有効あるいは無効の状態、および有効な各データに対する、仮想媒体241におけるVDAの対応関係を管理する。また、キャッシュ使用状況管理部225は、仮想キャッシュ242のVCAの空間における有効なキャッシュデータの分布情報として、一定サイズの領域ごとに有効なキャッシュデータ量を管理する。さらにキャッシュ使用状況管理部225は、仮想キャッシュ242に割り当てられた記憶媒体240の記憶領域の容量を記録する。
 図7Aは、本実施形態に係る有効データテーブル700の構成を示す図である。有効データテーブル700は、キャッシュ使用状況管理部225により参照される。
 有効データテーブル700は、仮想キャッシュ242における各vPageのVCAに対応した、仮想媒体241におけるvPageのVDA、およびvBlock毎の有効なvPageの数を記録する。有効データテーブル700のデータ形式は、図7に示された形式に限定されず、例えば有効なvPageの数、仮想キャッシュ242に割り当てられた記憶媒体240の記憶領域の容量をvBlock以外の単位で管理してもよい。
 (負荷判定部)
 負荷判定部226は、キャッシュ使用状況管理部225を介して有効データテーブル700を参照して、仮想キャッシュ242のVCAの空間内で有効なキャッシュデータ容量の合計を取得する。負荷判定部226は、取得された容量が事前に決定された基準の容量を上回った場合に、仮想キャッシュ242を多く使用している高負荷状態と判定する。なお、高負荷状態の判定は、仮想キャッシュ242に割り当てられた記憶容量に対する、仮想キャッシュ242に記憶された有効なデータ量の比率が閾値を超えた場合としてもよい。負荷判定部226は、高負荷状態と判定された場合に、ホストコンピュータ210で動作する仮想媒体241に対するアクセスを行うソフトウェアやOSに対して、比率通知などにより高負荷状態を通知して、高負荷状態を解消するようにWrite要求の発行頻度の抑制を促す。
 また、負荷判定部226は、判定された負荷が高い場合に、仮想キャッシュ242の容量追加を行う。具体的には、マッピング部222の仮想キャッシュマッピングテーブル500に対して、対応するエントリが存在せず記憶領域が未割当の仮想キャッシュ242のVCAに対して新たなエントリを定義する。そして、記憶媒体240のvBlockのうち、仮想媒体241および仮想キャッシュ242のいずれにも未割当のものを選択して、対応するLAを定義済みのエントリに格納する。
 さらに、負荷判定部226は、判定された負荷が低い場合に、仮想キャッシュ242の容量削減を行う。具体的には、有効データテーブル700を参照して、仮想キャッシュ242のVCA上において有効なvPage数が少ないvBlockを選択し、vBlockに格納されたデータの移動をデータ移動部229に指示する。負荷判定部226は、データ移動部229によるvBlockに格納されたデータの移動が完了した後に、マッピング部222の仮想キャッシュマッピングテーブル500にアクセスを行い、vBlockに対応するエントリを削除して、記憶媒体240のvBlockを解放する。
 (処理順序決定部)
 処理順序決定部227は、バッファメモリ221に格納されたWriteデータのうち、次に仮想媒体241または仮想キャッシュ242に格納するデータを選択する。具体的には、各Writeデータが仮想媒体241にWriteされる際に占有するvPage数と、バッファメモリ221にWriteデータと共に格納された、連続Writeデータのアクセス長の予測値に相当するWriteデータが到着した後に仮想媒体241にWriteされた場合に占有されるvPage数とを比較する。比較の結果、vPage数が同一であるWriteデータから、WriteデータがvBlockにおいて占有するvPageの数が最も多いWriteデータを選択する。一方、比較の結果、vPage数が同一となるWriteデータが存在しない場合は、Write要求と共に受け取った、連続Writeデータのアクセス長の予測値から得られる占有予定のvPageの数と、現在のWriteデータが占有するvPageの数を比較して、vPageの数の差が最小のWriteデータを選択する。すなわち、後続のWriteデータが到着する前にWriteしてしまうと、同じvBlockに対して何度も更新が発生してしまうため、後続のデータが到着する予定のないWriteを優先して、仮想媒体241(または仮想キャッシュ242)に対するWriteを行う。
 (格納先決定部)
 格納先決定部228は、アクセス実行部223からの要求で、処理順序決定部227によって選択された次の処理対象であるWrite要求について、仮想キャッシュ242に一時格納するか、もしくは仮想媒体241に直接格納するか決定する。具体的には、アクセス元のソフトウェアやOSによる連続Writeデータのアクセス長の予測値、および/または、Writeデータが後続のWrite要求によって更新される頻度の予測値から、記憶媒体240に対する総Write量の期待値を求める。一方は、Writeデータが仮想キャッシュ242を経由して最終的にデータ移動部229によって仮想媒体241にWriteされる場合の、記憶媒体240に対する総Write量の期待値である。他方は、仮想キャッシュ242を経由せずに直接、仮想媒体241にWriteを行う場合の、記憶媒体240に対する総Write量の期待値である。そして、格納先決定部228は、仮想キャッシュ242、もしくは仮想媒体241のうち、Write量の期待値が少なくなる方を格納先として選択する。
 図7Bは、本実施形態に係る格納先決定テーブル710の構成を示す図である。図7Bの格納先決定テーブル710は、格納先決定の条件を格納する条件テーブル711と、格納先を決定するためにメモリに一時生成される決定テーブル712と、を含む。
 条件テーブル711は、負荷判定部226で判定された負荷が基準値α以下か否かの条件と、仮想媒体に直接、格納した場合の記憶媒体に対する総Write量の期待値と、仮想キャッシュへ格納した後に仮想媒体に格納する場合の記憶媒体に対する総Write量の期待値との比較結果と、から格納先を決めるための条件を示したテーブルである。本実施形態においては、仮想キャッシュ242の負荷が基準値αを越えている場合は、記憶媒体に対する総Write量期待値の条件は考慮せずに直接、仮想媒体241への格納を決定する。一方、負荷が基準値α以下の場合は、記憶媒体に対する総Write量期待値の条件を考慮し、総Write量期待値が小さい方を格納先と決定する。かかる条件テーブル711は、ストレージに準備され、格納先決定時にメモリに読み出される。
 決定テーブル712は、メモリに一時記憶されて格納先決定に使用される。なお、図7Bには格納先決定の動作を明瞭にするため、複数のWrite要求を示しているが、メモリに一時記憶されるのは1つのWrite要求である。決定テーブル712は、バッファメモリ221から処理順序決定部227により決定されて読み出された、各IDのWrite要求内容と、予測Writeサイズや更新頻度に基づいて算出した、仮想媒体に直接、格納した場合の記憶媒体に対する総Write量の期待値と仮想キャッシュに一旦、格納してから仮想媒体に移動する場合の記憶媒体に対する総Write量の期待値とを記憶する。そして、負荷判定部226で判定された負荷と基準値αとの比較結果と、仮想媒体に直接格納した場合の記憶媒体に対する総Write量の期待値と仮想キャッシュに一旦、格納してから仮想媒体に移動する場合の記憶媒体に対する総Write量の期待値との比較結果、あるいは他の条件を考慮して、決定した格納先を記憶する。
 なお、格納先決定の条件およびその組み合わせは、上記例に限定されない。例えば、負荷値に応じて、仮想キャッシュに格納するWriteデータのサイズを制限するものであってもよい。その場合、負荷値αが高くなるにつれて、サイズの予測値が大きいWriteデータを直接、仮想媒体に書くようにする。また、一定サイズ以上のWriteは負荷値に関係なく直接、仮想媒体に格納する、などが考えられる。
 格納先決定部228は、格納先が仮想媒体241と決定した場合、アクセス実行部223に格納先として指定されたvBlockのVDAを格納先決定結果として返す。
 一方、格納先決定部228は、仮想キャッシュ242にWriteデータを格納すると決定した場合、格納先vBlockのVCAを記録する仮想キャッシュポインタ231からの情報を待つ。格納先決定部228は、格納先が仮想キャッシュ242である場合、仮想キャッシュポインタ231からデータを格納中のvBlockのVCAを取得する。そして、格納先決定部228は、マッピング部222によってvBlockにおいて次のWriteデータを格納すべき、かつ、データを格納していないvPageのうち最も先頭に近いものを特定して、アクセス実行部223にvPageに対応するVCAを格納先決定結果として返す。最後に、格納先決定部228は、vPageを含むvBlockの全てのページにデータを格納済の状態となった場合、キャッシュ使用状況管理部225を介して有効データテーブル700を参照する。そして、仮想キャッシュ242のvBlockにおいて有効なデータを格納するvPage数が最も少ないvBlockを選択し、仮想キャッシュポインタ231をvBlockのVCAで更新する。
 (データ移動部)
 データ移動部229は、負荷判定部226によって判定される負荷が増加して一定の条件を満たした場合に、仮想キャッシュ242から仮想媒体241に移動するデータの選択を開始する。まず、データ移動部229は、仮想媒体241のVDAの空間上のvBlock単位の各領域について、ヒット判定部224のヒット判定テーブル600を参照する。そして、仮想キャッシュ242にキャッシュされているデータ量(vPage数)が最も多い、仮想媒体241のvBlockに着目する。データ移動部229は、仮想キャッシュ242のvPageから、仮想媒体241において着目したvBlockに格納される有効なvPage全てを移動対象として選択する。そして、データ移動部229は、マッピング部222によってvPage、およびvBlockを指し示す記憶媒体240のLAを取得して、記憶媒体アクセス部230に対してLAの指し示すvBlockに対するデータ移動を指示する。その後、データ移動部229は、マッピング部222、ヒット判定部224、キャッシュ使用状況管理部225を介して、データ移動の対象となった仮想キャッシュ242のvPageに関する管理情報を更新する。
 また、データ移動部229は、負荷判定部226から仮想キャッシュ242のVCAによって指定されるvBlockについて、仮想キャッシュ242から仮想媒体241に対するデータの移動、あるいは仮想キャッシュ242の異なるvBlockに対する移動を行う。データ移動部229は、vBlockに含まれる各vPageについて、マッピング部222によってvPageおよびvBlockを指し示す記憶媒体240のLAを取得して、記憶媒体アクセス部230に対してLAの指し示すvBlockに対するデータ移動を指示する。その後、データ移動部229は、マッピング部222、ヒット判定部224、キャッシュ使用状況管理部225を介してデータ移動の対象となった仮想キャッシュ242のvPageに関する管理情報を更新する。
 (記憶媒体アクセス部)
 記憶媒体アクセス部230は、アクセス実行部223およびデータ移動部229からの指示を受けて、アクセス要求を記憶媒体240に対して発行する。Readアクセスを行った場合は、Read結果について、アクセス指示を行ったアクセス実行部223、またはデータ移動部229に返す。
 《ホストコンピュータのハードウェア構成》
 図8Aは、本実施形態に係る記憶制御部220を含むホストコンピュータ210のハードウェア構成を示すブロック図である。なお、図8Aにおいては、記憶制御部220はホストコンピュータ210のソフトウェア処理として図示するが、記憶制御部220を、ホストコンピュータ210とは独立したワンチップのコンピュータで実現してもよい。
 図8Aで、CPU(Central Processing Unit)810は演算制御用のプロセッサであり、プログラムを実行することで図2Bの記憶制御部220の機能構成部を実現する。ROM(Read Only Memory)820は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。また、通信制御部830は、ネットワーク250を介して記憶媒体240と通信する。なお、CPU810は1つに限定されず、複数のCPUであっても、あるいは画像処理用のGPUを含んでもよい。また、通信制御部830は、CPU810とは独立したCPUを有して、RAM(Random Access Memory)840の領域に送受信データを書き込みあるいは読み出しするのが望ましい。また、RAM840とストレージ850との間でデータを転送するDMACを設けるのが望ましい(図示なし)。さらに、入出力インタフェース860は、CPU810とは独立したCPUを有して、RAM840の領域に入出力データを書き込みあるいは読み出しするのが望ましい。したがって、CPU810は、RAM840にデータが受信あるいは転送されたことを認識してデータを処理する。また、CPU810は、処理結果をRAM840に準備し、後の送信あるいは転送は通信制御部830やDMAC、あるいは入出力インタフェース860に任せる。
 RAM840は、CPU810が一時記憶のワークエリアとして使用するランダムアクセスメモリである。RAM840には、本実施形態の実現に必要なデータを記憶する領域が確保されている。バッファメモリ221は、ソフトウェアやOSから仮想的な記憶媒体へのアクセスをバッファする。仮想媒体マッピングテーブル400は、仮想媒体241のアドレス(VDA)を記憶媒体240のアドレス(LA)にマッピングするためのテーブルである。仮想キャッシュマッピングテーブル500は、仮想キャッシュ242のアドレス(VCA)を記憶媒体240のアドレス(LA)にマッピングするためのテーブルである。仮想キャッシュポインタ231は、仮想キャッシュの次に格納するアドレスを記憶する。ヒット判定テーブル600は、仮想的な記憶媒体へのアクセスが仮想キャッシュ242にエントリされたデータであるか否かを判定し、ヒットした場合に仮想キャッシュ242のアドレス(VCA)を提供するテーブルである。有効データテーブル700は、仮想キャッシュ242に格納された有効データを示すテーブルである。格納先決定テーブル710は、格納先を仮想媒体とするか、仮想キャッシュを介するかを決定するための条件と、その条件に基づき格納先決定に使用されるデータと、を記憶するテーブルである。送受信データ841は、通信制御部830を介して通信されるデータである。入出力データ842は、入出力インタフェース860を介して入出力されるデータである。ワークエリア843は、記憶制御以外の処理で使用するエリアである。
 ストレージ850には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。アプリケーション格納部851は、ホストコンピュータ210が提供するアプリケーションソフトウェアを検索可能に格納している。ストレージ850には、以下のプログラムが格納される。OS852は、本ホストコンピュータ210の全体を制御する基礎プログラムである。アプリケーションソフトウェア853は、現在、本ホストコンピュータ210が実行中のアプリケーションプログラムである。記憶制御プログラム854は、OS852やアプリケーションソフトウェア853からの仮想的な記憶媒体へのアクセスを受けて、本実施形態のアクセス制御を実現するプログラムである。Write制御モジュール855は、記憶制御プログラム854における、仮想的な記憶媒体へのWriteを制御するモジュールである。Read制御モジュール856は、記憶制御プログラム854における、仮想的な記憶媒体からのReadを制御するモジュールである。データ移動モジュール857は、所定条件を満たせば、仮想キャッシュ242から仮想媒体241へのデータ移動、あるいは、仮想キャッシュ242内のデータ移動を行なうモジュールである。通信制御プログラム858は、通信制御部830を介した記憶媒体240との通信を制御するプログラムである。
 入出力インタフェース860は、入出力機器との入出力データをインタフェースする。入出力インタフェース860には、表示部861、操作部862、が接続される。また、本ホストコンピュータ210には、さらに、音声出力部であるスピーカや、音声入力部であるマイク、あるいは、GPS位置判定部が接続されてもよい。
 なお、図8AのRAM840やストレージ850には、ホストコンピュータ210が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
 《記憶制御部の処理手順》
 次に、図2A~図8Aの構成要素を使用した本実施形態の記憶制御の処理手順を、図8B~図13を参照して説明する。
 図8Bは、本実施形態に係る記憶制御部220の処理手順を示すフローチャートである。このフローチャートは、図8AのCPU810がRAM840を用いて実行し、図2Bの機能構成部の処理を実現する。
 記憶制御部220は、ステップS811において、バッファメモリ221の次の処理順序の処理命令を判定して、仮想的な記憶媒体からのRead命令であるか否かを判定する。Read命令と判定した場合、記憶制御部220は、ステップS813において、Read命令に従った仮想媒体からのRead処理を実行する。
 Read命令でないと判定した場合、記憶制御部220は、ステップS821において、仮想的な記憶媒体からのWrite命令であるか否かを判定する。Write命令と判定した場合、記憶制御部220は、ステップS823において、Write命令に従った仮想媒体へのWrite処理を実行する。仮想キャッシュの負荷が閾値よりも大きいか否かを判定する。負荷が閾値よりも大きいと判定した場合、記憶制御部220は、ステップS833において、仮想キャッシュのデータ移動処理を実行する。
 (Read処理)
 図9は、本実施形態に係るRead処理(S813)の手順を示すフローチャートである。図9のフローチャートは、ホストコンピュータ210で動作するソフトウェアやOSからRead要求を受け取り、Read結果を応答する。
 記憶制御部220のアクセス実行部223は、ホストコンピュータ210で動作するソフトウェアやOSからの仮想記憶媒体へのRead要求を受け取ると、バッファメモリ221に格納されたWriteデータにヒットしているか確認を行う(ステップS901)。バッファメモリ221に格納されたWriteデータにヒットしていた場合(ステップS903のYes判定)、アクセス実行部223はバッファメモリ221からヒットしたWriteデータを読み出し、アクセス元のソフトウェアやOSに結果を返して処理を終了する(ステップS905)。
 バッファメモリ221に格納されたWriteデータにヒットしていない場合(ステップS903のNo判定)、アクセス実行部223はヒット判定部224によって仮想記憶媒体へのRead要求が仮想キャッシュ242に格納されたアドレスにヒットしているか確認を行う(ステップS907)。仮想キャッシュ242に格納されたアドレスにヒットした場合(ステップS909のYes判定)、アクセス実行部223はマッピング部222によって、ヒットしたデータが格納された仮想キャッシュ242上のVCAを、記憶媒体240のLAに変換する(ステップS911)。そして、アクセス実行部223は、ステップS911で変換したLAを指定して、記憶媒体アクセス部230を通じて記憶媒体240に格納されたデータを読み出し、アクセス元のソフトウェアやOSに結果を返して処理を終了する(ステップ913)。
 仮想キャッシュ242に格納されたアドレスにヒットしなかった場合(ステップS909のNo判定)、アクセス実行部223はマッピング部222によって、ホストコンピュータ210からのアクセス要求において指定された仮想媒体241のVDAを、記憶媒体240のLAに変換する(ステップS915)。そして、アクセス実行部223は、ステップS915で変換したLAを指定して、記憶媒体アクセス部230を通じて記憶媒体240に格納されたデータを読み出し、アクセス元のソフトウェアやOSに結果を返して処理を終了する(ステップS917)。
 以上のステップS901からS917までの処理を行い、本実施形態においてホストコンピュータ210で動作するソフトウェアやOSから仮想的な記憶媒体からのRead要求を受け取り、Read結果を応答する動作が完了する。
 (Write処理)
 図10は、本実施形態に係るWrite処理(S823)の手順を示すフローチャートである。
 記憶制御部220のアクセス実行部223は、ホストコンピュータ210で動作するソフトウェアやOSからのWrite要求を受け取る。併せて、アクセス実行部223は、アクセス要求元であるソフトウェアやOSによって予測されている、後続のWrite要求を含めた連続Writeサイズの予測値と、後続のWrite要求によって上書きされる頻度との情報を受け取る。そして、アクセス実行部223は、バッファメモリ221に格納されたWriteデータにヒット、または結合可能なWrite要求が存在するか確認を行う(ステップS1001)。
 バッファメモリ221に格納されたWriteデータがヒット、または結合可能なWrite要求が存在した場合(ステップS1003のYes判定)、アクセス実行部223はヒットしたWriteデータを上書き、または結合して新たなWriteデータをバッファメモリ221に格納する(ステップS1005)。一方、バッファメモリ221に格納されたWriteデータがヒットしていない場合(ステップS1003のNo判定)、アクセス実行部223はステップS1001で受け取ったWriteデータを新たなWriteデータとしてバッファメモリ221に格納する(ステップS1007)。
 ステップS1001で受け取ったWrite要求が、処理順序決定部227によって次に仮想媒体241と仮想キャッシュ242のいずれかに格納する対象として選択されると、アクセス実行部223は、格納先決定部228を用いて、Writeデータの格納先領域(仮想媒体241か仮想キャッシュ242か)、および格納先領域における論理アドレス(VDA/VCA)を決定する(ステップS1009)。
 格納先決定部228によって決定された格納先領域が仮想媒体241である場合(ステップS1011のYes判定)、アクセス実行部223は、ステップS1009で決定された仮想媒体241のVDAに対して処理順序決定部227によって選択されたWriteデータの格納処理を行う(ステップS1013)。一方、格納先決定部228によって決定された格納先領域が仮想キャッシュ242である場合(ステップS1011のNo判定)、アクセス実行部223は、ステップS1011で決定された仮想キャッシュ242のVCAに対して処理順序決定部227によって選択されたWriteデータの格納処理を行う(ステップS1015)。
 アクセス実行部223は、ステップS1013またはステップS1015において格納処理が完了したWriteデータをバッファメモリ221から削除し、アクセス元のソフトウェアやOSに完了を通知して処理を終了する(ステップS1017)
 以上のステップS1001からS1017までの処理を行い、本実施形態においてホストコンピュータ210で動作するソフトウェアやOSからWrite要求を受け取り、処理を完了するまでの動作が完了する。また、ステップS1017において行う、アクセス元のソフトウェアやOSに対するWrite要求の完了通知は、バッファメモリ221にWriteデータが格納されるステップS1005またはステップS1007の時点で行ってもよい。
 (仮想媒体への格納処理)
 図11Aは、本実施形態に係る仮想媒体への格納処理(S1013)の手順を示すフローチャートである。
 記憶制御部220のアクセス実行部223は、ステップS1009で取得した仮想媒体241のVDAを、マッピング部222によって記憶媒体240のLAに変換する(ステップ1101)。次に、アクセス実行部223は、記憶媒体アクセス部230を介して、処理順序決定部227によって選択されたWrite要求のWriteデータを、ステップS1101で変換されたLAが指し示す、記憶媒体240のvBlockに格納する(ステップS1103)。そして、アクセス実行部223は、マッピング部222を介して仮想媒体マッピングテーブル400における、Writeデータの格納先となった、ステップS1009で取得した仮想媒体241のVDAが指し示すvBlockに対して、データがvBlock内のvPageに格納された状態に更新する。具体的には、図4の仮想媒体マッピングテーブル400で示される、vBlockの先頭からWrite済みのvPageの数に対して、ステップS1103において記憶媒体アクセス部230によってWriteデータが書き込まれたvPageの値に変更する(ステップS1105)。
 アクセス実行部223はヒット判定部224により、処理順序決定部227によって選択されたWrite要求について、更新前のWriteデータが仮想キャッシュ242に格納されたアドレスにヒットしているか確認を行う(ステップS1107)。Write要求が仮想キャッシュ242に格納されたアドレスにヒットしなかった場合(ステップS1109のYes判定)、アクセス実行部223は、ステップS1013における、アクセス実行部223によるWriteデータの格納処理を実行する処理を完了する。
 一方、Write要求が仮想キャッシュ242に格納されたアドレスにヒットした場合(ステップS1109のNo判定)、アクセス実行部223は、ヒット判定部224を介して、ヒット判定テーブル600における更新前のWriteデータを表すエントリである、ステップS1009で取得した仮想媒体241のVDAに等しいエントリを削除する(ステップS1111)。アクセス実行部223は、キャッシュ使用状況管理部225を介して、有効データテーブル700における、更新前のWriteデータに対応したエントリを更新する。具体的には、ステップS1107において得られた、キャッシュヒットしたエントリを表す仮想キャッシュ242のVCAに対応する、有効データテーブル700のエントリを無効状態に変更する。また、VCAを含む、vBlock毎の有効なvPageの数を、無効になったキャッシュエントリのvPageの数を引いた値に変更して、ステップS1013における、アクセス実行部223によるWriteデータの仮想媒体への格納処理を実行する処理を完了する(ステップS1113)。
 以上のステップS1101からS1113までの処理を行い、本実施形態においてステップS1013における、記憶制御部220のアクセス実行部223によるWriteデータの仮想媒体への格納処理を実行する動作が完了する。また、ステップS1111とステップS1113の実行順序は、入れ替えてもよい。
 (仮想キャッシュへの格納処理)
 図11Bは、本実施形態に係る仮想キャッシュへの格納処理(S1015)の手順を示すフローチャートである。
 記憶制御部220のアクセス実行部223は、ステップS1009で取得した仮想キャッシュ242のVCAを、マッピング部222によって記憶媒体240のLAに変換する(ステップS1121)。次に、アクセス実行部223は、記憶媒体アクセス部230を介して、処理順序決定部227によって選択されたWrite要求のWriteデータを、ステップS1121で変換されたLAが指し示す、記憶媒体240のvPageに格納する(ステップS1123)。そして、アクセス実行部223は、マッピング部222を介して仮想キャッシュマッピングテーブル500における、Writeデータの格納先となった、ステップS1009で取得した仮想キャッシュ242のVCAが指し示すvPageのエントリについて、データが格納された状態に更新する。具体的には、図5の仮想キャッシュマッピングテーブル500で示される、vBlockの先頭からWrite済みのvPageの数に対して、ステップS1123において記憶媒体アクセス部230によってWriteデータが書き込まれたvPageの値を加算する(ステップS1125)。
 アクセス実行部223はヒット判定部224により、処理順序決定部227によって選択されたWrite要求について、更新前のWriteデータが仮想キャッシュ242に格納されたアドレスにヒットしているか確認を行う(ステップS1127)。Write要求が仮想キャッシュ242に格納されたアドレスにヒットしなかった場合(ステップS1129のNo判定)、ステップS1133以降の処理を実行する。
 一方、Write要求が仮想キャッシュ242に格納されたアドレスにヒットした場合(ステップS1129のYes判定)、アクセス実行部223は、キャッシュ使用状況管理部225を介して、有効データテーブル700における、更新前のWriteデータに対応したエントリを更新する。具体的には、ステップS1127において得られた、キャッシュヒットしたエントリを表す仮想キャッシュ242のVCAに対応する、有効データテーブル700のエントリを無効状態に変更する。また、VCAを含む、vBlock毎の有効なvPageの数を、無効になったキャッシュエントリのvPageの数を引いた値に変更する(ステップS1131)。
 アクセス実行部223は、ヒット判定部224を介してヒット判定テーブル600に対して、処理順序決定部227によって選択されたWrite要求のWrite先アドレスとして指定された、仮想媒体241のVDAに等しいエントリを追加、または修正する(ステップS1133)。アクセス実行部223は、キャッシュ使用状況管理部225を介して、有効データテーブル700における、更新後のWriteデータに対応したエントリを更新する。具体的には、ステップS1127において得られた、キャッシュヒットしたエントリを表す仮想キャッシュ242のVCAに対応する、有効データテーブル700のエントリを、Write要求のWrite先アドレスとして指定された、仮想媒体241のVDAに変更する。また、VCAを含む、vBlock毎の有効なvPageの数に、新たに仮想キャッシュ242に格納したvPageの数を加算して、ステップS1015における、アクセス実行部223によるWriteデータの仮想キャッシュへの格納処理を実行する処理を完了する(ステップS1135)。
 以上のステップS1121からS1135までの処理を行い、本実施形態においてステップS1015における、記憶制御部220のアクセス実行部223によるWriteデータの仮想キャッシュへの格納処理を実行する動作が完了する。
 (格納先領域の決定処理)
 図12は、本実施形態に係る格納先領域の決定処理(S1009)の手順を示すフローチャートである。
 記憶制御部220の格納先決定部228は、アクセス実行部223からWrite要求の仮想媒体241に対する格納先VDA、データ長を受け取る。併せて、格納先決定部228は、アクセス要求元であるソフトウェアやOSによる、後続のWrite要求を含めた連続Writeサイズの予測値と、後続のWrite要求によって上書きされる頻度の予測値とを受け取る(ステップS1201)。
 格納先決定部228は、負荷判定部226から負荷情報を取得し、事前に定めた負荷の基準値と比較する(ステップS1203)。負荷が基準値を上回った場合(ステップS1205のNo判定)、格納先決定部228は、ステップS1215以降の処理を実行する。
 一方、負荷が基準値以下の場合(ステップS1205のYes判定)、格納先決定部228は、Writeデータが直接、仮想媒体241にWriteされる場合の記憶媒体240に対する総Write量の期待値を計算する。Writeデータを直接、仮想媒体241にWriteする場合はvBlock単位で処理を行うため、Writeデータの格納以外に、vBlock内のWriteデータが格納されないvPageに対する退避処理が発生する。そのため、現在のWriteデータを直接、仮想媒体241に格納した時点で、Writeデータ量はvBlockの容量に等しくなる。しかし、一方で、後続で連続的にWriteされる予定のWriteデータが存在する場合、それらのWriteデータが格納される予定のvPageに対する退避処理は不要である。つまり、後続のWrite要求を含めた連続Writeサイズの予測値を“A”、vBlockのサイズを“B”とした場合に、Writeデータ量の期待値はn×B(n≧A/Bを満たす最小の自然数)で求められる(ステップS1207)。
 次に、格納先決定部228は、Writeデータが仮想キャッシュ242に格納され、その後、仮想媒体241にWriteされる場合の記憶媒体240に対する総Write量の期待値を計算する。まず、Writeデータを仮想キャッシュ242に格納する場合はvPage単位でデータがWriteされるため、仮想キャッシュ242において発生するWriteデータ量は、最終的に後続のWrite要求を含めた連続Writeサイズの予測値に等しくなる。一方で、仮想媒体241にデータを移動する際に発生するWriteデータ量は、仮想媒体241に対するデータの格納がvBlock単位で行われることから、Writeデータ量はvBlockに等しい。また、ステップS1201で受け取った、後続のWrite要求によって上書きされる頻度の予測値から、仮想媒体241にWriteデータが移動する前に更新される確率を求める。つまり、後続のWrite要求を含めた連続Writeサイズの予測値を“A”、vBlockのサイズを“B”、仮想媒体241にWriteデータが移動する前に更新される確率を“P”とした場合、Writeデータ量の期待値は{A+B×(1-P)}で求められる(ステップS1209)。
 格納先決定部228は、ステップS1207とステップS1209で求めたWriteデータ量の期待値を比較する(ステップS1211)。Writeデータが直接、仮想媒体241にWriteされる場合の記憶媒体240に対する総Writeデータ量の期待値の方が小さい場合(ステップS1213のYes判定)、格納先決定部228は、アクセス実行部223に対して、Writeデータの格納先として仮想媒体241、およびWrite要求でデータの格納先として指定されたVDAを返して処理を終了する(ステップS1215)。
 一方、Writeデータが直接、仮想媒体241にWriteされる場合の記憶媒体240に対する総Writeデータ量の期待値の方が大きい場合(ステップS1213のNo判定)、格納先決定部228は、仮想キャッシュポインタ231からデータを格納中のvBlockのVCAを取得する(ステップS1217)。次に、格納先決定部228は、ステップS1217において取得したVCAが指すvBlock内部における、Writeデータを格納可能な最もvBlockの先頭に近いvPageを特定する(ステップS1219)。そして、格納先決定部228は、アクセス実行部223に対して、仮想キャッシュ242、およびステップS1219において特定したvPageのVCAをWriteデータの格納先として返す(ステップS1221)。
 格納先決定部228は、ステップS1221において格納先として返したVCAに対応するvPageに対してWriteデータの格納が完了した後に、VCAを含むvBlockにおいてデータを新たに格納可能なvPageが残されるか確認する(ステップS1223)。データを新たに格納可能なvPageが残っている場合(ステップS1225のYes判定)、格納先決定部228は、Writeデータの格納先を決定する処理を終了する。
 一方、データを新たに格納可能なvPageが残っていない場合(ステップS1225のNo判定)、格納先決定部228は、キャッシュ使用状況管理部225を介して有効データテーブル700を参照する。そして、仮想キャッシュ242のvBlockにおいて有効なデータを格納するvPage数が最も少ないvBlockを選択し、仮想キャッシュポインタ231をvBlockのVCAで更新して処理を終了する(ステップS1227)。
 以上のステップS1201からS1227までの処理を行い、本実施形態において記憶制御部220の格納先決定部228においてWriteデータの格納先を決定する処理を実行する動作が完了する。なお、ステップS1207とステップS1209の実行順序は、互いに入れ替えてもよい。
 (データ移動処理)
 図13は、本実施形態に係るデータ移動処理(S833)の手順を示すフローチャートである。
 記憶制御部220のデータ移動部229は、仮想媒体241のVDAの空間上における、仮想キャッシュ242にキャッシュされているデータ量(vPage数)が最も多いvBlockを処理対象として選択する(ステップS1301)。次に、データ移動部229は、ヒット判定部224を介してヒット判定テーブル600を参照して、ステップS1301において選択したvBlockにおける、仮想キャッシュ242にキャッシュされたvPageのVCAを取得する(ステップS1303)。そして、データ移動部229は、マッピング部222によってステップS1303において取得した仮想キャッシュ242のvPageのVCAを、記憶媒体240においてvPageを指し示すLAに変換する。また、データ移動部229は、マッピング部222によってステップS1301において選択したvBlockの仮想媒体241におけるVDAを記憶媒体240のLAに変換する(ステップS1305)。
 データ移動部229は、記憶媒体アクセス部230を介して、仮想キャッシュ242のvPageをステップS1305で変換されたLAを用いて記憶媒体240から読み出す(ステップS1307)。また、データ移動部229は、記憶媒体アクセス部230を介して、ステップS1301において選択されたvBlockにおいて、仮想キャッシュ242にデータがキャッシュされていないvPageのデータをステップS1305で変換されたvBlockのLAを用いて記憶媒体240から読み出す(ステップS1309)。そして、データ移動部229は、記憶媒体アクセス部230に対してステップS1307およびステップS1309において読み出されたvPageのデータを、ステップS1301において選択されたvBlockに先頭のvPageから順番にWriteを指示する。なお、ステップS1307において読み出された仮想キャッシュ242の各データは、ヒット判定部224を介してヒット判定テーブル600を参照して、仮想キャッシュ242の各データが対応するvPageに格納する。また、ステップS1309において読み出されたvPageのデータは、元のvPageに書き戻す(ステップS1311)。
 データ移動部229は、マッピング部222を介して仮想媒体マッピングテーブル400における、ステップS1311におけるWrite先であるvBlockのデータをWrite済みのvPageの数を更新する。また、データ移動部229はヒット判定部224を介して、ヒット判定テーブル600における、仮想媒体241にデータの移動を行った仮想キャッシュ242のvPageに対応するエントリを削除する。そして、データ移動部229はキャッシュ使用状況管理部225を介して、仮想媒体241にデータの移動を行った仮想キャッシュ242のvPageに対応する有効データテーブル700のエントリを無効状態に変更する。さらに、データ移動部229は、有効データテーブル700における、vBlock毎の有効なvPageの数を、仮想媒体241にデータの移動を行った仮想キャッシュ242のvPageの数を引いた値に更新して処理を完了する(ステップS1313)。
 以上のステップS1301からS1313までの処理を行い、本実施形態において記憶制御部220のデータ移動部229において仮想キャッシュ242から仮想媒体241にデータを移動する動作が完了する。なお、ステップS1307とステップS1309の実行順序は、互いに入れ替えてもよい。
 《本実施形態の記憶制御の具体例》
 本実施形態による記憶制御をより明瞭にするため、図14から図18を用いて、ホストコンピュータ210で実行されるソフトウェアからの仮想的な記憶媒体からのRead要求の処理、および、仮想的な記憶媒体へのWrite要求されたデータを仮想媒体241または仮想キャッシュ242に格納する動作の具体例を示す。本具体例において使用する記憶媒体としては、NANDフラッシュを記憶素子としたSSDを仮定する。SSDに含まれるNANDフラッシュのページの大きさとブロックの大きさがそれぞれ4KB、256KBであるとして、SSD内部におけるRead、Writeはページ(4KB)単位、Eraseの単位はブロック(256KB)単位であると仮定する。また、本具体例で使用するvBlockはNANDフラッシュのブロックサイズに等しい256KB、vPageはNANDフラッシュのページサイズに等しい4KBとする。
 (アクセス要求順序)
 図14は、本発明の第2実施形態に係るソフトウェアからのアクセス要求順序1400の具体例を示す図である。本具体例では、ID1からID4までのRead、Write要求を順番に処理する場合の動作を示す。本具体例では、各IDのWrite要求と共に受け取る、データ更新頻度に関する予測値をアクセス要求n回毎(nは自然数)として表現している。つまり、ID2のWrite要求は1億回のアクセスごとに後続のWriteによって更新されるのに対し、ID3のWrite要求はアクセス要求300回毎、つまり頻繁に後続のWriteによって上書きされることを表す。
 (各テーブル)
 図15から図18は、それぞれ本具体例における初期状態と図14のID1からID4を実行した場合の各テーブルの様子を示す。図15は、図4に示した仮想媒体マッピングテーブル400に対応するテーブル1500である。図16は、図5に示した仮想キャッシュマッピングテーブル500に対応する具体例のテーブル1600を表わす。図17は、図6に示したヒット判定テーブル600に対応する具体例のテーブル1700を表わす。図18は、図7に示した有効データテーブル700に対応する具体例のテーブル1800を表す。各テーブルにおけるアドレスは、全てセクタ(512バイト)単位で記述している。
 なお、格納先決定部228の仮想キャッシュポインタ231が格納する仮想キャッシュ242における、キャッシュされるデータを格納中のvBlockを表すVCAは0x00000000とする。加えて、バッファメモリ221は、本具体例の初期状態ではWriteデータを格納していないものとする。また、本具体例において、処理順序決定部227は、バッファメモリ221に格納したホストコンピュータ210上のソフトウェアからのWrite要求を、到着順に処理対象として選択する。また、本具体例において負荷判定部226による負荷判定の結果が高負荷になることはないものとする。
 (ID1のRead)
 まず、図14におけるID1のRead要求を受け取った場合の動作を示す。図9のフローチャートに示された通り、仮想的な記憶媒体からのRead要求を受け取ったアクセス実行部223は、バッファメモリ221、仮想キャッシュ242の順番にヒットしているか否かの確認を行う。バッファメモリ221にはWriteデータは格納されていないため、アクセス実行部223は、ヒット判定テーブル1700によって仮想キャッシュ242におけるヒット判定を行う。ID1のReadは仮想媒体のVDA 0x00000010に対するものである一方、ヒット判定テーブル1700にはVDA 0x00000010に相当するエントリが存在せず、このReadは仮想媒体241のVDA 0x00000010に対して行われる。仮想媒体マッピングテーブル1500によると、VDA 0x00000000で表されるvBlockに対して、SSDの0x00000000のvBlockがマッピングされている。つまり、仮想媒体241のVDA 0x00000010に対する4KBのReadは、SSDの論理アドレス0x00000010に対する4KBのReadとして発行され、Read結果を要求元のソフトウェアに返す。
 (ID2のWrite)
 次に、図14におけるID2のWrite要求を受け取った場合の動作を示す。図10のフローチャートに示された通り、仮想的な記憶媒体へのWrite要求を受け取ったアクセス実行部223は、WriteデータをはじめとしたID2のWrite要求をバッファメモリ221に格納してから処理を開始する。バッファメモリ221にはWriteデータは格納されていないため、アクセス実行部223は、処理順序決定部227によってID2のWrite要求が処理対象として選ばれることで処理を開始する。ID2のWriteは、VDA 0x00000200、つまりvBlockの先頭から224KBのデータに対する格納要求である。
 アクセス実行部223から指示を受けた格納先決定部228は、ID2のWriteデータの格納先を決定する。まず、予測Writeサイズは256KBであり、vBlockの先頭からのWrite要求であるため、将来的にvBlock全体に対する256KBのWriteが行われることが分かる。よって直接、仮想媒体241にWriteデータを格納する場合にSSDに対して発生するWrite量の期待値は、256KBと求められる。また、図14におけるID2のWriteは1億回のアクセスごとに後続のWriteによる更新が行われる。そのため、仮想キャッシュ242にID2のWriteデータを格納している間に後続のWrite要求によって上書きが発生して仮想キャッシュ242上のデータが無効化される可能性はゼロに近い。そのため、仮想キャッシュ242に一時的にWriteデータを保存し、後から仮想媒体241にWriteデータを移動した場合にSSDに対して発生するWrite量の期待値は、{256KB+256KB×(1-0)}=512KBと求められる。
 そのため、アクセス実行部223は、ID2のWriteデータを仮想媒体241におけるVDA 0x00000200の指し示すvBlockに直接格納する。仮想媒体マッピングテーブル1500からVDA 0x00000200に対する224KBのWriteは、SSDの論理アドレス0x00000200に対する224KBのWriteとして発行される。また、仮想媒体マッピングテーブル1500における、仮想媒体241のVDA 0x00000200が指し示すvBlockについて、Write済vPage数を(224KB/4KB)=56に更新する(図15の1501参照)。
 さらに、ID2のWriteデータ格納に伴い、仮想キャッシュ242に格納されたキャッシュデータの無効化処理として、ヒット判定テーブル1700における、VDA 0x00000230のエントリ削除とキャッシュされたvPage数の減算を行う(図17の1701参照)。加えて、有効データテーブル1800における、仮想キャッシュ242においてVCA 0x00000000で指し示されるvPageのエントリについて、データを無効状態に切り換え、vBlock内の有効ページ数を“1”から“0”に減少させる処理を完了して(図18の1801参照)、Write完了を要求元のソフトウェアに通知する。
 (ID3のWrite)
 続けて、図14におけるID3のWrite要求を受け取った場合の動作を示す。ID2のWrite要求の処理時と同様に、バッファメモリ221にはWriteデータは格納されておらず、処理順序決定部227によってID3のWrite要求が処理対象として選ばれることでSSDに対する格納処理を開始する。
 格納先決定部228によって、ID3のWriteデータの格納先を決定するために、直接、仮想媒体241にWriteデータを格納する場合にSSDに対して発生するWrite量の期待値を求める。ID3のWriteに対する予測Writeサイズは4KBであるため、SSDに対して発生するWrite量の期待値は、256KBと求められる。
 続けて、仮想キャッシュ242に一時的にWriteデータを保存し、後から仮想媒体241にWriteデータを移動した場合のSSDに対するWrite量の期待値を求める。図14におけるID3のWriteは300回のアクセスごとに後続のWriteによる更新が行われる予測値がアクセス要求元のソフトウェアから得られている。そのため、仮想キャッシュ242にID3のWriteデータを格納している間に後続のWrite要求によって上書きが発生することで、仮想媒体241にデータが移動する可能性は非常に低くなる。この確率を例えば1%と見積もると、SSDに対して発生するWrite量の期待値は、{4KB+256KB×(1-0.99)}=6.56KBと求められる。
 そのため、アクセス実行部223は、ID3のWriteデータを仮想キャッシュ242の、新たなデータを格納可能なvPageにキャッシュする。仮想キャッシュ242における、Writeデータの格納位置は、格納先決定部228の仮想キャッシュポインタ231の示す仮想キャッシュ242のVCAが0x00000000であることから、仮想キャッシュ242のVCA 0x00000000の指すvBlock内の空いているvPageにID3のWriteデータを格納する。仮想キャッシュマッピングテーブル1600から、vBlock内部のWrite済のvPageは1ページであるため、仮想キャッシュ242におけるVCA 0x00000008の指すvPageにWriteデータを格納する。つまり、vPageに対する4KBのWriteは、SSDの論理アドレス0x00200008に対する4KBのWriteとして発行される。
 また、仮想キャッシュマッピングテーブル1600における、仮想キャッシュ242のVCA 0x00000000のvBlockについて、Write済vPage数を“2”に更新する(図16の1601参照)。加えて、ID3のWriteデータを仮想キャッシュ242に格納したことによって、ヒット判定テーブル1700に対して、VDA 0x00000100と、それに対応するVCAである0x00000008のエントリを追加し、キャッシュされたvPage数を“1→2”に“1”加算する(図17の1702参照)。さらに、有効データテーブル1800において、VCA 0x00000008で指し示されるvPageのエントリについて、キャッシュしている仮想媒体241上のVDAを0x00000100として記録し、vBlock内の有効ページ数を“1”加算して(図18の1802参照)、ID3のWrite要求の完了を要求元のソフトウェアに通知する。
 (ID4のRead)
 最後に、図14におけるID4のRead要求を受け取った場合の動作を示す。図9のフローチャートに示された通り、Read要求を受け取ったアクセス実行部223は、バッファメモリ221、仮想キャッシュ242の順番にヒットしているか確認を行う。バッファメモリ221にはWriteデータは格納されていないため、アクセス実行部223は、ヒット判定テーブル1700によって仮想キャッシュ242におけるヒット判定を行う。ID4のReadは仮想媒体241のVDA 0x00000100に対するものであり、ヒット判定テーブル1700にはVDA 0x00000100に相当するエントリが存在する(図17の1702参照)。つまり、仮想キャッシュ242においてRead要求されたデータはVCA 0x00000008のvPageに格納されていることが分かる。アクセス実行部223は、仮想キャッシュマッピングテーブル1600によって、仮想キャッシュ242のvPageに対するVCAをSSDの論理アドレス0x00200008に変換して4KBのReadを行い、Read結果を要求元のソフトウェアに返す。
 以上の処理で、本具体例における動作を完了する。このように、仮想的な記憶媒体へのアクセスが仮想媒体と仮想キャッシュとに適切に選択されて実行される。なお、本具体例では考慮しなかった仮想キャッシュポインタ231、バッファメモリ221への格納と処理順序決定部227による順序決定などを適切に組み合わせることにより、さらに記憶媒体への格納処理全体を通した書込データ量を削減することができる。
 本実施形態によれば、仮想的な記憶媒体への書き込みと仮想的なキャッシュへの書き込みとを現在の書込データ量と将来発生する書込データ量との総量を考慮して選択するので、記憶媒体に対するWriteデータ量を小さくすることができる。
 そして、既にデータを格納済のvPageに対してデータをWriteする場合は、vPageを含むvBlockの先頭のvPageから順番にWriteを行うものとする。このようなWrite動作を行うことで、SSD内部のNANDフラッシュの同一ブロックの各ページに連続的にデータが格納される。そのためSSDの同一論理アドレスに対するデータの上書きによって発生する、SSD内部のNANDフラッシュ間のデータ移動に伴うWrite量を削減できる。vPage、vBlockのサイズはSSD内部におけるNANDフラッシュのページに格納されるデータ本体のサイズ、およびブロックに格納されるデータサイズに等しいことが望ましいが、例えば2のn乗倍(nは自然数)などのサイズであってもNANDフラッシュに対する一定のWrite量の削減効果が期待できる。
 すなわち、本実施形態による方法は、本実施形態の適用を行わない場合に比べて、ランダムWriteアクセスに対する最適化が不十分なSSDに対して、ハードウェア構成、コントローラの動作に関する情報を用いずにSSD内部で発生するNANDフラッシュ間のデータ移動を削減する。また、SSDに対して発行されたランダムWrite要求のデータ量をホストから可視化することで、Garbage Collectionなどの領域管理処理によるSSD内部の急激な負荷増加を防止可能とすることが効果として挙げられる。
 [第3実施形態]
 次に、本発明の第3実施形態に係る記憶制御装置を含む情報処理システムについて説明する。本実施形態に係る記憶制御装置を含む情報処理システムは、上記第2実施形態と比べると、記憶制御装置が記憶媒体側にある点、あるいは、ネットワークを介してホストコンピュータの外部にある点で異なる。その他の構成および動作は、第2実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
 《情報処理システムの構成》
 図19は、本実施形態に係る記憶制御部1943または1920を含む情報処理システム1900の構成を示すブロック図である。なお、図19において、図2Aと同様の構成要素には同じ参照番号を付して、説明を省略する。
 図19においては、ホストコンピュータ1910は本実施形態の記憶制御部を有しない。一例として、本実施形態の記憶制御部1943は、記憶媒体1940に搭載されている。また、他例として、本実施形態の記憶制御部1920は、ネットワーク250を介して独立した装置として接続されている。かかる記憶制御部1943または1920は、ソフトウェアで実現されても、ワンチップのプロセッサで実現されてもよい。
 本実施形態によれば、第2実施形態のようにホストコンピュータによる処理に限定されず、仮想的な記憶媒体への書き込みと仮想的なキャッシュへの書き込みとを現在の書込データ量と将来発生する書込データ量との総量を考慮して選択し、記憶媒体に対する格納処理全体を通したWriteデータ量を小さくすることができる。
 [第4実施形態]
 次に、本発明の第4実施形態に係る記憶制御装置を含む情報処理システムについて説明する。本実施形態に係る記憶制御装置を含む情報処理システムは、上記第2実施形態および第3実施形態と比べると、情報処理システムに、複数の記憶制御装置が接続している点、あるいは、複数のホストコンピュータが接続している点で異なる。その他の構成および動作は、第2実施形態、第3実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
 《情報処理システムの構成》
 図20は、本実施形態に係る情報処理システム2000の構成を示すブロック図である。なお、図20において、図2Aまたは図19と同様の構成要素には同じ参照番号を付して、説明を省略する。
 図20においては、複数の記憶媒体、あるいは、複数のホストコンピュータがネットワーク250を介して接続されている。
 まず、複数に記憶媒体240、2040が接続されている場合、各ホストコンピュータ210や2010、あるいは、独立した記憶制御部1920は、複数に記憶媒体240、2040の全体を仮想媒体2041と仮想キャッシュ2042とに割り当てる。このような構成に場合には、仮想キャッシュ2042の必要とされる容量を複数に記憶媒体240、2040に少量ずつ分割して割り当てるので、仮想媒体2041の容量に余裕ができ処理の高速化が図れる。
 また、複数のホストコンピュータ210、2010による記憶制御において、各ホストコンピュータが排他的に仮想キャッシュを割り当てても、仮想キャッシュを共有してもよい。排他的に仮想キャッシュを割り当てる場合には、ホストコンピュータ2010もOS2011やソフトウェア2012からの仮想的な記憶媒体へのアクセスを制御する独自の記憶制御部2020を有する。この場合には、外部の記憶制御部1920が統一的な仮想媒体と仮想キャッシュの制御を行なってもよい。
 (仮想媒体マッピングテーブおよび仮想キャッシュマッピングテーブル)
 図21は、本実施形態に係る仮想媒体マッピングテーブル2110および仮想キャッシュマッピングテーブル2120の構成を示す図である。なお、図21において、図4または図5と同じ構成要素についての説明を省略する。
 仮想媒体マッピングテーブル2110および仮想キャッシュマッピングテーブル2120には、複数の記憶媒体を識別するための記憶媒体ID、あるいは、複数のホストコンピュータを識別するためのホストIDが付加される。
 本実施形態によれば、複数の記憶媒体、あるいは、複数のホストコンピュータが接続されたシステム構成であっても、仮想的な記憶媒体への書き込みと仮想的なキャッシュへの書き込みとを現在の書込データ量と将来発生する書込データ量との総量を考慮して選択し、記憶媒体に対する格納処理全体を通したWriteデータ量を小さくすることができる。
 [他の実施形態]
 以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステムまたは装置も、本発明の範疇に含まれる。
 また、本発明は、複数の機器から構成されるシステムに適用されてもよいし、単体の装置に適用されてもよい。さらに、本発明は、実施形態の機能を実現する情報処理プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされるプログラム、あるいはそのプログラムを格納した媒体、そのプログラムをダウンロードさせるWWW(World Wide Web)サーバも、本発明の範疇に含まれる。特に、少なくとも、上述した実施形態に含まれる処理ステップをコンピュータに実行させるプログラムを格納した非一時的コンピュータ可読媒体(non-transitory computer readable medium)は本発明の範疇に含まれる。
 この出願は、2014年7月4日に出願された日本国特許出願 特願2014-138873号を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (18)

  1.  ホストコンピュータによる仮想媒体へのデータ書込指示を受信する受信手段と、
     前記データ書込指示に応じて、前記仮想媒体のアドレス空間と、前記仮想媒体に対応して生成された仮想キャッシュのアドレス空間とのいずれにデータを書き込むかを、現在の書込データ量と将来発生する書込データ量との総量を考慮して選択する書込アドレス選択手段と、
     前記書込アドレス選択手段による選択に応じて、前記仮想媒体への書込アドレスまたは前記仮想キャッシュへの書込アドレスを記憶媒体に対する書込アドレスに変換して、前記記憶媒体に対してデータを書き込むよう指示する書込指示手段と、
     を備える記憶制御装置。
  2.  前記受信手段は、前記仮想媒体からのデータ読出指示を受信し、
     前記データ読出指示に応じて、前記仮想媒体のアドレス空間と、前記仮想キャッシュのアドレス空間とのいずれからデータを読み込むかを、キャッシュヒットしたか否かに基づいて選択する読出アドレス選択手段と、
     前記読出アドレス選択手段による選択に応じて、前記仮想媒体への読出アドレスまたは前記仮想キャッシュへの読出アドレスを前記記憶媒体に対する読出アドレスに変換して、前記記憶媒体に対してデータを読み出すよう指示する読出指示手段と、
     をさらに備える請求項1に記載の記憶制御装置。
  3.  前記仮想媒体におけるデータ格納の最小単位と前記仮想キャッシュにおけるデータ格納の最小単位とが異なる請求項1または2に記載の記憶制御装置。
  4.  前記記憶媒体はNANDフラッシュメモリであって、
     前記仮想媒体におけるデータ格納の最小単位は前記記憶媒体のブロックであり、前記仮想キャッシュにおけるデータ格納の最小単位は前記記憶媒体のページである請求項3に記載の記憶制御装置。
  5.  前記記憶媒体はNANDフラッシュメモリであって、
     前記書込データ量の総量は、前記NANDフラッシュメモリのイレース回数に関連する請求項1乃至4のいずれか1項に記載の記憶制御装置。
  6.  前記受信手段は、前記ホストコンピュータから前記データ書込指示と共に後続のデータ書込指示の書込データ量の予測値を受信する請求項1乃至5のいずれか1項に記載の記憶制御装置。
  7.  前記受信手段は、前記データ書込指示と共に後続のデータ書込指示におけるデータ更新頻度の予測値を受信し、
     前記書込アドレス選択手段は、前記データ更新頻度から将来的に発生する書込データ量の期待値を算出して、該期待値に基づき前記仮想媒体のアドレス空間と前記仮想キャッシュのアドレス空間とのいずれにデータを書き込むかを選択する請求項1乃至6のいずれか1項に記載の記憶制御装置。
  8.  前記仮想キャッシュに記憶された有効なデータ量に基づいて、前記仮想キャッシュへの負荷を算出する算出手段を備え、
     前記書込アドレス選択手段は、前記負荷が閾値を上回った場合に前記仮想キャッシュが高負荷であると判定して、前記仮想媒体のアドレス空間にデータを書き込むよう選択する、請求項1乃至7のいずれか1項に記載の記憶制御装置。
  9.  前記仮想キャッシュに記憶された有効なデータ量に基づいて、前記仮想キャッシュへの負荷を算出する算出手段を備え、
     前記負荷を前記ホストコンピュータに通知する通知手段と、
     を備える請求項1乃至8のいずれか1項に記載の記憶制御装置。
  10.  前記算出手段は、前記負荷を、前記仮想キャッシュに割り当てられた記憶容量に対する、前記仮想キャッシュに記憶された有効なデータ量の比率に基づき算出する請求項8または9に記載の記憶制御装置。
  11.  ホストコンピュータによる仮想媒体へのデータ書込指示を受信する受信ステップと、
     前記データ書込指示に応じて、前記仮想媒体のアドレス空間と、前記仮想媒体に対応して生成された仮想キャッシュのアドレス空間とのいずれにデータを書き込むかを、現在の書込データ量と将来発生する書込データ量との総量を考慮して選択する書込アドレス選択ステップと、
     前記書込アドレス選択ステップにおける選択に応じて、前記仮想媒体への書込アドレスまたは前記仮想キャッシュへの書込アドレスを記憶媒体に対する書込アドレスに変換して、前記記憶媒体に対してデータを書き込むよう指示する書込指示ステップと、
     を含む記憶制御装置の制御方法。
  12.  ホストコンピュータによる仮想媒体へのデータ書込指示を受信する受信ステップと、
     前記データ書込指示に応じて、前記仮想媒体のアドレス空間と、前記仮想媒体に対応して生成された仮想キャッシュのアドレス空間とのいずれにデータを書き込むかを、現在の書込データ量と将来発生する書込データ量との総量を考慮して選択する書込アドレス選択ステップと、
     前記書込アドレス選択ステップにおける選択に応じて、前記仮想媒体への書込アドレスまたは前記仮想キャッシュへの書込アドレスを記憶媒体に対する書込アドレスに変換して、前記記憶媒体に対してデータを書き込むよう指示する書込指示ステップと、
     をコンピュータに実行させる記憶制御装置の制御プログラム。
  13.  ホストコンピュータと、
     記憶媒体と、
     前記ホストコンピュータによる前記記憶媒体へのアクセスを制御する記憶制御装置と、
     を備え、
     前記記憶制御装置が、
      前記ホストコンピュータによる仮想媒体へのデータ書込指示を受信する受信手段と、
      前記データ書込指示に応じて、前記仮想媒体のアドレス空間と、前記仮想媒体に対応して生成された仮想キャッシュのアドレス空間とのいずれにデータを書き込むかを、現在の書込データ量と将来発生する書込データ量との総量を考慮して選択する書込アドレス選択手段と、
      前記書込アドレス選択手段による選択に応じて、前記仮想媒体への書込アドレスまたは前記仮想キャッシュへの書込アドレスを前記記憶媒体に対する書込アドレスに変換して、前記記憶媒体に対してデータを書き込むよう指示する書込指示手段と、
     を備える情報処理システム。
  14.  前記記憶制御装置が、
      前記仮想キャッシュに割り当てられた記憶容量に対する、前記仮想キャッシュに記憶された有効なデータ量の比率を算出する算出手段と、
      前記比率を前記ホストコンピュータに通知する通知手段と、
     を備え、
     前記ホストコンピュータが、前記比率に基づいて前記仮想媒体に対するデータ書込指示の発行頻度を抑制する請求項13に記載の情報処理システム。
  15.  前記記憶媒体は、記憶素子としてNANDフラッシュを使用し、前記記憶媒体の外部に対してNANDフラッシュを動的にマッピングする機能、および、記憶領域の間の更新回数を均一化する機能を持つSSD(Solid State Drive)である請求項13または14に記載の情報処理システム。
  16.  前記記憶制御装置と前記記憶媒体とがネットワークを介して接続される請求項13乃至15のいずれか1項に記載の情報処理システム。
  17.  複数の前記記憶媒体を備え、
     前記記憶制御装置は、前記複数の記憶媒体に対して共有の仮想キャッシュのアドレス空間を生成する請求項13乃至16のいずれか1項に記載の情報処理システム。
  18.  ホストコンピュータが、仮想媒体からのデータ読出指示または前記仮想媒体へのデータ書込指示を発行する発行ステップと、
     前記データ書込指示に応じて、前記仮想媒体のアドレス空間と、前記仮想媒体に対応して生成された仮想キャッシュのアドレス空間とのいずれにデータを書き込むかを、現在の書込データ量と将来発生する書込データ量との総量を考慮して選択する書込アドレス選択ステップと、
     前記書込アドレス選択ステップにおける選択に応じて、前記仮想媒体への書込アドレスまたは前記仮想キャッシュへの書込アドレスを記憶媒体に対する書込アドレスに変換して、前記記憶媒体にデータを書き込む書込ステップと、
     を含む情報処理方法。
PCT/JP2015/062435 2014-07-04 2015-04-23 情報処理システム、情報処理方法、記憶制御装置およびその制御方法と制御プログラム WO2016002325A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016531165A JPWO2016002325A1 (ja) 2014-07-04 2015-04-23 情報処理システム、情報処理方法、記憶制御装置およびその制御方法と制御プログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2014-138873 2014-07-04
JP2014138873 2014-07-04

Publications (1)

Publication Number Publication Date
WO2016002325A1 true WO2016002325A1 (ja) 2016-01-07

Family

ID=55018882

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/062435 WO2016002325A1 (ja) 2014-07-04 2015-04-23 情報処理システム、情報処理方法、記憶制御装置およびその制御方法と制御プログラム

Country Status (2)

Country Link
JP (1) JPWO2016002325A1 (ja)
WO (1) WO2016002325A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019163806A1 (ja) * 2018-02-26 2019-08-29 Necプラットフォームズ株式会社 ディスクアレイ装置、ディスクアレイ装置の制御方法、及びディスクアレイ装置の制御プログラム
CN110968520A (zh) * 2018-09-30 2020-04-07 北京忆恒创源科技有限公司 基于统一缓存架构的多流存储设备
CN111651419A (zh) * 2020-06-05 2020-09-11 杭州海康威视系统技术有限公司 数据存储方法、装置及存储介质
CN113392036A (zh) * 2020-03-11 2021-09-14 深圳星火半导体科技有限公司 固态存储器及其数据写入方法、装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010250845A (ja) * 2007-12-28 2010-11-04 Toshiba Corp 半導体記憶装置
JP2013029879A (ja) * 2011-07-26 2013-02-07 Denso Corp フラッシュメモリの制御装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010250845A (ja) * 2007-12-28 2010-11-04 Toshiba Corp 半導体記憶装置
JP2013029879A (ja) * 2011-07-26 2013-02-07 Denso Corp フラッシュメモリの制御装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019163806A1 (ja) * 2018-02-26 2019-08-29 Necプラットフォームズ株式会社 ディスクアレイ装置、ディスクアレイ装置の制御方法、及びディスクアレイ装置の制御プログラム
US11635909B2 (en) 2018-02-26 2023-04-25 Nec Platforms, Ltd. Disk array device, control method for disk array device, and control program for disk array device
CN110968520A (zh) * 2018-09-30 2020-04-07 北京忆恒创源科技有限公司 基于统一缓存架构的多流存储设备
CN110968520B (zh) * 2018-09-30 2024-04-12 北京忆恒创源科技股份有限公司 基于统一缓存架构的多流存储设备
CN113392036A (zh) * 2020-03-11 2021-09-14 深圳星火半导体科技有限公司 固态存储器及其数据写入方法、装置
CN113392036B (zh) * 2020-03-11 2024-02-02 深圳星火半导体科技有限公司 固态存储器及其数据写入方法、装置
CN111651419A (zh) * 2020-06-05 2020-09-11 杭州海康威视系统技术有限公司 数据存储方法、装置及存储介质
CN111651419B (zh) * 2020-06-05 2023-10-20 杭州海康威视系统技术有限公司 数据存储方法、装置及存储介质

Also Published As

Publication number Publication date
JPWO2016002325A1 (ja) 2017-04-27

Similar Documents

Publication Publication Date Title
US11893238B2 (en) Method of controlling nonvolatile semiconductor memory
CN109240938B (zh) 存储系统以及控制非易失性存储器的控制方法
JP6007329B2 (ja) ストレージコントローラ、ストレージ装置、ストレージシステム
WO2016175028A1 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
JP6691669B2 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
JP5593577B2 (ja) ストレージシステム及びその制御情報の管理方法
JP6007332B2 (ja) ストレージシステム及びデータライト方法
WO2015076354A1 (ja) ストレージ装置と方法並びにプログラム
KR101017067B1 (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
WO2015162758A1 (ja) ストレージシステム
WO2016056104A1 (ja) ストレージ装置、及び、記憶制御方法
JP6834955B2 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
WO2016002325A1 (ja) 情報処理システム、情報処理方法、記憶制御装置およびその制御方法と制御プログラム
KR101456370B1 (ko) 스토리지 관리 방법 및 장치
KR101155542B1 (ko) Ssd 장치의 매핑 테이블 관리 방법
JP2007102314A (ja) ディスクキャッシュ制御装置
WO2016194979A1 (ja) ストレージシステム、ストレージ制御装置、ストレージ制御方法及びプログラム
WO2018008676A1 (ja) 情報処理システム、キャッシュ容量配分方法、記憶制御装置、記憶制御方法、及び記録媒体
JP6254986B2 (ja) 情報処理装置、アクセスコントローラ、および情報処理方法
JP2018181207A (ja) ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
JP6668785B2 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
JP2016207096A (ja) 階層ストレージ装置、階層ストレージシステム、階層ストレージ方法、および階層ストレージプログラム
JP2018005371A (ja) 情報処理システム、情報処理方法、記憶制御装置、記憶制御方法および記憶制御プログラム
WO2018051446A1 (ja) オプショナルなデータ処理機能を有するストレージシステムを含んだ計算機システム、および、記憶制御方法

Legal Events

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

Ref document number: 15815996

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2016531165

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15815996

Country of ref document: EP

Kind code of ref document: A1