WO2017154943A1 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
WO2017154943A1
WO2017154943A1 PCT/JP2017/009127 JP2017009127W WO2017154943A1 WO 2017154943 A1 WO2017154943 A1 WO 2017154943A1 JP 2017009127 W JP2017009127 W JP 2017009127W WO 2017154943 A1 WO2017154943 A1 WO 2017154943A1
Authority
WO
WIPO (PCT)
Prior art keywords
local
host
system host
information processing
local device
Prior art date
Application number
PCT/JP2017/009127
Other languages
English (en)
French (fr)
Inventor
山下 英明
大塚 健
Original Assignee
パナソニックIpマネジメント株式会社
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 パナソニックIpマネジメント株式会社 filed Critical パナソニックIpマネジメント株式会社
Priority to US16/083,333 priority Critical patent/US10565147B2/en
Priority to JP2018504536A priority patent/JP7054769B2/ja
Publication of WO2017154943A1 publication Critical patent/WO2017154943A1/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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Definitions

  • PCIe is used in, for example, a system configuration in which a video server is a system host and a memory card is a local device (see, for example, Patent Document 1 to Patent Document 4).
  • the local host interprets the command requested from the system host to the control register group mapped on the memory space on the system host side, and issues the command to the local device.
  • the local host receives a command completion interrupt from the local device, and notifies the system host of the completion of the command through the control register group.
  • Data transfer between the system host and the local device is performed via a high-function switch unit.
  • the high-function switch unit is configured to convert the address and requester ID on the local host side into the address and requester ID on the system host side, and transfer the PCIe packet between the local device and the system host side. .
  • a root complex having a host function is configured as a top-level device.
  • PCIe devices constituting a local device are connected in a tree shape in a point-to-point manner.
  • Normally, only one root complex is connected to one PCIe device tree. That is, the information processing system cannot normally completely separate control of a plurality of hosts (for example, a system host and a local host) in each domain. Therefore, in the information processing system, a plurality of hosts restrict each other's operations.
  • NT port non-transparent port
  • the present embodiment is an information processing apparatus that realizes high-speed data transfer between a local device and a system host while separating the domains of the two hosts in an information processing system including a system host and a local host. I will provide a.
  • the information processing system includes a system host 2, an adapter 4, a local device 6, and the like.
  • the adapter 4 constitutes an information processing apparatus, and includes a high function switch unit 8 (requires high function expression?), A local host 10, a slot 12, and the like.
  • the local device 6 constitutes a PCIe device and includes a nonvolatile memory 14 and the like.
  • FIG. 2 is a detailed block diagram of the information processing system including the information processing apparatus according to the embodiment.
  • the system host 2 includes a memory 20 as a main memory, a processor 24 such as a CPU, a route complex 22, and the like.
  • the root complex 22 constitutes a device that becomes the root of the PCIe tree.
  • the route complex 22 has a DSP (Down Stream Port) 25 which is a port provided in a direction toward the terminal side such as the adapter 4.
  • DSP Down Stream Port
  • USP Up Stream Port
  • the high-function switch unit 8 that is a switch is handled as an endpoint device.
  • separates the domain of two system hosts and a local host connected to a switch is realizable.
  • the NT port 26 and the NT port 28 construct a port that realizes the above separation mode.
  • the event notification unit 30 of the high-function switch unit 8 includes a control register group 32 including a plurality of control registers, a system host interrupt transmission unit 34, a local host interrupt transmission unit 36, and an insertion / extraction detection unit 38.
  • the control register group 32 constitutes a register group for communication that can be accessed from the system host 2 and the local host 10.
  • the control register group 32 has a register and a memory area for exchanging messages between the system host 2 and the local host 10.
  • the control register group 32 is used for registration of a request command from the system host 2 to the adapter 4 and notification of command completion from the adapter 4 to the system host 2.
  • the packet transfer unit 40 of the high function switch unit 8 includes an address conversion table 42, a ReqID conversion table 44, an address conversion unit 46, a ReqID conversion unit 48, and the like.
  • the address conversion table 42 is a table describing a correspondence relationship for matching the system on the system host side and the system on the local host side in the address area. Note that the system of addresses on the system host side and the local host side are independent from each other.
  • the above system means a state in which initialization has been completed by completing each setting (configuration) in order to operate the system host side / local host side.
  • the ReqID conversion table 44 includes a bus number, a device number, and a function number.
  • the ReqID conversion table 44 is a table that describes a correspondence relationship for matching the system host system and the local host system in ReqID (Requester ID). Note that the system host side and local host side bus number systems are independent of each other.
  • the ReqID conversion unit 48 converts the ReqID on the system host side to the ReqID on the local side based on the information in the ReqID conversion table 44. Similarly, when a requester is transferred from the local host side to the system host side, ReqID on the local host side is converted to ReqID on the system host side based on information in the ReqID conversion table 44.
  • the configuration of an information processing system using PCIe is basically a peer-to-peer connection. Therefore, the PCIe switch 50 includes a plurality of PCIe ports. As a result, it is possible to connect to a plurality of local devices via the PCIe port.
  • the local host 10 is provided in the adapter 4 in the embodiment shown in FIG.
  • the local host 10 includes a local control unit 58, a route complex 68, a memory 70 that is a main memory, and the like.
  • the local device initialization unit 60 initializes the configuration space of the local device 6 and puts the local device 6 into an operable state.
  • the local device type determination unit 62 reads the configuration register of the local device 6 and determines the type of the local device 6. Thereby, the local device type discrimination
  • the ReqID conversion table setting unit 66 acquires the ReqID on the system host side and the ReqID on the local host side. Then, the ReqID conversion table setting unit 66 registers the correspondence of ReqID in the ReqID conversion table 44 of the packet transfer unit 40 of the high function switch unit 8.
  • an information processing system including an information processing apparatus is configured.
  • FIG. 3 is a flowchart showing the operations of the information processing apparatus and the peripheral apparatuses that construct the information processing system according to the embodiment.
  • step S1 when the power is turned on or the adapter 4 is inserted into the system host 2 (step S1), the adapter is initialized (step S2). Is detected (step S3), initialization processing at the time of local device insertion (step S4), data transfer processing (step S5), processing at the time of local device removal (step S6), etc. To do.
  • FIG. 4 is a sequence diagram showing an adapter initialization process in the information processing apparatus according to the embodiment and peripheral devices.
  • step S10 the system host 2 establishes a link-up with the high function switch unit 8 (step S10).
  • the system host 2 reads the configuration register (type 0) (see FIG. 8) in the high-function switch unit 8. Then, the system host 2 checks the device ID (Device ID), the vendor ID (Vender ID), and the class code (Class Code) in the high-function switch unit 8 (Step S14). As a result, the system host 2 confirms the connected device.
  • the system host 2 is connected by writing a base address register (Base Address Register) and a command (Command) to the configuration register (type 0) (see FIG. 8) in the high-function switch unit 8.
  • a device is set (step S16).
  • step S18 the local host 10 establishes a link-up with the high function switch unit 8 (step S18).
  • the local host 10 sets the configuration space (type 1) (see FIG. 9) in the configuration register with the route complex 68 (step S19). Specifically, the local host 10 particularly sets the memory base and memory limit of the configuration register.
  • the local host 10 reads the configuration register (type 0) (see FIG. 8) in the high-function switch unit 8. Then, the local host 10 confirms the device ID, vendor ID, and class code in the high function switch unit 8 (step S20). As a result, the local host 10 confirms the connected device.
  • the adapter initialization process of the information processing apparatus and its peripheral devices is executed.
  • FIG. 5 is a sequence diagram illustrating an operation of an initialization process when a local device is inserted in the information processing apparatus according to the embodiment and peripheral apparatuses.
  • the local device 6 is inserted into the slot 12 of the adapter 4 (see FIG. 1). At this time, the local device 6 notifies the high function switch unit 8 of the insertion via the insertion / extraction detection unit 38 of the adapter 4. Thereby, the high function switch unit 8 detects insertion of the local device 6 (step S24).
  • the high function switch unit 8 establishes a link-up with the local device 6 (step S26). Then, the high function switch unit 8 notifies the local host 10 of the insertion of the local device 6 via the local host interrupt transmission unit 36 (step S28).
  • the local host 10 sets the address conversion table 42 and the ReqID conversion table 44 in the packet transfer unit 40 of the high function switch unit 8 (step S34).
  • the setting is executed using the address conversion table setting unit 64 and the ReqID conversion table setting unit 66 of the local host 10.
  • the local host 10 sets the system host 2 as an interrupt destination for the local device 6 (step S36).
  • the local host 10 writes in a predetermined control register of the event notification unit 30 of the high function switch unit 8 of the adapter 4. Then, the local host 10 makes an interrupt transmission request regarding the insertion notification of the local device 6 to the system host 2 to the high function switch unit 8 (step S38). Thereby, the system host interrupt transmission unit 34 of the high function switch unit 8 receives the interrupt transmission request, and makes an interrupt related to the insertion notification of the local device 6 to the system host 2 (step S40).
  • the initialization process when the local device is inserted in the information processing apparatus and its peripheral devices is executed.
  • FIG. 6 is a sequence diagram showing an operation of data transfer processing in the information processing apparatus according to the embodiment and peripheral apparatuses.
  • FIG. 6 illustrates an example in which data is transferred from the local device 6 to the system host 2.
  • the system host 2 issues a transfer command to the high-function switch unit 8 of the adapter 4 (step S42).
  • the high function switch unit 8 receives the transfer command and writes to a predetermined control register in the control register group 32 of the event notification unit 30.
  • the event notification unit 30 makes an interrupt transmission request for issuing a transfer command to the local host 10 to the high function switch unit 8.
  • the high function switch unit 8 notifies the local host 10 of an interrupt regarding transfer command issuance (step S44). Receiving the interrupt notification, the local host 10 issues a transfer command to the local device 6 (step S46).
  • the high function switch unit 8 converts the transferred address and ReqID by the address conversion unit 46 and the ReqID conversion unit 48 (step S49).
  • the high function switch unit 8 transfers the data, the converted address, and the ReqID to the system host 2 (step S50). Transfer of data, address, ReqID, and the like is performed using a PCIe packet.
  • the local device 6 sends an interrupt notification indicating completion to the local host 10 (step S52).
  • the interrupt notification is performed by an MSI interrupt, as will be described later with reference to FIGS. 8, 9, 11, and 12.
  • the local host 10 when receiving the completion interrupt notification, the local host 10 writes to a predetermined control register in the control register group 32 of the event notification unit 30 of the high function switch unit 8. Then, the local host 10 makes an interrupt transmission request regarding the completion of the transfer process of the local device 6 to the system host 2 to the high function switch unit 8 (step S54). As a result, the system host interrupt transmission unit 34 of the high function switch unit 8 receives the interrupt transmission request and notifies the system host 2 of an interrupt regarding the transfer processing completion of the local device 6 (step S56).
  • FIG. 7 is a sequence diagram showing an operation of processing when the local device is removed in the information processing apparatus according to the embodiment and peripheral apparatuses.
  • the high function switch unit 8 notifies the local host 10 of removal of the local device 6 via the local host interrupt transmission unit 36 of the event notification unit 30 (step S60).
  • the local host 10 writes in a predetermined control register in the control register group 32 of the event notification unit 30 of the high function switch unit 8. Then, the local host 10 makes an interrupt notification request regarding removal of the local device 6 to the system host 2 to the high function switch unit 8 (step S62). Thereby, the system host interrupt transmission unit 34 of the high function switch unit 8 receives the interrupt notification request and notifies the system host 2 of an interrupt regarding removal of the local device 6 (step S64).
  • the local removal processing of the information processing apparatus and its peripheral devices is executed.
  • “34h” of the configuration register stores “function pointer (Capabilities Pointer)”.
  • the pointer “34h” indicates an address for storing a function (Capability).
  • an address A4h is stored in “34h” that stores the “function pointer”.
  • A4h stores a Capability ID that is the content of the function.
  • Capability ID can store a plurality of settings. That is, as shown in FIG. 11, “5Ch” indicating the next “function pointer” is stored at the address immediately adjacent to the address where the Capability ID is stored. Furthermore, “E0h” indicating the next “function pointer” is stored in the address immediately adjacent to the address storing the capability ID “5Ch” of the function pointer. In this way, the configuration register is configured such that the Capability ID is provided in a chain.
  • FIG. 12 is explanatory drawing showing the structure of Capability in case Capability ID is MSI interruption setting.
  • Capability ID is MSI interruption setting.
  • the local device 6 sets the address to 0x1000 — 0000 and issues a memory write command to the local host 10.
  • the local control unit 58 of the local host 10 receives the issued memory write command and determines that an interrupt has occurred.
  • the MSI interrupt is executed.
  • FIG. 13 shows an example of an address conversion table from the system host 2 to the local device 6.
  • FIG. 13B shows an example of an address conversion table from the local device 6 to the system host 2.
  • FIG. 14 is a diagram showing a correspondence relationship in the BAR (base address register) space for the address conversion from the system host 2 to the local device 6 shown in FIG.
  • 0xA000_0000 to 0xA000_FFFF are assigned as addresses in the configuration space of the system host 2.
  • 0xA000_0000 to 1K bytes (0x1000) correspond to local side 0xF000_0000 to 1K bytes (0x1000).
  • 1 Kbyte (0x1000) from 0xA000_1000 of the system host 2 corresponds to 1 Kbyte (0x1000) from 0xB000_0000 on the local side.
  • the local side 0xF000 — 0000 to 1 Kbyte (0x1000) shown in FIG. 13A is allocated to the control register group 32 of the high function switch unit 8 shown in FIG.
  • the local side 0xB000_0000 to 1 Kbyte (0x1000) shown in FIG. 13A is allocated to the local device (0) which is one of the local devices shown in FIG.
  • FIG. 15 is a diagram for explaining the correspondence in the configuration space of the address conversion shown in FIG.
  • the local device shown in FIG. 15 corresponds to the local device (0) in FIG.
  • a data transfer request from the system host 2 to the local device 6 is made using a non-prefetch buffer space. That is, a data transfer request is executed using a virtual mapping in the memory space on the system host 2 side.
  • the configuration space on the system host 2 side is assigned 0xA000_0000 to 0xA00F_FFFF.
  • the configuration space on the local device 6 side corresponding to this is assigned 0xB000_0000 to 0xB000_0FFF as shown in FIG. 13A, FIG. 14 and FIG.
  • the address on the system host 2 side is converted into an address on the local device 6 side by the address conversion table shown in FIG.
  • prefetch buffer space in FIG. 15 when a data transfer request from the local device 6 to the system host 2 is made, a space other than the non-prefetch buffer space (prefetch buffer space in FIG. 15) is used.
  • 0xC000_0000 to 0xC000_0FFF is assigned to the configuration space on the local device 6 side.
  • 0xD000_0000 to 0xD000_0FFF are assigned to the configuration space on the system host 2 side corresponding to this, as shown in FIG.
  • address translation is associated between the system host 2 and the local host 10 or local device 6.
  • the information processing apparatus 4 is connected to the system host via the PCIe bus.
  • the information processing apparatus 4 includes a local host 10 and a high function switch unit 8.
  • the high function switch unit 8 includes non-transparent ports 26 and 28 as data input / output ports and a control register group 32 for communication with the system host 2.
  • the PCIe bus of the system host 2 is connected to the local device 6 via the information processing apparatus 4. With the non-transparent ports 26 and 28, the bus number and address system of the PCIe bus on the system host 2 side and the PCIe bus on the local host 10 side are configured independently of each other.
  • the control register group 32 is directly controlled from the local host 10 and is mapped from the system host 2 onto the memory space on the system host side.
  • the local host 10 interprets a command requested from the system host 2 to the control register group 32 mapped on the memory space on the system host side, and issues a command to the local device 6.
  • the local host 10 receives the command completion interrupt from the local device 6 and notifies the system host 2 of the completion of the command through the control register group 32.
  • Data transfer between the system host 2 and the local device 6 is performed via the high-function switch unit 8.
  • the high function switch unit 8 converts the address and requester ID on the local host 10 side to the address and requester ID on the system host 2 side, and transfers the PCIe packet between the local device 6 and the system host side. Configured.
  • the information processing apparatus 4 can perform high-speed processing between the local device 6 and the system host 2 while separating the domains of the two hosts in an information processing system using PCIe including the system host 2 and the local host 10. Data transfer can be realized.
  • FIG. 16 is a schematic block diagram of an information processing system including the information processing apparatus according to the second embodiment.
  • the information processing apparatus according to the second embodiment has substantially the same configuration as the information processing apparatus according to the first embodiment shown in FIG.
  • the information processing system including the information processing apparatus according to the present embodiment includes a plurality of local devices 6 and 6a connected via a slot 12 and packet transfer of a high-function switch unit 8 to be described later.
  • the present embodiment is different from the first embodiment in that the unit 40 includes a direct memory access transfer unit 47 (hereinafter abbreviated as “DMA transfer unit 47”) (see FIG. 17).
  • DMA transfer unit 47 direct memory access transfer unit 47
  • the rest of the configuration is basically the same as the information processing system including the information processing apparatus shown in FIG.
  • the information processing system of the present embodiment has no system host 2, an adapter 4 constituting the information processing apparatus, a plurality of local devices 6 having a master function unit, and no master function unit. It consists of a local device 6a and the like.
  • the adapter 4 constitutes an information processing apparatus, and includes a high function switch unit 8, a local host 10, a slot 12, and the like.
  • the local devices 6 and 6 a are connected to the adapter 4 through the slot 12.
  • the local host 10 may be provided outside the adapter 4 or inside the high function switch unit 8. Moreover, although the local device 6 is illustrated with a removable medium etc., for example, it is not limited to a specific kind.
  • the outline of the information processing system including the information processing apparatus is configured.
  • FIG. 17 is a detailed block diagram of an information processing system including the information processing apparatus according to the embodiment.
  • the basic configuration of the information processing system shown in FIG. 17 is the same as that of the information processing system of the first embodiment, and therefore, different configurations will be described in detail below.
  • the PCIe switch 50 of the adapter 4 includes a plurality of DSPs (Down Stream Ports). A plurality of local devices 6 and 6a are connected to the PCIe switch 50 via respective DSPs.
  • the DSPs DSP # 0 (56 (0)), DSP # 1 (56 (1)),..., DSP # N-1 (56 (n-1)), DSP # N (56 ( n)) is shown as an example of a configuration for connecting to a plurality (N + 1) of local devices 6 and 6a.
  • the local devices include the local device 6 (DSP # 0 to DSP # N-1) having the master function unit 77 and the local device 6a (DSP # N) not provided.
  • the master function unit 77 is a function unit that performs data transfer mainly by the local device itself when performing data transfer.
  • the local device 6 of the present embodiment includes a USP 74, a command analysis unit 76, a data transfer unit 78 having a master function unit 77, and the like.
  • the local device 6a includes a USP 74a, a command analysis unit 76a, a data transfer unit 78a, and the like.
  • the information processing system includes the DMA transfer unit 47 in the packet transfer unit 40 of the high-function switch unit 8 of the adapter 4 constituting the information processing apparatus.
  • the DMA transfer unit 47 controls the writing of data from the system host 2 and the writing of data from the local device 6a to the system host 2 for the local device 6a that does not include the master function unit 77.
  • the DMA transfer unit 47 obtains data by issuing a memory read command to the system host 2 when writing data from the system host 2 to the local device 6a. Then, the DMA transfer unit 47 writes the acquired data to the local device 6a by a memory write command.
  • the DMA transfer unit 47 issues a memory read command to the local device 6a to acquire the data. Then, the DMA transfer unit 47 writes the acquired data to the system host 2 by a memory write command.
  • the local device 6 a without the master function unit 77 performs data transfer with the system host 2 via the direct transfer function of the DMA transfer unit 47. Specifically, data transfer is performed between the memory space of the local device 6 a and the memory space on the system host 2 side via the DMA transfer unit 47.
  • an information processing system including an information processing apparatus is configured.
  • FIG. 18 is a flowchart showing the operations of the information processing apparatus and the peripheral apparatuses that construct the information processing system according to the embodiment.
  • step S101 when the power supply is turned on (step S101), the adapter and local device initialization processing and link-up (step S102) are performed in the information processing apparatus of this embodiment and its peripheral devices. Initialization (step S103) and local device table setting processing (step S104) are executed. Further, the data transfer process (step S106) when there is a master function and the data transfer process (step S107) when there is no master function are executed by determining whether or not there is a master function unit (step S105).
  • FIG. 19 is a sequence diagram showing initialization processing and link-up operations of adapters and local devices in the information processing apparatus and its peripheral devices.
  • the local host 10 reads the configuration register (type 0) (see FIG. 8) of the local devices 6 and 6a. Then, the local host 10 confirms the contents such as the device ID (Device ID), the vendor ID (Vender ID), and the class code (Class Code) (Step S110 to Step S116). As a result, the local host 10 confirms the connected device.
  • the configuration register type 0
  • the local host 10 confirms the contents such as the device ID (Device ID), the vendor ID (Vender ID), and the class code (Class Code) (Step S110 to Step S116). As a result, the local host 10 confirms the connected device.
  • the local host 10 calculates resources based on the acquired information of the local devices 6 and 6a (step S117).
  • the local host 10 writes a predetermined content to the configuration register (type 0) (see FIG. 8) of the local devices 6 and 6a based on the result of resource calculation, and connects the connected device. Setting is made (step S118 to step S124).
  • the predetermined contents are, for example, a base address register (Base Address Register), a command (Command), and the like.
  • the local host 10 registers a resource request command to the system host 2 in the control register group 32 of the event notification unit 30 of the high function switch unit 8. Thereby, the local host 10 sets a local device (step S126). Furthermore, the local host 10 registers a link-up permission command from the system host 2 in the control register group 32 (step S128).
  • initialization processing and link-up of the adapter 4 and the local devices 6 and 6a are executed.
  • FIG. 20A is a sequence diagram illustrating an operation of adapter initialization processing in the information processing apparatus and its peripheral devices.
  • the system host 2 establishes a link-up with the high function switch unit 8 (step S130).
  • the system host 2 reads the configuration register (type 0) (see FIG. 8) in the high-function switch unit 8. Then, the local host 10 confirms the contents such as the device ID, vendor ID, and class code in the high function switch unit 8 (step S132). As a result, the system host 2 confirms the connected device.
  • the system host 2 writes a predetermined content in the configuration register (type 0) (see FIG. 8) in the high-function switch unit 8 and sets the connected device (step S134).
  • the predetermined contents are, for example, a base address register and a command.
  • the initialization process of the adapter 4 is executed.
  • FIG. 20B is a sequence diagram illustrating the operation of local device table setting processing in the information processing apparatus and its peripheral devices.
  • the system host 2 registers a command for confirming the activation of the local host 10 in the control register group 32 of the event notification unit 30 of the high function switch unit 8 (step S136). ).
  • the high function switch unit 8 confirms the activation of the local host 10 by a command registered in the control register group 32 of the event notification unit 30 (step S138).
  • the local host 10 sets the address conversion table 42 and the ReqID conversion table 44 of the packet transfer unit 40 of the high function switch unit 8 (step S140).
  • the setting is executed using the address conversion table setting unit 64 and the ReqID conversion table setting unit 66 of the local host 10.
  • the high function switch unit 8 of the adapter 4 notifies the system host 2 of the activation of the local host 10 by an interrupt process (step S142).
  • the local device table setting process is executed.
  • FIG. 21A is a sequence diagram illustrating an operation of data transfer processing when there is a master function unit in the information processing apparatus and its peripheral devices.
  • FIG. 21 shows data transfer processing in the case of the local device 6 including the master function unit 77.
  • the system host 2 issues a transfer command to a plurality (N) of local devices 6 indicated by # 0 to # N-1 (from step S144 to step S148). .
  • each local device 6 notifies the completion to the system host 2 (from step S150 to step S156).
  • the address and ReqID in the transfer command from the system host 2 are converted by the address conversion unit 46 and ReqID conversion unit 48 of the packet transfer unit 40 of the adapter 4. Then, the converted transfer command is issued toward the appropriate local device 6 out of N (see FIG. 22A).
  • the local device 6 that has received the transfer command transfers data (data, address, and ReqID) to the system host 2
  • the address and ReqID are converted by the address conversion unit 46 and ReqID conversion unit 48 of the high-function switch unit 8. Conversion is performed (see FIG. 22B).
  • FIG. 21B is a sequence diagram illustrating an operation of data transfer processing when there is no master function unit in the information processing apparatus and its peripheral devices.
  • FIG. 21 (b) shows data transfer processing in the case of the local device 6a that does not include a master function unit.
  • the system host 2 issues a transfer command. Then, the system host 2 writes in a predetermined control register of the event notification unit 30 of the high function switch unit 8. As a result, the system host 2 makes a command request for issuing a transfer command to the local host 10 to the high function switch unit 8 (step S160).
  • the high function switch unit 8 notifies the local host 10 of command reception related to the issuance of a transfer command (step S162).
  • the local host 10 issues a transfer command to the local device 6a (step S164).
  • the local device 6a receives the transfer command and sends a notification indicating the completion of the command to the local host 10 (step S166).
  • the interrupt notification is executed by the above-described MSI interrupt.
  • the local host 10 requests the setting of the DMA transfer unit 47 in the packet transfer unit 40 of the high function switch unit 8 (step S168).
  • the DMA transfer unit 47 first reads data at the corresponding address in the memory of the local device 6a (step S170). Then, after the data transfer (step S171), the DMA transfer unit 47 writes the data in the memory 20 of the system host 2 (step S172).
  • the DMA transfer unit 47 first reads data in the memory of the system host (step S172). Then, after the data transfer (step S171), the DMA transfer unit 47 writes the data to the corresponding address in the memory of the local device 6a (step S170).
  • the high function switch unit 8 issues completion of data transfer by the DMA transfer unit 47 of the packet transfer unit 40 to the local host 10 (step S174).
  • the local host 10 makes an interrupt transmission request regarding the transfer processing completion of the local device 6 to the system host 2 to the high function switch unit 8 (step S176).
  • the system host interrupt transmission unit 34 of the high function switch unit 8 receives the interrupt transmission request and notifies the system host 2 of an interrupt regarding the completion of the transfer process of the local device 6 (step S178).
  • FIG. 22 shows an example of an address conversion table from the system host 2 to the local device 6.
  • FIG. 22B shows an example of an address conversion table from the local device to the system host.
  • FIG. 23 is a diagram showing a correspondence relationship in the BAR (base address register) space regarding the address conversion from the system host 2 to the local device 6 shown in FIG.
  • 0xA000_0000 to 0xA001_FFFF are assigned as addresses in the configuration space of the system host 2.
  • 0xA000 — 0000 to 1K bytes (0x1000) correspond to 0 ⁇ F000 — 0000 to 1K bytes (0x1000) on the local side.
  • 1 Kbyte (0x1000) from 0xA000_1000 of the system host 2 corresponds to 0 KB001_0000 to 1 Kbyte (0x1000) on the local side.
  • 1K bytes (0x1000) from 0xA000_2000 of the system host 2 correspond to 0xB002_0000 to 1K (0x1000) on the local side.
  • 1K bytes (0x1000) from 0xA000_ (N + 1) 000 of the system host 2 correspond to 0xB00 (N) _0000 to 1K (0x1000) on the local side (however, 0 ⁇ N ⁇ Fh (hexadecimal)). Further, 1K bytes (0x1000) from 0xA001_0000 of the system host 2 correspond to 1K bytes (0x1000) from 0xB00F_0000 on the local side.
  • 1 Kbyte (0x1000) from 0xF000_0000 on the local side is allocated to the control register group 32 of the high-function switch unit 8. Also, 1K bytes (0x1000) from 0xB000_0000, 0xB001_0000, 0xB00N_0000 on the local side, and 1x byte (0x1000) from 0xB00F_0000 on the local side are local devices (0), (1), (N), and , (0xF).
  • each local device 6 to be controlled from the system host 2 is mapped onto the memory space from the system host 2 side. Then, each mapped one is overlaid. As a result, a plurality of local devices 6 are reconstructed on the memory space (NT Port BAR0) from the system host 2 side as one virtual virtual device.
  • FIG. 24 is a diagram for explaining the correspondence in the configuration space of the address conversion shown in FIG. Note that FIG. 24 illustrates a plurality of local devices 6 overlapped as shown in a perspective view. The front-most local device 6 in FIG. 24 corresponds to the local device (0) in FIG.
  • a data transfer request from the system host 2 to the local device 6 is made using a non-prefetch buffer space. That is, a data transfer request is executed using a virtual mapping in the memory space on the system host 2 side.
  • the configuration space on the system host 2 side is assigned 0xA000_0000 to 0xA00F_FFFF.
  • the configuration space on the local device 6 side corresponding to this is assigned 0xB000_0000 to 0xB000_FFFF as shown in FIG. 22 (a), FIG. 23 and FIG.
  • the address on the system host 2 side is converted into an address on the local device 6 side according to the address conversion table shown in FIG.
  • prefetch buffer space in FIG. 24 a space other than the non-prefetch buffer space (prefetch buffer space in FIG. 24) is used.
  • 0xC000_0000 to 0xC000_0FFF is assigned to the configuration space on the local device 6 side.
  • 0xD000_0000 to 0xD000_0FFF are assigned to the configuration space on the system host 2 side corresponding to this.
  • address translation is associated between the system host 2 and the local host 10 or the local devices 6 and 6a.
  • the information processing apparatus 4 includes the high function switch unit 8.
  • the PCIe bus from the system host 2 is connected to a plurality of local devices (PCIe devices) 6 and 6 a and a local host 10 that controls the local devices via the high function switch unit 8.
  • the bus number and address system of the PCIe bus on the system host 2 side and the PCIe bus on the local host 10 side are configured independently of each other.
  • the high function switch unit 8 includes non-transparent ports 26 and 28 as data input / output ports, and a control register group 32 for communication between the system host 2 and the local host 10.
  • the control register group 32 is directly connected to the local host 10 via a PCIe bus, and is mapped on the memory space from the system host 2.
  • the system host 2 requests a command for the local devices 6 and 6a by using the control register group 32, and the local host 10 interprets the command requested by the control register group 32 to the local devices 6 and 6a. Issue a command. Further, the local devices 6 and 6 a notify the command completion interrupt to the local host 10, and the local host 10 notifies the system host 2 of the command completion through the control register group 32. Data transfer between the system host 2 and the local devices 6 and 6a is performed via the high function switch unit 8.
  • the high function switch unit 8 sets the address and requester ID on the local host 10 side on the system host 2 side. Convert to address and requester ID.
  • the high function switch unit 8 transfers the PCIe packet between the local host 10 side and the system host 2 side.
  • the local device 6 has a master transfer function, a part of the memory space of each local device 6 to be controlled from the system host 2 is mapped onto the memory space from the system host 2 side.
  • the local devices 6 are configured to be virtually reconfigured as one local device 6.
  • the information processing apparatus when connecting to a plurality of local devices 6, the information processing apparatus appropriately maps necessary registers of the local device 6 to the memory space when viewed from the system host 2. Thereby, the shortage of resources on the system host 2 side can be solved.
  • Embodiments 1 and 2 have been described as examples of the technology disclosed in the present application. However, the technology in the present disclosure is not limited to this, and can also be applied to embodiments that have been changed, replaced, added, omitted, and the like. In addition, it is possible to combine the components described in the first and second embodiments to form a new embodiment.
  • the present disclosure is an information processing apparatus connected to a system host via a PCIe bus.
  • the information processing apparatus includes a local host and a high-function switch unit.
  • the high-function switch unit has a non-transparent port as a data input / output port and a control register group for communication of the system host.
  • the system host PCIe bus is connected to a local device via an information processing apparatus. With the non-transparent port, the bus number and address system of the PCIe bus on the system host side and the PCIe bus on the local host side are configured independently of each other.
  • the control register group is directly controlled from the local host, and is mapped on the memory space on the system host side from the system host.
  • the local host interprets the command requested from the system host to the control register group mapped on the memory space on the system host side, and issues the command to the local device.
  • the local host receives a command completion interrupt from the local device, and notifies the system host of the completion of the command through the control register group.
  • Data transfer between the system host and the local device is performed via a high-function switch unit.
  • the high-function switch unit is configured to convert the address and requester ID on the local host side into the address and requester ID on the system host side, and transfer the PCIe packet between the local device and the system host side. Also good.
  • the high-function switch unit of the information processing apparatus further includes an insertion / extraction detection unit that detects insertion / extraction of the local device into / from the information processing apparatus.
  • the insertion / removal detection unit may notify the local host of the occurrence of insertion / removal when the local device is inserted / removed, and the local host may notify the system host of the interruption of occurrence of insertion / removal via the control register group.
  • the local host of the information processing apparatus determines the transfer method by confirming the connected local device after inserting the local device. And according to the determined transfer method, interpreting the command requested from the system host to the control register group mapped on the memory space on the system host side, and issuing the command to the local device, A configuration may be used in which a command requested from a system host to a control register group mapped on a memory space on the system host side is directly switched to a case where a command is issued to a local device.
  • the local host when the transfer method is NVMe, the local host directly sends a command requested from the system host to the control register group mapped on the memory space on the system host side to the local device. Issue a command to it.
  • the transfer method is not NVMe, the local host may interpret the command requested from the system host to the control register group mapped on the memory space on the system host side and issue the command to the local device. Good.
  • the information processing apparatus is configured so that the communication paths of the system host, the information processing apparatus, and the plurality of PCIe devices can wrap and communicate with packets of other communication protocols to transmit and receive PCIe packets equivalently. May be.
  • the information processing apparatus may be configured such that the PCIe packet of the communication path is a bus that switches the PCI packet based on the address and the requester ID.
  • the information processing apparatus may be configured as illustrated in FIG. 25 when it corresponds to a multifunction device in which a plurality of devices are logically connected to one PCIe bus. That is, the information processing apparatus illustrated in FIG. 25 includes a Tag conversion unit 103, a multifunction controller 100, and local devices # 0 and # 1 (101 and 102).
  • the Tag conversion unit 103 may be configured to convert the Tag value between the system host 2 and the adapter 4 into the function number value between the adapter 4 and the multifunction controller 100.
  • FIG. 26 is a diagram illustrating an example of specific conversion values of the Tag conversion unit in the information processing system including the information processing apparatus of FIG.
  • FIG. 27 is a diagram for explaining an extended Tag field valid bit in the device control register of the embodiment.
  • FIG. 28 is a diagram for explaining a requester ID and a tag according to the embodiment.
  • 001b is set in the upper 3 bits of the extension tag.
  • the upper bit 001b of the set expansion tag is converted into the function number 0 by the Tag conversion unit 103 provided in the high function switch unit 8. Further, the upper 3 bits of the extension tag are replaced with 000b. Note that the lower 5 bits xxxxb of the extension tag shown in FIG. 26 uses the value added by the transfer source device during the PCIe transfer as it is.
  • 010b is set in the upper 3 bits of the extension tag.
  • the upper bit 010b of the set expansion tag is converted into the function number 1 by the tag conversion unit 103. Further, the upper 3 bits of the extension tag are replaced with 000b.
  • the Extended Tag Field Enable bit of the device control register that enables the extended tag is enabled. This makes it possible to use the upper 3 bits of the extension tag.
  • the upper 3 bits in the extended Tag 8 bits shown in FIG. 28 correspond to the extended Tag area.
  • the Tag conversion unit 103 expands the value of Tag and converts the extended Tag. Then, based on the converted extension tag, the corresponding local device may be configured to switch the PCIe packet.
  • the information processing system including the information processing apparatus of the present disclosure may be configured to connect a plurality of adapters 4a to 4b to the system host 2 as shown in FIG.
  • FIG. 29 is a schematic block diagram of an information processing system including an information processing apparatus in still another embodiment.
  • adapters 4a and 4b are connected to a system host 2 in, for example, a daisy chain format. Then, the adapters 4a and 4b switch the PCIe packets related to their own adapters 4a and 4b to their own high function switches 8a and 8b through the bridges 110a to 110b. The high function switches 8a and 8b terminate the PCIe bus as an end point.
  • the local devices 111a, 111b, 111c, and 111d in the removable media 113a and 113b are connected to the adapters 4a and 4b via the PCIe switches 112a and 112b.
  • the high-functional switches 8a and 8b terminate the PCIe bus as an end point. Thereby, even if the bus numbers in the removable media 113a and 113b change, the configuration on the system host 2 side does not change. Therefore, it is possible to easily cope with the insertion and removal of the removable media 113a and 113b.
  • the high-function switch unit 8 has been described by taking an example of a configuration in which the command requested to the control register group 32 is interpreted and the command is issued to the PCIe device. I can't.
  • the system host 2 side and the adapter 4 side are NVMe (Non Volatile Memory Express) and the local device 6 side is SATA (Serial-ATA), etc.
  • the system host 2, the adapter 4 and the local device 6 have different transfer methods.
  • the high function switch unit 8 may be configured to interpret a command requested to the control register group 32 and issue the command to the PCIe device.
  • the high function switch unit 8 directly issues a command to the local device 6 without interpreting the command. It is good also as a structure switched as follows. With these configurations, the high-function switch unit 8 of the adapter 4 can appropriately switch processing according to the connected local device.
  • This disclosure can be applied to an information processing apparatus in which a plurality of removable media are mounted. Specifically, the present disclosure is applicable to a video server or the like.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

システムホスト(2)はローカルデバイス(6)に対するコマンドを要求し、ローカルホスト(10)は要求されたコマンドを解釈してローカルデバイス(6)にコマンドを発行する。ローカルデバイス(6)はコマンドの完了の割り込みをローカルホスト(10)へ通知し、ローカルホスト(10)はシステムホスト(2)へコマンドの完了を通知する。システムホスト(2)とローカルデバイス(6)とのデータ転送は高機能スイッチ部(8)を介して行い、高機能スイッチ部(8)は、ローカルホスト(10)側のアドレスをシステムホスト(2)側のアドレスへ変換して、ローカルホスト(10)とシステムホスト(2)との間でPCIパケットを転送する。

Description

情報処理装置
 本開示は、ホストとデバイス間でデータ転送を行う情報処理装置に関する。
 高速シリアルインターフェースとして、PCI Express(登録商標:以下、「PCIe」と記す)が、パーソナルコンピュータなどの様々な電子機器に使用されている。
 PCIeは、例えばビデオサーバをシステムホストとし、メモリカードをローカルデバイスとするシステム構成などに用いられている(例えば、特許文献1から特許文献4参照)。
特開2014-2545号公報 特開2013-45236号公報 特開2013-88879号公報 特開2012-38037号公報
 本開示は、システムホストとローカルホストとを含むPCIeバスを用いた情報処理システムにおいて、ローカルデバイスを構成する複数のPCIeデバイスと、システムホストとの間で、高速のデータ転送を実現するとともに、システムホスト側のリソース不足を解消できる情報処理装置を提供する。
 つまり、本開示は、システムホストとPCIeバスで接続される情報処理装置である。情報処理装置は、ローカルホストと、高機能スイッチ部を備える。高機能スイッチ部は、データ入出力ポートとしてのノントランスペアレントポートと、システムホストの通信用の制御レジスタ群を有する。システムホストのPCIeバスは、情報処理装置を経由して、ローカルデバイスに接続される。ノントランスペアレントポートにより、システムホスト側のPCIeバスと、ローカルホスト側のPCIeバスとの、バス番号およびアドレス体系は、それぞれ独立して構成される。制御レジスタ群は、ローカルホストからは直接制御され、システムホストからはシステムホスト側のメモリ空間上にマッピングされる。ローカルホストは、システムホストからシステムホスト側のメモリ空間上にマッピングされた制御レジスタ群に要求されたコマンドを解釈して、ローカルデバイスに対してコマンドを発行する。ローカルホストは、ローカルデバイスからの、コマンドの完了の割り込みを受信し、制御レジスタ群を通じてシステムホストへコマンドの完了を通知する。システムホストとローカルデバイスとの間のデータ転送は、高機能スイッチ部を介して行われる。高機能スイッチ部は、ローカルホスト側のアドレスおよびリクエスタIDを、システムホスト側のアドレスおよびリクエスタIDへ変換して、ローカルデバイスとシステムホスト側との間で、PCIeパケットを転送するように構成される。
 本開示の情報処理装置によれば、システムホストとローカルホストとを含む情報処理システムにおいて、二つのホストのドメインを分離して、ローカルデバイスを構成するPCIeデバイスとシステムホストとの間のデータ転送を高速で行うことができる。また、複数のPCIeデバイスと接続する場合、システムホストから見てPCIeデバイスの接続に必要なレジスタをメモリ空間に適切にマッピングする。これにより、システムホスト側のリソース不足を解消できる。
図1は、実施の形態1に係る情報処理装置を含む情報処理システムの概略のブロック図である。 図2は、同実施の形態に係る情報処理装置を含む情報処理システムの詳細なブロック図である。 図3は、同実施の形態に係る情報処理装置の動作を示すフロー図である。 図4は、同実施の形態に係る情報処理装置におけるアダプタ初期化処理の動作を示すシーケンス図である。 図5は、同実施の形態に係る情報処理装置における、ローカルデバイス挿入時の初期化処理の動作を示すシーケンス図である。 図6は、同実施の形態に係る情報処理装置における、データ転送処理の動作を示すシーケンス図である。 図7は、同実施の形態に係る情報処理装置における、ローカルデバイス抜去時の処理の動作を示すシーケンス図である。 図8は、コンフィグレーションレジスタにおけるコンフィグレーション空間(タイプ0)を示す図である。 図9は、コンフィグレーションレジスタにおけるコンフィグレーション空間(タイプ1)を示す図である。 図10は、リクエスタ(Requestor)ID変換テーブルの例を示す図である。 図11は、機能(Capability)レジスタの説明図である。 図12は、MSI(Message Signalled Interrupt)の機能構造(Capability Structure)の内容を説明する図である。 図13は、同実施の形態におけるアドレス変換テーブルの例を示す図である。 図14は、同実施の形態における、システムホストとローカルデバイス側とにおける、アドレスの対応例を示す図である。 図15は、同実施の形態における、システムホストとローカルデバイス側とにおける、アドレスの対応例を説明する図である。 図16は、実施の形態2に係る情報処理装置を含む情報処理システムの概略のブロック図である。 図17は、同実施の形態に係る情報処理装置を含む情報処理システムの詳細なブロック図である。 図18は、同実施の形態に係る情報処理装置の動作を示すフロー図である。 図19は、同実施の形態に係る情報処理装置におけるアダプタとローカルデバイスの初期化処理の動作を示すシーケンス図である。 図20は、同実施の形態に係る情報処理装置における、アダプタ初期化処理の動作、および、ローカルデバイスのテーブル設定処理の動作を示すシーケンス図である。 図21は、同実施の形態に係る情報処理装置における、マスタ機能部を有する場合のデータ転送処理の動作、および、マスタ機能部を備えない場合のデータ転送処理の動作を示すシーケンス図である。 図22は、同実施の形態における、アドレス変換テーブルの例を示す図である。 図23は、同実施の形態における、システムホストとローカルデバイス側とにおける、アドレスの対応例を示す図である。 図24は、同実施の形態における、システムホストとローカルデバイス側とにおける、アドレスの対応例を説明する図である。 図25は、別の実施の形態における、情報処理装置を含む情報処理システムの概略のブロック図である。 図26は、同実施の形態における、リクエスタ(Requestor)ID変換テーブルの例を示す図である。 図27は、同実施の形態における、デバイス制御レジスタ内の拡張Tagフィールド有効ビットを説明する図である。 図28は、同実施の形態における、リクエスタIDおよびTagを説明する図である。 図29は、さらに別の実施の形態における、情報処理装置を含む情報処理システムの概略のブロック図である。
 以下、図面を参照しながら、実施の形態を詳細に説明する。但し、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になるのを避け、当業者の理解を容易にするためである。
 なお、添付図面および以下の説明は、当業者が本開示を十分に理解するために提供されるのであって、これらによって請求の範囲に記載の主題を限定することを意図するものではない。
 (実施の形態に至る経緯)
 PCIeを使用する情報処理システムは、ホスト機能を有するルートコンプレクスが最上位デバイスとして構成される。ルートコンプレクスは、ローカルデバイスを構成するPCIeデバイスが、ポイント・ツー・ポイントでツリー状に接続される。通常、一つのPCIeデバイスツリーには、一つのルートコンプレクスのみが接続される。つまり、情報処理システムは、通常、複数のホスト(例えば、システムホストとローカルホスト)をそれぞれのドメインで制御を完全に分離できない。そのため、上記情報処理システムでは、複数のホストが互いの動作を制約する。
 そこで、複数のホストをそれぞれのドメインで分離処理するために、データ転送先を分離するアドレスフィルタを設けた情報処理システムがある。しかし、この場合でも、部分的にアドレスをフィルタリングしているのみで、複数のホストの制御を完全に分離することはできない。
 また、上記課題を解決するために、ノントランスペアレントポート(以下、「NTポート」と記す)を有するPCIeスイッチを使用して、複数のホストの制御を分離するシステムが提案されている。つまり、システムホストとローカルホストのそれぞれにルートコンプレクスを設け、互いにNTポートを有するPCIeスイッチを介して接続する。これにより、システム領域(管理領域)を分離した上で、システムホストとローカルホストとの通信を可能にしている。しかし、上記システムの場合、ローカルデバイスからシステムホストへのデータ転送が、ローカルホストによる制御により制限される。そのため、データ転送の速度が、低速化する。
 そこで、本実施の形態は、システムホストとローカルホストとを含む情報処理システムにおいて、二つのホストのドメインを分離しながら、ローカルデバイスとシステムホストとの間の高速のデータ転送を実現する情報処理装置を提供する。
 また、本実施の形態は、複数のPCIeデバイスを構成するローカルデバイスと接続する場合、システムホストから見てローカルデバイスの接続に必要なレジスタをメモリ空間に適切にマッピングする。これにより、システムホスト側のリソース不足を解消できる情報処理装置を提供する。
 (実施の形態1)
 以下、図1から図15を参照して、実施の形態1の情報処理装置を含む情報処理システムについて説明する。
 (1.1.情報処理装置の構成)
 まず、本実施の形態の情報処理装置を含む情報処理システムの概略構成について、図1を用いて説明する。
 図1は、実施の形態1に係る情報処理装置を含む情報処理システムの概略のブロック図である。
 図1に示すように、情報処理システムは、システムホスト2、アダプタ4、および、ローカルデバイス6などで構成される。アダプタ4は、情報処理装置を構成し、高機能スイッチ部8(高機能の表現は必要ですか?)、ローカルホスト10、スロット12などを含む。ローカルデバイス6は、PCIeデバイスを構成し、不揮発性メモリ14などを含む。
 システムホスト2、アダプタ4、ローカルデバイス6は、PCIeバスおよびスロット12を介して、接続される。
 なお、ローカルホスト10は、アダプタ4の外部や、高機能スイッチ部8の内部などに設けてもよい。また、ローカルデバイス6は、例えばリムーバブルメディアなどで例示されるが、特定の種類に限定されない。
 つぎに、情報処理装置を含む情報処理システムの構成について、図2を用いて、詳細に説明する。
 図2は、同実施の形態に係る情報処理装置を含む情報処理システムの詳細なブロック図である。
 図2に示すように、システムホスト2は、主記憶であるメモリ20、CPUなどのプロセッサ24、および、ルートコンプレクス22などを備える。
 ルートコンプレクス22は、PCIeのツリーのルートとなるデバイスを構成する。ルートコンプレクス22は、例えばアダプタ4などの端末側へ向かう方向へ設けられたポートであるDSP(Down Stream Port)25を有する。一方、後述するUSP(Up Stream Port)は、端末側から上流(プロセッサ24)へ向かう方向へ設けられたポートである。
 ローカルデバイス6は、上述の不揮発性メモリ14の他に、コマンド解析部76、データ転送部78、および、USP74などを備える。コマンド解析部76は、USP74から入力されるデータ転送コマンドを受け付けて、その内容を解釈し、データ転送コマンドの内容に応じた処理を行う。データ転送部78は、コマンド解析部76で解釈したコマンドがデータ転送を伴うコマンドの場合、USP74からPCIeバスを介してデータ転送を行う。なお、ローカルデバイス6は、データ転送を行う際に、自ら主体となってデータ転送を行う機能であるマスタ機能部を備えてもよい。マスタ機能部の詳細は、後述する。
 情報処理装置を構成するアダプタ4は、高機能スイッチ部8、ローカルホスト10などを備える。なお、ローカルホスト10は、上述したように、外部に設けてもよい。
 高機能スイッチ部8は、USPのNTポート26(ノントランスペアレントポート)、DSPのNTポート28、イベント通知部30、パケット転送部40、およびPCIeスイッチ50などを備える。
 なお、PCIeを用いた情報処理システムの構成は、通常、上述したように、ルートコンプレクスをルートとするツリー構造の形態を取る。そのため、PCIeに接続される全てのデバイスは、ルートコンプレクスからのアクセスが可能となる。しかし、上述のように、基本的に、PCIeを用いた情報処理システムは、ホスト毎やデバイス毎のドメインの分離や、複数のルートコンプレクスを設けることができない。
 そこで、本実施の形態では、スイッチである高機能スイッチ部8をエンドポイントデバイスとして扱う。これにより、スイッチに繋がる、例えば二つのシステムホストおよびローカルホストのドメインを分離する形態を実現できる。このとき、NTポート26およびNTポート28が、上記分離形態を実現するポートを構築する。
 高機能スイッチ部8のイベント通知部30は、複数の制御レジスタから成る制御レジスタ群32、システムホスト割込送信部34、ローカルホスト割込送信部36、および、挿抜検出部38などを備える。制御レジスタ群32は、システムホスト2とローカルホスト10とからアクセス可能な通信用のレジスタ群を構成する。制御レジスタ群32は、システムホスト2とローカルホスト10との間でメッセージの交換を行うためのレジスタおよびメモリ領域を有する。なお、制御レジスタ群32は、システムホスト2からアダプタ4への要求コマンドの登録や、アダプタ4からシステムホスト2へのコマンド完了の通知に用いられる。
 システムホスト割込送信部34は、制御レジスタ群32の特定のレジスタを監視する。そして、システムホスト割込送信部34は、ローカルホスト10から特定のレジスタへの書き込みを検出した場合、システムホスト2への割り込みにより、イベントをシステムホスト2に通知する。
 ローカルホスト割込送信部36は、システムホスト割込送信部34と同様に、制御レジスタ群32の特定のレジスタを監視する。そして、ローカルホスト割込送信部36は、システムホスト2から特定のレジスタへの書き込みを検出した場合、ローカルホスト10への割り込みにより、イベントをローカルホスト10に通知する。
 挿抜検出部38は、ローカルデバイス6がスロット12に挿入されているか、抜き去られているかを示す信号線を監視する。そして、挿抜検出部38は、信号線の状態が変化した時に、ローカルホスト割込送信部36に対して、ローカルホスト10への割り込みを要求する。
 高機能スイッチ部8のパケット転送部40は、アドレス変換テーブル42、ReqID変換テーブル44、アドレス変換部46、および、ReqID変換部48などを備える。アドレス変換テーブル42は、アドレス領域における、システムホスト側の体系と、ローカルホスト側の体系との整合を取るための、対応関係を記述するテーブルである。なお、システムホスト側とローカルホスト側のアドレスの体系は、それぞれに対して独立した体系で構成される。なお、上記体系とは、システムホスト側/ローカルホスト側を動作させるためにそれぞれの設定(コンフィグレーション)を完了して初期化が完了した状態を意味する。
 ReqID変換テーブル44は、バス番号、デバイス番号、ファンクション番号から構成される。ReqID変換テーブル44は、ReqID(Requestor ID)における、システムホスト側の体系とローカルホスト側の体系との整合を取るための、対応関係を記述するテーブルである。なお、システムホスト側とローカルホスト側のバス番号の体系は、それぞれに対して独立した体系で構成される。
 アドレス変換部46は、システムホストからローカルホスト側へデータを転送する場合、アドレス変換テーブル42の情報に基づいて、システムホスト側のアドレスをローカルホスト側のアドレスへ変換する。同様に、ローカルホスト側からシステムホスト側へデータを転送する場合、アドレス変換テーブル42の情報に基づいて、ローカルホスト側のアドレスをシステムホスト側のアドレスへ変換する。
 ReqID変換部48は、システムホスト側からローカルホスト側へリクエスタ(Requestor)を転送する場合、ReqID変換テーブル44の情報に基づいて、システムホスト側のReqIDをローカル側のReqIDへ変換する。同様に、ローカルホスト側からシステムホスト側へリクエスタを転送する場合、ReqID変換テーブル44の情報に基づいて、ローカルホスト側のReqIDをシステムホスト側のReqIDへ変換する。
 なお、図10に、システムホスト側とローカル側のリクエスタIDを変換するための、ReqID変換テーブル44の一例を示す。
 また、PCIeを用いた情報処理システムの構成は、ピアツーピア接続が基本である。そのため、PCIeスイッチ50は、複数のPCIeポートを備えている。これにより、PCIeポートを介して、複数のローカルデバイスとの接続が可能となる。
 ローカルホスト10は、図2に示す実施の形態では、アダプタ4の内部に設けられている。ローカルホスト10は、ローカル制御部58、ルートコンプレクス68、および、主記憶であるメモリ70などを備える。
 ローカル制御部58は、ローカルデバイス初期化部60、ローカルデバイス種別判別部62、アドレス変換テーブル設定部64、および、ReqID変換テーブル設定部66などを含む。
 ローカルデバイス初期化部60は、ローカルデバイス6のコンフィグレーション空間の初期設定を行い、ローカルデバイス6を動作可能な状態にする。
 ローカルデバイス種別判別部62は、ローカルデバイス6のコンフィグレーションレジスタを読み出して、ローカルデバイス6の種別を判別する。これにより、ローカルデバイス種別判別部62は、その後の処理において、判別したローカルデバイスごとの処理に切り替える。
 アドレス変換テーブル設定部64は、システムホスト側のアドレス体系とローカルホスト側のアドレス体系とを取得する。そして、アドレス変換テーブル設定部64は、高機能スイッチ部8のパケット転送部40のアドレス変換テーブル42へ、アドレスの対応を登録する。
 ReqID変換テーブル設定部66は、システムホスト側のReqIDとローカルホスト側のReqIDとを取得する。そして、ReqID変換テーブル設定部66は、高機能スイッチ部8のパケット転送部40のReqID変換テーブル44へ、ReqIDの対応を登録する。
 以上のように、情報処理装置を含む情報処理システムは構成される。
 (1.2.情報処理装置の動作)
 以下、情報処理装置を含む情報処理システムの動作について、図3を用いて説明する。
 図3は、同実施の形態に係る情報処理システムを構築する情報処理装置およびその周辺の装置の動作を表すフロー図である。
 図3に示すように、実施の形態の情報処理装置およびその周辺の装置は、電源オンまたはアダプタ4がシステムホスト2に挿入される(ステップS1)と、アダプタ初期化(ステップS2)、ローカルデバイスが挿入されたか否かの検出(ステップS3)、ローカルデバイス挿入時の初期化処理(ステップS4)、データ転送処理(ステップS5)、およびローカルデバイス抜去時の処理(ステップS6)などの動作を実行する。
 なお、各動作におけるデバイスや装置間の信号およびデータの遣り取りについては、図4~図7に示すシーケンス図を用いて、以下で詳細に説明する。
 (1.2.1.アダプタ初期化処理)
 図4は、同実施の形態にかかる情報処理装置およびその周辺の装置におけるアダプタ初期化処理の動作を示すシーケンス図である。
 図4に示すように、まず、システムホスト2は、高機能スイッチ部8とのリンクアップを確立する(ステップS10)。
 つぎに、システムホスト2は、ルートコンプレクス22で、コンフィグレーションレジスタにおけるコンフィグレーション空間(タイプ1)(図9参照)を設定する(ステップS12)。具体的には、システムホスト2は、コンフィグレーションレジスタのメモリベース(Memory Base)およびメモリリミット(Memory Limit)を設定する。
 つぎに、システムホスト2は、高機能スイッチ部8におけるコンフィグレーションレジスタ(タイプ0)(図8参照)を読み取る。そして、システムホスト2は、高機能スイッチ部8におけるデバイスID(Device ID)、ベンダID(Vender ID)、およびクラスコード(Class Code)を確認する(ステップS14)。これにより、システムホスト2は、接続されたデバイスを確認する。
 つぎに、システムホスト2は、高機能スイッチ部8におけるコンフィグレーションレジスタ(タイプ0)(図8参照)に対して、ベースアドレスレジスタ(Base Address Register)、およびコマンド(Command)を書き込んで、接続されたデバイスを設定する(ステップS16)。
 つぎに、ローカルホスト10は、高機能スイッチ部8とのリンクアップを確立する(ステップS18)。
 つぎに、ローカルホスト10は、ルートコンプレクス68で、コンフィグレーションレジスタにおけるコンフィグレーション空間(タイプ1)(図9参照)を設定する(ステップS19)。具体的には、ローカルホスト10は、特に、コンフィグレーションレジスタのメモリベースおよびメモリリミットを設定する。
 つぎに、ローカルホスト10は、高機能スイッチ部8におけるコンフィグレーションレジスタ(タイプ0)(図8参照)を読み取る。そして、ローカルホスト10は、高機能スイッチ部8におけるデバイスID、ベンダID、およびクラスコードを確認する(ステップS20)。これにより、ローカルホスト10は、接続されたデバイスを確認する。
 つぎに、ローカルホスト10は、高機能スイッチ部8におけるコンフィグレーションレジスタ(タイプ0)(図8参照)に対して、ベースアドレスレジスタ、およびコマンドを書き込んで、接続されたデバイスを設定する(ステップS22)。
 以上のように、情報処理装置およびその周辺の装置のアダプタ初期化処理が実行される。
 (1.2.2.ローカルデバイス挿入時の初期化処理)
 図5は、同実施の形態の情報処理装置およびその周辺の装置におけるローカルデバイス挿入時の初期化処理の動作を示すシーケンス図である。
 図5に示すように、まず、ローカルデバイス6がアダプタ4のスロット12(図1参照)に挿入される。このとき、ローカルデバイス6は、アダプタ4の挿抜検出部38を介して高機能スイッチ部8に挿入を通知する。これにより、高機能スイッチ部8は、ローカルデバイス6の挿入を検出する(ステップS24)。
 つぎに、高機能スイッチ部8は、ローカルデバイス6とのリンクアップを確立する(ステップS26)。そして、高機能スイッチ部8は、ローカルホスト割込送信部36を介して、ローカルホスト10にローカルデバイス6の挿入を通知する(ステップS28)。
 つぎに、ローカルホスト10は、ローカルデバイス6におけるコンフィグレーションレジスタ(タイプ0)(図8参照)を読み取る。そして、ローカルホスト10は、ローカルデバイス6におけるデバイスID、ベンダID、およびクラスコードを確認する(ステップS30)。これにより、ローカルホスト10は、接続されたデバイスを確認し、転送方式を決定する。
 つぎに、ローカルホスト10は、ローカルデバイス6におけるコンフィグレーションレジスタ(タイプ0)(図8参照)に対して、ベースアドレスレジスタ、およびコマンドを書き込んで、接続されたデバイスを設定する(ステップS32)。
 つぎに、ローカルホスト10は、高機能スイッチ部8のパケット転送部40におけるアドレス変換テーブル42およびReqID変換テーブル44を設定する(ステップS34)。設定は、ローカルホスト10のアドレス変換テーブル設定部64およびReqID変換テーブル設定部66を用いて、実行される。
 つぎに、ローカルホスト10は、ローカルデバイス6に対して、システムホスト2を割込先として設定する(ステップS36)。
 つぎに、ローカルホスト10は、アダプタ4の高機能スイッチ部8のイベント通知部30の所定の制御レジスタに書き込みを行う。そして、ローカルホスト10は、高機能スイッチ部8に対して、システムホスト2への、ローカルデバイス6の挿入通知に関する割込送信要求を行う(ステップS38)。これにより、高機能スイッチ部8のシステムホスト割込送信部34は、割込送信要求を受けて、システムホスト2に、ローカルデバイス6の挿入通知に関する割込を行う(ステップS40)。
 つまり、ローカルホスト10からシステムホスト2への割込送信が、高機能スイッチ部8の制御レジスタを介して行われる。
 以上のように、情報処理装置およびその周辺の装置のローカルデバイス挿入時の初期化処理が実行される。
 (1.2.3.データ転送処理)
 図6は、同実施の形態の情報処理装置およびその周辺の装置における、データ転送処理の動作を示すシーケンス図である。なお、図6は、ローカルデバイス6からシステムホスト2へデータが転送される場合を例に、図示している。
 図6に示すように、まず、システムホスト2は、アダプタ4の高機能スイッチ部8に転送コマンドを発行する(ステップS42)。そして、高機能スイッチ部8は、転送コマンドを受けて、イベント通知部30の制御レジスタ群32における所定の制御レジスタに書き込みを行う。これにより、イベント通知部30は、高機能スイッチ部8に対して、ローカルホスト10への、転送コマンド発行に関する割込送信要求を行う。
 つぎに、高機能スイッチ部8は、割込送信要求を受けて、ローカルホスト10に、転送コマンド発行に関する割込通知を行う(ステップS44)。割込通知を受けたローカルホスト10は、ローカルデバイス6へ転送コマンドを発行する(ステップS46)。
 つぎに、ローカルデバイス6は、発行された転送コマンドの内容をコマンド解析部76で解析する。そして、ローカルデバイス6は、解析結果に基づいて、データ転送部78によりPCIeスイッチ50を介して、高機能スイッチ部8に、データ、アドレス、およびReqIDなどを転送する(ステップS48)。
 つぎに、高機能スイッチ部8は、アドレス変換部46およびReqID変換部48により、転送されたアドレスおよびReqIDを変換する(ステップS49)。
 そして、高機能スイッチ部8は、データ、および、変換されたアドレスとReqIDをシステムホスト2に転送する(ステップS50)。なお、データ、アドレス、およびReqIDなどの転送は、PCIeパケットを用いて行われる。
 つぎに、ローカルデバイス6は、転送処理が完了すると、完了を示す割込通知をローカルホスト10に送る(ステップS52)。なお、割込通知は、図8、図9、図11および図12を用いて後で、説明するように、MSI割込により行われる。
 つぎに、ローカルホスト10は、完了の割込通知を受け取ると、高機能スイッチ部8のイベント通知部30の制御レジスタ群32における所定の制御レジスタに書き込みを行う。そして、ローカルホスト10は、高機能スイッチ部8に対して、システムホスト2への、ローカルデバイス6の転送処理完了に関する割込送信要求を行う(ステップS54)。これにより、高機能スイッチ部8のシステムホスト割込送信部34は、割込送信要求を受けて、システムホスト2に、ローカルデバイス6の転送処理完了に関する割込通知を行う(ステップS56)。
 以上のように、情報処理装置およびその周辺の装置のデータ転送処理が実行される。
 (1.2.4.ローカルデバイス抜去時の処理)
 図7は、同実施の形態の情報処理装置およびその周辺の装置における、ローカルデバイス抜去時の処理の動作を示すシーケンス図である。
 図7に示すように、まず、ローカルデバイス6がアダプタ4のスロット12(図1参照)から抜去される。このとき、アダプタ4の挿抜検出部38は、ローカルデバイス6に接続されていた信号線の電位変化により、ローカルデバイス6の抜去を検知する。そして、挿抜検出部38を介して、高機能スイッチ部8に、ローカルデバイス6の抜去を検出する(ステップS58)。
 つぎに、高機能スイッチ部8は、イベント通知部30のローカルホスト割込送信部36を介して、ローカルホスト10に、ローカルデバイス6の抜去を通知する(ステップS60)。
 つぎに、ローカルホスト10は、高機能スイッチ部8のイベント通知部30の制御レジスタ群32における所定の制御レジスタに書き込みを行う。そして、ローカルホスト10は、高機能スイッチ部8に対して、システムホスト2への、ローカルデバイス6の抜去に関する割込通知要求を行う(ステップS62)。これにより、高機能スイッチ部8のシステムホスト割込送信部34は、割込通知要求を受けて、システムホスト2に、ローカルデバイス6の抜去に関する割込通知を行う(ステップS64)。
 以上のように、情報処理装置およびその周辺の装置のローカル抜去処理が実行される。
 つまり、上記実施の形態の情報処理システムでは、図4から図7に示すように、システムホスト2とローカルホスト10との間の割込を含む制御コマンドの遣り取りを、高機能スイッチ部8のイベント通知部30における制御レジスタ群32を介して行う。また、システムホスト2とローカルホスト10との間の、データ、アドレス、およびReqIDなどの遣り取りを、高機能スイッチ部8のパケット転送部40におけるアドレス変換部46およびReqID変換部48を介して行う。そのため、データ転送は、ローカルホスト10の制御による制限を受けない。これにより、データ転送の低速化は、発生しない。
 (1.2.5.MSI割込)
 以下に、上述したMSI割込について、図8、図9、図11および図12を用いて、説明する。
 まず、図8および図9に示すように、コンフィグレーションレジスタの“34h”には、「機能ポインタ(Capabilities Pointer)」が格納されている。“34h”のポインタは、機能(Capability)を格納するアドレスを示している。例えば、図11に示すように、「機能ポインタ」を格納する“34h”には、アドレスA4hが格納されている。“A4h”には、機能の内容であるCapability IDが格納されている。
 なお、Capability IDは、複数の設定を格納可能である。つまり、図11に示すように、Capability IDが格納されるアドレスの直ぐ隣のアドレスには、次の「機能ポインタ」を示す“5Ch”が格納されている。さらに、機能ポインタの“5Ch”のCapability IDを格納するアドレスの直ぐ隣のアドレスには、次の「機能ポインタ」を示す“E0h”が格納されている。このように、コンフィグレーションレジスタは、Capability IDが連鎖的に設けられるように構成されている。
 つぎに、機能の内容を示すCapability IDの構成について、図12を用いて説明する。
 図12の(a)は、Capability IDがMSI割込設定の場合における、Capabilityの構成を表す説明図である。そして、この構成において、図12の(b)に示すように、MSI割込のアドレス(Message Address)として、例えば0x1000_0000が設定されるとする。
 このとき、ローカルデバイス6は、例えば転送コマンドを完了すると、アドレスを0x1000_0000に設定して、メモリライトコマンドを、ローカルホスト10に発行する。
 ローカルホスト10のローカル制御部58は、発行されたメモリライトコマンドを受けて、割込が発生したと判断する。
 以上のように、MSI割込が実行される。
 (1.2.6.アドレス変換の例)
 以下に、システムホスト2と、ローカルホスト10やローカルデバイス6との間のアドレス変換の一例について、図13から図15を用いて、説明する。
 図13の(a)は、システムホスト2からローカルデバイス6へのアドレス変換テーブルの一例を示す。図13の(b)は、ローカルデバイス6からシステムホスト2へのアドレス変換テーブルの一例を示す。
 図14は、図13の(a)に示すシステムホスト2からローカルデバイス6へのアドレス変換の、BAR(ベースアドレスレジスタ)空間における対応関係を示す図である。
 図14に示すように、システムホスト2のコンフィグレーション空間におけるアドレスは、0xA000_0000~0xA000_FFFFが割り当てられている。
 このとき、図13の(a)に示すように、図14に示すシステムホスト2のアドレスのうち、0xA000_0000から1Kバイト(0x1000)は、ローカル側の0xF000_0000から1Kバイト(0x1000)に対応する。また、システムホスト2の0xA000_1000から1Kバイト(0x1000)は、ローカル側の0xB000_0000から1Kバイト(0x1000)に対応する。
 さらに、図13の(a)に示すローカル側の0xF000_0000から1Kバイト(0x1000)は、図14に示す高機能スイッチ部8の制御レジスタ群32に割り当てられる。また、図13の(a)に示すローカル側の0xB000_0000から1Kバイト(0x1000)は、図14に示すローカルデバイスの一つであるローカルデバイス(0)に割り当てられる。
 図15は、図13に示すアドレス変換の、コンフィグレーション空間における対応関係を説明する図である。なお、図15に示すローカルデバイスは、図14におけるローカルデバイス(0)に相当する。
 図15に示すように、システムホスト2からローカルデバイス6へのデータ転送要求は、ノンプリフェッチバッファ空間を利用して行われる。すなわち、システムホスト2側のメモリ空間上の仮想的マッピングを用いて、データ転送要求が実行される。
 システムホスト2側のコンフィグレーション空間は、0xA000_0000~0xA00F_FFFFが割り当てられる。一方、これに対応するローカルデバイス6側のコンフィグレーション空間は、図13の(a)、図14および図15に示すように、0xB000_0000~0xB000_0FFFが割り当てられる。
 そして、システムホスト2からローカルデバイス6へのデータ転送要求時においては、図13の(a)に示すアドレス変換テーブルにより、システムホスト2側のアドレスがローカルデバイス6側のアドレスへ変換される。
 また、ローカルデバイス6からシステムホスト2へのデータ転送要求時においては、ノンプリフェッチバッファ空間以外の空間(図15では、プリフェッチバッファ空間)が利用される。
 このとき、ローカルデバイス6側のコンフィグレーション空間は、0xC000_0000~0xC000_0FFFが割り当てられる。一方、これに対応するシステムホスト2側のコンフィグレーション空間は、図13の(b)および図15に示すように、0xD000_0000~0xD000_0FFFが割り当てられる。
 これにより、ローカルデバイス6からシステムホスト2へのデータ転送要求時において、図13の(b)に示すアドレス変換テーブルにより、ローカルホスト10やローカルデバイス6側のアドレスが、システムホスト2側のアドレスへ変換される。
 以上のように、システムホスト2と、ローカルホスト10やローカルデバイス6との間でアドレス変換が対応つけられる。
 (1.3.効果等)
 以上のように、本実施の形態において、情報処理装置4は、システムホストとPCIeバスで接続される。情報処理装置4は、ローカルホスト10と、高機能スイッチ部8を備える。高機能スイッチ部8は、データ入出力ポートとしてのノントランスペアレントポート26、28と、システムホスト2の通信用の制御レジスタ群32を有する。システムホスト2のPCIeバスは、情報処理装置4を経由して、ローカルデバイス6に接続される。ノントランスペアレントポート26、28により、システムホスト2側のPCIeバスと、ローカルホスト10側のPCIeバスとの、バス番号およびアドレス体系は、それぞれ独立して構成される。制御レジスタ群32は、ローカルホスト10からは直接制御され、システムホスト2からはシステムホスト側のメモリ空間上にマッピングされる。ローカルホスト10は、システムホスト2からシステムホスト側のメモリ空間上にマッピングされた制御レジスタ群32に要求されたコマンドを解釈して、ローカルデバイス6に対してコマンドを発行する。ローカルホスト10は、ローカルデバイス6からの、コマンドの完了の割り込みを受信し、制御レジスタ群32を通じてシステムホスト2へコマンドの完了を通知する。システムホスト2とローカルデバイス6との間のデータ転送は、高機能スイッチ部8を介して行われる。高機能スイッチ部8は、ローカルホスト10側のアドレスおよびリクエスタIDを、システムホスト2側のアドレスおよびリクエスタIDへ変換して、ローカルデバイス6とシステムホスト側との間で、PCIeパケットを転送するように構成される。
 これにより、情報処理装置4は、システムホスト2とローカルホスト10とを含むPCIeを用いた情報処理システムにおいて、二つのホストのドメインを分離しながら、ローカルデバイス6とシステムホスト2との間の高速のデータ転送を実現できる。
 (実施の形態2)
 以下、図16から図24を参照して、実施の形態2の情報処理装置を含む情報処理システムについて、説明する。
 (2.1.情報処理装置の構成)
 まず、本実施の形態の情報処理装置を含む情報処理システムの概略構成について、図16を用いて説明する。
 図16は、実施の形態2に係る情報処理装置を含む情報処理システムの概略のブロック図である。
 なお、実施の形態2に係る情報処理装置は、図1に示す実施の形態1に係る情報処理装置と略同様の構成である。
 図16に示すように、本実施の形態の情報処理装置を含む情報処理システムは、スロット12を経由して接続される複数のローカルデバイス6、6aと、後述する高機能スイッチ部8のパケット転送部40にダイレクトメモリアクセス転送部47(以下、「DMA転送部47」と略記する)(図17参照)を備える点で、実施の形態1とは異なる。それ以外の構成は、図1に示す情報処理装置を含む情報処理システムと、基本的に同様の構成を備える。
 つまり、図16に示すように、本実施の形態の情報処理システムは、システムホスト2、情報処理装置を構成するアダプタ4、および、マスタ機能部を有する複数のローカルデバイス6、マスタ機能部の無いローカルデバイス6aなどで構成される。
 アダプタ4は、情報処理装置を構成し、高機能スイッチ部8、ローカルホスト10、スロット12などを含む。ローカルデバイス6、6aは、スロット12を介してアダプタ4と接続される。
 なお、ローカルホスト10は、アダプタ4の外部や高機能スイッチ部8の内部などに設けてもよい。また、ローカルデバイス6は、例えばリムーバブルメディアなどで例示されるが、特定の種類に限定されない。
 以上のように、情報処理装置を含む情報処理システムの概略が構成される。
 つぎに、情報処理装置を含む情報処理システムの詳細な構成について、図17を用いて説明する。
 図17は、同実施の形態に係る情報処理装置を含む情報処理システムの詳細なブロック図である。
 なお、図17に示す情報処理システムは、実施の形態1の情報処理システムと基本的な構成は同じであるので、以下では異なる構成について詳述する。
 図17に示すように、本実施の形態の情報処理システムでは、アダプタ4のPCIeスイッチ50は、複数のDSP(Down Stream Port)を備える。PCIeスイッチ50には、それぞれのDSPを介して、複数のローカルデバイス6、6aが接続される。図17では、DSPのDSP#0(56(0))、DSP#1(56(1))、・・・、DSP#N-1(56(n-1))、DSP#N(56(n))を介して、複数(N+1)のローカルデバイス6、6aと接続する構成を例に図示している。
 このとき、ローカルデバイスには、マスタ機能部77を備えるローカルデバイス6(DSP#0からDSP#N-1)と、備えないローカルデバイス6a(DSP#N)などが含まれる。なお、マスタ機能部77は、データ転送を行う際に、ローカルデバイス自体が主体となってデータ転送を行う機能部である。
 具体的には、本実施の形態のローカルデバイス6は、USP74、コマンド解析部76、マスタ機能部77を有するデータ転送部78などを備える。一方、ローカルデバイス6aは、USP74a、コマンド解析部76a、データ転送部78aなどを備える。
 また、本実施の形態の情報処理システムは、上述したように、情報処理装置を構成するアダプタ4の高機能スイッチ部8のパケット転送部40に、DMA転送部47を備える。
 DMA転送部47は、マスタ機能部77を備えないローカルデバイス6aに対して、システムホスト2からのデータの書き込みの制御、および、ローカルデバイス6aからシステムホスト2へのデータの書き込みの制御を行う。
 具体的には、DMA転送部47は、システムホスト2からローカルデバイス6aへのデータ書き込み時に、システムホスト2に対してメモリリードコマンドを発行してデータを取得する。そして、DMA転送部47は、取得したデータをローカルデバイス6aに対して、メモリライトコマンドにより書き込む。
 一方、システムホスト2へローカルデバイス6aのデータを書き込む時に、DMA転送部47は、ローカルデバイス6aに対してメモリリードコマンドを発行して、データを取得する。そして、DMA転送部47は、取得したデータをシステムホスト2に対して、メモリライトコマンドにより書き込む。
 つまり、マスタ機能部77の無いローカルデバイス6aは、システムホスト2との間でDMA転送部47のダイレクト転送機能を介して、データ転送が実行される。具体的には、ローカルデバイス6aのメモリ空間とシステムホスト2側のメモリ空間との間で、DMA転送部47を介して、データ転送が行われる。
 以上のように、情報処理装置を含む情報処理システムは構成される。
 (2.2.情報処理装置の動作)
 以下、情報処理装置を含む情報処理システムの動作について、図18を用いて説明する。
 図18は、同実施の形態に係る情報処理システムを構築する情報処理装置およびその周辺の装置の動作を表すフロー図である。
 図18に示すように、本実施の形態の情報処理装置およびその周辺の装置は、電源がオンされる(ステップS101)と、アダプタとローカルデバイスの初期化処理とリンクアップ(ステップS102)、アダプタ初期化(ステップS103)、ローカルデバイスのテーブル設定処理(ステップS104)を実行する。さらに、マスタ機能部の有無の判断(ステップS105)により、マスタ機能がある場合のデータ転送処理(ステップS106)、および、マスタ機能が無い場合のデータ転送処理(ステップS107)を実行する。
 以下に、各動作におけるデバイスや装置間の信号およびデータの遣り取りについて、図19から図21に示すシーケンス図を用いて、詳細に説明する。
 (2.2.1.アダプタとローカルデバイスの初期化処理とリンクアップ)
 図19は、情報処理装置およびその周辺の装置におけるアダプタとローカルデバイスの初期化処理とリンクアップの動作を示すシーケンス図である。
 図19に示すシーケンスでは、まず、電源がオンされ、N個(#0から#N-1のマスタ機能部77を有するローカルデバイス6と、1個(#N)のマスタ機能部の無いローカルデバイス6aとが、既にアダプタ4のスロット12に挿入されている状態を想定し、以後の処理を説明する。
 上記の状態において、ローカルホスト10は、ローカルデバイス6、6aのコンフィグレーションレジスタ(タイプ0)(図8参照)を読み取る。そして、ローカルホスト10は、例えばデバイスID(Device ID)、ベンダID(Vender ID)、およびクラスコード(Class Code)などの内容を確認する(ステップS110からステップS116)。これにより、ローカルホスト10は、接続されたデバイスを確認する。
 そして、内容を確認後、ローカルホスト10は、取得したローカルデバイス6、6aの情報に基づいて、リソースの演算を行う(ステップS117)。
 つぎに、ローカルホスト10は、ローカルデバイス6、6aのコンフィグレーションレジスタ(タイプ0)(図8参照)に対して、リソースの演算結果に基づいて、所定の内容を書き込んで、接続されたデバイスを設定する(ステップS118からステップS124)。ここで、所定の内容は、例えばベースアドレスレジスタ(Base Address Register)、およびコマンド(Command)などである。
 つぎに、リソースの演算結果に基づいて、ローカルホスト10は、高機能スイッチ部8のイベント通知部30の制御レジスタ群32へ、システムホスト2へのリソース要求のコマンドを登録する。これにより、ローカルホスト10は、ローカルデバイスを設定する(ステップS126)。さらに、ローカルホスト10は、制御レジスタ群32へ、システムホスト2からのリンクアップ許可のコマンドを登録する(ステップS128)。
 以上のように、アダプタ4とローカルデバイス6、6aの初期化処理とリンクアップが実行される。
 (2.2.2.アダプタ初期化処理)
 図20の(a)は、情報処理装置およびその周辺の装置におけるアダプタ初期化処理の動作を示すシーケンス図である。
 図20の(a)に示すように、まず、システムホスト2は、高機能スイッチ部8とのリンクアップを確立する(ステップS130)。
 つぎに、システムホスト2は、高機能スイッチ部8におけるコンフィグレーションレジスタ(タイプ0)(図8参照)を読み取る。そして、ローカルホスト10は、例えば高機能スイッチ部8におけるデバイスID、ベンダID、およびクラスコードなどの内容を確認する(ステップS132)。これにより、システムホスト2は、接続されたデバイスを確認する。
 つぎに、システムホスト2は、高機能スイッチ部8におけるコンフィグレーションレジスタ(タイプ0)(図8参照)に対して、所定の内容を書き込んで、接続されたデバイスを設定する(ステップS134)。ここで、所定の内容は、例えばベースアドレスレジスタ、およびコマンドなどである。
 以上のように、アダプタ4の初期化処理が実行される。
 (2.2.3.ローカルデバイスのテーブル設定処理)
 図20の(b)は、情報処理装置およびその周辺の装置におけるローカルデバイスのテーブル設定処理の動作を示すシーケンス図である。
 図20の(b)に示すように、まず、システムホスト2は、高機能スイッチ部8のイベント通知部30の制御レジスタ群32へ、ローカルホスト10の起動を確認するコマンドを登録する(ステップS136)。
 つぎに、高機能スイッチ部8は、イベント通知部30の制御レジスタ群32へ登録されたコマンドにより、ローカルホスト10の起動を確認する(ステップS138)。
 つぎに、ローカルホスト10は、高機能スイッチ部8のパケット転送部40のアドレス変換テーブル42およびReqID変換テーブル44を設定する(ステップS140)。設定は、ローカルホスト10のアドレス変換テーブル設定部64およびReqID変換テーブル設定部66を用いて、実行される。
 設定後、アダプタ4の高機能スイッチ部8は、割込処理により、システムホスト2へローカルホスト10の起動を通知する(ステップS142)。
 以上のように、ローカルデバイスのテーブル設定処理が実行される。
 (2.2.4.マスタ機能部がある場合のデータ転送処理)
 図21の(a)は、情報処理装置およびその周辺の装置におけるマスタ機能部がある場合のデータ転送処理の動作を示すシーケンス図である。
 図21の(a)は、マスタ機能部77を備えるローカルデバイス6の場合のデータ転送処理を示している。
 図21の(a)に示すように、まず、システムホスト2は、転送コマンドを、#0から#N-1で示す複数(N個)のローカルデバイス6に発行する(ステップS144からステップS148)。
 そして、転送コマンドの転送処理が完了すると、それぞれのローカルデバイス6は、システムホスト2へ向けて完了通知を行う(ステップS150からステップS156)。
 なお、図21の(a)に示すシーケンス図において、システムホスト2からの転送コマンドにおけるアドレスおよびReqIDは、アダプタ4のパケット転送部40のアドレス変換部46およびReqID変換部48により変換される。そして、変換された転送コマンドが、N個のうちの適切なローカルデバイス6に向けて発行される(図22の(a)参照)。
 一方、転送コマンドを受けたローカルデバイス6がシステムホスト2にデータ(データ、アドレス、およびReqID)を転送する場合は、アドレスおよびReqIDが高機能スイッチ部8のアドレス変換部46およびReqID変換部48により変換される(図22の(b)参照)。
 以上により、マスタ機能があるローカルデバイス6の場合のデータ転送処理が実行される。
 (2.2.5.マスタ機能部が無い場合のデータ転送処理)
 図21の(b)は、情報処理装置およびその周辺の装置におけるマスタ機能部が無い場合のデータ転送処理の動作を示すシーケンス図である。
 図21の(b)は、マスタ機能部を備えないローカルデバイス6aの場合のデータ転送処理を示している。
 図21の(b)に示すように、まず、システムホスト2は、転送コマンドを発行する。そして、システムホスト2は、高機能スイッチ部8のイベント通知部30の所定の制御レジスタに書き込みを行う。これにより、システムホスト2は、高機能スイッチ部8に対して、ローカルホスト10への、転送コマンドの発行に関するコマンド要求を行う(ステップS160)。
 つぎに、高機能スイッチ部8は、コマンド要求を受けて、ローカルホスト10に、転送コマンドの発行に関するコマンド受信通知を行う(ステップS162)。
 つぎに、ローカルホスト10は、コマンド受信通知を受けると、ローカルデバイス6aへ転送コマンドを発行する(ステップS164)。
 つぎに、ローカルデバイス6aは、転送コマンドを受けて、コマンド完了を示す通知をローカルホスト10に送る(ステップS166)。このとき、割込通知は、上述したMSI割込により実行される。
 つぎに、ローカルホスト10は、高機能スイッチ部8のパケット転送部40におけるDMA転送部47の設定を要求する(ステップS168)。
 このとき、転送コマンドが、ローカルデバイス6aからのデータの読み出し(リード)を示すコマンドの場合、DMA転送部47は、まず、ローカルデバイス6aのメモリにおける該当アドレスのデータを読み出す(ステップS170)。そして、DMA転送部47は、データ転送後(ステップS171)、システムホスト2のメモリ20に書き出す(ステップS172)。
 一方、転送コマンドが、ローカルデバイス6aへのデータの書き込み(ライト)を示すコマンドの場合、DMA転送部47は、まず、システムホストのメモリのデータを読み出す(ステップS172)。そして、DMA転送部47は、データ転送後(ステップS171)、ローカルデバイス6aのメモリにおける該当アドレスに書き出す(ステップS170)。
 つぎに、高機能スイッチ部8は、パケット転送部40のDMA転送部47によるデータ転送の完了を、ローカルホスト10に発行する(ステップS174)。
 つぎに、ローカルホスト10は、高機能スイッチ部8に対して、システムホスト2への、ローカルデバイス6の転送処理完了に関する割込送信要求を行う(ステップS176)。これにより、高機能スイッチ部8のシステムホスト割込送信部34は、割込送信要求を受けて、システムホスト2に、ローカルデバイス6の転送処理完了に関する割込通知を行う(ステップS178)。
 以上により、マスタ機能部が無いローカルデバイス6aの場合のデータ転送処理が実行される。
 (2.2.6.アドレス変換の例)
 以下に、システムホスト2と、ローカルホスト10やローカルデバイス6、6aとの間のアドレス変換の一例について、図22から図24を用いて、説明する。
 図22の(a)は、システムホスト2からローカルデバイス6へのアドレス変換テーブルの一例を示す。図22の(b)は、ローカルデバイスからシステムホストへのアドレス変換テーブルの一例を示す。
 図23は、図22の(a)に示すシステムホスト2からローカルデバイス6へのアドレス変換についての、BAR(ベースアドレスレジスタ)空間における対応関係を示す図である。
 図23に示すように、システムホスト2のコンフィグレーション空間におけるアドレスは、0xA000_0000~0xA001_FFFFが割り当てられている。
 このとき、図22の(a)に示すように、図23に示すシステムホスト2のアドレスのうち、0xA000_0000から1Kバイト(0x1000)は、ローカル側の0xF000_0000から1Kバイト(0x1000)に対応する。また、システムホスト2の0xA000_1000から1Kバイト(0x1000)は、ローカル側の0xB001_0000から1Kバイト(0x1000)に対応する。さらに、システムホスト2の0xA000_2000から1Kバイト(0x1000)は、ローカル側の0xB002_0000から1K(0x1000)に対応する。
 また、システムホスト2の0xA000_(N+1)000から1Kバイト(0x1000)は、ローカル側の0xB00(N)_0000から1K(0x1000)に対応する(但し、0<N<Fh(16進))。さらに、システムホスト2の0xA001_0000から1Kバイト(0x1000)は、ローカル側の0xB00F_0000から1Kバイト(0x1000)に対応する。
 このとき、図23に示すように、ローカル側の0xF000_0000から1Kバイト(0x1000)は、高機能スイッチ部8の制御レジスタ群32に割り当てられる。また、ローカル側の0xB000_0000、0xB001_0000、0xB00N_0000からの、1Kバイト(0x1000)、および、ローカル側の0xB00F_0000から1Kバイト(0x1000)は、それぞれ、ローカルデバイス(0)、(1)、(N)、および、(0xF)に割り当てられる。
 つまり、それぞれのローカルデバイス6のメモリ空間のうちでシステムホスト2から制御の対象となる一部が、システムホスト2側からのメモリ空間上にマッピングされる。そして、マッピングされた、それぞれを重ねる。これにより、複数のローカルデバイス6が、仮想的に一つのローカルデバイスとして、システムホスト2側からのメモリ空間(NT Port BAR0)上に再構築される。
 つぎに、変換されたアドレスのコンフィグレーション空間における対応関係について、図24を用いて説明する。
 図24は、図22に示すアドレス変換の、コンフィグレーション空間における対応関係を説明する図である。なお、図24は、複数のローカルデバイス6を、斜視図のように重ねて図示している。そして、図24の最前面のローカルデバイス6は、図23におけるローカルデバイス(0)に相当する。
 図24に示すように、システムホスト2からローカルデバイス6へのデータ転送要求は、ノンプリフェッチバッファ空間を利用して行われる。すなわち、システムホスト2側のメモリ空間上の仮想的マッピングを用いて、データ転送要求が実行される。
 システムホスト2側のコンフィグレーション空間は、0xA000_0000~0xA00F_FFFFが割り当てられる。一方、これに対応するローカルデバイス6側のコンフィグレーション空間は、図22の(a)、図23および図24に示すように、0xB000_0000~0xB000_FFFFが割り当てられる。
 そして、システムホスト2からローカルデバイス6へのデータ転送要求時においては、図22の(a)に示すアドレス変換テーブルにより、システムホスト2側のアドレスがローカルデバイス6側のアドレスへ変換される。
 また、ローカルデバイス6からシステムホスト2へのデータ転送要求時においては、ノンプリフェッチバッファ空間以外の空間(図24では、プリフェッチバッファ空間)が利用される。
 このとき、ローカルデバイス6側のコンフィグレーション空間は、0xC000_0000~0xC000_0FFFが割り当てられる。一方、これに対応するシステムホスト2側のコンフィグレーション空間は、図22の(b)および図24に示すように、0xD000_0000~0xD000_0FFFが割り当てられる。
 これにより、ローカルデバイス6からシステムホスト2へのデータ転送要求時において、図22の(b)に示すアドレス変換テーブルにより、ローカルホスト10やローカルデバイス6側のアドレスが、システムホスト2側のアドレスへ変換される。
 以上のように、システムホスト2と、ローカルホスト10やローカルデバイス6、6aとの間でアドレス変換が対応つけられる。
 (2.3.効果等)
 以上のように、本実施の形態において、情報処理装置4は、高機能スイッチ部8を備える。システムホスト2からのPCIeバスは、高機能スイッチ部8を経由して、複数のローカルデバイス(PCIeデバイス)6、6aと、ローカルデバイスを制御するローカルホスト10と、に接続される。システムホスト2側のPCIeバスと、ローカルホスト10側のPCIeバスとの、バス番号およびアドレス体系は、それぞれ独立して構成される。高機能スイッチ部8は、データ入出力ポートとしてのノントランスペアレントポート26、28と、システムホスト2とローカルホスト10との通信用の制御レジスタ群32と、を備える。制御レジスタ群32は、ローカルホスト10とPCIeバスで直接接続され、システムホスト2からはメモリ空間上にマッピングされる。システムホスト2は、ローカルデバイス6、6aに対するコマンドを、制御レジスタ群32を用いて要求し、ローカルホスト10は、制御レジスタ群32に要求されたコマンドを解釈してローカルデバイス6、6aに対してコマンドを発行する。さらに、ローカルデバイス6、6aは、コマンドの完了の割り込みをローカルホスト10へ通知し、ローカルホスト10は制御レジスタ群32を通じてシステムホスト2へコマンドの完了を通知する。システムホスト2とローカルデバイス6、6aとの間のデータ転送は、高機能スイッチ部8を介して行われ、高機能スイッチ部8は、ローカルホスト10側のアドレスおよびリクエスタIDをシステムホスト2側のアドレスおよびリクエスタIDへ変換する。そして、高機能スイッチ部8は、ローカルホスト10側とシステムホスト2側との間で、PCIeパケットを転送する。ローカルデバイス6がマスタ転送機能を備える場合、それぞれのローカルデバイス6のメモリ空間の内で、システムホスト2から制御の対象となる一部を、システムホスト2側からのメモリ空間上にマッピングし、複数のローカルデバイス6を一つのローカルデバイス6として、仮想的に再構築するように構成される。
 この構成によれば、複数のローカルデバイス6と接続する場合、情報処理装置は、システムホスト2から見てローカルデバイス6の必要なレジスタを適切にメモリ空間にマッピングする。これにより、システムホスト2側のリソース不足を解消できる。
 (他の実施の形態)
 以上のように、本出願において開示する技術の例示として、実施の形態1~2を説明した。しかしながら、本開示における技術は、これに限定されず、変更、置き換え、付加、省略などを行った実施の形態にも適用可能である。また、上記実施の形態1~2で説明した各構成要素を組み合わせて、新たな実施の形態とすることも可能である。
 例えば、本開示は、システムホストとPCIeバスで接続される情報処理装置である。情報処理装置は、ローカルホストと、高機能スイッチ部を備える。高機能スイッチ部は、データ入出力ポートとしてのノントランスペアレントポートと、システムホストの通信用の制御レジスタ群を有する。システムホストのPCIeバスは、情報処理装置を経由して、ローカルデバイスに接続される。ノントランスペアレントポートにより、システムホスト側のPCIeバスと、ローカルホスト側のPCIeバスとの、バス番号およびアドレス体系は、それぞれ独立して構成される。制御レジスタ群は、ローカルホストからは直接制御され、システムホストからはシステムホスト側のメモリ空間上にマッピングされる。ローカルホストは、システムホストからシステムホスト側のメモリ空間上にマッピングされた制御レジスタ群に要求されたコマンドを解釈して、ローカルデバイスに対してコマンドを発行する。ローカルホストは、ローカルデバイスからの、コマンドの完了の割り込みを受信し、制御レジスタ群を通じてシステムホストへコマンドの完了を通知する。システムホストとローカルデバイスとの間のデータ転送は、高機能スイッチ部を介して行われる。高機能スイッチ部は、ローカルホスト側のアドレスおよびリクエスタIDを、システムホスト側のアドレスおよびリクエスタIDへ変換して、ローカルデバイスとシステムホスト側との間で、PCIeパケットを転送するように構成してもよい。
 また、本開示の情報処理装置の高機能スイッチ部は、ローカルデバイスの情報処理装置への挿抜を検出する挿抜検出部を、さらに備える。挿抜検出部は、ローカルデバイスの挿抜発生時において、挿抜の発生をローカルホストへ通知し、ローカルホストは、挿抜発生の割り込みを、制御レジスタ群を介してシステムホストに通知する構成としてもよい。
 また、本開示の情報処理装置のローカルホストは、ローカルデバイスの挿入後に、接続されたローカルデバイスを確認することで転送方式を決定する。そして、決定された転送方式に応じて、システムホストからシステムホスト側のメモリ空間上にマッピングされた制御レジスタ群に要求されたコマンドを解釈して、ローカルデバイスに対してコマンドを発行する場合と、システムホストからシステムホスト側のメモリ空間上にマッピングされた制御レジスタ群に要求されたコマンドを、直接、ローカルデバイスに対してコマンドを発行する場合と、を切り替える構成としてもよい。
 また、本開示の情報処理装置は、転送方式がNVMeの場合、ローカルホストは、システムホストからシステムホスト側のメモリ空間上にマッピングされた制御レジスタ群に要求されたコマンドを、直接、ローカルデバイスに対してコマンドを発行する。転送方式がNVMeでない場合、ローカルホストは、システムホストからシステムホスト側のメモリ空間上にマッピングされた制御レジスタ群に要求されたコマンドを解釈して、ローカルデバイスに対してコマンドを発行する構成としてもよい。
 また、本開示の情報処理装置は、システムホスト、情報処理装置、複数のPCIeデバイスの通信経路が、他の通信プロトコルのパケットにラッピングして通信して、PCIeパケットを等価的に送受信可能に構成してもよい。
 また、本開示の情報処理装置は、通信経路のPCIeパケットは、アドレスおよびリクエスタIDに基づいて、PCIパケットをスイッチングするバスで構成してもよい。
 また、本開示の情報処理装置は、一つのPCIeバスに複数のデバイスが論理的に接続されるマルチファンクションデバイスに対応する場合、図25に示すように構成としてもよい。つまり、図25に示す情報処理装置は、Tag変換部103とマルチファンクションコントローラ100とローカルデバイス#0、#1(101、102)を有する。そして、Tag変換部103は、システムホスト2とアダプタ4との間のTagの値を、アダプタ4とマルチファンクションコントローラ100間のファンクション番号の値へ変換する構成としてもよい。
 具体的なTag変換部103の動作について、図26から図28を用いて説明する。
 図26は、図25の情報処理装置を含む情報処理システムにおける、Tag変換部の具体的な変換値の一例を示す図である。図27は、同実施の形態のデバイス制御レジスタ内の拡張Tagフィールド有効ビットを説明する図である。図28は、同実施の形態のリクエスタIDおよびTagを説明する図である。
 図26に示すように、まず、システムホスト2とローカルデバイス#0(101)の変換は、拡張Tagの上位3ビットに001bを設定する。設定された拡張Tagの上位ビット001bを、高機能スイッチ部8に設けたTag変換部103で、ファンクション番号0に変換する。さらに、拡張Tagの上位3ビットを000bに置き換える。なお、図26に示す拡張Tagの下位5ビットxxxxxbは、転送元のデバイスがPCIeの転送時に付加している値をそのまま利用する。
 同様に、システムホスト2とローカルデバイス#1(102)と間の変換は、図26に示すように、まず、拡張Tagの上位3ビットに010bを設定する。設定された拡張Tagの上位ビット010bを、Tag変換部103で、ファンクション番号1に変換する。さらに、拡張Tagの上位3ビットを000bに置き換える。
 そして、図27に示すように、拡張Tagを有効にするデバイスコントロールレジスタのExtended Tag Field Enableビットを有効にする。これにより、拡張Tagの上位3ビットを利用することが可能になる。なお、図28に示す拡張Tag8ビット中の上位3ビットが、拡張Tag領域に対応する。このように、本開示の情報処理装置がマルチファンクションデバイスに対応する場合、Tag変換部103で、Tagの値を拡張して拡張Tagを変換する。そして、変換した拡張Tagに基づいて、対応するローカルデバイス二対して、PCIeパケットのスイッチングを行うように構成してもよい。
 また、本開示の情報処理装置を含む情報処理システムは、図29に示すように、システムホスト2に複数のアダプタ4a~4bを接続する構成としてもよい。
 図29は、さらに別の実施の形態における、情報処理装置を含む情報処理システムの概略のブロック図である。
 図29に示すように、本開示の情報処理装置を含む情報処理システムは、システムホスト2にアダプタ4a、4bが、例えばディジーチェイン(daisey Chain)形式で接続される。そして、アダプタ4a、4bは、ブリッジ110a~110bにより、自分のアダプタ4a、4bに関連するPCIeパケットを自分の高機能スイッチ8a、8bへスイッチングする。高機能スイッチ8a、8bは、エンドポイントとしてPCIeバスを終端する。
 リムーバブルメディア113a、113b内のローカルデバイス111a、111b、111c、111dは、PCIeスイッチ112a、112bを経由して、アダプタ4a、4bに接続される。
 つまり、高機能スイッチ8a、8bで、PCIeバスをエンドポイントとして終端する。これにより、リムーバブルメディア113a、113b内のバス番号が変わっても、システムホスト2側の構成には変更が生じない。そのため、リムーバブルメディア113a、113bの挿抜への対応が容易にできる。
 なお、上記各実施の形態では、高機能スイッチ部8は、制御レジスタ群32に要求されたコマンドを解釈して、PCIeデバイスに対してコマンドを発行する構成を例に説明したが、これに限られない。例えば、システムホスト2側とアダプタ4側がNVMe(Non Volatile Memory Express)で、ローカルデバイス6側がSATA(Serial-ATA)など、システムホスト2と、アダプタ4と、ローカルデバイス6と、が異なる転送方式の場合、高機能スイッチ部8は、制御レジスタ群32に要求されたコマンドを解釈して、PCIeデバイスに対してコマンドを発行する構成としてもよい。
 一方、システムホスト2と、アダプタ4と、ローカルデバイス6と、が同一の転送方式(NVMe)の場合、高機能スイッチ部8は、コマンドを解釈せず、直接、ローカルデバイス6へコマンドを発行するように切り替える構成としてもよい。これらの構成により、アダプタ4の高機能スイッチ部8は、接続されるローカルデバイスに応じて、適切に処理を切り替えることができる。
 なお、上述の実施の形態は、本開示における技術を例示するためのものであるから、請求の範囲またはその均等の範囲において種々の変更、置き換え、付加、省略などを行うことができる。
 本開示は、複数のリムーバブルメディアが装着される情報処理装置に適用可能である。具体的には、ビデオサーバなどに、本開示は適用可能である。
 2  システムホスト
 4,4a,4b  アダプタ(情報処理装置)
 6,6a,101,102,111a,111b,111c,111d  ローカルデバイス(PCIeデバイス)
 8  高機能スイッチ部
 8a,8b  高機能スイッチ
 10  ローカルホスト
 12  スロット
 14  不揮発性メモリ
 20,70  メモリ
 22,68  ルートコンプレクス
 24  プロセッサ(CPU)
 26,28  NTポート(ノントランスペアレントポート)
 30  イベント通知部
 32  制御レジスタ群
 34  システムホスト割込送信部
 36  ローカルホスト割込送信部
 38  挿抜検出部
 40  パケット転送部
 42  アドレス変換テーブル
 44  ReqID変換テーブル
 46  アドレス変換部
 47  DMA転送部
 48  ReqID変換部
 50  PCIeスイッチ
 58  ローカル制御部
 60  ローカルデバイス初期化部
 62  ローカルデバイス種別判別部
 64  アドレス変換テーブル設定部
 66  ReqID変換テーブル設定部
 76,76a  コマンド解析部
 77  マスタ機能部
 78,78a  データ転送部
 100  マルチファンクションコントローラ
 103  Tag変換部
 110a,110b  ブリッジ
 112a,112b  PCIeスイッチ
 113a,113b  リムーバブルメディア

Claims (6)

  1. システムホストとPCIeバスで接続される情報処理装置であって、
    前記情報処理装置は、
     ローカルホストと、高機能スイッチ部と、
    を備え、
    前記高機能スイッチ部は、
     データ入出力ポートとしてのノントランスペアレントポートと、
     前記システムホストの通信用の制御レジスタ群と、
    を有し、
    前記システムホストのPCIeバスは、前記情報処理装置を経由して、ローカルデバイスに接続され、
    前記ノントランスペアレントポートにより、前記システムホスト側のPCIeバスと、前記ローカルホスト側のPCIeバスとの、バス番号およびアドレス体系は、それぞれ独立して構成され、
    前記制御レジスタ群は、前記ローカルホストからは直接制御され、前記システムホストからは前記システムホスト側のメモリ空間上にマッピングされ、
    前記ローカルホストは、
     前記システムホストから前記システムホスト側の前記メモリ空間上にマッピングされた前記制御レジスタ群に要求されたコマンドを解釈して、前記ローカルデバイスに対して前記コマンドを発行し、
     前記ローカルデバイスからの、前記コマンドの完了の割り込みを受信し、
     前記制御レジスタ群を通じて前記システムホストへ前記コマンドの完了を通知し、
    前記システムホストと前記ローカルデバイスとの間のデータ転送は、前記高機能スイッチ部を介して行われ、
    前記高機能スイッチ部は、前記ローカルホスト側のアドレスおよびリクエスタIDを、前記システムホスト側のアドレスおよびリクエスタIDへ変換して、前記ローカルデバイスとシステムホスト側との間で、PCIeパケットを転送する、
    情報処理装置。
  2. 前記高機能スイッチ部は、前記ローカルデバイスの前記情報処理装置への挿抜を検出する挿抜検出部を、さらに備え、
    前記挿抜検出部は、前記ローカルデバイスの挿抜発生時において、挿抜の発生を前記ローカルホストへ通知し、
    前記ローカルホストは、挿抜発生の割り込みを、前記制御レジスタ群を介して前記システムホストに通知する、
    請求項1に記載の情報処理装置。
  3. 前記ローカルホストは、前記ローカルデバイスの挿入後に、接続された前記ローカルデバイスを確認することで転送方式を決定し、決定された前記転送方式に応じて、
     前記システムホストから前記システムホスト側の前記メモリ空間上にマッピングされた前記制御レジスタ群に要求されたコマンドを解釈して、前記ローカルデバイスに対して前記コマンドを発行する場合と、
     前記システムホストから前記システムホスト側の前記メモリ空間上にマッピングされた前記制御レジスタ群に要求されたコマンドを、直接、前記ローカルデバイスに対して前記コマンドを発行する場合と、を切り替える、
    請求項2に記載の情報処理装置。
  4. 前記転送方式がNVMeの場合、前記ローカルホストは、前記システムホストから前記システムホスト側の前記メモリ空間上にマッピングされた前記制御レジスタ群に要求されたコマンドを、直接、前記ローカルデバイスに対して前記コマンドを発行し、
    前記転送方式がNVMeでない場合、前記ローカルホストは、前記システムホストから前記システムホスト側の前記メモリ空間上にマッピングされた前記制御レジスタ群に要求されたコマンドを解釈して、前記ローカルデバイスに対して前記コマンドを発行する、
    請求項3に記載の情報処理装置。
  5. 前記システムホスト、前記情報処理装置、複数の前記PCIeデバイスの通信経路は、前記PCIeパケットを等価的に送受信可能に構成される、
    請求項1に記載の情報処理装置。
  6. 前記通信経路の前記PCIeパケットは、前記アドレスおよび前記リクエスタIDに基づいて、前記PCIパケットをスイッチングするバスで構成される、
    請求項5に記載の情報処理装置。
PCT/JP2017/009127 2016-03-11 2017-03-08 情報処理装置 WO2017154943A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/083,333 US10565147B2 (en) 2016-03-11 2017-03-08 Information processing apparatus for data transfer between a system host and a local device
JP2018504536A JP7054769B2 (ja) 2016-03-11 2017-03-08 情報処理装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2016-049039 2016-03-11
JP2016049039 2016-03-11

Publications (1)

Publication Number Publication Date
WO2017154943A1 true WO2017154943A1 (ja) 2017-09-14

Family

ID=59790516

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2017/009127 WO2017154943A1 (ja) 2016-03-11 2017-03-08 情報処理装置

Country Status (3)

Country Link
US (1) US10565147B2 (ja)
JP (1) JP7054769B2 (ja)
WO (1) WO2017154943A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020119325A (ja) * 2019-01-24 2020-08-06 富士通株式会社 ストレージシステム、及びストレージ制御装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021075154A1 (ja) * 2019-10-16 2021-04-22 パナソニックIpマネジメント株式会社 データ転送システム、及びシステムホスト

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010055791A1 (ja) * 2008-11-13 2010-05-20 日本電気株式会社 I/oバスシステム
WO2015010597A1 (en) * 2013-07-22 2015-01-29 Huawei Technologies Co., Ltd. Resource management for peripheral component interconnect-express domains

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5598148B2 (ja) 2010-08-05 2014-10-01 富士通株式会社 スイッチング装置、情報処理装置、及びスイッチング装置の制御方法
JP5903801B2 (ja) 2011-08-23 2016-04-13 富士通株式会社 通信装置およびid設定方法
JP2013088879A (ja) 2011-10-13 2013-05-13 Kyocera Document Solutions Inc 情報処理装置
JP2014002545A (ja) 2012-06-18 2014-01-09 Ricoh Co Ltd データ転送装置、及びデータ転送方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010055791A1 (ja) * 2008-11-13 2010-05-20 日本電気株式会社 I/oバスシステム
WO2015010597A1 (en) * 2013-07-22 2015-01-29 Huawei Technologies Co., Ltd. Resource management for peripheral component interconnect-express domains

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020119325A (ja) * 2019-01-24 2020-08-06 富士通株式会社 ストレージシステム、及びストレージ制御装置
JP7147589B2 (ja) 2019-01-24 2022-10-05 富士通株式会社 ストレージシステム、及びストレージ制御装置

Also Published As

Publication number Publication date
JP7054769B2 (ja) 2022-04-15
US10565147B2 (en) 2020-02-18
US20190079888A1 (en) 2019-03-14
JPWO2017154943A1 (ja) 2019-01-17

Similar Documents

Publication Publication Date Title
JP4931787B2 (ja) データ処理システム内で第1のホスト・システムと第2のホスト・システムとの間で通信するための方法、プログラム、およびシステム(トランザクション・プロトコルおよび共用メモリを使用するホスト・システム間の通信のためのシステムおよび方法)
JP5362980B2 (ja) データ処理システム内で第1のホスト・システムと第2のホスト・システムとの間で通信するための方法、プログラム、およびシステム(ソケット接続および共用メモリを使用するホスト・システム間の通信のためのシステムおよび方法)
JP5763873B2 (ja) データ処理システムの複数のルート複合体間の通信のために共用メモリを初期設定するための方法、コンピュータ・プログラム、およびデータ処理システム
US8589723B2 (en) Method and apparatus to provide a high availability solid state drive
US8223745B2 (en) Adding packet routing information without ECRC recalculation
US7694047B1 (en) Method and system for sharing input/output devices
KR101445436B1 (ko) 공유 i/o 시스템에서의 리셋 변환 방법, 컴퓨터 판독 가능한 매체 및 컴퓨터 시스템
JP5310175B2 (ja) スイッチシステム、及びスイッチシステムの制御方法
CN110476156B (zh) 通用串行总线网络交换机
JP2008152787A (ja) データ処理システム内で実行中の通信ファブリックにコンポーネントをホット・プラグするための方法、プログラム、およびシステム(実行中のPCIeファブリックにおける新しいコンポーネントのホット・プラグ/除去のためのシステムおよび方法)
JP5903801B2 (ja) 通信装置およびid設定方法
US20060173986A1 (en) Communication apparatus, electronic apparatus, imaging apparatus
US11010321B2 (en) Ad-hoc sensing switched data circuit for connecting network hosts and peripherals
JPWO2015194534A1 (ja) スイッチ装置とコンピュータシステムと方法並びにプログラム
US10698849B2 (en) Methods and apparatus for augmented bus numbering
CA2600419A1 (en) Method and apparatus for improving the performance of usb mass storage devices in the presence of long transmission delays
US10599600B2 (en) Peripheral Component Interconnect Express (PCIe) switching for multi-host computing system deployments
US6915365B2 (en) Mechanism for PCI I/O-initiated configuration cycles
WO2017154943A1 (ja) 情報処理装置
WO2017154942A1 (ja) 情報処理装置
CN113168384A (zh) 通信设备、信息处理系统和通信方法
JP7054807B2 (ja) データ転送システム、アダプタ、及びシステムホスト
JP2007213411A (ja) バスブリッジ装置
JP4271558B2 (ja) データ転送システム、画像形成システム及びデータ転送用プログラム
KR102518287B1 (ko) PCIe 인터페이스 장치 및 그 동작 방법

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 2018504536

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

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

Ref document number: 17763283

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 17763283

Country of ref document: EP

Kind code of ref document: A1