WO2015155997A1 - 設定装置、制御装置、設定方法及びネットワークスイッチ - Google Patents

設定装置、制御装置、設定方法及びネットワークスイッチ Download PDF

Info

Publication number
WO2015155997A1
WO2015155997A1 PCT/JP2015/002019 JP2015002019W WO2015155997A1 WO 2015155997 A1 WO2015155997 A1 WO 2015155997A1 JP 2015002019 W JP2015002019 W JP 2015002019W WO 2015155997 A1 WO2015155997 A1 WO 2015155997A1
Authority
WO
WIPO (PCT)
Prior art keywords
setting
information
packet
processing hint
computer
Prior art date
Application number
PCT/JP2015/002019
Other languages
English (en)
French (fr)
Inventor
聡 辻
Original Assignee
日本電気株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Priority to JP2016512609A priority Critical patent/JPWO2015155997A1/ja
Publication of WO2015155997A1 publication Critical patent/WO2015155997A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system

Definitions

  • the present invention relates to a setting device, a control device, a setting method, and a program, and in particular, a setting device that adds hint information called a processing hint to a packet exchanged between a computer and an I / O (Input / output) device.
  • the present invention relates to a control device, a setting method, and a program.
  • FIG. 22 shows a general configuration of a computer.
  • the computer X1 includes a CPU (Central Processing Unit) 2, a main memory 3, an I / O controller 4, a PCI Express (registered trademark) device 5, and a storage device 6. Is done.
  • CPU Central Processing Unit
  • main memory main memory
  • I / O controller 4 main memory
  • PCI Express registered trademark
  • the I / O controller 4 is a controller that controls access to various I / O devices connected to the system bus included in the computer X1, and includes a PCI Express route complex 40 and a serial ATA (Advanced Technology Attachment) controller 41 inside. And comprising.
  • the I / O controller 4 provides the CPU 2 with an access function for these I / O devices.
  • the PCI Express device 5 is an I / O device connected to an I / O fabric network based on the PCI Express protocol, and is called an endpoint in the PCI Express specification.
  • Examples of such devices include devices for connecting to computer networks such as NIC (Network Interface Card), devices for connecting storage devices such as RAID (Redundant Arrays of Independent Disks) cards, and GPUs (Graphics Processing Unit).
  • Examples of such display display devices and devices having an AV (Audio Visual) function such as a sound card and a video capture card.
  • the I / O fabric network has a tree structure in which the PCI Express root complex 40 is the root, the PCI Express switch and the PCI Express bridge are intermediate nodes, and the endpoint is a leaf.
  • These elements existing in the I / O fabric network are identified by a combination of a bus number, a device number, and a function number in the I / O fabric network, called a BDF (Bus, Device, Function) number. These elements can be identified by using an address indicating a memory area that is mapped to the memory space of the computer X1 and is uniquely assigned to each element.
  • the storage device 6 is a storage device that conforms to the ATA standard, and examples thereof include an HDD (Hard Disk Drive), an SSD (Solid State Drive), and a Blu-ray (registered trademark) drive.
  • an HDD Hard Disk Drive
  • an SSD Solid State Drive
  • a Blu-ray registered trademark
  • the PCI Express root complex 40 is an interface for connecting the CPU 2 and each element on the I / O fabric network, which is located in the highest layer (root) of the I / O fabric network.
  • the serial ATA controller 41 is a controller for connecting the CPU 2 and a storage device such as HDD or SSD.
  • the I / O controller 4 includes a controller for connecting these various I / O devices to the computer X1.
  • FIG. 23 shows a computer X1b in which a PCI Express root complex 40 and a PCI Express device 5 are connected by using an extension network (Extension Network) 7.
  • Extension Network Extension Network 7.
  • the I / O fabric network has been realized by closing the inside of the case of the computer X1 and connecting the chip of the PCI Express root complex 40 or the chip of the PCI Express switch to the board of the computer 1 by printed wiring. It was. However, a method for realizing this I / O fabric network with an extended network 7 composed of a network cable and a network switch, such as a computer network such as Ethernet (registered trademark), has appeared.
  • the PCI Express device 5 does not need to be provided in the casing of the computer X1b, and can be installed over the expansion network 7.
  • FIG. 24 shows a protocol stack of the PCI Express protocol.
  • the PCI Express protocol stack is mainly composed of three layers: a transaction layer 42, a data link layer 44, and a physical layer 46.
  • a TLP Transaction Layer Protocol
  • DLLP Data Link Layer Protocol
  • the physical layer 46 encodes and serializes the DLLP packet and sends the packet to the I / O fabric network.
  • PCI Express at the time of encoding, 8b / 10b encoding or 128b / 130b encoding is executed according to the PCI Express version (for example, refer to pages 188 to 202 of Non-Patent Document 1).
  • Processing is performed from the lower layer on the packet receiving side.
  • the physical layer 46 decodes the packet and passes the DLLP packet to the data link layer 44.
  • error check using CRC is performed, and the TLP packet is passed to the transaction layer 42.
  • the data is delivered to the destination CPU 2 and the PCI Express device 5 via the transaction layer 42.
  • FIG. 3 shows an outline of the format of the TLP packet flowing in the I / O fabric network.
  • 32 bits are shown in one line.
  • the numbers in the upper part of FIG. 3 indicate byte positions (+0 to +3) in units of 8 bits and bit positions (7 to 0) in each byte position.
  • the numbers on the left side of FIG. 3 indicate the first byte position of each line.
  • a TLP packet includes a TLP prefix 50, a TLP header 52 (hereinafter referred to as “TLP header”), data 54 (hereinafter referred to as “TLP data”), and a TLP digest 56. Is composed of. However, the TLP prefix 50 and the TLP digest 56 are optional.
  • the TLP packet is transferred in the I / O fabric network based on the memory address or BDF number of the transfer destination.
  • FIG. 6 shows an example of the TLP header 52 of the TLP packet transferred by the memory address.
  • FIG. 7 shows an example of the TLP header 52 of the TLP packet transferred based on the BDF number.
  • the memory address that is the transfer destination of the TLP packet is stored in the address [31: 2] field 524, and the transmission source of the TLP packet is stored in the requester ID field 526.
  • the identifier of the PCI Express device 5 to be stored is stored. This requester ID is typically a BDF number.
  • the BDF number that is the transfer destination of the TLP packet is stored in the BDF number field 528, and the PCI that is the transmission source of the TLP packet is stored in the requester ID field 526.
  • An identifier such as the Express device 5 is stored.
  • PCI Express 2.1 a function is defined in which the PCI Express device 5 specifies a memory address as a destination and adds a hint to a TLP packet to be transmitted. This function is called TLP Processing Hints (TPH) and was taken into the specification from PCI Express 2.1.
  • TPH TLP Processing Hints
  • TPH is a function in which the PCI Express device 5 writes information called a steering tag in specific fields of the TLP prefix 50 and the TLP header 52 based on the memory address of the transfer destination of the TLP packet.
  • FIG. 4 shows an example of a TLP prefix 50 format.
  • FIG. 5 shows an example of the format of the TLP header 52.
  • the ST [15: 8] field 502 in FIG. 4 and the ST [7: 0] field 522 in FIG. 5 are areas for writing the steering tag.
  • the ST [15: 8] field 502 is optional.
  • 1 is set in the TH field 534 of FIG.
  • the NIC corresponding to DCA sets tag information in the ST [7: 0] field 522 of the TLP packet, and transmits the TLP packet to the CPU 2 and the I / O controller 4.
  • tag information includes (1) a flag indicating whether DCA is valid or invalid and an ID indicating a target cache, or (2) APIC (Advanced Programmable).
  • APIC Advanced Programmable
  • tag information is added to the TLP packet of the reception descriptor to be written back to the main memory 3.
  • tag information is added to the TLP packet of the reception descriptor to be written back to the main memory 3.
  • a mode for adding tag information to the TLP packet to the header buffer of the received packet is added to the payload of the received Ethernet packet.
  • the information written in the steering tag field has various meanings depending on the CPU 2, I / O controller 4, and PCI Express device 5. That is, the meaning of each bit of the steering tag field format and the steering tag field is different for each computer X1.
  • the PCI Express specification stipulates that a hint related to an access pattern for data to which a processing hint is added is provided.
  • a hint related to an access pattern is set in the PH field 532 of FIG.
  • Patent Document 1 discloses an example of a technique in which an element in an I / O fabric network changes a TLP packet.
  • an element in an I / O fabric network refers to a table from information included in the TLP header 52 and rewrites the TLP header 52 based on information acquired from the table.
  • the I / O system disclosed in Patent Document 1 rewrites address information indicating the transfer destination of the TLP packet in the TLP header 52 between the PCI Express route complex 40 and the PCI Express device 5.
  • TLP header rewriting means and means for storing rules indicating how to rewrite the address information
  • TLP header rewriting rule storage means prepare.
  • the TLP packet rewrite means acquires the changed address information from the TLP header rewrite rule storage means for the TLP packet from the CPU 2 to the PCI Express device 5 or from the PCI Express device 5 to the CPU 2, and the TLP header 52 is rewrite.
  • the N bits of the ST [7: 0] field 522 are associated with each layer of the storage hierarchy such as the cache memory of the CPU 2, and the N bits of the ST [15: 8] field 502 are bits.
  • a technique is described in which a hardware device other than the PCI Express device 5 or software such as an operating system (Operating System: OS) is used as a mask.
  • OS Operating System
  • the OS or the hardware device other than the PCI Express device 5 rewrites the bit mask value designated by the PCI Express device 5 according to the cache miss rate of the CPU 2 or the like.
  • a storage hierarchy for storing data transmitted from the PCI Express device 5 can be specified by performing a logical product operation with the rewritten bit mask and the ST [7: 0] field 522.
  • PCI Express Base Specification Revision 2.1 published in 2011, author PCI-SIG (registered trademark, The Peripheral Component Interconnect Group), pages 188-202 “Intel 82599 10 Gigbit Ethernet Controller Datasheet Revision 2.8”, published in 2013, Author Intel, Section 7 and Section 8.2.3.11.
  • a function for providing a processing hint is provided to each I / O device.
  • a PCI Express device corresponding to an older version of PCI Express does not have a processing hint function even if it is a bit with an I / O device compatible with the PCI Express protocol.
  • the PCI Express device corresponding to the new version of PCI Express may not have the TPH function. In these cases, the CPU 2 and the I / O controller 4 that can handle the TLP packet in which the TPH is set cannot use the function based on the TPH.
  • An object of the present invention is to provide a setting device, a control device, a setting method, and a program that can contribute to the spread of the processing hint function.
  • a setting information holding unit for holding setting information for setting a processing hint, and a setting unit for setting a processing hint for a packet that matches a condition defined in the setting information Is done.
  • a control device for setting setting information is provided for the setting device described above.
  • a network switch that functions as the setting device described above is provided.
  • a setting method including a step of holding setting information for setting a processing hint based on header information, and a step of setting a processing hint for a packet that matches a condition defined in the setting information is provided. Is done. The method is tied to a specific machine, a setting device located between a computer and one or more I / O devices.
  • the computer constituting the setting device arranged between the computer and the one or more I / O devices Based on the header information of the packet flowing through, the processing for holding the setting information for setting the processing hint and the processing for setting the processing hint for the packet that matches the condition defined in the setting information are executed.
  • a program is provided. This program can be recorded on a computer-readable (non-transient) storage medium. That is, the present invention can be embodied as a computer program product.
  • It shows an example of information regarding the memory space held by the device information holding unit of the second exemplary embodiment of the present invention. It is a sequence diagram showing operation
  • the structure of the 3rd Embodiment of this invention is shown. 1 shows a general configuration of a computer. 1 shows a general configuration of a computer connected to an extended network. It is the figure which showed the protocol stack of PCI Express protocol.
  • the present invention can be realized by a processing hint setting device arranged between a computer and one or more I / O devices.
  • the processing hint setting device includes setting information holding means (see the processing hint control module 82 in FIG. 1) and processing hint setting means (see the processing hint setting module 80 in FIG. 1).
  • the setting information holding unit holds processing hint setting information for setting a processing hint based on header information of a packet flowing in the I / O fabric network between the computer and the I / O device.
  • the processing hint setting means sets a processing hint for a packet that matches a condition defined in the processing hint setting information.
  • the processing hint setting device is configured to set the processing hint instead of the I / O device.
  • FIG. 1 is a diagram showing the configuration of the first exemplary embodiment of the present invention.
  • a configuration in which a processing hint setting device 8 is inserted between a PCI Express device 5 and a PCI Express root complex 40 is shown.
  • the same components as those in FIGS. 22 and 23 are denoted by the same reference numerals, and detailed description thereof is omitted.
  • the computer 1 has the same configuration as the computers X1 and X1b of FIGS. 22 and 23, but this is not intended to limit the configuration of the computer 1 to the configuration of FIG.
  • the processing hint setting device 8 includes a processing hint setting module 80 and a processing hint control module 82.
  • the processing hint setting module 80 is a module that rewrites, adds, or deletes a processing hint to the TLP packet sent from the PCI Express device 5 (corresponding to the aforementioned “processing hint setting means”). The rewriting, giving, or deleting of the processing hint follows processing hint setting information specified by the processing hint control module 82.
  • FIG. 2 shows the configuration of the processing hint setting module 80.
  • the processing hint setting module 80 includes a processing hint rewriting unit 802, a processing hint setting information holding unit 804, and a check code recalculation unit 805.
  • the processing hint rewriting unit 802 sets a processing hint for the TLP packet according to the processing hint setting information stored in the processing hint setting information holding unit 804.
  • a TLP packet from the PCI Express device 5 or to the PCI Express device 5 is input to the processing hint setting module 80.
  • the processing hint rewriting unit 802 refers to the processing hint setting information holding unit 804 and assigns an appropriate processing hint.
  • the processing hint rewriting unit 802 sets the value of the TH field 534 (see reference numeral 534 in FIGS. 5 to 7) of the TLP packet to which no processing hint was originally given to 1.
  • the value of the PH field 532 (see FIG. 6) of the TLP packet can be changed by the processing hint rewriting unit 802 in the same way as rewriting or adding the processing hint.
  • CRC for detecting a bit error of the TLP packet in the data link layer is added to the TLP packet. Therefore, when the processing hint rewriting unit 802 changes or deletes the content of the processing hint set in the TLP packet, the check code recalculation unit 805 recalculates the CRC and assigns it to the TLP packet. Alternatively, when a processing hint is attached to the TLP packet and the TH field is rewritten, the check code recalculation unit 805 recalculates the CRC and assigns it to the TLP packet. If there is a TLP digest, CRC is also given to the TLP layer. In this case, recalculation of the CRC of the TLP layer is also necessary.
  • processing hint rewriting unit 802 includes a control interface 806 for communicating with the processing hint control module 82.
  • the processing hint setting information holding unit 804 holds processing hint setting information indicating under what conditions the processing hint is set.
  • the processing hint setting information gives a processing hint to the area specified by the address [31: 2] field 524.
  • a processing hint is added to a TLP packet transmitted from the PCI Express device 5 specified by a certain requester ID field 526.
  • Another example of the processing hint setting information is that a processing hint is given to a TLP packet in which the length field 530 included in the TLP header 52 has a value equal to or greater than a certain value.
  • FIG. 8 is a diagram showing an example of processing hint setting information held in the processing hint setting information holding unit 804.
  • a data structure in which a requester ID column 8042, a destination address column 8046, a TPH value column 8048, and a PH value column 8049 are associated with each other is shown.
  • a condition matching condition
  • a TPH value and a PH value to be assigned to the TLP packet that matches the condition are acquired. It is also possible to use requester ID values and destination address values as wild cards.
  • the destination address value so as to indicate a certain memory area, such as an area for 1 KByte from the memory address 0x10000000 (0x indicates a hexadecimal number).
  • the lower limit value and upper limit value of the memory address are registered in the processing hint setting information holding unit 804, or the lower limit value and mask value of the memory address are registered.
  • processing hint setting information in which an area from 0x10000000 to 1 KB is specified.
  • 0x10000000 is registered as the lower limit value of the memory address
  • 0x100003ff is registered as the upper limit value of the memory address.
  • the processing hint rewriting unit 802 refers to the processing hint setting information holding unit 804, a line having a requester ID that matches is extracted, and the destination memory address included in the TLP packet is the memory address of the extracted processing hint setting information. Compare whether it is between the upper and lower limits.
  • 0x10000000 is registered as the lower limit value of the memory address
  • 0xffffc00 is registered as the mask value.
  • the processing hint rewriting unit 802 refers to the processing hint setting information holding unit 804
  • the processing hint rewriting unit 802 extracts a line having a matching requester ID.
  • the processing hint rewriting unit 802 compares the destination memory address included in the TLP packet with the lower limit value by using the result of bitwise logical product with the mask value included in the extracted processing hint setting information. To do.
  • the comparison target is the lower limit value of the memory address included in the extracted processing hint setting information.
  • processing hint setting information holding unit 804 it is possible to cause the processing hint setting information holding unit 804 to hold a destination address indicating a certain range of memory area.
  • the requester ID column 8042 is a value of the requester ID field 526 set in the TLP packet.
  • the destination address column 8046 is a value indicating the destination address of the TLP packet. Specifically, in the case of a 32-bit address, the value set in the address [31: 2] field 524 of the TLP packet is stored.
  • the TPH value column 8048 stores the TPH value set in the TLP packet that matches the condition. In the case of TPH, when the value is 0, TPH indicates invalidity. In the example of FIG. 8, the processing hint setting information with the requester ID Y defines contents that invalidate the TPH originally set in the TLP packet.
  • the PH value column 8049 stores the PH value set for the TLP packet that matches the condition.
  • FIG. 9 is a diagram illustrating another example of the processing hint setting information held in the processing hint setting information holding unit 804.
  • the TLP packet length is set as a condition
  • the TPH specified by the TPH value string 8048 is set for the TLP packet that matches the condition.
  • the first processing hint setting information in FIG. 9 defines the contents for setting 0x1122 ("0x" indicates a hexadecimal number) as the TPH when the TLP packet is 64 bytes or less. Has been.
  • the second processing hint setting information in FIG. 9 defines the contents (0x0000) for invalidating the TPH when the TLP packet size is larger than 64 bytes.
  • the information indicating the destination of the TLP packet is a memory address, and only the TLP packet in which the destination is expressed by the memory address can be targeted. Whether the information indicating the destination of the TLP packet is a memory address or a BDF number can be confirmed by referring to the Type field 536.
  • the Type field 536 is a memory request or a TLP packet indicating an I / O request, the destination is represented by a memory address.
  • the processing hint control module 82 is a module for instructing which processing hint is set for which TLP packet by the processing hint setting module 80 (corresponding to the aforementioned “setting information holding means”).
  • FIG. 10 shows the configuration of the processing hint control module 82.
  • a configuration including a control interface 806, a processing hint construction unit 822, a processing hint setting request reception unit 824, and a device information acquisition unit 826 is illustrated.
  • the processing hint control module 82 receives the processing hint setting request from the external module, thereby constructing the processing hint setting information, and sets the constructed processing hint setting information in the processing hint setting information holding unit 804.
  • An example of the external module is an OS (Operating System) that runs on the computer 1.
  • the OS issues a processing hint setting request to the processing hint control module 82 based on the usage rate of the CPU 2 or the cache hit rate, or when a process that uses a certain PCI Express device 5 is activated.
  • the steering tag of the TLP packet from the PCI Express device 5 specifies the CPU 2 on which this process is executed.
  • a processing hint may determine whether to store a TLP packet from the PCI Express device 5 in the cache memory of the CPU 2. In this case, when the cache hit rate deteriorates, it is conceivable that the OS performs control for invalidating the processing hints of all TLP packets to the CPU 2. Such a cache hit rate can be acquired by referring to the performance counter of the CPU 2.
  • a processing hint is provided so that a TLP packet from the GPU is directly stored in the cache memory of the CPU 2 on which the process is running. It is possible to issue a request. Directly storing TLP packets from the GPU corresponds to cache injection.
  • the NIC In addition to the GPU, the same is possible with the NIC. That is, in the computer 1 having a plurality of NICs and a plurality of CPUs 2, it may be possible to set a processing hint so that an Ethernet packet received from a certain NIC is injected into a cache memory of a specific CPU 2.
  • the processing hint setting request receiving unit 824 is an interface for receiving a setting request for processing hint setting information from an external module (corresponding to a setting request receiving unit).
  • This setting request includes at least the identifier of the transmission source of the TLP packet, the destination memory address of the TLP packet, and information indicating what kind of processing hint is added. These identifiers may be wild cards.
  • the source identifier of the TLP packet is a BDF number.
  • the processing hint setting information to be set is for a TLP packet addressed to a certain range of memory address areas, the upper limit value and lower limit value of the memory area, or the lower limit value and the mask value are used instead of the destination memory address. It is also possible to give
  • the setting request when setting processing hints according to information other than the source or destination of the TLP packet, for example, the length of the TLP packet, the setting request includes such information (length Etc.).
  • length Etc. the length of the TLP packet
  • the device information acquisition unit 826 is a module that acquires information on the memory space of the computer 1, the BDF number of the PCI Express device 5 or the memory area to be used, and information on the tree structure of the I / O fabric network from an external module.
  • the tree structure of the I / O fabric network is a tree structure based on the BDF number.
  • the device information acquisition unit 826 corresponds to device information acquisition means.
  • these pieces of information can be obtained from, for example, an OS running on the computer 1, and can be obtained by output using an lspci command or the like in Linux (registered trademark) if it is information about a tree structure. These pieces of information can be obtained by reading a / proc / iomem file as long as it is information about the memory space.
  • the processing hint control module 82 communicates with the OS running on the computer 1 via a computer network or the like.
  • the processing hint control module 82 can be realized as a part of an OS running on the computer 1 or as a software program running on this OS. Further, the processing hint control module 82 can acquire the information by using inter-process communication or a system call.
  • the device information acquisition method it is conceivable to use a database for managing device information.
  • the OS registers device information in this database, and the device information acquisition unit 826 acquires device information from this database.
  • the processing hint construction unit 822 constructs processing hint setting information to be set in the processing hint setting information holding unit 804 based on the processing hint setting request received by the processing hint setting request reception unit 824.
  • the processing hint construction unit 822 inquires of the device information acquisition unit 826 whether or not such a device exists using the identifier (BDF number) of the transmission source device of the TLP packet included in the processing hint setting request. Also, with respect to the destination memory address of the TLP packet, it is confirmed whether the area indicated by the memory address is valid based on the memory space information of the computer 1 acquired by the device information acquisition unit 826. Therefore, the processing hint construction unit 822 also functions as a device confirmation unit and a processing hint storage unit.
  • each unit (processing means) of the processing hint setting device 8 shown in FIGS. 1, 2, 10 and the like is used for the computer constituting the device by using the hardware. It can be realized by a computer program for executing each process.
  • FIG. 11 is a sequence diagram showing the operation of the present embodiment when the OS running on the computer 1 is an external module.
  • the processing hint setting device in response to a request from the OS, constructs processing hint setting information and sets the processing hint in the processing hint setting information holding unit 804.
  • the OS first issues a processing hint setting information setting request (processing hint setting request) to the processing hint control module 82 (step S820 in FIG. 11).
  • processing hint setting request includes at least information regarding the identifier of the transmission source of the TLP packet, the destination memory address of the TLP packet, and the processing hint to be set.
  • the processing hint control module 82 issues a device information request to the OS (step S822 in FIG. 11).
  • This device information includes, for example, information that can be acquired with an lspci command in the case of Linux and information included in the / proc / iomem file.
  • the processing hint control module 82 constructs processing hint setting information from the information included in the processing hint setting information setting request received in step S820 of FIG. 11 and the device information acquired in step S824 of FIG. .
  • the construction of the processing hint setting information is shown in step S826 in FIG.
  • the processing hint setting information held in the processing hint setting information holding unit 804 shown in the examples of FIGS. 8 and 9 or a control message including the processing hint setting information is generated.
  • the processing hint control module 82 checks whether the TLP packet transmission source identifier and the TLP packet destination memory address included in the processing hint setting request received from the OS are valid. If there is no corresponding device in these checks, the processing hint control module 82 ends the process without constructing the processing hint.
  • the processing hint control module 82 transmits the processing hint setting information constructed in step S826 in FIG. 11 to the processing hint setting module 80 (step S828 in FIG. 11).
  • the processing hint setting module 80 registers the processing hint setting information received from the processing hint control module 82 in the processing hint setting information holding unit 804 (step S829 in FIG. 11).
  • FIG. 12 is a flowchart showing the operation of the processing hint control module 82 from step S822 to step S828 in FIG.
  • the processing hint control module 82 issues a device information request to the OS (external module) (step F822 in FIG. 12).
  • the processing hint control module 82 acquires device information from the OS (Yes in step F824 in FIG. 12).
  • the processing hint control module 82 checks whether the source and destination memory addresses of the TLP packet included in the processing hint construction request received from the OS are valid (step F825 in FIG. 12). At this time, it is confirmed whether the transmission source identifier and the transmission destination memory address of the TLP packet are valid in the device information.
  • step F825 of FIG. 12 when there is no device corresponding to the transmission source identifier of the TLP packet, the processing hint control module 82 ends the process without constructing the processing hint setting information.
  • the processing hint control module 82 ends the process without constructing the processing hint setting information.
  • step F825 in FIG. 12 when the corresponding transmission also has a device and the destination address is valid (“valid” in step F825 in FIG. 12), the following correspondence is made. That is, the processing hint control module 82 constructs processing hint setting information based on the processing hint construction request from the OS and the device information received in step F824 in FIG. 12 (step F826 in FIG. 12). Here, the processing hint setting information held in the processing hint setting information holding unit 804 shown in the examples of FIGS. 8 and 9 or a control message including the processing hint setting information is generated.
  • the processing hint control module 82 transmits the processing hint setting information constructed in step F826 in FIG. 12 to the processing hint setting module 80 (step F828 in FIG. 12).
  • the processing hint control module 82 sets the processing hint setting information in the processing hint setting information holding unit 804.
  • a processing hint setting device 8 is provided between the PCI Express device 5 and the PCI Express root complex 40.
  • the processing hint setting device 8 constructs processing hint setting information in response to a processing hint setting request from an external module. Based on the processing hint setting information, the processing hint setting device 8 gives a processing hint to the TLP packet flowing through the I / O fabric network. As a result, the processing hint function can be provided even to an I / O device that does not support the processing hint.
  • processing hints set by I / O devices are limited to formats for specific CPUs and I / O controllers.
  • the format of the processing hint can be constructed based on the information included in the processing hint setting request from the external module, so that the specific CPU 2 and the processing hint do not depend on the I / O controller 4. Can be anything.
  • FIG. 13 is a diagram showing a configuration of the second exemplary embodiment of the present invention.
  • a processing hint setting module 80 b is disposed between the PCI Express device 5 of each computer 1 and the PCI Express root complex 40.
  • the second embodiment includes a processing hint control module 82b that controls each processing hint setting module 80b including a processing hint setting module in the other computer 1.
  • FIG. 14 is a diagram showing a configuration of the processing hint setting module 80b.
  • the difference from the processing hint setting module 80 of the first embodiment shown in FIG. 2 is that a processing hint setting request receiving unit 824 and a device information registration request receiving unit 830 are added.
  • FIG. 14 the same components as those of FIG. 2 are denoted by the same reference numerals, and detailed description thereof is omitted.
  • the processing hint setting module 80b is provided in each computer 1, and in each computer 1, sets a processing hint for a TLP packet, accepts a processing hint setting request, and accepts a device information registration request.
  • the processing hint setting request receiving unit 824 is an interface for receiving a processing hint setting information setting request from the computer 1 provided with the processing hint setting module 80b.
  • the processing hint setting request receiving unit 824 is connected to the I / O fabric network as the PCI Express device 5.
  • the processing hint setting request receiving unit 824 can be accessed from an OS or the like running on the computer 1.
  • the device information registration request receiving unit 830 is an interface for notifying information.
  • the information includes information on an I / O device connected to an I / O fabric network provided in the computer 1 and a memory space of the computer 1 by the OS running on the computer 1 with respect to the processing hint control module 82b. Information. Similar to the processing hint setting request receiving unit 824, the device information registration request receiving unit 830 is realized as a PCI Express device 5. As a result, the device information registration request receiving unit 830 can be accessed from an OS or the like running on the computer 1. When the device information registration request receiving unit 830 transmits the device information of the computer 1 to the processing hint control module 82b, the device information registration request receiving unit 830 adds the identifier of the computer 1 and transmits it. This identifier is a unique value in the computer group managed by the processing hint setting device 8b.
  • FIG. 15 is a diagram showing a configuration of the processing hint control module 82b.
  • a processing hint control module 82 b including a processing hint construction unit 822 and a device information holding unit 828 is shown.
  • the same components as those of the processing hint control module 82 of the first embodiment shown in FIG. 10 are denoted by the same reference numerals, and detailed description thereof is omitted.
  • the device information holding unit 828 holds the I / O device information of each computer 1 together with the identifier of the computer 1.
  • FIG. 16 is a diagram illustrating an example of I / O device information held by the device information holding unit 828.
  • the device information holding unit 828 can acquire the I / O device information of the computer 1 by searching the device information as shown in FIG. 16 using the identifier of the computer 1.
  • the device information holding unit 828 stores information regarding the memory space of each computer 1 together with the identifier of the computer 1.
  • FIG. 17 is a diagram illustrating an example of information regarding the memory space held by the device information holding unit 828.
  • the device information holding unit 828 can acquire information on the memory space of the computer 1 by searching using the identifier of the computer 1 from the information shown in FIG. In FIG. 17, not only information on the memory area used by the I / O device but also information on the main memory and the video memory is described.
  • FIG. 17 it is conceivable to provide an area for holding a flag indicating whether or not a TLP packet can be transmitted in the memory area.
  • the processing hint construction unit 822 is an area where the TLP packet can be transmitted by referring to the flag even when the destination memory address of the TLP packet is a value included in the memory space of the computer 1 when the processing hint setting information is constructed Can be judged.
  • FIG. 18 to 20 are sequence diagrams showing the operation of this embodiment. First, an operation when registering the I / O device information of the computer 1 in the device information holding unit 828 will be described with reference to FIG. In FIG. 18, device information is transmitted from the OS running on the computer 1.
  • the OS issues a device information registration request together with the device information and the identifier of the computer 1 to the processing hint setting module 80b via the processing hint setting request receiving unit 824 (step S830b in FIG. 18).
  • the processing hint setting module 80b transmits the I / O device information and the identifier of the computer 1 to the processing hint control module 82b via the control interface 806b (step S832b in FIG. 18).
  • the processing hint construction unit 822 registers information on the I / O device together with the identifier of the computer 1 in the device information holding unit 828 (step S834b in FIG. 18).
  • I / O device information can be registered in the device information holding unit 828.
  • Information regarding the memory space of the computer 1 can be registered in the same manner.
  • FIG. 19 is a sequence diagram showing the operation of the processing hint setting device 8b when the configuration of the I / O device connected to the I / O fabric network of the computer 1 is changed.
  • the same operations as those in FIG. 18 are denoted by the same reference numerals, and detailed description thereof is omitted.
  • the OS changes the device information of the removed I / O device or the added I / O device together with the identifier of the computer 1 to the processing hint setting module 80b via the processing hint setting request receiving unit 824. Issue a request.
  • Step S831b in FIG. 19 indicates that a device information change request is issued to the processing hint setting module 80b.
  • the information on the removed or added I / O device includes at least the BDF number and information on the memory area used by the I / O device.
  • the processing hint setting module 80b transmits the I / O device information and the identifier of the computer 1 to the processing hint control module 82b (step S832b in FIG. 19).
  • the processing hint construction unit 822 updates the I / O device information registered in the device information holding unit 828 (step S835b in FIG. 19).
  • the processing hint constructing unit 822 searches for I / O device information using the identifier of the computer 1 and the BDF number and memory address of the I / O device to be updated, and the corresponding I / O device is searched.
  • / O Delete device information In the case of a BDF number, a matching I / O device is deleted. In the case of a memory address, an I / O device that uses a memory area including the memory address is deleted. Further, when adding an I / O device, information on the I / O device to be added is added to the I / O device information of the target computer 1.
  • the processing hint control module 82b instructs the processing hint setting module 80b included in the computer 1 that issued the I / O device information update request to delete the processing hint setting information.
  • the information to be deleted is processing hint setting information corresponding to the I / O device to be removed from the processing hint setting information holding unit 804.
  • An instruction to delete the processing hint setting information is shown in step S836b of FIG. Taking the example of the data structure of FIG. 8, first, the processing hint setting module 80b deletes the processing hint setting information that matches the requester ID column using the BDF number of the I / O device to be removed. Then, the processing hint setting module 80b uses the memory information of the I / O device to be removed, and deletes the processing hint setting information included in the memory area of the I / O device from which the value set in the destination address column is removed.
  • FIG. 20 is a sequence diagram showing a flow of processing in which the OS running on the computer 1 sets a processing hint as an external module to the processing hint setting module 80b. 20, the same operations as those in FIG. 11 are denoted by the same reference numerals, and detailed description thereof is omitted.
  • the OS issues a processing hint setting request to the processing hint setting module 80b via the processing hint setting request receiving unit 824 (step S820b in FIG. 20).
  • This request includes at least information about the identifier of the computer 1, the identifier of the TLP packet transmission source, the identifier of the transmission destination of the TLP packet, and the processing hint to be set.
  • the processing hint setting module 80b transmits a processing hint setting information setting request to the processing hint control module 82b via the control interface 806b (step S825 in FIG. 20).
  • the processing hint construction unit 822 included in the processing hint control module 82b constructs processing hint setting information (step S826b in FIG. 20).
  • the processing hint construction unit 822 uses the identifier of the computer 1 included in the processing hint setting information setting request, refers to the device information holding unit 828, and the information and memory of the corresponding computer 1 I / O device Get information about space.
  • the processing hint construction unit 822 compares the acquired I / O device information of the computer 1 with the processing hint construction request, and the I / O device corresponding to the identifier of the transmission source of the TLP packet included in the processing hint construction request. Check if exists.
  • the processing hint constructing unit 822 compares the acquired information about the memory space of the computer 1 with the destination memory address of the TLP packet, and confirms whether the destination memory address is a valid address. At this time, if the corresponding I / O device does not exist or the destination memory address is invalid, the processing hint constructing unit 822 ends the process without constructing the processing hint setting information.
  • the processing hint construction unit 822 transmits the constructed processing hint setting information to the processing hint setting module 80b. Further, the processing hint construction unit 822 registers the constructed processing hint setting information in the processing hint setting information holding unit 804 (step S828 in FIG. 20).
  • processing hint control module 82b and the processing hint setting module 80b set the processing hint setting information in the processing hint setting information holding unit 804.
  • the processing hint control module 82 b is provided as an external module of the computer 1 and is configured to construct processing hint setting information for a plurality of computers 1. Thereby, it is not necessary to provide a function for constructing a processing hint for each computer 1, and the cost of the processing hint setting system can be reduced.
  • FIG. 21 is a diagram illustrating the configuration of a network switch according to the third embodiment of this invention.
  • a network switch arranged in the extended network 7 of FIG. 23 can be used.
  • the network switch includes a switch chip 802c that transfers a packet, and a forwarding table 804c that stores a rule for determining which port the switch chip 802c outputs the packet to.
  • the network switch further includes a control CPU 822c (826c) that controls the switch chip and a memory 828c that is used as a working memory by the control CPU 822c (826c).
  • the network switch includes a management port 824c (830c) for setting the network switch from the outside. Note that the configuration of such a network switch is the same as the configuration of a general network switch.
  • the network switch can operate the switch chip 802c as the processing hint rewriting unit 802 and use the forwarding table 804c as the processing hint setting information holding unit 804. Further, the network switch operates software that realizes functions equivalent to the processing hint construction unit 822 and the device information acquisition unit 826 on the control CPU 822c (826c). Thereby, the structure equivalent to the processing hint construction
  • the memory 828c is used as a device information holding unit 828.
  • a bus 806c connecting the control CPU 822c (826c) and the switch chip 802c is used as the control interface 806.
  • the management port 824c (830c) is used as a processing hint setting request receiving unit 824 and a device information registration request receiving unit 830.
  • the structure (8b of FIG. 13) which combined the processing hint setting module 80b and the processing hint control module 82b which are shown with the broken line of FIG. 13 can be obtained.
  • the configuration corresponding to the processing hint control module 82b can also be realized by a controller device that centrally controls a plurality of network switches.
  • the forwarding table 804c is realized by TCAM (Ternary Content Accessible Memory) or the like, and can be matched in any field of the packet header.
  • the switch chip 802c can rewrite an arbitrary field of the packet header to another value.
  • the control CPU 822c is a general-purpose processor, and a general-purpose OS such as Linux operates.
  • the memory 828c holds I / O device information and is also used as a memory for operating the OS. Its role is equivalent to that of the main memory 3 in the computer 1.
  • the management port 824c is connected to the control network of the extended network 7, and each computer 1 is also connected to this control network via a network interface provided in itself.
  • An OS running on each computer 1 connects to the processing hint setting device 8 via a management port and a fabric network.
  • the present invention can be realized by the network switch on the extended network 7.
  • a setting request receiving means for receiving a setting request for setting information including the identifier of the packet transmission source device, the destination memory address of the packet, and the value of the processing hint to be set;
  • Device information acquisition means for acquiring information on the devices connected to the I / O fabric network and information on the memory space of the computer; The device information is used to determine whether an I / O device corresponding to the identifier of the transmission source device of the packet exists in the I / O fabric network, and using the memory space information, Device confirmation means for determining whether the destination memory address of the packet is a valid value in the memory space of the computer;
  • the setting request is sent to the setting information holding unit.
  • Processing hint storage means for storing the received setting information; A setting device according to Supplementary Note 1 or Supplementary Note 2.
  • the device information acquisition means determines the range of the memory area, the allocation destination device of the memory area, and whether the packet can be transferred to the memory area.
  • the device confirmation means refers to the flag information and confirms whether the destination memory address of the packet is an area where the packet can be transferred,
  • the setting device according to any one of appendix 1 to appendix 3, wherein the processing hint storage unit discards the setting information when the packet cannot be transferred to the destination memory address area as a result of the confirmation by the device confirmation unit.
  • the setting information holding unit uses the identifier of the deleted I / O device to perform the corresponding setting.
  • a setting device comprising setting information deleting means for deleting information.
  • a setting device including setting information deleting means can be applied to the setting device according to any one of appendix 1 to appendix 4.
  • Setting information holding means for holding setting information for setting processing hints based on header information of packets flowing in the I / O fabric network between the computer and the I / O device;
  • a setting means for setting a processing hint for a packet that matches the condition defined in the setting information, and is connected to one or more computers comprising: A control device that sets setting information in the setting information holding unit in response to a setting request for the setting information from the one or more computers.
  • a setting request receiving means for receiving a setting request for setting information including the identifier of the packet transmission source device, the destination memory address of the packet, and the value of the processing hint to be set;
  • Device information acquisition means for acquiring information on the devices connected to the I / O fabric network and information on the memory space of the computer; The device information is used to determine whether an I / O device corresponding to the identifier of the transmission source device of the packet exists in the I / O fabric network, and using the memory space information, Device confirmation means for determining whether the destination memory address of the packet is a valid value in the memory space of the computer;
  • the setting request is sent to the setting information holding unit.
  • Processing hint storage means for storing the received setting information;
  • the control device according to appendix 6, comprising: [Appendix 8] Further, when one of the I / O devices provided in the I / O fabric network is deleted, the identifier of the deleted I / O device is used, and the setting information holding unit of the computer A setting device comprising setting information deleting means for deleting corresponding setting information.
  • a setting device including setting information deleting means can be applied to the control device described in Appendix 6 or Appendix 7.
  • Appendix 9 A forwarding table capable of holding the setting information as setting information holding means; A switch chip for setting a processing hint for the packet based on setting information registered in the forwarding table as the setting means; A network switch that functions as the setting device according to any one of appendix 1 to appendix 4.
  • a management port for receiving a setting information setting request from the computer acquiring information on an I / O device connected to the I / O fabric network, and information on a memory space of the computer; It is determined whether an I / O device corresponding to the identifier of the packet transmission source device exists in the I / O fabric network, and the destination memory address of the packet is a valid value in the memory space of the computer.
  • the forwarding table includes A control CPU for storing the setting information in response to the setting request; A network switch that functions as a setting device according to Appendix 3.
  • the control CPU uses the identifier of the corresponding I / O device, The network switch according to appendix 10, wherein the corresponding setting information is deleted from the forwarding table.
  • a processing hint is based on header information of a packet flowing in an I / O fabric network between the computer and the I / O device
  • a setting method comprising: holding setting information for setting a packet; and setting a processing hint for a packet that matches a condition defined in the setting information.
  • Appendix 14 Based on header information of a packet flowing in an I / O fabric network between the computer and the I / O device to a computer constituting a setting device arranged between the computer and one or more I / O devices A program for executing a process for holding setting information for setting a processing hint and a process for setting a processing hint for a packet that matches a condition defined in the setting information.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

 プロセッシングヒント機能の普及に貢献する。設定装置は、コンピュータと1つ以上のI/Oデバイスとの間に配置され、前記コンピュータとI/Oデバイスとの間のI/Oファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持する設定情報保持手段と、前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する設定手段と、を備える。

Description

設定装置、制御装置、設定方法及びネットワークスイッチ
 本発明は、設定装置、制御装置、設定方法及びプログラムに関し、特に、コンピュータとI/O(Input/output)デバイスとの間でやり取りするパケットに対してプロセッシングヒントと呼ばれるヒント情報を付加する設定装置、制御装置、設定方法及びプログラムに関する。
 図22は、コンピュータの一般的な構成を示したものである。図22を参照すると、コンピュータX1は、CPU(Central Processing Unit)2と、メインメモリ3と、I/Oコントローラ4と、PCI Express(登録商標)デバイス5と、ストレージデバイス6と、を備えて構成される。
 I/Oコントローラ4は、コンピュータX1が備えるシステムバスに接続される様々なI/Oデバイスに対するアクセスを制御するコントローラであり、内部にPCI Expressルートコンプレックス40と、シリアルATA(Advanced Technology Attachment)コントローラ41と、を備える。I/Oコントローラ4は、CPU2に対して、これらのI/Oデバイスに対するアクセス機能を提供する。
 PCI Expressデバイス5は、PCI Expressプロトコルに基づくI/Oファブリックネットワークに接続されるI/Oデバイスであり、PCI Expressの仕様ではエンドポイントと呼ばれる。
このようなデバイスの例として、NIC(Network Interface Card)のようなコンピュータネットワーク接続用のデバイスや、RAID(Redundant Arrays of Independent Disks)カードなどのストレージ装置接続用のデバイス、GPU(Graphics Processing Unit)のようなディスプレイ表示用のデバイス、サウンドカードやビデオキャプチャカードなどのAV(Audio Visual)機能を備えたデバイス、などが挙げられる。
 このI/Oファブリックネットワークを構成する要素として、PCI Expressルートコンプレックス40や、エンドポイントのほかに、スイッチやブリッジと呼ばれるノードが存在する。I/Oファブリックネットワークは、PCI Expressルートコンプレックス40をルートとし、PCI ExpressスイッチやPCI Expressブリッジを中間ノード、エンドポイントをリーフとしたツリー構造をとる。I/Oファブリックネットワーク中に存在するこれらの要素は、BDF(Bus、Device、Function)番号という、I/Oファブリックネットワーク中のバス番号、デバイス番号、ファンクション番号の組で識別される。また、これらの要素は、コンピュータX1のメモリ空間にマップされ、各要素に対して一意に割り当てられたメモリ領域を指すアドレスを用いて識別することも可能である。
 ストレージデバイス6は、ATA規格に従ったストレージデバイスであり、例として、HDD(Hard Disk Drive)やSSD(Solid State Drive)、Blu-ray(登録商標)ドライブなどが挙げられる。
 PCI Expressルートコンプレックス40は、I/Oファブリックネットワークの最上位階層(ルート)に位置し、CPU2とI/Oファブリックネットワーク上の各要素と、を接続するためのインタフェースである。
 シリアルATAコントローラ41は、CPU2と、HDDやSSDといったストレージデバイスを接続するためのコントローラである。
 これらのI/Oデバイス以外に、図22に示していないI/Oデバイスとして、例えばUSB(Universal Serial Bus)デバイスや、PS/2デバイス、シリアルポートデバイス、パラレルポートデバイス、などが存在する。I/Oコントローラ4は、これらの様々なI/OデバイスをコンピュータX1に接続するためのコントローラを備えている。
 図23は、PCI Expressルートコンプレックス40と、PCI Expressデバイス5とを、拡張ネットワーク(Extension Network)7を用いて接続したコンピュータX1bを示したものである。もともと、I/Oファブリックネットワークは、コンピュータX1の筐体の内部に閉じ、コンピュータ1の基板上にPCI Expressルートコンプレックス40のチップや、PCI Expressスイッチのチップをプリント配線で接続する形で実現されてきた。しかしながら、このI/Oファブリックネットワークを、イーサネット(登録商標)などのコンピュータネットワークのように、ネットワークケーブルとネットワークスイッチから構成される拡張ネットワーク7で実現する方式が登場してきている。このようなコンピュータX1bの場合、PCI Expressデバイス5は、コンピュータX1bの筐体の中に備えられる必要はなく、拡張ネットワーク7越しに設置することができる。
 図24はPCI Expressプロトコルのプロトコルスタックを示したものである。図24を参照すると、PCI Expressプロトコルスタックは、主に、トランザクションレイヤ42と、データリンクレイヤ44と、物理レイヤ46と、の3層から構成される。CPU2やPCI Expressデバイス5から、I/Oファブリックネットワークにパケットを送信する際には、パケットの宛先などに基づいて、トランザクションレイヤ42でTLP(Transaction Layer Protocol)パケットが構築され、データリンクレイヤ44に渡される。
 データリンクレイヤ44では、TLPパケットの先頭にシーケンス番号などの情報が、TLPパケットの最後尾にCRC(Cyclic Redundancy Check)が付加され、DLLP(Data Link Layer Protocol)パケットが構築される。構築されたDLLPパケットは物理レイヤ46に渡される。
 物理レイヤ46では、DLLPパケットをエンコーディング、及びシリアル化し、I/Oファブリックネットワークにパケットを送出する。PCI Expressにおいては、エンコーディング時に、PCI Expressのバージョンに応じて、8b/10bエンコーディングや、128b/130bエンコーディングが実行される(例えば、非特許文献1の188~202頁参照)。
 パケットの受信側では、下位レイヤから処理が行われる。まず、物理レイヤ46で、パケットのデコーディングが行われ、データリンクレイヤ44にDLLPパケットが渡される。データリンクレイヤ44では、CRCを用いたエラーチェックなどを行い、TLPパケットがトランザクションレイヤ42に渡される。そして、トランザクションレイヤ42を経由して、宛先のCPU2やPCI Expressデバイス5に、データが届けられる。
 図3は、I/Oファブリックネットワーク中を流れるTLPパケットのフォーマットの概要を示したものである。なお、図3の例では32ビット分を一行で表記している。また、図3の上部の数字は、8ビットを単位としたバイト位置(+0~+3)と、各バイト位置内でのビット位置(7~0)を示している。また、図3の左部の数字は各行の先頭バイト位置を示している。図3を参照すると、TLPパケットは、TLPプリフィックス50と、TLPヘッダ52(以降、「TLPヘッダ」と表記する)と、データ54(以降、「TLPデータ」と表記する)と、TLPダイジェスト56と、から構成される。ただし、TLPプリフィックス50と、TLPダイジェスト56はオプションである。
 TLPパケットは、I/Oファブリックネットワーク中を、転送先のメモリアドレス、またはBDF番号に基づいて転送される。図6は、メモリアドレスで転送されるTLPパケットのTLPヘッダ52の一例を示したものである。また、図7は、BDF番号に基づいて転送されるTLPパケットのTLPヘッダ52の一例を示したものである。
 メモリアドレスで転送するTLPパケットの場合(図6参照)、アドレス[31:2]フィールド524に、TLPパケットの転送先となるメモリアドレスを格納し、リクエスタIDフィールド526に、TLPパケットの送信元となるPCI Expressデバイス5などの識別子を格納する。このリクエスタIDは典型的にはBDF番号である。
 また、BDF番号で転送するTLPパケットの場合(図7参照)、BDF番号フィールド528に、TLPパケットの転送先となるBDF番号を格納し、リクエスタIDフィールド526に、TLPパケットの送信元となるPCI Expressデバイス5などの識別子を格納する。
 ところで、PCI Expressの仕様において、PCI Expressデバイス5が、メモリアドレスを宛先として指定し、送信するTLPパケットにヒントを付加する機能が定義されている。この機能はTLP Processing Hints(TPH)と呼ばれ、PCI Express 2.1から仕様に取り込まれた。PCI Express 2.1の仕様については非特許文献1に詳しい。
 TPHは、TLPプリフィックス50とTLPヘッダ52の特定のフィールドに、TLPパケットの転送先のメモリアドレスに基づいて、PCI Expressデバイス5が、ステアリングタグと呼ばれる情報を書き込む機能である。
 図4は、TLPプリフィックス50のフォーマットの一例を示したものである。また、図5は、TLPヘッダ52のフォーマットの一例を示したものである。図4のST[15:8]フィールド502と、図5のST[7:0]フィールド522が、ステアリングタグを書き込む領域である。なお、ST[15:8]フィールド502はオプションである。また、プロセッシングヒントを持つTLPヘッダであることを示すためには、図5のTHフィールド534に1がセットされる。
 このステアリングタグをどのように扱うかは、TLPパケットを受信する側のデバイス(CPU2やPCI Expressルートコンプレックス40)次第である。TPHと同様の仕組みは既にコンピュータ製品に搭載されている。例えば、ST[7:0]フィールド522を利用して、Intel社はDCA(Direct Cache Access)という機能を、同社のCPUやI/Oコントローラに搭載している。このDCAとは、PCI Expressデバイス5からのTLPパケットに含まれるTLPデータ54を、CPU2がST[7:0]フィールド522の情報(タグ情報)に基づいて、キャッシュメモリにハードウェアプリフェッチするものである。
 例えば、DCAに対応したNICは、TLPパケットのST[7:0]フィールド522にタグ情報をセットし、CPU2やI/Oコントローラ4に向けて、このTLPパケットを送信する。非特許文献2の7.5節によると、DCAの場合、タグ情報には、(1)DCAが有効か無効かを示すフラグとターゲットとなるキャッシュを示すID、あるいは(2)APIC(Advanced Programmable Interrupt Controller)IDに基づくターゲットCPUのID、のいずれかが格納される。
 また、非特許文献2の8.2.3.11節によると、Intel 82599 10Gigabit Ethernet(登録商標) Controllerでは、(1)メインメモリ3に書き戻す受信ディスクリプタのTLPパケットに対してタグ情報を付加するモード、(2)受信パケットのヘッダバッファへのTLPパケットにタグ情報を付加するモード、(3)受信したイーサネットパケットのペイロードに対してタグ情報を付加するモード、が存在する。
 このように、ステアリングタグのフィールドに書き込む情報は、CPU2やI/Oコントローラ4、PCI Expressデバイス5に応じて、様々な意味を持つ。つまり、コンピュータX1ごとに、ステアリングタグのフィールドフォーマット、ステアリングタグのフィールドの各ビットが持つ意味が異なる。
 また、PCI Expressの仕様では、プロセッシングヒントを付加したデータに対するアクセスパターンに関するヒントを与えることも規定されており、この場合、図6のPHフィールド532に、アクセスパターンに関するヒントを設定する。
 特許文献1には、I/Oファブリックネットワーク中の要素が、TLPパケットを変更する技術の一例が開示されている。特許文献1では、I/Oファブリックネットワーク中の要素が、TLPヘッダ52に含まれる情報からテーブルを参照し、テーブルから取得した情報をもとに、TLPヘッダ52を書き換えている。
 より具体的には、特許文献1のI/Oシステムは、PCI Expressルートコンプレックス40と、PCI Expressデバイス5との間に、TLPヘッダ52内の、TLPパケットの転送先を示すアドレス情報を書き換える手段(以降、「TLPヘッダ書き換え手段」と表記する)と、前記アドレス情報をどのように書き換えるかを示したルールを格納する手段(以降、「TLPヘッダ書き換えルール格納手段」と表記する)と、を備える。TLPヘッダ書き換えルール格納手段には、TLPヘッダに含まれるアドレス情報をキーとして与えることで、変更後のアドレス情報を引くことができる。これにより、CPU2からPCI Expressデバイス5、あるいはPCI Expressデバイス5からCPU2へのTLPパケットを、前記TLPパケット書き換え手段が、TLPヘッダ書き換えルール格納手段から変更後のアドレス情報を取得し、TLPヘッダ52を書き換える。
 また、特許文献2には、ST[7:0]フィールド522のNビットをCPU2のキャッシュメモリなどの記憶階層の各階層に対応させ、また、ST[15:8]フィールド502のNビットをビットマスクとして使用し、このビットマスクをPCI Expressデバイス5以外のハードウェアデバイス、またはオペレーティングシステム(Operating System:OS)などのソフトウェアが変更する技術が記載されている。
 特許文献2によると、PCI Expressデバイス5が指定したビットマスク値を、OSまたはPCI Expressデバイス5以外のハードウェアデバイスがCPU2のキャッシュミス率などに応じて書き換える。そして、書き換え後のビットマスクとST[7:0]フィールド522と論理積の演算を行うことで、PCI Expressデバイス5から送信されたデータを格納する記憶階層を指定することができる。
国際公開第2009/025381号 米国特許出願公開第2013/0173834号明細書
「PCI Express Base Specification Revision 2.1」、2011年発行、著者PCI-SIG(登録商標、The Peripheral Component Interconnect Special Interest Group)、第188頁~第202頁 「Intel 82599 10 Gigabit Ethernet Controller Datasheet Revision 2.8」、2013年発行、著者Intel、第7節、及び、第8.2.3.11節
 以下の分析は、本発明の発明者によって与えられたものである。例えば、PCI Expressにおけるプロセッシングヒント機能について、I/Oデバイスがプロセッシングヒントの機能を持っていないと、同機能を利用することができない。
 その理由は、プロセッシングヒントを与える機能が、個々のI/Oデバイスに提供されるからである。例えば、PCI Expressプロトコルに対応したI/Oデバイスと一口にいっても、古いバージョンのPCI Expressに対応したPCI Expressデバイスは、プロセッシングヒント機能を備えていない。また、新しいバージョンのPCI Expressに対応したPCI Expressデバイスでも、TPHの機能を実装していない場合がある。これらの場合、TPHが設定されたTLPパケットを扱えるCPU2やI/Oコントローラ4はTPHによる機能を利用できないことになる。
 とりわけ、拡張ネットワーク経由でI/Oデバイスが接続される環境を想定すると、上記のような状況は多数生じることになる。
 本発明の目的は、プロセッシングヒント機能の普及に貢献できる設定装置、制御装置、設定方法及びプログラムを提供することにある。
 第1の視点によれば、コンピュータと1つ以上のI/Oデバイスとの間に配置され、前記コンピュータとI/Oデバイスとの間のI/Oファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持する設定情報保持手段と、前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する設定手段と、を備える設定装置が提供される。
 第2の視点によれば、上記した設定装置に対し、設定情報を設定する制御装置が提供される。
 第3の視点によれば、上記した設定装置として機能するネットワークスイッチが提供される。
 第4の視点によれば、コンピュータと1つ以上のI/Oデバイスとの間に配置された設定装置において、前記コンピュータとI/Oデバイスとの間のI/Oファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持するステップと、前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定するステップと、を含む設定方法が提供される。
本方法は、コンピュータと1つ以上のI/Oデバイスとの間に配置された設定装置という、特定の機械に結びつけられている。
 第5の視点によれば、コンピュータと1つ以上のI/Oデバイスとの間に配置された設定装置を構成するコンピュータに、前記コンピュータとI/Oデバイスとの間のI/Oファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持する処理と、前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する処理と、を実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な(非トランジエントな)記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
 本発明によれば、プロセッシングヒント機能の普及に貢献することが可能となる。
本発明の第1の実施形態の構成を示した図である。 図1のプロセッシングヒント設定モジュールの構成を示した図である。 I/Oファブリックネットワーク中を流れるTLPパケットのフォーマットの概要を示した図である。 TLPプリフィックスのフォーマットの一例を示した図である。 TLPヘッダのフォーマットの一例を示した図である。 メモリアドレスで転送されるTLPパケットのヘッダの一例を示した図である。 BDF番号に基づいて転送されるTLPパケットのヘッダの一例を示した図である。 図2のプロセッシングヒント設定情報保持部に保持されるプロセッシングヒント設定情報の一例を示した図である。 図2のプロセッシングヒント設定情報保持部に保持されるプロセッシングヒント設定情報の別の例を示した図である。 図1のプロセッシングヒント制御モジュールの構成を示した図である。 本発明の第1の実施形態の動作を表したシーケンス図である。 本発明の第1の実施形態のプロセッシングヒント設定装置の動作を示したフローチャートである。 本発明の第2の実施形態の構成を示した図である。 図13のプロセッシングヒント設定モジュールの構成を示した図である。 図13のプロセッシングヒント制御モジュールの構成を示した図である。 本発明の第2の実施形態のデバイス情報保持部が保持するI/Oデバイス情報の一例を示したものである。 本発明の第2の実施形態のデバイス情報保持部が保持するメモリ空間に関する情報の一例を示したものである。 本発明の第2の実施形態の動作(デバイス登録時)を表したシーケンス図である。 本発明の第2の実施形態の動作(デバイス情報更新時)を表したシーケンス図である。 本発明の第2の実施形態の動作(プロセッシングヒント設定準備)を表したシーケンス図である。 本発明の第3の実施形態の構成を示したものである。 コンピュータの一般的な構成を示したものである。 拡張ネットワークに接続されたコンピュータの一般的な構成を示したものである。 PCI Expressプロトコルのプロトコルスタックを示した図である。
 はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
 本発明は、その一実施形態において、コンピュータと1つ以上のI/Oデバイスとの間に配置されたプロセッシングヒント設定装置にて実現できる。より具体的には、このプロセッシングヒント設定装置は、設定情報保持手段(図1のプロセッシングヒント制御モジュール82参照)と、プロセッシングヒント設定手段(図1のプロセッシングヒント設定モジュール80参照)と、を備える。設定情報保持手段は、コンピュータとI/Oデバイスとの間のI/Oファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するためのプロセッシングヒント設定情報を保持する。さらに、プロセッシングヒント設定手段は、このプロセッシングヒント設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する。
 上記構成を備えることにより、I/Oデバイスがプロセッシングヒントの機能を持っていない場合においてもプロセッシングヒント機能を利用することが可能となる。その理由は、プロセッシングヒント設定装置が、I/Oデバイスに代わってプロセッシングヒントを設定するよう構成したことにある。
[第1の実施形態]
 続いて、本発明の第1の実施形態について、図面を参照して詳細に説明する。図1は、本発明の第1の実施形態の構成を示した図である。図1を参照すると、PCI Expressデバイス5と、PCI Expressルートコンプレックス40と、の間に、プロセッシングヒント設定装置8を挿入した構成が示されている。なお、図1においては、図22、図23と同一の構成要素に対しては同一の符号を付し、詳細な説明を省略する。
また、コンピュータ1は、図22、23のコンピュータX1、X1bと同様の構成としているが、このことは、コンピュータ1の構成を図1の構成に限定することを意図するものではない。
 プロセッシングヒント設定装置8は、プロセッシングヒント設定モジュール80と、プロセッシングヒント制御モジュール82と、を備えて構成される。
 プロセッシングヒント設定モジュール80は、PCI Expressデバイス5から送られてきたTLPパケットに対し、プロセッシングヒントの書き換え、付与、あるいは削除を行うモジュールである(前述の「プロセッシングヒント設定手段」に相当)。プロセッシングヒントの書き換え、付与、あるいは削除は、プロセッシングヒント制御モジュール82が指定するプロセッシングヒント設定情報に従う。
 図2は、プロセッシングヒント設定モジュール80の構成を示したものである。図2を参照すると、プロセッシングヒント設定モジュール80は、プロセッシングヒント書き換え部802と、プロセッシングヒント設定情報保持部804と、チェックコード再計算部805と、を含んで構成される。
 プロセッシングヒント書き換え部802は、プロセッシングヒント設定情報保持部804に格納されるプロセッシングヒント設定情報に従って、TLPパケットに対し、プロセッシングヒントを設定する。PCI Expressデバイス5から、あるいは、PCI Expressデバイス5へのTLPパケットが、プロセッシングヒント設定モジュール80に入力される。プロセッシングヒント設定モジュール80に入力されるたびに、プロセッシングヒント書き換え部802が、プロセッシングヒント設定情報保持部804を参照し、適切なプロセッシングヒントを付与する。このとき、プロセッシングヒント書き換え部802は、もともとプロセッシングヒントが付与されていなかったTLPパケットのTHフィールド534(図5~図7の符号534参照)の値を1にセットする。さらに、プロセッシングヒントを書き換える、または付与するのと同様に、プロセッシングヒント書き換え部802にて、TLPパケットのPHフィールド532(図6参照)の値を変更することも可能である。
 ここで、PCI Expressにおいては、TLPパケットに対して、データリンクレイヤでTLPパケットのビットエラーを検出するためのCRCが付与される。そのため、プロセッシングヒント書き換え部802は、TLPパケットに設定されていたプロセッシングヒントの内容を変更、あるいは削除した場合、チェックコード再計算部805で、CRCを再計算し、TLPパケットに付与する。またはTLPパケットにプロセッシングヒントを付与し、THフィールドを書き換えた場合、チェックコード再計算部805で、CRCを再計算し、TLPパケットに付与する。なお、TLPダイジェストが存在すれば、TLPレイヤでもCRCが付与されるため、この場合は、TLPレイヤのCRCの再計算も必要である。
 また、プロセッシングヒント書き換え部802は、プロセッシングヒント制御モジュール82と通信するための制御インタフェース806を備える。
 プロセッシングヒント設定情報保持部804は、プロセッシングヒントをどのような条件で設定するかを示したプロセッシングヒント設定情報を保持する。例えば、プロセッシングヒント設定情報は、アドレス[31:2]フィールド524で指定される領域に対して、プロセッシングヒントを付与する。具体的には、あるリクエスタIDフィールド526で指定されるPCI Expressデバイス5から送信されるTLPパケットにプロセッシングヒントが付与される。また、別のプロセッシングヒント設定情報の例として、TLPヘッダ52に含まれる長さフィールド530が、ある一定値以上の値を持つTLPパケットに対して、プロセッシングヒントを付与する、というものも考えられる。
 図8は、プロセッシングヒント設定情報保持部804に保持されるプロセッシングヒント設定情報の一例を示した図である。図8を参照すると、リクエスタID列8042と、宛先アドレス列8046と、TPH値列8048と、PH値列8049と、を対応付けたデータ構造が示されている。TLPパケットのリクエスタID値と、TLPパケットの宛先アドレス値を条件(マッチング条件)とし、その条件にマッチしたTLPパケットに対して付与するTPH値とPH値を取得する。また、リクエスタID値や宛先アドレス値をワイルドカードとすることも可能である。
 また、宛先アドレス値を、メモリアドレス0x10000000(0xは16進数を示す)から1KByte分の領域のように、ある一定のメモリ領域を示すように指定することも可能である。この場合、プロセッシングヒント設定情報保持部804に、メモリアドレスの下限値と上限値が登録される、または、メモリアドレスの下限値と、マスク値が登録される。例として、0x10000000から1KByte分の領域を指定したプロセッシングヒント設定情報の場合を考える。前者の方法であれば、メモリアドレスの下限値として0x10000000を、メモリアドレスの上限値として0x100003ffが登録される。そして、プロセッシングヒント書き換え部802が、プロセッシングヒント設定情報保持部804を参照する際、リクエスタIDが一致する行を抽出しTLPパケットに含まれる宛先メモリアドレスが、抽出したプロセッシングヒント設定情報のメモリアドレスの上限値と下限値の間に収まっているか比較する。
 一方、後者の方法であれば、メモリアドレスの下限値として、0x10000000を登録し、マスク値として0xfffffc00が登録される。そして、プロセッシングヒント書き換え部802が、プロセッシングヒント設定情報保持部804を参照する際、リクエスタIDが一致する行を抽出する。そして、プロセッシングヒント書き換え部802が、TLPパケットに含まれる宛先メモリアドレスと、抽出したプロセッシングヒント設定情報に含まれるマスク値でビット単位の論理積をとった結果を用いて下限値と一致するか比較する。比較の対象は、抽出したプロセッシングヒント設定情報に含まれるメモリアドレスの下限値である。
 これらの方法により、一定範囲のメモリ領域を示す宛先アドレスをプロセッシングヒント設定情報保持部804に保持させることが可能となる。
 リクエスタID列8042は、TLPパケットに設定されているリクエスタIDフィールド526の値である。宛先アドレス列8046は、TLPパケットの宛先アドレスを示す値である。具体的には、32ビットアドレスの場合、TLPパケットのアドレス[31:2]フィールド524に設定される値が格納される。TPH値列8048は、条件にマッチしたTLPパケットに設定するTPH値が格納される。TPHの場合、値が0の場合はTPHが無効を示す。図8の例では、リクエスタIDがYのプロセッシングヒント設定情報は、もともとTLPパケットに設定されていたTPHを無効とする内容が定められている。PH値列8049には、条件にマッチしたTLPパケットに設定するPH値が格納される。
 図9は、プロセッシングヒント設定情報保持部804に保持されるプロセッシングヒント設定情報の別の一例を示した図である。図9のプロセッシングヒント設定情報の例では、TLPパケットの長さを条件とし、その条件にマッチしたTLPパケットに対して、TPH値列8048で指定されたTPHを設定する内容となっている。より具体的には、図9の第1のプロセッシングヒント設定情報では、TLPパケットが64バイト以下の場合に、TPHとして0x1122(「0x」は16進数であることを示す)を設定する内容が規定されている。また、図9の第2のプロセッシングヒント設定情報では、TLPパケットサイズが64バイトより大きい場合にTPHを無効とする内容(0x0000)が規定されている。この形式の場合、TLPパケットの宛先を示す情報が、メモリアドレスであることを確認し、宛先がメモリアドレスで表現されたTLPパケットのみを対象とすることができる。TLPパケットの宛先を示す情報がメモリアドレスかBDF番号かは、Typeフィールド536を参照することで確認することができる。Typeフィールド536がメモリリクエストか、I/Oリクエストを示すTLPパケットの場合、宛先がメモリアドレスで表現されている。
 ここで、TPHとしてST[15:8]フィールド502と、ST[7:0]フィールド522との、両方のフィールドを使用する場合は、図8、図9のTPH値列8048に格納される値は、それに合わせて、16ビット分の値となる。また、TPHを設定する条件として、TLPパケットの任意のフィールドの値を使用することは、図8、図9のプロセッシングヒント設定情報の例と同様に可能である。
 プロセッシングヒント制御モジュール82は、プロセッシングヒント設定モジュール80が、どのTLPパケットに対し、どのようなプロセッシングヒントを設定するかを指示するモジュールである(前述の「設定情報保持手段」に相当)。
 図10は、プロセッシングヒント制御モジュール82の構成を示したものである。図10を参照すると、制御インタフェース806と、プロセッシングヒント構築部822と、プロセッシングヒント設定要求受付部824と、デバイス情報取得部826と、を備えた構成が示されている。
 プロセッシングヒント制御モジュール82は、外部モジュールからプロセッシングヒントの設定要求を受けることで、プロセッシングヒント設定情報を構築し、構築したプロセッシングヒント設定情報をプロセッシングヒント設定情報保持部804に設定する。外部モジュールの例として、コンピュータ1上で動くOS(Operating System)が挙げられる。OSがCPU2の使用率やキャッシュヒット率などに基づいて、あるいは、あるPCI Expressデバイス5を使用するプロセスを動かす際に、プロセッシングヒント制御モジュール82に対し、プロセッシングヒントの設定要求を発行する。プロセッシングヒントの設定要求は、そのPCI Expressデバイス5からのTLPパケットのステアリングタグが、このプロセスが実行されるCPU2を指定するものである。
 例えば、プロセッシングヒントによって、PCI Expressデバイス5からのTLPパケットをCPU2のキャッシュメモリに格納するかどうかを決められる場合がある。この場合、キャッシュヒット率が悪化した際に、CPU2へのすべてのTLPパケットのプロセッシングヒントを無効にするための制御をOSから行うことが考えられる。このようなキャッシュヒット率は、CPU2のパフォーマンスカウンタを参照することで取得することができる。
 また、別の例として、GPUを使用するプロセスが起動した際に、そのプロセスが稼動するCPU2のキャッシュメモリに対して、GPUからのTLPパケットを直接格納するように、プロセッシングヒントを付与するための要求を発行することが考えられる。GPUからのTLPパケットを直接格納するとは、キャッシュインジェクションに相当する。GPU以外にも、NICでも同様のことが可能である。すなわち、複数のNICと複数のCPU2を備えるコンピュータ1において、あるNICから受信したイーサネットパケットを特定のCPU2のキャッシュメモリにインジェクションするように、プロセッシングヒントを設定することも考えられる。
 プロセッシングヒント設定要求受付部824は、外部モジュールからプロセッシングヒント設定情報の設定要求を受け付けるためのインタフェースである(設定要求受付手段に相当)。この設定要求には、少なくとも、TLPパケットの送信元の識別子と、TLPパケットの宛先メモリアドレスと、どのようなプロセッシングヒントを付与するかを示す情報と、が含まれる。これら識別子に関してはワイルドカードでもよい。典型的には、TLPパケットの送信元の識別子は、BDF番号である。
 また、設定するプロセッシングヒント設定情報が、ある一定範囲のメモリアドレス領域宛のTLPパケットに対するものであった場合、宛先メモリアドレスの代わりに、メモリ領域の上限値と下限値、あるいは下限値とマスク値を与えることも考えられる。
 どのようなプロセッシングヒントを付与するかを示す情報の例として、TLPパケットの転送先デバイスが既定するプロセッシングヒントのフォーマットに合わせたビット列を用いることが考えられる。
 設定要求の別の例として、TLPパケットの送信元、あるいは宛先以外の情報、例えばTLPパケットの長さなどに応じてプロセッシングヒントの設定を行う場合、設定要求には、そのような情報(長さなど)が含まれる。以降では、設定要求にTLPパケットの宛先メモリアドレスを与えるものとして説明するが、このことは、設定要求に含める情報が、これに限定されることを意図するものではない。
 デバイス情報取得部826は、コンピュータ1のメモリ空間に関する情報と、PCI Expressデバイス5のBDF番号又は使用するメモリ領域と、I/Oファブリックネットワークのツリー構造に関する情報を外部モジュールから取得するモジュールである。なお、I/Oファブリックネットワークのツリー構造とは、BDF番号に基づくツリーの構造である。デバイス情報取得部826は、デバイス情報取得手段に相当する。
 これらの情報は、例えば、コンピュータ1上で稼動するOSから取得することができ、ツリー構造に関する情報であれば、Linux(登録商標)においてはlspciコマンドによる出力などにより得られる。また、これらの情報は、メモリ空間に関する情報であれば、/proc/iomemファイルを読み込むことなどで得られる。この場合、プロセッシングヒント制御モジュール82は、コンピュータ1上で稼動するOSとコンピュータネットワークなどを介して通信する。典型的には、プロセッシングヒント制御モジュール82は、コンピュータ1上で稼動するOSの一部、あるいはこのOS上で稼動するソフトウェアプログラムとして実現することができる。さらに、プロセッシングヒント制御モジュール82は、プロセス間通信やシステムコールを使用することで、上記情報を取得することができる。
 また、デバイス情報の取得方法の別の例として、デバイス情報を管理するデータベースを用いることが考えられる。OSはデバイス情報をこのデータベースに登録し、デバイス情報取得部826は、このデータベースからデバイス情報を取得する。
 プロセッシングヒント構築部822は、プロセッシングヒント設定要求受付部824が受け付けたプロセッシングヒント設定要求に基づいて、プロセッシングヒント設定情報保持部804に設定するプロセッシングヒント設定情報を構築する。
 プロセッシングヒント構築部822は、プロセッシングヒント設定要求に含まれる、TLPパケットの送信元デバイスの識別子(BDF番号)を用いて、デバイス情報取得部826に、そのようなデバイスが存在するかどうかを問い合わせる。また、TLPパケットの宛先メモリアドレスについても、デバイス情報取得部826が取得する、コンピュータ1のメモリ空間の情報に基づいて、そのメモリアドレスで示される領域が有効かどうかを確認する。従って、プロセッシングヒント構築部822は、デバイス確認手段及びプロセッシングヒント格納手段としても機能する。
 なお、上記した説明中でも触れたように、図1、2、10等に示したプロセッシングヒント設定装置8の各部(処理手段)は、同装置を構成するコンピュータに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現できる。
 [動作の説明]
 次に、図面を参照して、本実施の形態の全体の動作について詳細に説明する。
 図11は、コンピュータ1上で稼動するOSを外部モジュールとしたときの本実施形態の動作を表したシーケンス図である。図11の例では、OSからの要求に応じて、プロセッシングヒント設定装置が、プロセッシングヒント設定情報を構築し、プロセッシングヒントをプロセッシングヒント設定情報保持部804に設定することになる。
 図11を参照すると、まず、OSは、プロセッシングヒント制御モジュール82に対して、プロセッシングヒント設定情報の設定要求(プロセッシングヒント設定要求)を発行する(図11のステップS820)。この要求には、少なくとも、TLPパケットの送信元の識別子と、TLPパケットの宛先メモリアドレスと、設定するプロセッシングヒントと、に関する情報が含まれる。
 次に、プロセッシングヒント制御モジュール82は、OSに対して、デバイス情報要求を発行する(図11のステップS822)。
 次に、OSは、プロセッシングヒント制御モジュール82に対して、デバイス情報を送信する。このデバイス情報は、例えば、Linuxであればlspciコマンドで取得できる情報や、/proc/iomemファイルに含まれる情報から構成される。
 次に、プロセッシングヒント制御モジュール82は、図11のステップS820で受け取ったプロセッシングヒント設定情報の設定要求に含まれる情報と、図11のステップS824で取得したデバイス情報から、プロセッシングヒント設定情報を構築する。プロセッシングヒント設定情報の構築は、図11のステップS826で示される。
 ここで、図8や図9の例に示した、プロセッシングヒント設定情報保持部804に保持されるプロセッシングヒント設定情報またはこれを含む制御メッセージが生成される。また、プロセッシングヒント制御モジュール82は、OSから受け取ったプロセッシングヒント設定要求に含まれる、TLPパケットの送信元の識別子と、TLPパケットの宛先メモリアドレスが有効かどうかチェックする。これらのチェックで、該当するデバイスが存在しない場合、プロセッシングヒント制御モジュール82は、プロセッシングヒントを構築せずに、処理を終了する。
 次に、プロセッシングヒント制御モジュール82は、図11のステップS826で構築したプロセッシングヒント設定情報を、プロセッシングヒント設定モジュール80に送信する(図11のステップS828)。
 プロセッシングヒント設定モジュール80は、プロセッシングヒント制御モジュール82から受信したプロセッシングヒント設定情報を、プロセッシングヒント設定情報保持部804に登録する(図11のステップS829)。
 図12は、図11のステップS822からステップS828までの、プロセッシングヒント制御モジュール82の動作を示したフローチャートである。
 まず、プロセッシングヒント制御モジュール82は、OS(外部モジュール)にデバイス情報要求を発行する(図12のステップF822)。
 次に、プロセッシングヒント制御モジュール82は、OSからデバイス情報を取得する(図12のステップF824のYes)。プロセッシングヒント制御モジュール82は、OSから受信したプロセッシングヒント構築要求に含まれる、TLPパケットの送信元、宛先メモリアドレスが有効かどうかをチェックする(図12のステップF825)。この際に、デバイス情報に、TLPパケットの送信元識別子、送信先メモリアドレスが有効かどうかを確認する。
 図12のステップF825において、TLPパケットの送信元識別子に相当するデバイスが存在しない場合、プロセッシングヒント制御モジュール82は、プロセッシングヒント設定情報を構築せずに、処理を終了する。あるいは、送信先メモリアドレスの値が無効の場合(図12のステップF825の「無効」)、プロセッシングヒント制御モジュール82は、プロセッシングヒント設定情報を構築せずに、処理を終了する。
 一方、図12のステップF825において、該当する送信もデバイスが存在し、かつ宛先アドレスが有効の場合(図12のステップF825の「有効」)、次のように対応する。すなわち、プロセッシングヒント制御モジュール82は、OSからのプロセッシングヒント構築要求と、図12のステップF824で受信したデバイス情報を元に、プロセッシングヒント設定情報を構築する(図12のステップF826)。ここで、図8や図9の例に示した、プロセッシングヒント設定情報保持部804に保持されるプロセッシングヒント設定情報またはこれを含む制御メッセージが生成される。
 次に、プロセッシングヒント制御モジュール82は、図12のステップF826で構築したプロセッシングヒント設定情報を、プロセッシングヒント設定モジュール80に送信する(図12のステップF828)。
 このようにして、プロセッシングヒント制御モジュール82は、プロセッシングヒント設定情報保持部804にプロセッシングヒント設定情報を設定する。
 次に、本実施形態の効果について説明する。本実施形態では、PCI Expressデバイス5と、PCI Expressルートコンプレックス40との間に、プロセッシングヒント設定装置8が備えられる。
プロセッシングヒント設定装置8が、外部モジュールからのプロセッシングヒント設定要求に応じて、プロセッシングヒント設定情報を構築する。このプロセッシングヒント設定情報に基づいて、プロセッシングヒント設定装置8が、I/Oファブリックネットワークを流れるTLPパケットにプロセッシングヒントを付与する。
これにより、プロセッシングヒントに対応していないI/Oデバイスに対してもプロセッシングヒントの機能を提供できる。
 背景技術に述べたTPHの別の問題点として、I/Oデバイスが設定するプロセッシングヒントは、特定のCPUやI/Oコントローラ向けのフォーマットに限定されている、という点が挙げられる。しかしながら、本実施形態によれば、プロセッシングヒントのフォーマットは、外部モジュールからのプロセッシングヒント設定要求に含まれる情報を元に構築できるため、特定のCPU2や、プロセッシングヒントをI/Oコントローラ4に非依存なものにできる。
 [第2の実施形態]
 次に、本発明の第2の実施形態について、図面を参照して詳細に説明する。
 図13は、本発明の第2の実施形態の構成を示した図である。図13を参照すると、第2の実施形態は、各コンピュータ1のPCI Expressデバイス5と、PCI Expressルートコンプレックス40と、の間にプロセッシングヒント設定モジュール80bを配置する。さらに、第2の実施形態は、その他のコンピュータ1内のプロセッシングヒント設定モジュールを含む各プロセッシングヒント設定モジュール80bを制御するプロセッシングヒント制御モジュール82bと、を備える。
 図14は、プロセッシングヒント設定モジュール80bの構成を示した図である。図2に示した第1の実施形態のプロセッシングヒント設定モジュール80との相違点は、プロセッシングヒント設定要求受付部824と、デバイス情報登録要求受付部830と、が追加されている点である。図14における、図2と同一の構成要素に対しては同一の符号を付し、詳細な説明を省略する。
 プロセッシングヒント設定モジュール80bは、各コンピュータ1に備えられ、各コンピュータ1内で、TLPパケットへのプロセッシングヒントの設定、及び、プロセッシングヒントの設定要求の受け付けと、デバイス情報登録要求の受け付けを行う。
 プロセッシングヒント設定要求受付部824は、プロセッシングヒント設定モジュール80bが備えられたコンピュータ1からのプロセッシングヒント設定情報の設定要求を受け付けるインタフェースである。例えば、プロセッシングヒント設定要求受付部824を、PCI Expressデバイス5としてI/Oファブリックネットワークに接続する。これにより、コンピュータ1上で稼動するOSなどからプロセッシングヒント設定要求受付部824にアクセスすることが可能となる。
 デバイス情報登録要求受付部830は、情報を通知するためのインタフェースである。その情報は、コンピュータ1上で稼動するOSなどが、プロセッシングヒント制御モジュール82bに対し、コンピュータ1に備えられるI/Oファブリックネットワークに接続されるI/Oデバイスの情報と、コンピュータ1のメモリ空間に関する情報である。プロセッシングヒント設定要求受付部824と同様に、デバイス情報登録要求受付部830は、PCI Expressデバイス5として実現される。これによって、コンピュータ1上で稼動するOSなどからデバイス情報登録要求受付部830にアクセスすることが可能となる。デバイス情報登録要求受付部830は、コンピュータ1のデバイス情報を、プロセッシングヒント制御モジュール82bに送信する場合、コンピュータ1の識別子を付与して送信する。この識別子は、プロセッシングヒント設定装置8bが管理するコンピュータ群で一意な値である。
 図15は、プロセッシングヒント制御モジュール82bの構成を示した図である。図15を参照すると、プロセッシングヒント構築部822と、デバイス情報保持部828と、を備えたプロセッシングヒント制御モジュール82bが示されている。図15において、図10に示した第1の実施形態のプロセッシングヒント制御モジュール82と同一の構成要素に対しては同一の符号を付し、詳細な説明を省略する。
 デバイス情報保持部828は、各コンピュータ1のI/Oデバイス情報を、コンピュータ1の識別子と共に保持する。図16は、デバイス情報保持部828が保持するI/Oデバイス情報の一例を示した図である。デバイス情報保持部828は、図16のようなデバイス情報から、コンピュータ1の識別子を用いて検索することで、そのコンピュータ1のI/Oデバイス情報を取得できる。
 また、デバイス情報保持部828は、各コンピュータ1のメモリ空間に関する情報を、コンピュータ1の識別子と共に保存する。図17は、デバイス情報保持部828が保持するメモリ空間に関する情報の一例を示した図である。デバイス情報保持部828は、図17に示す情報から、コンピュータ1の識別子を用いて検索することで、そのコンピュータ1のメモリ空間に関する情報を取得できる。図17には、I/Oデバイスが使用しているメモリ領域の情報だけでなく、メインメモリやビデオメモリの情報も記載される。
 さらに、図17において、そのメモリ領域に対して、TLPパケットを送信できるか否かのフラグを保持する領域を設けることが考えられる。プロセッシングヒント構築部822が、プロセッシングヒント設定情報構築時に、TLPパケットの宛先メモリアドレスがコンピュータ1のメモリ空間に含まれる値であっても、フラグを参照し、TLPパケットを送信できる領域であるかどうかを判断できる。また、TLPパケットを送信できない領域の場合は、そのようなルールを構築しないということが可能となる。
 [動作の説明]
 続いて、図面を参照して、本実施形態の動作について詳細に説明する。
 図18~図20は、本実施形態の動作を表したシーケンス図である。はじめに、コンピュータ1のI/Oデバイス情報を、デバイス情報保持部828に登録する際の動作について図18を参照して説明する。なお、図18では、コンピュータ1上で稼動するOSからデバイス情報を送信するものとしている。
 まず、OSが、プロセッシングヒント設定モジュール80bに対し、プロセッシングヒント設定要求受付部824を介して、デバイス情報とコンピュータ1の識別子とともに、デバイス情報登録要求を発行する(図18のステップS830b)。
 次に、プロセッシングヒント設定モジュール80bが、制御インタフェース806bを介して、プロセッシングヒント制御モジュール82bに、I/Oデバイス情報と、コンピュータ1の識別子を送信する(図18のステップS832b)。
 次に、プロセッシングヒント構築部822が、デバイス情報保持部828に、コンピュータ1の識別子とともにI/Oデバイスの情報を登録する(図18のステップS834b)。
 このようにして、デバイス情報保持部828にI/Oデバイスの情報を登録することができる。コンピュータ1のメモリ空間に関する情報も、同様に登録することが可能である。
 図19は、コンピュータ1のI/Oファブリックネットワークに接続されているI/Oデバイスの構成が変更された際の、プロセッシングヒント設定装置8bの動作を示したシーケンス図である。図19における、図18と同様の動作については同一の符号を付し、詳細な説明を省略する。
 まず、OSが、取り外したI/Oデバイスの情報又は追加したI/Oデバイスの情報を、コンピュータ1の識別子とともに、プロセッシングヒント設定要求受付部824を介して、プロセッシングヒント設定モジュール80bにデバイス情報変更要求を発行する。図19のステップS831bに、プロセッシングヒント設定モジュール80bにデバイス情報変更要求を発行することを示す。この、取り外した、または追加したI/Oデバイスの情報には、少なくともBDF番号と、このI/Oデバイスが使用するメモリ領域の情報が含まれる。
 次に、プロセッシングヒント設定モジュール80bがプロセッシングヒント制御モジュール82bに、I/Oデバイス情報と、コンピュータ1の識別子を送信する(図19のステップS832b)。
 次に、プロセッシングヒント構築部822が、デバイス情報保持部828に登録されているI/Oデバイス情報を更新する(図19のステップS835b)。I/Oデバイスを取り外す場合、プロセッシングヒント構築部822は、コンピュータ1の識別子と、更新対象のI/OデバイスのBDF番号やメモリアドレスを用いて、I/Oデバイス情報を検索し、該当するI/Oデバイス情報を削除する。BDF番号の場合は一致するI/Oデバイスを、メモリアドレスの場合は、そのメモリアドレスが含まれるメモリ領域を使用するI/Oデバイスを削除する。また、I/Oデバイスを追加する場合、対象のコンピュータ1のI/Oデバイス情報に、追加するI/Oデバイスの情報を追加する。
 次に、I/Oデバイスを取り外す場合、プロセッシングヒント制御モジュール82bは、I/Oデバイス情報更新要求を発行したコンピュータ1に備えられるプロセッシングヒント設定モジュール80bに対して、プロセッシングヒント設定情報の削除を指示する。削除される情報は、プロセッシングヒント設定情報保持部804から、取り外すI/Oデバイスに該当するプロセッシングヒント設定情報である。図19のステップS836bにプロセッシングヒント設定情報の削除の指示が示される。図8のデータ構造の例をとると、まず、プロセッシングヒント設定モジュール80bは、取り外すI/OデバイスのBDF番号を用いて、リクエスタID列が一致するプロセッシングヒント設定情報を削除する。そして、プロセッシングヒント設定モジュール80bは、取り外すI/Oデバイスのメモリ情報を用いて、宛先アドレス列に設定された値が取り外すI/Oデバイスのメモリ領域に含まれるプロセッシングヒント設定情報を削除する。
 図20は、コンピュータ1上で稼動するOSが、外部モジュールとして、プロセッシングヒント設定モジュール80bに対し、プロセッシングヒントを設定する処理の流れを示したシーケンス図である。図20において、図11と同様の動作については同一の符号を付し、詳細な説明を省略する。
 まず、OSは、プロセッシングヒント設定モジュール80bに対して、プロセッシングヒント設定要求受付部824を介して、プロセッシングヒントの設定要求を発行する(図20のステップS820b)。この要求には、少なくとも、コンピュータ1の識別子と、TLPパケットの送信元の識別子と、TLPパケットの送信先の識別子と、設定するプロセッシングヒントと、に関する情報が含まれる。
 次に、プロセッシングヒント設定モジュール80bは、制御インタフェース806bを介して、プロセッシングヒント制御モジュール82bに、プロセッシングヒント設定情報の設定要求を送信する(図20のステップS825)。
 次に、プロセッシングヒント制御モジュール82bに備えられるプロセッシングヒント構築部822は、プロセッシングヒント設定情報を構築する(図20のステップS826b)。この際に、プロセッシングヒント構築部822は、プロセッシングヒント設定情報の設定要求に含まれるコンピュータ1の識別子を用い、デバイス情報保持部828を参照し、該当するコンピュータ1のI/Oデバイスの情報とメモリ空間に関する情報とを取得する。次にプロセッシングヒント構築部822は、取得したコンピュータ1のI/Oデバイス情報と、プロセッシングヒント構築要求を比較し、プロセッシングヒント構築要求に含まれるTLPパケットの送信元の識別子に該当するI/Oデバイスが存在するかを確認する。また、プロセッシングヒント構築部822は、取得したコンピュータ1のメモリ空間に関する情報と、TLPパケットの宛先メモリアドレスを比較し、宛先メモリアドレスが有効なアドレスかどうかを確認する。このときに、該当するI/Oデバイスが存在しない場合、または、宛先メモリアドレスが無効な場合、プロセッシングヒント構築部822は、プロセッシングヒント設定情報を構築せずに、処理を終了する。
 一方、該当するI/Oデバイスが存在し、宛先メモリアドレスが有効な場合、プロセッシングヒント構築部822は、構築したプロセッシングヒント設定情報を、プロセッシングヒント設定モジュール80bに送信する。さらに、プロセッシングヒント構築部822は、構築したプロセッシングヒント設定情報を、プロセッシングヒント設定情報保持部804に登録する(図20のステップS828)。
 このようにして、本実施形態のプロセッシングヒント制御モジュール82b及びプロセッシングヒント設定モジュール80bは、プロセッシングヒント設定情報保持部804にプロセッシングヒント設定情報を設定する。
 次に、本実施形態の効果について説明する。本実施形態では、プロセッシングヒント制御モジュール82bが、コンピュータ1の外部モジュールとして設けられ、複数のコンピュータ1のプロセッシングヒント設定情報を構築する構成となっている。これにより、コンピュータ1ごとに、プロセッシングヒントを構築する機能を設ける必要が無くなり、プロセッシングヒント設定システムのコストを低減することができる。
[第3の実施形態]
 次に、ネットワークスイッチにより、上記プロセッシングヒント設定モジュール及びプロセッシングヒント制御モジュールを実現した本発明の第3の実施形態を説明する。
 図21は、本発明の第3の実施形態のネットワークスイッチの構成を表した図である。
このようなネットワークスイッチとしては、図23の拡張ネットワーク7に配置されるネットワークスイッチを利用することができる。
 図21を参照すると、このネットワークスイッチは、パケットを転送するスイッチチップ802cと、スイッチチップ802cがパケットをどのポートに出力するかを決定するためのルールを格納するフォワーディングテーブル804cを備える。さらに、ネットワークスイッチは、スイッチチップを制御するコントロールCPU822c(826c)と、コントロールCPU822c(826c)がワーキングメモリとして使用するメモリ828cを備える。ネットワークスイッチは、ネットワークスイッチを外部から設定するためのマネジメントポート824c(830c)を備えている。なお、このようなネットワークスイッチの構成は、一般的なネットワークスイッチの構成と同様のものである。
 ネットワークスイッチは、スイッチチップ802cをプロセッシングヒント書き換え部802として動作させ、フォワーディングテーブル804cをプロセッシングヒント設定情報保持部804として利用することができる。また、ネットワークスイッチは、コントロールCPU822c(826c)上で、プロセッシングヒント構築部822、およびデバイス情報取得部826相当の機能を実現するソフトウェアを動作させる。これにより、図10のプロセッシングヒント構築部822およびデバイス情報取得部826に相当する構成を得ることができる。また、メモリ828cはデバイス情報保持部828として利用される。また、コントロールCPU822c(826c)とスイッチチップ802cを接続するバス806cは、制御インタフェース806として利用される。さらに、マネジメントポート824c(830c)はプロセッシングヒント設定要求受付部824、およびデバイス情報登録要求受付部830として利用される。これにより、図13の破線で示すプロセッシングヒント設定モジュール80b及びプロセッシングヒント制御モジュール82bとを組み合わせた構成(図13の8b)を得ることができる。また、プロセッシングヒント制御モジュール82bに相当する構成は、複数のネットワークスイッチを集中制御するコントローラ装置により実現することもできる。
 フォワーディングテーブル804cはTCAM(Ternary Content Accessible Memory)などで実現されており、パケットヘッダの任意のフィールドでマッチングすることが可能である。
 スイッチチップ802cは、パケットヘッダの任意のフィールドを別の値に書き換えることが可能である。
 コントロールCPU822cは、汎用プロセッサであり、Linuxのような汎用OSが稼働する。メモリ828cは、I/Oデバイス情報を保持するほか、OSが稼働するためのメモリとしても使用され、その役割はコンピュータ1におけるメインメモリ3と同等である。
 マネジメントポート824cは、拡張ネットワーク7の制御用ネットワークに接続されており、各コンピュータ1も自身が備えるネットワークインタフェースなどを介して、この制御用ネットワークに接続される。各コンピュータ1で稼働するOSが、マネジメントポートとファブリックネットワークを介して、プロセッシングヒント設定装置8に接続する。
 以上のように、本発明は、拡張ネットワーク7上のネットワークスイッチにより、実現することができる。
 以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、各図面に示したネットワーク構成、各要素の構成、データ構造等の表現形態は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
 上記の実施形態の一部又は全部は、以下の付記のように記載されうるが、以下には限られない。
[付記1]
 コンピュータと1つ以上のI/Oデバイスとの間に配置され、前記コンピュータとI/Oデバイスとの間のI/Oファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持する設定情報保持手段とを備える。更に、前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する設定手段と、を備える設定装置。
[付記2]
 前記コンピュータは、PCI Expressルートコンプレックスを備え、
 前記I/Oデバイスに代わって、パケットに対してプロセッシングヒントを設定する付記1の設定装置。
[付記3]
 さらに、
 前記コンピュータから、パケットの送信元デバイスの識別子と、パケットの宛先メモリアドレスと、設定するプロセッシングヒントの値と、を含む設定情報の設定要求を受け付ける設定要求受付手段と、
 前記I/Oファブリックネットワークに接続された前記デバイスの情報と、前記コンピュータのメモリ空間の情報と、を取得するデバイス情報取得手段と、
 前記デバイス情報を用いて、前記パケットの送信元デバイスの識別子に該当するI/Oデバイスが、前記I/Oファブリックネットワーク中に存在するかどうかを判断し、前記メモリ空間の情報を用いて、前記パケットの宛先メモリアドレスが前記コンピュータのメモリ空間上で有効な値であるかどうかを判断するデバイス確認手段と、
 前記送信元デバイスに該当するI/Oデバイスが、前記I/Oファブリックネットワーク中に存在し、かつ、前記宛先メモリアドレスが有効な値である場合に、前記設定情報保持手段に、前記設定要求を受けた設定情報を格納するプロセッシングヒント格納手段と、
 を備える付記1又は付記2の設定装置。
[付記4]
 前記デバイス情報取得手段は、前記コンピュータのメモリ空間の情報として、メモリ領域の範囲と、そのメモリ領域の割当先デバイスと、そのメモリ領域に対して、前記パケットを転送することができるか否かを示すフラグ情報と、を取得し、
 前記デバイス確認手段は、前記フラグ情報を参照し、前記パケットの宛先メモリアドレスが、前記パケットを転送することができる領域かどうかを確認し、
 前記プロセッシングヒント格納手段は、前記デバイス確認手段の確認の結果、前記パケットが、宛先メモリアドレスの領域に転送できない場合、設定情報を破棄する付記1から付記3いずれか一に記載の設定装置。
[付記5]
 さらに、前記I/Oファブリックネットワーク内に備えられたI/Oデバイスのいずれかが削除された際に、削除されたI/Oデバイスの識別子を用いて、前記設定情報保持手段から、該当する設定情報を削除する設定情報削除手段を備える設定装置。設定情報削除手段を備える設定装置は付記1から付記4いずれか一に記載の設定装置に適用できる。
[付記6]
 コンピュータとI/Oデバイスとの間のI/Oファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持する設定情報保持手段と、
 前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する設定手段と、を備えた1つ以上のコンピュータに接続され、
 前記1つ以上のコンピュータからの前記設定情報の設定要求に応じて、前記設定情報保持手段に設定情報を設定する制御装置。
[付記7]
 さらに、
 前記コンピュータから、パケットの送信元デバイスの識別子と、パケットの宛先メモリアドレスと、設定するプロセッシングヒントの値と、を含む設定情報の設定要求を受け付ける設定要求受付手段と、
 前記I/Oファブリックネットワークに接続された前記デバイスの情報と、前記コンピュータのメモリ空間の情報と、を取得するデバイス情報取得手段と、
 前記デバイス情報を用いて、前記パケットの送信元デバイスの識別子に該当するI/Oデバイスが、前記I/Oファブリックネットワーク中に存在するかどうかを判断し、前記メモリ空間の情報を用いて、前記パケットの宛先メモリアドレスが前記コンピュータのメモリ空間上で有効な値であるかどうかを判断するデバイス確認手段と、
 前記送信元デバイスに該当するI/Oデバイスが、前記I/Oファブリックネットワーク中に存在し、かつ、前記宛先メモリアドレスが有効な値である場合に、前記設定情報保持手段に、前記設定要求を受けた設定情報を格納するプロセッシングヒント格納手段と、
 を備える付記6に記載の制御装置。
[付記8]
 さらに、前記I/Oファブリックネットワーク内に備えられたI/Oデバイスのいずれかが削除された際に、削除されたI/Oデバイスの識別子を用いて、前記コンピュータの前記設定情報保持手段から、該当する設定情報を削除する設定情報削除手段を備える設定装置。設定情報削除手段を備える設定装置は、付記6又は付記7に記載の制御装置に適用できる。
[付記9]
 設定情報保持手段として前記設定情報を保持可能なフォワーディングテーブルと、
 前記設定手段として、前記フォワーディングテーブルに登録された設定情報に基づいて、前記パケットにプロセッシングヒントを設定するスイッチチップと、を備え、
 付記1から付記4いずれか一に記載の設定装置として機能するネットワークスイッチ。
[付記10]
 付記9のネットワークスイッチにおいて、
 前記デバイス情報取得手段、デバイス確認手段及びプロセッシングヒント格納手段として、
 前記コンピュータから設定情報の設定要求を受け付け、前記I/Oファブリックネットワークに接続されたI/Oデバイスの情報と、前記コンピュータのメモリ空間の情報を取得するためのマネジメントポートと、
 パケットの送信元デバイスの識別子に該当するI/Oデバイスが、前記I/Oファブリックネットワークに存在するかどうかを判断し、前記パケットの宛先メモリアドレスが、前記コンピュータのメモリ空間上で有効な値であるかどうかを判断し、前記送信元デバイスに該当するI/Oデバイスが、前記I/Oファブリックネットワーク中に存在し、前記宛先メモリアドレスが有効な値である場合に、前記フォワーディングテーブルに、前記設定要求を受けた設定情報を格納するコントロールCPUと、
 を備え、付記3の設定装置として機能するネットワークスイッチ。
[付記11]
 前記マネジメントポートから、前記I/Oファブリックネットワークに接続されたI/Oデバイスが削除されたことを示す通知がなされた場合に、前記コントロールCPUが、該当するI/Oデバイスの識別子を用いて、前記フォワーディングテーブルから該当する設定情報を削除する付記10に記載のネットワークスイッチ。
[付記12]
 前記マネジメントポートを介して、前記コンピュータのメモリ空間の情報として、メモリ領域の範囲と、そのメモリ領域の割当先デバイスと、そのメモリ領域に対して、前記パケットを転送することができるか否かを示すフラグ情報と、を取得し、
 前記コントロールCPUは、前記フラグ情報を参照し、前記パケットの宛先メモリアドレスが、前記パケットを転送することができる領域かどうかを確認し、前記デバイス確認手段の確認の結果、前記パケットが、宛先メモリアドレスの領域に転送できない場合に、前記設定要求を受けた設定情報を破棄する、付記10又は付記11に記載のネットワークスイッチ。
[付記13]
 コンピュータと1つ以上のI/Oデバイスとの間に配置された設定装置において、前記コンピュータとI/Oデバイスとの間のI/Oファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持するステップと、前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定するステップと、を含む設定方法。
[付記14]
 コンピュータと1つ以上のI/Oデバイスとの間に配置された設定装置を構成するコンピュータに、前記コンピュータとI/Oデバイスとの間のI/Oファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持する処理と、前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する処理と、を実行させるプログラム。
 なお、上記付記13、付記14は、付記1と同様に、付記2~付記5に展開することが可能である。
 なお、上記の特許文献および非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の開示の枠内において種々の開示要素(各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
 この出願は、2014年4月11日に出願された日本出願特願2014-082209を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 1、1b  コンピュータ
 2  CPU
 3  メインメモリ
 4  I/Oコントローラ
 5  PCI Expressデバイス
 6  ストレージデバイス
 7  拡張ネットワーク
 8、8b  プロセッシングヒント設定装置
 9  マネジメントインタフェース
 40  PCI Expressルートコンプレックス
 41  シリアルATAコントローラ
 42  トランザクションレイヤ
 44  データリンクレイヤ
 46  物理レイヤ
 50  TLPプリフィックス
 52  TLPヘッダ
 54  TLPデータ
 56  TLPダイジェスト
 502  ST[15:8]フィールド
 522  ST[7:0]フィールド
 524  アドレス[31:2]フィールド
 526  リクエスタIDフィールド
 528  BDF番号フィールド
 530  長さフィールド
 532  PHフィールド
 534  THフィールド
 536  Typeフィールド
 80、80b  プロセッシングヒント設定モジュール
 82、82b  プロセッシングヒント制御モジュール
 802  プロセッシングヒント書き換え部
 804  プロセッシングヒント設定情報保持部
 805  チェックコード再計算部
 806、806b  制御インタフェース
 822  プロセッシングヒント構築部
 824  プロセッシングヒント設定要求受付部
 826  デバイス情報取得部
 828  デバイス情報保持部
 830  デバイス情報登録要求受付部
 8042  リクエスタID列
 8046  宛先アドレス列
 8048  TPH値列
 8049  PH値列
 8050  長さ値列
 802c  スイッチチップ
 804c  フォワーディングテーブル
 806c  バス
 822c(826c)コントロールCPU
 824c(830c)マネジメントポート
 828c  メモリ

Claims (10)

  1.  コンピュータと1つ以上のI/Oデバイスとの間に配置され、
     前記コンピュータとI/Oデバイスとの間のI/Oファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持する設定情報保持手段と、
     前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する設定手段と、
     を備える設定装置。
  2.  前記コンピュータは、PCI Expressルートコンプレックスを備え、
     前記I/Oデバイスに代わって、パケットに対してプロセッシングヒントを設定する請求項1の設定装置。
  3.  前記コンピュータから、パケットの送信元デバイスの識別子と、パケットの宛先メモリアドレスと、設定するプロセッシングヒントの値と、を含むプロセッシングヒント設定情報の設定要求を受け付ける設定要求受付手段と、
     前記I/Oファブリックネットワークに接続された前記デバイスの情報と、前記コンピュータのメモリ空間の情報と、を取得するデバイス情報取得手段と、
     前記デバイス情報を用いて、前記パケットの送信元デバイスの識別子に該当するI/Oデバイスが、前記I/Oファブリックネットワーク中に存在するかどうかを判断し、前記メモリ空間の情報を用いて、前記パケットの宛先メモリアドレスが前記コンピュータのメモリ空間上で有効な値であるかどうかを判断するデバイス確認手段と、
     前記送信元デバイスに該当するI/Oデバイスが、前記I/Oファブリックネットワーク中に存在し、かつ、前記宛先メモリアドレスが有効な値である場合に、前記設定情報保持手段に、前記設定要求を受けた設定情報を格納するプロセッシングヒント格納手段と、
     を備える請求項1又は2の設定装置。
  4.  前記デバイス情報取得手段は、前記コンピュータのメモリ空間の情報として、メモリ領域の範囲と、そのメモリ領域の割当先デバイスと、そのメモリ領域に対して、前記パケットを転送することができるか否かを示すフラグ情報と、を取得し、
     前記デバイス確認手段は、前記フラグ情報を参照し、前記パケットの宛先メモリアドレスが、前記パケットを転送することができる領域かどうかを確認し、
     前記プロセッシングヒント格納手段は、前記デバイス確認手段の確認の結果、前記パケットが、宛先メモリアドレスの領域に転送できない場合、設定情報を破棄する、請求項3の設定装置。
  5.  さらに、前記I/Oファブリックネットワーク内に備えられたI/Oデバイスのいずれかが削除された際に、削除されたI/Oデバイスの識別子を用いて、前記設定情報保持手段から、該当する設定情報を削除する設定情報削除手段を備える
     請求項1から4いずれか一に記載の設定装置。
  6.  コンピュータとI/Oデバイスとの間のI/Oファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持する設定情報保持手段と、
     前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する設定手段と、を備えた1つ以上のコンピュータに接続され、
     前記1つ以上のコンピュータからの前記設定情報の設定要求に応じて、前記設定情報保持手段に設定情報を設定する制御装置。
  7.  さらに、
     前記コンピュータから、パケットの送信元デバイスの識別子と、パケットの宛先メモリアドレスと、設定するプロセッシングヒントの値と、を含む設定情報の設定要求を受け付ける設定要求受付手段と、
     前記I/Oファブリックネットワークに接続された前記デバイスの情報と、前記コンピュータのメモリ空間の情報と、を取得するデバイス情報取得手段と、
     前記デバイス情報を用いて、前記パケットの送信元デバイスの識別子に該当するI/Oデバイスが、前記I/Oファブリックネットワーク中に存在するかどうかを判断し、前記メモリ空間の情報を用いて、前記パケットの宛先メモリアドレスが前記コンピュータのメモリ空間上で有効な値であるかどうかを判断するデバイス確認手段と、
     前記送信元デバイスに該当するI/Oデバイスが、前記I/Oファブリックネットワーク中に存在し、かつ、前記宛先メモリアドレスが有効な値である場合に、前記設定情報保持手段に、前記設定要求を受けた設定情報を格納するプロセッシングヒント格納手段と、
     を備える請求項6の制御装置。
  8.  設定情報保持手段として前記設定情報を保持可能なフォワーディングテーブルと、
     前記設定手段として、前記フォワーディングテーブルに登録された設定情報に基づいて、前記パケットにプロセッシングヒントを設定するスイッチチップと、を備え、
     請求項1から5いずれか一に記載の設定装置として機能するネットワークスイッチ。
  9.  前記デバイス情報取得手段、デバイス確認手段及びプロセッシングヒント格納手段として、
     前記コンピュータから設定情報の設定要求を受け付け、前記I/Oファブリックネットワークに接続されたI/Oデバイスの情報と、前記コンピュータのメモリ空間の情報を取得するためのマネジメントポートと、
     パケットの送信元デバイスの識別子に該当するI/Oデバイスが、前記I/Oファブリックネットワークに存在するかどうかを判断し、前記パケットの宛先メモリアドレスが、前記コンピュータのメモリ空間上で有効な値であるかどうかを判断し、前記送信元デバイスに該当するI/Oデバイスが、前記I/Oファブリックネットワーク中に存在し、前記宛先メモリアドレスが有効な値である場合に、前記フォワーディングテーブルに、前記設定要求を受けた設定情報を格納するコントロールCPUと、
     を備え、請求項3の設定装置として機能するネットワークスイッチ。
  10.  コンピュータと1つ以上のI/Oデバイスとの間に配置された設定装置において、
     前記コンピュータとI/Oデバイスとの間のI/Oファブリックネットワーク中を流れるパケットのヘッダ情報に基づいて、プロセッシングヒントを設定するための設定情報を保持し、
     前記設定情報に定められた条件にマッチするパケットに対してプロセッシングヒントを設定する、
     設定方法。
PCT/JP2015/002019 2014-04-11 2015-04-10 設定装置、制御装置、設定方法及びネットワークスイッチ WO2015155997A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016512609A JPWO2015155997A1 (ja) 2014-04-11 2015-04-10 設定装置、制御装置、設定方法及びネットワークスイッチ

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2014-082209 2014-04-11
JP2014082209 2014-04-11

Publications (1)

Publication Number Publication Date
WO2015155997A1 true WO2015155997A1 (ja) 2015-10-15

Family

ID=54287581

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/002019 WO2015155997A1 (ja) 2014-04-11 2015-04-10 設定装置、制御装置、設定方法及びネットワークスイッチ

Country Status (2)

Country Link
JP (1) JPWO2015155997A1 (ja)
WO (1) WO2015155997A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019505924A (ja) * 2016-02-03 2019-02-28 クアルコム,インコーポレイテッド 周辺コンポーネント相互接続エクスプレス(PCIe)システムのためのインライン暗号エンジン(ICE)
KR20190021773A (ko) * 2017-08-23 2019-03-06 삼성전자주식회사 전자 장치 및 그의 데이터 운용 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007529815A (ja) * 2004-03-19 2007-10-25 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 信号送信装置及び信号送信のための方法
JP2009075718A (ja) * 2007-09-19 2009-04-09 Hitachi Ltd 仮想i/oパスの管理方法、情報処理システム及びプログラム
US20090157977A1 (en) * 2007-12-18 2009-06-18 International Business Machines Corporation Data transfer to memory over an input/output (i/o) interconnect
US20090296740A1 (en) * 2008-05-30 2009-12-03 Mahesh Wagh Providing a prefix for a packet header
WO2012077603A1 (ja) * 2010-12-09 2012-06-14 日本電気株式会社 コンピュータシステム、コントローラ、及びネットワーク監視方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007529815A (ja) * 2004-03-19 2007-10-25 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 信号送信装置及び信号送信のための方法
JP2009075718A (ja) * 2007-09-19 2009-04-09 Hitachi Ltd 仮想i/oパスの管理方法、情報処理システム及びプログラム
US20090157977A1 (en) * 2007-12-18 2009-06-18 International Business Machines Corporation Data transfer to memory over an input/output (i/o) interconnect
US20090296740A1 (en) * 2008-05-30 2009-12-03 Mahesh Wagh Providing a prefix for a packet header
WO2012077603A1 (ja) * 2010-12-09 2012-06-14 日本電気株式会社 コンピュータシステム、コントローラ、及びネットワーク監視方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019505924A (ja) * 2016-02-03 2019-02-28 クアルコム,インコーポレイテッド 周辺コンポーネント相互接続エクスプレス(PCIe)システムのためのインライン暗号エンジン(ICE)
KR20190021773A (ko) * 2017-08-23 2019-03-06 삼성전자주식회사 전자 장치 및 그의 데이터 운용 방법
KR102405593B1 (ko) 2017-08-23 2022-06-08 삼성전자 주식회사 전자 장치 및 그의 데이터 운용 방법
US11379458B2 (en) 2017-08-23 2022-07-05 Samsung Electronics Co., Ltd Electronic device and data management method thereof

Also Published As

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

Similar Documents

Publication Publication Date Title
US11409465B2 (en) Systems and methods for managing communication between NVMe-SSD storage device(s) and NVMe-of host unit
TWI570563B (zh) 後置中斷架構
CN106575206B (zh) 计算机系统中的存储器写入管理
US9304896B2 (en) Remote memory ring buffers in a cluster of data processing nodes
US9152593B2 (en) Universal PCI express port
US8700856B2 (en) Method for accessing mirrored shared memories and storage subsystem using method for accessing mirrored shared memories
EP2016499B1 (en) Migrating data that is subject to access by input/output devices
JP5310175B2 (ja) スイッチシステム、及びスイッチシステムの制御方法
US20060239287A1 (en) Adding packet routing information without ECRC recalculation
JP5452733B2 (ja) 計算機システムおよびルーティング制御方法
EP4220419B1 (en) Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests
US11201838B2 (en) System, apparatus and method for increasing efficiency of link communications
JP2019516181A (ja) ケイパビリティ・メタデータに対する操作を実施するための装置及び方法
JP5928087B2 (ja) スイッチ、情報処理装置および通信制御方法
JPWO2014038070A1 (ja) 情報処理装置,並列計算機システム及び情報処理装置の制御方法
US10097658B2 (en) Traffic control of packet transfer
WO2015155997A1 (ja) 設定装置、制御装置、設定方法及びネットワークスイッチ
TWI791134B (zh) 通信裝置、資訊處理系統及通信方法
CN104702508A (zh) 表项动态更新方法及系统
US9535851B2 (en) Transactional memory that performs a programmable address translation if a DAT bit in a transactional memory write command is set
WO2016065610A1 (zh) 访问文件的方法、分布式存储系统和存储节点
JP2018504689A5 (ja)
JP3274859B2 (ja) データ処理装置
US20160266813A1 (en) Storage subsystem technologies
CN117873370A (zh) 用于保护设备数据传送的系统、方法和装置

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2016512609

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15777022

Country of ref document: EP

Kind code of ref document: A1