WO2017072868A1 - ストレージ装置 - Google Patents

ストレージ装置 Download PDF

Info

Publication number
WO2017072868A1
WO2017072868A1 PCT/JP2015/080312 JP2015080312W WO2017072868A1 WO 2017072868 A1 WO2017072868 A1 WO 2017072868A1 JP 2015080312 W JP2015080312 W JP 2015080312W WO 2017072868 A1 WO2017072868 A1 WO 2017072868A1
Authority
WO
WIPO (PCT)
Prior art keywords
command
storage device
control unit
host
information
Prior art date
Application number
PCT/JP2015/080312
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/080312 priority Critical patent/WO2017072868A1/ja
Publication of WO2017072868A1 publication Critical patent/WO2017072868A1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus

Definitions

  • the present invention relates to a storage apparatus.
  • SSD Solid State Drive
  • I / O performance of SSDs is nearly 1000 times that of HDDs.
  • Patent Document 1 in an I / O module composed of a dedicated hardware FPGA (Field Programmable Gate Array) and a memory directly connected to the FPGA, the FPGA refers to an I / O with reference to an address information table stored in the memory.
  • a method for realizing a high-performance storage controller that performs O processing is disclosed.
  • Patent Document 1 it is possible to realize high performance storage controllers.
  • the amount of address information required for I / O processing increases with an increase in storage capacity, it is difficult to store the address information table in an FPGA directly connected memory that is difficult to increase in capacity due to mounting problems and cost problems. It becomes.
  • a storage apparatus including a storage controller using a processor and a control device (for example, dedicated hardware) is realized. Since the memory connected to the processor can be easily added compared to the memory connected to the dedicated hardware, the capacity can be increased. However, in a configuration in which dedicated hardware and a processor are simply combined, if multiple read requests from the host are received simultaneously (also called multiple read requests), the processor memory is accessed from the dedicated hardware for each read request This is necessary, and each read process takes time. As a result, the throughput of read processing is reduced. Therefore, an object of the present invention is to provide a storage apparatus having a configuration capable of performing read processing at high speed even when a plurality of read requests are received simultaneously from a host (multiple received).
  • a storage device that stores data, a host interface that communicates with a host via a network, and a process based on a program are executed.
  • address conversion information for associating the logical volume with the storage device, and when the host interface receives the first command and the second command from the host connected via the network, the first command and the second command are stored in the memory.
  • the second control unit is notified of the completion of storage of the first command and the second command,
  • the extracted first command and the second command are analyzed, and the analyzed first command and the second command are read requests Accesses the address translation information in parallel based on the first command and the second command, and the first read data targeted by the first command and the second read data targeted by the second command.
  • FIG. 1 is a schematic diagram showing an outline of the device configuration and operation in the storage apparatus 100 of this embodiment.
  • the computer system includes a storage device 100 connected to a host computer 10 (which may be a host server, hereinafter referred to as a host) via a network 30.
  • the storage apparatus 100 includes a controller 110 and a physical storage device 190.
  • controller 110 is connected to the host interface 130 that communicates with the host 10, the accelerator processor 160 that is hardware corresponding to the read request from the host 10, the processor 140 that controls the storage device 100, and the processor 140. It comprises a processor memory 170 for storing control software and the like, a bus for connecting them, and a switch 150. It can also be said that the MP 140 executes I / O processing from the host 10 based on a program (control software), and the ACC 160 executes I / O processing from the host 10 based on hardware. .
  • the host interface 130 is the host I / F 130
  • the processor 140 is the MP (Microprocessor) 140
  • the accelerator processor 160 is the ACC (Accelerator processor) 160
  • the switch is the SW 150
  • the processor memory 170 is the Memory 170 or simply the memory 170. May be omitted.
  • the Host I / F 130 stores the first and second read requests in the memory 170.
  • the ACC 160 is notified that the first and second read requests have been received (S3).
  • the ACC 160 Upon receiving the notification, the ACC 160 extracts the first read request and the second read request from the memory 170 (S4), and the memory 170 specifies the storage destination of the information specified by the first and second read requests.
  • the stored address conversion table 260 (details will be described later) is independently accessed in a multiple manner (S5).
  • the ACC 160 stores information for transmitting data to be read to the physical storage device 190 in the memory 170 (S6), and notifies the physical storage device 190 to that effect (S7).
  • Information for accessing and specifying data to be transmitted is extracted, and the data targeted by the read request is stored in the memory 170 (S8).
  • the ACC 160 is notified that the target data has been staged (also referred to as copying) in the memory 170 (S9), and the ACC 160 further notifies the HOST I / F 130 (S10).
  • the HOST I / F 130 Upon receipt of the staging completion notification, the HOST I / F 130 extracts the target data (S11) and transmits it to the host 10 to perform processing corresponding to the first and second read requests from the host 10 (S12).
  • the ACC 160 processes the read requests from the host 10 in a multiplexed manner independently of each other. As a result, the processing time can be shortened compared to the case where requests are processed sequentially. That is, the processing efficiency of the storage apparatus 100 is improved.
  • FIG. 1 illustrates the configuration using the SW 150
  • the MP 140 and the ACC 160 may be configured as one control unit as illustrated in FIG.
  • the above-described effects can be achieved even with a configuration in which there is one controller.
  • the computer system of this embodiment includes a host computer (host server) 10 and a storage device 100.
  • the host 10 is connected to the storage apparatus 100 via the network 30.
  • the network 30 is a communication path for exchanging commands and data between the host 10 and the storage apparatus 100, and includes, for example, a SAN (Storage Area Network).
  • SAN Storage Area Network
  • the storage apparatus 100 includes storage controllers 110 and 120 and a physical storage device (nonvolatile storage medium) 190.
  • the physical storage device 190 is a high-speed drive such as an SSD (solid state drive) compatible with the NVMe (Non-Volatile Memory Express) standard, for example.
  • the storage controllers 110 and 120 may be simply referred to as controllers, and the physical storage device 190 may be referred to as SSD 190.
  • the physical storage device 190 is not limited to the SSD, and may be another medium such as an HDD (Hard Disk Disk Drive).
  • the controllers 110 and 120 connected to the host 10 are made redundant.
  • the number of controllers is not limited to two, and may be one or three or more.
  • the controller 110 and the controller 120 have basically the same configuration. For this reason, below, description of the controller 120 is abbreviate
  • the controller 110 receives an I / O request (a write command or a read command) from the host 10, specifies an SSD 190 having a RAID configuration that has data to which the I / O request is targeted or writes the targeted data. Read and write data.
  • the controller 110 includes a host interface (Hots I / F) 130, a processor (MP) 140, an accelerator processor (ACC) 160, a processor memory (Memory) 170, and a switch (SW) 150.
  • the switch (SW) 150 is connected to the Host I / F 130, the MP 140, the ACC 160, and each SSD 190 via a signal line.
  • the protocol flowing on the signal line is described as, for example, PCI Express (registered trademark) used as an internal data transfer protocol of the controller 110, but other protocols may be employed.
  • the MP 140 also functions as a Root Complex in PCI Express (registered trademark).
  • the Host I / F 130, the ACC 160, and the SSD 190 function as an end point in the PCI Express (registered trademark) cage.
  • the SW 150 of the controller 110 and the SW 150 of the controller 120 are connected via a path 180.
  • the path 180 is realized by, for example, Non Transient Bridge (NTB), and the controllers can communicate with each other.
  • NTB Non Transient Bridge
  • the connection between the controllers 110 and 120 is not limited to the non-transparent bridge.
  • the processor memory (Memory) 170 is a memory connected to the MP 140.
  • the processor memory 170 is a main storage memory of the MP 140, and stores a program area (for example, storage control software 230) executed by the MP 140, management information referred to by the MP 140, temporary read / write data, and the like. And a data area to be stored.
  • the processor memory 170 is connected to the MP 140.
  • the processor memory 170 is not limited to this, and may be built in the MP 140.
  • ACC160 is a control device realized by dedicated hardware such as ASIC (Application Specific Integrated Circuit) or FPGA (Field-Programmable Gate Array). Since the MP 140 and the ACC 160 share the I / O processing, the processing can be performed with high performance (high speed). Note that the ACC 160 may be realized as a processor in charge of I / O processing, such as MP, instead of dedicated hardware.
  • ASIC Application Specific Integrated Circuit
  • FPGA Field-Programmable Gate Array
  • the host I / F 130 is an interface connected to the host 10 via the network 30.
  • the host I / F 130 mutually converts the data transfer protocol between the host 10 and the controller 110 and the data transfer protocol in the controller 110.
  • a data transfer protocol between the host 10 and the controller 110 includes FC (Fibre Channel), Infiniband (registered trademark), iSCSI, and the like.
  • the MP 140 is a processor that controls the storage apparatus 100 such as executing storage control software 230 stored in the processor memory 170.
  • the MP 140 also provides a logical volume (LU: Logical Unit) to the host 10 based on one or more SSDs 190, and manages the logical volume as an LDEV (Logical Device).
  • LU Logical Unit
  • LDEV Logical Device
  • Each physical storage device (SSD) 190 includes a CPU and a memory (not shown), and executes data read / write processing and control command processing. Each SSD 190 is connected to the switches 150 of the controllers 110 and 120.
  • the MPs 140 of the controllers 110 and 120 divide the LDEV into a plurality of LDEV slots and divide the SSD into a plurality of SSD slots.
  • Each of the LDEV slot and the SSD slot is an area having the same size.
  • the correspondence between the LDEV slot and the SSD slot is managed by various management information.
  • the ACC 160 performs I / O processing based on the correspondence between LDEV slots and SSD slots specified by an address conversion table 240 described later.
  • the processor memory 170 includes a cache directory 200, cache data 210, management information 220, a host I / F inbound queue 230, a host I / F outbound queue 240, storage control software 250, an address conversion table 260, A temporary buffer data 270; an SSD submission queue (MP) 280 used by the MP 140; an SSD submission queue (MP) 285 used by the ACC 160; and an SSD completion queue (MP) 290 used by the MP. .
  • the SSD submission queue is divided so that the MP 140 and the ACC 160 are targeted. However, the MP 140 and the ACC 160 may use one SSD submission queue.
  • Storage control software 250 is software that implements I / O processing (write processing or read processing) and various storage functions (remote copy function, snapshot, deduplication, thin provisioning, etc.), and is executed by MP140.
  • the cache directory 200 stores the LDEV slot number assigned to the cache slot number.
  • the MP 140 can search the cache directory 200 to search whether the data of the LDEV slot is stored in the cache area, and the cache slot number when the data is stored in the cache slot.
  • the cache data 210 is data stored in a cache area in the processor memory 170. For example, in the case of a write request, temporarily stored data corresponds to data stored in the cache data 210.
  • Management information 220 is management information including address conversion information for each storage function.
  • the management information 220 stores, for example, RAID configuration information, thin provisioning configuration information, snapshot configuration information, and the like. By using this management information 220, an address conversion table 260 described later can be created.
  • the Host I / F inbound queue 230 is a queue stored (enqueued) by the Host I / F 130 and taken out (dequeued) by the MP 140 or the ACC 160.
  • a login command from the host, a read command / write command of an I / O request, a DMA (Direct Memory Access) response command, and the like are stored (enqueued).
  • the Host I / F outbound queue 240 is a queue stored (enqueued) by the MP 140 and the ACC 160 and taken out (dequeued) by the Host I / F 130.
  • a login response command, a write completion response command, a DMA request command, and the like are stored (enqueued).
  • the address conversion table 260 is a table that associates a combination of LDEV and LDEV slots with a combination of SSD 190 and SSD slots. Details of the address conversion table 260 will be described later.
  • the temporary buffer data 270 is an area for storing read data read from the SSD 190 in response to a read request from the host 10.
  • the SSD submission queue (MP) 280 and the SSD submission queue (ACC) 285 are stored (enqueued) by the corresponding MP 140 and ACC 160, and taken out (dequeued) by the SSD 190.
  • a read or write request command to the SSD 190, information of target data, and the like are set.
  • the SSD completion queue (MP) 290 is a queue that stores (enqueues) a processing completion response notification from the SSD 190 to the MP 140.
  • the processor memory 170 is provided with various queues. However, information may be stored and retrieved by another means without using the queue. The same applies to the following description.
  • the internal memory 380 includes a context information table 300, a LUN (Logical Unit Number) -LDEV number conversion table 310, a Source ID (S_ID) search table 320, a command tag management table 330, and an SSD completion queue (ACC) 340. And having.
  • LUN Logical Unit Number
  • S_ID Source ID
  • ACC SSD completion queue
  • the context information table 300 is a table that stores information related to commands being processed by the ACC 160. Details of the context information table 300 will be described later.
  • the LUN-LDEV number conversion table 310 is a table showing the correspondence between LUNs and LDEV numbers.
  • the source ID search table 320 is a table that stores a list of source ID information for identifying the host 10.
  • the command tag management table is a table for managing the availability of command tag numbers assigned to the ACC 160 to uniquely identify the command being processed.
  • the SSD completion queue (ACC) 340 is a queue that stores (enqueues or sets) a processing completion response notification from the SSD 190 addressed to the ACC 160.
  • the internal memory 380 of the ACC 160 is a storage element such as an SRAM (Static RAM) or a flip-flop. Alternatively, a DDR memory externally attached to the ACC 160 (not shown) may be used. Further, the Source ID search table 320 may be stored in CAM (Content Addressable Memory) in order to improve search performance.
  • the command tag management table 330 may be stored in a list structure, or may be stored in a FIFO (First In In First Out) memory.
  • the SSD completion queue 340 may be stored in a FIFO memory.
  • the address conversion table 260 is a table that is calculated and set by the MP 140 using the storage control software 250 according to the management information 220 of various storage functions. Specifically, it is a table prepared in advance so that necessary information can be referred to immediately using information stored in the management information 220 of the processor memory 170 (for example, a logical volume mapping table). .
  • the address conversion table 260 Even if the address conversion table 260 is not provided, it is possible to respond to a read request, which will be described later. However, since it is necessary to convert and obtain an address necessary for the response to the read request, processing man-hours are required. Increases the processing time. In other words, in this embodiment, by providing the address conversion table 260 in advance, the number of processing steps can be reduced, and the processing time can be shortened.
  • the address conversion table 260 includes a valid 401 for identifying whether the entry is valid, an LDEV number 402 in which a LUN and LBA recognized by the host are converted into logical addresses, and an LDEV slot number 403 corresponding to the LDEV.
  • the physical storage device number (SSD_ID 404) in which the data specified by the logical address is actually stored the slot number (SSD_SLOT 405) in the physical device, the REFERENCE_TAG 406 used as a data security code, and NEXT_ENTRY_PTR 407 which is pointer information indicating the next entry.
  • the storage control software 250 manages the LUN (Logical Unit Number) and LBA (Logical Unit Block Address) recognized by the host 10 stored in the management information 220, and the logical addresses (LDEV number 502 and LDEV) managed by the controllers 110 and 120. Slot number 503).
  • LUN Logical Unit Number
  • LBA Logical Unit Block Address
  • LDEV number 502 and LDEV logical addresses
  • Slot number 503 Slot number 503
  • the identification number (SSD_ID 404) of the physical storage device storing the data corresponding to the logical address and the slot number (SSD_SLOT 405) in the physical storage device are calculated from various tables in the management information 220.
  • REFERENCE_TAG 407 to be used as a data guarantee code is calculated.
  • REFERENCE_TAG 407 is, for example, a DIF (DataDIntegrity Field) reference tag in the T10DIF standard, which is a data protection standard, and a part of the logical address is set.
  • DIF DataDIntegrity Field
  • NEXT_ENTRY_PTR 408 is pointer information indicating the next entry when managing entries in a list structure.
  • the storage control software 250 adds valid information 401 indicating whether the entry is valid or invalid, and registers the information in the address translation table 260 using partial information of the LDEV 402 and the slot 403 as keys.
  • the address conversion table 260 is not limited to the above-described mode.
  • the storage control software 250 may calculate these hash values instead of the partial information of the LDEV 402 and the slot 403 and register them in the address conversion table using the hash values as keys. In this case, if there are entries having the same hash value, the storage control software 250 sets another empty entry, stores the pointer information to the entry in the first entry NEXT_ENTRY_PTR 408, and manages the entry in a list structure. It may be.
  • the hash values of the LDEV 402 and the slot 403 are calculated, the entries in the address translation table 260 are referenced using the hash value as a key, and if the values of the LDEV 402 and the slot 403 match, a hit is determined. If the values of the LDEV 402 and the slot 403 do not match, it is determined that there is no hit.
  • the entire capacity of the address conversion table 260 is small and the usage amount of the processor memory 170 is also smaller than when the hash value is not used.
  • the registration / search method is not limited to the above-described mode, and may be a set associative method.
  • the registration / search method is not limited to the above-described mode, and may be a set associative method.
  • the 4-way set associative method four entries having the same hash value are stored together and searched.
  • hit / miss determination may be made by comparing the values of the LDEV 402 and the slot 403 of the four entries.
  • the context information table 300 is a table in which commands being processed by the ACC 160 and related information associated therewith are collected.
  • Each entry includes a command tag (CMD Tag) 501 that uniquely identifies a command to be processed, the command (FC_CMD) 502, an SSD identification number (SSD_ID) 503 of a data reading destination related to the command, and a guarantee code Logical address information (REFERENCE_TAG) 504, Host I / F queue number (QUEUE_NUM) 505 for identifying the host I / F inbound queue 230 in which the command is stored, LDEV 506, which is the LDEV identification number, and the SSD SSD_SLOT 507, which is the SLOT number of the address, and hit / miss determination 508, which is the result of the address translation table search. Details of how to create and use the context information table 300 will be described later.
  • FIG. 7 is a system sequence diagram illustrating an outline of I / O processing by the ACC 160 according to the present embodiment. It is assumed that initialization processing such as a login process between the host 10 and the storage apparatus 100 has been completed in advance before executing the I / O processing.
  • the MP 140 registers the address conversion table 240 by executing the storage control software 250 (Table Entry 601). Note that the registration / deletion of the address conversion table 240 does not need to be synchronized with the command reception from the host 10 and is executed asynchronously. In other words, the address conversion table can be registered at an arbitrary timing.
  • FC_CMD Fibre Channel command
  • FC command of this embodiment is composed of, for example, the structure shown in FIG.
  • the FC command is transmitted to identify S (Source) _ID that uniquely identifies the source node on the host 10 side, D (Detination) _ID that uniquely identifies the destination node, and a series of sequences (also referred to as exchanges).
  • OX Oil-Exchange
  • RX Responder-Exchange
  • SCSI Small-Computer-System-Interface
  • the SCSI command includes information such as an operation code (write / read type, etc.), LBA (Logical Block Address), transfer length, and the like.
  • the FC command of the present embodiment has been described as having the data structure described above, but may have a structure other than the above.
  • the Host I / F 130 When the Host I / F 130 receives the FC command from the host 10 (FC_CMD 602), the Host I / F 130 enqueues the FC command into the Host I / F inbound queue 230 set on the processor memory 170 (FC_CMD 603). Note that enqueue is used to mean storing or setting information.
  • the Host I / F 130 notifies the ACC 160 that the command enqueue has been completed in the Host I / F inbound queue 230.
  • the ACC 160 dequeues the FC command from the Host I / F inbound queue 230 when the notification is received (FC_CMD 604). Further, when there are a plurality of enqueued FC commands, the ACC 160 may dequeue a plurality of entries together. Furthermore, when the Host I / F inbound queue 230 has a plurality of queues, the ACC 160 also stores the queue number 505 as context information.
  • FC_CMDs of reference numerals 602 to 604 may be the same information or different information.
  • the HOST I / F 130 may transmit the information transmitted from the host 10 to the processor memory 170 as it is or may transmit information that has been partially processed (for example, deletion of unnecessary information). Good. Further, information that is partially processed by the dequeue side (for example, ACC 160) may be dequeued.
  • the ACC 160 When the ACC 160 analyzes the dequeued FC command and determines that the operation code is a read command, the ACC 160 searches the address conversion table 260 stored in the processor memory 170 using the analysis result (Table Entry 605). In the case of hit determination as the search result, the ACC 160 creates an SSD command based on the SSD_ID 404 and the SSD_SLOT 405 included in the search result.
  • the SSD command is a command for causing the host 190 to stage data (also referred to as read data) in response to a read request to the temporary buffer data 270 of the processor memory 170 in the SSD 190 that holds the data. .
  • stage data also referred to as read data
  • context information 300 described later is also created.
  • the ACC 160 enqueues the SSD command to the SSD submission queue (ACC) 285 corresponding to the SSD_ID 404 stored in the processor memory 170 (SSD_CMD 606). If the search result is a miss determination, or a command other than a read command (write command, management command, etc.) is determined, the FC command is determined not to be subject to I / O processing by the ACC 160, and the FC command Is transferred to the storage control software 250 executed by the MP 140, and the storage control software 250 thereafter processes. The processing of the storage control software 250 will be described later. In the following description of the present embodiment, a case where the search result is hit determination will be described.
  • the ACC 160 stores the created context information in the context information table 300 set in the internal memory 380. Further, the SSD submission queue (ACC) 285 is notified of the completion of enqueue to the SSD #n 190 (n is a natural number). In response to the notification, the SSD #n 190 dequeues the SSD command from the SSD submission queue (ACC) 285 (SSD_CMD 607).
  • the SSD #n 190 analyzes the SSD command, and in the case of a read command, prepares read data and transfers the read data to the temporary buffer data 270 set on the processor memory 170 (Data 608).
  • the SSD #n 190 After transferring the read data, the SSD #n 190 notifies the completion of the read data to the SSD completion queue (ACC) 340 set in the internal memory of the ACC 160 in order to notify the completion of the read data transfer (completion entry). Is enqueued (Completion 609).
  • the ACC 160 detects enqueue to the SSD completion queue (ACC) 340, the ACC 160 dequeues the completion entry enqueued in the SSD completion queue (ACC) 340, and context information corresponding to the completion entry is context information. Read from table 300.
  • a DMA (Data Memory Access) request command is created based on the read context table information 300.
  • the DMA request command is enqueued in the Host I / F outbound queue 240 corresponding to the queue number 505 of the context information 300 (DMA_REQ 610).
  • the DMA request command may include a DIF (Data Integrity Field) check request.
  • the ACC 160 specifies REFERENCE_TAG 504 as a check target.
  • the host I / F 130 ensures that the read destination data is correct by comparing the designated REFERENCE_TAG 504 with the REFERENCE_TAG included in the read data.
  • the ACC 160 notifies the Host I / F 130 that the enqueue is completed in the Host I / F outbound queue 240.
  • the Host I / F 130 dequeues a DMA request command from the Host I / F outbound queue 240 in response to the notification (DMA_REQ 611).
  • the host I / F 130 analyzes the DMA request command, reads the read data from the temporary buffer data 270 of the processor memory 170 (Data 612), and transmits the read data to the host 10 (FC_DATA 613).
  • the Host I / F 130 enqueues a DMA completion response command to the Host I / F inbound queue 230 (DMA_RSP 614). Further, the host I / F 130 transmits a read data transmission completion response to the host 10 (FC_RSP 616), and further notifies the ACC 160 that the DMA response completion command has been enqueued in the HOST I / F inbound queue 230.
  • the ACC 160 Upon receipt of the DMA response completion command enqueue completion notification, the ACC 160 dequeues the DMA completion response command (DMA_RSP 615), and releases the corresponding command tag and context information 300.
  • DMA_RSP 615 the DMA completion response command
  • the address conversion table 260 is arranged in the processor memory 170 (large-capacity main memory) of the MP 140, the MP 140 manages registration / deletion of the address conversion table 260, and the accelerator 160 performs the corresponding address in parallel. I / O processing is executed while referring to the conversion table 260. As a result, it is possible to easily cope with an increase in the capacity of the address conversion table 260.
  • each unit constituting the storage apparatus constituting the storage apparatus corresponding to the system operation described with reference to FIG. 7 will be described with reference to FIGS.
  • the operation of each unit is the operation after setting Table entry 601.
  • the host I / F 130 waits until there is a notification from the ACC 160 that the data to be read requested is stored in the temporary buffer data 270 of the processor memory 170 (S104).
  • the Host I / F 130 dequeues the data stored in the processor memory 170 (S105) and transmits it to the host 10 (S106).
  • the ACC 160 is notified that the transmission of data to the host 10 has been completed (S107). Further, a command (FC_RSP) indicating that the I / O response has been completed is transmitted to the host 10, and the I / O processing is terminated.
  • FC_RSP command
  • FIG. 10 shows the architecture of the ACC 160 according to the first embodiment.
  • the ACC 160 includes an FC command fetch unit 710, an FC command analysis unit 720, an address search unit 730, an SSD command issue unit 740, a completion processing unit 750, a PCIE endpoint core 760, an internal bus 770,
  • the memory 380 is configured. Further, the FC command fetch unit 710, the FC command analysis unit 720, the address search unit 730, the SSD command issue unit 740, and the completion processing unit 750 are connected by a bus (not shown) and can transmit and receive data. .
  • the context information table 300, the LUN-LDEV conversion table 310, and the like are stored in the internal memory 380.
  • each unit may have a configuration corresponding to the internal memory.
  • the FC command analysis unit 720 includes a LUN-LDEV conversion table 310 and an S_ID search table 320
  • the SSD command issue unit 740 includes a command tag management table 330
  • the completion processing unit 750 includes an SSD.
  • a completion queue (ACC) 340 may be provided.
  • the FC command fetch unit 710 executes command dequeue, creates context information in which a queue number is added to the dequeued command, and passes the created information to the next FC command analysis unit 720.
  • the FC command analysis unit 720 analyzes the created context information, and if it is determined that the created information is an FC command and a read command, extracts the Source ID of the FC command. Next, a search is made as to whether there is a match with the extracted Source ID in the Source ID search table 320. Further, the FC command analysis unit 720 extracts a LUN and refers to the LUN-LDEV conversion table 310 to search for an LDEV number. Next, the FC command analysis unit 720 creates context information with the LDEV number (or LDEV number and LBA hash value) added, and passes the context information to the next address search unit 730.
  • FC command analysis unit 720 analyzes the context information and, when it is determined to be a DMA completion response command described later, passes the context information to the SSD command issue unit 740 together with a command tag release request. In the case of other error commands, the context information is passed to an error processing unit (not shown).
  • the address search unit 730 distributes the received context information to the sub-sequencer 731.
  • the sub-sequencer 731 refers to the received context information, issues a read request to the address conversion table 260, and acquires a table entry.
  • the sub-sequencer 731 performs a match comparison between the table entry and the LDEV number and SLOT number in the context information, and performs hit / miss determination.
  • the sub-sequencer 731 creates context information with the table entry and hit / miss determination added, and passes the context information to the next SSD command issuing unit 740.
  • the address search unit 730 includes a plurality of sub-sequencers 731 and can perform address search in a multiple manner. Since the sub-sequencer 731 can operate independently, even when a plurality of FC commands are received, the address search unit 730 can assign each to the sub-sequencer 731. Note that the address search unit 730 may distribute a plurality of received FC commands to a plurality of sub-sequencers 731 in order, or may allocate them to those that are available in consideration of the processing status of the FC commands of the sub-sequencer.
  • the FC commands may be assigned with priorities assigned to the sub-sequencers 731 or may be assigned according to the priority of the FC commands (for example, when a transmission source host to be processed with priority is set).
  • the number of sub-sequencers 731 depends on the performance of the ACC 160 and the system I / O performance.
  • the SSD command issuing unit 740 refers to the received context information and, in the case of hit determination, refers to the command tag management table 330 and assigns a command tag to the context information. Further, the SSD command issuing unit 740 refers to the context information, creates an SSD command in which the command tag is set to an SSD command identification number, and enqueues the SSD command in an SSD submission queue (ACC) 285. In addition, the SSD command issuing unit 740 creates context information to which the SSD identification number 503 of the SSD 190 that issued the SSD command is added, and stores the command tag in the context information table 300 as a storage destination address.
  • the SSD command issuing unit 740 executes a command tag release process on the command tag management table 330 when receiving a command tag release request from the FC command analysis unit 720 described later.
  • the completion processing unit 750 receives a completion entry issued from the SSD 190 from the SSD completion queue (ACC) 340. Next, the completion processing unit 750 reads the corresponding context information from the context information table 300 with reference to the SSD command identification number included in the completion entry. Next, the completion processing unit 750 refers to the context information, creates a DMA request command, and enqueues it in the Host I / F outbound queue 240.
  • the internal bus 770 mutually connects the FC command fetch unit 710, the FC command analysis unit 720, the address search unit 730, the SSD command issue unit 740, the completion processing unit 750, and the PCIe endpoint core 760. Bus. Further, the internal bus has a switch function for determining a transfer destination module by referring to the address map, and transfers a command sent from the end point to an appropriate processing unit.
  • the FC command fetch unit 700 In the PCIe endpoint core 760, the FC command fetch unit 700, the FC command analysis unit 710, the address search unit 720, and the SSD command issue unit 730 relay input / output of commands and the like to the outside of the ACC 160.
  • the ACC 160 waits until receiving an entry enqueue completion communication from the Host I / F 130 (S201).
  • S201 When an entry enqueue completion communication is received from the host I / F 130 (S201: Yes), a dequeue of a command from the host 10 stored in the processor memory 170 is executed (S202).
  • the ACC 160 analyzes the dequeued command and confirms the content notified from the HOST I / F 130 (S203).
  • the ACC 160 executes error processing (S204). If the host I / F 130 indicates that the read response has been completed (DMA_RSP), a process for releasing the context information is performed (S205). Normally, the release notification of the context information is notified after the read process is completed.
  • context information is created based on the content (S206).
  • the ACC 160 determines whether or not the S_ID of the FC command matches with the S_ID search table 420 stored in the internal memory 380 of the ACC 160 (S208). ). If the S_IDs do not match (S208: No), it is determined that this I / O processing is not performed by the ACC 160, and is transmitted to the MP 140 (S217).
  • the process proceeds to the next flow (S209: Yes), and it is determined whether or not the LDEV number has been searched using the LUN-LDEV conversion table 310 stored in the internal memory 380 (S209). . If the LDEV number has not been searched (S209: No), it is determined that the process is not performed by the ACC 160, and is transmitted to the MP 140 (S217).
  • the I / O processing request (context information) is distributed to the sub-sequencer 731 in the ACC 160 (S210).
  • the sub-sequencer 731 in the distributed ACC 160 makes a read request to the address conversion table 260 in the processor memory 170 (S211).
  • the sub-sequencer 731 determines whether or not specific information in the address conversion table 260 is hit using the context information (S212). If the address translation table 260 is not hit (S212: No), information is transmitted to the MP so that the I / O processing is performed not by the ACC 160 but by the MP 140 (S217).
  • the context information including the predetermined information read from the address translation table 260 is stored in the command information table, and the context information is uniquely identified.
  • the command tag is assigned (S213).
  • the ACC 160 performs a process of causing the SSD 190 to transmit the data to be read to the temporary buffer data 270 of the processor memory 170 (staging). Based on the information read from the address conversion table 260, the SSD 190 that holds the data to be read is identified, and the information necessary for sending the data to the SSD 190 is stored in the SSD submission queue of the processor memory 170.
  • the (ACC) 285 enqueues the SSD command, and notifies the SSD 190 that the SSD command has been enqueued (S214).
  • the ACC 160 waits for a notification (completion entry) that the staging is completed from the SSD 190 (S215).
  • a notification (completion entry) that the staging is completed from the SSD 190.
  • the host I / F 130 is notified that the staging is completed (S216).
  • the host I / F 130 waits for notification that the read response from the host 10 is completed (S201), and after determining that the completion notification has been received (S201) (S203), the contents of the context information table used in the communication are released (S205).
  • the ACC 160 is carrying out the above processing.
  • the ACC 160 according to the present embodiment is characterized by a pipeline processing structure including five stages of a command fetch stage, a command analysis stage, an address search stage, an SSD command issue stage, and an SSD completion response processing stage. High throughput performance can be realized.
  • the present invention is characterized by a multiple address search processing structure by a plurality of sub-sequencers 731 in the address search stage, and can realize search processing that does not cause pipeline installation.
  • the Host I / F inbound queue 230 is preferably configured as a software queue created by software on the processor memory 170.
  • the SSD queue SSD submission queue (ACC) 285 or SSD completion queue (ACC) 340
  • ACC SSD completion queue
  • the ACC 160 is characterized by having an SSD completion queue (ACC) 340 as a hard queue in the internal memory 380 of the ACC 160 in consideration of such characteristics of the storage device, and can realize low latency dequeue processing. It is said.
  • ACC SSD completion queue
  • the SSD completion queue (ACC) 340 may be configured with a FIFO memory as a CQ common to a plurality of SSDs #n without securing an area in the internal memory 380 for each SSD #n.
  • the CQs of a plurality of SSDs #n are configured with a single FIFO memory, there is an effect that the control cost of CQ that generally increases in proportion to the increase in the number of SSDs can be made constant.
  • the SSD 190 waits until it is notified from the ACC 160 that the SSD submission queue (ACC) 285 has been enqueued (SSD command) (S301). When there is a notification from the ACC 160 (S301: Yes), the queue of the queue enqueued with respect to the SSD submission queue (ACC) 285 is executed.
  • the SSD 190 analyzes the dequeued queue entry (S302). As a result of the analysis, when the operation requested by the dequeued queue entry is not a read request (S303: No), processing other than the read is executed (S306). If it is a read request (S303: Yes), the SSD 190 stages the read data targeted by the read request into the temporary buffer data 270 of the processor memory 170 (S304). After the data staging is completed, the SSD 190 enqueues the data in the SSD completion queue (ACC) 340 of the ACC 160 in order to report to the ACC 160 that the read data staging has been completed (S350).
  • ACC SSD completion queue
  • notifications from the MP 140 and the ACC 160 are stored in a memory area of a controller (not shown) of the SSD 190, and a plurality of notifications from the MP 140 and the ACC 160 may be stored.
  • the controller of the SSD 190 may process each notification by round robin, or may process either the MP 140 or the ACC 160 with priority.
  • the MP 140 that has received the notification confirms the operation code of the FC command and executes the specified operation. For example, if the operation code is a write command, a write process is performed, and if an operation command is met, an initialization process is executed.
  • the MP 140 If the S_ID does not match in S208 or the LDEV number cannot be retrieved in S209, the MP 140 confirms the corresponding part of the FC command. Then, it is determined that the notification is not normally possible, and error processing is executed. Specifically, when the S_IDs do not match, the host cannot be specified. When the LDEV number cannot be searched, the LDEV number that has not been assigned is notified, so the MP 140 is in a normal operation state. Handle the error as it happens.
  • the MP 140 analyzes the FC command and performs I / O processing.
  • the MP 140 performs address conversion while referring to the management information 220 for thin provisioning management information, RAID configuration information, a cache directory, and the like, and performs processing. Since this process is publicly known, a description thereof is omitted, but the process with the SSD 190 is performed in the same manner as in the case of the ACC 160, and the SSD submission queue (MP) 280 and the SSSD completion queue (MP) 290 are set. use. In other words, in the present application, it can be said that the storage destination of the information to be used is different between the MP140 I / O processing and the ACC160 I / O processing.
  • the ACC 160 handles each processing independently. By doing this (processing requests in multiple or parallel processing), throughput can be improved compared to sequential processing of requests. . That is, the processing efficiency of the storage apparatus 100 is improved.
  • each piece of information included in the computer system of each embodiment may be described in terms of a table or a list.
  • the data structure of each information is not limited, and other data structures may be used. Since each piece of information does not depend on the data structure, for example, “kkk table” or “kkk list” can be called “kkk information”.
  • the processor executes a program and performs processing while using a storage resource (for example, a memory) and / or a communication interface device (for example, a communication port).
  • a storage resource for example, a memory
  • a communication interface device for example, a communication port.
  • various programs may be the subject, but a processor that executes the program may be the subject. Further, the processing mainly using the processor may be interpreted as being performed by executing one or more programs.
  • the processor is typically a microprocessor such as a CPU (Central Processing Unit), but may include a hardware circuit that executes a part of the processing (for example, encryption / decryption, compression / decompression). .
  • the storage apparatus includes one or more physical storage devices and a storage controller that controls the physical storage devices.
  • the storage controller provides a logical volume to the host computer based on one or more physical storage devices.
  • the logical volume may be a real logical volume or a virtual logical volume.
  • the real logical volume is a logical volume based on one or more physical storage devices that the storage apparatus has.
  • the virtual logical volume may be, for example, a TP (Thin Provisioning) -logical volume and a snapshot logical volume.
  • a flash drive which is one of nonvolatile semiconductor memories, will be described as an example of a physical storage device.
  • the flash drive is, for example, an SSD (Solid State Drive).
  • the physical storage device may not be a nonvolatile semiconductor storage device as long as it is a nonvolatile physical storage device, and may be, for example, an HDD (Hard Disk Disk Drive).
  • one or more RAID groups Redundant Array of Independent (or Inexpensive) Disks
  • RAID groups Redundant Array of Independent (or Inexpensive) Disks
  • a RAID group may be referred to as a parity group).
  • SYMBOLS 10 Host server, 30 ... Network, 100 ... Storage device, 110, 120 ... Storage controller, 130 ... Host interface, 140 ... Processor, 150 ... Switch, 160 ..Accelerator processor, 170 ... processor memory, 190 ... physical storage device

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

データを記憶する記憶装置と、ホストと通信を行うホストIFと、プログラムに基づいて処理を実行する第1の制御部と、第1の制御部に接続されたメモリと、ホストIFと第1の制御部と接続し、ハードウェアに基づいて処理を実行する第2の制御部とを備え、メモリは論理ボリュームと記憶装置とを関連付けるアドレス変換情報を有し、ホストIFはホストから第1と第2のコマンドを受信すると、メモリに第1と第2のコマンドとをそれぞれ格納し、コマンドの格納完了を第2の制御部に通知し、第2の制御部はメモリに格納された第1と第2のコマンドとを取り出し、取り出したコマンドを解析し、解析した第1と第2のコマンドがリード要求である場合、それぞれのコマンドに基づいて多重にアドレス変換情報にアクセスし、第1のコマンドが対象とする第1のリードデータと第2のコマンドが対象とする第2のリードデータを格納する記憶装置を特定する。

Description

ストレージ装置
 本発明は、ストレージ装置に関する。
 近年、ストレージ装置の物理記憶デバイスとして、フラッシュメモリで実現されるSSD(Solid State Drive)が広く利用され始めている。SSDは、従来のHDDに比較して、レスポンス性能、低消費電力などの特長を持つ。特に、SSDのI/O性能は、HDDの1000倍近いものもある。
 一方で、ストレージコントローラの性能がSSDの性能に追いついておらず、ボトルネックとなってしまう問題がある。例えば、フラッシュドライブ(SSD)を高々十数台搭載した場合でも、ストレージコントローラの性能がボトルネックとなり、フラッシュドライブの性能を十分に引き出すことができない場合がある。今後さらなるストレージの大容量化が求められた場合、より多くのSSDがストレージコントローラに接続されることとなり、ストレージコントローラに起因するボトルネックが深刻になる場合が考えられる。
 本発明に関する技術分野における先行技術としては、例えば、米国特許出願公開第2013/0145088号(特許文献1)がある。特許文献1では、専用ハードウェアであるFPGA(Field Programable Gate Array)とFPGAに直結されたメモリから構成されるI/Oモジュールにおいて、FPGAはメモリに格納されたアドレス情報テーブルを参照しながらI/O処理する高性能なストレージコントローラの実現方法を開示している。
米国特許出願公開第2013/0145088号
 特許文献1に記載の技術によればストレージコントローラの高性能化を実現することは可能である。しかし、ストレージ容量の増加に伴いI/O処理に必要なアドレス情報量が増大するため、実装上の問題やコストの問題により大容量化の難しいFPGA直結メモリにアドレス情報テーブルを格納することが困難となる。
 また、特許文献1に記載の技術では、専用ハードウェアのみしかない装置構成で処理を行うため、ストレージ装置の管理の容易化や利用効率向上のための十分な機能が提供できない。例えば、ストレージ装置の管理の容易化のための機能としてThin Provisioning、バックアップ機能としてボリュームのレプリケーション、スナップショットなどが挙げられる。また、ストレージ装置の利用効率向上のための機能としては、例えば重複排除、データ圧縮などが挙げられる。これらの機能を提供するためには、これらの機能を有するプログラムをプロセッサで実行する必要がある。
 そこで、本発明ではプロセッサ及び制御デバイス(例えば専用ハードウェア等)を用いるストレージコントローラを備えたストレージ装置を実現する。プロセッサに接続するメモリは専用ハードウェアに接続するメモリと比べ、容易に追加することができるため大容量化が可能である。しかし、単に専用ハードウェアとプロセッサを組み合わせた構成では、ホストからのリード要求を同時に複数受領した場合(多重にリード要求を受領するとも言う)、リード要求毎に専用ハードウェアからプロセッサメモリにアクセスが必要となり、一つ一つのリード処理に時間がかかってしまう。そのため、リード処理のスループットが低下する。
そこで本発明ではリード要求をホストから同時に複数受領した(多重に受領した)場合であってもリード処理を高速に行うことができる構成を備えるストレージ装置の提供を目的とする。
 上記課題を解決するために、本発明を実施する構成の一つとしては例えば、データを記憶する記憶装置と、ネットワークを介してホストと通信を行うホストインターフェースと、プログラムに基づいて処理を実行する第1の制御部と、第1の制御部に接続されたメモリと、ホストインターフェースおよび第1の制御部と接続し、ハードウェアに基づいて処理をする第2の制御部とを備え、メモリは、論理ボリュームと記憶装置とを関連付けるアドレス変換情報を有し、ホストインターフェースは、ネットワークを介して接続するホストから第1のコマンドと第2のコマンドを受信すると、メモリに第1のコマンドと第2のコマンドとをそれぞれ格納し、第1コマンドと第2のコマンドの格納完了を第2の制御部に通知し、第2の制御部は、メモリに格納された第1のコマンドと第2のコマンドとを取り出し、取出した第1のコマンドと第2のコマンドを解析し、解析した第1のコマンドと第2のコマンドがリード要求である場合は、第1のコマンドと第2のコマンドに基づいて並列にアドレス変換情報にアクセスし、第1のコマンドが対象とする第1のリードデータと第2のコマンドが対象とする第2のリードデータを格納する記憶装置を特定する、構成が挙げられる。
 プロセッサと専用ハードウェアを備えたストレージコントローラの構成を備えることで、ストレージコントローラの高性能化とI/O処理効率を向上させることができる。
本計算機システムを説明する概念図である。 本計算機システムの構成図の一例を示す構成図である。 プロセッサメモリに記憶される情報の一例を示す図である。 アクセラレータプロセッサが備えるメモリに記憶される情報の一例を示す図である。 アドレス変換テーブルの構成の一例を示す図である。 コンテキスト情報テーブルの構成の一例を示す図である。 各装置のリード処理動作を説明するシーケンス図である。 FCコマンドの構成の一例を示す図である。 Host I/Fの動作の一例を説明するフローチャートである。 アクセラレータプロセッサの構成の一例を示す構成図である。 アクセラレータプロセッサの動作の一例を説明するフローチャートである。 アクセラレータプロセッサの動作の一例を説明するフローチャートである。 物理記憶デバイスの動作の一例を説明するフローチャートである。 本計算機システムを説明する概念図である。
 以下、本発明の実施例について図面を用いて説明する。
 A.本実施例の概略
 図1は本実施例のストレージ装置100における装置構成及び動作の概略を示す概略図である。
 本実施例1の計算機システムは、ホスト計算機10(ホストサーバであってもよい。以下、ホストとする)とネットワーク30を介して接続されるストレージ装置100から構成される。ストレージ装置100は、コントローラ110と物理記憶デバイス190とを含んで構成されている。
 さらに、コントローラ110は、ホスト10と通信を行うホストインターフェース130、ホスト10からのリード要求に対応するハードウェアであるアクセラレータプロセッサ160、ストレージ装置100の制御を行うプロセッサ140、プロセッサ140に接続し、ストレージ制御ソフトなどを記憶するプロセッサメモリ170、それらを接続するバスとスイッチ150から構成される。なお、MP140はプログラム(制御ソフト)に基づいてホスト10からのI/O処理を実行し、ACC160はハードウェアに基づいてホスト10からのI/O処理を実行している、とも言うことができる。
 以下の説明及び図面では、ホストインターフェース130をHost I/F130、プロセッサ140をMP(Microprocessor)140、アクセラレータプロセッサ160をACC(Accelarator processor)160、スイッチをSW150、プロセッサメモリ170をMemory170または単にメモリ170と省略する場合がある。
 ホスト10からネットワーク30を経由してストレージ装置100が第1のリード要求と第2のリード要求を受けた場合(S1)、Host I/F130はメモリ170に第1および第2のリード要求を格納し(S2)、ACC160に第1および第2のリード要求を受けた旨を連絡する(S3)。
 連絡を受けたACC160は、メモリ170から第1のリード要求と第2のリード要求を取り出し(S4)、第1および第2のリード要求が指定する情報の格納先を特定するためにメモリ170が記憶するアドレス変換テーブル260(詳細は後述する)にそれぞれ独立して多重にアクセスする(S5)。
 次に、ACC160は、メモリ170に物理記憶デバイス190にリード対象とするデータを伝える情報を格納し(S6)、その旨を物理記憶デバイス190に伝える(S7)物理記憶デバイス190は、メモリ170にアクセスし、送信するデータを特定する情報を取り出し、リード要求が対象とするデータをメモリ170に格納する(S8)。
 その後、ACC160に対象データがメモリ170にステージング(コピーともいう)されたことを通知し(S9)、ACC160はさらにその旨をHOST I/F130に通知する(S10)。
 ステージング完了の通知を受けたHOST I/F130は対象データを取り出し(S11)ホスト10に送信する事で、ホスト10からの第1および第2のリード要求にそれぞれ対応する処理を行う(S12)。
 この構成とすることで、複数のリード要求が同じタイミングまたは近いタイミングでホスト10からストレージ装置100にされた場合であっても、ホスト10からのリード要求をACC160はそれぞれ独立して多重に処理することで、単にシーケンシャルに要求を処理するよりも処理時間を短縮することができる。即ち、ストレージ装置100の処理効率が向上する。
 また、図1ではSW150を用いる構成で説明をしているが、図14に示すようにMP140とACC160が一つの制御部とする構成としてもよい。この制御部が1つである構成であっても上記する効果は達成することができる。
 本実施例の各種構成や処理動作の詳細については、以下の通り説明する。
 B.装置構成
 次に、実施例1に係る計算機システムの構成図の一例を図2を用いて説明する。本実施例の計算機システムは、ホスト計算機(ホストサーバ)10と、ストレージ装置100とを有する。
 ホスト10は、ネットワーク30を介してストレージ装置100に接続されている。ネットワーク30は、ホスト10とストレージ装置100との間でコマンドやデータをやり取りするための通信路であり、例えば、SAN(Storage Area Network)等から構成される。
 ストレージ装置100は、ストレージコントローラ110、120と、物理記憶デバイス(不揮発性記憶媒体)190とを有する。物理記憶デバイス190は、例えばNVMe(Non-Volatile Memory Express)規格に対応したSSD(solid state drive)等の高速なドライブである。以下の説明及び図面では、ストレージコントローラ110、120を、単にコントローラ、物理記憶デバイス190をSSD190という場合がある。なお、本実施例では物理記憶デバイス190は、SSDに限定されるものではなく、例えばHDD(Hard Disk Drive)等他の媒体であってもよい。
 図2では、ホスト10に接続するコントローラ110、120が冗長化されている。しかし、コントローラは、2つに限られず、1つであってもよいし3つ以上であってもよい。なお、コントローラ110とコントローラ120とは基本的に同じ構成である。このため、以下では、必要のない限り、コントローラ120の説明を省略する。
 コントローラ110は、ホスト10よりI/O要求(ライトコマンド又はリードコマンド)を受信し、I/O要求が対象とするデータを持つあるいは対象とするデータを書き込むためのRAID構成のSSD190を特定して、データのリードやライトを実行する。コントローラ110は、ホストインターフェース(Hots I/F)130、プロセッサ(MP)140、アクセラレータプロセッサ(ACC)160、プロセッサメモリ(Memory)170、及びスイッチ(SW)150を備える。
 スイッチ(SW)150は、信号線を介してHost I/F130、MP140、ACC160、及び、各SSD190に接続される。本実施例では、信号線上を流れるプロトコルを例えば、コントローラ110の内部データ転送プロトコルとして使われるPCI Express(登録商標)として説明するが、これ以外のプロトコルを採用することもできる。また、MP140は、PCI Express(登録商標) におけるRoot Complexとして機能する。また、Host I/F130、ACC160、SSD190は、PCI Express(登録商標) におけるEndpointとして機能する。
 また、コントローラ110のSW150と、コントローラ120のSW150が、パス180を介して接続される。パス180は、例えば、Non Transparent Bridge(NTB)により実現されており、コントローラは相互に通信することが可能である。しかし、コントローラ110と120との間の接続は、Non Transparent Bridgeに限られない。
 プロセッサメモリ(Memory)170は、MP140に接続されるメモリである。プロセッサメモリ170は、MP140の主記憶メモリであり、MP140が実行するプログラム(例えば、ストレージ制御ソフトウェア230)及びMP140が参照する管理情報等を格納するプログラム領域と、一時的にリード/ライトデータ等を格納するデータ領域とを備える。なお、図1ではプロセッサメモリ170は、MP140に接続されているが、これに限らずMP140に内蔵されていてもよい。
 ACC160は、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)等の専用ハードウェアで実現される制御装置である。MP140とACC160がI/O処理を分担することにより、高性能(高速)に処理可能となる。なお、ACC160は、専用のハードウェアではなくともMP等のようにI/O処理を担当するプロセッサとして実現されてもよい。
 Host I/F130は、ネットワーク30を介してホスト10に接続されるインターフェースである。Host I/F130は、ホスト10とコントローラ110との間のデータ転送プロトコルと、コントローラ110内のデータ転送プロトコルとを相互に変換する。例えばホスト10とコントローラ110との間のデータ転送プロトコルの一例では、FC(Fibre Channel)やInfiniband(登録商標)、iSCSIなどがある。
 MP140は、プロセッサメモリ170に記憶されたストレージ制御ソフトウェア230を実行するなどストレージ装置100を制御するプロセッサである。また、MP140は、1つまたは複数のSSD190に基づき、ホスト10に論理ボリューム(LU:Logical Unit)を提供し、論理ボリュームをLDEV(Logical Device)として管理する。
 各物理記憶デバイス(SSD)190は、内部に図示しないCPU及びメモリ等を備え、データのリード及びライト処理や、制御コマンドの処理を実行する。各SSD190は、コントローラ110及び120のスイッチ150に接続されている。
 本実施例では、コントローラ110、120のMP140は、LDEVを複数のLDEVスロットに分割し、SSDを複数のSSDスロットに分割する。LDEVスロット、SSDスロットのそれぞれは、同じ大きさの領域である。LDEVスロットとSSDスロットの対応関係は、各種管理情報により管理される。ACC160は、後述するアドレス変換テーブル240により規定されるLDEVスロットとSSDスロットの対応関係に基づきI/O処理を実施する。
 次にMP140に接続されたプロセッサメモリ170に格納される情報について図3を用いて説明する。
 プロセッサメモリ170は、キャッシュディレクトリ200と、キャッシュデータ210と、管理情報220と、Host I/Fインバウンドキュー230と、Host I/Fアウトバウンドキュー240と、ストレージ制御ソフトウェア250と、アドレス変換テーブル260と、一時バッファデータ270と、MP140が使用するSSDサブミッションキュー(MP)280と、ACC160が使用するSSDサブミッションキュー(MP)285と、MPが使用するSSDコンプリーションキュー(MP)290と、を有する。なお、図3ではSSDサブミッションキューをMP140とACC160とを対象とするように分けているが1つのSSDサブミッションキューをMP140とACC160が使用するとしてもよい。
 ストレージ制御ソフトウェア250は、I/O処理(ライト処理またはリード処理)や各種のストレージ機能(リモートコピー機能、スナップショット、重複排除、シンプロビジョニングなど)を実現するソフトウェアであり、MP140で実行される。
 キャッシュディレクトリ200は、キャッシュスロット番号に割当てられたLDEVスロット番号を記憶する。つまり、MP140は、キャッシュディレクトリ200を検索することで、LDEVスロットのデータがキャッシュ領域に記憶されているか、及び、当該データがキャッシュスロットに記憶されている場合にはそのキャッシュスロット番号を検索できる。キャッシュデータ210は、プロセッサメモリ170内のキャッシュ領域に格納されたデータである。たとえば、ライト要求の場合に、一時的に記憶されるデータがキャッシュデータ210に格納されるデータに該当する。
 管理情報220は、ストレージ機能毎のアドレス変換情報等を含む管理情報である。管理情報220は、例えば、RAID構成情報、シンプロビジョニング構成情報、スナップショット構成情報等を記憶している。この管理情報220を用いることで、後述するアドレス変換テーブル260を作成する事ができる。
 Host I/Fインバウンドキュー230は、Host I/F130が格納(エンキュー)し、MP140やACC160が取り出す(デキュー)キューである。ホストからのログインコマンドやI/O要求のリードコマンド/ライトコマンド、DMA(Direct Memory Access)応答コマンドなどが格納(エンキュー)される。
 Host I/Fアウトバウンドキュー240は、MP140やACC160が格納(エンキュー)し、Host I/F130が取り出す(デキュー)キューである。ログイン応答コマンドやライト完了応答コマンドやDMA要求コマンドなどが格納(エンキュー)される。
 アドレス変換テーブル260は、LDEV及びLDEVスロットの組み合わせと、SSD190及びSSDスロットの組み合わせを対応づけるテーブルである。アドレス変換テーブル260の詳細については後述する。一時バッファデータ270は、ホスト10からリード要求を受けてSSD190より読み出したリードデータを格納する領域である。
 SSDサブミッションキュー(MP)280およびSSDサブミッションキュー(ACC)285は、それぞれ対応するMP140とACC160が格納(エンキュー)し、SSD190が取り出す(デキュー)キューである。それぞれのSSDサブミッションキューには、SSD190へのリードまたはライト要求コマンドと対象とするデータの情報などが設定される。SSDコンプリーションキュー(MP)290は、MP140宛にSSD190からの処理完了応答通知を格納(エンキュー)するキューである。
 なお、上記ではプロセッサメモリ170には各種キューを備えていると説明したが、キューを用いず別の手段で情報を格納し、取り出す構成としてもよい。以下の説明でも同様である。
 次に、ACC160の内部メモリ380に格納される情報について図4を用いて説明する。
 内部メモリ380は、コンテキスト情報テーブル300と、LUN(Logical Unit Number)-LDEV番号変換テーブル310と、Source ID(S_ID)検索テーブル320と、コマンドタグ管理テーブル330と、SSDコンプリーションキュー(ACC)340と、を有する。
 コンテキスト情報テーブル300は、ACC160が処理中のコマンドに関する情報を格納するテーブルである。コンテキスト情報テーブル300の詳細については後述する。LUN-LDEV番号変換テーブル310は、LUNとLDEV番号の対応関係を示したテーブルである。
 Source ID検索テーブル320は、ホスト10を識別するためのSource ID情報の一覧を格納したテーブルである。
 コマンドタグ管理テーブルは、ACC160が処理中のコマンドを一意に識別するために付与するコマンドタグ番号の空き状況を管理するためのテーブルである。SSDコンプリーションキュー(ACC)340は、ACC160宛のSSD190からの処理完了応答通知を格納(エンキューまたは設定)するキューである。
 ACC160の内部メモリ380は、例えばSRAM(Static RAM)やフリップフロップなどの記憶素子である。あるいは、図示していないACC160に外付けされたDDRメモリでもよい。また、SourceID検索テーブル320は、検索性能を上げるためにCAM(Content Addressable Memory)に格納してもよい。コマンドタグ管理テーブル330は、リスト構造で格納してもよいし、FIFO(First In First Out)メモリに格納してもよい。SSDコンプリーションキュー340は、FIFOメモリに格納してもよい。
 次に、本実施例のアドレス変換テーブル260の一例を図5を用いて説明する。
  アドレス変換テーブル260は、MP140がストレージ制御ソフトウェア250を用いて各種のストレージ機能の管理情報220に従って算出して設定するテーブルである。具体的には、プロセッサメモリ170の管理情報220が記憶する情報(例えば、論理ボリュームのマッピングテーブルなど)を用いて、すぐに必要な情報を参照できるように予め用意しておくテーブルのことである。
 なお、アドレス変換テーブル260を備えない場合であっても後述するリード要求対応を行うことは可能であるが、リード要求の対応に必要なアドレスをその都度変換して求める必要があるため、処理工数が多くなり処理時間もかかってしまう。換言すれば、本実施例では、予めアドレス変換テーブル260を備えておくことにより、処理工数が少なくなり、処理時間を短縮することができる。
 アドレス変換テーブル260は、エントリが有効か否かを識別するvalid401と、ホストが認識するLUNとLBAを論理アドレスに変換した値が格納されるLDEV番号402と、そのLDEVが対応するLDEVスロット番号403と、論理アドレスが指定するデータが実際に格納されている物理記憶デバイスの番号(SSD_ID404)と、物理デバイス内のスロット番号(SSD_SLOT405)と、データの保障コードとして用いるREFERENCE_TAG406と、リスト構造の場合に、次のエントリを示すポインタ情報であるNEXT_ENTRY_PTR407とを含んで構成される。
 次にアドレス変換テーブル260を作成する際の動作について説明する。以下、プログラムが主体として動作しているように記載するが、実際にはMP140が動作し、処理をしている。
 ストレージ制御ソフトウェア250は、まず管理情報220に記憶されているホスト10が認識するLUN(Logical Unit Number)及びLBA(Logical Block Address)を、コントローラ110、120が管理する論理アドレス(LDEV番号502及びLDEVスロット番号503)に変換する。上記するように、管理情報220に記憶されている各種テーブルを経由して変換しているが、変換動作自体は公知の動作であるため詳細は省略する。
 次に管理情報220にある各種テーブルから論理アドレスに対応するデータが格納されている物理記憶デバイスの識別番号(SSD_ID404)と物理記憶デバイス内のスロット番号(SSD_SLOT405)を算出する。
 次にデータの保証コードとして利用するREFERENCE_TAG407を算出する。REFERENCE_TAG407は、例えば、データ保護の規格であるT10DIF規格におけるDIF(Data Integrity Field)の参照タグであり、論理アドレスの一部が設定される。
 NEXT_ENTRY_PTR408は、リスト構造でエントリを管理する場合に次のエントリを示すポインタ情報である。ストレージ制御ソフトウェア250は、これらの情報を当該エントリが有効か無効かを示すvalid401を加えて、LDEV402及びスロット403の一部情報をキーとして、アドレス変換テーブル260に登録する。
 なお、アドレス変換テーブル260は、上記の態様に限られない。例えば、ストレージ制御ソフトウェア250は、LDEV402及びスロット403の一部情報に代えて、これらのハッシュ値を算出し、当該ハッシュ値をキーとしてアドレス変換テーブルに登録してもよい。この場合、ストレージ制御ソフトウェア250は、ハッシュ値が同じエントリがあれば、別の空きエントリを設定し、最初のエントリのNEXT_ENTRY_PTR408に当該エントリへのポインタ情報を格納し、リスト構造でエントリを管理するようにしてもよい。
 また、検索時にはLDEV402及びスロット403のハッシュ値を算出して、当該ハッシュ値をキーとしてアドレス変換テーブル260内のエントリを参照し、LDEV402及びスロット403の値が一致すればヒットとし、LDEV402及びスロット403の値が一致しなければ次のエントリへ進み、LDEV402及びスロット403の値が一致するエントリがなければヒットなしと判定する。
 上記のようにハッシュ値を用いてエントリのヒット判定を行う場合、ハッシュ値を使用しない場合と比べて、アドレス変換テーブル260全体の容量も少なくて済み、プロセッサメモリ170の使用量も少なくなる。
 なお、登録・検索方法は、上記の様態に限らず、セットアソシアティブ(Set Associative)方式によってもよく、例えば4Wayセットアソシアティブ方式の場合、同一のハッシュ値を持つ4つのエントリをまとめて格納し、検索時には、4つのエントリのLDEV402及びスロット403の値と一致比較することでヒットミス判定するとしてもよい。
 次に、本実施例のコンテキスト情報テーブル300の一例を図6を用いて説明する。
  コンテキスト情報テーブル300は、ACC160が処理中のコマンドとそれに付随する関連する情報をまとめたテーブルである。
 各エントリは、処理するコマンドを一意に識別するコマンドタグ(CMD Tag)501と、当該コマンド(FC_CMD)502と、当該コマンドに関連したデータ読み出し先のSSD識別番号(SSD_ID)503と、保証コード向けの論理アドレス情報(REFERENCE_TAG)504と、当該コマンドが格納されていたHost I/Fインバウンドキュー230を識別するHost I/Fキュー番号(QUEUE_NUM)505と、LDEVの識別番号であるLDEV506と、SSD内のSLOT番号であるSSD_SLOT507と、アドレス変換テーブル検索の結果であるヒット/ミス判定508と、を有する。コンテキスト情報テーブル300の作成方法および使用方法についての詳細は後述する。
 C.装置動作
 図7は、本実施例に係るACC160によるI/O処理の概略を説明するシステムシーケンス図である。なおI/O処理を実行する前に予め、ホスト10とストレージ装置100との間のログインプロセス等の初期化処理は完了しているものとする。
 MP140は、ストレージ制御ソフトウェア250を実行することによりアドレス変換テーブル240を登録する(Table Entry601)。なお、アドレス変換テーブル240の登録・削除は、ホスト10からのコマンド受信と同期する必要はなく、非同期的に実行される。即ち、アドレス変換テーブルの登録は任意のタイミングで行う事ができる。
 以降で説明する処理シーケンスは、ストレージ装置100のHost I/F130が、ホスト10からコマンドを受信したことを契機に行われる。本実施例では受信したコマンドは、FC(Fibre Channel)コマンド(FC_CMD)であるとする。
 本実施例のFCコマンドは、例えば図8に示す構造から構成されているとする。FCコマンドは、ホスト10側の送信元ノードを一意に識別するS(Source)_ID、送信先ノードを一意に識別するD(Detination)_ID、一連のシーケンス(エクスチェンジともいう)を識別するために送信元が設定するOX(Originator Exchange)_ID、受信元が設定する一連のシーケンスを識別するために設定するRX(Responder Exchange)_ID、シーケンス番号、LUN(Logical Unit Number)、SCSI(Small Computer System Interface)コマンドなどの情報から構成される。
 さらに、SCSIコマンドは、オペレーションコード(ライト/リード種別等)、LBA(Logical Block Address)、転送長などの情報から構成される。本実施例のFCコマンドは上記するデータ構造を備えるとして説明をしたが、上記以外の構造を備えていてもよい。
 Host I/F130は、ホスト10からFCコマンドを受信する(FC_CMD602)と、Host I/F130は、プロセッサメモリ170上に設定されたHost I/Fインバウンドキュー230にFCコマンドをエンキューする(FC_CMD603)。なお、エンキューとは、情報を格納するまたは設定するという意味で使用している。
 Host I/F130は、Host I/Fインバウンドキュー230にコマンドのエンキューを完了したことをACC160に通知する。ACC160は、前記通知を受信したことを契機に、Host I/Fインバウンドキュー230からFCコマンドをデキューする(FC_CMD604)。また、ACC160は、エンキューされたFCコマンドが複数ある場合には、複数エントリをまとめてデキューしてもよい。さらに、Host I/Fインバウンドキュー230が複数キューの場合は、ACC160はキュー番号505もコンテキスト情報として記憶する。
 なお、符号602~604のFC_CMDは同じ情報であってもよいし、異なる情報であってもよい。すなわち、HOST I/F130がプロセッサメモリ170に対してホスト10から送信された情報をそのまま用いて送信してもよいし、一部加工(例えば、不要な情報の削除)した情報を送信したとしてもよい。また、デキューする側(例えば、ACC160)が一部加工した情報をデキューするとしてもよい。
 ACC160は、デキューしたFCコマンドを解析し、オペレーションコードがリードコマンドであると判断すると、解析結果を用いてプロセッサメモリ170に記憶されたアドレス変換テーブル260に検索を実施する(Table Entry605)。検索の結果としてヒット判定の場合、ACC160は、検索結果に含まれるSSD_ID404およびSSD_SLOT405に基づいてSSDコマンドを作成する。
 なお、SSDコマンドとは、ホスト10にリード要求に応答する為のデータ(リードデータともいう)を、当該データを保有するSSD190にプロセッサメモリ170の一時バッファデータ270にまでステージングさせるためのコマンドである。また、このSSDコマンドを作成するとともに、後述するコンテキスト情報300も作成する。
 ACC160は、当該SSDコマンドをプロセッサメモリ170が記憶するSSD_ID404に対応するSSDサブミッションキュー(ACC)285へエンキューする(SSD_CMD606)。検索の結果としてミス判定の場合、あるいは、リードコマンド以外のコマンド(ライトコマンド、管理系コマンド等)と判定された場合、当該FCコマンドは、ACC160によるI/O処理対象外であるとして、FCコマンドをMP140が実行するストレージ制御ソフトウェア250に転送し、以後ストレージ制御ソフトウェア250が処理する。ストレージ制御ソフトウェア250の処理は後述する。本実施例での以降の説明では、検索結果がヒット判定とされた場合について説明する。
 ACC160は、作成したコンテキスト情報を内部メモリ380に設定されたコンテキスト情報テーブル300に格納する。またSSDサブミッションキュー(ACC)285にエンキュー完了をしたことをSSD#n 190に通知する(nは自然数)。SSD#n 190は、前記通知を契機に、SSDサブミッションキュー(ACC)285からSSDコマンドをデキューする(SSD_CMD607)。
 SSD#n 190は、SSDコマンドを解析し、リードコマンドの場合、リードデータを準備し、プロセッサメモリ170上に設定された一時バッファデータ270へリードデータを転送する(Data608)。
 リードデータを転送した後、SSD#n 190は、リードデータ転送の完了を通知するためにACC160の内部メモリに設定されたSSDコンプリーションキュー(ACC)340にリードデータ転送完了通知(コンプリーションエントリ)をエンキューする(Completion609)。
 ACC160は、SSDコンプリーションキュー(ACC)340へのエンキューを検知すると、当該SSDコンプリーションキュー(ACC)340にエンキューされたコンプリーションエントリをデキューし、当該コンプリーションエントリに対応するコンテキスト情報をコンテキスト情報テーブル300から読み出す。
 次に、読み出したコンテキストテーブル情報300に基づいて、DMA(Data Memory Access)要求コマンドを作成する。当該DMA要求コマンドをコンテキスト情報300のキュー番号505に対応したHost I/Fアウトバウンドキュー240にエンキューする(DMA_REQ610)。なお、DMA要求コマンドには、DIF(Data Integrity Field )チェック要求を含めてもよい。その場合は、ACC160はチェック対象としてREFERENCE_TAG504を指定する。Host I/F130は、指定されたREFERENCE_TAG504と、リードデータに含まれるREFERENCE_TAGの一致比較することで正しい読み出し先データであることを保証する。
 ACC160は、Host I/Fアウトバウンドキュー240にエンキュー完了したことをHost I/F130に通知する。Host I/F130は、前記通知を契機に、Host I/Fアウトバウンドキュー240からDMA要求コマンドをデキューする(DMA_REQ611)。
 Host I/F130は、DMA要求コマンドを解析し、リードデータをプロセッサメモリ170の一時バッファデータ270から読み出して(Data612)、ホスト10へリードデータを送信する(FC_DATA613)。
 Host I/F130は、リードデータの送信が完了すると、DMA完了応答コマンドをHost I/Fインバウンドキュー230へエンキューする(DMA_RSP614)。
また、Host I/F130は、ホスト10へリードデータ送信完了応答を送信し(FC_RSP616)、さらにACC160に対してHOST I/Fインバウンドキュー230にDMA応答完了コマンドをエンキューしたことを通知する。
 DMA応答完了コマンドのエンキュー完了の通知を受けたACC160は、前記DMA完了応答コマンドをデキューし(DMA_RSP615)、対応するコマンドタグやコンテキスト情報300を解放する。
 上記した方法によれば、アドレス変換テーブル260をMP140のプロセッサメモリ170(大容量の主記憶メモリ)に配置し、MP140がアドレス変換テーブル260の登録・削除を管理し、アクセラレータ160が並列に当該アドレス変換テーブル260を参照しながらI/O処理を実行する。これにより、アドレス変換テーブル260の大容量化に容易に対応することが可能である。
 次に、図7を用いて説明したシステム動作に対応するストレージ装置を構成する各部の動作について説明を図9~図13を用いて実施する。なお、各部の動作については、Table entry601を設定した後の動作である。
 C-1.Host I/F130の動作説明
 始めに、図9を用いてHost I/F130の動作について説明する。Host I/F130はホスト10からのFCコマンドを受信するまで、FCコマンド以外の処理を行いつつ、待機する(S101)。FCコマンド以外の処理については、本実施例の処理とは直接関係がないため、詳細については省略する。
 ホスト10からのFCコマンドを受信すると(S101:Yes)、FCコマンドの内容(リード要求またはライト要求等)や送信元のホストの情報などをプロセッサメモリ170のHost I/Fインバウンドキュー230にエンキューする(S102)。次に、Host I/Fインバウンドキュー230にFCコマンドをエンキューしたことを、ACC160に通知する(S103)。
 次にHost I/F130はACC160からリード要求の対象となるデータをプロセッサメモリ170の一時バッファデータ270に格納が完了した旨の通知があるまで待機する(S104)。ACC160からの通知を受けた場合(S104:Yes)、Host I/F130はプロセッサメモリ170に格納されたデータをデキューし(S105)、ホスト10へ送信する(S106)。ホスト10へリードデータを送信した後、ホスト10にデータを送信を完了したことをACC160に通知する(S107)。また、ホスト10に対してI/O応答を完了したことを示すコマンド(FC_RSP)を送信し、I/O処理を終了する。
 C-2.ACC160の動作説明
 ACC160の動作を説明する前に、ACC160が備えるアーキテクチャの詳細を説明する。図10は、実施例1に係るACC160のアーキテクチャを示している。
 ACC160は、FCコマンドフェッチ部710と、FCコマンド解析部720と、アドレス検索部730と、SSDコマンド発行部740と、コンプリーション処理部750と、PCIEエンドポイントコア760と、内部バス770と、内部メモリ380から構成される。また、FCコマンドフェッチ部710と、FCコマンド解析部720と、アドレス検索部730と、SSDコマンド発行部740と、コンプリーション処理部750とは図示しないバスで接続され、データの送受信が可能である。
 なお、内部メモリ380にコンテキスト情報テーブル300、LUN-LDEV変換テーブル310等が格納されているように図示されている。しかし、内部メモリに相当する構成を各部が備えていてもよい。より具体的に説明するならば、FCコマンド解析部720がLUN-LDEV変換テーブル310とS_ID検索テーブル320を備え、SSDコマンド発行部740がコマンドタグ管理テーブル330を備え、コンプリーション処理部750がSSDコンプリーションキュー(ACC)340を備えていてもよい。
 FCコマンドフェッチ部710は、コマンドのデキューを実行し、デキューしたコマンドにキュー番号を付加したコンテキスト情報を作成し、次のFCコマンド解析部720に作成した情報を渡す。
 FCコマンド解析部720は、作成されたコンテキスト情報を解析して、作成された情報がFCコマンドであり、かつ、リードコマンドであると判定した場合、FCコマンドのSourceIDを抽出する。次に、SourceID検索テーブル320に抽出したSourceIDに一致するものがあるかを検索する。また、FCコマンド解析部720は、LUNを抽出し、LUN-LDEV変換テーブル310を参照して、LDEV番号を検索する。次にFCコマンド解析部720は、LDEV番号(あるいはLDEV番号とLBAのハッシュ値)を付加したコンテキスト情報を作成し、次のアドレス検索部730にコンテキスト情報を渡す。
 なお、FCコマンド解析部720は、コンテキスト情報を解析して、後述するDMA完了応答コマンドであると判定された場合、コマンドタグ解放要求とともに当該コンテキスト情報をSSDコマンド発行部740へ渡す。また、その他エラー系のコマンドであった場合は、図示しないエラー処理部に当該コンテキスト情報を渡す。
 アドレス検索部730は、受け取ったコンテキスト情報をサブシーケンサ731に振り分ける。サブシーケンサ731は、受け取ったコンテキスト情報を参照して、アドレス変換テーブル260へのリード要求を発行し、テーブルエントリを取得する。次にサブシーケンサ731は、当該テーブルエントリとコンテキスト情報にあるLDEV番号およびSLOT番号の一致比較を実施し、ヒット/ミス判定を実施する。次にサブシーケンサ731は、テーブルエントリとヒット/ミス判定を付加したコンテキスト情報を作成し、次のSSDコマンド発行部740にコンテキスト情報渡す。
 また、アドレス検索部730は、複数のサブシーケンサ731を備えており、多重にアドレス検索を実施できる。サブシーケンサ731はそれぞれ独立して動作ができるため、FCコマンドが複数受信した場合であっても、アドレス検索部730はサブシーケンサ731にそれぞれを振り分けることができる。なお、アドレス検索部730は、複数受信したFCコマンドを順番に複数のサブシーケンサ731に振り分けてもよいし、サブシーケンサのFCコマンドの処理状況を考慮して空いているものに振り分けてもよいし、サブシーケンサ731にそれぞれ優先順位をつけてFCコマンドを振り分けてもよいし、FCコマンドの優先順位(例えば、優先して処理すべき送信元ホストが設定されている場合)によって振り分けてもよい。また、サブシーケンサ731の個数については、ACC160の性能や、システムのI/O性能に依存する。
 SSDコマンド発行部740は、受け取ったコンテキスト情報を参照して、ヒット判定の場合、コマンドタグ管理テーブル330を参照してコマンドタグを当該コンテキスト情報に割り当てる。また、SSDコマンド発行部740は、前記コンテキスト情報を参照して、前記コマンドタグをSSDコマンド識別番号に設定したSSDコマンドを作成し、SSDサブミッションキュー(ACC)285にエンキューする。また、SSDコマンド発行部740は、前記SSDコマンドを発行したSSD190のSSD識別番号503を付加したコンテキスト情報を作成し、前記コマンドタグを格納先アドレスとしてコンテキスト情報テーブル300に格納する。
 なお、SSDコマンド発行部740は、後述するFCコマンド解析部720よりコマンドタグ解放要求を受け取った場合、コマンドタグ管理テーブル330に対してコマンドタグ解放処理を実施する。
 コンプリーション処理部750は、SSD190から発行されるコンプリーションエントリをSSDコンプリーションキュー(ACC)340より受け取る。次にコンプリーション処理部750は、当該コンプリーションエントリに含まれるSSDコマンド識別番号を参照して、対応するコンテキスト情報をコンテキスト情報テーブル300から読み出す。次にコンプリーション処理部750は、当該コンテキスト情報を参照して、DMA要求コマンドを作成し、Host I/Fアウトバウンドキュー240にエンキューする。
 内部バス770は、FCコマンドフェッチ部710と、FCコマンド解析部720と、アドレス検索部730と、SSDコマンド発行部740と、コンプリーション処理部750と、PCIeエンドポイントコア760と、を相互に接続するバスである。また、内部バスは、アドレスマップを参照して、転送先モジュールを判定するスイッチ機能を備えており、エンドポイントから送られたコマンドを適切な処理部まで転送する。
 PCIeエンドポイントコア760は、FCコマンドフェッチ部700と、FCコマンド解析部710と、アドレス検索部720と、SSDコマンド発行部730が、ACC160外部へのコマンド等の入出力の中継をする。
 次に、ACC160の動作について図11と図12を用いて説明する。ACC160はHost I/F130からエントリエンキュー完了の通信を受けるまで、待機する(S201)。Host I/F130からエントリエンキュー完了の通信を受けると(S201:Yes)、プロセッサメモリ170に格納されたホスト10からのコマンドのデキューを実行する(S202)。
 次に、ACC160は、デキューしたコマンドを解析し、HOST I/F130から通知された内容を確認する(S203)。Host I/F130からのエラー系の通知がされた場合は、ACC160はエラー処理を実行する(S204)。また、Host I/F130からリード応答が完了した旨の通知(DMA_RSP)であった場合は、コンテキスト情報の解放する処理を行う(S205)。通常、コンテキスト情報の解放通知は、リード処理が完了した後で通知される。また、Host I/F130からFCコマンドが通知されら場合は、内容に基づいて、コンテキスト情報を作成する(S206)。
 次に、受信したデキューしたFCコマンドの内容がFCコマンドかつリードコマンドか否かを判定する(S207)。FCコマンドかつリードコマンドではない場合は、ACC160が処理をするコマンドではないと判断し(S207:No)、ホスト10からのFCコマンドをMP140に対応させるために、MP140へ送信する(S217)。MP140の処理については後述する。
 FCコマンドかつリードコマンドであった場合(S207:Yes)、ACC160はACC160の内部メモリ380に格納されているS_ID検索テーブル420を用いてとFCコマンドのS_IDが一致するか否かを判定する(S208)。S_IDが一致しない場合(S208:No)、このI/O処理はACC160が処理をするものではないと判定し、MP140に送信する(S217)。
 S_IDが一致する場合は次のフローに遷移し(S209:Yes)、内部メモリ380に格納されているLUN-LDEV変換テーブル310を用いて、LDEV番号が検索できたか否かを判断する(S209)。LDEV番号が検索できていなかった場合は(S209:No)、当該処理はACC160が実施するものではないと判断し、MP140へ送信をする(S217)。
 LDEV番号が検索できた場合は、I/O処理はACC160が処理するものであると判断し、ACC160内のサブシーケンサ731にI/O処理要求(コンテキスト情報)を振り分ける(S210)。振り分けられたACC160内のサブシーケンサ731は、プロセッサメモリ170にあるアドレス変換テーブル260に対してリード要求を実施する(S211)。
 このとき、サブシーケンサ731は、コンテキスト情報を用いてアドレス変換テーブル260の特定の情報がヒットするか否かを判断する(S212)。仮にアドレス変換テーブル260にヒットしない場合は(S212:No)、I/O処理をACC160で行うのではなくMP140で行うために、MPに情報を送信する(S217)。
 アドレス変換テーブルにヒットした場合(S212:Yes)は、アドレス変換テーブル260から読み出していた所定の情報を含むコンテキスト情報を、コマンド情報テーブルに格納するとともに、さらに、このコンテキスト情報を一意に識別するためのコマンドタグを割り当てる(S213)。
 次に、リードコマンドを処理するために、ACC160はSSD190にリード対象となっているデータをプロセッサメモリ170の一時バッファデータ270に送信させる(ステージング)処理を実施する。アドレス変換テーブル260から読み取った情報に基づき、リード対象となるデータを保有しているSSD190を特定し、当該SSD190にデータを送信させるようにするために必要な情報をプロセッサメモリ170のSSDサブミッションキュー(ACC)285にSSDコマンドをエンキューし、SSD190にSSDコマンドをエンキューした旨を通知する(S214)。
 次に、ACC160はSSD190からのステージングを完了した旨の通知(コンプリーションエントリ)があるまで待機をする(S215)。SSDからプロセッサメモリにリード対象となっているデータのステージング処理が完了した旨の報告を受けると(S215:Yes)、Host I/F130へ、ステージングが完了した旨の報告を行う(S216)。
 この後、図11のフローに戻り、Host I/F130からホスト10へのリード応答が完了した旨の通知があるまで待機をし(S201)、完了通知を受信したと判断ができた後は(S203)、当該通信で用いたコンテキスト情報テーブルの内容を解放する(S205)。
 以上の処理をACC160は実施している。上記で示したように、本実施例によるACC160は、コマンドフェッチステージ、コマンド解析ステージ、アドレス検索ステージ、SSDコマンド発行ステージ、SSD完了応答処理ステージの5ステージから構成されるパイプライン処理構造を特徴とし、高いスループット性能を実現可能である。
 また、アドレス検索処理は、ACC160の外部にあるプロセッサメモリ170にリード要求を発行する必要があるため、一般的にレイテンシが大きくなり、パイプラインがストールして処理効率が低下する課題がある。本発明は、この課題に対して、アドレス検索ステージにおいて、複数のサブシーケンサ731による多重アドレス検索処理構造を特徴として、パイプラインストールを発生させない検索処理を実現可能としている。
 また、一般的にストレージ装置においては、ホスト10から入力されるI/O要求数を制御することはできないため、Host I/Fインバウンドキュー230は、柔軟に構成できなければならない。そのため、Host I/Fインバウンドキュー230は、プロセッサメモリ170上でソフトウェアにより作成されるソフトウェアキューとして構成されるのが好ましい。しかし一方でACC160が使用するSSDキュー(SSDサブミッションキュー(ACC)285、あるいは、SSDコンプリーションキュー(ACC)340)は、ストレージ装置にてエンキューするコマンド数を制御可能である。本発明によるACC160は、このようなストレージ装置の特性を考慮して、SSDコンプリーションキュー(ACC)340をACC160の内部メモリ380にハードキューとして持つ構造を特徴とし、低レイテンシなデキュー処理を実現可能としている。
 また、SSDコンプリーションキュー(ACC)340をプロセッサメモリ170上に配置しないことにより、デキューに必要なプロセッサメモリ帯域やPCIeトランザクション数を消費しない効果もある。
 また、SSDコンプリーションキュー(ACC)340は、SSD#n毎に内部メモリ380に領域を確保せずに、複数SSD#nに共通のCQとしてFIFOメモリで構成してもよい。複数SSD#nのCQを単一のFIFOメモリで構成する場合、一般的にSSD台数の増大に比例して増えるCQの制御コストを一定にすることが可能となる効果がある。
 C-3.SSD190の動作説明
 次に、SSD190の動作について図13を用いて説明する。なお、SSD190は図示しないCPUやメモリをもつコントローラを備えているため、実際の動作はそのコントローラが実施しているが、説明を簡易にするためSSD190が行っているものとして説明をする。
 SSD190は、ACC160からSSDサブミッションキュー(ACC)285にエンキュー(SSDコマンド)をしたことを通知されるまで待機する(S301)。ACC160から通知があった場合(S301:Yes)、SSDサブミッションキュー(ACC)285に対してエンキューされたキューのデキューを実行する。
 次にSSD190はデキューしたキューエントリの解析をする(S302)。その解析の結果、デキューしたキューエントリが要求する動作がリード要求ではない場合は(S303:No)、リード以外の処理を実行する(S306)。リード要求であった場合(S303:Yes)、SSD190はリード要求が対象としているリードデータをプロセッサメモリ170の一時バッファデータ270にステージングする(S304)。データのステージングが完了した後、SSD190はリードデータのステージングが完了したことをACC160に報告する為、ACC160のSSDコンプリーションキュー(ACC)340にエンキューする(S350)。
 なお、図13ではACC160からの通知を説明したが、MP140からのI/O要求に対しても同様に処理をする。また、MP140とACC160からの通知はSSD190の図示しないコントローラのメモリ領域に格納されており、MP140とACC160の通知が複数格納されることがある。その場合は、例えば、SSD190のコントローラはラウンドロビンにより各通知を処理してもよいし、MP140またはACC160のどちらかを優先させて処理するようにしてもよい。
 C-4.MP140の動作説明
 次に本実施例のMP140の動作について説明する。ここでは、図12に示したACC160からMP140へ送信された内容に応じてMP140がどのような動作を行うかについて説明する。
 S207にて通知内容がFCコマンドかつリードコマンドでなかった場合、通知を受けたMP140は、FCコマンドのオペレーションコードを確認し、指定された動作を実行する。例えば、オペレーションコードがライトコマンドであった場合はライト処理を行い、初期化コマンドで会った場合は初期化処理を実行する。
 S208にてS_IDが一致しないまたはS209にてLDEV番号が検索できなかった場合、MP140は、FCコマンドの該当箇所を確認する。そして、当該通知は通常ありえない通知であると判断し、エラー処理を実行する。具体的には、S_IDが一致しない場合はホストが特定できない場合であり、LDEV番号が検索できなかった場合は、割り当てられていないLDEV番号が通知されているため、MP140は通常の動作では状態が起こっているとしてエラー処理をする。
 S212にてアドレス変換テーブル260でヒットしなかった場合、MP140は、FCコマンドを解析し、I/O処理を行う。MP140は、シンプロビジョニング管理情報やRAID構成情報、キャッシュディレクトリなどを管理情報220を参照しながら、アドレス変換を実施し、処理を行う。なお、この処理は公知の内容である為、説明を省略するが、ACC160の時と同様にSSD190との処理を行い、SSDサブミッションキュー(MP)280と、SSSDコンプリーションキュー(MP)290を使用する。換言すると、本願はMP140のI/O処理と、ACC160のI/O処理とでは使用する情報の保管先が異なっているといえる。
 以上の本実施例の構成を備え、処理を行うことにより、物理記憶デバイスが多くあるストレージ装置100において、ホストから複数のリード要求が同時にあった場合であっても、ACC160はそれぞれ独立に扱い処理する(要求を多重に処理する、または、並列に処理するともいう)ことで、順次要求を処理するよりもスループットを向上することができる。。即ち、ストレージ装置100の処理効率が向上する。
 また、 上記の説明では、各実施例の計算機システムが有する各情報について、テーブルやリストなどの表現で説明することがある。しかし、各情報のデータ構造は限定されず、他のデータ構造であってもよい。各情報はデータ構造に依存しないため、例えば、「kkkテーブル」または「kkkリスト」を「kkk情報」と呼ぶことができる。
 また、上記の説明において、プロセッサは、プログラムを実行し、記憶資源(例えば、メモリ)及び/又は通信インターフェイスデバイス(例えば、通信ポート)等を用いながら処理を行う。処理の主体について、上記の説明では各種のプログラムを主体とする場合があるが、プログラムを実行するプロセッサを主体としてもよい。また、プロセッサを主体とする処理は、1以上のプログラムを実行する事によりおこなわれると解釈されてもよい。プロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、処理の一部(例えば、暗号化/復号化、圧縮/伸張)を実行するハードウェア回路を含んでもよい。
 また、上記の説明において、ストレージ装置は、1つ以上の物理記憶デバイスと、物理記憶デバイスを制御するストレージコントローラとを有する。ストレージコントローラは、1つ以上の物理記憶デバイスに基づきホストコンピュータに論理ボリュームを提供する。論理ボリュームは、実論理ボリュームであっても良いし、仮想論理ボリュームであっても良い。実論理ボリュームは、ストレージ装置が有する1以上の物理的な記憶デバイスに基づく論理ボリュームである。仮想論理ボリュームとしては、例えば、TP(Thin Provisioning)-論理ボリュームと、スナップショット論理ボリュームとがあってよい。
 また、上記の説明では、物理記憶デバイスとして、不揮発性半導体メモリの1つであるフラッシュドライブを例にとって説明する。フラッシュドライブは、例えばSSD(Solid State Drive)である。なお、物理的な記憶デバイスは、不揮発性の物理的な記憶デバイスであれば、不揮発性半導体の記憶デバイスでなくてもよく、例えば、HDD(Hard Disk Drive)であってよい。また、複数の物理的な記憶デバイスにより1以上のRAIDグループ(Redundant Array of Independent (or Inexpensive) Disks)が構成されてよい(RAIDグループはパリティグループと呼ばれてもよい)。
 また、上記の説明では、同種の要素を区別しないで説明する場合には、参照符号を使用し、同種の要素を区別して説明する場合には、その要素の参照符号に代えて、その要素に割り振られた識別子(例えば番号及び符号のうちの少なくとも1つ)を使用することがある。
10・・・ホストサーバ、30・・・ネットワーク、100・・・ストレージ装置、110、120・・・ストレージコントローラ、130・・・ホストインターフェース、140・・・プロセッサ、150・・・スイッチ、160・・・アクセラレータプロセッサ、170・・・プロセッサメモリ、190・・・物理記憶デバイス

Claims (12)

  1.  データを記憶する記憶装置と、
     ネットワークを介してホストと通信を行うホストインターフェースと、
     プログラムに基づいて処理を実行する第1の制御部と、
     前記第1の制御部に接続されたメモリと、
     前記ホストインターフェースおよび前記第1の制御部と接続し、ハードウェアに基づいて処理を実行する第2の制御部とを備え、
     前記メモリは、前記論理ボリュームと前記記憶装置とを関連付けるアドレス変換情報を有し、
     前記ホストインターフェースは、
      前記ネットワークを介して接続する前記ホストから第1のコマンドと第2のコマンドを受信すると、
       前記メモリに前記第1のコマンドと前記第2のコマンドとをそれぞれ格納し、
       前記第1のコマンドと前記第2のコマンドの格納完了を前記第2の制御部に通知し、
     前記第2の制御部は、前記メモリに格納された前記第1のコマンドと前記第2のコマンドとを取り出し、
      取り出した前記第1のコマンドと前記第2のコマンドを解析し、解析した前記第1のコマンドと前記第2のコマンドとがリード要求である場合は、前記第1のコマンドと前記第2のコマンドに基づいて多重に前記アドレス変換情報にアクセスし、
      前記第1のコマンドが対象とする第1のリードデータと前記第2のコマンドが対象とする第2のリードデータを格納する前記記憶装置を特定することを特徴とするストレージ装置。
  2.  請求項1に記載のストレージ装置であって、
     前記メモリは、
      前記記憶装置から送信される前記第1のリードデータまたは前記第2のリードデータを格納する一時バッファ領域と、
      前記第1のリードデータまたは前記第2のリードデータを前記記憶装置から前記一時バッファ領域に送信を指示する送信指示を格納するサブミッション情報領域と、を備え、
     前記第2の制御部は、
      前記第2の制御部からの送信指示により前記第1のリードデータまたは前記第2のリードデータのいずれかが前記一時バッファ領域に格納されたことを示す格納完了情報を格納するアクセラレータコンプリーション情報領域とを備えることを特徴とするストレージ装置。
  3.  請求項2に記載のストレージ装置であって、
     前記第2の制御部は前記第1のコマンドと前記第2のコマンドを解析するコマンド解析部を備え、
     前記コマンド解析部は、解析した前記第1のコマンドまたは前記第2のコマンドが前記第2の制御部で実行するコマンドではないと判断すると、前記第1の制御部に向けて前記第1のコマンドまたは前記第2のコマンドの実行を通知することを特徴とするストレージ装置。
  4.  請求項3に記載のストレージ装置であって、
     前記第1の制御部は、前記通知を受信すると、前記第1のコマンドまたは前記第2のコマンドを前記メモリから取り出して解析を実行し、前記第1のリードデータまたは第2のリードデータを格納する前記記憶装置を特定し、
     前記メモリは、前記第一の制御部からの送信指示により前記第1のリードデータまたは前記第2のリードデータのいずれかが前記一時バッファ領域に格納されたことを示す格納完了情報を格納するCPUコンプリーション情報領域を備えることを特徴とするストレージ装置。
  5.  請求項2に記載のストレージ装置であって、
     前記記憶装置を複数備え、
     前記アクセラレータコンプリーション情報領域は、複数の前記記憶装置から格納される複数の前記格納完了情報を格納することを特徴とするストレージ装置。
  6.  請求項1に記載のストレージ装置であって、
     前記第2の制御部は、前記ホストから送信される前記第1のコマンドおよび前記第2のコマンドを含む複数のコマンドに基づき前記アドレス変換情報にアクセスする独立した複数のサブシーケンサを備えることを特徴とするストレージ装置。
  7.  請求項6に記載のストレージ装置であって、
     前記第2の制御部は、前記メモリから取り出した前記複数のコマンドに、前記複数のコマンドを特定する識別情報と、前記複数のコマンドがリード要求の場合、前記リード要求が指定するリードデータを格納する前記記憶装置を特定する特定情報とを含む情報をコンテキスト情報として記憶することを特徴とするストレージ装置。
  8.  請求項7に記載のストレージ装置であって、
     前記第2の制御部は、
      前記複数のコマンドを前記メモリから取り出すコマンドフェッチ部と、
      前記コマンドフェッチ部により取り出された前記複数のコマンドを解析するコマンド解析部と、
      前記複数のコマンドのうち、リード要求として前記コマンド解析部により解析されたコマンドに基づき前記アドレス変換情報にアクセスする前記複数のサブシーケンサを備えるアドレス検索部と、
      前記アドレス検索部より前記アドレス変換情報により特定する前記記憶装置に向けて前記リード要求を伝えるコマンドの発行と、前記複数のコマンドの解析情報を前記コンテキスト情報として記憶させるコマンド発行部と、
      前記コマンド発行部のコマンドに基づいて前記記憶装置から前記リード要求が対象としているリードデータが前記メモリに格納されたことを示す情報と前記コンテキスト情報を用いてリードデータの準備完了を前記ホストインターフェースに通知するコンプリーション処理部と、を備えることを特徴とするストレージ装置。
  9.  請求項8に記載のストレージ装置であって、
     前記コマンドフェッチ部と、前記コマンド解析部と、前記アドレス探索部と、前記コマンド発行部と、前記コンプリーション処理部とはパイプライン処理により前記複数のコマンドを処理することを特徴とするストレージ装置。
  10.  データを記憶する記憶装置と、
     ネットワークを介してホストと通信を行うホストインターフェースと、
     プログラムに基づいて処理を実行する第1の制御部と、
     前記ホストインターフェースおよび前記第1の制御部と接続し、ハードウェアに基づいて処理を実行する第2の制御部アクセラレータと、
     前記第一の制御部に接続する第1のメモリと、
     前記アクセラレータに接続する第2のメモリと、
    を備え、
     前記第1のメモリは、
      前記記憶装置から送信された、前記ホストからのリード要求に基づくリードデータを一時的に格納する一時バッファ領域と、
      前記第1の制御部及び前記第2の制御部から前記記憶装置に対して前記一時バッファ領域に前記リードデータの格納を指示する指示情報を格納するサブミッション情報領域と、
      前記指示情報が前記第1の制御部によって格納されている場合に、前記記憶装置が前記一時バッファ領域に前記リードデータを格納したことを示す格納完了情報を格納する第1のコンプリーション情報領域と、を有し、
     前記第2のメモリは、
      前記指示情報が前記第2の制御部によって格納されている場合に、前記記憶装置が前記一時バッファ領域に前記リードデータを格納したことを示す格納完了情報を格納する第2のコンプリーション情報領域とを有すること、を特徴とするストレージ装置。
  11.  請求項10に記載のストレージ装置であって、
     前記第2の制御部は、前記ホストからのリード要求を解析し、前記リード要求は前記第2の制御部により処理をするまたは前記第1の制御部により処理をするかを判断することを特徴とするストレージ装置。
  12.  請求項10に記載のストレージ装置であって、
     前記記憶装置を複数備え、
     前記第1のコンプリーション情報領域および前記第2のコンプリーション情報領域は、複数の前記記憶装置から格納される複数の前記格納完了情報を格納することを特徴とするストレージ装置。
PCT/JP2015/080312 2015-10-28 2015-10-28 ストレージ装置 WO2017072868A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/080312 WO2017072868A1 (ja) 2015-10-28 2015-10-28 ストレージ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/080312 WO2017072868A1 (ja) 2015-10-28 2015-10-28 ストレージ装置

Publications (1)

Publication Number Publication Date
WO2017072868A1 true WO2017072868A1 (ja) 2017-05-04

Family

ID=58629972

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/080312 WO2017072868A1 (ja) 2015-10-28 2015-10-28 ストレージ装置

Country Status (1)

Country Link
WO (1) WO2017072868A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111722791A (zh) * 2019-03-22 2020-09-29 株式会社日立制作所 信息处理系统、存储系统和数据传输方法
CN113342260A (zh) * 2020-03-02 2021-09-03 慧荣科技股份有限公司 伺服器与应用于伺服器的控制方法
JP7479441B2 (ja) 2020-04-01 2024-05-08 株式会社日立製作所 ストレージ装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013109419A (ja) * 2011-11-17 2013-06-06 Toshiba Corp 情報処理装置
JP2014501950A (ja) * 2010-09-24 2014-01-23 テキサス・メモリー・システムズ・インコーポレイテツド 高速メモリ・システム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014501950A (ja) * 2010-09-24 2014-01-23 テキサス・メモリー・システムズ・インコーポレイテツド 高速メモリ・システム
JP2013109419A (ja) * 2011-11-17 2013-06-06 Toshiba Corp 情報処理装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111722791A (zh) * 2019-03-22 2020-09-29 株式会社日立制作所 信息处理系统、存储系统和数据传输方法
CN111722791B (zh) * 2019-03-22 2024-02-27 株式会社日立制作所 信息处理系统、存储系统和数据传输方法
CN113342260A (zh) * 2020-03-02 2021-09-03 慧荣科技股份有限公司 伺服器与应用于伺服器的控制方法
JP7479441B2 (ja) 2020-04-01 2024-05-08 株式会社日立製作所 ストレージ装置

Similar Documents

Publication Publication Date Title
US10678432B1 (en) User space and kernel space access to memory devices through private queues
US8977781B1 (en) Computer system
US11704059B2 (en) Remote direct attached multiple storage function storage device
US9740409B2 (en) Virtualized storage systems
US8296480B2 (en) Context execution in a media controller architecture
US8966172B2 (en) Processor agnostic data storage in a PCIE based shared storage enviroment
US20160342545A1 (en) Data memory device
US20150261434A1 (en) Storage system and server
US20160259568A1 (en) Method and apparatus for storing data
WO2016038710A1 (ja) ストレージシステム
JP6068676B2 (ja) 計算機システム及び計算機システムの制御方法
US10872036B1 (en) Methods for facilitating efficient storage operations using host-managed solid-state disks and devices thereof
US20110282963A1 (en) Storage device and method of controlling storage device
WO2017023612A1 (en) Emulating a remote direct memory access ('rdma') link between controllers in a storage array
US10452557B2 (en) Storage apparatus, computer system, and method for improved read operation handling
US10817446B1 (en) Optimized multiport NVMe controller for multipath input/output applications
WO2017072868A1 (ja) ストレージ装置
US7003553B2 (en) Storage control system with channel control device having data storage memory and transfer destination circuit which transfers data for accessing target cache area without passing through data storage memory
US11016698B2 (en) Storage system that copies write data to another storage system
US8417858B2 (en) System and method for enabling multiple processors to share multiple SAS wide ports
US20240168876A1 (en) Solving submission queue entry overflow using metadata or data pointers
CN116225315A (zh) 基于pci-e光纤卡的宽带数据高速录取系统、存储架构和方法

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

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP