Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
WO2016020979A1 - Computer system and intermediary device - Google Patents
[go: Go Back, main page]

WO2016020979A1 - Computer system and intermediary device - Google Patents

Computer system and intermediary device Download PDF

Info

Publication number
WO2016020979A1
WO2016020979A1 PCT/JP2014/070562 JP2014070562W WO2016020979A1 WO 2016020979 A1 WO2016020979 A1 WO 2016020979A1 JP 2014070562 W JP2014070562 W JP 2014070562W WO 2016020979 A1 WO2016020979 A1 WO 2016020979A1
Authority
WO
WIPO (PCT)
Prior art keywords
queue
index
entry
entries
information unit
Prior art date
Legal status (The legal status 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 status listed.)
Ceased
Application number
PCT/JP2014/070562
Other languages
French (fr)
Japanese (ja)
Inventor
威雄 吉川
健二 酒井
佳和 村山
江口 賢哲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to PCT/JP2014/070562 priority Critical patent/WO2016020979A1/en
Publication of WO2016020979A1 publication Critical patent/WO2016020979A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt

Definitions

  • the present invention generally relates to queue control in a computer system.
  • a server device hereinafter referred to as a server
  • a storage device hereinafter referred to as storage
  • a server device and a storage device manufactured by different vendors are connected to a communication network (for example, an FC (Fibre Channel) network or an IP). (Internet Protocol)).
  • a communication network for example, an FC (Fibre Channel) network or an IP). (Internet Protocol)
  • Non-Patent Documents 1 and 2 disclose techniques related to PCIe. Specifically, for example, Non-Patent Document 1 discloses a definition of a ring queue for information transfer between a PQI (PCIe architecture Queuing Interface) host and a PQI device. Non-Patent Document 2 discloses the definition of the protocol layer.
  • PCIe PCIe architecture Queuing Interface
  • PCIe architecture Queuing Interface http://www.t10.org/disk/sop-agnd.htm
  • SOP SCSI over PCIe architecture
  • Non-Patent Documents 1 and 2 discloses a queue control for efficiently handling a plurality of queues for communication between a server and a storage controller.
  • An intermediary device that mediates communication of information units is provided between the storage controller and the server.
  • the first device one of the server and the storage controller
  • the mediation device has a plurality of processors and a second queue.
  • a first and a second index are provided for each of the plurality of first queues.
  • the first index is a value indicating the number of stored entries
  • the second index is a value indicating the number of entries constituting the information unit stored in the first queue. If the second index indicates 1 for the first queue corresponding to the first index indicating that the entry exists, the mediation device is the standard length information unit including the entry to be fetched.
  • the second index indicates any integer greater than or equal to 2
  • the information unit including the fetch target entry is an extended-length information unit
  • the number of entries indicated by the second index Is fetched from the first queue
  • the fetched entry is stored in the second queue
  • the entry stored in the second queue is allocated to a processor selected from a plurality of processors in units of information units.
  • the processor performs processing for transferring the information unit constituted by the allocated entry to the second device (the other of the server and the storage controller).
  • FIG. 1 shows a configuration of a computer system according to an embodiment. Indicates the configuration of ASIC (Application Specific Integrated Circuit). It is a schematic diagram of queue control. The flow of storing the information unit in the first queue is shown. The flow of fetching entries from the first queue to the second queue is shown. Indicates the mode register. A part of the flow of I / O processing is shown. The rest of the flow of I / O processing is shown.
  • ASIC Application Specific Integrated Circuit
  • the same reference numerals are assigned to a plurality of similar elements, and reference numerals are used when the elements are not distinguished (for example, the queue control unit 230), and these elements are distinguished.
  • the identification number assigned to the element may be used (for example, queue control unit # 0).
  • FIG. 1 shows a configuration of a computer system according to the embodiment.
  • the computer system 101 includes at least one server 123, at least one storage controller (hereinafter referred to as CTL) 181 and at least one ASIC 111 (Application Specific Integrated Circuit).
  • CTL storage controller
  • ASIC 111 Application Specific Integrated Circuit
  • FIG. 1 a plurality of servers 123, a plurality of ASICs 111, and one CTL 181 are shown. There is one ASIC 111 per server 123.
  • the ASIC 111 is an example of a mediation device.
  • the ASIC 111 is an end point connected to the root complex 125 in the server 123 and the root complex 167 in the CTL 181.
  • the ASIC 111 is viewed as an endpoint from both sides, thereby enabling communication between root complexes.
  • the server 123 is mounted on the server chassis 121.
  • the computer system 101 has at least one server chassis 121.
  • the server chassis 121 includes two or more servers 123 and a PCIe-MUX (multiplexer) 112.
  • the PCIe-MUX 112 switches the connection between the two or more ASICs 111 and the CTL 181.
  • An ASIC 111 is connected to each server 123, and a PCIe-MUX 112 is connected to the ASIC 111 of each server 123.
  • the connection (communication) between the PCIe-MUX 112 and the CTL 181 is a connection (communication) according to PCIe.
  • Each server 123 and CTL 181 can transmit and receive an I / O (Input / Output) request (an example of an information unit) via the ASIC 111 and the PCIe-MUX 112.
  • I / O Input / Output
  • the CTL 181 is mounted on the storage chassis 141.
  • the storage chassis 141 has at least one storage device (for example, a nonvolatile storage device) 123 in addition to the CTL 181.
  • Each storage device 123 is, for example, an HDD (Hard Disk Drive) or an SSD (Solid State Drive).
  • a storage system including a CTL 181 and one or more storage devices 123 is constructed in the storage chassis 141.
  • the CTL 181 includes a front end interface (FE-I / F) 151, a back end interface (BE-I / F) 153, a memory 161, and a processor (hereinafter referred to as a storage processor) 163 connected thereto.
  • the FE-I / F 151 is an interface device for communicating with a device on the front end side (the server 123 in this embodiment).
  • the BE-I / F 153 is an interface device for communicating with a device on the back end side (the storage device 123 in this embodiment).
  • the memory 161 has an area for storing control information for controlling the operation of the CTL 181 and a cache area for temporarily storing data input / output to / from the storage device 123.
  • the storage processor 163 controls the operation of the CTL 181 by executing a computer program (for example, an operating system and firmware).
  • FIG. 2 shows the configuration of the ASIC 111.
  • the ASIC 111 includes a SW 201, a first I / F 250, a second I / F 240, a mode register 204, a plurality of queue control units 230, a plurality of cores (an example of a processor) 210, and a plurality of DMACs (Dynamic Memory Access Controllers). 220).
  • a first I / F 250, a mode register 204, a second I / F 240, a plurality of queue control units 230, and a plurality of DMACs 220 are connected to the SW 201, and the SW 201 switches connection between these devices.
  • a plurality of cores 210 are interposed between the queue control unit 230 and the DMAC 220.
  • Each queue control unit 230 is connected to any of the plurality of cores 210.
  • Each core 210 is connected to a part of the plurality of DMACs 220 (for example, two DMACs 220).
  • Each core 210 executes firmware, for example.
  • the first I / F 250 is an interface device (for example, a port) connected to the server 123.
  • the second I / F 240 is an interface device (for example, a port) connected to the CTL 181.
  • there is one first I / F 250 and there are two second I / Fs 240.
  • the information unit fetched by the queue control unit 230 from the server 123 via the first I / F 250 is duplexed by the queue control unit 230, and the duplexed information units (two information units) are their information. It may be transferred to the CTL 181 via the two second I / Fs 240 by the core 210 to which the unit is allocated.
  • the queue control unit 230 performs queue control.
  • the core 210 performs processing for transferring information units.
  • the DMAC 220 performs DMA transfer of information units.
  • the mode register 204 stores a mode value that is a value for a server or a CTL for each of at least one queue control unit 230 of the plurality of queue control units 230. By updating the mode value, the queue control unit 230 corresponding to the mode value can be switched between a server and a CTL. Each of these processes will be described later.
  • FIG. 3 is a schematic diagram of queue control.
  • the transmission source of the information unit which is one of the server 123 and the CTL 181 is referred to as “first device”, and the transmission destination device of the information unit is referred to as “second device”.
  • Any server 123 and any CTL 181 may be either the first device or the second device.
  • the first device is the CTL 181 and the second device is the server 123.
  • the second device may be the CTL 181 or another server 123.
  • the second device may be another CTL 181.
  • Each queue control unit 230 in the ASIC 111 corresponds to one first device.
  • the queue control unit 230 # 0 in FIG. 3 corresponds to the CTL 181 and another queue control unit 230 # 3 (see FIG. 2) may correspond to the server 123 # 0 (see FIG. 1). .
  • the first device has a plurality of first queues 351 and a plurality of notification indexes (denoted as “C index 353” in FIG. 3) corresponding to the plurality of first queues 351, respectively.
  • Each first queue 351 and each C index 353 may be provided on, for example, a storage area (for example, a memory) included in the first device.
  • the information device to be transmitted is stored in the first queue 351 selected from the plurality of first queues 351 in units of entries by the first device.
  • an “entry” is an element obtained by dividing an information unit.
  • the entry length is a predetermined length (for example, 64 bytes).
  • the number of entries constituting the information unit may be 1 or may be 2 or more.
  • the information unit from the server 123 to the CTL 181 has two transfer destination addresses for duplication. Therefore, the length of the information unit is longer (larger in size) than the standard length information unit. It can be an information unit.
  • the information unit from the CTL 181 to the server 123 can be a standard length information unit because it has one transfer destination address.
  • the length of the information unit depends on the type of the transmission source device (first device) and the type of the transmission destination device (second device), but instead of or in addition to that viewpoint, The length of the information unit may vary depending on other aspects (for example, the type of information unit).
  • the first device stores the plurality of entries in the selected first queue 351 successively. “Continuously storing a plurality of entries obtained from one information unit” means that the plurality of entries are stored in the selected first queue 351 until the storage is completed. This means that the information unit entry is not stored in the first queue 351. Therefore, in the first queue 351, entries constituting the same information unit are continuous.
  • the length of the standard length information unit is equal to or shorter than the entry length, and may be a length that can accommodate an argument of a frequently used type I / O command.
  • the length of the extended length information unit may be N times the entry length (N is an integer of 2 or more).
  • the C index 353 indicates a value related to the entry fetched from the first queue 351 corresponding to the C index 353.
  • the C index 353 is used when an entry has been fetched from the first queue 351 corresponding to the C index 353 by the queue control unit 230 or when an entry has been stored in the second queue 371 described later (for example, the entry is information
  • the queue control unit 230 updates the data when it is fetched or stored in units. That is, the update of the C index 353 corresponds to a notification that the entry (information unit) has been fetched or stored from the first queue 351 corresponding to the C index 353.
  • the first device may return the C index 353 to a predetermined value.
  • At least one of the plurality of C indexes 353 is replaced with the first device instead of the first device, for example, the ASIC 111 (for example, the first device) interposed between the second device and the first device. May exist in the queue control unit 230) corresponding to.
  • the queue control unit 230 includes a base address register 372, a storage index (indicated as “P index” in FIG. 3) 361, and a difference index for each first queue 351 included in the first device corresponding to the queue control unit 230. (Denoted as “D index” in FIG. 3) 363. These registers and indexes may be provided in a storage area (for example, a memory) included in the queue control unit 230.
  • the base address register 372 indicates the address of the corresponding first queue 351.
  • the P index 361 is an example of a first index, and is a value indicating a difference from the pointer indicated by the base address register 372 of the corresponding first queue 351, in other words, an entry stored in the corresponding first queue 351.
  • the D index 363 is an example of a second index, and is a value indicating the number of entries (the number of entries stored consecutively) constituting the information unit stored in the corresponding first queue 351. At least one of the plurality of P indexes 361 and the plurality of D indexes 363 corresponding to the plurality of first queues 351 is placed in a place other than the queue control unit 230, for example, the first device, instead of the queue control unit 230. May be present.
  • a plurality of D indexes 363 may exist for each first queue 351, and the sum of a plurality of values indicated by the plurality of D indexes 363 is the number of entries in the first queue 351, that is, the P index 361.
  • the value indicated by The D index 363 may be realized as a ring buffer, for example. Further, when the number of entries in the first queue 351 is known from the values of the plurality of D indexes 363, the P index 361 may be omitted.
  • the queue control unit 230 further includes an entry length register 373 indicating the entry length, and a depth register 375 indicating the depth of the first queue 351 (the maximum number of entries that can be stored in the first queue 351).
  • the entry length register 373 and the depth register 375 may be common to the plurality of first queues 351. This is because the length of each entry is the same, and the depth of each first queue 351 is the same. If the entry length and the depth of the first queue 351 are different for each first queue 351, the queue control unit 230 may have an entry length register 373 and a depth register 375 for each first queue 351.
  • the value of the entry length register 373 and the value of the depth register 375 may each be a fixed value or a variable value.
  • the queue control unit 230 can select the first queue 351 that is the fetch source based on the relationship between the value indicated by the P index 361 and the value indicated by the depth register 375. For example, the queue control unit 230 can preferentially fetch entries from the first queue 351 where the difference between the value indicated by the P index 361 and the value indicated by the depth register 375 is the smallest. Further, the queue control unit 230 can fetch information of a size as indicated by the entry length register 373, that is, an entry from the first queue 351. Further, the queue control unit 230 can specify the location from which the entry is fetched for each first queue 351 from the value indicated by the base address register 372 and the value indicated by the P index 361.
  • the queue control unit 230 has a second queue 371 corresponding to the plurality of first queues 351.
  • the queue control unit 230 fetches an entry from one of the plurality of first queues 351, and stores the fetched entry in the second queue 371 corresponding to the plurality of first queues 351.
  • the queue control unit 230 converts the entries stored in the second queue 371 into a plurality of cores 210 corresponding to the second queue 371 (a plurality of cores connected to the queue control unit 230 having the second queue 371). 210).
  • the second queue 371 corresponds to the plurality of cores 210.
  • the number of second queues 371 may be the same as the number of paths between the queue control unit 230 and the first device having a plurality of first queues 351 corresponding to the second queue 371. This is because there is one storage location for entries fetched through one pass. Therefore, if there are more second queues 371 than paths, an extra second queue 371 is generated, and if there are fewer second queues 371 than paths, storing entries in the second queue 371 becomes a bottleneck.
  • FIFO First In First Out
  • the queue control unit 230 and the first device may correspond one-to-one, and when the first device includes a plurality of first queues 351, the queue control unit 230 and the first queue 351 group (A plurality of first queues 351) may correspond one-to-one.
  • a second queue 371 in which a plurality of first queues 351 of the first device (for example, CTL 181) are integrated into one by hardware is provided in the queue control unit 230 of the ASIC 111, and the queue control unit 230 accumulates in the second queue 371. Allotted entries are allocated to a plurality of cores 210.
  • the number of entries constituting the information unit is specified by looking at the information length written in the header of the information unit (for example, the request length when the information unit is a request), A process of fetching a specified number of entries from the second queue and allocating them to a plurality of cores can be considered.
  • the presence or absence of the header of the information unit is checked for each entry, and as a result, the queue control unit cannot fetch entries from the plurality of first queues 351 continuously. For this reason, the performance impact is great.
  • a process for fetching entries from the first queue to the second queue without considering the information length of the information unit can be considered.
  • the information length of the information unit the number of entries constituting the information unit
  • the second queue there is a possibility that a plurality of entries constituting one information unit are not arranged in succession, that is, the continuity of information units may be lost. Then, it is difficult to transfer entries in units of information units.
  • a D index 363 representing the number of consecutive entries constituting the information unit stored in the first queue 351 is provided.
  • the queue control unit 230 fetches entries for the value indicated by the D index 363 from the first queue 351, and stores the fetched entries in the second queue 371. This eliminates the need to check the information length included in the header of the information unit in the first queue 351. Therefore, the ASIC 111 can continuously fetch entries from the plurality of first queues 351.
  • Such queue control is performed by a hardware circuit such as the queue control unit 230 in the ASIC 111. For this reason, it is not necessary for the core 210 in the ASIC 111 to perform queue control. For this reason, an improvement in system performance can be expected.
  • the queue control unit 230 continuously fetches and fetches entries corresponding to the value indicated by the D index 363 (all entries included in one information unit) in the second queue. Stored in 371. Meanwhile, the queue control unit 230 does not fetch an entry from the other first queue 351. As a result, in the second queue 371, an entry constituting another information unit is inserted between the first entry and the second entry constituting the information unit, that is, the continuity of the information unit is lost. Can be avoided. As a result, in the case of an extended length information unit that cannot be interpreted unless a plurality of entries are read, some entries are stored discontinuously in the second queue 371 in the ASIC 111, and the multiple extended length information units are correctly stored. You can avoid being unable to interpret the entry.
  • the queue control unit 230 manages from which entry in the second queue 371 to which entry is a continuous entry (information unit).
  • the queue control unit 230 allocates entries from the second queue 371 to the plurality of cores 210 in units stored continuously (that is, information unit units). With this configuration, it is possible to fetch entries while maintaining the continuity of information units without referring to the headers of the information units (in other words, allowing entries to be continuously fetched from a plurality of first queues 351). , Storage and allocation can be performed.
  • the number of fetched entries may be subtracted from the P index 361.
  • the queue control unit 230 that fetched the entry may subtract the number of entries from the P index 361 corresponding to the first queue 351 that is the fetch source, or detects that the C index 353 has a value indicating stored.
  • the first device may subtract the number of entries from the P index 361 corresponding to the C index 353.
  • the update of the P index 361 and the D index 363 may always be performed by the first device.
  • the timing of subtraction of the P index 361 and the update of the D index 363 may be the timing at which the C index 353 is updated (notification to the first device (notification of fetch)).
  • the queue control unit 230 when the queue control unit 230 stores an entry in the second queue 371 in units of information units, the queue control unit 230 notifies the first device that the entry has been fetched.
  • the value of the corresponding C index 353 is updated to a value indicating that the entry has been stored.
  • the first device detects the C index 353 that has already been stored (fetched), the first device returns the C index 353 to a predetermined value.
  • the first device can recognize that a new entry can be stored in the first queue 351 corresponding to the C index 353 indicating a predetermined value. For example, when the number of entries remaining in the first queue 351 exceeds a certain number for each first queue 351, the first device stores the C index 353 corresponding to the first queue 351 already stored. An entry may not be added to the first queue 351 unless the value is represented.
  • FIG. 4 shows a flow of storing information units in the first queue 351.
  • the first device When the first device stores the information unit (S401: Yes), the information unit is stored in units of entries, and the first queue 351 has a space that is equal to or larger than the total length of the entries constituting the information unit.
  • Store (S402) At this time, the first device adds the number of stored entries to the P index 361 corresponding to the storage destination first queue 351, and stores the number of entries stored in the D index 363 corresponding to the storage destination first queue 351. Record.
  • “when an information unit is stored” means, for example, that there is an information unit to be stored (for example, in a memory in the first device) and at least one first queue 351 that satisfies the condition.
  • the “first queue that satisfies the condition” may be a first queue that has a free space that is equal to or greater than the total length of the entries that constitute the information unit, and whose corresponding C index 353 indicates a predetermined value.
  • the first device stores one entry in the first queue 351, adds 1 to the P index 361, and sets 1 to the D index 363. Record.
  • the first device divides the information unit into a plurality of entries, and stores the plurality of entries continuously in the first queue 351, and the P index. The number of stored entries is added to 361, and the number of stored entries is recorded in the D index 363. “Store a plurality of entries continuously in the first queue 351” means that while the plurality of entries are stored in the first queue 351, entries of other information units are stored in the same first queue 351. Do not store.
  • Each entry may be all or a part of the information unit, or may be a predetermined entry length by a combination of all or a part of the information unit and predetermined data (for example, null).
  • FIG. 5 shows the flow of fetching entries from the first queue 351 to the second queue 371.
  • the queue control unit 230 fetches an entry (S501: Yes), it is determined whether or not the D index 363 corresponding to the fetch source first queue 351 is 1 (S502). In the case of “fetching an entry”, at least one P index 361 indicates an integer equal to or greater than 1, and the number of the fetch source is determined by arbitration in at least one first queue 351 corresponding to the at least one P index 361. If one queue 351 is determined, this is sufficient.
  • the first queue 351 that is the fetch source may be, for example, the first queue 351 that stores the largest number of entries (the first queue 351 corresponding to the P index 361 indicating the highest value).
  • the queue control unit 230 determines that the information unit including the fetch target entry is a standard length information unit (S503). Based on the entry length indicated by the entry length register 373, the queue control unit 230 fetches the number of entries indicated by the D index 363 from the first queue 351 that is the fetch source, and stores the fetched entries in the second queue 371 ( S504).
  • the queue control unit 230 determines that the information unit including the fetch target entry is an extended length information unit (S505). Based on the entry length indicated by the entry length register 373, the queue control unit 230 successively fetches the number of entries indicated by the D index 363 from the first queue 351 that is the fetch source, Store in the queue 371 (S506).
  • the queue control unit 230 notifies the first device that the entry has been stored from the first queue 351 that is the fetch source. Specifically, the C index 353 corresponding to the first queue 351 that is the fetch source is updated to a value indicating stored (S507). When the first device detects the C index 353 indicating stored (S510), the first device resets the C index 353 to a predetermined value (S511).
  • the P index 361 corresponding to the first queue 351 of the fetch source may be subtracted by the number of fetched entries.
  • the queue control unit 230 allocates the entry stored in the second queue 371 to the core 210 selected from the plurality of cores 210 in units of information units, and the processor includes information configured by the allocated entries.
  • a transfer process for transferring the unit to the second device is performed.
  • the “transfer processing” may be, for example, setting the information unit transfer source and transfer destination in the DMAC 220.
  • each of the plurality of queue control units 230 includes a base address register 372, an entry length register 373, a depth register 375, a P index 361, and a D index 363, and corresponds to the first device (for server or CTL 181). ing. At least one of the plurality of queue control units 230 is switched to the CTL 181 or the server. This switching is possible, for example, by changing the mode value in the mode register 204.
  • FIG. 6 shows the mode register 204.
  • the mode register 204 stores a mode value for each of at least one of the plurality of queue control units 230.
  • the mode value indicates whether it is for the CTL 181 or the server.
  • the queue control unit 230 corresponding to the mode value is executed in the mode (for the CTL 181 or the server) represented by the mode value.
  • the queue control unit 230 is controlled by the ASIC 111 according to the corresponding mode value.
  • the mode value is switched according to a policy stored in a storage area (for example, a memory) in the ASIC 111 or an instruction from the CTL 181 at the time of environment setting when starting the corresponding first device, for example. Is called.
  • the CTL 181 is provided with a first queue 351 group (a plurality of first queues 351) corresponding to the processors operating on the CTL 181, but all the first queues 351, such as when a file OS (operating system) operates on the CTL 181, are provided. There may be cases where one queue 351 is not used.
  • the overhead of I / O processing can be reduced by having the first queue 351 group for each core 210 or each virtual OS.
  • NVMe NVM-Express (Non-Volatile Memory Express)
  • NVM-Express Non-Volatile Memory Express
  • first queues 351 when there are first queues 351 that are not used in the CTL 181, these first queues 351 can be used as the first queue 351 in the server 123. For this reason, it can be expected to improve the utilization efficiency of hardware resources, reduce the hardware scale, and improve the system performance.
  • FIG. 7 and 8 show the flow of I / O processing.
  • SVQ means a server queue control unit
  • CTQ means a CTL queue control unit.
  • communication between the servers # 0, CTQ # 3, SVQ # 0, and CTL 181 is taken as an example.
  • the server 123 (hereinafter referred to as server # 0) stores an I / O request (an example of an information unit) in the first queue 351 in the server # 0 in units of entries (S1). At that time, the server # 0 updates the P index 361 and the D index 363 corresponding to the storage destination first queue 351 in the SVQ (hereinafter, SVQ # 3). Further, when the I / O request is a write request, the server # 0 stores the write target data in the memory in the server # 0, and registers the storage location of the write target data in the first SGL.
  • the SGL is a list including a pointer to a memory area in which the divided address information and a pointer to the next address information are stored. The first SGL is stored in the memory in server # 0.
  • Server # 0 instructs SVQ # 3 to write (S2), and SVQ # 3 notifies one of the cores 210 (for example, core # 0) of activation (S3).
  • Core # 0 instructs SVQ # 3 to read (S4), and SVQ # 3 responds to the instruction by issuing an I / O request (one or more entries) based on P index 361 and D index 363. Fetched from the first queue 351 and stored in the second queue 371 (S5).
  • SVQ # 3 transmits a read completion (I / O request in second queue 371) to core # 0 (S6).
  • Core # 0 converts the I / O request according to the protocol of the transfer destination CTL 181 and transfers it to the CTQ (hereinafter CTQ # 0) (S8).
  • CTQ # 0 writes an I / O request to the memory in the CTL 181 and performs I / O activation for the CTL 181 (S9).
  • the CTL 181 analyzes the I / O request and secures a memory area in the CTL 181 (S10).
  • the CTL 181 can read data from the storage device 123123 according to the read request, and store the read data in the memory in the CTL 181.
  • the CTL 181 registers the data storage location in the second SGL.
  • the second SGL is stored in a memory in the CTL 181.
  • the CTL 181 generates a DMA request (an example of an information unit) (S11), and stores the DMA request in the first queue 351. At that time, the CTL 181 updates the P index 361 and the D index 363 corresponding to the storage destination first queue 351 in CTQ # 0. The CTL 181 transmits a request acceptance notification to the CTQ # 0 (S12).
  • a DMA request an example of an information unit
  • CTQ # 0 fetches the DMA request from the first queue 351 (S13), and stores the fetched DMA request in the second queue 371.
  • CTQ # 0 allocates a DMA request from the second queue 371 to the core 210 (for example, core # 0).
  • Core # 0 transmits an SGL read request to SVQ # 3 or CTQ # 0 (S15).
  • the SGL read request is transmitted to SVQ # 3.
  • the SVQ # 3 reads the first SGL from the memory in the server # 0 (S16), and returns a completion notification including the first SGL to the core # 0 (S17).
  • the SGL read request is transmitted to CTQ # 0.
  • the CTQ # 0 reads the second SGL from the memory in the CTL 181 (S18), and returns a completion notification including the second SGL to the core # 0 (S19).
  • Core # 0 generates parameters (transfer source address and transfer destination address) according to SGL (first or second SGL) in the completion notification (S20), and sets the generated parameters in DMAC 220 (for example, DMAC # 3).
  • DMAC # 3 is activated (S21).
  • the DMAC # 3 performs data transfer between the memory in the server # 0 and the memory in the CTL 181 by DMA according to the set parameters (S22).
  • DAMC # 3 returns a completion notification to core # 0 after data transfer (S23).
  • the core # 0 transmits a DMA completion notification to the transmission source of the DMA request in S14 (that is, CTQ # 0) (S24).
  • CTQ # 0 stores the response to the request in S12 in the memory in the CTL 181 (S25).
  • the CTL 181 stores an I / O completion notification (an example of an information unit) in the first queue 351, and returns a completion notification to the CTQ # 0 as a response to the I / O activation in S9 (S26).
  • Receiving the notification, CTQ # 0 fetches the I / O completion notification from the first queue 351 and stores it in the second queue 371 (S27).
  • CTQ # 0 allocates an I / O completion notification from the second queue 371 to the core 210 (for example, core # 0) (S28).
  • Core # 0 that has received the I / O completion notification creates response parameters for each of server # 0 and CTL 181 (S29).
  • the core 210 transmits a response parameter to the SVQ # 3 (S30), and the SVQ # 3 transmits the response parameter to the server # 0 (S31).
  • the core 210 transmits a response parameter to CTQ # 0 (S32), and CTQ # 0 transmits the response parameter to the CTL 181 (S33).

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

This computer system comprises an intermediary device which is provided between a storage controller and a server, and which acts as an intermediary for information unit communication (communication according to PCIe). A first device (either the server or the storage controller) has a plurality of first queues, and the intermediary device has a second queue. A first index and a second index are provided for each of the plurality of first queues. Each first index is a value indicating the number of entries stored in the respective first queue, and each second index is a value indicating the number of entries constituting each information unit stored in the respective first queue. When a first index indicates the presence of an entry or entries in the respective first queue, the intermediary device fetches, from the first queue, the number of entries indicated by the second index for the first queue, stores the fetched entries in the second queue, and allocates the entries stored in the second queue to a selected one or ones of a plurality of processors, one or more information units at a time.

Description

計算機システム及び仲介デバイスComputer system and mediation device

 本発明は、概して、計算機システムでのキュー制御に関する。 The present invention generally relates to queue control in a computer system.

 一般に、サーバ装置(以下、サーバ)とストレージ装置(以下、ストレージ)とを有する計算機システムでは、異なるベンダーによって製造されたサーバ装置とストレージ装置とを、通信ネットワーク(例えばFC(Fibre Channel)ネットワーク或いはIP(Internet Protocol))を介して接続することで構成する。 Generally, in a computer system having a server device (hereinafter referred to as a server) and a storage device (hereinafter referred to as storage), a server device and a storage device manufactured by different vendors are connected to a communication network (for example, an FC (Fibre Channel) network or an IP). (Internet Protocol)).

 しかし、性能向上又は他の目的により、サーバとストレージを、それぞれの内部で使用される通信インターフェイスと同じ通信インターフェイスで通信可能に接続することが考えられる。その種の通信インターフェイスとして、例えばPCIe(PCI-Express)が考えられる。例えば非特許文献1及び2は、PCIeに関する技術を開示している。具体的には、例えば、非特許文献1は、PQI(PCIe architecture Queuing Interface)ホストおよびPQIデバイス間の情報転送用のリングキューの定義を開示している。非特許文献2は、プロトコル層の定義を開示している。 However, for performance improvement or other purposes, it is conceivable to connect the server and the storage so that they can communicate with each other using the same communication interface as the communication interface used inside. As such a communication interface, for example, PCIe (PCI-Express) is conceivable. For example, Non-Patent Documents 1 and 2 disclose techniques related to PCIe. Specifically, for example, Non-Patent Document 1 discloses a definition of a ring queue for information transfer between a PQI (PCIe architecture Queuing Interface) host and a PQI device. Non-Patent Document 2 discloses the definition of the protocol layer.

PCIe architecture Queuing Interface(PQI)(http://www.t10.org/disk/sop-agnd.htm)PCIe architecture Queuing Interface (PQI) (http://www.t10.org/disk/sop-agnd.htm) SCSI over PCIe architecture(SOP)(http://www.t10.org/disk/sop-agnd.htm)SCSI over PCIe architecture (SOP) (http://www.t10.org/disk/sop-agnd.htm)

 サーバとストレージコントローラ間の通信においては、通常、情報ユニットが通信される。情報ユニットは、例えば、リクエストである。サーバとストレージコントローラ間の通信のためには、例えば、サーバ及びストレージの少なくとも一方に、複数のキューが設けられ、複数のキューにそれぞれ通信対象の情報ユニットが蓄積される。非特許文献1及び2のいずれも、サーバとストレージコントローラ間の通信のために複数のキューを効率的にハンドルするためのキュー制御を開示していない。 In the communication between the server and the storage controller, the information unit is usually communicated. The information unit is, for example, a request. For communication between the server and the storage controller, for example, a plurality of queues are provided in at least one of the server and the storage, and information units to be communicated are respectively stored in the plurality of queues. Neither of Non-Patent Documents 1 and 2 discloses a queue control for efficiently handling a plurality of queues for communication between a server and a storage controller.

 ストレージコントローラとサーバ間に情報ユニットの通信(PCIeに従う通信)を仲介する仲介デバイスが設けられる。第1デバイス(サーバ及びストレージコントローラのうちの一方)が、複数の第1キューを有し、仲介デバイスが、複数のプロセッサと、第2キューとを有する。複数の第1キューの各々について、第1及び第2インデックスが設けられる。第1インデックスは、格納されているエントリの数を示す値であり、第2インデックスは、第1キューに格納された情報ユニットを構成するエントリ数を示す値である。仲介デバイスが、エントリが存在することを示している第1インデックスに対応した第1キューについて、第2インデックスが1を示していれば、フェッチ対象のエントリを含む情報ユニットが標準長の情報ユニットであると判断し、第2インデックスが2以上のいずれかの整数を示していれば、フェッチ対象のエントリを含む情報ユニットが拡張長の情報ユニットであると判断し、第2インデックスが示す数のエントリをその第1キューからフェッチし、フェッチしたエントリを第2キューに格納し、第2キューに格納されているエントリを、情報ユニット単位で、複数のプロセッサから選択されたプロセッサに割り振る。そのプロセッサは、その割り振られたエントリにより構成される情報ユニットを第2デバイス(サーバ及びストレージコントローラのうちの他方)に転送するための処理を行う。 An intermediary device that mediates communication of information units (communication according to PCIe) is provided between the storage controller and the server. The first device (one of the server and the storage controller) has a plurality of first queues, and the mediation device has a plurality of processors and a second queue. A first and a second index are provided for each of the plurality of first queues. The first index is a value indicating the number of stored entries, and the second index is a value indicating the number of entries constituting the information unit stored in the first queue. If the second index indicates 1 for the first queue corresponding to the first index indicating that the entry exists, the mediation device is the standard length information unit including the entry to be fetched. If the second index indicates any integer greater than or equal to 2, it is determined that the information unit including the fetch target entry is an extended-length information unit, and the number of entries indicated by the second index Is fetched from the first queue, the fetched entry is stored in the second queue, and the entry stored in the second queue is allocated to a processor selected from a plurality of processors in units of information units. The processor performs processing for transferring the information unit constituted by the allocated entry to the second device (the other of the server and the storage controller).

 サーバとストレージコントローラ間の通信のために複数のキューを効率的にハンドルできる。 -Multiple queues can be efficiently handled for communication between the server and the storage controller.

実施形態に係る計算機システムの構成を示す。1 shows a configuration of a computer system according to an embodiment. ASIC(Application Specific Integrated Circuit)の構成を示す。Indicates the configuration of ASIC (Application Specific Integrated Circuit). キュー制御の概要図である。It is a schematic diagram of queue control. 情報ユニットの第1キューへの格納の流れを示す。The flow of storing the information unit in the first queue is shown. 第1キューから第2キューへのエントリのフェッチの流れを示す。The flow of fetching entries from the first queue to the second queue is shown. モードレジスタを示す。Indicates the mode register. I/O処理の流れの一部を示す。A part of the flow of I / O processing is shown. I/O処理の流れの残りを示す。The rest of the flow of I / O processing is shown.

 一実施形態を、図面を参照して説明する。 One embodiment will be described with reference to the drawings.

 なお、以下の説明では、複数の同種の要素には同一の参照符号を付し、それらの要素を区別しない場合は参照符号を使用し(例えばキュー制御部230)、それらの要素を区別して説明する場合は、要素に割り振られた識別番号を使用する(例えばキュー制御部#0)ことがある。 In the following description, the same reference numerals are assigned to a plurality of similar elements, and reference numerals are used when the elements are not distinguished (for example, the queue control unit 230), and these elements are distinguished. In this case, the identification number assigned to the element may be used (for example, queue control unit # 0).

 図1は、実施形態に係る計算機システムの構成を示す。 FIG. 1 shows a configuration of a computer system according to the embodiment.

 計算機システム101は、少なくとも1つのサーバ123と、少なくとも1つのストレージコントローラ(以下、CTL)181と、少なくとも1つのASIC111(Application Specific Integrated Circuit)とを有する。図1には、複数のサーバ123と、複数のASIC111と、1つのCTL181が示されている。1つのサーバ123につき1つのASIC111が存在する。ASIC111が、仲介デバイスの一例である。ASIC111は、サーバ123内のルートコンプレックス125と、CTL181内のルートコンプレックス167とに接続されるエンドポイントである。これにより、サーバ123及びCTL181がそれぞれルートコンプレックスとして動作するシステムにおいて、ASIC111を双方からエンドポイントとして見せることで、ルートコンプレックス間の通信が可能となる。 The computer system 101 includes at least one server 123, at least one storage controller (hereinafter referred to as CTL) 181 and at least one ASIC 111 (Application Specific Integrated Circuit). In FIG. 1, a plurality of servers 123, a plurality of ASICs 111, and one CTL 181 are shown. There is one ASIC 111 per server 123. The ASIC 111 is an example of a mediation device. The ASIC 111 is an end point connected to the root complex 125 in the server 123 and the root complex 167 in the CTL 181. As a result, in a system in which the server 123 and the CTL 181 operate as root complexes, the ASIC 111 is viewed as an endpoint from both sides, thereby enabling communication between root complexes.

 サーバ123は、サーバシャーシ121に搭載される。計算機システム101は、少なくとも1つのサーバシャーシ121を有する。サーバシャーシ121が、2以上のサーバ123と、PCIe-MUX(マルチプレクサ)112とを有する。PCIe-MUX112が、2以上のASIC111とCTL181との間の接続を切替える。各サーバ123にASIC111が接続され、各サーバ123のASIC111に、PCIe-MUX112が接続される。PCIe-MUX112とCTL181間の接続(通信)は、PCIeに従う接続(通信)である。各サーバ123とCTL181が、ASIC111及びPCIe-MUX112を介して、I/O(Input/Output)リクエスト(情報ユニットの一例)を送受信できる。 The server 123 is mounted on the server chassis 121. The computer system 101 has at least one server chassis 121. The server chassis 121 includes two or more servers 123 and a PCIe-MUX (multiplexer) 112. The PCIe-MUX 112 switches the connection between the two or more ASICs 111 and the CTL 181. An ASIC 111 is connected to each server 123, and a PCIe-MUX 112 is connected to the ASIC 111 of each server 123. The connection (communication) between the PCIe-MUX 112 and the CTL 181 is a connection (communication) according to PCIe. Each server 123 and CTL 181 can transmit and receive an I / O (Input / Output) request (an example of an information unit) via the ASIC 111 and the PCIe-MUX 112.

 CTL181は、ストレージシャーシ141に搭載される。ストレージシャーシ141は、CTL181の他に、少なくとも1つの記憶デバイス(例えば不揮発性の記憶デバイス)123を有する。各記憶デバイス123は、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)である。ストレージシャーシ141内に、CTL181と1以上の記憶デバイス123とを含んだストレージシステムが構築される。 The CTL 181 is mounted on the storage chassis 141. The storage chassis 141 has at least one storage device (for example, a nonvolatile storage device) 123 in addition to the CTL 181. Each storage device 123 is, for example, an HDD (Hard Disk Drive) or an SSD (Solid State Drive). A storage system including a CTL 181 and one or more storage devices 123 is constructed in the storage chassis 141.

 CTL181は、フロントエンドインターフェイス(FE-I/F)151と、バックエンドインターフェイス(BE-I/F)153と、メモリ161と、それらに接続されたプロセッサ(以下、ストレージプロセッサ)163とを有する。FE-I/F151は、フロントエンド側のデバイス(この実施形態ではサーバ123)と通信するためのインターフェイスデバイスである。BE-I/F153は、バックエンド側のデバイス(この実施形態では記憶デバイス123)と通信するためのインターフェイスデバイスである。メモリ161には、CTL181の動作の制御のための制御情報が記憶される領域、及び、記憶デバイス123に入出力されるデータが一時的に格納されるキャッシュ領域を有する。ストレージプロセッサ163は、コンピュータプログラム(例えばオペレーティングシステム及びファームウェア)を実行することにより、CTL181の動作を制御する。 The CTL 181 includes a front end interface (FE-I / F) 151, a back end interface (BE-I / F) 153, a memory 161, and a processor (hereinafter referred to as a storage processor) 163 connected thereto. The FE-I / F 151 is an interface device for communicating with a device on the front end side (the server 123 in this embodiment). The BE-I / F 153 is an interface device for communicating with a device on the back end side (the storage device 123 in this embodiment). The memory 161 has an area for storing control information for controlling the operation of the CTL 181 and a cache area for temporarily storing data input / output to / from the storage device 123. The storage processor 163 controls the operation of the CTL 181 by executing a computer program (for example, an operating system and firmware).

 図2は、ASIC111の構成を示す。 FIG. 2 shows the configuration of the ASIC 111.

 ASIC111は、SW201と、第1I/F250と、第2I/F240と、モードレジスタ204と、複数のキュー制御部230と、複数のコア(プロセッサの一例)210と、複数のDMAC(Dynamic Memory Access Controller)220とを有する。SW201に、第1I/F250、モードレジスタ204、第2I/F240、複数のキュー制御部230及び複数のDMAC220が接続されており、SW201は、それらのデバイス間の接続を切り替える。キュー制御部230とDMAC220の間に複数のコア210が介在する。各キュー制御部230が、複数のコア210のいずれにも接続されている。各コア210は、複数のDMAC220のうちの一部(例えば2つのDMAC220)に接続されている。各コア210は、例えばファームウェアを実行する。 The ASIC 111 includes a SW 201, a first I / F 250, a second I / F 240, a mode register 204, a plurality of queue control units 230, a plurality of cores (an example of a processor) 210, and a plurality of DMACs (Dynamic Memory Access Controllers). 220). A first I / F 250, a mode register 204, a second I / F 240, a plurality of queue control units 230, and a plurality of DMACs 220 are connected to the SW 201, and the SW 201 switches connection between these devices. A plurality of cores 210 are interposed between the queue control unit 230 and the DMAC 220. Each queue control unit 230 is connected to any of the plurality of cores 210. Each core 210 is connected to a part of the plurality of DMACs 220 (for example, two DMACs 220). Each core 210 executes firmware, for example.

 第1I/F250は、サーバ123に接続されるインターフェイスデバイス(例えばポート)である。第2I/F240は、CTL181に接続されるインターフェイスデバイス(例えばポート)である。本実施形態では、第1I/F250は、1つであり、第2I/F240は、2つである。例えば、サーバ123から第1I/F250を介してキュー制御部230によりフェッチされた情報ユニットが、キュー制御部230により二重化され、二重化された情報ユニット(2つの情報ユニット)が、それぞれ、それらの情報ユニットの割り振り先のコア210により、2つの第2I/F240を介して、CTL181に転送されてよい。 The first I / F 250 is an interface device (for example, a port) connected to the server 123. The second I / F 240 is an interface device (for example, a port) connected to the CTL 181. In the present embodiment, there is one first I / F 250, and there are two second I / Fs 240. For example, the information unit fetched by the queue control unit 230 from the server 123 via the first I / F 250 is duplexed by the queue control unit 230, and the duplexed information units (two information units) are their information. It may be transferred to the CTL 181 via the two second I / Fs 240 by the core 210 to which the unit is allocated.

 キュー制御部230は、キュー制御を行う。コア210は、情報ユニットの転送のための処理を行う。DMAC220は、情報ユニットのDMA転送を行う。モードレジスタ204は、複数のキュー制御部230のうちの少なくとも1つのキュー制御部230のうちの各々について、サーバ向けとCTL向けのどちらであるかの値であるモード値を記憶する。モード値を更新することにより、そのモード値に対応したキュー制御部230をサーバ向けとするかCTL向けとするかを切り替えることができる。これらの処理の各々については、後に後述する。 The queue control unit 230 performs queue control. The core 210 performs processing for transferring information units. The DMAC 220 performs DMA transfer of information units. The mode register 204 stores a mode value that is a value for a server or a CTL for each of at least one queue control unit 230 of the plurality of queue control units 230. By updating the mode value, the queue control unit 230 corresponding to the mode value can be switched between a server and a CTL. Each of these processes will be described later.

 図3は、キュー制御の概要図である。 FIG. 3 is a schematic diagram of queue control.

 以下の説明では、サーバ123とCTL181のうちの一方であり情報ユニットの送信元を「第1デバイス」と言い、その情報ユニットの送信先のデバイスを「第2デバイス」と言う。いずれのサーバ123もいずれのCTL181も、第1デバイスにも第2デバイスにもなり得てもよい。図3に示す例では、第1デバイスは、CTL181であり、第2デバイスは、サーバ123である。第1デバイスがサーバ123の場合、第2デバイスは、CTL181であることもあれば別のサーバ123であることもある。複数のCTL181がある環境では、第1デバイスがCTL181の場合、第2デバイスは別のCTL181でもよい。 In the following description, the transmission source of the information unit which is one of the server 123 and the CTL 181 is referred to as “first device”, and the transmission destination device of the information unit is referred to as “second device”. Any server 123 and any CTL 181 may be either the first device or the second device. In the example illustrated in FIG. 3, the first device is the CTL 181 and the second device is the server 123. When the first device is the server 123, the second device may be the CTL 181 or another server 123. In an environment having a plurality of CTLs 181, when the first device is the CTL 181, the second device may be another CTL 181.

 ASIC111内の各キュー制御部230が、1つの第1デバイスに対応している。例えば、図3のキュー制御部230#0が、CTL181に対応しており、別のキュー制御部230#3(図2参照)は、サーバ123#0(図1参照)に対応していてよい。 Each queue control unit 230 in the ASIC 111 corresponds to one first device. For example, the queue control unit 230 # 0 in FIG. 3 corresponds to the CTL 181 and another queue control unit 230 # 3 (see FIG. 2) may correspond to the server 123 # 0 (see FIG. 1). .

 第1デバイスが、複数の第1キュー351と、複数の第1キュー351にそれぞれ対応した複数の通知インデックス(図3では「Cインデックス353」と表記)353とを有する。各第1キュー351と各Cインデックス353は、例えば第1デバイスが有する記憶領域(例えばメモリ)上に設けられてよい。 The first device has a plurality of first queues 351 and a plurality of notification indexes (denoted as “C index 353” in FIG. 3) corresponding to the plurality of first queues 351, respectively. Each first queue 351 and each C index 353 may be provided on, for example, a storage area (for example, a memory) included in the first device.

 第1デバイスにより、送信対象の情報ユニットが、複数の第1キュー351から選択された第1キュー351に、エントリ単位で格納される。本実施形態において、「エントリ」とは、情報ユニットの分割により得られた要素である。エントリ長は、所定長(例えば64バイト)である。情報ユニットを構成するエントリの数は、1となることもあれば2以上となることもある。例えば、サーバ123からCTL181への情報ユニットは、二重化のために転送先アドレスを2つ有し、故に、情報ユニットの長さは、標準長の情報ユニットよりも長い(サイズが大きい)拡張長の情報ユニットであり得る。一方、CTL181からサーバ123への情報ユニットは、転送先アドレスが1つのため、標準長の情報ユニットになり得る。この例によれば、情報ユニットの長さは、送信元デバイス(第1デバイス)の種類と送信先デバイス(第2デバイス)の種類に依存しているが、その観点に代えて又は加えて、情報ユニットの長さは、他の観点(例えば情報ユニットの種類)によって異なり得る。第1デバイスは、1つの情報ユニットから複数のエントリが得られた場合、選択した第1キュー351にそれら複数のエントリを連続して格納する。「1つの情報ユニットから得られた複数のエントリを連続して格納する」とは、それら複数のエントリを上記選択した第1キュー351に格納開始してから格納し終えるまでの間に、他の情報ユニットのエントリをその第1キュー351に格納しないことを意味する。従って、第1キュー351において、同一の情報ユニットを構成するエントリが連続することになる。なお、標準長情報ユニットの長さは、エントリ長以下であり、頻繁に使用されるタイプのI/Oコマンドが有する引数が収まる長さでよい。拡張長情報ユニットの長さは、エントリ長のN倍(Nは2以上の整数)でよい。 The information device to be transmitted is stored in the first queue 351 selected from the plurality of first queues 351 in units of entries by the first device. In the present embodiment, an “entry” is an element obtained by dividing an information unit. The entry length is a predetermined length (for example, 64 bytes). The number of entries constituting the information unit may be 1 or may be 2 or more. For example, the information unit from the server 123 to the CTL 181 has two transfer destination addresses for duplication. Therefore, the length of the information unit is longer (larger in size) than the standard length information unit. It can be an information unit. On the other hand, the information unit from the CTL 181 to the server 123 can be a standard length information unit because it has one transfer destination address. According to this example, the length of the information unit depends on the type of the transmission source device (first device) and the type of the transmission destination device (second device), but instead of or in addition to that viewpoint, The length of the information unit may vary depending on other aspects (for example, the type of information unit). When a plurality of entries are obtained from one information unit, the first device stores the plurality of entries in the selected first queue 351 successively. “Continuously storing a plurality of entries obtained from one information unit” means that the plurality of entries are stored in the selected first queue 351 until the storage is completed. This means that the information unit entry is not stored in the first queue 351. Therefore, in the first queue 351, entries constituting the same information unit are continuous. Note that the length of the standard length information unit is equal to or shorter than the entry length, and may be a length that can accommodate an argument of a frequently used type I / O command. The length of the extended length information unit may be N times the entry length (N is an integer of 2 or more).

 Cインデックス353は、そのCインデックス353に対応する第1キュー351からエントリがフェッチされたことに関する値を示す。Cインデックス353は、そのCインデックス353に対応する第1キュー351からキュー制御部230によりエントリがフェッチされ終えた場合又は後述の第2キュー371にエントリが格納され終えた場合に(例えばエントリが情報ユニット単位でフェッチ又は格納され終えた場合に)、そのキュー制御部230により更新される。つまり、Cインデックス353の更新は、そのCインデックス353に対応した第1キュー351からエントリ(情報ユニット)のフェッチ又は格納が完了したことの通知に相当する。第1デバイスは、Cインデックス353の更新を認識した場合、Cインデックス353を所定値に戻してよい。なお、複数のCインデックス353のうちの少なくとも1つは、第1デバイスに代えて、第1デバイス以外の場所、例えば、第2デバイスと第1デバイスの間に介在するASIC111(例えば、第1デバイスに対応するキュー制御部230)に存在してもよい。 The C index 353 indicates a value related to the entry fetched from the first queue 351 corresponding to the C index 353. The C index 353 is used when an entry has been fetched from the first queue 351 corresponding to the C index 353 by the queue control unit 230 or when an entry has been stored in the second queue 371 described later (for example, the entry is information The queue control unit 230 updates the data when it is fetched or stored in units. That is, the update of the C index 353 corresponds to a notification that the entry (information unit) has been fetched or stored from the first queue 351 corresponding to the C index 353. When the first device recognizes the update of the C index 353, the first device may return the C index 353 to a predetermined value. It should be noted that at least one of the plurality of C indexes 353 is replaced with the first device instead of the first device, for example, the ASIC 111 (for example, the first device) interposed between the second device and the first device. May exist in the queue control unit 230) corresponding to.

 キュー制御部230が、そのキュー制御部230に対応する第1デバイスが有する各第1キュー351について、ベースアドレスレジスタ372と、格納インデックス(図3では「Pインデックス」と表記)361と、差分インデックス(図3では「Dインデックス」と表記)363とを有する。これらのレジスタ及びインデックスは、キュー制御部230が有する記憶領域(例えばメモリ)に設けられてよい。ベースアドレスレジスタ372は、対応する第1キュー351のアドレスを示す。Pインデックス361は、第1インデックスの一例であり、対応する第1キュー351のベースアドレスレジスタ372で示されるポインタからの差分を示す値、言い換えれば、対応する第1キュー351に格納されているエントリの数を示す値である。Dインデックス363は、第2インデックスの一例であり、対応する第1キュー351に格納された情報ユニットを構成するエントリ数(連続して格納されたエントリの数)を示す値である。複数の第1キュー351に対応した複数のPインデックス361及び複数のDインデックス363のうちの少なくとも1つは、キュー制御部230に代えて、キュー制御部230以外の場所、例えば、第1デバイスに存在してもよい。また、各第1キュー351につき、Dインデックス363が複数存在してもよく、複数のDインデックス363がそれぞれ示す複数の値の合計が、第1キュー351内のエントリの数、つまり、Pインデックス361が示す値でよい。Dインデックス363は例えばリングバッファとして実現されてよい。また、複数のDインデックス363の値から第1キュー351内のエントリの数が分かる場合、Pインデックス361は無くてもよい。 The queue control unit 230 includes a base address register 372, a storage index (indicated as “P index” in FIG. 3) 361, and a difference index for each first queue 351 included in the first device corresponding to the queue control unit 230. (Denoted as “D index” in FIG. 3) 363. These registers and indexes may be provided in a storage area (for example, a memory) included in the queue control unit 230. The base address register 372 indicates the address of the corresponding first queue 351. The P index 361 is an example of a first index, and is a value indicating a difference from the pointer indicated by the base address register 372 of the corresponding first queue 351, in other words, an entry stored in the corresponding first queue 351. Is a value indicating the number of. The D index 363 is an example of a second index, and is a value indicating the number of entries (the number of entries stored consecutively) constituting the information unit stored in the corresponding first queue 351. At least one of the plurality of P indexes 361 and the plurality of D indexes 363 corresponding to the plurality of first queues 351 is placed in a place other than the queue control unit 230, for example, the first device, instead of the queue control unit 230. May be present. Further, a plurality of D indexes 363 may exist for each first queue 351, and the sum of a plurality of values indicated by the plurality of D indexes 363 is the number of entries in the first queue 351, that is, the P index 361. The value indicated by The D index 363 may be realized as a ring buffer, for example. Further, when the number of entries in the first queue 351 is known from the values of the plurality of D indexes 363, the P index 361 may be omitted.

 キュー制御部230が、更に、エントリ長を示すエントリ長レジスタ373と、第1キュー351の深さ(第1キュー351に格納可能なエントリの最大数)を示す深さレジスタ375とを有する。本実施形態では、エントリ長レジスタ373及び深さレジスタ375は、複数の第1キュー351に共通でよい。なぜなら、各エントリの長さは同じであり、また、各第1キュー351の深さは同じためである。第1キュー351毎にエントリ長及び第1キュー351の深さが異なれば、キュー制御部230は、第1キュー351毎に、エントリ長レジスタ373及び深さレジスタ375を有してよい。エントリ長レジスタ373の値、及び、深さレジスタ375の値は、それぞれ、固定値でもよいし可変値でもよい。 The queue control unit 230 further includes an entry length register 373 indicating the entry length, and a depth register 375 indicating the depth of the first queue 351 (the maximum number of entries that can be stored in the first queue 351). In the present embodiment, the entry length register 373 and the depth register 375 may be common to the plurality of first queues 351. This is because the length of each entry is the same, and the depth of each first queue 351 is the same. If the entry length and the depth of the first queue 351 are different for each first queue 351, the queue control unit 230 may have an entry length register 373 and a depth register 375 for each first queue 351. The value of the entry length register 373 and the value of the depth register 375 may each be a fixed value or a variable value.

 キュー制御部230は、Pインデックス361が示す値と深さレジスタ375が示す値との関係を基に、フェッチ元の第1キュー351を選択できる。例えば、キュー制御部230は、Pインデックス361が示す値と深さレジスタ375が示す値との差が最も小さい第1キュー351から優先的にエントリをフェッチすることができる。また、キュー制御部230は、エントリ長レジスタ373が示す値通りのサイズの情報、つまりエントリを、第1キュー351からフェッチすることができる。また、キュー制御部230は、各第1キュー351について、ベースアドレスレジスタ372が示す値とPインデックス361が示す値から、エントリのフェッチ元の場所を特定することができる。 The queue control unit 230 can select the first queue 351 that is the fetch source based on the relationship between the value indicated by the P index 361 and the value indicated by the depth register 375. For example, the queue control unit 230 can preferentially fetch entries from the first queue 351 where the difference between the value indicated by the P index 361 and the value indicated by the depth register 375 is the smallest. Further, the queue control unit 230 can fetch information of a size as indicated by the entry length register 373, that is, an entry from the first queue 351. Further, the queue control unit 230 can specify the location from which the entry is fetched for each first queue 351 from the value indicated by the base address register 372 and the value indicated by the P index 361.

 キュー制御部230が、複数の第1キュー351に対応した第2キュー371を有する。キュー制御部230が、複数の第1キュー351のいずれかからエントリをフェッチし、フェッチしたエントリを、その複数の第1キュー351に対応する第2キュー371に格納する。キュー制御部230は、第2キュー371に格納されているエントリを、その第2キュー371に対応する複数のコア210(その第2キュー371を有するキュー制御部230に接続されている複数のコア210)のうちのいずれかに割り振る。第2キュー371は、複数のコア210に対応する。すなわち、第2キュー371の数は、キュー制御部230と、その第2キュー371に対応した複数の第1キュー351を有する第1デバイスとの間のパスの数と同数でよい。なぜなら、1つのパスを通じてフェッチされたエントリの格納先は1つであるからである。従って、パスより第2キュー371が多いと、余剰の第2キュー371が生じ、パスより第2キュー371が少ないと、第2キュー371へのエントリの格納がボトルネックになる。本実施形態では、図3に例示するように、キュー制御部230と第1デバイス間のパス381は1つであり、故に、その第1デバイスが有する複数の第1キュー351につき第2キュー371も1つである。各第1キュー351及び第2キュー371には、FIFO(First In First Out)でエントリが入出力されるが、入出力方式は、FIFO以外の方式が採用されてもよい。 The queue control unit 230 has a second queue 371 corresponding to the plurality of first queues 351. The queue control unit 230 fetches an entry from one of the plurality of first queues 351, and stores the fetched entry in the second queue 371 corresponding to the plurality of first queues 351. The queue control unit 230 converts the entries stored in the second queue 371 into a plurality of cores 210 corresponding to the second queue 371 (a plurality of cores connected to the queue control unit 230 having the second queue 371). 210). The second queue 371 corresponds to the plurality of cores 210. That is, the number of second queues 371 may be the same as the number of paths between the queue control unit 230 and the first device having a plurality of first queues 351 corresponding to the second queue 371. This is because there is one storage location for entries fetched through one pass. Therefore, if there are more second queues 371 than paths, an extra second queue 371 is generated, and if there are fewer second queues 371 than paths, storing entries in the second queue 371 becomes a bottleneck. In the present embodiment, as illustrated in FIG. 3, there is one path 381 between the queue control unit 230 and the first device, and therefore the second queue 371 for a plurality of first queues 351 included in the first device. Is one. Entries are input / output to / from each of the first queue 351 and the second queue 371 by FIFO (First In First Out), but a method other than FIFO may be adopted as the input / output method.

 キュー制御部230と第1デバイスは、1対1で対応してもよいし、第1デバイスが、複数の第1キュー351群を有している場合、キュー制御部230と第1キュー351群(複数の第1キュー351)が1対1で対応してもよい。 The queue control unit 230 and the first device may correspond one-to-one, and when the first device includes a plurality of first queues 351, the queue control unit 230 and the first queue 351 group (A plurality of first queues 351) may correspond one-to-one.

 第1デバイス(例えばCTL181)の複数の第1キュー351をハードウェアで1つにまとめた第2キュー371がASIC111のキュー制御部230に設けられ、キュー制御部230が、第2キュー371に蓄積されたエントリを複数のコア210に割り振る。 A second queue 371 in which a plurality of first queues 351 of the first device (for example, CTL 181) are integrated into one by hardware is provided in the queue control unit 230 of the ASIC 111, and the queue control unit 230 accumulates in the second queue 371. Allotted entries are allocated to a plurality of cores 210.

 その際、第1の比較例として、情報ユニットのヘッダに書かれている情報長(例えば情報ユニットがリクエストの場合は、リクエスト長)を見て、情報ユニットを構成するエントリの数を特定し、特定した数のエントリを第2キューからフェッチし複数のコアに割り振る処理が考えられる。しかし、そうすると、エントリ毎に、情報ユニットのヘッダの有無を調べることになり、その結果、キュー制御部が、連続的に複数の第1キュー351からエントリをフェッチすることができない。このため、性能インパクトが大きい。 At that time, as a first comparative example, the number of entries constituting the information unit is specified by looking at the information length written in the header of the information unit (for example, the request length when the information unit is a request), A process of fetching a specified number of entries from the second queue and allocating them to a plurality of cores can be considered. However, in this case, the presence or absence of the header of the information unit is checked for each entry, and as a result, the queue control unit cannot fetch entries from the plurality of first queues 351 continuously. For this reason, the performance impact is great.

 第2の比較例として、情報ユニットの情報長(情報ユニットを構成するエントリの数)を意識せずに第1キューから第2キューへとエントリをフェッチする処理が考えられる。第2の比較例によれば、情報ユニットのヘッダに書かれている情報長を見つけるために情報ユニットのヘッダの有無をエントリ毎に調べる必要は無い。しかし、第2キューにおいて、1つの情報ユニットを構成する複数のエントリが連続して並ばない可能性、つまり、情報ユニットの連続性が失われる可能性が出てしまう。そうすると、情報ユニット単位でのエントリの転送が困難である。 As a second comparative example, a process for fetching entries from the first queue to the second queue without considering the information length of the information unit (the number of entries constituting the information unit) can be considered. According to the second comparative example, in order to find the information length written in the header of the information unit, it is not necessary to check the presence or absence of the header of the information unit for each entry. However, in the second queue, there is a possibility that a plurality of entries constituting one information unit are not arranged in succession, that is, the continuity of information units may be lost. Then, it is difficult to transfer entries in units of information units.

 本実施形態では、第1キュー351毎に、第1キュー351に格納された情報ユニットを構成する連続したエントリの数を表すDインデックス363が設けられている。キュー制御部230は、Dインデックス363が示す値分のエントリを第1キュー351からフェッチし、フェッチしたエントリを第2キュー371に格納する。これにより、第1キュー351内の情報ユニットのヘッダに含まれる情報長をチェックする必要がない。このため、ASIC111が連続的に複数の第1キュー351からエントリをフェッチすることが可能である。また、このようなキュー制御をASIC111内のキュー制御部230のようなハードウェア回路にて実施する。このため、ASIC111内のコア210がキュー制御を実施する必要がない。このため、システム性能向上が期待できる。 In the present embodiment, for each first queue 351, a D index 363 representing the number of consecutive entries constituting the information unit stored in the first queue 351 is provided. The queue control unit 230 fetches entries for the value indicated by the D index 363 from the first queue 351, and stores the fetched entries in the second queue 371. This eliminates the need to check the information length included in the header of the information unit in the first queue 351. Therefore, the ASIC 111 can continuously fetch entries from the plurality of first queues 351. Such queue control is performed by a hardware circuit such as the queue control unit 230 in the ASIC 111. For this reason, it is not necessary for the core 210 in the ASIC 111 to perform queue control. For this reason, an improvement in system performance can be expected.

 また、本実施形態では、キュー制御部230が、Dインデックス363が示す値分のエントリ(1つの情報ユニットが構成する全てのエントリ)を連続してフェッチしフェッチしたエントリを連続して第2キュー371に格納する。その間、キュー制御部230は、他の第1キュー351からエントリをフェッチしない。これにより、第2キュー371において、情報ユニットを構成する第1エントリと第2エントリの間に他の情報ユニットを構成するエントリが挿入されてしまうこと、つまり、情報ユニットの連続性が失われてしまうことを回避できる。その結果、複数のエントリを読まなければ解釈できない拡張長情報ユニットのケースで、一部のエントリがASIC111内の第2キュー371に不連続に格納されてしまい、正しく拡張長情報ユニットとしてその複数のエントリを解釈できないことを回避できる。なお、キュー制御部230は、第2キュー371におけるどのエントリからどのエントリまでが連続したエントリ(情報ユニット)であるかを管理する。キュー制御部230が、連続して格納した単位(つまり情報ユニット単位)で第2キュー371からエントリを複数のコア210に割り振る。この構成により、情報ユニットのヘッダを参照すること無しに(言い換えれば、連続的に複数の第1キュー351からエントリをフェッチすることを可能にしつつ)、情報ユニットの連続性を保ったエントリのフェッチ、格納及び割振りを行うことができる。 In this embodiment, the queue control unit 230 continuously fetches and fetches entries corresponding to the value indicated by the D index 363 (all entries included in one information unit) in the second queue. Stored in 371. Meanwhile, the queue control unit 230 does not fetch an entry from the other first queue 351. As a result, in the second queue 371, an entry constituting another information unit is inserted between the first entry and the second entry constituting the information unit, that is, the continuity of the information unit is lost. Can be avoided. As a result, in the case of an extended length information unit that cannot be interpreted unless a plurality of entries are read, some entries are stored discontinuously in the second queue 371 in the ASIC 111, and the multiple extended length information units are correctly stored. You can avoid being unable to interpret the entry. Note that the queue control unit 230 manages from which entry in the second queue 371 to which entry is a continuous entry (information unit). The queue control unit 230 allocates entries from the second queue 371 to the plurality of cores 210 in units stored continuously (that is, information unit units). With this configuration, it is possible to fetch entries while maintaining the continuity of information units without referring to the headers of the information units (in other words, allowing entries to be continuously fetched from a plurality of first queues 351). , Storage and allocation can be performed.

 Dインデックス363が示す数のエントリが連続して第1キュー351からフェッチされ第2キュー371に格納された場合、Pインデックス361から、そのフェッチされたエントリの数が減算されてよい。エントリをフェッチしたキュー制御部230により、フェッチ元の第1キュー351に対応したPインデックス361からエントリ数を減算してもよいし、Cインデックス353が格納済を示す値になっていることを検出した第1デバイスにより、そのCインデックス353に対応したPインデックス361からエントリ数を減算してもよい。Pインデックス361及びDインデックス363はいずれも第1デバイスにより更新されるインデックスである場合、常に、Pインデックス361及びDインデックス363の更新は、第1デバイスにより行われてよい。その際、Pインデックス361の減算及びDインデックス363の更新のタイミングは、Cインデックス353の更新(第1デバイスへの通知(フェッチの通知))が行われたタイミングでよい。 When the number of entries indicated by the D index 363 are successively fetched from the first queue 351 and stored in the second queue 371, the number of fetched entries may be subtracted from the P index 361. The queue control unit 230 that fetched the entry may subtract the number of entries from the P index 361 corresponding to the first queue 351 that is the fetch source, or detects that the C index 353 has a value indicating stored. The first device may subtract the number of entries from the P index 361 corresponding to the C index 353. When both the P index 361 and the D index 363 are indexes updated by the first device, the update of the P index 361 and the D index 363 may always be performed by the first device. At this time, the timing of subtraction of the P index 361 and the update of the D index 363 may be the timing at which the C index 353 is updated (notification to the first device (notification of fetch)).

 また、キュー制御部230は、第2キュー371に情報ユニット単位でエントリを格納したときに、エントリをフェッチしたことを第1デバイスに通知する、具体的には、フェッチ元の第1キュー351に対応したCインデックス353の値を、エントリ格納済を表す値に更新する。第1デバイスは、エントリ格納済(フェッチ済)の値となったCインデックス353を検出した場合、そのCインデックス353を所定値に戻す。第1デバイスは、所定値を示すCインデックス353に対応した第1キュー351に新たにエントリを格納可能であることを認識することができる。例えば、第1デバイスは、第1キュー351毎に、第1キュー351に残っているエントリの数が一定数を超えた場合には、その第1キュー351に対応したCインデックス353が格納済を表す値にならない限り、その第1キュー351にエントリを追加しないようにしてよい。 Further, when the queue control unit 230 stores an entry in the second queue 371 in units of information units, the queue control unit 230 notifies the first device that the entry has been fetched. The value of the corresponding C index 353 is updated to a value indicating that the entry has been stored. When the first device detects the C index 353 that has already been stored (fetched), the first device returns the C index 353 to a predetermined value. The first device can recognize that a new entry can be stored in the first queue 351 corresponding to the C index 353 indicating a predetermined value. For example, when the number of entries remaining in the first queue 351 exceeds a certain number for each first queue 351, the first device stores the C index 353 corresponding to the first queue 351 already stored. An entry may not be added to the first queue 351 unless the value is represented.

 以下、本実施形態で行われる幾つかの処理の流れを説明する。 Hereinafter, the flow of some processes performed in this embodiment will be described.

 図4は、情報ユニットの第1キュー351への格納の流れを示す。 FIG. 4 shows a flow of storing information units in the first queue 351.

 第1デバイスが、情報ユニットを格納する場合(S401:Yes)、情報ユニットを、エントリ単位で、その情報ユニットを構成するエントリの長さの合計以上の空きがいずれかの第1キュー351に、格納する(S402)。その際、第1デバイスは、格納先第1キュー351に対応したPインデックス361に、格納したエントリの数を加算し、格納先第1キュー351に対応したDインデックス363に、格納したエントリの数を記録する。なお、「情報ユニットを格納する場合」とは、例えば、格納対象の情報ユニットが存在し(例えば第1デバイス内のメモリに存在し)、且つ、条件を満たす第1キュー351が少なくとも1つ存在する場合、でよい。「条件を満たす第1キュー」は、情報ユニットを構成するエントリの長さの合計以上の空きを有し、対応するCインデックス353が所定値を示す第1キュー、でよい。 When the first device stores the information unit (S401: Yes), the information unit is stored in units of entries, and the first queue 351 has a space that is equal to or larger than the total length of the entries constituting the information unit. Store (S402). At this time, the first device adds the number of stored entries to the P index 361 corresponding to the storage destination first queue 351, and stores the number of entries stored in the D index 363 corresponding to the storage destination first queue 351. Record. Note that “when an information unit is stored” means, for example, that there is an information unit to be stored (for example, in a memory in the first device) and at least one first queue 351 that satisfies the condition. If you want, The “first queue that satisfies the condition” may be a first queue that has a free space that is equal to or greater than the total length of the entries that constitute the information unit, and whose corresponding C index 353 indicates a predetermined value.

 S402において、第1デバイスは、情報ユニットの長さがエントリ長以下であれば、1つのエントリを第1キュー351に格納し、Pインデックス361に1を加算し、且つ、Dインデックス363に1を記録する。S402において、第1デバイスは、情報ユニットの長さがエントリ長を超えていれば、情報ユニットを複数のエントリに分割し、それら複数のエントリを連続して第1キュー351に格納し、Pインデックス361に、格納したエントリの数を加算し、且つ、Dインデックス363に、格納したエントリの数を記録する。「複数のエントリを連続して第1キュー351に格納する」とは、その複数のエントリを第1キュー351に格納している間に、他の情報ユニットのエントリをその同じ第1キュー351に格納しないこと、でよい。これにより、第1キュー351において情報ユニットを構成するエントリの連続性が保たれる。また、各エントリは、その全てが、情報ユニットの全部又は一部であることもあれば、情報ユニットの全部又は一部と所定のデータ(例えばヌル)との組合せにより所定エントリ長にされてもよい。 In S402, if the length of the information unit is equal to or less than the entry length, the first device stores one entry in the first queue 351, adds 1 to the P index 361, and sets 1 to the D index 363. Record. In S402, if the length of the information unit exceeds the entry length, the first device divides the information unit into a plurality of entries, and stores the plurality of entries continuously in the first queue 351, and the P index. The number of stored entries is added to 361, and the number of stored entries is recorded in the D index 363. “Store a plurality of entries continuously in the first queue 351” means that while the plurality of entries are stored in the first queue 351, entries of other information units are stored in the same first queue 351. Do not store. Thereby, the continuity of the entries constituting the information unit in the first queue 351 is maintained. Each entry may be all or a part of the information unit, or may be a predetermined entry length by a combination of all or a part of the information unit and predetermined data (for example, null).

 図5は、第1キュー351から第2キュー371へのエントリのフェッチの流れを示す。 FIG. 5 shows the flow of fetching entries from the first queue 351 to the second queue 371.

 キュー制御部230が、エントリをフェッチする場合(S501:Yes)、フェッチ元第1キュー351に対応したDインデックス363が1か否かを判断する(S502)。「エントリをフェッチする場合」とは、少なくとも1つのPインデックス361が1以上の整数を示しており、その少なくとも1つのPインデックス361に対応する少なくとも1つの第1キュー351におけるアービトレーションによりフェッチ元の第1キュー351が決定された場合、でよい。なお、フェッチ元の第1キュー351は、例えば、最も多くのエントリが格納されている第1キュー351(最も高い値を示すPインデックス361に対応した第1キュー351)でもよい。 When the queue control unit 230 fetches an entry (S501: Yes), it is determined whether or not the D index 363 corresponding to the fetch source first queue 351 is 1 (S502). In the case of “fetching an entry”, at least one P index 361 indicates an integer equal to or greater than 1, and the number of the fetch source is determined by arbitration in at least one first queue 351 corresponding to the at least one P index 361. If one queue 351 is determined, this is sufficient. The first queue 351 that is the fetch source may be, for example, the first queue 351 that stores the largest number of entries (the first queue 351 corresponding to the P index 361 indicating the highest value).

 キュー制御部230は、Dインデックス363が1を示していれば(S502:Yes)、フェッチ対象のエントリを含む情報ユニットが標準長情報ユニットであると判断する(S503)。キュー制御部230は、エントリ長レジスタ373が示すエントリ長を基に、Dインデックス363が示す数のエントリをフェッチ元の第1キュー351からフェッチし、フェッチしたエントリを第2キュー371に格納する(S504)。 If the D index 363 indicates 1 (S502: Yes), the queue control unit 230 determines that the information unit including the fetch target entry is a standard length information unit (S503). Based on the entry length indicated by the entry length register 373, the queue control unit 230 fetches the number of entries indicated by the D index 363 from the first queue 351 that is the fetch source, and stores the fetched entries in the second queue 371 ( S504).

 キュー制御部230は、Dインデックス363が2以上のいずれかの整数を示していれば(S502:No)、フェッチ対象のエントリを含む情報ユニットが拡張長情報ユニットであると判断する(S505)。キュー制御部230は、エントリ長レジスタ373が示すエントリ長を基に、Dインデックス363が示す数のエントリを連続してフェッチ元の第1キュー351からフェッチし、フェッチしたエントリを連続して第2キュー371に格納する(S506)。 If the D index 363 indicates any integer greater than or equal to 2 (S502: No), the queue control unit 230 determines that the information unit including the fetch target entry is an extended length information unit (S505). Based on the entry length indicated by the entry length register 373, the queue control unit 230 successively fetches the number of entries indicated by the D index 363 from the first queue 351 that is the fetch source, Store in the queue 371 (S506).

 キュー制御部230は、S504又はS506を終えたときに(第2キュー371へエントリを格納したときに)、フェッチ元の第1キュー351からエントリを格納し終えたことを第1デバイスに通知する、具体的には、フェッチ元の第1キュー351に対応したCインデックス353を、格納済を示す値に更新する(S507)。第1デバイスは、格納済を示すCインデックス353を検出した場合(S510)、そのCインデックス353を所定値にリセットする(S511)。 When S504 or S506 is completed (when the entry is stored in the second queue 371), the queue control unit 230 notifies the first device that the entry has been stored from the first queue 351 that is the fetch source. Specifically, the C index 353 corresponding to the first queue 351 that is the fetch source is updated to a value indicating stored (S507). When the first device detects the C index 353 indicating stored (S510), the first device resets the C index 353 to a predetermined value (S511).

 上記の流れにおいて、フェッチ元の第1キュー351に対応したPインデックス361は、フェッチされたエントリの数分減算されてよい。 In the above flow, the P index 361 corresponding to the first queue 351 of the fetch source may be subtracted by the number of fetched entries.

 キュー制御部230は、第2キュー371に格納されているエントリを、情報ユニット単位で、複数のコア210から選択されたコア210に割り振り、そのプロセッサは、その割り振られたエントリにより構成される情報ユニットを第2デバイスに転送するための転送処理を行う。「転送処理」とは、例えば、DMAC220に情報ユニットの転送元及び転送先の設定することでよい。 The queue control unit 230 allocates the entry stored in the second queue 371 to the core 210 selected from the plurality of cores 210 in units of information units, and the processor includes information configured by the allocated entries. A transfer process for transferring the unit to the second device is performed. The “transfer processing” may be, for example, setting the information unit transfer source and transfer destination in the DMAC 220.

 ところで、複数のキュー制御部230の各々は、ベースアドレスレジスタ372、エントリ長レジスタ373、深さレジスタ375、Pインデックス361及びDインデックス363を含み、第1デバイス(サーバ向け又はCTL181向け)に対応している。複数のキュー制御部230のうちの少なくとも1つの各々について、CTL181向けとなるかサーバ向けとなるかが切り替えられる。この切り替えは、例えばモードレジスタ204内のモード値を変更することで可能である。 By the way, each of the plurality of queue control units 230 includes a base address register 372, an entry length register 373, a depth register 375, a P index 361, and a D index 363, and corresponds to the first device (for server or CTL 181). ing. At least one of the plurality of queue control units 230 is switched to the CTL 181 or the server. This switching is possible, for example, by changing the mode value in the mode register 204.

 図6は、モードレジスタ204を示す。 FIG. 6 shows the mode register 204.

 モードレジスタ204は、複数のキュー制御部230のうちの少なくとも1つの各々について、モード値を記憶する。モード値は、CTL181向けであるかサーバ向けであるかを示す。モード値に対応したキュー制御部230は、そのモード値が表すモード(CTL181向け又はサーバ向け)で実行される。言い換えれば、キュー制御部230は、ASIC111により、対応したモード値に従い制御される。モード値の切り替えは、例えば、対応する第1デバイスの立ち上げ時の環境設定の際に、ASIC111内の記憶領域(例えばメモリ)に記憶されているポリシー、又は、CTL181からの指示等に従い、行われる。 The mode register 204 stores a mode value for each of at least one of the plurality of queue control units 230. The mode value indicates whether it is for the CTL 181 or the server. The queue control unit 230 corresponding to the mode value is executed in the mode (for the CTL 181 or the server) represented by the mode value. In other words, the queue control unit 230 is controlled by the ASIC 111 according to the corresponding mode value. The mode value is switched according to a policy stored in a storage area (for example, a memory) in the ASIC 111 or an instruction from the CTL 181 at the time of environment setting when starting the corresponding first device, for example. Is called.

 CTL181には、CTL181上で動作するプロセッサ分の第1キュー351群(複数の第1キュー351)が用意されているが、CTL181上でファイルOS(オペレーティングシステム)が動作する場合など、すべての第1キュー351を使用しないケースが存在し得る。一方、サーバ123では、コア210毎又は仮想OS毎に第1キュー351群を持つことでI/O処理のオーバーヘッドを削減できる。例えば、NVMe(NVM-Express(Non-Volatile Memory Express))等では多数(例えば最大64000個)の第1キュー351までサポートできるため、なるべく多くの第1キュー351をもつことでシステム性能向上が期待される。本実施形態では、CTL181で使用しない第1キュー351が存在する場合に、これらの第1キュー351をサーバ123における第1キュー351として使用することできる。このため、ハードウェア資源の利用効率向上、ハードウェア規模削減およびシステム性能向上の効果が期待できる。 The CTL 181 is provided with a first queue 351 group (a plurality of first queues 351) corresponding to the processors operating on the CTL 181, but all the first queues 351, such as when a file OS (operating system) operates on the CTL 181, are provided. There may be cases where one queue 351 is not used. On the other hand, in the server 123, the overhead of I / O processing can be reduced by having the first queue 351 group for each core 210 or each virtual OS. For example, NVMe (NVM-Express (Non-Volatile Memory Express)) can support a large number (for example, a maximum of 64,000) of first queues 351, so having as many first queues 351 as possible is expected to improve system performance. Is done. In the present embodiment, when there are first queues 351 that are not used in the CTL 181, these first queues 351 can be used as the first queue 351 in the server 123. For this reason, it can be expected to improve the utilization efficiency of hardware resources, reduce the hardware scale, and improve the system performance.

 図7及び図8は、I/O処理の流れを示す。なお、図7及び図8において、「SVQ」は、サーバ向けキュー制御部を意味し、「CTQ」は、CTL向けキュー制御部を意味する。以下の説明では、サーバ#0、CTQ#3、SVQ#0及びCTL181間でのやり取りを例に取る。 7 and 8 show the flow of I / O processing. 7 and 8, “SVQ” means a server queue control unit, and “CTQ” means a CTL queue control unit. In the following description, communication between the servers # 0, CTQ # 3, SVQ # 0, and CTL 181 is taken as an example.

 サーバ123(以下、サーバ#0)が、サーバ#0内の第1キュー351に、I/Oリクエスト(情報ユニットの一例)をエントリ単位で格納する(S1)。その際、サーバ#0は、SVQ(以下、SVQ#3)における、格納先第1キュー351に対応したPインデックス361及びDインデックス363を、更新する。また、サーバ#0は、I/Oリクエストが書込みリクエストの場合、書込み対象のデータをサーバ#0内のメモリに格納し、書込み対象のデータの格納場所を第1のSGLに登録する。SGLは、分割されたアドレス情報及び次のアドレス情報へのポインタを格納したメモリ領域へのポインタを含ませたリストである。第1のSGLは、サーバ#0内のメモリに記憶される。 The server 123 (hereinafter referred to as server # 0) stores an I / O request (an example of an information unit) in the first queue 351 in the server # 0 in units of entries (S1). At that time, the server # 0 updates the P index 361 and the D index 363 corresponding to the storage destination first queue 351 in the SVQ (hereinafter, SVQ # 3). Further, when the I / O request is a write request, the server # 0 stores the write target data in the memory in the server # 0, and registers the storage location of the write target data in the first SGL. The SGL is a list including a pointer to a memory area in which the divided address information and a pointer to the next address information are stored. The first SGL is stored in the memory in server # 0.

 サーバ#0が、SVQ#3に書き込みを指示し(S2)、SVQ#3が、いずれかのコア210(例えばコア#0)に起動を通知する(S3)。コア#0は、SVQ#3に読み出しを指示し(S4)、SVQ#3が、その指示に応答して、Pインデックス361及びDインデックス363を基にI/Oリクエスト(1以上のエントリ)を第1キュー351からフェッチし第2キュー371に格納する(S5)。SVQ#3が、コア#0に読出し完了(第2キュー371内のI/Oリクエスト)を送信する(S6)。 Server # 0 instructs SVQ # 3 to write (S2), and SVQ # 3 notifies one of the cores 210 (for example, core # 0) of activation (S3). Core # 0 instructs SVQ # 3 to read (S4), and SVQ # 3 responds to the instruction by issuing an I / O request (one or more entries) based on P index 361 and D index 363. Fetched from the first queue 351 and stored in the second queue 371 (S5). SVQ # 3 transmits a read completion (I / O request in second queue 371) to core # 0 (S6).

 コア#0は、そのI/Oリクエストを、転送先CTL181のプロトコルに従い変換し、CTQ(以下、CTQ#0)に転送する(S8)。CTQ#0が、CTL181内のメモリにI/Oリクエストを書き込み、I/O起動をCTL181に対して行う(S9)。 Core # 0 converts the I / O request according to the protocol of the transfer destination CTL 181 and transfers it to the CTQ (hereinafter CTQ # 0) (S8). The CTQ # 0 writes an I / O request to the memory in the CTL 181 and performs I / O activation for the CTL 181 (S9).

 CTL181が、I/Oリクエストを解析し、CTL181内のメモリの領域を確保する(S10)。なお、I/Oリクエストが読出しリクエストの場合、CTL181は、その読出しリクエストに従い記憶デバイス123123からデータを読み出し、読み出したデータを、CTL181内のメモリに格納できる。その際、CTL181は、データの格納場所を第2のSGLに登録する。第2のSGLは、CTL181内のメモリに記憶される。 The CTL 181 analyzes the I / O request and secures a memory area in the CTL 181 (S10). When the I / O request is a read request, the CTL 181 can read data from the storage device 123123 according to the read request, and store the read data in the memory in the CTL 181. At that time, the CTL 181 registers the data storage location in the second SGL. The second SGL is stored in a memory in the CTL 181.

 CTL181が、DMAリクエスト(情報ユニットの一例)を生成し(S11)、そのDMAリクエストを第1キュー351に格納する。その際、CTL181は、CTQ#0における、格納先第1キュー351に対応したPインデックス361及びDインデックス363を、更新する。CTL181が、CTQ#0に、リクエスト受付の通知を送信する(S12)。 The CTL 181 generates a DMA request (an example of an information unit) (S11), and stores the DMA request in the first queue 351. At that time, the CTL 181 updates the P index 361 and the D index 363 corresponding to the storage destination first queue 351 in CTQ # 0. The CTL 181 transmits a request acceptance notification to the CTQ # 0 (S12).

 CTQ#0が、第1キュー351からDMAリクエストをフェッチし(S13)、フェッチしたDMAリクエストを第2キュー371に格納する。CTQ#0は、第2キュー371からDMAリクエストをコア210(例えばコア#0)に割り振る。コア#0は、SGL読出し要求を、SVQ#3又はCTQ#0に送信する(S15)。 CTQ # 0 fetches the DMA request from the first queue 351 (S13), and stores the fetched DMA request in the second queue 371. CTQ # 0 allocates a DMA request from the second queue 371 to the core 210 (for example, core # 0). Core # 0 transmits an SGL read request to SVQ # 3 or CTQ # 0 (S15).

 I/Oリクエストが書込みリクエストの場合、SGL読出し要求は、SVQ#3に送信される。SVQ#3は、第1のSGLをサーバ#0内のメモリから読み出し(S16)、第1のSGLを含んだ完了通知をコア#0に返す(S17)。 When the I / O request is a write request, the SGL read request is transmitted to SVQ # 3. The SVQ # 3 reads the first SGL from the memory in the server # 0 (S16), and returns a completion notification including the first SGL to the core # 0 (S17).

 I/Oリクエストが読出しリクエストの場合、SGL読出し要求は、CTQ#0に送信される。CTQ#0は、第2のSGLをCTL181内のメモリから読み出し(S18)、第2のSGLを含んだ完了通知をコア#0に返す(S19)。 When the I / O request is a read request, the SGL read request is transmitted to CTQ # 0. The CTQ # 0 reads the second SGL from the memory in the CTL 181 (S18), and returns a completion notification including the second SGL to the core # 0 (S19).

 コア#0は、完了通知内のSGL(第1又は第のSGL)に従うパラメータ(転送元アドレス及び転送先アドレス)を生成し(S20)、生成したパラメータをDMAC220(例えばDMAC#3)に設定しDMAC#3を起動する(S21)。DMAC#3が、設定されたパラメータに従い、サーバ#0内のメモリとCTL181内のメモリ間のデータ転送をDMAにより行う(S22)。 Core # 0 generates parameters (transfer source address and transfer destination address) according to SGL (first or second SGL) in the completion notification (S20), and sets the generated parameters in DMAC 220 (for example, DMAC # 3). DMAC # 3 is activated (S21). The DMAC # 3 performs data transfer between the memory in the server # 0 and the memory in the CTL 181 by DMA according to the set parameters (S22).

 DAMC#3は、データ転送後、完了通知をコア#0に返す(S23)。コア#0は、DMAの完了通知を、S14のDMAリクエストの送信元(つまりCTQ#0)に送信する(S24)。CTQ#0は、S12のリクエストの応答を、CTL181内のメモリに格納する(S25)。CTL181は、I/O完了通知(情報ユニットの一例)を第1キュー351に格納し、S9のI/O起動の応答として、完了通知をCTQ#0に返す(S26)。その通知を受けたCTQ#0は、第1キュー351からI/O完了通知をフェッチし第2キュー371に格納する(S27)。CTQ#0は、第2キュー371からI/O完了通知をコア210(例えばコア#0)に割り振る(S28)。 DAMC # 3 returns a completion notification to core # 0 after data transfer (S23). The core # 0 transmits a DMA completion notification to the transmission source of the DMA request in S14 (that is, CTQ # 0) (S24). CTQ # 0 stores the response to the request in S12 in the memory in the CTL 181 (S25). The CTL 181 stores an I / O completion notification (an example of an information unit) in the first queue 351, and returns a completion notification to the CTQ # 0 as a response to the I / O activation in S9 (S26). Receiving the notification, CTQ # 0 fetches the I / O completion notification from the first queue 351 and stores it in the second queue 371 (S27). CTQ # 0 allocates an I / O completion notification from the second queue 371 to the core 210 (for example, core # 0) (S28).

 I/O完了通知を受けたコア#0は、サーバ#0及びCTL181の各々について応答パラメータを作成する(S29)。コア210は、応答パラメータをSVQ#3に送信し(S30)、SVQ#3が、その応答パラメータをサーバ#0に送信する(S31)。コア210は、応答パラメータをCTQ#0に送信し(S32)、CTQ#0が、その応答パラメータをCTL181に送信する(S33)。 Core # 0 that has received the I / O completion notification creates response parameters for each of server # 0 and CTL 181 (S29). The core 210 transmits a response parameter to the SVQ # 3 (S30), and the SVQ # 3 transmits the response parameter to the server # 0 (S31). The core 210 transmits a response parameter to CTQ # 0 (S32), and CTQ # 0 transmits the response parameter to the CTL 181 (S33).

 以上、一実施形態を説明したが、本発明は、その実施形態に限定されない。 Although one embodiment has been described above, the present invention is not limited to that embodiment.

101:計算機システム 101: Computer system

Claims (13)

 記憶デバイスに対するデータの入出力を制御するストレージコントローラと、
 PCIeに従い前記ストレージコントローラと情報ユニットを通信するサーバと、
 前記サーバと前記ストレージコントローラ間の情報ユニットの通信を仲介する仲介デバイスと
を有し、
 前記サーバ及び前記ストレージコントローラのうちの一方である第1デバイスが、複数の第1キューを有し、
 前記仲介デバイスが、複数のプロセッサと、前記複数のプロセッサに対応した第2キューとを有し、
 前記複数の第1キューの各々について、第1及び第2インデックスが設けられ、
 前記第1デバイスが、前記複数の第1キューから選択した第1キューに情報ユニットをエントリ単位で格納し、
 前記仲介デバイスが、前記複数の第1キューの各々について、第1キューのアドレスを示すベースアドレスレジスタと、エントリ長を示すエントリ長レジスタと、第1キューに格納可能なエントリの最大数を示す深さレジスタとを有し、
 各第1インデックスは、その第1インデックスに対応する第1キューのベースアドレスレジスタで示されるポインタからの差分を示す値であり、
 各第2インデックスは、その第2インデックスに対応する第1キューに格納された情報ユニットを構成するエントリ数を示す値であり、
 前記第1デバイスが、前記複数の第1キューのいずれかに情報ユニットを格納した場合、その情報ユニットを構成するエントリの数を基に、その情報ユニットの格納先の第1キューに対応した第1及び第2インデックスを更新し、
 前記仲介デバイスが、前記複数の第1キューのうち、エントリが存在することを示している第1インデックスに対応した各第1キューについて、
  第2インデックスが1を示していれば、フェッチ対象のエントリを含む情報ユニットが標準長の情報ユニットであると判断し、第2インデックスが2以上のいずれかの整数を示していれば、フェッチ対象のエントリを含む情報ユニットが拡張長の情報ユニットであると判断し、
  前記長さレジスタが示すエントリ長を基に、第2インデックスが示す数のエントリをその第1キューからフェッチし、フェッチしたエントリを前記第2キューに格納し、
  前記第2キューへエントリを格納したときに、その第1キューからエントリをフェッチしたことを前記第1デバイスに通知し、
 前記仲介デバイスが、前記第2キューに格納されているエントリを、情報ユニット単位で、前記複数のプロセッサから選択されたプロセッサに割り振り、そのプロセッサは、その割り振られたエントリにより構成される情報ユニットを、その情報ユニットの送信先のデバイスである第2デバイスに転送するための処理を行う、
計算機システム。
A storage controller for controlling data input / output to / from the storage device;
A server that communicates the storage controller and the information unit according to PCIe;
An intermediary device that mediates communication of information units between the server and the storage controller;
A first device that is one of the server and the storage controller has a plurality of first queues;
The intermediary device has a plurality of processors and a second queue corresponding to the plurality of processors;
First and second indexes are provided for each of the plurality of first queues,
The first device stores an information unit in an entry unit in a first queue selected from the plurality of first queues;
For each of the plurality of first queues, the intermediary device has a base address register indicating the address of the first queue, an entry length register indicating the entry length, and a depth indicating the maximum number of entries that can be stored in the first queue. And a register
Each first index is a value indicating a difference from the pointer indicated by the base address register of the first queue corresponding to the first index,
Each second index is a value indicating the number of entries constituting the information unit stored in the first queue corresponding to the second index,
When the first device stores an information unit in any one of the plurality of first queues, the first device corresponding to the first queue that stores the information unit is based on the number of entries constituting the information unit. Update 1 and 2 index,
For each first queue corresponding to a first index indicating that an entry exists among the plurality of first queues, the mediation device,
If the second index indicates 1, it is determined that the information unit including the fetch target entry is a standard length information unit. If the second index indicates any integer of 2 or more, the fetch target It is determined that the information unit including the entry is an extended length information unit,
Based on the entry length indicated by the length register, the number of entries indicated by the second index is fetched from the first queue, and the fetched entries are stored in the second queue.
When the entry is stored in the second queue, the first device is notified that the entry has been fetched from the first queue;
The intermediary device allocates an entry stored in the second queue to a processor selected from the plurality of processors in units of information units, and the processor assigns an information unit constituted by the allocated entries. , To perform processing for transferring to the second device that is the destination device of the information unit,
Computer system.
 前記仲介デバイスは、フェッチ対象のエントリを含む情報ユニットが拡張長の情報ユニットであると判断した場合、第2インデックスが示す数のエントリを、その第2インデックスに対応した第1キューから連続してフェッチし、その第2インデックスが示す数のエントリを連続してフェッチしている間、他の第1キューからエントリをフェッチしない、
請求項1記載の計算機システム。
When the intermediary device determines that the information unit including the entry to be fetched is an extended-length information unit, the number of entries indicated by the second index is continuously obtained from the first queue corresponding to the second index. Do not fetch entries from other first queues while fetching and continuously fetching the number of entries indicated by that second index,
The computer system according to claim 1.
 前記サーバ及び前記ストレージコントローラの各々がルートコンプレックスを有し、
 前記仲介デバイスは、前記サーバのルートコンプレックスと前記ストレージコントローラのルートコンプレックスとに接続されるエンドポイントであり、
 前記サーバ及び前記ストレージコントローラの各々が前記第1デバイスにも前記第2デバイスにもなり得るデバイスであり、
 前記仲介デバイスは、複数の第1キュー群にそれぞれ対応した複数のオブジェクトセットを有し、各第1キュー群が、複数の第1キューを含み、各オブジェクトセットが、ベースアドレスレジスタ、長さレジスタ、深さレジスタ、第1インデックス及び第2インデックスを含み、
 前記サーバ及び前記ストレージコントローラの各々が、1以上の第1キュー群を有し、
 前記複数のオブジェクトセットが、前記サーバが有する第1キュー群に対応したオブジェクトセットであるサーバ向けオブジェクトセットと、前記ストレージコントローラが有する第1キュー群に対応したオブジェクトセットであるストレージコントローラ向けオブジェクトセットとを含む、
請求項2記載の計算機システム。
Each of the server and the storage controller has a root complex,
The intermediary device is an endpoint connected to the root complex of the server and the root complex of the storage controller,
Each of the server and the storage controller is a device that can be either the first device or the second device;
The intermediary device has a plurality of object sets respectively corresponding to a plurality of first queue groups, each first queue group includes a plurality of first queues, and each object set includes a base address register and a length register. A depth register, a first index and a second index,
Each of the server and the storage controller has one or more first queue groups,
The object set for a server that is an object set corresponding to a first queue group included in the server, and the object set for a storage controller that is an object set corresponding to the first queue group included in the storage controller. including,
The computer system according to claim 2.
 前記仲介デバイスが、モードレジスタを有し、
 前記モードレジスタが、前記複数のオブジェクトセットのうちの少なくとも1つの各々について、サーバ向けオブジェクトセットであるかストレージコントローラ向けオブジェクトセットであるかを示し切り替え可能な値であるモード値を記憶し、
 前記仲介デバイスが、前記複数のオブジェクトセットのうちの少なくとも1つの各々を、そのオブジェクトセットに対応したモード値に従い制御する、
請求項3記載の計算機システム。
The mediating device has a mode register;
The mode register stores, for each of at least one of the plurality of object sets, a mode value that is a switchable value indicating whether it is a server object set or a storage controller object set;
The mediating device controls each of at least one of the plurality of object sets according to a mode value corresponding to the object set;
The computer system according to claim 3.
 各エントリのエントリ長は同じであり、
 前記標準長は、エントリ長以下であり、頻繁に使用されるタイプのI/Oコマンドが有する引数が収まる長さであり、
 前記拡張長は、エントリ長のN倍(Nは2以上の整数)である、
請求項4記載の計算機システム。
Each entry has the same entry length,
The standard length is equal to or shorter than the entry length, and is a length that can accommodate an argument of a frequently used type I / O command,
The extension length is N times the entry length (N is an integer of 2 or more).
The computer system according to claim 4.
 前記第1デバイスが、前記複数の第1キューの各々について第3インデックスを有し、
 前記仲介デバイスが、前記複数の第1キューの各々について前記第1及び第2インデックスを有し、前記第2キューへエントリを格納したときに、そのエントリのフェッチ元の第1キューに対応した第3インデックスを更新し、
 第3インデックスの更新が、その第3インデックスに対応した第1キューからエントリをフェッチしたことの通知である、
請求項5記載の計算機システム。
The first device has a third index for each of the plurality of first queues;
When the intermediary device has the first and second indexes for each of the plurality of first queues and stores an entry in the second queue, the intermediate device corresponds to the first queue from which the entry was fetched. 3 Update the index,
The update of the third index is a notification that the entry has been fetched from the first queue corresponding to the third index.
The computer system according to claim 5.
 1以上のストレージコントローラと1以上のサーバとを含んだ複数のデバイスにおけるデバイス間のPCIeに従う通信であって情報ユニットの通信を仲介する仲介デバイスであって、
 前記1以上のサーバに接続されるインターフェイスデバイスであるサーバインターフェイスと、
 前記1以上のストレージコントローラに接続されるインターフェイスデバイスであるストレージインターフェイスと、
 複数のプロセッサと、
 前記サーバインターフェイス、前記ストレージインターフェイス及び前記複数のプロセッサに接続され、前記複数のプロセッサに対応した第2キューを有し、前記第2キューを制御するキュー制御部と
を有し、
 前記複数のデバイスのうちのいずれかである第1デバイスが、複数の第1キューを有し、前記複数の第1キューから選択した第1キューに情報ユニットをエントリ単位で格納し、
 前記複数の第1キューの各々について、インデックスが設けられ、
 各インデックスは、そのインデックスに対応する第1キューに格納された情報ユニットを構成するエントリの数を示す値であり、
 前記第1デバイスが、前記複数の第1キューのいずれかに情報ユニットを格納した場合、その情報ユニットを構成するエントリの数を基に、その情報ユニットの格納先の第1キューに対応したインデックスを更新し、
 前記キュー制御部が、前記複数の第1キューのうち、エントリが存在する各第1キューについて、
  インデックスが示す数のエントリをその第1キューからフェッチし、フェッチしたエントリを前記第2キューに格納し、
 前記キュー制御部が、前記第2キューに格納されているエントリを、情報ユニット単位で、前記複数のプロセッサから選択されたプロセッサに割り振り、そのプロセッサは、その割り振られたエントリにより構成される情報ユニットを、その情報ユニットの送信先のデバイスである第2デバイスに転送するための処理を行う、
仲介デバイス。
A communication device according to PCIe between devices in a plurality of devices including one or more storage controllers and one or more servers, and mediating the information unit communication,
A server interface that is an interface device connected to the one or more servers;
A storage interface that is an interface device connected to the one or more storage controllers;
Multiple processors,
A queue controller connected to the server interface, the storage interface and the plurality of processors, having a second queue corresponding to the plurality of processors, and controlling the second queue;
A first device that is one of the plurality of devices has a plurality of first queues, and stores information units in entry units in a first queue selected from the plurality of first queues;
An index is provided for each of the plurality of first queues,
Each index is a value indicating the number of entries constituting the information unit stored in the first queue corresponding to the index,
When the first device stores an information unit in one of the plurality of first queues, an index corresponding to the first queue where the information unit is stored is based on the number of entries constituting the information unit. Update
The queue control unit, for each first queue having an entry among the plurality of first queues,
Fetch the number of entries indicated by the index from the first queue, store the fetched entries in the second queue,
The queue control unit allocates an entry stored in the second queue to a processor selected from the plurality of processors in units of information units, and the processor is an information unit configured by the allocated entries. For transferring the information unit to the second device that is the destination device of the information unit,
Mediation device.
 前記キュー制御部は、インデックスが示す数のエントリを、そのインデックスに対応した第1キューから連続してフェッチし、そのインデックスが示す数のエントリを連続してフェッチしている間、他の第1キューからエントリをフェッチしない、
請求項7記載の仲介デバイス。
The queue control unit continuously fetches the number of entries indicated by the index from the first queue corresponding to the index, and continuously fetches the number of entries indicated by the index while the other first Do not fetch entries from the queue,
The mediating device according to claim 7.
 前記1以上のサーバの各々及び前記1以上のストレージコントローラの各々がルートコンプレックスを有し、
 前記仲介デバイスは、前記サーバのルートコンプレックスと前記ストレージコントローラのルートコンプレックスとに接続されるエンドポイントである、
請求項7記載の仲介デバイス。
Each of the one or more servers and each of the one or more storage controllers has a root complex;
The mediation device is an endpoint connected to a root complex of the server and a root complex of the storage controller.
The mediating device according to claim 7.
 前記1以上のサーバの各々及び前記1以上のストレージコントローラの各々が前記第1デバイスにも前記第2デバイスにもなり得るデバイスであり、
 1以上の前記キュー制御部は、複数の第1キュー群にそれぞれ対応した複数のインデックスセットを有し、各第1キュー群が、複数の第1キューを含み、各インデックスセットが、複数のインデックスを含み、
 前記1以上のサーバの各々及び前記1以上のストレージコントローラの各々が、1以上の第1キュー群を有し、
 前記複数のインデックスセットが、前記サーバが有する第1キュー群に対応したインデックスセットであるサーバ向けインデックスセットと、前記ストレージコントローラが有する第1キュー群に対応したインデックスセットであるストレージコントローラ向けインデックスセットとを含む、
請求項7記載の仲介デバイス。
Each of the one or more servers and each of the one or more storage controllers is a device that can be both the first device and the second device;
The one or more queue control units have a plurality of index sets respectively corresponding to a plurality of first queue groups, each first queue group includes a plurality of first queues, and each index set includes a plurality of index sets. Including
Each of the one or more servers and each of the one or more storage controllers has one or more first queue groups,
The server-specific index set in which the plurality of index sets are index sets corresponding to the first queue group of the server; and the storage controller index set that is an index set of the storage controller corresponding to the first queue group; including,
The mediating device according to claim 7.
 前記複数のオブジェクトセットのうちの少なくとも1つの各々について、サーバ向けインデックスセットであるかストレージコントローラ向けインデックスセットであるかを示し切り替え可能な値であるモード値を記憶するモード値記憶領域を有し、
 前記複数のインデックスセットのうちの少なくとも1つの各々が、そのインデックスセットに対応したモード値に従い制御される、
請求項10記載の仲介デバイス。
For each of at least one of the plurality of object sets, a mode value storage area that stores a mode value that is a switchable value indicating whether it is a server index set or a storage controller index set;
Each of at least one of the plurality of index sets is controlled according to a mode value corresponding to the index set;
The mediating device according to claim 10.
 各エントリのエントリ長は同じであり、
 前記標準長は、エントリ長以下であり、頻繁に使用されるタイプのI/Oコマンドが有する引数が収まるサイズであり、
 前記拡張長は、エントリ長のN倍(Nは2以上の整数)である、
請求項7記載の仲介デバイス。
Each entry has the same entry length,
The standard length is not more than the entry length, and is a size that can accommodate an argument of a frequently used type I / O command,
The extension length is N times the entry length (N is an integer of 2 or more).
The mediating device according to claim 7.
 前記キュー制御部が、前記第2キューへエントリを格納したときに、そのエントリのフェッチ元の第1キューを有する前記第1デバイスに、その第1キューからエントリをフェッチしたことを通知する、
請求項7記載の仲介デバイス。
When the queue control unit stores an entry in the second queue, it notifies the first device having the first queue from which the entry is fetched that the entry has been fetched from the first queue.
The mediating device according to claim 7.
PCT/JP2014/070562 2014-08-05 2014-08-05 Computer system and intermediary device Ceased WO2016020979A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/070562 WO2016020979A1 (en) 2014-08-05 2014-08-05 Computer system and intermediary device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/070562 WO2016020979A1 (en) 2014-08-05 2014-08-05 Computer system and intermediary device

Publications (1)

Publication Number Publication Date
WO2016020979A1 true WO2016020979A1 (en) 2016-02-11

Family

ID=55263285

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/070562 Ceased WO2016020979A1 (en) 2014-08-05 2014-08-05 Computer system and intermediary device

Country Status (1)

Country Link
WO (1) WO2016020979A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113961212A (en) * 2021-10-29 2022-01-21 重庆长安汽车股份有限公司 OTA installation package deployment method and system based on Ethernet and method for upgrading vehicle controller

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004220216A (en) * 2003-01-14 2004-08-05 Hitachi Ltd SAN / NAS integrated storage device
JP2012133405A (en) * 2009-07-24 2012-07-12 Hitachi Ltd Storage device and data transfer control method thereof
JP2013524334A (en) * 2010-09-09 2013-06-17 株式会社日立製作所 Storage apparatus and method for controlling command activation
JP2013206229A (en) * 2012-03-29 2013-10-07 Fujitsu Ltd Access control method, server device and storage device
JP2014106977A (en) * 2012-11-26 2014-06-09 Samsung Electronics Co Ltd Storage device and computing system including the same, and data transfer method thereof

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004220216A (en) * 2003-01-14 2004-08-05 Hitachi Ltd SAN / NAS integrated storage device
JP2012133405A (en) * 2009-07-24 2012-07-12 Hitachi Ltd Storage device and data transfer control method thereof
JP2013524334A (en) * 2010-09-09 2013-06-17 株式会社日立製作所 Storage apparatus and method for controlling command activation
JP2013206229A (en) * 2012-03-29 2013-10-07 Fujitsu Ltd Access control method, server device and storage device
JP2014106977A (en) * 2012-11-26 2014-06-09 Samsung Electronics Co Ltd Storage device and computing system including the same, and data transfer method thereof

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113961212A (en) * 2021-10-29 2022-01-21 重庆长安汽车股份有限公司 OTA installation package deployment method and system based on Ethernet and method for upgrading vehicle controller
CN113961212B (en) * 2021-10-29 2024-05-10 重庆长安汽车股份有限公司 OTA installation package deployment method and system based on Ethernet and method for upgrading vehicle controller

Similar Documents

Publication Publication Date Title
US10678432B1 (en) User space and kernel space access to memory devices through private queues
US9680931B1 (en) Message passing for low latency storage networks
CN110119248B (en) Control method, storage device and system for data read and write commands
JP6074056B2 (en) Computer system and data control method
US9547598B1 (en) Cache prefill of cache memory for rapid start up of computer servers in computer networks
US9557922B2 (en) System and method for peer-to-peer PCIe storage transfers
EP3796149B1 (en) Method and device for processing i/o request
EP3605347B1 (en) Systems and methods for i/o prioritization in nvme-compliant storage devices
JP6101170B2 (en) Computer system, cache management method, and computer
US9509771B2 (en) Prioritizing storage array management commands
JP2017512350A (en) Method and system for centralized networking and storage
US10097658B2 (en) Traffic control of packet transfer
US10606754B2 (en) Loading a pre-fetch cache using a logical volume mapping
US20140372639A1 (en) Online migration of a logical volume between storage systems
WO2016181464A1 (en) Storage system and storage control method
JPWO2015155850A1 (en) Input/output device and method
WO2017072868A1 (en) Storage apparatus
WO2016020979A1 (en) Computer system and intermediary device
US10042788B2 (en) Storage system and method for controlling command transmission
US9921753B2 (en) Data replication across host systems via storage controller
JP6578694B2 (en) Information processing apparatus, method, and program
JPWO2013062109A1 (en) I/O device control system and I/O device control method
WO2013001578A1 (en) Input/output control device and frame processing method for input/output control device
JPWO2017188036A1 (en) ACCESS CONTROL DEVICE, ACCESS CONTROL SYSTEM, ACCESS CONTROL METHOD, AND ACCESS CONTROL PROGRAM
US12050544B2 (en) Predicting free buffer space in a USB extension environment

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

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP