WO2017056219A1 - ストレージ装置およびストレージ装置の制御方法 - Google Patents

ストレージ装置およびストレージ装置の制御方法 Download PDF

Info

Publication number
WO2017056219A1
WO2017056219A1 PCT/JP2015/077693 JP2015077693W WO2017056219A1 WO 2017056219 A1 WO2017056219 A1 WO 2017056219A1 JP 2015077693 W JP2015077693 W JP 2015077693W WO 2017056219 A1 WO2017056219 A1 WO 2017056219A1
Authority
WO
WIPO (PCT)
Prior art keywords
transfer
data
processor
memory
partial
Prior art date
Application number
PCT/JP2015/077693
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 PCT/JP2015/077693 priority Critical patent/WO2017056219A1/ja
Publication of WO2017056219A1 publication Critical patent/WO2017056219A1/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 a storage apparatus.
  • a so-called storage device having a disk array provided with a storage medium such as a plurality of magnetic disk devices and semiconductor memory devices and a storage controller for controlling reading and writing to the disk array is known.
  • This controller has a host interface for connecting to a host computer and a drive interface for connecting to a storage medium.
  • a control method is known in which data received from a host computer connected to a controller is copied to a cache memory on another controller, and the write completion is notified to the host before storage in a storage medium. It has been. This achieves both high availability and high write performance of the storage device.
  • a host computer connected to a controller reads data from a storage medium connected to another controller, the data is temporarily stored in the cache memory on the controller to which the storage medium is connected.
  • a control method is known in which data is transferred to a cache memory on a controller to which a host computer is connected via a connection, and then transferred to the host computer.
  • transfer to a cache memory via each interface and transfer from one cache memory to another cache memory are sequentially transferred for each request data length (transfer length) from the host computer.
  • request data length transfer length
  • the host computer requests the writing of 256 KB data
  • the host interface notifies the completion of reception, and after receiving the notification, another controller
  • a method of initiating a 256 KB transfer to is disclosed. In this control method, when the requested data length increases, the processing delay of the storage apparatus increases in proportion to the sum of the host transfer time and the inter-controller transfer time.
  • Patent Document 2 storage control including a host interface, a memory 1 that reads and writes data from the host interface, a memory 2 that is different from the memory 1, and an LSI that controls data transfer from the memory 1 to the memory 2 is disclosed.
  • the LSI holds transfer control information between memories in advance, and the LSI monitors the amount of data written from the host interface to the memory 1 before the data of the requested data length from the host computer is written to the memory 1.
  • a control method for starting transfer to the memory 2 is disclosed.
  • a processing load for monitoring a memory and a bus and managing a plurality of transfer request states by a dedicated LSI is large.
  • the throughput is increased by increasing the parallelism of communication requests.
  • the monitoring processing load increases as the parallelism increases. Therefore, this technique requires measures such as limiting the number of parallel operations. Further, if such transfer control is performed by a general-purpose CPU (Central Processing Unit) or a memory on a storage controller shared with other controls, the processing performance of the other controls is reduced.
  • a general-purpose CPU Central Processing Unit
  • a storage apparatus includes a first memory and a first processor connected to the first memory, the first device, and the second device.
  • the first processor receives a first transfer request requesting transfer of first data stored in the first device to the second device, and the first processor receives the first transfer request.
  • the first partial completion indicating the completion timing of the transfer of the first partial data that is a part of the first data
  • the first processor initiates the first data transfer, and the first processor determines the first data before completion of the first data transfer based on the first partial completion condition.
  • the second data transfer to be transferred from the first memory to the second device is started.
  • the response performance of the storage device can be improved.
  • FIG. 1 shows a configuration of a computer system according to an embodiment of the present invention.
  • 4 is an example showing area division of data stored in a memory 4.
  • 6 shows a data transfer flow when a write request is received in the storage apparatus 1.
  • the write sequence of a comparative example is shown.
  • the write sequence of Example 1 is shown.
  • 9 shows a write process of the processor # 1 according to the first embodiment.
  • the first response case with respect to the Write request of the first embodiment is shown.
  • requirement of Example 1 is shown.
  • the partial completion notification interval determination process is shown.
  • An interval setting table 1001 and partial completion notification interval setting information 1002 are shown.
  • 6 shows a data transfer flow when a read request is received in the storage apparatus 1.
  • the Read sequence of a comparative example is shown.
  • the Read sequence of Example 1 is shown.
  • 9 shows a read process of the processor # 2 according to the first embodiment.
  • 9 shows a read process of the processor # 1 according to the first embodiment.
  • the write sequence of Example 2 is shown.
  • the Read sequence of Example 2 is shown.
  • the write sequence of Example 3 is shown.
  • 10 shows a write process of the processor # 1 according to the third embodiment.
  • the Read sequence of Example 3 is shown.
  • the write sequence of Example 4 is shown.
  • 10 shows a write process of the processor # 1 according to the fourth embodiment.
  • An example of the speculative transfer parameter and data transfer state management table of Example 4 is shown. The speculative transfer processing of the inter-node I / F 223 of the controller # 1 during the write processing according to the fourth embodiment will be described.
  • the Read sequence of Example 4 is shown.
  • xxx table information may be described using the expression “xxx table”, but the information may be expressed in any data structure. That is, “xxx table” can be referred to as “xxx information” to indicate that the information does not depend on the data structure.
  • xxx information information may be described using the expression “xxx table”, but the information may be expressed in any data structure. That is, “xxx table” can be referred to as “xxx information” to indicate that the information does not depend on the data structure.
  • the configuration of each table is an example, and one table may be divided into two or more tables, or all or part of the two or more tables may be a single table. Good.
  • an ID is used as element identification information, but other types of identification information may be used instead of or in addition thereto.
  • a reference number or a common number in the reference number is used, and when a description is made by distinguishing the same type of element, the reference number of the element is used.
  • an ID assigned to the element may be used instead of the reference code.
  • an I / O (Input / Output) request is a write request or a read request, and may be referred to as an access request.
  • the process may be described using “program” as a subject.
  • the program is executed by a processor (for example, a CPU (Central Processing Unit)), so that a predetermined processing is appropriately performed. Since processing is performed using a storage resource (for example, a memory) and / or an interface device (for example, a communication port), the subject of processing may be a processor.
  • the process described with the program as the subject may be a process or system performed by a processor or an apparatus having the processor.
  • the processor may include a hardware circuit that performs a part or all of the processing.
  • the program may be installed in a computer-like device from a program source.
  • the program source may be, for example, a storage medium that can be read by a program distribution server or a computer.
  • the program distribution server may include a processor (for example, a CPU) and a storage resource, and the storage resource may further store a distribution program and a program to be distributed. Then, the processor of the program distribution server executes the distribution program, so that the processor of the program distribution server may distribute the distribution target program to other computers.
  • a processor for example, a CPU
  • the storage resource may further store a distribution program and a program to be distributed. Then, the processor of the program distribution server executes the distribution program, so that the processor of the program distribution server may distribute the distribution target program to other computers.
  • two or more programs may be realized as one program, or one program may be realized as two or more programs.
  • the management system may include one or more computers.
  • the management computer displays information (specifically, for example, the management computer displays information on its own display device, or the management computer displays display information in a remote display computer)
  • Management computer is the management system.
  • the plurality of computers may include a display computer when the display computer performs display
  • the management computer (eg, management system) may include an interface device connected to the I / O system including the display system, a storage resource (eg, memory), and a processor connected to the interface device and the storage resource.
  • the display system may be a display device included in the management computer or a display computer connected to the management computer.
  • the I / O system may be an I / O device (for example, a keyboard and a pointing device or a touch panel) included in the management computer, a display computer connected to the management computer, or another computer.
  • “Displaying display information” by the management computer means displaying the display information on the display system, which may be displaying the display information on a display device included in the management computer.
  • the management computer may transmit display information to the display computer (in the latter case, the display information is displayed by the display computer).
  • the management computer inputting / outputting information may be inputting / outputting information to / from an I / O device of the management computer, or a remote computer connected to the management computer (for example, a display) Information may be input / output to / from the computer.
  • the information output may be a display of information.
  • the host interface or drive interface in order to improve the I / O response performance in the storage apparatus, notifies the completion of partial data transfer to the memory, and starts the transfer to a different memory based on the notification. It is one Embodiment of the control method.
  • the response performance is improved while suppressing an additional load on the processor and the memory.
  • FIG. 1 shows the configuration of a computer system according to an embodiment of the present invention.
  • the computer system includes a host computer 100 that mainly performs data operations and a storage device 1 that stores data.
  • the storage device 1 includes a plurality of storage nodes 2.
  • a plurality of storage nodes 2 are connected via an internal network 3 of the storage apparatus 1.
  • Each storage node 2 includes a drive chassis 21 that stores data, and a controller 22 that controls the drive chassis 21 while communicating with the host computer 100 and other storage nodes 2.
  • the number of host computers 100, storage nodes 2, drive enclosures 21, and controllers 22 may be one or more.
  • the storage apparatus 1 may include one storage node 2, and the storage node 2 may include one controller 22 and a plurality of drive housings 21.
  • the drive housing 21 has a plurality of storage media 211 such as a hard disk drive (HDD) and a solid state drive (SSD) equipped with a nonvolatile memory such as a flash memory.
  • storage media 211 such as a hard disk drive (HDD) and a solid state drive (SSD) equipped with a nonvolatile memory such as a flash memory.
  • HDD hard disk drive
  • SSD solid state drive
  • the controller 22 communicates with a host interface (hereinafter referred to as host I / F) 221 that communicates with the host computer 100, a drive interface (hereinafter referred to as drive I / F) 222 that communicates with the drive chassis 21, and other storage nodes 2.
  • host I / F host interface
  • drive I / F drive interface
  • Inter-node interface (hereinafter referred to as inter-node I / F) 223 that performs communication
  • processor 224 that relays control and data transfer thereof, data generated by the host computer 100, and various data generated for control inside the storage apparatus
  • the memory 4 is stored. There may be a plurality of these units in the controller 22.
  • the host I / F 221 transmits protocol data used for communication between the host computer 100 and the controller 22 such as Fiber Channel (FC), Fiber Channel Over Ethernet (registered trademark) (FCoE), Internet SCSI (iSCSI), and the like. It has a function to convert to a protocol such as PCI-Express used internally.
  • the drive I / F 222 converts protocol data used for communication between the storage medium 211 and the controller 22 such as FC or Serial Attached SCSI (SAS) into a protocol such as PCI-Express used in the controller 22. It has a function.
  • the inter-node I / F 223 has a function of converting protocol data used for communication between the storage nodes 2 such as Ethernet (registered trademark) and InfiniBand into a protocol such as PCI-Express used in the controller 22.
  • protocol data used for communication between the storage nodes 2 such as Ethernet (registered trademark) and InfiniBand into a protocol such as PCI-Express used in the controller 22.
  • I / Fs may be LSI (Large Scale Integration), or may be software stored in the memory 4 and executed by the processor 224.
  • the processor 224 includes a data bus for transferring data between each I / F and the memory 4, an arithmetic circuit for operating software, and the like.
  • the processor 224 having a data bus function and an arithmetic function is illustrated, but the processor 224 may be an LSI.
  • the memory 4 is a high-speed accessible storage element such as a DRAM, and is connected to the processor 224 via a memory interface such as DDR3 or DDR4.
  • the memory 4 in the controller 22 may include a plurality of memory modules. On the memory 4, data used by each I / F and the processor 224 is held.
  • FIG. 2 is an example showing an area division of data stored in the memory 4.
  • the memory 4 has a user data area 41 for storing user data received from the host computer 100 and a control data area 42 for storing control data in the storage apparatus.
  • the user data area 41 is a temporary area used for exchanging data between the host I / F 221 or drive I / F 222 and the controller, and the transfer buffer area 44, so that frequently read / written data can be accessed at high speed.
  • a user data cache area 43 used for the The user data cache area 43 may be referred to as a cache area 43. Note that the cache area 43 may be used instead of the transfer buffer area 44, or the transfer buffer area 44 may be used instead of the cache area 43.
  • the processor 224, the host I / F 221, the drive I / F 222, and the inter-node I / F 223 share the memory 4.
  • the host I / F 221 does not need to individually have the transfer buffer area 44 and the cache area 43 that store data transferred between the host I / F 221 and the host computer 100.
  • the host I / F 221 transfers data from the host computer 100 to the transfer buffer area 44 in the memory 4, and transfers data stored in the transfer buffer area 44 in the memory 4 to the host computer 100.
  • the drive I / F 222 does not need to individually have the transfer buffer area 44 and the cache area 43 for storing data transferred between the drive I / F 222 and the storage medium 211.
  • the drive I / F 222 transfers data from the storage medium 211 to the transfer buffer area 44 in the memory 4, and transfers data stored in the transfer buffer area 44 in the memory 4 to the storage medium 211.
  • the inter-node I / F 223 does not need to individually have the transfer buffer area 44 and the cache area 43 that store data transferred between the two controllers 22.
  • the inter-node I / F 223 transfers the data stored in the memory 4 of the local controller 22 to the memory 4 of the other controller 22. Thereby, the capacity of the memory included in each of the host I / F 221, the drive I / F 222, and the inter-node I / F 223 can be suppressed.
  • FIG. 3 shows a data transfer flow when the write request is received in the storage apparatus 1.
  • controllers # 1, # 2, and # 3 the three controllers 22 in the storage apparatus 1 are referred to as controllers # 1, # 2, and # 3, respectively.
  • the processors 224 in the controllers # 1, # 2, and # 3 are referred to as processors # 1, # 2, and # 3, respectively.
  • the data received from the host computer 100 by the host I / F 221 of the controller # 1 connected to the host computer 100 is stored in the transfer buffer area 44 of the memory 4 of the controller # 1 (4007). Thereafter, the controller # 1 transfers the received data to the two cache areas 43a and 43b on the different controllers # 2 and # 3 (4009). Thereafter, before writing data to the storage medium 211, the controller # 1 notifies the host computer 100 of the completion of data reception, thereby realizing response performance independent of the writing speed of the storage medium 211. . At that time, the data is copied to the memories on the two controllers so that the data received from the host computer 100 is not lost due to a failure occurring in the single controller 22 (4009).
  • the transfer buffer area 44 and the cache areas 43a and 43b are allocated on different controllers # 1, # 2 and # 3, but one of the cache areas 43a and 43b is The transfer buffer area 44 and the memory 4 on the same controller # 1 may be secured.
  • all the controllers # 1, # 2, and # 3 cross the internal network 3 and exist in different storage nodes 2. However, these controllers exist in the same storage node 2. May be.
  • the processor 224 may include a processor core and a DMA (Direct Memory Access) controller.
  • the DMA controller may execute a DMA transfer between the memory 4 and the memory 4 in another controller.
  • the host I / F 221 may have a DMA controller. In this case, this DMA controller executes DMA transfer between the host computer 100 and the transfer buffer area 44 in accordance with an instruction from the processor 224.
  • the inter-node I / F 223 may have a DMA controller. In this case, this DMA controller executes DMA transfer between the memory 4 of the controller # 1 and the memory 4 of the other controller 22 in accordance with an instruction from the processor 224. Thereby, the load of the processor 224 (processor core) at the time of data transfer can be suppressed.
  • FIG. 4 shows a write sequence of the comparative example.
  • This figure shows an example of a communication sequence from when the storage apparatus of the comparative example receives a write request (write command) from the host computer 100 until it notifies the host computer 100 of completion of write data reception.
  • controller # 1 is called CL1
  • controller # 2 is called CL2.
  • the inter-node I / F 223 is omitted.
  • the operation of the memory 4 of the controller # 1 is also shown in the operation of the processor # 1.
  • the operation of the memory # 4 of the controller # 2 is also shown in the operation of the processor # 2.
  • a case where a write request of 256 KB is received is illustrated.
  • the host I / F 221 writes the Write request (4001) received from the host computer 100 on the memory 4, and notifies the processor # 1 of the receipt of the new request (4002).
  • the processor # 1 analyzes the request and determines a transfer buffer area 44 for receiving data and a controller # 2 including the transfer destination cache area 43.
  • the transfer buffer area 44 may be secured and managed in advance by the processor # 1, or the cache area 43 may be secured and managed in advance by the processor # 2.
  • the processor # 1 requests the other controller # 2 to secure the cache area 43 (4003). Based on this request, the processor # 2 secures the cache area 43 on the memory 4 and notifies the completion thereof (4004).
  • the controller # 1 requests the controller # 2 to secure the cache area after receiving the write request.
  • the controller # 1 knows the available area in the memory 4 of the controller # 2 in advance. Alternatively, it may be requested after XFER_RDY (data transfer request) transmission (4005).
  • the processor # 1 notifies the host computer 100 of XFER_RDY via the host I / F 221 (4005, 4006).
  • the processor # 1 can divide and notify completion of reception preparation of an arbitrary data length in a plurality of times as long as it is equal to or less than the request data length (256 KB in this case) specified by the Write request (4002). .
  • division of XFER_RDY (4005) means an increase in the amount of communication between the host computer 100 and the host I / F 221 and thus leads to a decrease in data transfer efficiency.
  • transferring continuous data corresponding to the same XFER_RDY has higher transfer efficiency than transferring non-continuous data while switching processing to different XFER_RDY. .
  • the storage apparatus 1 generally notifies XFER_RDY indicating the requested data length at a time in response to a write request received from the host computer 100. Also in this example, the processor # 1 issues XFER_RDY indicating the same amount (256 KB) as the request data length (4005).
  • the host computer 100 that has received XFER_RDY starts transferring the write data prepared in advance to the storage apparatus 1 (4007). Receiving this, the host I / F 221 performs protocol conversion and address conversion of data from the host computer 100, and stores the data in the transfer buffer area 44 (4008). When the host I / F 221 completes writing all the data (256 KB in this case) designated by XFER_RDY (4005) to the transfer buffer area 44, it notifies the processor # 1 of completion of data reception (4009). Receiving the data reception completion notification, the processor # 1 starts data transfer to the cache area 43 on the controller # 2 (4010). The processor # 1 notifies the completion of the data transfer (4010) by a message between the processors 224 (4011).
  • the inter-node I / F 223 completes the inter-controller transfer in the same manner as the data reception completion notification (4009) by the host I / F 221. May be notified to the processor # 2.
  • Processor # 2 which has received all the data, notifies processor # 1 of the completion of reception (4012). This communication may also be notified by the mechanism of the inter-node I / F 223.
  • the controller # 1 completes the double writing to the two cache areas 43 of the controllers # 2 and # 3
  • the controller # 1 returns a write data reception completion status (Good) to the host computer 100 via the host I / F 221. (4013, 4014).
  • the host computer 100 determines that the Write request has been completed upon receiving this status. That is, the elapsed time from the issuance of the write request (4001) to the completion status reception (4014) is the write response time of the storage apparatus 1 as viewed from the host computer 100.
  • FIG. 5 shows a write sequence according to the first embodiment.
  • the processing until the host computer 100 starts data transfer is the same as the write sequence of the comparative example.
  • the host I / F 221 has a mechanism for notifying completion of partial data reception (partial completion) before the host I / F 221 completes reception of all data from the host computer 100 (5009).
  • # 1 starts the inter-controller transfer (5010).
  • the host I / F 221 writes 64 KB of data to the transfer buffer area 44 regardless of the request data length (256 KB) specified by XFER_RDY, the host I / F 221 notifies the processor # 1 of this (5009). Show.
  • the host I / F 221 can detect that the transfer of the data length designated by the processor # 1 is completed, and can notify the processor # 1. Receiving this notification, the processor # 1 transfers only 64 KB ready for transfer to the controller # 2 (5010), and notifies the completion of the data transfer by a message between the processors 224 (5011). Data transfer from the transfer buffer area 44 of the controller # 1 to the cache area 43 of the controller # 2 may be executed by the DMA controller in the processor # 1, or may be executed by the processor core in the processor # 1. However, it may be executed by the inter-node I / F 223 of the controller # 1 according to an instruction from the processor # 1.
  • the processor # 2 When the reception of the requested data length (256 KB) designated by the memory allocation (5003) is completed, the processor # 2 notifies the completion notification to the processor # 1 by a message between the processors 224 (5012). Data transfer from the host I / F 221 to the transfer buffer area 44 (5008) and the controller are started by the processor # 1 in response to a partial data reception completion notification (partial completion notification) of the write data. Since the data transfer (5010) between # 1 and # 2 is processed in parallel (pipeline transfer), the storage apparatus 1 can transmit the write data reception completion status (5013, 5014) at an early stage. Thereby, the write response time can be shortened.
  • the amount of shortening varies depending on the interval at which partial completion is notified, the communication band between the host I / F 221 and the transfer buffer area 44, the communication band between controllers, and the like. In order to maximize the reduction amount, it is necessary to switch the control for the partial completion notification (5009) according to these conditions.
  • the target address of the write request may be associated with the storage medium 211 connected to the controller # 1.
  • the processor # 1 issues a write request to the drive I / F 222 of the controller # 1 instead of the 5010, thereby causing the drive I / F 222 to execute data transfer from the transfer buffer area 44 to the storage medium 211. May be.
  • FIG. 6 shows a write process of the processor # 1 according to the first embodiment.
  • This figure shows an example of the control flow of the processor # 1 at the time of Write in the first embodiment.
  • the processor # 1 on the controller # 1 to which the host I / F 221 is connected determines the partial data length indicating the partial completion notification (5009) interval of the host I / F 221.
  • the I / F 221 may autonomously determine the partial completion notification interval, or the processor # 2 may determine the partial completion notification interval.
  • the processor # 1 that has received the write request (S601) requests the controller # 2 to secure a cache area (S602). While waiting for a response to this, the host I / F 221 confirms whether the partial completion notification function can be used (S603).
  • the processor # 1 waits for a cache area reservation completion notification from another controller (S605b) as in the comparative example, and sends a write request to the host computer 100.
  • XFER_RDY indicating the same amount as the request data length specified in (1) is transmitted via the host I / F 221 (S606b).
  • the processor # 1 executes a partial completion notification interval determination process for calculating the partial completion notification interval (S604). This partial completion notification interval determination process will be described later.
  • the processor # 1 waits for a cache area securing completion notification from another controller (other CL) (S605a), and the host computer 100 receives XFER_RDY indicating the same amount as the requested data length specified in the Write request, / F221 is transmitted (S606a).
  • XFER_RDY at this time is XFER_RDY with partial completion indicating a partial completion notification interval.
  • the processor # 1 After transmitting XFER_RDY in S606a or S606b, the processor # 1 waits for a data reception completion notification from the host I / F 221 (S607), and transfers the received data to another controller (transfer between CLs) according to the data reception completion notification. Start (S608). If there is data that has not yet been transferred for the requested data length indicated in the write request (S609), the processor # 1 again waits for a data reception completion notification from the host I / F 221 (S607). ).
  • the processor # 1 repeats until all data transfer of Write data is completed (S607 to S609), and when all data transfer is completed, the processor # 1 waits for a reception completion notification from another controller (S610) and responds to the Write request to the host computer 100. A completion status (Good Status) is returned (S611). ⁇ Notification interval and effect>
  • FIG. 7 shows a first response case to the write request in the first embodiment.
  • This figure shows a case where the transfer band H GB / s (701) between the host I / F 221 and the transfer buffer area 44 is smaller than the transfer band X GB / s (702) between the controllers.
  • the transfer band H GB / s (701) between the host I / F 221 and the transfer buffer area 44 is larger than the transfer band between the host computer 100 and the host I / F 221, the effective bandwidth of the transfer band H is the host This is a transfer band between the computer 100 and the host I / F 221.
  • the response time is shortened by eliminating the sequential transfer of the data transfer (5008) between the host I / F 221 and the transfer buffer area 44 and the data transfer (5010) between the controllers. That is, the effect of the present embodiment is maximized by selecting a partial completion notification interval N KB that minimizes the total processing time T ALL (705) from the start of transfer by the host I / F 221 to the completion of transfer between controllers. it can. Basically, the effect of shortening the response time can be obtained as the time during which two sequential transfers (5008, 5010) are simultaneously processed increases. Further, the smaller the partial completion notification interval N, the finer the transfer granularity that can be processed simultaneously.
  • T ALL is the time T H (704) from when all the transfers between the host I / F 221 and the transfer buffer area 44 are completed until the last completion notification (5009) is transferred.
  • T ALL (N) Equal to the sum of the transfer time T NX (705) required to transfer the last N KB (or smaller than N KB) between the controllers. That is, when the requested data length (total transfer size) requested by the write request is W KB, T ALL (N) can be approximated by the following equation.
  • FIG. 8 shows a second response case to the write request in the first embodiment.
  • the transfer band H GB / s (801) between the host I / F 221 and the transfer buffer area 44 is larger than the transfer band X GB / s (802) between the controllers.
  • the processor # 1 starts the inter-controller transfer (5010), if a plurality of partial completion notifications (5009) have been received, all the data on the transfer buffer area 44 can be transferred between the controllers (5010).
  • the additional processing overhead for that purpose is sufficiently small.
  • T ALL (N) when the time required for transfer is larger than T NX (805) is expressed by the following equation, as in the first response case, and N for minimizing this is as described above.
  • T ALL (N) is expressed by the following equation.
  • the partial completion notification interval N described above is an example of a reference amount that enhances the effect of the present embodiment.
  • the effective band H (701, 801), X (702, 801) of each part, and partial completion are described. Since the processing overhead T OH changes dynamically, it may not be a static optimal solution. A setting in consideration of the dynamic change of each variable or a value calculated by a different approximate model may be used as the partial completion notification interval N.
  • FIG. 9 shows partial completion notification interval determination processing.
  • the partial completion notification interval that leads to the response performance improvement can be estimated by the transfer bandwidth between the controllers and the processing overhead due to notification of partial completion.
  • processor # 1 prepares both a mode for dynamically determining a notification interval and a mode for statically determining and switching between them is illustrated (S6041).
  • the interval setting table 1001 used for the static mode and the partial completion notification interval setting information 1002 used for the dynamic mode will be described.
  • FIG. 10 shows an interval setting table 1001 and partial completion notification interval setting information 1002.
  • the interval setting table 1001 is created in advance from the above approximate values and stored in the control data area 42 of the memory 4.
  • the interval setting table 1001 indicates a partial completion notification interval for each request data length (Write request size).
  • the partial completion notification interval setting information 1002 indicates the CPU operation rate, command processing count, internal bus execution bandwidth, notification interval setting history, and response time history measured by the processor # 1.
  • the CPU operating rate indicates the operating rate of the processor # 1.
  • the command processing count indicates the number of I / O requests currently being processed.
  • the internal bus execution band indicates the execution band of the bus in the controller # 1.
  • the notification interval setting history indicates a partial completion notification interval set in the past of a certain time.
  • the response time history indicates the response time when each partial completion notification interval in the notification interval setting history is set. The response time is the time from the I / O request from the host computer 100 to the response to the host computer 100.
  • the processor # 1 determines the partial completion notification interval corresponding to the requested data length by referring to the interval setting table 1001 (S6047).
  • the processor # 1 determines whether or not the partial completion notification function is valid. In this example, the processor # 1 collects the load status (S6042) of the processor # 1 to be processed and the congestion status (S6043) of the internal bus, and determines whether to use the partial completion notification function based on the collected information. Judging.
  • the load status of the processor # 1 is, for example, the CPU operation rate and the number of command processes in the partial completion notification interval setting information 1002.
  • the internal bus congestion status is, for example, the internal bus execution band in the partial completion notification interval setting information 1002.
  • a high processor load means that a large number of I / O requests and control processes are being processed in parallel. Under such conditions, the response performance per hour is higher than the response performance of specific I / O requests.
  • the number of I / O request processes (throughput) may be important. In such a case, if processor # 1 processes a high-frequency partial notification, the total processing load of processor # 1 is increased, leading to a decrease in throughput. Furthermore, if the processor processing time for each I / O is evenly distributed, as the number of I / Os to be processed increases, the time available for specific I / O processing decreases, and high-frequency partial completion notifications are sent.
  • the processor # 1 of the present embodiment uses the partial completion notification function only when it is determined that there is an effect of shortening the response time (S6044: Y), and when the throughput is important (S6044).
  • the partial completion notification function is not used (S6046).
  • the processor # 1 determines the partial completion notification interval that is effective based on the notification interval setting history and the response time history (S6045). Thereby, an appropriate partial completion notification interval can be determined. Further, in this example, the processor # 1 uses a plurality of determination criteria, but any combination of these determination criteria may be used. ⁇ Effect of Write processing>
  • the host I / F 221 notifies the processor # 1 of the completion of transfer of a part of the requested data length before the transfer of all data from the host computer 100 to the transfer buffer area 44 is completed.
  • the processor # 1 can start data transfer to the cache area 43 on another controller.
  • the processor # 1 can improve the response performance of the storage apparatus 1 to the write request of the host computer 100 by setting the partial transfer completion notification frequency according to the bandwidth ratio of the bus, the data transfer length, the processor load, and the like. . ⁇ Read processing>
  • FIG. 11 shows a data transfer flow when a read request is received in the storage apparatus 1.
  • the controller # 1 connected to the host computer 100 receives a Read request (Read command) from the host computer 100, and the target data of the Read request is a storage medium connected to a controller # 2 different from the controller # 1.
  • the case stored on 211 is assumed.
  • the storage medium 211 connected to the controller # 2 transfers the requested data to the cache area 43 on the controller # 2 (1101).
  • the processor # 2 transfers data from the cache area 43 to the transfer buffer area 44 on the controller # 1 (1102).
  • the processor # 1 transfers data from the transfer buffer area 44 to the host computer 100 via the host I / F 221 (1103). If the target data of the Read request is stored on the storage medium 211 connected to the controller # 1 to which the host computer 100 is connected, the transfer (1102) across the controllers becomes unnecessary.
  • FIG. 12 shows a read sequence of the comparative example.
  • This figure shows an example of a communication sequence from when the storage apparatus of the comparative example receives a Read request (Read command) from the host computer 100 to when the requested Read data is transferred to the host computer 100.
  • the host I / F 221 and the inter-node I / F 223 are omitted.
  • the processor # 1 that has received the Read request from the host computer 100 via the host I / F 221 analyzes the request content, specifies the storage location of the requested data, and secures the transfer buffer area 44 (1201). .
  • the processor # 1 may determine the storage location of the requested data and the transfer buffer area 44 in advance before receiving the Read request.
  • the processor # 1 transfers the Read request to the controller # 2 that manages the target data (1202).
  • the processor # 2 issues a Read request to the storage medium (drive) 211 via the drive I / F 222 and starts reading (1204). At this time, if the target data exists in the cache area 43 of the memory 4 of the controller # 2, reading from the storage medium 211 becomes unnecessary.
  • the storage medium 211 that has received the Read request from the drive I / F 222 starts transferring the data specified in the Read request (1205).
  • the drive I / F 222 performs protocol conversion and address conversion of data from the storage medium 211 and transfers the data to the cache area 43 designated by the processor # 2 (1206).
  • the processor # 2 transfers it to the transfer buffer area 44 of the controller # 1 (1208).
  • the processor # 2 When all the data transfer is completed, the processor # 2 notifies the controller # 1 of the transfer completion by communication between the inter-node I / F 223 and the processor 224 (1209). Receiving the notification, the processor # 1 transfers data to the host computer 100 via the host I / F 221 (1210). At this time, the host I / F 221 performs protocol conversion and address conversion of the data read from the transfer buffer area 44 and transfers the data to the host computer 100.
  • the time from the read request issuance (1201) to the completion of read data reception (1210) is the read response time of the storage apparatus 1 as viewed from the host computer 100.
  • transfer from the storage medium 211 to the cache area 43 of the controller # 2 (1205, 1206), transfer between controllers (1208), transfer from the controller # 1 to the host computer 100 (1210) Are all processed sequentially. For this reason, when the request data length of the Read request becomes large, the Read response time increases in proportion to the total value of the transfer times related to the three transfers (1205, 1208, 1210).
  • FIG. 13 shows a read sequence of the first embodiment.
  • the processing from when the storage medium 211 starts data transfer (1301 to 1305) is the same as the read sequence of the comparative example.
  • the drive I / F 222 before the drive I / F 222 completes reading of all data from the storage medium 211, it has a mechanism for notifying the completion of reception of some data (1307), and the processor # 2 is based on the notification. Transfer between controllers is started (1308).
  • the drive I / F 222 performs partial transfer each time 64 KB data is read from the storage medium 211 and stored in the cache area 43 regardless of the requested data length (256 KB) specified in the Read request. The completion is notified (1307).
  • the drive I / F 222 can detect that the transfer of the data length designated by the processor # 2 is completed, and can notify the processor # 2. Receiving this notification, the processor # 2 transfers the 64 KB ready for transfer to the controller # 1 (1308), and notifies the controller # 1 of the transfer completion of 64 KB (1309).
  • Data transfer from the cache area 43 of the controller # 2 to the transfer buffer area 44 of the controller # 1 may be executed by the DMA controller in the processor # 2 or may be executed by the processor core in the processor # 2. However, it may be executed by the inter-node I / F 223 of the controller # 2 according to an instruction from the processor # 2.
  • Controller # 1 starts transferring 64 KB of data to the host computer 100 in response to the transfer completion notification (1310).
  • the transfer completion notification (1310) data transfer from the storage medium 211 to the cache area 43 (1305, 1306), data transfer between controllers (1308), and data transfer between the transfer buffer area 44 and the host computer 100 (1310) Since parallel processing (pipeline transfer) is performed, the Read response time can be shortened.
  • all three transfers are pipeline transferred. However, only transfer (1305, 1306, 1308) from the storage medium 211 to the transfer buffer area 44 is pipelined, or a cache area. Only the transfer (1308, 1310) from 43 to the host computer 100 may be pipelined.
  • the host computer 100 and the storage medium 211 are illustrated as being connected to different controllers # 1 and # 2, respectively, but the same mechanism can be achieved even when they are connected to the same controller 22. Thus, data transfer from the storage medium 211 to the cache area 43 (1305, 1306) and transfer from the cache area 43 to the host computer 100 (1310) can be pipelined.
  • the response performance improvement effect varies depending on the interval at which partial completion is notified, the request data length of the Read request, and the communication bandwidth of each unit.
  • the target address of the Read request may be associated with the storage medium 211 connected to the controller # 1.
  • the processor # 1 issues a Read request to the drive I / F 222 of the controller # 1 instead of 1302 and 1303, thereby transferring data from the storage medium 211 to the transfer buffer area 44 to the drive I / F 222. It may be executed.
  • the processor # 1 executes a process similar to the read process of the processor # 2 instead of the processor # 2, so that a read indicating a partial completion notification interval is given to the inter-node I / F 223 of the processor # 2 or the controller # 2.
  • a request may be issued.
  • FIG. 14 illustrates the Read process of the processor # 2 according to the first embodiment.
  • This figure shows an example of the control flow of the processor # 2 when the processor # 1 receives the Read request.
  • the basic flow is the same as the write process of the processor # 1 described above.
  • the processor # 2 determines whether the requested data is already stored in the cache area 43 of the controller # 2 (S1402). If stored, the processor # 2 starts inter-controller transfer from the cache area 43 to the transfer buffer area 44 of the controller # 1 (S1407). If not stored, the processor # 2 instructs the drive I / F 222 to read data from the storage medium 211.
  • the processor # 2 determines whether or not the partial completion notification function of the drive I / F 222 can be used (S1403), and if not usable, issues a normal Read request to the drive I / F 222 (S1405b). . If available, the processor # 2 executes partial completion notification interval processing (S1404), and issues a Read request to the drive I / F 222 (S1405a). The Read request at this time is a read request with partial completion indicating a partial completion notification interval. Thereafter, after receiving a data transfer completion notification by the drive I / F 222 (S1406), the processor # 2 starts transfer between controllers (S1407).
  • Processor # 2 repeats steps (S1406 and S1407) until all data transfer for the Read request is completed.
  • the processor # 2 may notify the transfer destination controller # 1 of the partial transfer completion (described above). Read sequence 1309).
  • FIG. 15 illustrates the Read process of the processor # 1 according to the first embodiment.
  • This figure shows an example of the control flow of the processor # 1 when the Read request is received in the first embodiment.
  • the processor # 1 specifies the controller # 2 (destination) managing the requested data based on the Read request, and transfers the Read request to the controller # 2 (S1502).
  • the processor # 1 waits for a transfer completion notification from the controller # 2 (S1503), and upon receiving the notification, transfers the received data from the transfer buffer area 44 to the host computer 100 through the host I / F 221 (S1504).
  • the processor # 1 may notify the host I / F 221 of completion every time a part of data transfer is completed.
  • the processor # 1 repeats this until all the data has been transferred (S1503 to S1505).
  • the partial completion notification interval determination process (S1404) in the read process of the processor # 2 is the same as the partial completion notification interval determination process in the write process by the processor # 1.
  • the same relationship is obtained only when the data transfer direction is reversed at the time of Read. Show.
  • the drive I / F 222 notifies the transfer completion of a part of all the data transfer, so that the data transfer from the storage medium 211 to the cache area 43 is completed on another controller.
  • Data transfer to a certain transfer buffer area 44 can be started.
  • the inter-node I / F 223 and the processor 224 notify the transfer destination controller of the completion of transfer of a part of all data transfer, so that all data from the cache area 43 to the transfer buffer area 44 on another controller is transferred.
  • Data transfer from the transfer buffer area 44 to the host computer 100 can be started before the transfer is completed.
  • the processor 224 sets the partial transfer completion notification frequency according to the bandwidth ratio of the bus, the data transfer length, the processor load, and the like, thereby improving the response performance of the storage apparatus 1 with respect to the Read request of the host computer 100.
  • the host I / F 221 and the drive I / F 222 perform partial transfer.
  • the second data transfer between the memories 4 of the two controllers 22 can be started, and the response performance is improved.
  • the inter-node I / F 223 and the processor 224 notify the completion of the partial transfer, whereby the third data from the transfer destination memory 4 to the host computer 100 is transferred. Data transfer can be started. Response performance is improved by pipelining the first, second, and third data transfers.
  • the host I / F 221 and the drive I / F 222 use the management information regarding the data transfer state that is used for communication with the host computer 100 and the storage medium 211, so that the processor 224 and the memory 4 can be connected. Less additional load and improved response performance. Furthermore, the processor 224 controls the transfer completion notification frequency according to the bandwidth ratio of the bus, the data transfer length, the processor load, etc., so that the response performance improvement effect can be enhanced without reducing the throughput.
  • the basic device configuration and processing flow of the storage device 1 of the second embodiment are the same as those of the first embodiment, but differ from the first embodiment in the method of detecting partial transfer completion.
  • the processor 224 detects the completion of partial data reception by dividing the data transfer request.
  • FIG. 16 shows a write sequence according to the second embodiment.
  • this embodiment differs in the mechanism from the transfer of XFER_RDY (1605) to the transfer completion notification (1609) by the host I / F 221.
  • a plurality of XFER_RDYs indicating finer transfer data lengths are issued to the host computer 100 instead of XFER_RDY indicating the request data length (here, 256 KB) of the Write request.
  • 64 KB XFER_RDY is transferred four times. Receiving this XFER_RDY, the host computer 100 transfers data corresponding to each XFER_RDY (1607).
  • the host I / F 221 that has completed the reception of data (64 KB) corresponding to one XFER_RDY transmits a transfer completion notification for the XFER_RDY to the processor # 1 (1609).
  • the processor # 1 can receive a partial transfer completion notification similar to that of the first embodiment, and can start data transfer between the controllers before receiving all data (1610).
  • the partial completion notification interval in the first embodiment is replaced with the XFER_RDY divided data length which is the data length requested by each XFER_RDY.
  • the relationship between the XFER_RDY division and the response performance improvement effect in the write sequence of the second embodiment is partially different from that of the first embodiment.
  • the transfer efficiency for the XFER_RDY transfer is reduced by dividing the XFER_RDY in the second embodiment, 1605, An additional processing load occurs at 1606.
  • XFER_RDY received by the host computer 100 is divided, when the host computer 100 performs processing for a plurality of host I / Fs 221 at the same time, the transfer target is frequently switched. Such switching basically leads to a decrease in data transfer efficiency of the host computer 100.
  • these processing load increases can also be used when determining the XFER_RDY divided data length.
  • completion notifications (1609) that are not equally spaced can be easily realized.
  • the write sequence of the second embodiment and the write sequence of the first embodiment have been illustrated on the assumption that completion notifications are equally spaced every 64 KB. However, these need not be evenly spaced.
  • the host I / F 221 transfers a relatively large transfer data length at the start of transfer, and gradually reduces the transfer data length to narrow the notification interval. , T ALL (705) can be further shortened.
  • the host I / F 221 performs high-frequency notification at the start of transfer, and gradually increases the notification interval, thereby reducing the load on the processor # 1 that processes the notification.
  • the processor # 1 since the processor # 1 first sets the notification interval in the host I / F 221, it is relatively difficult to finely change the notification frequency. In the second embodiment, since the processor # 1 can change the set value for an arbitrary XFER_RDY, notification at non-uniform intervals becomes easy.
  • the processor # 1 may determine the data length of the next data transfer based on the load at the time of the first data transfer from the host computer 100 to the transfer buffer area 44, and issue XFER_RDY indicating the data length. .
  • FIG. 17 shows a read sequence of the second embodiment.
  • the mechanism from issuing a read request (1703) to a transfer completion notification (1706) by the drive I / F 222 is different.
  • the Read request indicating the request data length of the Read request (here 256 KB)
  • it is divided into a Read request indicating a finer transfer data length and issued to the storage medium 211 (here 64 KB request) Shows an example of transferring 4 times).
  • the storage medium 211 that has received this request transfers data corresponding to each request (1705).
  • the drive I / F 222 that has received all data (64 KB) corresponding to the request sends a Read completion notification to the request (1707).
  • the processor # 2 can receive a partial transfer completion notification similar to that of the first embodiment, and can start data transfer between controllers before receiving all data (1708).
  • the processor # 2 may divide the transfer and notify the completion of the partial transfer.
  • the relationship between the Read request division and the response performance improvement effect in the Read sequence of the second embodiment is partially different from the relationship between the partial completion notification and the response performance improvement effect of the first embodiment, but the effect of the Write sequence of the second embodiment. It is the same as that of description.
  • the processing overhead (703, 804) due to the division in the first response case and the second response case of the first embodiment, in the second embodiment, by dividing the Read request, an additional processing load is generated in 1703, 1704. .
  • the storage medium 211 is simultaneously processing requests from the plurality of drive I / Fs 222, the read target is frequently switched.
  • the controller # 1 according to the second embodiment may determine the XFER_RDY division data length using the increase in the processing load.
  • the storage apparatus 1 according to the second embodiment can use non-uniform notifications in the Read process. The advantage is the same as that of Write processing.
  • the storage device 1 divides the requested data length into a plurality of transfer data lengths, and sends a plurality of XFER_RDY indicating the plurality of transfer data lengths to the host computer 100 or storage medium that is the transfer source.
  • a notification can be received before the first data transfer from the transfer source to the controller 22 is completed, and the second data transfer between the memories 4 of the two controllers 22 can be started.
  • Response performance is improved.
  • the transfer source processor 224 notifies the transfer completion of the partial transfer from the memory 4 to the host computer 100. Three data transfer can be started. Response performance is improved by pipelining the first, second, and third data transfers.
  • the processor 224 performs control according to the bandwidth ratio of the bus, the data transfer length, the processor load, and the like, so that the response performance improvement effect can be enhanced. Further, by dividing the data length for notifying the completion of transfer non-uniformly, it is possible to realize a further response performance improvement effect.
  • the basic device configuration and processing flow of the storage device 1 of the third embodiment are the same as those of the first and second embodiments, but the method for detecting the completion of partial transfer is different from the first and second embodiments. .
  • the processor 224 monitors a specific monitoring address in the memory 4 to detect the completion of partial data reception.
  • FIG. 18 shows a write sequence according to the third embodiment.
  • the processor # 1 after the processor # 1 sends XFER_RDY similar to that in the comparative example (1805), the processor # 1 periodically monitors the transfer destination address in the transfer buffer area 44 of the memory 4 (1809).
  • the host computer 100 performs data transfer to the transfer buffer area 44 via the host I / F 221 (1808), and when an update of the monitoring address data in the transfer buffer area 44 is detected, transfer between controllers is started (1810).
  • a series of data (256 KB in this case) requested by XFER_RDY is transferred in order from the first data block. Therefore, the detection of the update of the data at the monitoring address guarantees that the data transfer from the data transfer start address to the monitoring address is completed.
  • the processor # 1 is monitoring the monitoring address at the interval of 64 KB, and when detecting the first 64 KB point update, the inter-controller communication is started (1810) and the next 128 KB is monitored. An example is shown.
  • processor # 1 stores the data stored in the monitoring address before the update, and detects the update of the monitoring address data by comparing the stored data with the data stored in the monitoring address.
  • the update of the data at the monitoring address may be detected by detecting the data flow rate on the bus of the memory 4 or the access to the monitoring address.
  • the processor # 1 may acquire the data flow rate from hardware such as a memory counter or a bus counter related to the memory 4.
  • the processor # 1 detects by the method of comparing the data of the monitoring address, there is a possibility that the update cannot be detected when the same data is written, but even in this case, the transfer completion notification by the host I / F 221
  • the inter-controller transfer (1810) may be started in response to (1811). Further, even if the monitoring time interval becomes longer due to the load of the processor # 1, the inter-controller transfer (1810) can be started by the transfer completion notification (1811). Therefore, the processing time of the write sequence according to the present embodiment is not significantly increased as compared with the write sequence according to the comparative example.
  • FIG. 19 shows a write process of the processor # 1 according to the third embodiment.
  • This figure shows an example of the control flow of the processor # 1 when the processor # 1 receives the write request.
  • the processor # 1 receives the write request (S1901), and requests the other controller # 2 to secure the cache area 43 (S1902), and the monitoring address interval for monitoring and a plurality of monitoring addresses based on the monitoring address interval A monitoring address determination process is performed to determine (S1903).
  • the processor # 1 can determine the monitoring address interval according to the load of the processor # 1, the internal bus, the requested data length, etc., in the same manner as the partial completion notification interval determination process of the first embodiment.
  • the processor # 1 When the processor # 1 receives the completion notification from the other controller # 2 (S1904), the processor # 1 transmits XFER_RDY to the host computer 100 via the host I / F 221 (S1905), and starts monitoring the monitoring address periodically (S1905). S1906). When the processor # 1 detects updating of data at the monitoring address by data comparison, bus monitoring, or the like (S1907: Y), the processor # 1 performs inter-controller transfer for the received data (S1908). The processor # 1 continues to monitor and transfer until the transfer of all data having the requested data length is completed (S1909: Y).
  • the processor # 1 transfers all remaining data when a detection failure has occurred for some reason or when a completion notification is received from the host I / F 221 prior to detection by monitoring (S1906 to S1909).
  • the processor # 1 receives a notification of completion of the transfer of all data of the requested data length from the other controller # 2 (S1910), it returns a completion status (Good Status) to the write request to the host computer 100 (S1911).
  • the relationship between the memory monitoring frequency and the response performance improvement effect in the third embodiment is partially different from that in the first embodiment.
  • a processor memory load due to memory monitoring occurs in the third embodiment.
  • the processor # 1 monitors the transfer buffer area 44 more frequently, the load on the bus of the processor # 1 and the memory 4 increases, but the delay time from data transfer to the transfer buffer area 44 until detection decreases. Therefore, the processor # 1 arranges only the monitored area in the transfer destination area in the memory 4 in the cache area 43 or the like having a lower access load than the transfer buffer area 44. Can be reduced.
  • the processor # 1 assigns a transfer destination area in the transfer buffer area 44, and assigns an area having an access load lower than the access load of the transfer buffer area 44 to the monitoring address. Further, by making the monitored address intervals non-uniform, it is possible to realize the same effect as the partial transfer completion notification with non-uniform intervals as described in the second embodiment.
  • FIG. 20 shows a read sequence of the third embodiment.
  • Processor # 2 monitors the monitoring address in the cache area 43 that is the transfer destination by the drive I / F 222 (2007).
  • the processor # 2 detects this and transfers the data up to the detected monitoring address between the controllers (2008). , And notifies the transfer destination controller # 1 of the completion of the transfer between the controllers (2009). Receiving this notification, the processor # 1 transfers data to the host computer 100 via the host I / F 221 (2010). As described above, the three data transfers are pipelined, and the response performance is improved.
  • the memory monitoring method may be performed by comparing data as described in the explanation regarding Write, or may be performed by measuring the amount of data transferred on the bus.
  • the read process of the processor # 2 of the third embodiment is the same as the read process of the controller # 2 of the first embodiment, but instead of the partial completion notification interval determination process (S1404), the write of the controller # 1 of the third embodiment.
  • a monitoring address determination process (S1903) in the process is executed.
  • the read process of the processor # 1 according to the third embodiment is the same as the read process of the controller # 1 according to the first embodiment.
  • the processor 224 monitors a predetermined memory address update, so that the first data transfer from the host computer 100 or the storage medium 211 to the memory 4 is completely completed. Since the second data transfer between the memories 4 of the two controllers 22 can be started, the response performance is improved. Furthermore, before the second data transfer is completed, the processor 224 notifies the partial transfer completion, thereby starting the third data transfer from the destination memory 4 of the second data transfer to the host computer 100. Can do. Response performance is improved by pipelining the first, second, and third data transfers.
  • the processor 224 controls the memory monitoring frequency and monitoring address according to the bandwidth ratio of the bus, the data transfer length, the processor load, etc., thereby reducing the response performance without limiting the throughput reduction or the number of parallel processing I / Os. Can be increased.
  • the processor 224 sets the monitoring frequency and monitoring address non-uniformly for data transfer, or stores only the monitoring address area in a memory area with a low access load, thereby further improving response performance. realizable.
  • the basic apparatus configuration and processing flow are the same as those in the first embodiment, but the processor 224 speculatively starts the second data transfer before the completion of the first data transfer is confirmed. However, during the first data transfer, a guarantee code that is uniquely determined is assigned to the data transfer, and the guarantee code in the data is compared with the expected value during the second data transfer. If a mismatch is detected during the second transfer, the first transfer incompletion is detected and the transfer is attempted again.
  • FIG. 21 shows a write sequence according to the fourth embodiment.
  • the host I / F 221 and the inter-node I / F 223 may be part of control software that operates on the processor 224.
  • the fourth embodiment can be considered as an example in which the monitoring target in the third embodiment is set in all guarantee code areas.
  • the processor # 1 that has received the write request notifies the host I / F 221 of XFER_RDY and requests that a guarantee code be added to the received data (2015).
  • the guarantee code is a code for detecting an unintended data change, and may be an error detection code such as CRC (Cyclic Redundancy Check) or any DIF (Data Integrity Field defined by the user). ) Or a plurality of types of guarantee codes such as these may be included.
  • the processor # 1 notifies the internode I / F 223 of speculative transfer parameters for speculative transfer from the controller # 1 to the controller # 2 (DMA setting 2107).
  • the speculative transfer parameters are information that determines the transfer source address on the transfer buffer area 44 in which the data received according to XFER_RDY is stored, the transfer destination address on the cache area 43 of the controller # 2, and the guarantee code. Including. Receiving XFER_RDY, the host computer 100 transfers the data to the host I / F 221 (2108). The host I / F 221 adds a guarantee code to the received data and stores it in the transfer buffer area 44.
  • the processor # 1 after notifying the host I / F 221 of XFER_RDY, the processor # 1 notifies the inter-node I / F 223 of the inter-controller transfer and the speculative transfer parameter related to the guarantee code (2107).
  • the inter-controller transfer in this example is a DMA transfer from the transfer buffer area 44 of the controller # 1 to the cache area 43 of the controller # 2.
  • the inter-node I / F 223 that has received the speculative transfer parameter receives the controller # 1 from the transfer buffer area 44 of the controller # 1 according to the speculative transfer parameter before the processor # 1 receives the completion notification (2113) from the host I / F 221.
  • the inter-controller transfer to the second cache area 43 is started (2110).
  • the inter-node I / F 223 compares the expected value of the guarantee code with the guarantee code assigned to the data read from the transfer buffer area 44. If they match, the inter-node I / F 223 determines that the speculative transfer is successful, and notifies the processor # 2 of the transfer success through the control data area 42 in the memory 4 of the controller # 2 (2111). If this does not match, the inter-node I / F 223 determines that the data has not yet been transferred to the transfer buffer area 44, and interrupts the transfer (2112). In this figure, an example in which the transfer is interrupted is shown, but it is not necessary to interrupt the transfer.
  • the inter-node I / F 223 can reduce the processing load of the inter-node I / F 223 by asynchronously performing the inter-controller transfer, the guarantee code check, and the notification of the check result. Thereafter, the inter-node I / F 223 retries the interrupted transfer according to the transfer parameter (2113). The inter-node I / F 223 writes a data transfer state, which is a state of inter-controller transfer, in the control data area 42.
  • the processor # 1 refers to the data transfer state in the control data area 42. If there is untransferred data based on the data transfer state, processor # 1 performs transfer between the controllers of the untransferred data.
  • the transfer destination controller # 2 receives all the data based on the data transfer state, it notifies the completion of reception (2115), and the controller # 1 that has received it receives the host computer via the host I / F 221 (2116). 100 is notified of Write completion (2117).
  • FIG. 22 shows a write process of the processor # 1 according to the fourth embodiment.
  • This figure shows an example of the control flow of the processor # 1 when the processor # 1 receives the write request.
  • the processor # 1 receives the write request (S2201)
  • it requests the controller # 2 to secure the cache area 43 and determines a guarantee code for the received write data (S2202).
  • the processor # 1 executes speculative transfer determination processing for determining speculative transfer parameters (S2203).
  • the processor # 1 Upon receiving the reception preparation completion notification from the controller # 2 (S2204), the processor # 1 notifies the host I / F 221 of XFER_RDY and sets the guarantee code assignment (S2205), and the inter-node I / F 223
  • the speculative transfer is set by notifying the speculative transfer parameter (S2206).
  • the processor # 1 waits until receiving a notification of completion of all data reception from the host I / F 221 (S2207). After receiving the completion notification, the processor # 1 refers to the data transfer state (S2208) to confirm the normality of the speculative transfer (S2209). This transfer normal confirmation may be only confirmation of the guarantee code match by the inter-node I / F 223, or the reception completion notification from the transfer destination controller # 2 may be the normal transfer completion. If all the data of the requested data length has been transferred normally (S2211: Y), the processor # 1 waits for a reception completion notification from the controller # 2 (S2212).
  • the processor # 1 If there is still untransferred data (S2211: N), the processor # 1 requests the inter-node I / F 223 to transfer only the untransferred data (S2210).
  • the untransferred data includes data whose transfer is interrupted due to an abnormality.
  • the processor # 1 receives from the controller # 2 a notification of completion of reception of all data of the requested data length, the processor # 1 notifies the host computer 100 of the completion status for the write request via the host I / F 221 (S2213).
  • FIG. 23 shows an example of the speculative transfer parameter and data transfer state management table of the fourth embodiment.
  • the inter-node I / F 223 performs speculative transfer parameters 2301 for executing speculative transfer between controllers, and the inter-controller transfer when the processor # 1 receives a reception completion notification from the host I / F 221.
  • a data transfer state management table 2302 indicating a data transfer state of speculative transfer is stored.
  • the speculative transfer parameter 2301 indicates a request ID, guarantee code information, a speculative transfer start opportunity, and the number of retransmissions for each I / O request.
  • the request ID is an identifier indicating an I / O request.
  • the guarantee code information indicates a guarantee code expected value or a calculation algorithm.
  • the speculative transfer start trigger indicates a trigger for starting speculative transfer, and indicates a wait time from when the internode I / F 223 is set to speculative transfer until the transfer is started.
  • the number of retransmissions indicates the number of data transfer retransmissions (described later) when a guarantee code mismatch is detected.
  • the data transfer state management table 2302 includes a request ID, a data area, speculative transfer completed information, and other CL completion notified information for each I / O request.
  • the request ID is an identifier indicating an I / O request.
  • the data area indicates an address area for performing data transfer.
  • the speculative transfer completed information indicates the address of data that has been speculatively transferred.
  • the other CL completion notification completion information indicates the address of data for which transfer completion notification has been received from the transfer destination controller.
  • FIG. 24 illustrates speculative transfer processing of the inter-node I / F 223 of the controller # 1 during the write processing of the fourth embodiment.
  • This figure shows the operation of the inter-node I / F 223 that has received the speculative transfer parameter from the processor # 1 in the write process in the controller # 1.
  • the inter-node I / F 223 After receiving the speculative transfer parameter (S2401), the inter-node I / F 223 reads data from the address of the set transfer buffer area 44 of the transfer source when detecting the occurrence of the speculative transfer start trigger (S2402). .
  • the inter-node I / F 223 detects the occurrence of the speculative transfer start trigger by detecting that the wait time included in the inter-node I / F 223 has been received after receiving the speculative transfer parameter.
  • the inter-node I / F 223 compares the guarantee code assigned to the read data with the set guarantee code expected value (S2403). If the comparison results match (S2404: Y), the inter-node I / F 223 has transferred the data to the address of the designated transfer destination cache area 43, and the data has been successfully transferred to the data transfer status management table 2302 Information indicating the presence is recorded (S2405). If the comparison results do not match (S2404: N), the inter-node I / F 223 tries to retransmit according to the setting (S2407). In this example, the inter-node I / F 223 attempts retransmission if the guarantee code mismatch count is less than or equal to the retransmission count.
  • the inter-node I / F 223 may determine whether or not to perform retransfer according to the progress of data transfer (whether the request data length is the beginning or end of the requested data length). It may be determined according to the field that does not match the expected value (CRC part, user setting tag part, etc.), or depending on whether a reception completion notification has been received from the transfer destination for the preceding transfer You may judge. For example, the inter-node I / F 223 retransmits immediately if the mismatched portion is within the last predetermined range of the request data length, and if the mismatched portion is within the first predetermined range of the requested data length, the inter-node I / F 223 Resend or do not resend after waiting. The inter-node I / F 223 repeats the above (S2402 to S2405, S2407) until the transfer of all data of the requested data length is completed (S2406).
  • the inter-node I / F 223 interrupts the transfer. Thereafter, the processor # 1 issues a transfer request for untransferred data to the inter-node I / F 223 (S2210), and when a speculative transfer process abnormality occurs, the processor # 1 notifies the host computer 100 of the abnormality.
  • this embodiment may be implemented in combination with other embodiments. That is, the first transfer start trigger (S2402) of the inter-node I / F 223 is notified to the inter-node I / F 223 using the method shown in the other embodiments, and thereafter, the inter-node I / F 223 sends a guarantee code. Transfer may be performed while checking. By doing so, the transfer start timing can be made accurate, so that the processing load of the inter-node I / F 223 can be reduced and the processing load of the processor 224 for subsequent partial completion notification and memory monitoring can be reduced.
  • the third embodiment since a series of data requested by XFER_RDY is assumed to be transferred in order from the first data block, combining with this embodiment, even if the transfer order is disturbed, It is possible to detect completion of data transfer up to.
  • FIG. 25 shows a read sequence of the fourth embodiment.
  • the processor # 2 When the processor # 2 receives a read request from the processor # 1 (2501, 2502), it issues a read request to the drive I / F 222 (2503), and speculative transfer for speculative transfer from the controller # 2 to the controller # 1 The parameter is notified to the inter-node I / F 223 (DMA setting, 2505).
  • the storage medium 211 When a guarantee code is assigned to data read based on a request from the drive I / F 222, the storage medium 211 notifies the inter-node I / F 223 of the expected value of the guarantee code.
  • the guarantee code is not given to the data read based on the request from the drive I / F 222, or when the guarantee code is replaced by the drive I / F 222, the drive I / F 222 also has the expected guarantee code value.
  • the inter-node I / F 223 Independent of data transfer from the drive I / F 222 to the cache area 43, the inter-node I / F 223 starts speculative transfer from the cache area 43 of the controller # 2 to the transfer buffer area 44 of the controller # 1 according to the speculative transfer parameter. (2508). At that time, the inter-node I / F 223 compares the guarantee code assigned to the data on the cache area 43 with the designated guarantee code expected value.
  • the inter-node I / F 223 issues an inter-controller transfer completion notification to the processor # 1 (2509). Receiving this notification, the processor # 1 transfers the data transferred to the transfer buffer area 44 to the host computer 100 via the host I / F 221 (2512). At this time, data transfer from the controller # 1 to the host computer 100 may also be speculatively performed by performing a guarantee code check by the host I / F 221.
  • the read process of the processor # 2 of the fourth embodiment is realized by a combination of the read process of the processor # 2 of the first embodiment and the write process of the processor # 1 of the fourth embodiment.
  • the speculative transfer process of the inter-node I / F 223 of the controller # 2 during the Read process is the same as the speculative transfer process of the inter-node I / F 223 of the controller # 1 during the Write process, but the transfer source is the controller # 2.
  • the transfer destination is the transfer buffer area 44 of the controller # 1.
  • a guarantee code is assigned during the first data transfer from the host computer 100 or the storage medium 211 to the memory 4, and the second data transfer between the memories 4 of the two controllers 22 is performed. While performing speculatively, checking the match of the guarantee code makes it possible to start the second data transfer before the completion of the first data transfer, thereby improving the response performance. Furthermore, at the time of Read processing, the third data transfer is started before the second data transfer is completed by checking the guarantee code match even during the third data transfer from the transfer destination memory 4 to the host computer 100. can do. Response performance is improved by pipelining the first, second, and third data transfers.
  • the processor 224 controls the speculative transfer execution interval according to the bandwidth ratio of the bus, the data transfer length, the processor load, and the like, thereby improving the response performance improvement effect.
  • the inter-node I / F 223 determines the retransmission when the guarantee code mismatch is detected according to the part where the mismatch is detected in the guarantee code or the offset of the part where the mismatch is detected in the requested data length data. By controlling, the effect can be enhanced.
  • the first transfer request may be a write request
  • the first processor may be the processor # 1
  • the first device may be the host computer 100
  • the second device may be the memory 4 of the controller # 2.
  • the first transfer request may be a write request
  • the first processor may be the processor # 1
  • the first device may be the host computer 100
  • the second device may be the storage medium 211 connected to the controller # 1.
  • the first transfer request may be a Read request
  • the first processor may be the processor # 2
  • the first device may be the storage medium 211 connected to the controller # 2
  • the second device may be the memory 4 in the controller # 1. .
  • the first transfer request may be a Read request
  • the first processor may be the processor # 1
  • the first device may be the memory 4 in the controller # 2
  • the second device may be the host computer 100.
  • the first transfer request may be a Read request
  • the first processor may be the processor # 1
  • the first device may be the storage medium 211 connected to the controller # 1
  • the second device may be the host computer 100.
  • the first transfer device and the second transfer device may be a host I / F 221, a drive I / F 222, an inter-node I / F 223, a processor 224, a DMA controller in the controller 22, or the like.
  • the first partial completion condition may be that the host I / F 221 of the controller # 1 notifies the processor # 1 of completion of transfer of the data length of the partial completion notification interval, or the host I / F 221 of the controller # 1 May notify the processor # 1 of the completion of the transfer for XFER_RDY indicating the transfer of the data length of the partial completion notification interval, or the processor # 1 detects a change in the data of the monitoring address.
  • the inter-node I / F 223 of the controller # 1 may detect the occurrence of a speculative transfer start opportunity.
  • the first data transfer instruction and the first partial data transfer instruction may be XFER_RDY.
  • the start timing may be a speculative transfer start opportunity.
  • the second memory may be the memory 4 of the controller # 2
  • the second processor may be the processor # 2
  • the storage device 211 may be a storage device connected to the controller # 2.
  • the second transfer request may be a Read request from the processor # 1 to the processor # 2.
  • the second partial completion condition may be that the drive I / F 222 of the controller # 2 notifies the processor # 2 of completion of transfer of the data length of the partial completion notification interval, or the drive I / F of the controller # 2 F222 may notify the processor # 2 of the completion of the transfer in response to the Read request indicating the transfer of the data length of the partial completion notification interval, or the processor # 2 detects the change of the monitoring address data.
  • the inter-node I / F 223 of the controller # 2 may detect occurrence of a speculative transfer start trigger.
  • SYMBOLS 1 ... Storage apparatus, 2 ... Storage node, 3 ... Internal network, 4 ... Memory, 21 ... Drive housing, 22 ... Controller, 100 ... Host computer, 211 ... Storage medium, 224 ... Processor, 221 ... Host I / F, 222: Drive I / F, 223: Inter-node I / F

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

ストレージ装置の応答性能を向上させることができる。 ストレージ装置は、第一メモリと、第一メモリ、第一デバイス、及び第二デバイスに接続される第一プロセッサと、を備える。第一プロセッサは、第一デバイスに格納されている第一データを、第二デバイスへ転送することを要求する第一転送要求を受領し、第一プロセッサは、第一転送要求に基づいて、第一データを第一デバイスから第一メモリへ転送する第一データ転送において、第一データの一部である第一部分データの転送の完了のタイミングを示す第一部分完了条件を決定し、第一プロセッサは、第一データ転送を開始させ、第一プロセッサは、第一部分完了条件に基づいて、第一データ転送の完了前に、第一データを第一メモリから第二デバイスへ転送する第二データ転送を開始させる。

Description

ストレージ装置およびストレージ装置の制御方法
 本発明は、ストレージ装置に関する。
 複数の磁気ディスク装置や半導体メモリデバイスなどの記憶メディアを備えたディスクアレイと、ディスクアレイへの読み書きを制御するストレージコントローラとを有する、いわゆるストレージ装置が知られている。このコントローラは、ホストコンピュータと接続するためのホストインターフェースや、記憶メディアと接続するためのドライブインターフェースを有する。
 また、コントローラ内にキャッシュメモリを持つことで読み書き性能を向上させたストレージ装置や、複数のコントローラを冗長接続することで可用性を向上させたストレージ装置が知られている。このようなストレージ装置において、あるコントローラに接続されたホストコンピュータから受領したデータを、別のコントローラ上のキャッシュメモリに複製し、記憶メディアへの格納前にホストに書き込み完了を通知する制御方法が知られている。これによって、ストレージ装置の高い可用性と高い書き込み性能を両立している。また、あるコントローラと接続されたホストコンピュータが、別のコントローラに接続された記憶メディアからデータを読み出す際に、記憶メディアが接続されたコントローラ上のキャッシュメモリにデータを一時的に格納し、コントローラ間接続を介してホストコンピュータが接続されたコントローラ上のキャッシュメモリにデータを転送し、その後ホストコンピュータにデータ転送する制御方法が知られている。
 一般に、各インターフェースを介したキャッシュメモリへの転送と、あるキャッシュメモリから別のキャッシュメモリへの転送は、ホストコンピュータからの要求データ長(転送長)毎に、逐次転送される。たとえば特許文献1では、ホストコンピュータが256KBのデータの書き込みを要求する場合、256KBのデータの全てがキャッシュメモリに格納された後に、ホストインターフェースが受領完了を通知し、通知を受けてから別のコントローラへ256KB転送を開始する方法が開示されている。この制御方法では、要求データ長が大きくなると、ホスト転送時間とコントローラ間転送時間の合算値に比例してストレージ装置の処理遅延が増加してしまう。
 また、特許文献2では、ホストインターフェースと、ホストインターフェースがデータを読み書きするメモリ1と、メモリ1とは異なるメモリ2と、メモリ1からメモリ2へのデータ転送を制御するLSIとを含むストレージの制御部において、LSIがメモリ間の転送制御情報を予め保持し、なおかつLSIがホストインターフェースからメモリ1への書き込み量を監視することで、ホストコンピュータからの要求データ長のデータがメモリ1に書き込まれる前に、メモリ2への転送を開始する制御方法が開示されている。
特開平9-146842号公報 米国特許第6985994号明細書
 特許文献2のような技術では、専用LSIによる、メモリ及びバスの監視や、複数の転送要求の状態を管理するための処理負荷が大きい。一般に、ホストコンピュータや記憶メディアとストレージコントローラ間の通信では、通信要求の並列度を増やすことでスループットを高めるが、この技術では並列度増加に伴い監視処理負荷が増大してしまう。そのため、この技術では、並列動作数などに制限を設ける等の対策が必要になる。また、このような転送制御を、他の制御と共有するストレージコントローラ上の汎用CPU(Central Processing Unit)やメモリで実施すると、他の制御の処理性能の低下に繋がる。
 上記課題を解決するために、本発明の一態様であるストレージ装置は、第一メモリと、前記第一メモリ、第一デバイス、及び第二デバイスに接続される第一プロセッサと、を備える。前記第一プロセッサは、前記第一デバイスに格納されている第一データを、前記第二デバイスへ転送することを要求する第一転送要求を受領し、前記第一プロセッサは、前記第一転送要求に基づいて、前記第一データを前記第一デバイスから前記第一メモリへ転送する第一データ転送において、前記第一データの一部である第一部分データの転送の完了のタイミングを示す第一部分完了条件を決定し、前記第一プロセッサは、前記第一データ転送を開始させ、前記第一プロセッサは、前記第一部分完了条件に基づいて、前記第一データ転送の完了前に、前記第一データを前記第一メモリから前記第二デバイスへ転送する第二データ転送を開始させる。
 ストレージ装置の応答性能を向上させることができる。
本発明の実施例のコンピュータシステムの構成を示す。 メモリ4に格納されるデータの領域区分を示す一例である。 ストレージ装置1におけるWrite要求受領時のデータ転送フローを示す。 比較例のWriteシーケンスを示す。 実施例1のWriteシーケンスを示す。 実施例1のプロセッサ#1のWrite処理を示す。 実施例1のWrite要求に対する第一応答ケースを示す。 実施例1のWrite要求に対する第二応答ケースを示す。 部分完了通知間隔決定処理を示す。 間隔設定テーブル1001及び部分完了通知間隔設定用情報1002を示す。 ストレージ装置1におけるRead要求受領時のデータ転送フローを示す。 比較例のReadシーケンスを示す。 実施例1のReadシーケンスを示す。 実施例1のプロセッサ#2のRead処理を示す。 実施例1のプロセッサ#1のRead処理を示す。 実施例2のWriteシーケンスを示す。 実施例2のReadシーケンスを示す。 実施例3のWriteシーケンスを示す。 実施例3のプロセッサ#1のWrite処理を示す。 実施例3のReadシーケンスを示す。 実施例4のWriteシーケンスを示す。 実施例4のプロセッサ#1のWrite処理を示す。 実施例4の投機転送パラメータとデータ転送状態管理テーブルの一例を示す。 実施例4のWrite処理時のコントローラ#1のノード間I/F223の投機転送処理を示す。 実施例4のReadシーケンスを示す。
 以下、図面を参照して本発明の実施形態を説明する。
 以下の説明では、「×××テーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「×××テーブル」を「×××情報」と呼ぶことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
 また、以下の説明では、要素の識別情報として、IDが使用されるが、それに代えて又は加えて他種の識別情報が使用されてもよい。
 また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号又は参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用又は参照符号に代えてその要素に割り振られたIDを使用することがある。
 また、以下の説明では、I/O(Input/Output)要求は、ライト要求又はリード要求であり、アクセス要求と呼ばれてもよい。
 また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理又はシステムとしてもよい。また、プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ(例えばCPU)と記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
 また、以下の説明では、管理システムは、一以上の計算機を含んでいてもよい。具体的には、例えば、管理計算機が情報を表示する場合(具体的には、例えば、管理計算機が自分の表示デバイスに情報を表示する、或いは、管理計算機が表示用情報を遠隔の表示用計算機に送信する場合)、管理計算機が管理システムである。また、例えば、複数の計算機で管理計算機と同等の機能が実現されている場合は、当該複数の計算機(表示を表示用計算機が行う場合は表示用計算機を含んでよい)が、管理システムである。管理計算機(例えば管理システム)は、表示システムを含むI/Oシステムに接続されたインタフェースデバイスと、記憶資源(例えばメモリ)と、インタフェースデバイス及び記憶資源に接続されたプロセッサとを有してよい。表示システムは、管理計算機が有する表示デバイスでもよいし、管理計算機に接続された表示用計算機でもよい。I/Oシステムは、管理計算機が有するI/Oデバイス(例えばキーボード及びポインティングデバイス、タッチパネル)でもよいし、管理計算機に接続された表示用計算機又は別の計算機でもよい。管理計算機が「表示用情報を表示する」ことは、表示システムに表示用情報を表示することであり、これは、管理計算機が有する表示デバイスに表示用情報を表示することであってもよいし、管理計算機が表示用計算機に表示用情報を送信することであってもよい(後者の場合は表示用計算機によって表示用情報が表示される)。また、管理計算機が情報を入出力するとは、管理計算機が有するI/Oデバイスとの間で情報の入出力を行うことであってもよいし、管理計算機に接続された遠隔の計算機(例えば表示用計算機)との間で情報の入出力を行うことであってもよい。情報の出力は、情報の表示であってもよい。
 以下、添付図面を参照して本発明の実施形態を説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
 実施例1は、ストレージ装置においてI/Oの応答性能向上のために、ホストインターフェースやドライブインターフェースがメモリへのデータ転送の部分完了を通知し、その通知に基づいて異なるメモリへの転送を開始する制御方法の一実施形態である。実施例1では、インターフェースに記憶されるデータ転送状態に関する管理情報を用いることで、プロセッサやメモリへの追加の負荷を抑えつつ、応答性能向上を実現する。以下、図面を用いて本実施例の詳細を説明する。
<装置の説明>
 図1は、本発明の実施例のコンピュータシステムの構成を示す。
 コンピュータシステムは、主にデータ演算を行うホストコンピュータ100と、データを格納するストレージ装置1とを含む。ストレージ装置1は、複数台のストレージノード2を含む。複数台のストレージノード2は、ストレージ装置1の内部ネットワーク3を介して接続されている。各ストレージノード2は、データを格納するドライブ筐体21と、ホストコンピュータ100や他のストレージノード2と通信をしながらドライブ筐体21を制御するコントローラ22とを含む。尚、ホストコンピュータ100、ストレージノード2、ドライブ筐体21、コントローラ22のそれぞれの数は、1台であっても複数台あってもよい。例えばストレージ装置1は一つのストレージノード2を含み、ストレージノード2は、1台のコントローラ22と複数台のドライブ筐体21とを含んでいても良い。
 ドライブ筐体21は、ハードディスクドライブ(HDD)や、フラッシュメモリ等の不揮発メモリを搭載したソリッドステートドライブ(SSD)などの複数の記憶メディア211を有する。
 コントローラ22は、ホストコンピュータ100との通信を行うホストインターフェース(以下、ホストI/F)221、ドライブ筐体21と通信を行うドライブインターフェース(以下、ドライブI/F)222、他のストレージノード2と通信を行うノード間インターフェース(以下、ノード間I/F)223、それらの制御やデータ転送を中継するプロセッサ224、ホストコンピュータ100によって生成されるデータやストレージ装置内部で制御用に生成される各種データを蓄えるメモリ4を有する。これらの各部は、コントローラ22内に複数台あっても良い。
 ホストI/F221は、Fibre Channel(FC)、Fibre Channel Over Ethernet(登録商標) (FCoE)、Internet SCSI(iSCSI)等、ホストコンピュータ100とコントローラ22の間の通信に用いられるプロトコルデータを、コントローラ22内部で用いられるPCI-Express等のプロトコルに変換する機能を有する。同様にドライブI/F222は、FCやSerial Attached SCSI(SAS)等、記憶メディア211とコントローラ22の間の通信に用いられるプロトコルデータを、コントローラ22内部で用いられるPCI-Express等のプロトコルに変換する機能を有する。また同様に、ノード間I/F223は、イーサネット(登録商標)やInfiniBand等、ストレージノード2間の通信に用いられるプロトコルデータを、コントローラ22内部で用いられるPCI-Express等のプロトコルに変換する機能を有する。これらのI/Fは、LSI(Large Scale Integration)であってもよいし、メモリ4に格納されるソフトウェアであってプロセッサ224により実行されてもよい。
 プロセッサ224は、各I/F及びメモリ4の間のデータ転送を行うためのデータバスや、ソフトウェアを動作させるための演算回路等を有する。この例ではデータバス機能と演算機能を有するプロセッサ224を例示しているが、プロセッサ224は、LSIであってもよい。
 メモリ4は、DRAM等の高速アクセス可能な記憶素子であり、プロセッサ224とDDR3やDDR4などのメモリインターフェースで接続される。コントローラ22内のメモリ4は、複数のメモリモジュールを含んでいても良い。メモリ4上には、各I/Fやプロセッサ224が利用するデータを保持する。
 図2は、メモリ4に格納されるデータの領域区分を示す一例である。
 メモリ4は、ホストコンピュータ100から受信したユーザデータを格納するユーザデータ領域41と、ストレージ装置内の制御データを格納する制御データ領域42とを有する。ユーザデータ領域41は、ホストI/F221やドライブI/F222とコントローラの間でデータをやりとりするために用いる一時的な領域を転送バッファ領域44と、頻繁に読み書きされるデータを高速にアクセスできるようにするために用いられるユーザデータキャッシュ領域43とを備える。ユーザデータキャッシュ領域43をキャッシュ領域43と呼ぶことがある。なお、転送バッファ領域44の代わりにキャッシュ領域43が用いられてもよいし、キャッシュ領域43の代わりに転送バッファ領域44が用いられてもよい。
 本実施例では、プロセッサ224とホストI/F221とドライブI/F222とノード間I/F223がメモリ4を共用する。ホストI/F221は、ホストI/F221とホストコンピュータ100の間で転送されるデータを格納する、転送バッファ領域44やキャッシュ領域43を個別に持つ必要がない。ホストI/F221は、ホストコンピュータ100からのデータをメモリ4内の転送バッファ領域44へ転送し、メモリ4内の転送バッファ領域44に格納されたデータをホストコンピュータ100へ転送する。同様に、ドライブI/F222は、ドライブI/F222と記憶メディア211の間で転送されるデータを格納する、転送バッファ領域44やキャッシュ領域43を個別に持つ必要がない。ドライブI/F222は、記憶メディア211からのデータをメモリ4内の転送バッファ領域44へ転送し、メモリ4内の転送バッファ領域44に格納されたデータを記憶メディア211へ転送する。同様に、ノード間I/F223は、二つのコントローラ22の間で転送されるデータを格納する、転送バッファ領域44やキャッシュ領域43を個別に持つ必要がない。ノード間I/F223は、ローカルのコントローラ22のメモリ4に格納されたデータを、他のコントローラ22のメモリ4へ転送する。これにより、ホストI/F221、ドライブI/F222、ノード間I/F223のそれぞれに含まれるメモリの容量を抑えることができる。
<Write処理>
 図3は、ストレージ装置1におけるWrite要求受領時のデータ転送フローを示す。
 ここでは、ストレージ装置1における3台のコントローラ22を夫々、コントローラ#1、#2、#3と呼ぶ。コントローラ#1、#2、#3内のプロセッサ224をそれぞれ、プロセッサ#1、#2、#3と呼ぶ。
 ホストコンピュータ100が接続されたコントローラ#1のホストI/F221がホストコンピュータ100から受領したデータは、コントローラ#1のメモリ4の転送バッファ領域44に格納される(4007)。その後、コントローラ#1は、受領したデータを、異なるコントローラ#2、#3上の2か所のキャッシュ領域43a、43bに転送する(4009)。その後、コントローラ#1は、記憶メディア211に対してデータを書き込む前に、ホストコンピュータ100に対してデータの受領完了を通知することで、記憶メディア211の書き込み速度とは独立した応答性能を実現できる。その際、単一のコントローラ22に発生した障害によって、ホストコンピュータ100から受領したデータを失わないように、2か所のコントローラ上のメモリにデータをコピーしている(4009)。この例では、転送バッファ領域44とキャッシュ領域43a、43bが、互いに異なるコントローラ#1、#2、#3上に確保される例を示しているが、キャッシュ領域43a、43bの内の一方は、転送バッファ領域44と同一コントローラ#1上のメモリ4に確保されていても良い。また、この例では、全てのコントローラ#1、#2、#3が内部ネットワーク3を跨り、異なるストレージノード2内に存在するケースを示しているが、これらは同一のストレージノード2内に存在しても良い。
 プロセッサ224が、プロセッサコアとDMA(Direct Memory Access)コントローラを有していてもよい。プロセッサコアがDMAコントローラに指示することにより、DMAコントローラは、メモリ4と他のコントローラ内のメモリ4の間のDMA転送を実行してもよい。また、ホストI/F221がDMAコントローラを有していてもよい。この場合、このDMAコントローラは、プロセッサ224からの指示に応じて、ホストコンピュータ100と転送バッファ領域44の間のDMA転送を実行する。また、ノード間I/F223がDMAコントローラを有していてもよい。この場合、このDMAコントローラは、プロセッサ224からの指示に応じて、コントローラ#1のメモリ4と他のコントローラ22のメモリ4の間のDMA転送を実行する。これにより、データ転送時のプロセッサ224(プロセッサコア)の負荷を抑えることができる。
<比較例のWriteシーケンス>
 ここで、比較例のストレージ装置が部分完了の通知を用いない場合の動作を説明する。
 図4は、比較例のWriteシーケンスを示す。
 この図は、比較例のストレージ装置が、ホストコンピュータ100からWrite要求(Writeコマンド)を受領してから、ホストコンピュータ100にWriteデータ受領完了を通知するまでの通信シーケンスの一例を示す。この図では、キャッシュ領域43を格納する2つのコントローラ#2、#3は等価であるため、一方を代表して示している。図中では、コントローラ#1をCL1と呼び、コントローラ#2をCL2と呼ぶ。また、図中では、ノード間I/F223を省略している。この図では、プロセッサ#1の動作に、コントローラ#1のメモリ4の動作も示されている。また、プロセッサ#2の動作に、コントローラ#2のメモリ4の動作も示されている。この例では、256KBの書き込み要求を受領した場合を例示する。
 まず、コントローラ#1において、ホストI/F221は、ホストコンピュータ100から受領したWrite要求(4001)をメモリ4上に書き込み、プロセッサ#1に新規要求の受領を通知する(4002)。この通知を受けたプロセッサ#1は、要求を解析し、データを受け取る転送バッファ領域44と、転送先のキャッシュ領域43を含むコントローラ#2とを決定する。なお、転送バッファ領域44は予めプロセッサ#1により確保され管理されていてもよいし、キャッシュ領域43は予めプロセッサ#2により確保され管理されていてもよい。その後、プロセッサ#1は、他のコントローラ#2にキャッシュ領域43の確保を依頼する(4003)。この依頼に基づいて、プロセッサ#2は、メモリ4上のキャッシュ領域43を確保し、その完了を通知する(4004)。この例では、Write要求受領後に、コントローラ#1がコントローラ#2にキャッシュ領域確保を依頼する例を示しているが、コントローラ#1がコントローラ#2のメモリ4内の利用可能な領域を予め把握しておいても良いし、XFER_RDY(データ転送要求)送信(4005)後に依頼しても良い。プロセッサ#1は、Writeデータの受領準備が完了したら、ホストI/F221を介して、ホストコンピュータ100にXFER_RDYを通知する(4005、4006)。
 このとき、プロセッサ#1は、Write要求(4002)で指定された要求データ長(ここでは256KB)以下であれば、任意のデータ長の受領準備完了を複数回に分割して通知することができる。ただし、そのようなXFER_RDY(4005)の分割は、ホストコンピュータ100とホストI/F221間の通信量増加を意味する為、データ転送効率低下に繋がる。またホストコンピュータ100内のデータ転送に関しても、一般に、同一のXFER_RDYに対応する連続データを転送することは、異なるXFER_RDYへの処理を切り替えながら非連続なデータを転送することよりも、転送効率が高い。そのため、ストレージ装置1は、ホストコンピュータ100から受領したWrite要求に対して、要求データ長を示すXFER_RDYを一回で通知することが一般的である。この例でも、プロセッサ#1は、要求データ長と同量(256KB)を示すXFER_RDYを発行する(4005)。
 XFER_RDYを受領したホストコンピュータ100は、予め準備していたWriteデータをストレージ装置1に転送を開始する(4007)。これを受領したホストI/F221は、ホストコンピュータ100からのデータのプロトコル変換及びアドレス変換を行い、転送バッファ領域44にデータを格納する(4008)。ホストI/F221は、XFER_RDY(4005)によって指定された全データ(ここでは256KB)の転送バッファ領域44への書き込みを完了したら、プロセッサ#1にデータ受領完了を通知する(4009)。データ受領完了通知を受けたプロセッサ#1は、コントローラ#2上のキャッシュ領域43にデータ転送を開始する(4010)。プロセッサ#1は、データ転送(4010)の完了を、プロセッサ224間のメッセージによって通知する(4011)。また、プロセッサ#1がノード間I/F223にコントローラ間転送(4010)を指示する場合、ホストI/F221によるデータ受領完了通知(4009)と同様に、ノード間I/F223がコントローラ間転送の完了をプロセッサ#2に通知しても良い。全データの受領を完了したプロセッサ#2は、受領完了をプロセッサ#1に通知する(4012)。本通信もノード間I/F223の仕組みによって通知しても良い。コントローラ#1は、コントローラ#2、#3の2か所のキャッシュ領域43への2重書きが完了したら、ホストI/F221を介してホストコンピュータ100に、Writeデータ受領完了ステータス(Good)を返信する(4013、4014)。ホストコンピュータ100は、本ステータス受信を持って、Write 要求の完了と判断する。すなわち、Write要求発行(4001)から、完了ステータス受信(4014)までの経過時間がホストコンピュータ100から見たストレージ装置1のWrite応答時間となる。
 比較例の通信シーケンスでは、ホストI/F221から転送バッファ領域44へのデータ転送(4008)と、コントローラ#1、#2間のデータ転送(4010)が256KB単位で逐次実行される。そのため、ホストコンピュータ100からの要求データ長が増加すると、二つの転送(4008、4010)に係る転送時間の合計値に比例して、Write応答時間が増加する。
<実施例1のWriteシーケンス>
 図5は、実施例1のWriteシーケンスを示す。
 ホストコンピュータ100がデータ転送を開始する(5007)までの処理は、比較例のWriteシーケンスと同一である。本実施例では、ホストI/F221がホストコンピュータ100から全データを受領完了する前に、一部のデータ受領完了(部分完了)を通知する(5009)仕組みを有し、その通知に基づいてプロセッサ#1がコントローラ間転送を開始する(5010)。この例において、ホストI/F221はXFER_RDYで指定した要求データ長(256KB)とは無関係に、64KBのデータを転送バッファ領域44へ書き込む毎に、それをプロセッサ#1に通知する(5009)例を示している。ホストI/F221は、転送したデータ長を管理しているため、プロセッサ#1から指定されたデータ長の転送が完了したことを検出でき、プロセッサ#1に通知することができる。この通知を受けたプロセッサ#1は、転送準備の出来ている64KB分だけ、コントローラ#2に転送し(5010)、データ転送の完了を、プロセッサ224間のメッセージによって通知する(5011)。コントローラ#1の転送バッファ領域44からコントローラ#2のキャッシュ領域43へのデータ転送は、プロセッサ#1内のDMAコントローラによって実行されてもよいし、プロセッサ#1内のプロセッサコアによって実行されてもよいし、プロセッサ#1からの指示に応じてコントローラ#1のノード間I/F223によって実行されてもよい。
 プロセッサ#2は、メモリ確保(5003)で指定された要求データ長(256KB)の受領が完了すると、プロセッサ224間のメッセージによって、完了通知をプロセッサ#1へ通知する(5012)。プロセッサ#1がWriteデータの一部のデータ受領完了通知(部分完了通知)に応じてコントローラ間転送を開始することにより、ホストI/F221から転送バッファ領域44へのデータ転送(5008)と、コントローラ#1、#2間のデータ転送(5010)が並列処理(パイプライン転送)されるようになるため、ストレージ装置1がWriteデータ受領完了ステータス(5013、5014)を早期に送信できるようになる。これにより、Write応答時間を短縮できる。ただし、その短縮量は、部分完了が通知される間隔や、ホストI/F221と転送バッファ領域44の間の通信帯域や、コントローラ間の通信帯域等によって変化する。短縮量を最大化するためには、これらの条件に応じて、部分完了通知(5009)に対する制御を切り替える必要がある。
 なお、Write要求の対象アドレスが、コントローラ#1に接続された記憶メディア211に関連付けられていてもよい。この場合、プロセッサ#1は、5010の代わりに、コントローラ#1のドライブI/F222へWrite要求を発行することで、ドライブI/F222に転送バッファ領域44から記憶メディア211へのデータ転送を実行させてもよい。
 図6は、実施例1のプロセッサ#1のWrite処理を示す。
 この図は、実施例1における、Write時の、プロセッサ#1の制御フローの一例を示す。ここでは、ホストI/F221が接続されたコントローラ#1上のプロセッサ#1によって、ホストI/F221の部分完了通知(5009)間隔を示す部分データ長が決定される例を示しているが、ホストI/F221が自律的に部分完了通知間隔を決定しても良いし、プロセッサ#2が部分完了通知間隔を決定しても良い。まず、Write要求を受領(S601)したプロセッサ#1は、コントローラ#2にキャッシュ領域確保を依頼する(S602)。これに対する応答を待っている間に、ホストI/F221が部分完了通知機能を利用可能か確認する(S603)。もし、ホストI/F221が部分完了通知機能を使えないならば、プロセッサ#1は、比較例と同様に、他コントローラからのキャッシュ領域確保完了通知を待ち(S605b)、ホストコンピュータ100にはWrite要求で指定された要求データ長と同量を示すXFER_RDYを、ホストI/F221を介して送信する(S606b)。もし、ホストI/F221が部分完了通知機能を有しているならば、プロセッサ#1は、その部分完了通知間隔を算出する部分完了通知間隔決定処理を実行する(S604)。この部分完了通知間隔決定処理については後述する。その後、プロセッサ#1は、他コントローラ(他CL)からのキャッシュ領域確保完了通知を待ち(S605a)、ホストコンピュータ100にはWrite要求で指定された要求データ長と同量を示すXFER_RDYを、ホストI/F221を介して送信する(S606a)。このときのXFER_RDYは、部分完了通知間隔を示す部分完了付きXFER_RDYである。
 S606a又はS606bのXFER_RDY送信後、プロセッサ#1は、ホストI/F221によるデータ受領完了通知を待ち(S607)、データ受領完了通知に応じて、受領したデータ分を他コントローラに転送(CL間転送)開始する(S608)。Write要求に示された要求データ長に対して、まだ転送を開始していないデータが残っている場合(S609)、プロセッサ#1は、再びホストI/F221からのデータ受領完了通知を待つ(S607)。プロセッサ#1は、Writeデータの全データ転送が完了するまで(S607~S609)を繰り返し、全データ転送を完了したら、他コントローラからの受領完了通知を待ち(S610)、ホストコンピュータ100にWrite要求に対する完了ステータス(Good Status)を返答する(S611)。
<通知間隔と効果>
 以下、本実施例の効果の尺度の例について説明する。
 図7は、実施例1のWrite要求に対する第一応答ケースを示す。
 第一応答ケースを用いて、部分完了通知の効果と部分完了通知頻度の関係について説明する。この図は、ホストI/F221と転送バッファ領域44の間の転送帯域H GB/s(701)が、コントローラ間の転送帯域X GB/s(702)より小さい場合を示す。また、ホストI/F221と転送バッファ領域44の間の転送帯域H GB/s(701)が、ホストコンピュータ100とホストI/F221間の転送帯域より大きい場合、転送帯域Hの実効帯域は、ホストコンピュータ100とホストI/F221間の転送帯域となる。
 本実施例は、ホストI/F221と転送バッファ領域44の間のデータ転送(5008)と、コントローラ間のデータ転送(5010)の逐次転送を解消することにより、応答時間を短縮する。つまり、ホストI/F221による転送開始からコントローラ間転送完了までの総処理時間TALL(705)を最小化するような、部分完了通知間隔N KBを選ぶことで、本実施例の効果を最大化できる。基本的には、二つの逐次転送(5008、5010)が、同時処理される時間が増える程、応答時間短縮の効果を得られる。また、部分完了通知間隔Nを小さくする程、同時処理可能な転送粒度が細かくなる。ただし、部分完了通知頻度を高めると、ホストI/F221と転送バッファ領域44の間の通知通信(5009)が増加し、更にプロセッサ#1が部分完了通知を検出(5009)してコントローラ間転送(5010)を開始するためのプロセッサ処理負荷も増大してしまう。従って、これらの部分完了通知に関する処理オーバーヘッドTOH(703)より、逐次転送の解消による効果が大きいときにのみ、部分完了通知頻度を高める効果が得られる。この例では、TALL(705)は、ホストI/F221と転送バッファ領域44の間の転送が全て完了して、最後の完了通知(5009)を転送完了するまでの時間T(704)と、コントローラ間で最後のN KB(もしくはN KBより小さい)を転送するために要する転送時間TNX(705)との和に等しい。すなわち、Write要求で要求される要求データ長(総転送サイズ)をW KBとしたとき、TALL(N)は以下の等式で近似できる。
 TALL(N) = T + TNX = TOH * W/N + W/H + N/X
 TALL(N) = 0 を解くと、TALLを最小化するNは、(X*W*TOH)^1/2である。これにより、本実施例の効果を最大化する部分完了通知間隔Nを求めることができる。
 図8は、実施例1のWrite要求に対する第二応答ケースを示す。
 第二応答ケースを用いて、部分完了通知の効果と部分完了通知頻度の関係について説明する。第二応答ケースは、第一応答ケースと異なり、ホストI/F221と転送バッファ領域44の間の転送帯域H GB/s(801)が、コントローラ間の転送帯域X GB/s(802)より大きい場合を示す。ここで、プロセッサ#1がコントローラ間転送(5010)を開始するときに、複数の部分完了通知(5009)を受信済みである場合、転送バッファ領域44上の全データをコントローラ間転送(5010)可能であるとする。そのための追加処理オーバーヘッドは、十分に小さいものとする。このとき、ホストI/F221から転送バッファ領域44にN KBを転送するために必要な時間TNH(803)と部分完了通知に伴う処理オーバーヘッドTOH(804)の和が、コントローラ間でN KB転送するために必要な時間TNX(805)より大きいときのTALL(N)は、第一応答ケースと同様、次式で表され、これを最小化するNは前述の通りである。
 TALL(N) = T + TNX=TOH*W/N + W/H + N/X
 TNH(803)とTOH(804)の和が、TNX(805)より小さいとき、コントローラ間の転送(5010)開始以後は、コントローラ間の転送遅延が総処理遅延TALL(807)を決定するため、TALL(N)は次式で表される。
 TALL(N) = TNH + TOH + TWX = N/H + TOH + W/X
 TALL(N)(807)は、Nに対して線形増加するため、TNH(803)とTOH(804)の和がTNX(805)と等しいときに最小値を示す。従って、TNH + TOH = TNXは、N/H + TOH = N/Xであるから、N = TOH*(H-X)/(HX)で本実施例の効果を最大化できる。
 以上に示した部分完了通知間隔Nは、本実施例の効果を高める目安量の一例であるが、実効的な各部の帯域H(701、801)、X(702、801)や、部分完了に関する処理オーバーヘッドTOHは動的に変化するため、静的な最適解とはならないことがある。各変数の動的な変化を考慮した設定や、異なる近似モデルによって算出した値を部分完了通知間隔Nとして使っても良い。
 図9は、部分完了通知間隔決定処理を示す。
 第一応答ケース及び第一応答ケースを用いて説明したように、応答性能向上に繋がる部分完了通知間隔を、Write要求の要求データ長と、ホストI/F221と転送バッファ領域44の転送帯域と、コントローラ間の転送帯域と、部分完了を通知することに依る処理オーバーヘッドによって概算することができる。
 ここでは、プロセッサ#1が、動的に通知間隔を決めるモードと静的に決めるモードの両方を用意し、それらを切り替えるケースを例示している(S6041)。ここで、静的モードに用いられる間隔設定テーブル1001と、動的モードに用いられる部分完了通知間隔設定用情報1002とについて説明する。
 図10は、間隔設定テーブル1001及び部分完了通知間隔設定用情報1002を示す。
 間隔設定テーブル1001は、上記概算値などから予め作成され、メモリ4の制御データ領域42に格納される。間隔設定テーブル1001は、要求データ長(Writeリクエストサイズ)毎に、部分完了通知間隔を示す。
 部分完了通知間隔設定用情報1002は、プロセッサ#1により測定された、CPU稼働率、コマンド処理数、内部バス実行帯域、通知間隔設定履歴、応答時間履歴を示す。CPU稼働率は、プロセッサ#1の稼働率を示す。コマンド処理数は、現在処理中のI/O要求数を示す。内部バス実行帯域は、コントローラ#1内のバスの実行帯域を示す。通知間隔設定履歴は、一定の時間の過去に設定された部分完了通知間隔を示す。応答時間履歴は、通知間隔設定履歴内の各部分完了通知間隔が設定されたときの応答時間を示す。応答時間は、ホストコンピュータ100からのI/O要求からホストコンピュータ100への応答までの時間である。
 予め静的モードに設定されている場合、プロセッサ#1は、間隔設定テーブル1001を参照することで、要求データ長に対応する部分完了通知間隔を決定する(S6047)。
 予め動的モードに設定されている場合、プロセッサ#1は、部分完了通知機能が有効であるか否かを判定する。この例において、プロセッサ#1は、処理するプロセッサ#1の負荷状況(S6042)や内部バスの混雑状況(S6043)を採取し、採取された情報に基づいて、部分完了通知機能を使うか否かを判断する。プロセッサ#1の負荷状況は例えば、部分完了通知間隔設定用情報1002におけるCPU稼働率、コマンド処理数である。内部バスの混雑状況は例えば、部分完了通知間隔設定用情報1002における内部バス実行帯域である。
 プロセッサ負荷が高いということは、多数のI/O要求や制御処理を並行して処理していることを意味する為、このような条件下では特定I/O要求の応答性能よりも、時間当たりのI/O要求処理数(スループット)が重要となることがある。そのような場合に、プロセッサ#1が高頻度な部分通知を処理すると、プロセッサ#1の総処理負荷の増加を招き、スループット低下に繋がってしまう。更に、I/O毎のプロセッサ処理時間を均等に分配するならば、処理するI/O数が増える程、特定I/Oの処理に使える時間が少なくなり、高頻度な部分完了通知を行ってもプロセッサ#1がそれを検出するまでの時間が長くなる(実質的なTOHが増大する)ため、I/Oの応答時間も却って長くなってしまう。内部バスの混雑度に関しても同様で、バスが混雑しているときに転送を分割すると、バスの総処理負荷増大によるスループット低下や、応答時間の増大に繋がってしまう。また、I/O長が短く、プロセッサ#1による処理遅延が応答時間の支配的要因であるときも同様で、部分完了通知によるプロセッサ処理負荷増大は応答時間増大に繋がってしまう。本実施例のプロセッサ#1は、これらを考慮し、応答時間の短縮効果があると判定された場合(S6044:Y)だけ、部分完了通知機能を用い(S6045)、スループットを重視するとき(S6044:N)、部分完了通知機能を用いない(S6046)。部分完了通知機能を用いると判定された場合、プロセッサ#1は、通知間隔設定履歴と応答時間履歴に基づいて、効果があった部分完了通知間隔を決定する(S6045)。これにより、適切な部分完了通知間隔を決定することができる。また、この例において、プロセッサ#1は、複数の判断基準を用いているが、これらの判断基準の内の任意の判断基準の組み合わせを用いても良い。
<Write処理の効果>
 以上のWrite処理によれば、ホストI/F221が要求データ長の一部のデータの転送完了をプロセッサ#1に通知することで、ホストコンピュータ100から転送バッファ領域44に対する全データの転送完了前に、プロセッサ#1は、別のコントローラ上にあるキャッシュ領域43にデータ転送を開始することが可能になる。プロセッサ#1は、その部分転送完了通知頻度を、バスの帯域比率やデータ転送長やプロセッサ負荷などに応じて設定することで、ホストコンピュータ100のWrite要求に対するストレージ装置1の応答性能向上を実現できる。
<Read処理>
 図11は、ストレージ装置1におけるRead要求受領時のデータ転送フローを示す。
 ここでは、ホストコンピュータ100が接続されたコントローラ#1がホストコンピュータ100からRead要求(Readコマンド)を受領し、Read要求の対象データが、コントローラ#1とは異なるコントローラ#2に接続された記憶メディア211上に格納されているケースを想定している。コントローラ#2に接続された記憶メディア211は、要求されたデータをコントローラ#2上のキャッシュ領域43に転送する(1101)。その後、プロセッサ#2は、キャッシュ領域43からコントローラ#1上の転送バッファ領域44にデータを転送する(1102)。最後にプロセッサ#1は、転送バッファ領域44からホストI/F221を介してホストコンピュータ100にデータを転送する(1103)。もし、Read要求の対象データが、ホストコンピュータ100が接続されたコントローラ#1に接続された記憶メディア211上に格納されている場合は、コントローラを跨いだ転送(1102)が不要となる。
<比較例のReadシーケンス>
 図12は、比較例のReadシーケンスを示す。
 この図は、比較例のストレージ装置が、ホストコンピュータ100からRead要求(Readコマンド)を受領してから、ホストコンピュータ100に要求されたReadデータを転送するまでの通信シーケンスの一例を示す。この図では、ホストI/F221やノード間I/F223は省略している。
 まず、ホストコンピュータ100からホストI/F221を介してRead要求を受領したプロセッサ#1は、要求内容を解析し、要求されたデータの格納先を特定し、転送バッファ領域44を確保する(1201)。プロセッサ#1は、Read要求受領前に、要求されたデータの格納先及び転送バッファ領域44を予め決めていてもよい。次に、プロセッサ#1は、Read要求を、対象データを管理するコントローラ#2に転送する(1202)。Read要求を受領したプロセッサ#2は、ドライブI/F222経由で、記憶メディア(ドライブ)211にRead要求を発行し、読み出しを開始する(1204)。このとき、対象データが、コントローラ#2のメモリ4のキャッシュ領域43に存在した場合は、記憶メディア211からの読み出しは不要となる。
 ドライブI/F222からRead要求を受領した記憶メディア211は、Read要求に指定されたデータの転送を開始する(1205)。ここでは、Read要求で指定された要求データ長が256KBである場合を例示している。ドライブI/F222は、記憶メディア211からのデータのプロトコル変換及びアドレス変換を行い、プロセッサ#2から指定されたキャッシュ領域43にデータを転送する(1206)。ドライブI/F222は、全てのデータ読み出しを完了したら、読み出し完了を通知する(1207)。プロセッサ#2は、この完了通知を受領したら、コントローラ#1の転送バッファ領域44に転送する(1208)。プロセッサ#2は、全てのデータ転送を完了したら、ノード間I/F223やプロセッサ224間の通信によって、転送完了をコントローラ#1へ通知する(1209)。通知を受けたプロセッサ#1は、ホストI/F221を介してホストコンピュータ100にデータを転送する(1210)。このときホストI/F221は、転送バッファ領域44から読み出したデータのプロトコル変換及びアドレス変換を行い、ホストコンピュータ100へ転送する。
 以上の、Read要求発行(1201)から、Readデータ受領完了(1210)までの時間が、ホストコンピュータ100から見た、ストレージ装置1のRead応答時間となる。以上のReadシーケンスでは、記憶メディア211からコントローラ#2のキャッシュ領域43への転送(1205、1206)と、コントローラ間の転送(1208)と、コントローラ#1からホストコンピュータ100への転送(1210)とが全て逐次処理される。そのため、Read要求の要求データ長が大きくなると、三つの転送(1205、1208、1210)に係わる転送時間の合計値に比例してRead応答時間が増加する。
<実施例1のReadシーケンス>
 図13は、実施例1のReadシーケンスを示す。
 記憶メディア211がデータ転送を開始する(1301から1305)までの処理は、比較例のReadシーケンスと同一である。本実施例では、ドライブI/F222が記憶メディア211から全データの読み出しを完了する前に、一部のデータ受領完了を通知する(1307)仕組みを有し、その通知に基づいてプロセッサ#2がコントローラ間転送を開始する(1308)。この例では、ドライブI/F222は、Read要求で指定された要求データ長(256KB)とは無関係に、記憶メディア211から64KBのデータを読み出してキャッシュ領域43に格納する毎に、部分的な転送完了を通知する(1307)。ドライブI/F222は、転送したデータ長を管理しているため、プロセッサ#2から指定されたデータ長の転送が完了したことを検出でき、プロセッサ#2に通知することができる。この通知を受けたプロセッサ#2は、転送準備の出来ている64KB分だけ、コントローラ#1に転送し(1308)、64KBの転送完了をコントローラ#1に通知する(1309)。コントローラ#2のキャッシュ領域43からコントローラ#1の転送バッファ領域44へのデータ転送は、プロセッサ#2内のDMAコントローラによって実行されてもよいし、プロセッサ#2内のプロセッサコアによって実行されてもよいし、プロセッサ#2からの指示に応じてコントローラ#2のノード間I/F223によって実行されてもよい。
 コントローラ#1は、転送完了通知に応じて、64KBのデータをホストコンピュータ100へ転送開始する(1310)。これらによって、記憶メディア211からキャッシュ領域43へのデータ転送(1305、1306)と、コントローラ間のデータ転送(1308)と、転送バッファ領域44とホストコンピュータ100の間のデータ転送(1310)とが、並列処理(パイプライン転送)されるようになるため、Read応答時間を短縮できる。
 なお、この例では、三つの転送の全てをパイプライン転送する例を示しているが、記憶メディア211から転送バッファ領域44への転送(1305、1306、1308)のみのパイプライン化や、キャッシュ領域43からホストコンピュータ100への転送(1308、1310)のみのパイプライン化を行っても良い。また、この例ではホストコンピュータ100と記憶メディア211とがそれぞれ異なるコントローラ#1、#2に接続されている場合を例示しているが、同一のコントローラ22に接続されている場合でも、同様の仕組みによって、記憶メディア211からキャッシュ領域43へのデータ転送(1305、1306)と、キャッシュ領域43からホストコンピュータ100への転送(1310)とをパイプライン化することも可能である。ただし、Writeの場合と同様に、応答性能の向上効果は、部分完了が通知される間隔や、Read要求の要求データ長、各部の通信帯域によって変化する。応答時間の短縮量を最大化するためには、これらの条件に応じて、部分完了通知(1307、1309)に対する制御を切り替える必要がある。
 なお、Read要求の対象アドレスが、コントローラ#1に接続された記憶メディア211に関連付けられていてもよい。この場合、プロセッサ#1は、1302、1303の代わりに、コントローラ#1のドライブI/F222へRead要求を発行することで、ドライブI/F222に記憶メディア211から転送バッファ領域44へのデータ転送を実行させてもよい。
 また、プロセッサ#2の代わりにプロセッサ#1が、プロセッサ#2のRead処理と同様の処理を実行することで、プロセッサ#2またはコントローラ#2のノード間I/F223に部分完了通知間隔を示すRead要求を発行してもよい。
 図14は、実施例1のプロセッサ#2のRead処理を示す。
 この図は、プロセッサ#1がRead要求を受領した場合の、プロセッサ#2の制御フローの一例を示す。基本的なフローは、前述したプロセッサ#1のWrite処理と同じである。プロセッサ#2は、コントローラ#1からRead要求を受領したら(S1401)、要求されたデータが既にコントローラ#2のキャッシュ領域43に格納されているかどうか判断する(S1402)。格納されていれば、プロセッサ#2は、キャッシュ領域43からコントローラ#1の転送バッファ領域44へのコントローラ間転送を開始する(S1407)。格納されていなければ、プロセッサ#2は、ドライブI/F222に記憶メディア211からデータの読み出しを指示する。その際に、プロセッサ#2は、ドライブI/F222の部分完了通知機能を利用可能か否かを判定し(S1403)、利用不可ならば通常のRead要求をドライブI/F222へ発行する(S1405b)。利用可能ならば、プロセッサ#2は、部分完了通知間隔処理を実行し(S1404)、Read要求をドライブI/F222へ発行する(S1405a)。このときのRead要求は、部分完了通知間隔を示す部分完了付Read要求である。その後、プロセッサ#2は、ドライブI/F222によるデータ転送完了通知受領後(S1406)、コントローラ間転送を開始する(S1407)。プロセッサ#2は、Read要求に対する全データ転送が完了するまで、ステップ(S1406とS1407)を繰り返す。全データ転送完了判断(S1408)により、未転送のデータが存在した際(S1408、N)に、プロセッサ#2は、転送先のコントローラ#1に部分的な転送完了を通知しても良い(前述したReadシーケンスの1309)。
 図15は、実施例1のプロセッサ#1のRead処理を示す。
 この図は、実施例1における、Read要求受領時の、プロセッサ#1の制御フローの一例を示す。Read要求を受領したプロセッサ#1は、Read要求に基づいて、要求されたデータを管理しているコントローラ#2(宛先)を特定し、コントローラ#2にRead要求を転送する(S1502)。その後、プロセッサ#1は、コントローラ#2からの転送完了通知を待ち(S1503)、通知を受け取ったら受領したデータを、転送バッファ領域44からホストI/F221を通じてホストコンピュータ100に転送する(S1504)。プロセッサ#1は、一部のデータ転送が完了する度に、ホストI/F221に完了を通知してもよい。プロセッサ#1は、全データの転送が完了するまでこれを繰り返す(S1503~S1505)。
 前述したプロセッサ#2のRead処理における部分完了通知間隔決定処理(S1404)は、プロセッサ#1によるWrite処理における部分完了通知間隔決定処理と同様である。第一応答ケース及び第二応答ケースを用いて説明したWrite時の応答性能向上効果と部分完了通知間隔の関係性についても、Read時はデータ転送方向が逆になるだけで、同様の関係性を示す。ただしRead処理の場合、記憶メディア211からコントローラ#2のキャッシュ領域43への転送(1306)と、コントローラ#2のキャッシュ領域43からコントローラ#1の転送バッファ領域44への転送(1308)と、コントローラ#1の転送バッファ領域44からホストコンピュータ100への転送(1310)との全てをパイプライン転送する場合と、一部のみパイプライン転送する場合を、応答性能向上効果に応じて使い分けることができる。また、完了通知間隔を算出するために用いる情報や、その保持方法も、Write処理と同様、前述した間隔設定テーブル1001及び部分完了通知間隔設定用情報1002を用いて実施可能である。
<Read処理の効果>
 以上により、ストレージ装置1において、ドライブI/F222が、全データ転送の内一部の転送完了を通知することで、記憶メディア211からキャッシュ領域43に対する全データ転送完了前に、別のコントローラ上にある転送バッファ領域44にデータ転送を開始することが可能になる。同様に、ノード間I/F223やプロセッサ224が、全データ転送の一部の転送完了を転送先コントローラに通知することで、キャッシュ領域43から別のコントローラ上にある転送バッファ領域44への全データ転送が完了する前に、転送バッファ領域44から、ホストコンピュータ100へのデータ転送を開始することが可能になる。また、プロセッサ224が部分転送完了通知頻度を、バスの帯域比率やデータ転送長やプロセッサ負荷などに応じて設定することで、ホストコンピュータ100のRead要求に対するストレージ装置1の応答性能向上を実現できる。
<実施例1の効果>
 本実施例によれば、ストレージ装置1において、コントローラ22と、ホストコンピュータ100又は記憶メディア211の間の第一データ転送が完了する前に、ホストI/F221やドライブI/F222が部分的な転送完了を通知することで、二つのコントローラ22のメモリ4間の第二データ転送を開始可能になり、応答性能が向上する。さらに、第二データ転送が完了する前に、ノード間I/F223やプロセッサ224が部分的な転送完了を通知することで、第二データ転送の転送先のメモリ4からホストコンピュータ100への第三データ転送を開始することができる。これら、第一、第二、第三データ転送をパイプライン化することで、応答性能が向上する。本実施例では、ホストI/F221やドライブI/F222が、ホストコンピュータ100や記憶メディア211との通信用に用いている、データ転送状態に関する管理情報を用いることで、プロセッサ224やメモリ4への追加負荷を少なく、応答性能向上を実現している。更に、プロセッサ224が、転送完了通知頻度を、バスの帯域比率やデータ転送長やプロセッサ負荷などに応じて制御することで、スループットを低下させることなく、応答性能向上効果を高めることができる。
 実施例2のストレージ装置1の基本的な装置構成や処理フローは実施例1と同様であるが、部分的な転送完了を検知する方法において実施例1とは異なる。実施例2では、プロセッサ224がデータ転送要求を分割することで、部分的なデータ受領完了を検知する。
 図16は、実施例2のWriteシーケンスを示す。
 ここでは、実施例1のWriteシーケンスとの相違点について説明する。特に言及されない処理は、実施例1のWriteシーケンス内の処理と同様である。実施例1と比較すると、本実施例では、XFER_RDYの転送(1605)から、ホストI/F221による転送完了通知(1609)までの仕組みが異なる。実施例2では、Write要求の要求データ長(ここでは256KB)を示すXFER_RDYの代わりに、より細かい転送データ長を示す複数のXFER_RDYを、ホストコンピュータ100へ発行する。この例は、64KBのXFER_RDYを4回転送する。このXFER_RDYを受け取ったホストコンピュータ100は、それぞれのXFER_RDYに対応するデータを転送する(1607)。一つのXFER_RDYに対応するデータ(64KB)の受領を完了したホストI/F221は、XFER_RDYに対する転送の完了通知をプロセッサ#1へ送信する(1609)。結果として、プロセッサ#1は、実施例1と類似の部分転送完了通知を受領することができ、全データ受領前に、コントローラ間のデータ転送を開始することができる(1610)。
 実施例2のプロセッサ#1のWrite処理の大部分は実施例1と同様である。但し、実施例2では、実施例1の部分完了通知間隔が、各XFER_RDYにより要求するデータ長であるXFER_RDY分割データ長に置き換えられる。
 実施例2のWriteシーケンスにおける、XFER_RDY分割と応答性能向上効果の関係は、実施例1と一部異なる。実施例1の第一応答ケース及び第二応答ケースにおける、分割処理オーバーヘッド(703、804)に加え、実施例2ではXFER_RDYを分割することにより、XFER_RDY転送のための転送効率が低下し、1605、1606に追加の処理負荷が発生する。また、ホストコンピュータ100により受領されるXFER_RDYを分割すると、ホストコンピュータ100が複数のホストI/F221に対する処理を同時に行っているとき、転送対象の切り替えが高頻度になる。このような切り替えは、基本的にはホストコンピュータ100のデータ転送効率低下に繋がる。実施例2ではこれらの、処理負荷増も、XFER_RDY分割データ長を決める際に用いることができる。
 また、実施例2では等間隔でない完了通知(1609)を容易に実現できる。実施例2のWriteシーケンスや、実施例1のWriteシーケンスでは、64KB毎の等間隔な完了通知を前提として例示したが、これらは等間隔である必要はない。非等間隔な通知が可能なとき、第一応答ケースにおいて、転送開始時にホストI/F221が比較的大きな転送データ長の転送を行い、徐々に転送データ長を小さくして通知間隔を狭めることで、TALL(705)を更に短くできる。第二応答ケースにおいて、逆に転送開始時にホストI/F221が高頻度な通知を行い、徐々に通知間隔を長くすることで、通知を処理するプロセッサ#1の負荷を軽減できる。ただし、実施例1では、プロセッサ#1が最初に通知間隔をホストI/F221に設定するため、通知頻度を細かに変更することが比較的難しい。実施例2では、プロセッサ#1が任意のXFER_RDYへの設定値を変更できるため、非等間隔な通知が容易となる。また、プロセッサ#1がホストコンピュータ100から転送バッファ領域44への最初のデータ転送時の負荷に基づいて、次のデータ転送のデータ長を決定し、そのデータ長を示すXFER_RDYを発行してもよい。
 図17は、実施例2のReadシーケンスを示す。
 ここでは、実施例1のReadシーケンスとの相違点について説明する。特に言及されない処理は、実施例1のReadシーケンス内の処理と同様である。実施例1と比較すると、本実施例では、Read要求の発行(1703)から、ドライブI/F222による転送完了通知(1706)までの仕組みが異なる。実施例2では、Read要求の要求データ長(ここでは256KB)を示すRead要求の代わりに、より細かい転送データ長を示すRead要求に分割して、記憶メディア211へ発行する(ここでは64KBの要求を4回に分けて転送する例を示す)。この要求を受け取った記憶メディア211は、それぞれの要求に対応するデータを転送する(1705)。要求に対応する全データ(64KB)を受領したドライブI/F222は、要求に対するReadの完了通知を行う(1707)。結果として、プロセッサ#2は、実施例1と類似の部分転送完了通知を受領することができ、全データ受領前に、コントローラ間のデータ転送を開始することができる(1708)。コントローラ間のデータ転送(1708)と転送バッファ領域44からホストコンピュータ100への転送(1710)のみをパイプライン転送する場合は、プロセッサ#2が転送を分割し部分転送完了を通知すればよい。
 実施例2におけるプロセッサ#2のRead処理とプロセッサ#1のRead処理の大部分も実施例1と同様である。
 また、実施例2のReadシーケンスにおける、Read要求分割と応答性能向上効果の関係は、実施例1の部分完了通知と応答性能向上効果の関係と一部異なるが、実施例2のWriteシーケンスの効果の説明と同様である。実施例1の第一応答ケース及び第二応答ケースにおける、分割による処理オーバーヘッド(703、804)に加え、実施例2ではRead要求を分割することによって、1703、1704に追加の処理負荷が発生する。また、記憶メディア211が複数のドライブI/F222からの要求の処理を同時に行っているとき、読み出し対象の切り替えが高頻度になる。このような切り替えは、記憶メディア211内の非連続な領域に対するアクセス頻度の増加に繋がるため、特に記憶メディア211がハードディスクドライブである場合の転送効率低下に繋がる。実施例2のコントローラ#1は、これらの処理負荷の増加を用いて、XFER_RDY分割データ長を決めてもよい。また、実施例2のストレージ装置1は、Read処理においても非等間隔な通知を用いることができる。その利点はWrite処理と同様である。
 本実施例によれば、ストレージ装置1は、要求データ長を複数の転送データ長に分割し、それらの複数の転送データ長をそれぞれ示す複数のXFER_RDYを、転送元であるホストコンピュータ100や記憶メディア211に発行することで、転送元からコントローラ22への第一データ転送が全て完了する前に通知を受けることができ、二つのコントローラ22のメモリ4間の第二データ転送が開始可能になるため、応答性能が向上する。さらに、第二データ転送が完了する前に、第二データ転送の転送元のプロセッサ224が部分的な転送完了を通知することで、転送先のプロセッサ224は、メモリ4からホストコンピュータ100への第三データ転送を開始することができる。これら、第一、第二、第三データ転送をパイプライン化することで、応答性能が向上する。更に、プロセッサ224が、バスの帯域比率やデータ転送長やプロセッサ負荷などに応じて制御することで、応答性能向上効果を高めることができる。また、転送完了を通知するデータ長を非均等に分割することで、更なる応答性能向上効果を実現できる。
 実施例3のストレージ装置1の基本的な装置構成や処理フローは実施例1及び実施例2と同一であるが、部分的な転送完了を検知する方法が実施例1及び実施例2とは異なる。実施例3では、プロセッサ224がメモリ4内の特定の監視アドレスを監視することで、部分的なデータ受領完了を検知する。
 図18は、実施例3のWriteシーケンスを示す。
 ここでは、実施例1のWriteシーケンスとの相違点について説明する。特に言及されない処理は、実施例1のWriteシーケンス内の処理と同様である。この図では、プロセッサ#1によるメモリ4の監視とコントローラ間転送の関係をわかり易くするために、プロセッサ#1とメモリ4を区別して図示しているが、本実施例のストレージ装置1の物理構成は実施例1と同様である。
 本実施例では、プロセッサ#1が比較例と同様のXFER_RDYを送出(1805)後、プロセッサ#1はメモリ4の転送バッファ領域44のうち転送先のアドレスの定期的な監視を行う(1809)。ホストコンピュータ100がホストI/F221経由で転送バッファ領域44にデータ転送を行い(1808)、転送バッファ領域44内の監視アドレスのデータの更新が検出されると、コントローラ間転送を開始する(1810)。本実施例では、XFER_RDYで要求された一連のデータ(ここでは256KB)は、先頭のデータブロックから順番に転送されることを想定している。そのため、監視アドレスのデータの更新の検出は、データ転送開始アドレスから監視アドレスまでのデータ転送が完了していることを保証する。この例では、プロセッサ#1は、64KB間隔の監視アドレスを監視しており、最初の64KB点更新を検出したら、コントローラ間通信を開始し(1810)、次の128KB目の監視を行う、という場合の例を示している。また、プロセッサ#1は、更新前に監視アドレスに格納されているデータを記憶し、記憶されたデータと監視アドレスに格納されているデータとを比較することによって、監視アドレスのデータの更新を検出してもよいし、メモリ4のバス上のデータ流量や、監視アドレスへのアクセスを検出することにより、監視アドレスのデータの更新を検出してもよい。プロセッサ#1は、メモリ4に関するメモリカウンタやバスカウンタ等のハードウェアからデータ流量を取得してもよい。プロセッサ#1は、監視アドレスのデータを比較する方法で検出する場合、たまたま同一データが書き込まれたときに、更新を検出できない可能性があるが、その場合でも、ホストI/F221による転送完了通知(1811)を契機にコントローラ間転送(1810)を開始すれば良い。また、プロセッサ#1の負荷によって監視の時間間隔が長くなっても、転送完了通知(1811)を契機にコントローラ間転送(1810)を開始できる。そのため、本実施例のWriteシーケンスは、比較例のWriteシーケンスと比べて、処理時間が大幅に長くなることはない。
 図19は、実施例3のプロセッサ#1のWrite処理を示す。
 この図は、プロセッサ#1がWrite要求を受領した場合の、プロセッサ#1の制御フローの一例を示す。プロセッサ#1は、Write要求を受領し(S1901)、他のコントローラ#2にキャッシュ領域43の確保を依頼(S1902)している間に、監視を行う監視アドレス間隔と、それに基づく複数の監視アドレスを決定する監視アドレス決定処理を実行する(S1903)。ここでプロセッサ#1は、実施例1の部分完了通知間隔決定処理と同様で、プロセッサ#1の負荷や内部バスや要求データ長などによって監視アドレス間隔を決定することができる。プロセッサ#1は、他のコントローラ#2から完了通知を受信したら(S1904)、ホストI/F221を介してホストコンピュータ100にXFER_RDYを送信し(S1905)、定期的な監視アドレスの監視を開始する(S1906)。プロセッサ#1は、データ比較やバス監視などで、監視アドレスのデータの更新を検出したら(S1907:Y)、受信完了したデータ分だけコントローラ間転送を行う(S1908)。プロセッサ#1は、要求データ長の全データの転送を完了する(S1909:Y)まで、監視と転送を続ける。但し、プロセッサ#1は、なんらかの理由で検出漏れが発生していた場合や、監視による検出より先にホストI/F221からの完了通知を受領したら、残りの全データを転送する(S1906~S1909)。プロセッサ#1は、他のコントローラ#2から要求データ長の全データの転送の完了通知を受領すると(S1910)、ホストコンピュータ100へWrite要求に対する完了ステータス(Good Status)を返答する(S1911)。
 実施例3における、メモリ監視頻度と応答性能向上効果の関係性は、実施例1と一部異なる。実施例1の第一応答ケース及び第二応答ケースにおける、分割処理オーバーヘッド(703、804)に加え、実施例3ではメモリ監視によるプロセッサ・メモリ負荷が発生する。プロセッサ#1が高頻度に転送バッファ領域44を監視するほど、プロセッサ#1やメモリ4のバスの負荷は増加するが、転送バッファ領域44へのデータ転送から検出までの遅延時間が減少する。そこで、プロセッサ#1は、メモリ4内の転送先の領域のうち、監視される領域のみを、転送バッファ領域44よりもアクセス負荷の低いキャッシュ領域43などに配置することで、メモリ監視の処理負荷を削減することができる。即ち、プロセッサ#1は、転送バッファ領域44内に転送先の領域を割り当て、転送バッファ領域44のアクセス負荷より低いアクセス負荷を有する領域を監視アドレスに割り当てる。また、監視するアドレス間隔を非均等にすることで、実施例2で述べたような非等間隔な部分転送完了通知と同様の効果を実現できる。
 図20は、実施例3のReadシーケンスを示す。
 ここでは、実施例1のReadシーケンスとの相違点について説明する。特に言及されない処理は、実施例1のReadシーケンス内の処理と同様である。ここでは、プロセッサ#2によるメモリ4の監視とコントローラ間転送との関係をわかり易くするために、プロセッサ#2とメモリ4を区別して図示しているが、本実施例のストレージ装置1の物理構成は実施例1と同様である。
 プロセッサ#2は、ドライブI/F222による転送先であるキャッシュ領域43の内、監視アドレスを監視する(2007)。Read要求に対するデータがドライブI/F222からキャッシュ領域43内の各監視アドレスまで書き込まれる(2006)と、プロセッサ#2はこれを検出し、検出された監視アドレスまでのデータのコントローラ間転送(2008)を開始し、各コントローラ間転送の転送完了を、転送先のコントローラ#1に通知する(2009)。この通知を受けたプロセッサ#1は、ホストI/F221を介してホストコンピュータ100にデータを転送する(2010)。以上によって、三つのデータ転送をパイプライン化し、応答性能が向上する。なお、メモリの監視方法はWriteに関する説明で述べた通り、データの比較によって行っても良いし、バス上のデータ転送量計測等によって行っても良い。
 実施例3のプロセッサ#2のRead処理は、実施例1のコントローラ#2のRead処理と同様であるが、部分完了通知間隔決定処理(S1404)の代わりに、実施例3のコントローラ#1のWrite処理における監視アドレス決定処理(S1903)を実行する。実施例3のプロセッサ#1のRead処理は、実施例1のコントローラ#1のRead処理と同様である。
 本実施例によれば、ストレージ装置1において、プロセッサ224が所定のメモリアドレス更新を監視することによって、ホストコンピュータ100や記憶メディア211からメモリ4への第一データ転送が全て完了する前に、二つのコントローラ22のメモリ4間の第二データ転送が開始可能になるため、応答性能が向上する。さらに、第二データ転送が完了する前に、プロセッサ224が部分的な転送完了を通知することで、第二データ転送の転送先のメモリ4からホストコンピュータ100への第三データ転送を開始することができる。これら、第一、第二、第三データ転送をパイプライン化することで、応答性能が向上する。更に、プロセッサ224がメモリ監視頻度と監視アドレスを、バスの帯域比率やデータ転送長やプロセッサ負荷などに応じて制御することで、スループット低下や並列処理I/O数を制限することなく、応答性能を高めることができる。また、プロセッサ224が監視頻度や監視アドレスをデータ転送に対して非均等に設定したり、監視アドレスの領域のみをアクセス負荷の低いメモリ領域に格納したりすることで、更なる応答性能向上効果を実現できる。
 実施例4は、基本的な装置構成や処理フローは実施例1と同一であるが、プロセッサ224は、第一データ転送完了が確定する前に投機的に第二データ転送を開始する。ただし、第一データ転送中に、データ転送に対して一意に定まる保証コードを付与し、第二データ転送中にデータ中の保証コードと期待値を比較する。第二の転送中に不一致を検出した場合、第一の転送未完了を検出し、再度転送を試みる。
 図21は、実施例4のWriteシーケンスを示す。
 ここでは、実施例1のWriteシーケンスとの相違点について説明する。特に言及されない処理は、実施例1のWriteシーケンス内の処理と同様である。この図では、ノード間I/F223による投機的な転送開始をわかり易くするために、プロセッサ#1とノード間I/F223を区別して図示しているが、本実施例のストレージ装置1の物理構成は実施例1と同様である。ただし、ホストI/F221とノード間I/F223は、プロセッサ224から設定されたパラメータに従って、保証コードを付与、チェックする機能を有する。また前述の通り、ホストI/F221やノード間I/F223はプロセッサ224上で動作する制御ソフトウェアの一部であってもよい。その場合、実施例4は、実施例3における監視対象を全ての保証コードの領域に設定した例、と考えることもできる。
 この図では、Write要求を受領したプロセッサ#1が、ホストI/F221に、XFER_RDYを通知すると共に、受領するデータに保証コードを付与することを依頼する(2015)。保証コードは、意図に反したデータ変更を検出するためのコードであり、例えばCRC(Cyclic Redundancy Check)などの誤り検出符号であってもよいし、ユーザーにより定義される任意のDIF(Data Integrity Field)であっても良いし、これらのような複数種類の保証コードを含んでも良い。プロセッサ#1は、コントローラ#1からコントローラ#2への投機転送のための投機転送パラメータを、ノード間I/F223に通知する(DMA設定、2107)。投機転送パラメータは、XFER_RDYに応じて受領されるデータが格納される転送バッファ領域44上の転送元のアドレスと、コントローラ#2のキャッシュ領域43上の転送先のアドレスと、保証コードを決定する情報とを含む。XFER_RDYを受領したホストコンピュータ100は、データをホストI/F221に転送する(2108)。ホストI/F221は受領するデータに保証コードを付与して転送バッファ領域44に格納する。
 一方で、プロセッサ#1は、XFER_RDYをホストI/F221へ通知した後に、コントローラ間転送と保証コードに関する投機転送パラメータをノード間I/F223に通知する(2107)。この例におけるコントローラ間転送は、コントローラ#1の転送バッファ領域44からコントローラ#2のキャッシュ領域43へのDMA転送である。投機転送パラメータを受領したノード間I/F223は、プロセッサ#1がホストI/F221からの完了通知(2113)を受信する前に、投機転送パラメータに従って、コントローラ#1の転送バッファ領域44からコントローラ#2のキャッシュ領域43へのコントローラ間転送を開始する(2110)。その際、ノード間I/F223は、保証コードの期待値と、転送バッファ領域44から読み出したデータに付与された保証コードとを比較する。これが一致すれば、ノード間I/F223は、投機転送成功と判断し、コントローラ#2のメモリ4内の制御データ領域42を通じて転送成功をプロセッサ#2に通知する(2111)。これが一致しなければ、ノード間I/F223は、データが未だ転送バッファ領域44上に転送されていないと判断し、転送を中断する(2112)。この図では、転送を中断する例を示しているが、中断しなくてもよい。すなわちノード間I/F223は、コントローラ間転送と、保証コードのチェック及びチェック結果の通知とを、非同期に実施することで、ノード間I/F223の処理負荷を削減することも可能である。その後、ノード間I/F223は、転送パラメータに従って、中断された転送を再試行する(2113)。ノード間I/F223は、制御データ領域42に、コントローラ間転送の状態であるデータ転送状態を書き込む。
 ホストI/F221が要求データ長の全データを転送バッファ領域44に転送完了したことをプロセッサ#1に通知すると(2114)、プロセッサ#1は、制御データ領域42内のデータ転送状態を参照する。データ転送状態に基づいて未転送のデータがあれば、プロセッサ#1は、未転送のデータのコントローラ間転送を実施する。転送先のコントローラ#2は、データ転送状態に基づいて全データを受け取ったら受領完了を通知し(2115)、それを受け取ったコントローラ#1は、ホストI/F221を介して(2116)、ホストコンピュータ100にWrite完了を通知する(2117)。
 図22は、実施例4のプロセッサ#1のWrite処理を示す。
 この図は、プロセッサ#1がWrite要求を受領した場合の、プロセッサ#1の制御フローの一例を示す。プロセッサ#1は、Write要求を受領すると(S2201)、コントローラ#2にキャッシュ領域43の確保を依頼すると共に、受領するWriteデータに対する保証コードを決定する(S2202)。プロセッサ#1は、投機転送パラメータを決定する投機転送決定処理を実行する(S2203)。プロセッサ#1は、コントローラ#2から受領準備完了通知を受領すると(S2204)、ホストI/F221に対し、XFER_RDYを通知すると共に保証コード付与を設定し(S2205)、ノード間I/F223に対し、投機転送パラメータを通知することで投機転送を設定する(S2206)。その後、プロセッサ#1は、ホストI/F221から全データ受領の完了通知を受けるまで待機する(S2207)。プロセッサ#1は、その完了通知を受けた後に、データ転送状態を参照することで(S2208)、投機転送の正常性を確認する(S2209)。この転送正常確認は、ノード間I/F223による保証コードの一致確認だけであってもよいし、転送先であるコントローラ#2からの受領完了通知の受領を正常転送完了としてもよい。要求データ長の全データが正常転送済みであれば(S2211:Y)、プロセッサ#1は、コントローラ#2からの受領完了通知を待つ(S2212)。まだ未転送のデータがあれば(S2211:N)、プロセッサ#1は、未転送データのみの転送をノード間I/F223に要求する(S2210)。ここで未転送のデータは、異常により転送を中断したデータを含む。プロセッサ#1は、コントローラ#2から、要求データ長の全データの受領完了通知を受け取ったら、ホストI/F221を介してホストコンピュータ100に、Write要求に対する完了ステータスを通知する(S2213)。
 図23は、実施例4の投機転送パラメータとデータ転送状態管理テーブルの一例を示す。
 制御データ領域42には、ノード間I/F223がコントローラ間の投機転送を実行するための投機転送パラメータ2301と、プロセッサ#1がホストI/F221から受領完了通知を受け取った際にコントローラ間転送で未転送のデータを判別するために、投機転送のデータ転送状態を示すデータ転送状態管理テーブル2302が格納される。投機転送パラメータ2301は、I/O要求毎に、要求IDと、保証コード情報と、投機転送開始契機と、再送回数とを示す。要求IDは、I/O要求を示す識別子である。保証コード情報は、保証コード期待値もしくは算出アルゴリズムを示す。投機転送開始契機は、投機転送を開始するための契機を示し、ノード間I/F223が投機転送を設定されてから転送を開始するまでのWait時間などを示す。再送回数は、保証コード不一致を検出した際のデータ転送の再送回数(後述)を示す。データ転送状態管理テーブル2302は、I/O要求毎に、要求IDと、データ領域と、投機転送済情報と、他CL完了通知済情報とを含む。要求IDは、I/O要求を示す識別子である。データ領域は、データ転送を行うアドレス領域を示す。投機転送済情報は、投機転送済みのデータのアドレスを示す。他CL完了通知済情報は、転送先コントローラから転送完了通知受信済みのデータのアドレスを示す。
 図24は、実施例4のWrite処理時のコントローラ#1のノード間I/F223の投機転送処理を示す。
 この図は、コントローラ#1において、Write処理時にプロセッサ#1から投機転送パラメータを受領したノード間I/F223の動作を示す。ノード間I/F223は、投機転送パラメータを受領した後(S2401)、設定された投機転送開始契機の発生を検出すると、設定された転送元の転送バッファ領域44のアドレスからデータを読み出す(S2402)。例えば、ノード間I/F223は、タイマーにより、投機転送パラメータを受領してから、それに含まれるWait時間が経過したことを検出することで、投機転送開始契機の発生を検出する。このとき、ノード間I/F223は、読み出したデータに付与された保証コードと、設定された保証コード期待値とを比較する(S2403)。比較結果が一致すれば(S2404:Y)、ノード間I/F223は、指定された転送先のキャッシュ領域43のアドレスにデータを転送し、データ転送状態管理テーブル2302にデータが正常に転送済みであることを示す情報を記録する(S2405)。比較結果が一致しなければ(S2404:N)、ノード間I/F223は、設定に従って再転送を試みる(S2407)。この例においてノード間I/F223は、保証コード不一致回数が再送回数以下であれば、再転送を試みる。ノード間I/F223は、再転送を行うか否かについて、データ転送の進捗(要求データ長の内初めの方か、終わりの方かなど)に応じて判断しても良いし、保証コードのうち期待値と不一致したフィールド(CRC部か、ユーザー設定タグ部かなど)に応じて判断しても良いし、先行する転送に対して転送先から受領完了通知を受けているか否かに応じて判断しても良い。例えば、ノード間I/F223は、不一致箇所が要求データ長の最後の所定の範囲内であれば、すぐに再送し、不一致箇所が要求データ長の最初の所定の範囲内であれば、所定時間待ってから再送する、もしくは再送しない。ノード間I/F223は、要求データ長の全データの転送が完了するまで上記(S2402からS2405、S2407)を繰り返す(S2406)。
 保証コードの不一致の発生回数が再送回数を超えた場合、ノード間I/F223は転送を中断する。その後、プロセッサ#1は、未転送のデータの転送要求をノード間I/F223へ発行し(S2210)、投機転送処理の異常が発生すると、プロセッサ#1は、異常をホストコンピュータ100へ通知する。
 また、本実施例は他の実施例と組み合わせて実施されても良い。すなわち、ノード間I/F223の初回の転送開始契機(S2402)を、他の実施例にて示した手法を用いてノード間I/F223に通知し、その後、ノード間I/F223は保証コードをチェックしながら転送を行っても良い。こうすることで、転送開始契機を正確することができるのでノード間I/F223の処理負荷は削減しつつ、その後の部分完了通知やメモリ監視に対するプロセッサ224の処理負荷を削減することができる。特に実施例3においては、XFER_RDYで要求された一連のデータは、先頭のデータブロックから順番に転送されることを想定したため、本実施例と組み合わせることで、仮に転送順序が乱れた場合でも、途中までのデータ転送の完了を検出することが可能になる。
 図25は、実施例4のReadシーケンスを示す。
 ここでは、実施例1のReadシーケンスとの相違点について説明する。特に言及されない処理は、実施例1のReadシーケンス内の処理と同様である。ここでは、ノード間I/F223による投機手的な転送をわかり易くするために、プロセッサ224とノード間I/F223を区別して図示しているが、本実施例のストレージ装置1の物理構成は実施例1と同様である。
 プロセッサ#2は、プロセッサ#1からRead要求を受領すると(2501、2502)、ドライブI/F222にRead要求を発行(2503)し、コントローラ#2からコントローラ#1への投機転送のための投機転送パラメータを、ノード間I/F223に通知する(DMA設定、2505)。記憶メディア211は、ドライブI/F222からの要求に基づいて読み出すデータに保証コードが付与されている場合、その保証コードの期待値をノード間I/F223に通知する。記憶メディア211は、ドライブI/F222からの要求に基づいて読み出すデータに保証コードが付与されていない、もしくは、ドライブI/F222による保証コード付け替えを行う場合、ドライブI/F222にも保証コード期待値を通知する。ドライブI/F222からキャッシュ領域43へのデータ転送とは独立に、ノード間I/F223は投機転送パラメータに従って、コントローラ#2のキャッシュ領域43からコントローラ#1の転送バッファ領域44への投機転送を開始する(2508)。その際、ノード間I/F223は、キャッシュ領域43上のデータに付与された保証コードと、指定された保証コード期待値とを比較する。保証コードが一致したら正常転送完了を通知(2509)し、不一致を検出したら転送を中断する(2510)。ノード間I/F223は、投機転送を正常に完了すると、コントローラ間転送完了通知をプロセッサ#1へ発行する(2509)。この通知を受けたプロセッサ#1は、転送バッファ領域44に転送されたデータを、ホストI/F221を介してホストコンピュータ100へ転送する(2512)。このとき、コントローラ#1からホストコンピュータ100へのデータ転送も、ホストI/F221による保証コードチェックを行うことで、投機的に行っても良い。
 実施例4のプロセッサ#2のRead処理は、実施例1のプロセッサ#2のRead処理と、実施例4のプロセッサ#1のWrite処理との組み合わせにより実現される。また、Read処理時のコントローラ#2のノード間I/F223の投機転送処理は、Write処理時のコントローラ#1のノード間I/F223の投機転送処理と同様であるが、転送元がコントローラ#2のキャッシュ領域43になり、転送先がコントローラ#1の転送バッファ領域44になる。
 本実施例によれば、ストレージ装置1において、ホストコンピュータ100や記憶メディア211からメモリ4への第一データ転送中に保証コードを付与し、二つのコントローラ22のメモリ4間の第二データ転送を投機的に行いつつ、保証コードの一致をチェックすることで、第一データ転送が完了する前に第二データ転送を開始可能になるため、応答性能が向上する。さらに、Read処理時、転送先のメモリ4からホストコンピュータ100への第三データ転送中にも保証コードの一致を確認することで、第二データ転送が完了する前に、第三データ転送を開始することができる。これら、第一、第二、第三データ転送をパイプライン化することで、応答性能が向上する。更に、本実施例によれば、プロセッサ224が投機的な転送の実行間隔をバスの帯域比率やデータ転送長やプロセッサ負荷などに応じて制御することで、応答性能向上効果を高めることができる。また、ノード間I/F223が、保証コード不一致検出時の再送判断を、保証コード内で不一致が検出された部分や、要求データ長のデータのうち、不一致が検出された部分のオフセットに応じて制御することで、効果を高めることができる。
 本発明の一態様の表現について説明する。第一転送要求がWrite要求で、第一プロセッサがプロセッサ#1で、第一デバイスがホストコンピュータ100で、第二デバイスがコントローラ#2のメモリ4であってもよい。第一転送要求がWrite要求で、第一プロセッサがプロセッサ#1で、第一デバイスがホストコンピュータ100で、第二デバイスがコントローラ#1に接続された記憶メディア211であってもよい。第一転送要求がRead要求で、第一プロセッサがプロセッサ#2で、第一デバイスがコントローラ#2に接続された記憶メディア211で、第二デバイスがコントローラ#1内のメモリ4であってもよい。第一転送要求がRead要求で、第一プロセッサがプロセッサ#1で、第一デバイスがコントローラ#2内のメモリ4で、第二デバイスがホストコンピュータ100であってもよい。第一転送要求がRead要求で、第一プロセッサがプロセッサ#1で、第一デバイスがコントローラ#1に接続された記憶メディア211で、第二デバイスがホストコンピュータ100であってもよい。
 第一転送デバイス及び第二転送デバイスは、ホストI/F221、ドライブI/F222、ノード間I/F223、プロセッサ224、コントローラ22内のDMAコントローラ等であってもよい。
 第一部分完了条件は、コントローラ#1のホストI/F221が部分完了通知間隔のデータ長の転送の完了を、プロセッサ#1へ通知することであってもよいし、コントローラ#1のホストI/F221が部分完了通知間隔のデータ長の転送を示すXFER_RDYに対する転送の完了を、プロセッサ#1へ通知することであってもよいし、プロセッサ#1が監視アドレスのデータの変更を検出することであってもよいし、コントローラ#1のノード間I/F223が投機転送開始契機の発生を検出することであってもよい。第一データ転送指示及び第一部分データ転送指示が、XFER_RDYであってもよい。開始タイミングが、投機転送開始契機であってもよい。
 第二メモリがコントローラ#2のメモリ4で、第二プロセッサがプロセッサ#2で、記憶デバイスがコントローラ#2に接続されている記憶メディア211であってもよい。第二転送要求が、プロセッサ#1からプロセッサ#2へのRead要求であってもよい。
 第二部分完了条件は、コントローラ#2のドライブI/F222が部分完了通知間隔のデータ長の転送の完了を、プロセッサ#2へ通知することであってもよいし、コントローラ#2のドライブI/F222が部分完了通知間隔のデータ長の転送を示すRead要求に対する転送の完了を、プロセッサ#2へ通知することであってもよいし、プロセッサ#2が監視アドレスのデータの変更を検出することであってもよいし、コントローラ#2のノード間I/F223が投機転送開始契機の発生を検出することであってもよい。
 以上、本発明の実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲を上記構成に限定する趣旨ではない。本発明は、他の種々の形態でも実施する事が可能である。
 1…ストレージ装置、 2…ストレージノード、 3…内部ネットワーク、 4…メモリ、 21…ドライブ筐体、 22…コントローラ、 100…ホストコンピュータ、 211…記憶メディア、 224…プロセッサ、 221…ホストI/F、 222…ドライブI/F、 223…ノード間I/F

Claims (15)

  1.  第一メモリと、
     前記第一メモリ、第一デバイス、及び第二デバイスに接続される第一プロセッサと、
    を備え、
     前記第一プロセッサは、前記第一デバイスに格納されている第一データを、前記第二デバイスへ転送することを要求する第一転送要求を受領し、
     前記第一プロセッサは、前記第一転送要求に基づいて、前記第一データを前記第一デバイスから前記第一メモリへ転送する第一データ転送において、前記第一データの一部である第一部分データの転送の完了のタイミングを示す第一部分完了条件を決定し、
     前記第一プロセッサは、前記第一データ転送を開始させ、
     前記第一プロセッサは、前記第一部分完了条件に基づいて、前記第一データ転送の完了前に、前記第一データを前記第一メモリから前記第二デバイスへ転送する第二データ転送を開始させる、
    ストレージ装置。
  2.  前記第一転送要求は、前記第一データの長さである第一データ長を含み、
     前記第一プロセッサは、前記第一データ長に基づいて、前記第一部分データの長さである第一部分データ長を決定し、前記第一部分データ長に基づいて前記第一部分完了条件を決定する、
    請求項1に記載のストレージ装置。
  3.  前記第一デバイス、前記第一メモリ、及び前記第一プロセッサに接続される第一転送デバイスと、
     前記第二デバイス、前記第一メモリ、及び前記第一プロセッサに接続される第二転送デバイスと、
    を更に含み、
     前記第一転送デバイスは、前記第一プロセッサからの指示に基づいて、前記第一データ転送を実行し、
     前記第二転送デバイスは、前記第一部分完了条件の成立に応じて、前記第二データ転送を実行する、
    請求項2に記載のストレージ装置。
  4.  前記第一デバイスは、ホストコンピュータであり、
     前記第一転送要求は、前記ホストコンピュータに格納されている前記第一データを前記ストレージ装置へ書き込むことを要求するライト要求である、
    請求項3に記載のストレージ装置。
  5.  前記第二デバイスである第二メモリと、
     記憶デバイスと、
     前記第一メモリ、前記第一プロセッサ、前記第二メモリ、及び前記記憶デバイスに接続される第二プロセッサと、
    を更に備え、
     前記第一プロセッサは、前記ホストコンピュータから、前記ストレージ装置に格納されているデータを前記ホストコンピュータへ読み出すことを要求するリード要求を受領し、
     前記第一プロセッサは、前記リード要求に応じて、前記ストレージ装置に格納されている第二データを前記第一メモリへ転送することを要求する第二転送要求を、前記第二プロセッサへ発行し、
     前記第二プロセッサは、前記第二転送要求に基づいて、前記第二データを前記記憶デバイスから前記第二メモリへ転送する第三データ転送において、前記第二データの一部である第二部分データの転送の完了のタイミングを示す第二部分完了条件を決定し、
     前記第二プロセッサは、前記第二データ転送を開始させ、
     前記第二プロセッサは、前記第二部分完了条件に基づいて、前記第三データ転送の完了前に、前記第二データを前記第二メモリから前記第一メモリへ転送する第四データ転送を開始させる、
    請求項4に記載のストレージ装置。
  6.  前記第一プロセッサは、前記第二部分データが前記第一メモリへ転送されたことを認識し、前記第四データ転送の完了前に、前記第二部分データを前記第一メモリから前記ホストコンピュータへ転送する第五データ転送を開始させる、
    請求項5に記載のストレージ装置。
  7.  前記第一プロセッサは、前記第一部分データ長を前記第一転送デバイスへ通知し、
     前記第一転送デバイスは、前記第一部分データ長に基づいて、前記第一部分データを前記第一デバイスから前記第一メモリへ転送し、前記第一部分データの転送の完了を示す第一部分完了通知を前記第一プロセッサへ発行し、
     前記第一プロセッサは、前記第一部分完了通知に応じて、前記第一部分データを前記第一メモリから前記第二デバイスへ転送することを、前記第二転送デバイスに指示する、
    請求項3に記載のストレージ装置。
  8.  前記第一プロセッサは、前記第一データ長の転送を指示する第一データ転送指示であって前記第一部分データ長を含む前記第一データ転送指示を、前記第一転送デバイスへ発行し、
     前記第一転送デバイスは、前記第一データ転送指示に基づいて、前記第一データを前記第一デバイスから前記第一メモリへ転送し、前記第一データ転送により転送されたデータ長が前記第一部分データ長に達した場合、前記第一部分完了通知を前記第一プロセッサへ発行する、
    請求項7に記載のストレージ装置。
  9.  前記第一プロセッサは、前記第一部分データ長の転送を指示する第一部分データ転送指示と、前記第一データのうち前記第一部分データより後の第二部分データの転送を指示する第二部分データ転送指示とを、前記第一転送デバイスへ発行し、
     前記第一転送デバイスは、前記第一部分データ転送指示に基づいて、前記第一部分データを前記第一デバイスから前記第一メモリへ転送し、前記第一部分データの転送が完了したした場合、前記第一部分完了通知を前記第一プロセッサへ発行し、前記第二部分データ転送指示に基づいて、前記第二部分データを前記第一デバイスから前記第一メモリへ転送する、
    請求項7に記載のストレージ装置。
  10.  前記第一プロセッサは、前記第一メモリ内で前記第一部分データの転送先のアドレスである監視アドレスを決定し、
     前記第一プロセッサは、前記第一転送デバイスへ前記第一データ転送の指示を発行し、前記監視アドレスを監視し、
     前記第一プロセッサは、前記監視アドレスの監視に基づいて、前記第一デバイスから前記第一メモリへの前記第一部分データの転送の完了を検出した場合、前記第一部分データを前記第一メモリから前記第二デバイスへ転送することを、前記第二転送デバイスに指示する、
    請求項3に記載のストレージ装置。
  11.  前記第一プロセッサは、前記第一メモリから前記第一データ転送の転送先の領域を割り当て、前記転送先の領域のアクセス負荷よりが低いアクセス負荷を有する領域を前記監視アドレスに割り当てる、
    請求項10に記載のストレージ装置。
  12.  前記第一プロセッサは、前記第一部分データ長に基づいて、前記第一部分データを前記第一メモリから前記第二デバイスへ転送を開始する開始タイミングを決定し、
     前記第一プロセッサは、前記開始タイミングを前記第二転送デバイスへ通知し、
     前記第一転送デバイスは、前記第一部分データを前記第一デバイスから前記第一メモリへ転送すると共に、保証コードを前記第一メモリへ書き込み、
     前記第二転送デバイスは、前記開始タイミングに応じて、前記第一メモリから前記保証コードを読み出し、前記保証コードが正常である場合、前記第一部分データを前記第一メモリから前記第二デバイスへ転送する、
    請求項3に記載のストレージ装置。
  13.  前記第一プロセッサは、前記第一データ転送の転送帯域と、前記第二データ転送の転送帯域と、前記第一プロセッサの負荷と、前記第一データ転送において前記第一部分データの転送の完了を認識することによる負荷の増加量と、過去の第一部分データ長と、前記ホストコンピュータに対する過去の応答時間との少なくとも一つに基づいて、前記第一部分データ長を決定する、
    請求項2に記載のストレージ装置。
  14.  前記第一プロセッサは、前記第一データのうち前記第一部分データより後の第二部分データの長さである第二部分データ長を決定し、
     前記第二部分データ長は、前記第一部分データ長と異なる、
    請求項2に記載のストレージ装置。
  15.  ストレージ装置の制御方法であって、
     第一プロセッサを用いて、第一デバイスに格納されている第一データを、第二デバイスへ転送することを要求する第一転送要求を受領し、
     前記第一プロセッサを用いて、前記第一転送要求に基づいて、前記第一データを前記第一デバイスから第一メモリへ転送する第一データ転送において、前記第一データの一部である第一部分データの転送の完了のタイミングを示す第一部分完了条件を決定し、
     前記第一プロセッサを用いて、前記第一データ転送を開始させ、
     前記第一プロセッサを用いて、前記第一部分完了条件に基づいて、前記第一データ転送の完了前に、前記第一データを前記第一メモリから前記第二デバイスへ転送する第二データ転送を開始させる、
    制御方法。
PCT/JP2015/077693 2015-09-30 2015-09-30 ストレージ装置およびストレージ装置の制御方法 WO2017056219A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/077693 WO2017056219A1 (ja) 2015-09-30 2015-09-30 ストレージ装置およびストレージ装置の制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/077693 WO2017056219A1 (ja) 2015-09-30 2015-09-30 ストレージ装置およびストレージ装置の制御方法

Publications (1)

Publication Number Publication Date
WO2017056219A1 true WO2017056219A1 (ja) 2017-04-06

Family

ID=58422891

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/077693 WO2017056219A1 (ja) 2015-09-30 2015-09-30 ストレージ装置およびストレージ装置の制御方法

Country Status (1)

Country Link
WO (1) WO2017056219A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019174994A (ja) * 2018-03-27 2019-10-10 株式会社日立製作所 ストレージシステム及びその制御方法
JP2020077248A (ja) * 2018-11-08 2020-05-21 株式会社日立製作所 ストレージシステム、データ管理方法、及びデータ管理プログラム
JP2021039771A (ja) * 2020-11-06 2021-03-11 株式会社日立製作所 ストレージシステム及びその制御方法
JP2022010181A (ja) * 2018-11-08 2022-01-14 株式会社日立製作所 ストレージシステム、データ管理方法、及びデータ管理プログラム
US20220137882A1 (en) * 2016-12-01 2022-05-05 Micron Technology, Inc. Memory protocol

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006338306A (ja) * 2005-06-01 2006-12-14 Fuji Electric Holdings Co Ltd 非接触icチップを利用した大量データ転送システムおよび方法
JP2009289085A (ja) * 2008-05-29 2009-12-10 Media Logic Corp 情報処理システム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006338306A (ja) * 2005-06-01 2006-12-14 Fuji Electric Holdings Co Ltd 非接触icチップを利用した大量データ転送システムおよび方法
JP2009289085A (ja) * 2008-05-29 2009-12-10 Media Logic Corp 情報処理システム

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220137882A1 (en) * 2016-12-01 2022-05-05 Micron Technology, Inc. Memory protocol
JP2019174994A (ja) * 2018-03-27 2019-10-10 株式会社日立製作所 ストレージシステム及びその制御方法
US11294578B2 (en) 2018-03-27 2022-04-05 Hitachi, Ltd. Storage system and control method thereof
JP2020077248A (ja) * 2018-11-08 2020-05-21 株式会社日立製作所 ストレージシステム、データ管理方法、及びデータ管理プログラム
US10936518B2 (en) 2018-11-08 2021-03-02 Hitachi, Ltd. Storage system, data management method, and data management program
JP2022010181A (ja) * 2018-11-08 2022-01-14 株式会社日立製作所 ストレージシステム、データ管理方法、及びデータ管理プログラム
US11334508B2 (en) 2018-11-08 2022-05-17 Hitachi, Ltd. Storage system, data management method, and data management program
JP7201775B2 (ja) 2018-11-08 2023-01-10 株式会社日立製作所 ストレージシステム、データ管理方法、及びデータ管理プログラム
JP2021039771A (ja) * 2020-11-06 2021-03-11 株式会社日立製作所 ストレージシステム及びその制御方法
JP7065928B2 (ja) 2020-11-06 2022-05-12 株式会社日立製作所 ストレージシステム及びその制御方法

Similar Documents

Publication Publication Date Title
US10778765B2 (en) Bid/ask protocol in scale-out NVMe storage
US10896086B2 (en) Maximizing use of storage in a data replication environment
WO2017056219A1 (ja) ストレージ装置およびストレージ装置の制御方法
JP6186787B2 (ja) データ転送装置、データ転送システム、データ転送方法及びプログラム
US9461944B2 (en) Dynamic resource allocation for distributed cluster-storage network
JP2007041720A (ja) ジョブステップ実行プログラムおよびジョブステップ実行方法
US10545791B2 (en) Methods to apply IOPS and MBPS limits independently using cross charging and global cost synchronization
WO2020087927A1 (zh) 一种内存数据迁移的方法及装置
WO2016166844A1 (ja) 分散処理システム、タスク処理方法、記憶媒体
JP6468499B2 (ja) 分散コンピューティングアーキテクチャ
US10331581B2 (en) Virtual channel and resource assignment
JP6160236B2 (ja) 情報処理装置、情報処理システム、情報処理装置の制御方法及び情報処理装置の制御プログラム
WO2015145598A1 (ja) 並列演算処理システムのデータ配分装置、データ配分方法、及びデータ配分プログラム
JP5158576B2 (ja) 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
Shu et al. Disaggregated RAID storage in modern datacenters
US11442959B2 (en) System and method of time-based snapshot synchronization
US10846094B2 (en) Method and system for managing data access in storage system
US20170123657A1 (en) Systems and methods for back up in scale-out storage area network
US10067889B2 (en) Bridge and method for coupling a requesting interconnect and a serving interconnect in a computer system
US20160034185A1 (en) Host-based device driver splitting of input/out for redundant array of independent disks systems
JP2010231295A (ja) 解析システム
US7930438B2 (en) Interrogate processing for complex I/O link
US20130132692A1 (en) Storage devices and storage systems
JPWO2018173300A1 (ja) I/o制御方法およびi/o制御システム
US20230185632A1 (en) Management system, data rebalancing management method, and recording medium

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15905373

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP