WO2014027416A1 - 情報処理装置、及び情報処理装置の制御方法 - Google Patents

情報処理装置、及び情報処理装置の制御方法 Download PDF

Info

Publication number
WO2014027416A1
WO2014027416A1 PCT/JP2012/070896 JP2012070896W WO2014027416A1 WO 2014027416 A1 WO2014027416 A1 WO 2014027416A1 JP 2012070896 W JP2012070896 W JP 2012070896W WO 2014027416 A1 WO2014027416 A1 WO 2014027416A1
Authority
WO
WIPO (PCT)
Prior art keywords
port
unit
processing unit
communication
ntb
Prior art date
Application number
PCT/JP2012/070896
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 JP2014530424A priority Critical patent/JP5930046B2/ja
Priority to PCT/JP2012/070896 priority patent/WO2014027416A1/ja
Publication of WO2014027416A1 publication Critical patent/WO2014027416A1/ja
Priority to US14/622,985 priority patent/US20150160984A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Definitions

  • the present invention relates to an information processing apparatus and a method for controlling the information processing apparatus.
  • An information processing device such as a server is equipped with a plurality of CPUs (Central Processing Units), and has a physical partitioning function by connecting the CPUs to each other by QPI (Quick Path Interconnect), HT (Hyper Transport), etc. May be taken.
  • CPUs Central Processing Units
  • QPI Quadick Path Interconnect
  • HT Hyper Transport
  • FIG. 14 is a block diagram showing a basic configuration of an information processing apparatus (server) 100 having a physical partitioning function.
  • the server 100 shown in FIG. 14 includes four CPUs 101A to 101D. Note that reference numeral 101A to 101D is used when one of the four CPUs is specified, and reference numeral 101 is used when referring to an arbitrary CPU.
  • Each CPU 101 has two CPU interconnect ports 102, and the four CPUs 101A to 101D are connected in a ring shape via the CPU interconnect port 102 and the CPU interconnect line 103.
  • the server 100 is divided into two physical servers by the physical versioning function, and the two CPUs 101A and 101B and the two CPUs 101C and 101D are assigned to different partitions # 0 and # 1, respectively.
  • the CPU interconnect line 103 between the two CPUs 101A and 101B belonging to the partition # 0 and the CPU interconnect line 103 between the two CPUs 101C and 101D belonging to the partition # 1 are used as usual.
  • the CPU interconnect lines 103 extending over different partitions # 0 and # 1, that is, the lines 103 between the CPUs 101A and 101D and between the CPUs 101B and 101C are not used while being physically connected, or are connected to the CPU interconnect line 103. The output is kept saved or powered off.
  • FIG. 15 and FIG. 16 are block diagrams showing an example of a communication form between partitions and another example, respectively.
  • a PCI Express (registered trademark; PCIe (registered trademark); Peripheral Components Interconnect express) switch 104 is provided under each CPU 101, and a NIC (Network Interface) is installed in the card slot 104 a of each PCIe switch 104. Card) 105 is loaded. Then, NICs 105 and 105 belonging to different partitions # 0 and # 1 are connected via Ethernet (registered trademark) using a cable 106. Thereby, data communication is performed between the CPUs 101A and 101D belonging to different partitions # 0 and # 1, respectively.
  • a PCIe switch 104 ′ that is shared by the CPUs 101A and 101D belonging to the two partitions # 0 and # 1 and has a partitioning function and an NTB (Non-Transparent Bridge) port 104b is provided. It is done. Then, data communication is performed between the CPUs 101A and 101D belonging to different partitions # 0 and # 1 using the NTB port 104b of the PCIe switch 104 ′.
  • the NTB port fulfills the function for sharing data between two different partitions or between hosts in the PCI specification, and has a memory-mapped space in the port and uses that space. It is a port that can exchange data between partitions and between hosts.
  • an object of the present invention is to efficiently realize communication between processing units belonging to different partitions.
  • the information processing apparatus includes a plurality of processing units and a setting unit configured to perform settings according to a partition configuration for the plurality of processing units, and each of the plurality of processing units includes other processing units. And a port for communicating with the other processing unit.
  • the port includes a first communication unit, a second communication unit, and a selection unit.
  • the first communication unit communicates with a processing unit belonging to the same partition as the processing unit to which the port belongs.
  • the second communication unit communicates with a processing unit belonging to a partition different from the processing unit to which the port belongs.
  • the selection unit selects one of the first communication unit and the second communication unit according to the setting by the setting unit, and causes the selected communication unit to perform communication with the other processing unit. .
  • FIG. 3 is a block diagram illustrating a one-partition state of the information processing apparatus illustrated in FIG. 2.
  • FIG. 3 is a block diagram illustrating a two-partition state of the information processing apparatus illustrated in FIG. 2. It is a block diagram which shows the detailed structure of the NTB port upper layer (2nd communication part) shown in FIG.
  • FIG. 7 is a block diagram for explaining a tag conversion / inverse conversion function and a transaction ID conversion / inverse conversion function by an address conversion unit of the NTB transaction layer shown in FIG. 6. It is a block diagram explaining the doorbell function and scratch pad function by the NTB transaction layer shown in FIG. 7 is a diagram for explaining packet division and encapsulation by a CPU interconnect data link interface (second interface) shown in FIG. 6. It is a block diagram which shows the principal part structure of the information processing apparatus as 2nd Embodiment.
  • FIG. 1 It is a block diagram which shows the detailed structure of the NTB port upper layer (2nd communication part) shown in FIG. It is a block diagram which shows the basic composition of the information processing apparatus (server) which has a physical partitioning function. It is a block diagram which shows an example of the communication form between partitions. It is a block diagram which shows the other example of the communication form between partitions.
  • FIG. 1 is a block diagram illustrating the main configuration of the server 1 according to the first embodiment.
  • FIG. 2 illustrates the overall configuration of the server 1 according to the first embodiment to which the main configuration illustrated in FIG. 1 is applied.
  • FIG. 3 is a flowchart (steps S1 to S7) for explaining the functions of the system firmware (setting unit) 40 shown in FIG. 2 and the multiplexer (selection unit) 25 shown in FIG.
  • the server 1 shown in FIGS. 1 and 2 includes four CPUs (processing units) 10A to 10D.
  • CPUs processing units
  • reference numerals 10A to 10D are used.
  • reference numeral 10 is used.
  • the CPUs 10 are point-to-point connected by QPI, HT or the like.
  • Each CPU 10 has two CPU interconnect ports 20, and the four CPUs 10 A to 10 D are connected in a ring shape through the CPU interconnect port 20 and the CPU interconnect line 11.
  • a CPU interconnect port (hereinafter sometimes referred to simply as a port) 20 is connected to a processor core 60 (see FIGS. 7, 9, and 10), a memory or an I / O via a CPU internal bus 50.
  • An (Input / Output) device 70 (see FIGS. 7 and 9) is connected.
  • the server 1 also has a physical partitioning function, and has system firmware (F / W; setting unit) 40 that performs settings in accordance with the partition configuration for the four CPUs 10A to 10D (see FIG. 2, see FIG. 4 and FIG.
  • the system F / W 40 is configured to be operable by a user via the network 90.
  • a port mode selection register (hereinafter sometimes simply referred to as a register) 30 is attached to each of the two ports 20.
  • the register 30 is for setting the operation mode of the port 20.
  • the register 30 stores the physical partition configuration and FIGS. 4 and 5 by the system F / W 40 via the CPU internal bus 50 according to instructions from the user. First information or second information to be described later is set with reference to the reference.
  • the port 20 in each CPU 10 is provided on the chip of the CPU 10, is connected to another CPU 10 via the CPU interconnect line 11, and communicates with the other processing unit 10.
  • a physical layer 21, a data link layer 22, a CPU interconnect upper layer 23, a PCIe-NTB port upper layer 24, and a multiplexer 25 are provided between the CPU interconnect line 11 and the CPU internal bus 50. .
  • the physical layer 21, the data link layer 22, and the CPU interconnect upper layer 23 are existing configurations provided between the CPU interconnect line 11 and the CPU internal bus 50.
  • a PCIe-NTB port upper layer 24 and a multiplexer 25 are added to the existing configuration.
  • the CPU interconnect upper layer 23 higher than the data link layer 22 functions as a first communication unit that communicates with the CPU 10 belonging to the same partition as the CPU 10 to which the port 20 belongs.
  • the CPU interconnect upper layer 23 causes the CPU interconnect port 20 to function as a port for executing communication for sharing the memory space for all memory accesses with other CPUs 10 belonging to the same partition.
  • the PCIe-NTB port upper layer 24 is provided in parallel with the CPU interconnect upper layer 23 and functions as a second communication unit that communicates with the CPU 10 to which the port 20 belongs and a CPU 10 belonging to a different partition.
  • the PCIe-NTB port upper layer 24 causes the CPU interconnect port 20 to function as an NTB (Non-Transparent Bridge) port of the PCI device.
  • the NTB port executes communication explicitly instructed by the processor core 60 constituting the CPU 10 to which the port 20 belongs with another CPU 10 belonging to a different partition.
  • a multiplexer 25 is provided between the upper layers 23 and 24 provided in parallel and the data link layer 22.
  • the multiplexer 25 selects one of the CPU interconnect upper layer 23 and the PCIe-NTB port upper layer 24 according to the setting by the system F / W 40, and sends the other upper layer (communication unit) 23 or 24 to the other It functions as a selection unit that executes communication with the CPU 10.
  • the system F / W 40 When the system F / W 40 receives an instruction about physical partitioning from the user via the network 90 (see YES route in step S1 in FIG. 3), the system F / W 40 conforms to the partition configuration according to the instruction to the four CPUs 10A to 10D. Settings are made (see step S2 in FIG. 3). At that time, the system F / W 40 sets the first information or the second information in the register 30 provided for each port 20 as shown in FIG. 4 or FIG. 5 (steps S3 and S4 in FIG. 3). ).
  • the first information is a value indicating that another CPU 10 connected to the port 20 belongs to the same partition, and is, for example, “0”.
  • the second information is a value indicating that another CPU 10 connected to the port 20 belongs to a different partition, and is “1”, for example.
  • the multiplexer 25 switches the data path so as to select the CPU interconnect upper layer 23, and the port 20 Function as a CPU interconnect port (see step S6 in FIG. 3).
  • the multiplexer 25 sets the data path so as to select the PCIe-NTB port upper layer 24.
  • the port 20 is switched to function as an NTB port (see step S7 in FIG. 3).
  • FIG. 4 is a block diagram showing a one-partition state of the server 1.
  • the system F / W 40 sets the first information “0” in all the registers 30 in the four CPUs 10A to 10D. Accordingly, the multiplexer 25 switches the data path so that the CPU interconnect upper layer 23 is selected, and all the ports 20 function as normal CPU interconnect ports. Accordingly, communication for sharing the memory space for all memory accesses is executed with other CPUs 10 belonging to the same partition.
  • FIG. 5 is a block diagram showing a two-partition state of the server 1.
  • the server 1 is divided into two physical servers by the physical versioning function, and the two CPUs 10A and 10B and the two CPUs 10C and 10D are assigned to different partitions # 0 and # 1, respectively. .
  • the first information “0” is set by the system F / W 40 in the register 30 corresponding to the port 20 that mutually connects the CPUs 10A and 10B belonging to the same partition # 0.
  • the multiplexer 25 switches the data path so that the CPU interconnect upper layer 23 is selected at the port 20, and the port 20 functions as a normal CPU interconnect port. Therefore, communication for sharing the memory space for all memory accesses is executed between the CPUs 10A and 10B belonging to the same partition.
  • the CPU 10C and 10D belonging to the same partition # 1 are set and selected in the same manner as described above, and communication for sharing the memory space for all memory accesses is executed between the CPUs 10C and 10D.
  • the second information “1” is set by the system F / W 40 in the register 30 corresponding to the port 20 that interconnects the CPUs 10A and 10D belonging to the different partitions # 0 and # 1. Accordingly, the multiplexer 25 switches the data path so that the PCIe-NTB port upper layer 24 is selected in the port 20, and the port 20 functions as an NTB port. In other words, the CPU interconnect port 20 that is normally unused can be used as the NTB port. Therefore, communication explicitly instructed by the processor core 60 constituting the CPU 10A or 10D is executed between the CPUs 10A and 10D belonging to different partitions # 0 and # 1 via the NTB port.
  • the CPU 10B and 10C belonging to the different partitions # 0 and # 1 are set and selected in the same manner as described above, and the communication explicitly instructed by the processor core 60 constituting the CPU 10B or 10C is executed between the CPUs 10B and 10C. .
  • a communication path is established between the port 20 and another CPU 10 by selecting the PCIe-NTB port upper layer 24 and causing the unused port 20 to function as an NTB port to execute communication.
  • the communication path thus established can be used as at least one of a memory mirroring path and a failover path.
  • the server 100 when the server 100 is divided into a plurality of physical servers by the partitioning function and used, the two CPUs 101 in the server 100 are separated. Allocated to partitions # 0 and # 1. In this case, the point-to-point CPU interconnect (port 102 and line 103) that connects the two CPUs 101 is usually unused.
  • the CPU interconnect port 20 that has conventionally been unused when connecting CPUs belonging to different partitions functions as an NTB port of the PCI device. .
  • a communication path is established between the CPUs 10A and 10D belonging to different partitions # 0 and # 1, or between the CPUs 10B and 10C, and is used as a memory mirroring path or a failover path between different partitions. Therefore, it is possible to efficiently realize communication between the CPUs 10 and 10 belonging to different partitions by using a CPU interconnect (port 20 and line 11) that has not been used conventionally.
  • the NTB port described above fulfills a function for sharing data between two different partitions or between hosts in the PCI specification, and has a memory-mapped space in the port. It is a port that can exchange data between partitions and between hosts using.
  • FIG. 6 is a block diagram showing a detailed configuration of the PCIe-NTB port upper layer 24.
  • the PCIe-NTB port upper layer 24 includes a CPU internal bus interface (I / F) 241, a PCIe-NTB transaction layer 242, and a CPU interconnect data link interface (I / F) 243. .
  • the CPU internal bus I / F (first interface) 241 is connected to the processor core 60 via the CPU internal bus 50.
  • the CPU internal bus I / F 241 performs cache protocol control and also converts between data (DATA and CMD (command)) on the processor core 60 side and data conforming to PCIe use on the transaction layer 242 side.
  • the CPU internal bus I / F 241 functions to divide / combine the cache line size data on the processor core 60 side into the PCIe payload size data on the transaction layer 242 side.
  • the CPU internal bus I / F 241 functions to divide / combine PCIe payload size data on the transaction layer 242 side into cache line size data on the processor core 60 side.
  • the CPU internal bus I / F 241 has buffers 241a to 241d.
  • the buffer 241a receives the command CMD (RX) from the CPU internal bus 50 (processor core 60), and the converted command is output from the buffer 241a to the transaction layer 242.
  • the buffer 241b receives the data DATA (RX) from the CPU internal bus 50 (processor core 60), and the converted data is output from the buffer 241b to the transaction layer 242.
  • the buffer 241 c receives a command from the transaction layer 242, and the converted command CMD (TX) is transmitted from the buffer 241 c to the processor core 60 or the memory 70 via the CPU internal bus 50.
  • the buffer 241 d receives data from the transaction layer 242, and the converted data DATA (TX) is transmitted from the buffer 241 d to the processor core 60 or the memory 70 via the CPU internal bus 50.
  • the CPU interconnect data link I / F (second interface) 243 is connected to another CPU 10 via the multiplexer 25, the data link layer 22, the physical layer 21, and the CPU interconnect line 11.
  • the CPU interconnect data link I / F 243 performs division / reconfiguration of TLP (Transaction Layer Packet) generated in the transaction layer 242. Since the packet length of the TLP and the maximum packet length defined by the CPU interconnect do not always match, the transaction layer 242 performs TLP division or combination as necessary. The packet division and encapsulation of TLP will be described later with reference to FIG. 11 in item [1-6].
  • the CPU interconnect data link I / F 243 has buffers 243a and 243b.
  • the buffer 243a receives the TLP from the transaction layer 242, and the divided or combined packet is transmitted from the buffer 243a to the other CPU 10 via the multiplexer 25, the data link layer 22, the physical layer 21, and the CPU interconnect line 11. Is done.
  • the buffer 243b receives a packet from another CPU 10, and the TLP obtained by the division or combination is sent from the buffer 243b to the transaction layer 242.
  • the PCIe-NTB transaction layer 242 is arranged between the CPU internal bus I / F 241 and the CPU interconnect data link I / F 243, and performs TLP generation / disassembly and address conversion. Therefore, the transaction layer 242 includes a PCI configuration register 242a, a memory mapped I / O (MMIO) register 242b, an address conversion unit 242c, a TLP generation unit 242d, a TLP disassembly unit 242e, and an address conversion unit 242f. .
  • MMIO memory mapped I / O
  • the PCI configuration register 242a is a register set conforming to the use of PCIe.
  • the MMIO register 242b has the following six types of registers 242b-1 to 242b-6, which will be described later with reference to FIGS. 7, 9, and 10 in items [1-4] and [1-5]. .
  • the address conversion unit 242c determines the data to be transmitted to the other CPU 10 based on the command from the processor core 60 and the value of the MMIO register 242b as described later with reference to FIGS. Perform address translation.
  • the TLP generation unit 242d generates a TLP including data to be transmitted to another CPU 10 based on the information obtained by the address conversion unit 242c, and outputs the TLP to the CPU interconnect data link I / F 243.
  • the TLP disassembling unit 242e obtains address information and received data by disassembling (disassembling) the TLP received from another CPU 10, and outputs the address information to the address converting unit 242f, while the received data is sent to the CPU internal bus I. / F241 (buffer 241d) for output.
  • the address conversion unit 242f performs address conversion on the address information received from the TLP disassembly unit 242e based on the value of the MMIO register 242b as described later with reference to FIGS. 7 to 9 in the item [1-4]. The result is output as a command to the CPU internal bus I / F 241 (buffer 241c).
  • the operation of the PCIe-NTB port upper layer 24 configured as described above will be briefly described.
  • the CPU internal bus I / F 241 converts the data to the other CPU 10 into data conforming to the PCI specification. Convert.
  • the transaction layer 242 generates a TLP based on data from the CPU internal bus I / F 241.
  • the CPU interconnect data link I / F 243 converts the TLP from the transaction layer 242 into a packet conforming to the communication specification (CPU interconnect) between the port 20 and the other CPU 10.
  • the CPU interconnect data link I / F 243 first converts a packet from the other CPU 10 into a TLP. . Then, the transaction layer 242 generates data conforming to the PCI specification based on the TLP from the CPU interconnect data link I / F 243. Thereafter, the CPU internal bus I / F 241 converts data from the transaction layer 242 into data for the processor core 60 or the memory (I / O device) 70.
  • FIG. 7 is a block diagram illustrating an address conversion function by the address conversion units 242c and 242f of the transaction layer 242 shown in FIG.
  • FIG. 7 shows transfer of write data from the processor core 60 of the CPU 10A belonging to the partition # 0 to the memory 70 of the CPU 10D belonging to the partition # 1.
  • the processor core 60 of partition # 0 on the transmission side writes the write data to be sent to the memory 70 of partition # 1 with the BAR 242b-1 of NTB of partition # 0 as the destination.
  • the address at this time is A.
  • This address A is an address belonging to the memory space of the partition # 0.
  • the address conversion unit 242c in the PCIe-NTB port upper layer 24 of the partition # 0 confirms that the write address is within the range between the lower limit value and the upper limit value, and performs address conversion. At this time, if the set value (lower limit value) of BAR 242b-1 is B, the address conversion unit 242c confirms that the address A is not less than the set value B and not more than the upper limit value set in the LAR 242b-2. The value indicated by AB is output as the converted address.
  • the translated address AB is an address belonging to the CPU interconnect address space.
  • the address conversion unit 242f in the PCIe-NTB port upper layer 24 of the partition # 1 that has received the data converts the address AB of the received data into an address in the memory space of the partition # 1.
  • the setting value (lower limit; target address (TA)) of BAR 242b-1 of partition # 1 is C
  • the converted address is AB + C
  • this address AB + C is the memory of partition # 1.
  • the PCIe-NTB port upper layer 24 of the partition # 1 executes DMA (Direct Memory Address) using the AB + C as an address to the memory (I / O device) 70 via the CPU internal bus 50. .
  • DMA Direct Memory Address
  • FIG. 8 is a diagram showing the contents of the transaction ID (identification)
  • FIG. 9 is a diagram illustrating the tag conversion / inverse conversion function and the transaction ID conversion / inverse conversion function by the address conversion unit 242f of the transaction layer 242 shown in FIG.
  • FIG. 9 shows a read access from the processor core 60 of the CPU 10A belonging to the partition # 0 to the memory 70 of the CPU 10D belonging to the partition # 1.
  • the address conversion for the address to be read is performed in the same manner as the procedures (A1) to (A4) described above with reference to FIG.
  • read data is transferred from partition # 1 to partition # 0.
  • the transaction ID of the read data has a one-to-one correspondence with the transaction ID of the read request (Read Request) so that the processor core 60 of the partition # 0 of the request source can identify which request the response from the partition # 1 is. It is associated.
  • the transaction ID includes a requester ID and a tag.
  • the requester ID (RID) is read request source information (ID of the processor core 60) including a bus number, a device number, and a function number.
  • the tag is a sequential number generated for each request by the processor core 60, for example.
  • the requester ID (RID) and tag conversion procedure will be described below with reference to FIG. 9 and procedures (B1) to (B6).
  • the processor core 60 of the partition # 0 on the transmission side requests a read request from the PCIe-NTB port upper layer 24 of the partition # 0 with its requester ID.
  • the PCIe-NTB port upper layer 24 of the partition # 0 that has received the read request uses the address conversion unit 242c to set a tag of the received transaction ID so that the read request received by the partition # 0 can be uniquely identified. Perform tag conversion to be replaced. Thereby, the PCIe-NTB port upper layer 24 can uniquely recognize the correspondence between the read request and the read data by using only the tag. At this time, the original transaction ID before tag conversion and the tag value after tag conversion are associated and stored in the first table (not shown). Thereafter, the PCIe-NTB port upper layer 24 of the partition # 0 transfers the read request including the transaction ID after the tag conversion to the PCIe-NTB port upper layer 24 of the partition # 1.
  • the address conversion unit 242f in the PCIe-NTB port upper layer 24 of the partition # 1 that has received the read request partitions the requester ID (the ID of the processor core 60 of the partition # 0) among the transaction IDs of the received read request. RID conversion to be replaced with the requester ID on the # 1 side is performed. The requester ID on the partition # 1 side is used when a response (read data / completion notification; Read Data / Completion) from the memory 70 to the read request returns to the PCIe-NTB port upper layer 24 of the partition # 1. The At this time, the transaction ID before RID conversion is stored in the second table (not shown) in the PCIe-NTB port upper layer 24 of the partition # 1.
  • the address conversion unit 242c in the PCIe-NTB port upper layer 24 of the partition # 1 searches for the transaction ID before RID conversion in the second table using the tag as a key, and based on the requester ID of the received read data. RID reverse conversion is performed to replace the requester ID. Thereafter, the PCIe-NTB port upper layer 24 transfers the read data including the transaction ID after RID reverse conversion to the PCIe-NTB port upper layer 24 of the partition # 0.
  • the address conversion unit 242f in the PCIe-NTB port upper layer 24 of the partition # 0 searches the first table using the tag included in the transaction ID of the received read data as a key, and based on the tag of the transaction ID Perform tag reverse conversion to replace the tag. Thereafter, the PCIe-NTB port upper layer 24 transfers the read data including the transaction ID after the tag reverse conversion to the processor core 60 via the CPU internal bus 50.
  • FIG. 10 is a block diagram for explaining a doorbell function and a scratch pad function by the transaction layer 242 shown in FIG.
  • an NTB port (PCIe-NTB transaction layer 242) has a doorbell function and a scratchpad function for communication between CPUs 10 (for example, CPUs 10A and 10D) belonging to different partitions # 0 and # 1. It has.
  • the doorbell function is a function for raising an interrupt (INT) from the processor core 60 of one partition # 0 or # 1 to the processor core 60 of the other partition # 1 or # 0. It is.
  • the processor core 60 on the transmission side performs writing to the transmission doorbell register 242b-3 of the PCIe-NTB transaction layer 242 on the transmission side by PIO (Programmed I / O).
  • PIO Programmed I / O
  • the PCIe-NTB transaction layer 242 on the transmission side Upon receiving this write, the PCIe-NTB transaction layer 242 on the transmission side generates a message packet (Msg; TLP) and transmits it to the PCIe-NTB transaction layer 242 on the reception side.
  • the message packet at this time is uniquely defined using a mechanism of Vendor Defined Message of the PCIe specification.
  • the PCIe-NTB transaction layer 242 on the receiving side determines that the content received by the message packet is a doorbell. Then, the PCIe-NTB transaction layer 242 on the receiving side executes writing to the receiving doorbell register 242b-4 and notifies the receiving processor core 60 of an interrupt (INT).
  • INT an interrupt
  • the PCIe-NTB transaction layer 242 (NTB port) writes an interrupt instruction for the other CPU 10 from the processor core 60 to the transmission doorbell register 242b-3
  • the PCIe-NTB transaction layer 242 generates a TLP indicating the interrupt and transfers it to the other CPU.
  • the PCIe-NTB transaction layer 242 (NTB port) issues an interrupt instruction to the processor core 60 when an interrupt instruction for the processor core 60 from another CPU 10 is written to the reception doorbell register 242b-4.
  • the scratch pad function is a function used by the processor cores 60 of the partitions # 0 and # 1 to exchange information of about several bytes.
  • the processor core 60 on the transmission side writes the exchange information in the transmission scratchpad register 242b-5 of the PCIe-NTB transaction layer 242 on the transmission side by PIO.
  • the transmitting side PCIe-NTB transaction layer 242 in which the exchange information is written generates a message packet (Msg; TLP) and transmits it to the receiving side PCIe-NTB transaction layer 242.
  • the message packet at this time is uniquely defined using a mechanism of Vendor Defined Message of the PCIe specification.
  • the receiving PCIe-NTB transaction layer 242 Upon receiving the message packet related to the scratch pad function, the receiving PCIe-NTB transaction layer 242 that has received the message packet determines that the content received by the message packet is a scratch pad. Then, the PCIe-NTB transaction layer 242 on the receiving side reflects the contents (exchange information) of the message packet in the receiving scratch pad register 242b-6. The processor core 60 on the receiving side can know the exchange information from the processor core 60 on the transmitting side by reading the contents of the receiving scratch pad register 242b-6 by PIO.
  • the PCIe-NTB transaction layer 242 (NTB port) includes the exchange information when the exchange information to be exchanged with the other CPU 10 is written from the processor core 60 to the transmission scratchpad register 242b-5 of the transaction layer 242. A TLP is generated and transferred to another CPU 10.
  • the PCIe-NTB transaction layer 242 (NTB port) when the exchange information to be exchanged with the processor core 60 from another CPU 10 is written in the receiving scratchpad register 242b-6, the inquiry (PIO) from the processor core 60 In response to this, the processor core 60 is notified of the exchange information of the receiving scratch pad register 242b-6.
  • FIG. 11 is a diagram for explaining packet division and encapsulation by the CPU interconnect data link I / F 243 shown in FIG.
  • the CPU interconnect data link I / F 243 of the transmitting NTB port receives the PCIe TLP from the upstream PCIe-NTB transaction layer 242.
  • the format of TLP is as shown in the upper part of FIG.
  • the CPU interconnect data link I / F 243 divides the received TLP according to the packet size (packet length) of the CPU interconnect, or performs padding, and performs one or more matching to the packet size of the CPU interconnect. Generate a packet.
  • FIG. 11 shows packet division and encapsulation when the received TLP is larger than the packet size of the CPU interconnect. That is, first, the CPU interconnect data link I / F 243 divides the TLP shown in the upper part of FIG. 11 into two packets as shown in the middle part of FIG. The size of one (left side) packet is the same as the packet size of the CPU interconnect. However, since the size of the other (right side) packet is smaller than the packet size of the CPU interconnect, the size of the other packet is the same as the packet size of the CPU interconnect as shown on the right side in the middle of FIG. Padding is performed so that
  • the CPU interconnect data link I / F 243 has a header (Haeder) of the data link layer of the CPU interconnect before and after each of the divided packets as shown in the lower part of FIG. And CRC (Cyclic Redundancy Check) are added. Thereby, each packet is encapsulated.
  • the CPU interconnect data link I / F 243 of the receiving NTB port reconstructs the PCIe TLP from the data link layer packet in a process reverse to the packet splitting and encapsulation process of the transmitting NTB port described above. To do.
  • FIG. 12 is a block diagram showing the main configuration of the server 1 ′ of the second embodiment
  • FIG. 13 shows the detailed configuration of the PCIe-NTB port upper layer (second communication unit) 24 ′ shown in FIG. It is a block diagram.
  • the same reference numerals as those already described indicate the same or substantially the same parts, and the description thereof will be omitted.
  • the CPU 10 in the server 1 ′ of the second embodiment has a PCIe port 81 as shown in FIG.
  • the CPU 10 when the CPU 10 has the PCIe port 81, the CPU 10 includes a PCIe root complex 80 between the CPU internal bus 50 and the PCIe port 81.
  • the CPU internal bus I / F 241 according to the first embodiment may be mounted in the PCIe route complex 80 and shared with other PCIe ports 81.
  • connection destination on the upstream side of the PCIe-NTB port upper layer 24 ′ is not the CPU internal bus 50 but the PCIe root complex 80. It is different from the form (the PCIe-NTB port upper layer 24).
  • the PCIe-NTB port upper layer 24 ' is connected to the PCIe route complex 80, as shown in FIG. 12, and therefore, as shown in FIG. The block of the bus I / F 241 is not necessary.
  • PCIe-NTB transaction layer 242 and the CPU interconnect data link I / F 243 are the same as the PCIe-NTB port upper layer 24 of the first embodiment in the PCIe-NTB port upper layer 24 'of the second embodiment. Similarly provided.
  • the CPU internal bus I / F (first interface) in the first embodiment is set by the PCIe route complex 80.
  • the function 241 is realized. Therefore, according to server 1 'of 2nd Embodiment, the effect similar to 1st Embodiment can be acquired with a simpler structure.
  • Server including the above-described CPU interconnect upper layer (first communication unit) 23, PCIe-NTB port upper layer (second communication unit) 24, 24 ', multiplexer (selection unit) 25, and system F / W (setting unit) 40 All or some of the various functions 1 and 1 'are realized by a computer (including a CPU, an information processing apparatus, and various terminals) executing a predetermined program.
  • a computer including a CPU, an information processing apparatus, and various terminals
  • the program is, for example, flexible disk, CD (CD-ROM, CD-R, CD-RW, etc.), DVD (DVD-ROM, DVD-RAM, DVD-R, DVD-RW, DVD + R, DVD + RW, etc.), Blu-ray Disc And the like recorded in a computer-readable recording medium.
  • the computer reads the program from the recording medium, transfers it to the internal storage device or the external storage device, and uses it.
  • the computer is a concept including hardware and an OS (operating system), and means hardware operating under the control of the OS. Further, when the OS is unnecessary and the hardware is operated by the application program alone, the hardware itself corresponds to the computer.
  • the hardware includes at least a microprocessor such as a CPU and means for reading a computer program recorded on a recording medium.
  • the program includes a program code for causing the computer as described above to realize the various functions of the servers 1 and 1 'described above. Also, some of the functions may be realized by the OS instead of the application program.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Information Transfer Systems (AREA)

Abstract

 他の処理部(10)に接続され他の処理部(10)との通信を行なうポート(20)を有する複数の処理部(10)と、複数の処理部(10)に対しパーティション構成に則した設定を行なう設定部(40)と、を備え、ポート(20)は、前記ポート(20)の属する処理部(10)と同一パーティションに属する処理部(10)との通信を行なう第1通信部(23)と、前記ポート(20)の属する処理部(10)と異なるパーティションに属する処理部(10)との通信を行なう第2通信部(24)と、設定部(40)による設定に応じて第1通信部(23)と第2通信部(24)とのいずれか一方を選択し、選択した通信部に他の処理部(10)との通信を実行させる選択部(25)と、を有する。これにより、異なるパーティションに属する処理部間の通信が効率よく実現される。

Description

情報処理装置、及び情報処理装置の制御方法
 本発明は、情報処理装置、及び情報処理装置の制御方法に関する。
 サーバ等の情報処理装置は、複数のCPU(Central Processing Unit)を搭載し、CPUどうしをQPI(Quick Path Interconnect), HT(Hyper Transport)等によってポイントツーポイント接続し、物理パーティショニング機能を有する形態をとる場合がある。
 例えば、図14は、物理パーティショニング機能を有する情報処理装置(サーバ)100の基本構成を示すブロック図である。図14に示すサーバ100には、4つのCPU101A~101Dが搭載されている。なお、4つのCPUのうちの一つを特定する場合、符号101A~101Dを用い、任意のCPUを指す場合、符号101を用いる。各CPU101は、2つのCPUインターコネクトポート102を有し、4つのCPU101A~101Dは、CPUインターコネクトポート102およびCPUインターコネクトライン103を介してリング状に接続されている。
 図14に示す例では、サーバ100が物理バーティショニング機能により2つの物理サーバに分割され、2つのCPU101A,101Bと2つのCPU101C,101Dとが、それぞれ異なるパーティション#0,#1に割り当てられている。このとき、パーティション#0に属する2つのCPU101A,101B間のCPUインターコネクトライン103や、パーティション#1に属する2つのCPU101C,101D間のCPUインターコネクトライン103は、通常通り使用される。一方、異なるパーティション#0,#1にまたがるCPUインターコネクトライン103、つまりCPU101A,101D間およびCPU101B,101C間のライン103は、物理的に接続されたまま使用されないか、あるいは、CPUインターコネクトライン103への出力がセーブまたはパワーオフした状態に保たれる。
 図14に示すようにパーティションによって分断された2つのCPU101A,101D間でのデータ通信は、CPU101A,101D間におけるCPUインターコネクトライン103を使用することなく、例えば、図15または図16に示す形態で行なわれる。図15および図16は、それぞれ、パーティション間の通信形態の一例および他例を示すブロック図である。
 図15に示す通信形態の一例では、各CPU101の配下にPCIExpress(登録商標;PCIe(登録商標);Peripheral Components Interconnect express)スイッチ104がそなえられ、各PCIeスイッチ104のカードスロット104aにNIC(Network Interface Card)105が搭載される。そして、異なるパーティション#0,#1にそれぞれ属するNIC105,105が、ケーブル106を用いてEthernet(登録商標)経由で接続される。これにより、異なるパーティション#0,#1にそれぞれ属するCPU101A,101D間でのデータ通信が行なわれる。
 図16に示す通信形態の他例では、2つのパーティション#0,#1にそれぞれ属するCPU101A,101Dによって共用され且つパーティション分割機能およびNTB(Non-Transparent Bridge)ポート104bを有するPCIeスイッチ104′がそなえられる。そして、PCIeスイッチ104′のNTBポート104bを用い、異なるパーティション#0,#1にそれぞれ属するCPU101A,101D間でのデータ通信が行なわれる。なお、NTBポートとは、PCI仕様において、異なる2つのパーティション間やホスト間でデータを共有するための機能を果たすもので、メモリマップされた空間をポート内に有し、その空間を利用してパーティション間やホスト間でのデータのやりとりが可能なポートである。
特開2006-40285号公報 特開2011-221945号公報
 図15に示す通信形態では、異なる2つのパーティション#0,#1間のデータ通信を実現するために、別途、2枚のNIC105とケーブル106とを用意する必要がある。また、図16に示す通信形態では、異なる2つのパーティション#0,#1間で共有するスイッチ104′が必要になる。どちらの通信形態においても、異なるパーティションのCPU101A,101D間で通信をする際にスイッチ104,104′やネットワークを経由することになるため、CPUインターコネクトを使用するよりも通信性能は劣る。このように同一サーバ100内の別パーティションに属するCPU101どうしが通信する場合、低レイテンシで高バンド幅のインターフェイス(CPUインターコネクトライン103)が存在するにも関わらず活用されておらず、NIC105やPCIeスイッチ104,104′等を介して通信が行なわれており、極めて効率が悪い。
 一つの側面で、本発明は、異なるパーティションに属する処理部間の通信を効率よく実現することを目的とする。
 一つの案では、情報処理装置は、複数の処理部と、前記複数の処理部に対しパーティション構成に則した設定を行なう設定部と、を備え、前記複数の処理部のそれぞれは、他の処理部に接続され前記他の処理部との通信を行なうポートを有している。前記ポートは、第1通信部,第2通信部および選択部を有している。前記第1通信部は、前記ポートの属する処理部と同一パーティションに属する処理部との通信を行なう。前記第2通信部は、前記ポートの属する処理部と異なるパーティションに属する処理部との通信を行なう。前記選択部は、前記設定部による前記設定に応じて前記第1通信部と前記第2通信部とのいずれか一方を選択し、選択した通信部に前記他の処理部との通信を実行させる。
 一実施形態によれば、異なるパーティションに属する処理部間の通信を効率よく実現することができる。
第1実施形態としての情報処理装置の要部構成を示すブロック図である。 図1に示す要部構成を適用される、第1実施形態の情報処理装置の全体構成を概略的に示すブロック図である。 図2に示す設定部および図1に示す選択部の機能を説明するフローチャートである。 図2に示す情報処理装置の1パーティション状態を示すブロック図である。 図2に示す情報処理装置の2パーティション状態を示すブロック図である。 図1に示すNTBポート上位層(第2通信部)の詳細構成を示すブロック図である。 図6に示すNTBトランザクション層のアドレス変換部によるアドレス変換機能を説明するブロック図である。 トランザクションIDの内容を示す図である。 図6に示すNTBトランザクション層のアドレス変換部によるタグ変換/逆変換機能およびトランザクションID変換/逆変換機能を説明するブロック図である。 図6に示すNTBトランザクション層によるドアベル機能およびスクラッチパッド機能を説明するブロック図である。 図6に示すCPUインターコネクトデータリンクインターフェイス(第2インターフェイス)によるパケット分割およびカプセル化を説明する図である。 第2実施形態としての情報処理装置の要部構成を示すブロック図である。 図12に示すNTBポート上位層(第2通信部)の詳細構成を示すブロック図である。 物理パーティショニング機能を有する情報処理装置(サーバ)の基本構成を示すブロック図である。 パーティション間の通信形態の一例を示すブロック図である。 パーティション間の通信形態の他例を示すブロック図である。
 以下、図面を参照して実施の形態を説明する。
 〔1〕第1実施形態の情報処理装置(サーバ)
 〔1-1〕第1実施形態の基本的な構成
 まず、図1~図3を参照しながら、第1実施形態としての情報処理装置(サーバ)1の構成および機能について説明する。なお、図1は、第1実施形態のサーバ1の要部構成を示すブロック図、図2は、図1に示す要部構成を適用される、第1実施形態のサーバ1の全体構成を概略的に示すブロック図である。また、図3は、図2に示すシステムファームウエア(設定部)40および図1に示すマルチプレクサ(選択部)25の機能を説明するフローチャート(ステップS1~S7)である。
 図1および図2に示すサーバ1には、4つのCPU(処理部)10A~10Dが搭載されている。ここで、4つのCPUのうちの一つを特定する場合、符号10A~10Dを用い、任意のCPUを指す場合、符号10を用いる。CPU10どうしは、QPI,HT等によってポイントツーポイント接続される。また、各CPU10は、2つのCPUインターコネクトポート20を有し、4つのCPU10A~10Dは、CPUインターコネクトポート20およびCPUインターコネクトライン11を介してリング状に接続されている。
 各CPU10において、CPUインターコネクトポート(以下、単にポートという場合がある)20には、CPU内部バス50を介して、プロセッサコア60(図7,図9,図10参照)や、メモリまたはI/O(Input/Output)装置70(図7,図9参照)が接続されている。
 また、サーバ1は、物理パーティショニング機能を有しており、4つのCPU10A~10Dに対しパーティション構成に則した設定を行なうシステムファームウエア(F/W;設定部)40を有している(図2,図4,図5参照)。システムF/W40は、ネットワーク90を介しユーザによって操作可能に構成されている。さらに、各CPU10のチップ上において、2つのポート20のそれぞれにポートモード選択レジスタ(以下、単にレジスタという場合がある)30が付設されている。レジスタ30は、ポート20の動作モードを設定するためのもので、レジスタ30には、システムF/W40によって、CPU内部バス50を介し、ユーザからの指示により物理パーティション構成と図4および図5を参照しながら後述する第1情報または第2情報とが設定される。
 各CPU10におけるポート20は、CPU10のチップ上に備えられ、CPUインターコネクトライン11を介して他のCPU10に接続され、他の処理部10との通信を行なう。ポート20内において、CPUインターコネクトライン11とCPU内部バス50との間には、物理層21,データリンク層22,CPUインターコネクト上位層23,PCIe-NTBポート上位層24およびマルチプレクサ25が備えられている。
 ポート20において、物理層21,データリンク層22およびCPUインターコネクト上位層23は、CPUインターコネクトライン11とCPU内部バス50との間に備えられる既存の構成である。第1実施形態のポート20では、当該既存の構成に対し、PCIe-NTBポート上位層24およびマルチプレクサ25が追加されている。
 ここで、データリンク層22よりも上位のCPUインターコネクト上位層23は、当該ポート20の属するCPU10と同一パーティションに属するCPU10との通信を行なう第1通信部として機能する。このとき、CPUインターコネクト上位層23は、CPUインターコネクトポート20を、同一パーティションに属する他のCPU10との間で全てのメモリアクセスについてメモリ空間を共有するための通信を実行するポートとして機能させる。
 一方、PCIe-NTBポート上位層24は、CPUインターコネクト上位層23と並列的に備えられ、当該ポート20の属するCPU10と異なるパーティションに属するCPU10との通信を行なう第2通信部として機能する。このとき、PCIe-NTBポート上位層24は、CPUインターコネクトポート20を、PCIデバイスのNTB(Non-Transparent Bridge)ポートとして機能させる。NTBポートは、異なるパーティションに属する他のCPU10との間で当該ポート20の属するCPU10を成すプロセッサコア60によって明示的に指示された通信を実行する。
 また、並列的に備えられた上位層23,24と、データリンク層22との間には、マルチプレクサ25が備えられている。マルチプレクサ25は、システムF/W40による設定に応じて、CPUインターコネクト上位層23とPCIe-NTBポート上位層24とのいずれか一方を選択し、選択した上位層(通信部)23または24に他のCPU10との通信を実行させる選択部として機能する。
 システムF/W40は、ネットワーク90を介してユーザから物理パーティションニングについての指示を受けると(図3のステップS1のYESルート参照)、4つのCPU10A~10Dに対し、当該指示によるパーティション構成に則した設定を行なう(図3のステップS2参照)。その際、システムF/W40は、例えば図4または図5に示すように、ポート20毎に備えられるレジスタ30に対し、第1情報または第2情報の設定を行なう(図3のステップS3,S4)。ここで、第1情報は、ポート20と接続される他のCPU10が同一パーティションに属することを示す値で、例えば“0”である。第2情報は、ポート20と接続される他のCPU10が異なるパーティションに属することを示す値で、例えば“1”である。
 マルチプレクサ25は、レジスタ30に第1情報“0”が設定されている場合(図3のステップS5の“0”ルート参照)、CPUインターコネクト上位層23を選択するようデータのパスを切り換え、ポート20をCPUインターコネクトポートとして機能させる(図3のステップS6参照)。一方、マルチプレクサ25は、レジスタ30に第2情報“1”が設定されている場合(図3のステップS5の“1”ルート参照)、PCIe-NTBポート上位層24を選択するようデータのパスを切り換え、ポート20をNTBポートとして機能させる(図3のステップS7参照)。
 〔1-2〕第1実施形態の基本的な動作および効果
 次に、上述のような構成を有するサーバ1の基本的な動作について、図4および図5を参照しながら説明する。
 ここで、図4は、サーバ1の1パーティション状態を示すブロック図である。図4に示す状態では、4つのCPU10A~10Dは同一パーティションに属しているので、システムF/W40により、4つのCPU10A~10Dにおける全てのレジスタ30に第1情報“0”が設定される。これに伴い、マルチプレクサ25によって、CPUインターコネクト上位層23が選択されるようデータのパスが切り換えられ、全てのポート20は、通常のCPUインターコネクトポートとして機能する。したがって、同一パーティションに属する他のCPU10との間で全てのメモリアクセスについてメモリ空間を共有するための通信が実行される。
 また、図5は、サーバ1の2パーティション状態を示すブロック図である。図5に示す状態では、サーバ1が物理バーティショニング機能により2つの物理サーバに分割され、2つのCPU10A,10Bと2つのCPU10C,10Dとが、それぞれ異なるパーティション#0,#1に割り当てられている。
 この場合、同一パーティション#0に属するCPU10A,10Bを相互に接続するポート20に対応するレジスタ30には、システムF/W40により、第1情報“0”が設定される。これに伴い、マルチプレクサ25により、当該ポート20ではCPUインターコネクト上位層23が選択されるようデータのパスが切り換えられ、当該ポート20は、通常のCPUインターコネクトポートとして機能する。したがって、同一パーティションに属するCPU10A,10B間で全てのメモリアクセスについてメモリ空間を共有するための通信が実行される。同一パーティション#1に属するCPU10C,10Dについても上述と同様の設定・選択が行なわれ、CPU10C,10D間で全てのメモリアクセスについてメモリ空間を共有するための通信が実行される。
 一方、異なるパーティション#0,#1に属するCPU10A,10Dを相互に接続するポート20に対応するレジスタ30には、システムF/W40により、第2情報“1”が設定される。これに伴い、マルチプレクサ25により、当該ポート20ではPCIe-NTBポート上位層24が選択されるようデータのパスが切り換えられ、当該ポート20は、NTBポートとして機能する。つまり、通常、未使用になるCPUインターコネクトポート20をNTBポートとして用いることが可能になる。したがって、NTBポートを介し、異なるパーティション#0,#1に属するCPU10A,10D間でCPU10Aまたは10Dを成すプロセッサコア60によって明示的に指示された通信が実行される。異なるパーティション#0,#1に属するCPU10B,10Cについても上述と同様の設定・選択が行なわれ、CPU10B,10C間でCPU10Bまたは10Cを成すプロセッサコア60によって明示的に指示された通信が実行される。
 上述のように、PCIe-NTBポート上位層24を選択し未使用だったポート20をNTBポートとして機能させ通信を実行することで、ポート20と他のCPU10との間に通信パスが確立される。このように確立された通信パスは、メモリミラーリングパスおよびフェイルオーバーパスの少なくとも一方として用いることができる。
 図14を参照しながら前述したように、図14に示す例では、サーバ100がパーティショニング機能で複数の物理サーバに分割されて使用されているときに、サーバ100中の2つのCPU101が別々のパーティション#0,#1に割り当てられている。この場合、通常、当該2つのCPU101を結ぶポイントツーポイントのCPUインターコネクト(ポート102およびライン103)は未使用となる。
 これに対し、第1実施形態のサーバ1によれば、従来、異なるパーティションに属するCPUどうしを接続する場合に未使用になっていたCPUインターコネクトポート20がPCIデバイスのNTBポートとして機能することになる。これにより、異なるパーティション#0,#1に属するCPU10A,10D間またはCPU10B,10C間に通信パスが確立され、異なるパーティション間でのメモリミラーリングパスやフェイルオーバーパスとして利用される。したがって、従来、使用していなかったCPUインターコネクト(ポート20およびライン11)を利用して、異なるパーティションに属するCPU10,10間の通信を効率よく実現することができる。
 上述したNTBポートは、前述したように、PCI仕様において、異なる2つのパーティション間やホスト間でデータを共有するための機能を果たすもので、メモリマップされた空間をポート内に有し、その空間を利用してパーティション間やホスト間でのデータのやりとりが可能なポートである。
 〔1-3〕PCIe-NTBポート上位層(第2通信部)の詳細構成および動作
 ついで、このようなNTBポートを実現するPCIe-NTBポート上位層(第2通信部)24の詳細構成(内部構造)および動作について、図6~図11を参照しながら説明する。
 図6は、PCIe-NTBポート上位層24の詳細構成を示すブロック図である。図6に示すように、PCIe-NTBポート上位層24は、CPU内部バスインターフェイス(I/F)241,PCIe-NTBトランザクション層242およびCPUインターコネクトデータリンクインターフェイス(I/F)243を有している。
 CPU内部バスI/F(第1インターフェイス)241は、CPU内部バス50を介しプロセッサコア60と接続される。CPU内部バスI/F241は、キャッシュプロトコル制御を行なうとともに、プロセッサコア60側のデータ(DATAおよびCMD (command))とトランザクション層242側のPCIe使用に準拠したデータとの間の変換を行なう。つまり、CPU内部バスI/F241は、プロセッサコア60側のキャッシュラインサイズのデータを、トランザクション層242側のPCIeペイロードサイズのデータに分割/結合する機能を果たす。また、CPU内部バスI/F241は、トランザクション層242側のPCIeペイロードサイズのデータを、プロセッサコア60側のキャッシュラインサイズのデータに分割/結合する機能を果たす。
 なお、CPU内部バスI/F241は、バッファ241a~241dを有している。バッファ241aは、CPU内部バス50(プロセッサコア60)からのコマンドCMD(RX)を受信し、変換後のコマンドは、バッファ241aからトランザクション層242へ出力される。同様に、バッファ241bは、CPU内部バス50(プロセッサコア60)からのデータDATA(RX)を受信し、変換後のデータは、バッファ241bからトランザクション層242へ出力される。また、バッファ241cは、トランザクション層242からのコマンドを受信し、変換後のコマンドCMD(TX)は、バッファ241cからCPU内部バス50を介してプロセッサコア60またはメモリ70へ送信される。同様に、バッファ241dは、トランザクション層242からのデータを受信し、変換後のデータDATA(TX)は、バッファ241dからCPU内部バス50を介してプロセッサコア60またはメモリ70へ送信される。
 CPUインターコネクトデータリンクI/F(第2インターフェイス)243は、マルチプレクサ25,データリンク層22,物理層21およびCPUインターコネクトライン11を介して他のCPU10と接続される。CPUインターコネクトデータリンクI/F243は、トランザクション層242で生成されたTLP(Transaction Layer Packet)の分割/再構成を行なう。TLPのパケット長とCPUインターコネクトで規定された最大パケット長とが必ずしも一致するとは限らないため、トランザクション層242は、必要に応じてTLPの分割あるいは結合を行なう。TLPのパケット分割およびカプセル化については、項目〔1-6〕において図11を参照しながら後述する。
 なお、CPUインターコネクトデータリンクI/F243は、バッファ243a,243bを有している。バッファ243aは、トランザクション層242からのTLPを受信し、分割後または結合後のパケットは、バッファ243aからマルチプレクサ25,データリンク層22,物理層21およびCPUインターコネクトライン11を介して他のCPU10へ送信される。また、バッファ243bは、他のCPU10からのパケットを受信し、分割または結合によって得られたTLPは、バッファ243bからトランザクション層242へ送出される。
 PCIe-NTBトランザクション層242は、CPU内部バスI/F241とCPUインターコネクトデータリンクI/F243との間に配置され、TLPの生成/解体(assemble/disassemble)およびアドレス変換を行なう。このため、トランザクション層242は、PCIコンフィグレーションレジスタ242a,メモリマップドI/O(MMIO)レジスタ242b,アドレス変換部242c,TLP生成部242d,TLP解体部242eおよびアドレス変換部242fを有している。
 PCIコンフィグレーションレジスタ242aは、PCIe使用に準拠したレジスタセットである。
 MMIOレジスタ242bは、項目〔1-4〕,〔1-5〕において図7,図9,図10を参照しながら後述する、下記6種類のレジスタ242b-1~242b-6を有している。
・ベースアドレスレジスタ(BAR;アドレス変換用レジスタ)242b-1
・リミットアドレスレジスタ(LAR;アドレス変換用レジスタ)242b-2
・送信用ドアベルレジスタ(送信用割込みレジスタ)242b-3
・受信用ドアベルレジスタ(受信用割込みレジスタ)242b-4
・送信用スクラッチパッドレジスタ(送信用交換情報レジスタ)242b-5
・受信用スクラッチパッドレジスタ(受信用交換情報レジスタ)242b-6
 アドレス変換部242cは、他のCPU10へ送信すべきデータについて、項目〔1-4〕において図7~図9を参照しながら後述するごとく、プロセッサコア60からのコマンドおよびMMIOレジスタ242bの値に基づきアドレス変換を行なう。
 TLP生成部242dは、アドレス変換部242cで得られた情報に基づき、他のCPU10へ送信すべきデータを含むTLPを生成し、CPUインターコネクトデータリンクI/F243へ出力する。
 TLP解体部242eは、他のCPU10から受信したTLPを解体(ディスアセンブル)することによりアドレス情報および受信データを得て、アドレス情報をアドレス変換部242fへ出力する一方、受信データをCPU内部バスI/F241(バッファ241d)へ出力する。
 アドレス変換部242fは、TLP解体部242eから受信したアドレス情報について、項目〔1-4〕において図7~図9を参照しながら後述するごとく、MMIOレジスタ242bの値に基づきアドレス変換を行ない、変換結果をコマンドとしてCPU内部バスI/F241(バッファ241c)へ出力する。
 ここで、上述のごとく構成されるPCIe-NTBポート上位層24の動作について簡単に説明する。
 PCIe-NTBポート上位層24がポート20をNTBポートとして用い他のCPU10へのデータ送信を行なう場合、まず、CPU内部バスI/F241は、他のCPU10へのデータをPCI仕様に準拠するデータに変換する。そして、トランザクション層242は、CPU内部バスI/F241からのデータに基づきTLPを生成する。この後、CPUインターコネクトデータリンクI/F243は、トランザクション層242からのTLPを、ポート20と他のCPU10との間の通信仕様(CPUインターコネクト)に準拠するパケットに変換する。
 一方、PCIe-NTBポート上位層24がポート20をNTBポートとして用い他のCPU10からのデータ受信を行なう場合、まず、CPUインターコネクトデータリンクI/F243は、他のCPU10からのパケットをTLPに変換する。そして、トランザクション層242は、CPUインターコネクトデータリンクI/F243からのTLPに基づき、PCI仕様に準拠するデータを生成する。この後、CPU内部バスI/F241は、トランザクション層242からのデータをプロセッサコア60またはメモリ(I/O装置)70へのデータに変換する。
 〔1-4〕アドレス変換
 次に、図7~図9を参照しながら、PCIe-NTBトランザクション層242のアドレス変換部242c,242fによるアドレス変換機能について説明する。各物理パーティション#0,#1は別のメモリ空間を有するため、一般的にNTBポートは、アドレス変換機能が必要になる。アドレス変換機能は、PCIe-NTBトランザクション層242において、MMIOレジスタ242b(レジスタ242b-1,242b-2)の設定値に基づき、アドレス変換部242c,242fによって実現される。
 まず、図7を参照しながら、上記アドレス変換機能を用いて、パーティション#0のプロセッサコア60からパーティション#1のメモリ(I/O装置)70に対し書込データの転送(Write転送)を行なう場合の手順(A1)~(A4)について説明する。なお、図7は、図6に示すトランザクション層242のアドレス変換部242c,242fによるアドレス変換機能を説明するブロック図である。図7では、パーティション#0に属するCPU10Aのプロセッサコア60からパーティション#1に属するCPU10Dのメモリ70への書込データの転送が示されている。
 (A1)送信側のパーティション#0のプロセッサコア60は、パーティション#1のメモリ70宛に送りたい書込データを、パーティション#0のNTBのBAR242b-1を宛先として書き込む。この時のアドレスをAとする。このアドレスAは、パーティション#0のメモリ空間に属するアドレスである。
 (A2)パーティション#0のPCIe-NTBポート上位層24におけるアドレス変換部242cは、書込アドレスが下限値と上限値との間の範囲内にあることを確認し、アドレス変換を行なう。このとき、BAR242b-1の設定値(下限値)をBとすると、アドレス変換部242cは、アドレスAが設定値B以上で且つLAR242b-2に設定された上限値以下であることを確認した上で、A-Bで示される値を変換後のアドレスとして出力する。変換後のアドレスA-Bは、CPUインターコネクトアドレス空間に属するアドレスである。
 (A3)データを受け取ったパーティション#1のPCIe-NTBポート上位層24におけるアドレス変換部242fは、受信したデータのアドレスA-Bを、パーティション#1のメモリ空間のアドレスに変換する。このとき、パーティション#1のBAR242b-1の設定値(下限値;ターゲットアドレス(TA))をCとすると、変換後のアドレスはA-B+Cとなり、このアドレスA-B+Cは、パーティション#1のメモリ空間に属するアドレスである。
 (A4)パーティション#1のPCIe-NTBポート上位層24は、CPU内部バス50を介して、メモリ(I/O装置)70に対し、A-B+CをアドレスとしてDMA(Direct Memory Address)を実行する。
 ついで、図8および図9を参照しながら、上記アドレス変換機能を用いて、パーティション#0のプロセッサコア60からパーティション#1のメモリ(I/O装置)70に対する読出アクセス(Read転送)を行なう場合の手順(B1)~(B6)について説明する。なお、図8は、トランザクションID(identification)の内容を示す図、図9は、図6に示すトランザクション層242のアドレス変換部242fによるタグ変換/逆変換機能およびトランザクションID変換/逆変換機能を説明するブロック図である。図9では、パーティション#0に属するCPU10Aのプロセッサコア60からパーティション#1に属するCPU10Dのメモリ70に対する読出アクセスが示されている。
 読出アクセス(Read転送)の場合も、読出対象のアドレスについてのアドレス変換は、図7を参照しながら上述した手順(A1)~(A4)と同様に行なわれる。ただし、読出アクセスの場合、読出データがパーティション#1からパーティション#0の方向へ転送される。要求元のパーティション#0のプロセッサコア60が、パーティション#1からの応答がどの要求に対する応答かを識別できるように、読出データのトランザクションIDは、読出要求(Read Request)のトランザクションIDと一対一で対応付けられている。図8に示すように、トランザクションIDは、リクエスタ(Requester)IDとタグとから構成される。リクエスタID(RID)は、バス番号,デバイス番号,ファンクション番号を含む読出要求元の情報(プロセッサコア60のID)である。タグは、例えば、プロセッサコア60により要求毎に生成される、シーケンシャルな番号である。以下、図9および手順(B1)~(B6)では、リクエスタID(RID)およびタグの変換手順を説明する。
 (B1)送信側のパーティション#0のプロセッサコア60は、自身のリクエスタIDで読出要求をパーティション#0のPCIe-NTBポート上位層24に要求する。
 (B2)読出要求を受け取ったパーティション#0のPCIe-NTBポート上位層24は、自身が受け取っている読出要求を一意に識別できるように、アドレス変換部242cにより、受け取ったトランザクションIDのうちタグを付け替えるタグ変換を行なう。これにより、PCIe-NTBポート上位層24は、タグのみで、読出要求と読出データとの対応を一意に認識できる。このとき、タグ変換前の元のトランザクションIDとタグ変換後のタグの値とは対応付けられて第1テーブル(図示略)に記憶される。この後、パーティション#0のPCIe-NTBポート上位層24は、タグ変換後のトランザクションIDを含む読出要求を、パーティション#1のPCIe-NTBポート上位層24に転送する。
 (B3)読出要求を受け取ったパーティション#1のPCIe-NTBポート上位層24におけるアドレス変換部242fは、受け取った読出要求のトランザクションIDのうちリクエスタID(パーティション#0のプロセッサコア60のID)をパーティション#1側のリクエスタIDに付け替えるRID変換を行なう。このパーティション#1側のリクエスタIDは、読出要求に対するメモリ70からの応答(読出データ/完了通知;Read Data / Completion)がパーティション#1のPCIe-NTBポート上位層24に戻ってきた際に使用される。このとき、パーティション#1のPCIe-NTBポート上位層24において、RID変換前のトランザクションIDは第2テーブル(図示略)に記憶される。
 (B4)パーティション#1のメモリ(I/O装置)70からPCIe-NTBポート上位層24へ、読出データ(完了通知)が応答される。
 (B5)パーティション#1のPCIe-NTBポート上位層24におけるアドレス変換部242cは、タグをキーにして上記第2テーブルにおけるRID変換前のトランザクションIDを検索し、受け取った読出データのリクエスタIDを元のリクエスタIDに付け替えるRID逆変換を行なう。この後、PCIe-NTBポート上位層24は、RID逆変換後のトランザクションIDを含む読出データを、パーティション#0のPCIe-NTBポート上位層24に転送する。
 (B6)パーティション#0のPCIe-NTBポート上位層24におけるアドレス変換部242fは、受け取った読出データのトランザクションIDに含まれるタグをキーにして上記第1テーブルを検索し、トランザクションIDのタグを元のタグに付け替えるタグ逆変換を行なう。この後、PCIe-NTBポート上位層24は、タグ逆変換後のトランザクションIDを含む読出データを、CPU内部バス50を介しプロセッサコア60に転送する。
 〔1-5〕ドアベル機能およびスクラッチパッド機能
 次に、図10を参照しながら、PCIe-NTBトランザクション層242によるドアベル機能およびスクラッチパッド機能について説明する。なお、図10は、図6に示すトランザクション層242によるドアベル機能およびスクラッチパッド機能を説明するブロック図である。
 異なるパーティション#0,#1に属するCPU10(例えばCPU10A,10D)どうしの通信のため、一般的に、NTBポート(PCIe-NTBトランザクション層242)は、ドアベル(Doorbell)機能およびスクラッチパッド(Scratchpad)機能を備えている。
 〔1-5-1〕ドアベル機能
 ドアベル機能は、一方のパーティション#0または#1のプロセッサコア60から他方のパーティション#1または#0のプロセッサコア60に対して割り込み(INT)を上げるための機能である。送信側のプロセッサコア60は、PIO(Programmed I/O)によって、送信側のPCIe-NTBトランザクション層242の送信用ドアベルレジスタ242b-3への書込みを実行する。この書込みを受けた送信側のPCIe-NTBトランザクション層242は、メッセージパケット(Msg;TLP)を生成し、受信側のPCIe-NTBトランザクション層242へ送信する。このときのメッセージパケットは、PCIe仕様のVendor Defined Messageの仕組みを用いて独自に定義される。メッセージパケットを受け取った受信側のPCIe-NTBトランザクション層242は、ドアベル機能に係るメッセージパケットを受信すると、メッセージパケットにより受け取った内容をドアベルと判断する。そして、受信側のPCIe-NTBトランザクション層242は、受信用ドアベルレジスタ242b-4への書込みを実行し、受信側のプロセッサコア60に対して割り込み(INT)を通知する。
 つまり、PCIe-NTBトランザクション層242(NTBポート)は、プロセッサコア60から他のCPU10に対する割込み指示を送信用ドアベルレジスタ242b-3に書き込まれると、割込みを指示するTLPを生成し他のCPUへ転送する。一方、PCIe-NTBトランザクション層242(NTBポート)は、他のCPU10からプロセッサコア60に対する割込み指示を受信用ドアベルレジスタ242b-4に書き込まれると、プロセッサコア60に対する割込み指示を行なう。
 〔1-5-2〕スクラッチパッド機能
 スクラッチパッド機能は、各パーティション#0,#1のプロセッサコア60が数バイト程度の情報を交換するために使用される機能である。送信側のプロセッサコア60は、PIOによって、送信側のPCIe-NTBトランザクション層242の送信用スクラッチパッドレジスタ242b-5に交換情報を書き込む。交換情報を書き込まれた送信側のPCIe-NTBトランザクション層242は、メッセージパケット(Msg;TLP)を生成し、受信側のPCIe-NTBトランザクション層242へ送信する。このときのメッセージパケットは、PCIe仕様のVendor Defined Messageの仕組みを用いて独自に定義される。メッセージパケットを受け取った受信側のPCIe-NTBトランザクション層242は、スクラッチパッド機能に係るメッセージパケットを受信すると、メッセージパケットにより受け取った内容をスクラッチパッドと判断する。そして、受信側のPCIe-NTBトランザクション層242は、メッセージパケットの内容(交換情報)を受信用スクラッチパッドレジスタ242b-6に反映する。受信側のプロセッサコア60は、PIOによって受信用スクラッチパッドレジスタ242b-6の内容を読み出すことで、送信側のプロセッサコア60からの交換情報を知ることが可能になっている。
 つまり、PCIe-NTBトランザクション層242(NTBポート)は、プロセッサコア60から他のCPU10と交換すべき交換情報をトランザクション層242の送信用スクラッチパッドレジスタ242b-5に書き込まれると、当該交換情報を含むTLPを生成し他のCPU10へ転送する。一方、PCIe-NTBトランザクション層242(NTBポート)は、他のCPU10からプロセッサコア60と交換すべき交換情報を受信用スクラッチパッドレジスタ242b-6に書き込まれると、プロセッサコア60からの問合せ(PIO)に応じて、受信用スクラッチパッドレジスタ242b-6の交換情報をプロセッサコア60に通知する。
 〔1-6〕TLPの分割およびカプセル化
 次に、図11を参照しながら、CPUインターコネクトデータリンクI/F(第2インターフェイス)243によるパケット分割およびカプセル化について説明する。なお、図11は、図6に示すCPUインターコネクトデータリンクI/F243によるパケット分割およびカプセル化を説明する図である。
 送信側NTBポートのCPUインターコネクトデータリンクI/F243では、以下のような処理が行なわれる。まず、CPUインターコネクトデータリンクI/F243は、上流のPCIe-NTBトランザクション層242からPCIeのTLPを受信する。TLPのフォーマットは、図11の上段に示すとおりである。CPUインターコネクトデータリンクI/F243は、受信したTLPをCPUインターコネクトのパケットサイズ(パケット長)に合わせて分割したり、パディング(padding)を行なったりして、CPUインターコネクトのパケットサイズに揃えた一以上のパケットを生成する。
 図11では、受信したTLPがCPUインターコネクトのパケットサイズよりも大きい場合の、パケット分割およびカプセル化が示されている。つまり、まず、CPUインターコネクトデータリンクI/F243は、図11の上段に示すTLPを、図11の中段に示すように、2つのパケットに分割する。一方(左側)のパケットのサイズは、CPUインターコネクトのパケットサイズと同じである。しかし、他方(右側)のパケットのサイズは、CPUインターコネクトのパケットサイズよりも小さいため、他方のパケットに対しては、図11の中段の右側に示すごとく、そのサイズがCPUインターコネクトのパケットサイズと同じになるよう、パディングが行なわれている。
 さらに、図11に示す例では、CPUインターコネクトデータリンクI/F243は、2つに分けられたパケットそれぞれの前後に、同図の下段に示すように、CPUインターコネクトのデータリンク層のヘッダ(Haeder)およびCRC(Cyclic Redundancy Check)を付加する。これにより、各パケットは、カプセル化される。一方、受信側NTBポートのCPUインターコネクトデータリンクI/F243は、上述した送信側NTBポートでのパケット分割およびカプセル化のプロセスとは逆のプロセスで、データリンク層のパケットからPCIeのTLPを再構築する。
 〔2〕第2実施形態の情報処理装置(サーバ)
 次に、図12および図13を参照しながら、第2実施形態としての情報処理装置(サーバ)1′の構成について説明する。なお、図12は、第2実施形態のサーバ1′の要部構成を示すブロック図、図13は、図12に示すPCIe-NTBポート上位層(第2通信部)24′の詳細構成を示すブロック図である。図中、既述の符号と同一の符号は、同一もしくはほぼ同一の部分を示しているので、その説明は省略する。
 第2実施形態のサーバ1′におけるCPU10は、図12に示すように、PCIeポート81を有している。このようにCPU10がPCIeポート81を有している場合、CPU10は、CPU内部バス50とPCIeポート81との間にPCIeルートコンプレクス(Root Complex)80を備えている。この場合、第1実施形態のCPU内部バスI/F241をPCIeルートコンプレクス80内に実装し他のPCIeポート81と共用する形態とすることができる。
 つまり、第2実施形態は、図12に示すように、PCIe-NTBポート上位層24′の上流側の接続先が、CPU内部バス50ではなく、PCIeルートコンプレクス80である点で、第1実施形態(PCIe-NTBポート上位層24)と異なっている。
 第2実施形態では、図12に示すように、PCIe-NTBポート上位層24′がPCIeルートコンプレクス80と接続されるので、図13に示すように、第1実施形態では必要であったCPU内部バスI/F241のブロックは不要となる。そのほかのブロック(PCIe-NTBトランザクション層242およびCPUインターコネクトデータリンクI/F243)は、第2実施形態のPCIe-NTBポート上位層24′においても、第1実施形態のPCIe-NTBポート上位層24と同様に備えられる。
 このように、第2実施形態のサーバ1′では、CPU10がPCIeポート81およびPCIeルートコンプレクス80を有する場合、PCIeルートコンプレクス80によって、第1実施形態におけるCPU内部バスI/F(第1インターフェイス)241の機能が実現される。したがって、第2実施形態のサーバ1′によれば、より簡素な構成で、第1実施形態と同様の作用効果を得ることができる。
 〔3〕その他
 以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
 なお、上述した実施形態では、一つのサーバ1に4つのCPU10A~10Dを備えた場合について説明したが、本発明は、これに限定されるものではない。
 上述したCPUインターコネクト上位層(第1通信部)23,PCIe-NTBポート上位層(第2通信部)24,24′,マルチプレクサ(選択部)25およびシステムF/W(設定部)40を含むサーバ1,1′の各種機能の全部もしくは一部は、コンピュータ(CPU,情報処理装置,各種端末を含む)が所定のプログラムを実行することによって実現される。
 そのプログラムは、例えばフレキシブルディスク,CD(CD-ROM,CD-R,CD-RWなど),DVD(DVD-ROM,DVD-RAM,DVD-R,DVD-RW,DVD+R,DVD+RWなど),ブルーレイディスク等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。
 ここで、コンピュータとは、ハードウエアとOS(オペレーティングシステム)とを含む概念であり、OSの制御の下で動作するハードウエアを意味している。また、OSが不要でアプリケーションプログラム単独でハードウエアを動作させるような場合には、そのハードウエア自体がコンピュータに相当する。ハードウエアは、少なくとも、CPU等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取る手段とをそなえている。上記プログラムは、上述のようなコンピュータに、上述したサーバ1,1′の各種機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくOSによって実現されてもよい。
 1,1′  情報処理装置(サーバ)
 10,10A~10D  CPU(処理部)
 11  CPUインターコネクトライン
 20  CPUインターコネクトポート(ポート,NTBポート)
 21  物理層
 22  データリンク層
 23  CPUインターコネクト上位層(第1通信部)
 24,24′  PCIe-NTBポート上位層(第2通信部)
 241  CPU内部バスインターフェイス(第1インターフェイス)
 241a~241d  バッファ
 242  PCIe-NTBトランザクション層(NTBトランザクション層)
 242a  PCIコンフィグレーションレジスタ
 242b  メモリマップドI/O(MMIO)レジスタ
 242b-1  ベースアドレスレジスタ(BAR;アドレス変換用レジスタ)
 242b-2  リミットアドレスレジスタ(LAR;アドレス変換用レジスタ)
 242b-3  送信用ドアベルレジスタ(送信用割込みレジスタ)
 242b-4  受信用ドアベルレジスタ(受信用割込みレジスタ)
 242b-5  送信用スクラッチパッドレジスタ(送信用交換情報レジスタ)
 242b-6  受信用スクラッチパッドレジスタ(受信用交換情報レジスタ)
 242c  アドレス変換部
 242d  TLP生成部
 242e  TLP解体部
 242f  アドレス変換部
 243  CPUインターコネクトデータリンクインターフェイス(第2インターフェイス)
 243a,243b  バッファ
 25  マルチプレクサ(選択部)
 30  ポートモード選択レジスタ(レジスタ)
 40  システムファームウエア(設定部)
 50  CPU内部バス
 60  プロセッサコア
 70  メモリまたはI/O装置
 80  PCIeルートコンプレクス(第1インターフェイス)
 81  PCIeポート
 90  ネットワーク

Claims (16)

  1.  複数の処理部と、
     前記複数の処理部に対しパーティション構成に則した設定を行なう設定部と、を備え、
     前記複数の処理部のそれぞれは、他の処理部に接続され前記他の処理部との通信を行なうポートを有し、
     前記ポートは、
      前記ポートの属する処理部と同一パーティションに属する処理部との通信を行なう第1通信部と、
      前記ポートの属する処理部と異なるパーティションに属する処理部との通信を行なう第2通信部と、
      前記設定部による前記設定に応じて前記第1通信部と前記第2通信部とのいずれか一方を選択し、選択した通信部に前記他の処理部との通信を実行させる選択部と、を有することを特徴とする情報処理装置。
  2.  前記複数の処理部のそれぞれは、
     前記設定部により、前記他の処理部が前記同一パーティションに属することを示す第1情報、または、前記他の処理部が前記異なるパーティションに属することを示す第2情報を設定されるレジスタをさらに有し、
     前記選択部は、前記第1情報が前記レジスタに設定されている場合、前記第1通信部を選択する一方、前記第2情報が前記レジスタに設定されている場合、前記第2通信部を選択することを特徴とする、請求項1に記載の情報処理装置。
  3.  前記第1通信部は、前記同一パーティションに属する前記他の処理部との間で、全てのメモリアクセスについてメモリ空間を共有するための通信を実行することを特徴とする、請求項1または請求項2に記載の情報処理装置。
  4.  前記第2通信部は、前記異なるパーティションに属する前記他の処理部との間で、前記ポートの属する処理部を成すプロセッサコアによって明示的に指示された通信を実行することを特徴とする、請求項1~請求項3のいずれか一項に記載の情報処理装置。
  5.  前記第2通信部が通信を実行することにより、前記ポートは、PCI(Peripheral Components Interconnect)デバイスのNTB(Non-Transparent Bridge)ポートとして機能することを特徴とする、請求項4に記載の情報処理装置。
  6.  前記第2通信部は、
      前記プロセッサコアと接続される第1インターフェイスと、
      前記他の処理部と接続される第2インターフェイスと、
      前記第1インターフェイス部と前記第2インターフェイスとの間に配置されるNTBトランザクション層と、を有し、
     前記第2通信部が前記ポートを前記NTBポートとして用い前記他の処理部へのデータ送信を行なう場合、前記第1インターフェイスは、前記他の処理部へのデータをPCI仕様に準拠するデータに変換し、前記NTBトランザクション層は、前記第1インターフェイスからのデータに基づきTLP(Transaction Layer Packet)を生成し、前記第2インターフェイスは、前記NTBトランザクション層からのTLPを、前記ポートと前記他の処理部との間の通信仕様に準拠するパケットに変換する一方、
     前記第2通信部が前記ポートを前記NTBポートとして用い前記他の処理部からデータ受信を行なう場合、前記第2インターフェイスは、前記他の処理部からのパケットをTLPに変換し、前記NTBトランザクション層は、前記第2インターフェイスからのTLPに基づき、PCI仕様に準拠するデータを生成し、前記第1インターフェイスは、前記NTBトランザクション層からのデータを前記プロセッサコアまたはメモリへのデータに変換することを特徴とする、請求項5に記載の情報処理装置。
  7.  前記複数の処理部のそれぞれは、PCIポートおよびルートコンプレクスを有し、
     前記第2通信部の前記第1インターフェイスは、前記ルートコンプレクスによって構成されることを特徴とする、請求項6に記載の情報処理装置。
  8.  前記第2通信部は、
     前記プロセッサコアから前記他の処理部に対する割込み指示を前記NTBトランザクション層の送信用割込みレジスタに書き込まれると、割込みを指示するTLPを生成し前記他の処理部へ転送する一方、
     前記他の処理部から前記プロセッサコアに対する割込み指示を前記NTBトランザクション層の受信用割込みレジスタに書き込まれると、前記プロセッサコアに対する割込み指示を行なうことを特徴とする、請求項6または請求項7に記載の情報処理装置。
  9.  前記第2通信部は、
     前記プロセッサコアから前記他の処理部と交換すべき交換情報を前記NTBトランザクション層の送信用交換情報レジスタに書き込まれると、前記交換情報を含むTLPを生成し前記他の処理部へ転送する一方、
     前記他の処理部から前記プロセッサコアと交換すべき交換情報を前記NTBトランザクション層の受信用交換情報レジスタに書き込まれると、前記プロセッサコアからの問合せに応じて、前記受信用交換情報レジスタの交換情報を前記プロセッサコアに通知することを特徴とする、請求項6~請求項8のいずれか一項に記載の情報処理装置。
  10.  前記第2通信部が通信を実行することにより、前記ポートと前記他の処理部との間に確立されるパスは、メモリミラーリングパスおよびフェイルオーバーパスの少なくとも一方として機能することを特徴する、請求項1~請求項9のいずれか一項に記載の情報処理装置。
  11.  他の処理部に接続され前記他の処理部との通信を行なうポートを有する複数の処理部を備えた情報処理装置において、前記複数の処理部に対しパーティション構成に則した設定を行なう制御方法であって、
     前記ポートにおいて、前記ポートの属する処理部と同一パーティションに属する処理部との通信を行なう第1通信部と、前記ポートの属する処理部と異なるパーティションに属する処理部との通信を行なう第2通信部と、を備え、
     前記設定に応じて前記第1通信部と前記第2通信部とのいずれか一方を選択し、選択した通信部に前記他の処理部との通信を実行させることを特徴とする情報処理装置の制御方法。
  12.  前記複数の処理部のそれぞれに、前記他の処理部が前記同一パーティションに属することを示す第1情報、または、前記他の処理部が前記異なるパーティションに属することを示す第2情報を設定されるレジスタを備え、
     前記第1情報が前記レジスタに設定されている場合、前記第1通信部を選択する一方、前記第2情報が前記レジスタに設定されている場合、前記第2通信部を選択することを特徴とする、請求項11に記載の情報処理装置の制御方法。
  13.  前記第1通信部に、前記同一パーティションに属する前記他の処理部との間で、全てのメモリアクセスについてメモリ空間を共有するための通信を実行させることを特徴とする、請求項11または請求項12に記載の情報処理装置の制御方法。
  14.  前記第2通信部に、前記異なるパーティションに属する前記他の処理部との間で、前記ポートの属する処理部を成すプロセッサコアによって明示的に指示された通信を実行させることを特徴とする、請求項11~請求項13のいずれか一項に記載の情報処理装置の制御方法。
  15.  前記第2通信部が通信を実行することにより、前記ポートを、PCI(Peripheral Components Interconnect)デバイスのNTB(Non-Transparent Bridge)ポートとして機能させることを特徴とする、請求項14に記載の情報処理装置の制御方法。
  16.  前記第2通信部が通信を実行することにより、前記ポートと前記他の処理部との間に確立されるパスを、メモリミラーリングパスおよびフェイルオーバーパスの少なくとも一方として機能させることを特徴する、請求項11~請求項15のいずれか一項に記載の情報処理装置の制御方法。
PCT/JP2012/070896 2012-08-17 2012-08-17 情報処理装置、及び情報処理装置の制御方法 WO2014027416A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014530424A JP5930046B2 (ja) 2012-08-17 2012-08-17 情報処理装置、及び情報処理装置の制御方法
PCT/JP2012/070896 WO2014027416A1 (ja) 2012-08-17 2012-08-17 情報処理装置、及び情報処理装置の制御方法
US14/622,985 US20150160984A1 (en) 2012-08-17 2015-02-16 Information processing apparatus and method for controlling information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/070896 WO2014027416A1 (ja) 2012-08-17 2012-08-17 情報処理装置、及び情報処理装置の制御方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/622,985 Continuation US20150160984A1 (en) 2012-08-17 2015-02-16 Information processing apparatus and method for controlling information processing apparatus

Publications (1)

Publication Number Publication Date
WO2014027416A1 true WO2014027416A1 (ja) 2014-02-20

Family

ID=50685479

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/070896 WO2014027416A1 (ja) 2012-08-17 2012-08-17 情報処理装置、及び情報処理装置の制御方法

Country Status (3)

Country Link
US (1) US20150160984A1 (ja)
JP (1) JP5930046B2 (ja)
WO (1) WO2014027416A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016009368A (ja) * 2014-06-25 2016-01-18 日本電気株式会社 Io装置の管理装置、io装置の管理方法及びプログラム
WO2016074619A1 (zh) * 2014-11-14 2016-05-19 华为技术有限公司 基于PCIe总线的数据传输方法和装置
WO2018198325A1 (ja) * 2017-04-28 2018-11-01 株式会社日立製作所 ストレージシステム
JP2021507390A (ja) * 2017-12-19 2021-02-22 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 寿命平均化のためのブート時の物理コア割り当てに関する論理的な疑似ランダム

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105022715A (zh) * 2015-07-08 2015-11-04 浪潮(北京)电子信息产业有限公司 一种服务器背板互连方法和系统
TWI597953B (zh) * 2015-11-25 2017-09-01 財團法人工業技術研究院 具故障轉移能力的快速周邊元件互連網路系統與操作方法
BR112017008674A2 (pt) * 2015-12-17 2018-06-19 Huawei Tech Co Ltd método de processamento de solicitação de gravação, processador, e computador
US10191878B2 (en) * 2016-05-11 2019-01-29 Tolefonaktiebolaget LM Ericsson (Publ) High availability of PCIe devices under multiple processors to provide redundancy

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003030162A (ja) * 2001-05-17 2003-01-31 Fujitsu Ltd コンピュータシステム
JP2006040285A (ja) * 2004-07-29 2006-02-09 Hewlett-Packard Development Co Lp パーティショニングされたデバイス間の通信
JP2009151767A (ja) * 2007-12-03 2009-07-09 Internatl Business Mach Corp <Ibm> データ処理システム内で入出力(i/o)仮想化を管理するための方法およびコンピュータ・プログラムならびにデータ処理システム
WO2011045919A1 (ja) * 2009-10-15 2011-04-21 日本電気株式会社 分散システム、通信手段選択方法および通信手段選択プログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3490212B2 (ja) * 1996-04-08 2004-01-26 株式会社日立製作所 情報処理装置の入出力チャネル拡張方法
JPH09231187A (ja) * 1996-02-22 1997-09-05 Hitachi Ltd 並列計算機のデータ転送方法
JP4213415B2 (ja) * 2001-06-29 2009-01-21 富士通株式会社 共有リソースを有し、区画に分割されたシステムにおけるエラー抑制及びエラー処理
US7398380B1 (en) * 2004-02-13 2008-07-08 Fabric7 Systems, Inc. Dynamic hardware partitioning of symmetric multiprocessing systems
US7062594B1 (en) * 2004-06-30 2006-06-13 Emc Corporation Root complex connection system
JP4733399B2 (ja) * 2005-01-28 2011-07-27 株式会社日立製作所 計算機システム、計算機、ストレージ装置及び管理端末
JP5068056B2 (ja) * 2006-10-11 2012-11-07 株式会社日立製作所 障害回復方法、計算機システム及び管理サーバ
US8244951B2 (en) * 2008-09-25 2012-08-14 Intel Corporation Method and apparatus to facilitate system to system protocol exchange in back to back non-transparent bridges
US7913027B2 (en) * 2009-04-07 2011-03-22 Lsi Corporation Configurable storage array controller
JP5585820B2 (ja) * 2010-04-14 2014-09-10 株式会社日立製作所 データ転送装置、計算機システム及びメモリコピー装置
US8589613B2 (en) * 2010-06-02 2013-11-19 Intel Corporation Method and system to improve the operations of an integrated non-transparent bridge device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003030162A (ja) * 2001-05-17 2003-01-31 Fujitsu Ltd コンピュータシステム
JP2006040285A (ja) * 2004-07-29 2006-02-09 Hewlett-Packard Development Co Lp パーティショニングされたデバイス間の通信
JP2009151767A (ja) * 2007-12-03 2009-07-09 Internatl Business Mach Corp <Ibm> データ処理システム内で入出力(i/o)仮想化を管理するための方法およびコンピュータ・プログラムならびにデータ処理システム
WO2011045919A1 (ja) * 2009-10-15 2011-04-21 日本電気株式会社 分散システム、通信手段選択方法および通信手段選択プログラム

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016009368A (ja) * 2014-06-25 2016-01-18 日本電気株式会社 Io装置の管理装置、io装置の管理方法及びプログラム
WO2016074619A1 (zh) * 2014-11-14 2016-05-19 华为技术有限公司 基于PCIe总线的数据传输方法和装置
CN105653481A (zh) * 2014-11-14 2016-06-08 华为技术有限公司 基于PCIe总线的数据传输方法和装置
CN105653481B (zh) * 2014-11-14 2019-03-26 华为技术有限公司 基于PCIe总线的数据传输方法和装置
WO2018198325A1 (ja) * 2017-04-28 2018-11-01 株式会社日立製作所 ストレージシステム
JP2018190368A (ja) * 2017-04-28 2018-11-29 株式会社日立製作所 ストレージシステム
JP2021507390A (ja) * 2017-12-19 2021-02-22 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 寿命平均化のためのブート時の物理コア割り当てに関する論理的な疑似ランダム
JP7421480B2 (ja) 2017-12-19 2024-01-24 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 寿命平均化のためのブート時の物理コア割り当てに関する論理的な疑似ランダム

Also Published As

Publication number Publication date
JP5930046B2 (ja) 2016-06-08
US20150160984A1 (en) 2015-06-11
JPWO2014027416A1 (ja) 2016-07-25

Similar Documents

Publication Publication Date Title
JP5930046B2 (ja) 情報処理装置、及び情報処理装置の制御方法
JP7118922B2 (ja) スイッチングデバイス、ペリフェラル・コンポーネント・インターコネクト・エクスプレスシステムおよびその初期化方法
US7979621B2 (en) Transparent PCI-based multi-host switch
JP5440507B2 (ja) マルチルートpciエクスプレススイッチ、その起動方法、及び、マルチルートpciマネージャプログラム
US7694047B1 (en) Method and system for sharing input/output devices
JP5360607B2 (ja) Pciエクスプレススイッチ、pciエクスプレスシステム、及びネットワーク制御方法
US7979592B1 (en) Virtualization bridge device
US9256560B2 (en) Controller integration
US7783822B2 (en) Systems and methods for improving performance of a routable fabric
US20060230218A1 (en) Method and apparatus for SATA tunneling over fibre channel
JP5903801B2 (ja) 通信装置およびid設定方法
US20230018225A1 (en) Apparatus and mechanism to bypass pcie address translation by using alternative routing
JP5469081B2 (ja) 制御パス入出力仮想化方法
US10169279B2 (en) Input/output control device, input/output control system, and input/output control method for conversion of logical address of instruction into local address of device specified in instruction
TWI791134B (zh) 通信裝置、資訊處理系統及通信方法
TWI309778B (en) Integrated circuit having processor, switch capabilities and ports to receive and forward data
TWI567638B (zh) 多核心處理器、多核心處理系統、及初始化處理核心之方法
JP2013196593A (ja) データ処理装置、データ処理方法及びプログラム
WO2015015652A1 (ja) サーバ間通信機構を備えるサーバシステムおよびその複数サーバ間における通信方法

Legal Events

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

Ref document number: 12891343

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014530424

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

Country of ref document: EP

Kind code of ref document: A1