WO2012117445A1 - 情報処理システム - Google Patents
情報処理システム Download PDFInfo
- Publication number
- WO2012117445A1 WO2012117445A1 PCT/JP2011/001196 JP2011001196W WO2012117445A1 WO 2012117445 A1 WO2012117445 A1 WO 2012117445A1 JP 2011001196 W JP2011001196 W JP 2011001196W WO 2012117445 A1 WO2012117445 A1 WO 2012117445A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- time
- hub
- information
- transaction
- accepted
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/122—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware performs an I/O function other than control of data transfer
Definitions
- the present invention relates to an information processing system, and more specifically to an I / O subsystem that connects a CPU and an I / O device.
- Patent Document 1 a data transfer control device capable of realizing a DMA operation with high execution efficiency, with a focus on managing a plurality of DMA (Direct Memory Access) requests in time and completing the DMA within a time limit.
- a transfer size, a transfer address, a transfer mode, and a transfer time limit are received in advance when setting a DMA transfer activation factor.
- the data transfer control device includes an activation order arbitration unit that notifies an abnormality in advance for a DMA request that cannot be activated within the transfer time limit.
- the data transfer control device calculates an expected transfer time when one or a plurality of DMA transfer requests are newly generated, and all DMA requests are limited from the expected transfer time and the transfer time limit. It is configured to arbitrate the entire startup order so that it can be completed within the time.
- Virtualization has been used in the industrial computers and embedded systems described above.
- Virtualization is a technique for providing a plurality of virtual machines (VM: Virtual Machine) by operating a virtual machine monitor (VMM: Virtual Machine Monitor) on a single CPU.
- VM Virtual Machine
- VMM Virtual Machine Monitor
- the first problem is that the correspondence between I / O devices and their uses (applications) becomes complicated with virtualization.
- applications and I / O devices correspond one-to-one, and as a result, CPUs and I / O devices often correspond one-to-one. . Therefore, in order to guarantee the punctuality of I / O processing using the data transfer control device described in Patent Document 1, the programmer understands the behavior of I / O processing, and the transfer control time in consideration of punctuality was able to be set appropriately.
- the second problem is that a plurality of applications influence each other's I / O processing due to virtualization.
- the number of connection means (hereinafter referred to as “I / O links”) prepared for the CPU to communicate with the I / O device is small compared to the number of VMs.
- the number of I / O links prepared by the CPU is one.
- applications and CPUs correspond one-to-one, so applications and I / O links often correspond one-to-one. Therefore, since the application can occupy the I / O link, the plurality of applications did not affect each other's I / O processing.
- a plurality of VMs operate on the same CPU.
- a plurality of VMs operating on the same CPU share one I / O link.
- VMs and applications have a one-to-one correspondence, so a plurality of applications share a single I / O link. Therefore, there arises a problem that a plurality of applications that should operate without influencing each other share the I / O link, thereby affecting the behavior of the I / O processing.
- I / O processing is performed under an explicit time constraint specified by a programmer. It is an object of the present invention to provide a computer system, an I / O hub, or an I / O control method capable of guaranteeing punctuality.
- a system designer can set the priority of I / O processing for each virtual machine and can guarantee punctuality based on the priority
- An I / O hub or an I / O control method is provided.
- a typical example of means for solving the problems in the present invention is an information processing system, which is a first I / O transaction that issues a first I / O transaction to an external I / O device.
- the first I / O transaction is attached to the first I / O transaction with O controller and first time constraint information indicating a time limit required from when the first I / O transaction is issued until it is accepted by the I / O device.
- a first computer node having a first CPU; a first I / O hub having a first storage device and provided between the first computer node and the I / O device; A second storage device, a second determination unit, and a second I / O hub provided between the first I / O hub and the I / O device,
- the first storage device The first required time, which is required time information until the first I / O transaction is received from the first I / O hub via the second I / O hub to the I / O device.
- Information is stored, and the first I / O hub determines whether the first I / O transaction is accepted by the I / O device within the constraints based on the first required time information.
- the first computer node is notified of a first error indicating that the restriction cannot be satisfied, and the second storage device is configured to receive the first I / O.
- Second time information which is a time required for a transaction to be accepted from the second I / O hub to the I / O device, is stored, and the second I / O hub stores the second time information. Based on travel time information before It is determined whether or not an I / O transaction is accepted by the I / O device within the constraint. If it is determined that the I / O transaction is not accepted, a second error indicating that the constraint cannot be satisfied is indicated by the first error. The first computer node is notified via the I / O hub.
- an I / O configuration in which an I / O hub is interposed between a CPU and a device, a computer system, an I / O hub, or an I / O control method that makes it easier to guarantee punctuality is provided. Can be realized.
- FIG. 1 is an example of a configuration diagram of a computer system 100 of the present embodiment.
- the computer system 100 includes a main node 110, sub nodes 120 to 121, I / O hubs 130 to 131, and I / O devices 150 to 152.
- the main node 110 and the secondary nodes 120 to 121 are computers that have a CPU and a memory (main storage device) and can operate software, as will be described later.
- the main node 110 and the secondary nodes 120 to 121 are connected to the I / O devices 150 to 152 via the I / O hubs 130 to 131. Therefore, an I / O transaction resulting from an I / O instruction issued by software is sent to the I / O device 150 via the I / O hub 130 (I / O hub one stage).
- To 152 are received via the I / O hubs 130 to 131 (I / O hub two stages).
- the I / O hub refers to a device that is provided between each node and each I / O device and functions as an exchange of I / O transactions between each node and each I / O device.
- the components of the computer system 100 are connected by I / O links 160U to 166U and 160D to 166D.
- the I / O link uses high-speed serial transmission used in the interface.
- the I / O link connects the components on a one-to-one basis, and has a full duplex configuration so that bidirectional independent communication can be performed between the components.
- the side toward the main node 110 and the sub-nodes 120 to 121 is defined as upstream, and the links toward this direction are referred to as uplinks 160U to 166U.
- the side toward the I / O devices 150 to 152 is set as the downstream, and the links toward this direction are set as the downlinks 160D to 166D.
- the I / O subsystem includes the I / O controller 240, the I / O hubs 130 to 131, the I / O devices 150 to 152, and the I / O links 160U to 166U in the primary node 110 and the secondary nodes 120 to 121. , And 160D to 166U, etc. are generic names of device groups that input / output data to / from the outside of the system.
- FIG. 2 is an example of a configuration diagram of the main node 110 of the present embodiment.
- the main node 110 includes a CPU 210, a main storage device 220, an internal bus 230, an I / O controller 240, and an RTC 250.
- one CPU 210 is provided, but a plurality of CPUs (multiprocessors) may be used.
- the CPU 210 reads a program on the main storage device 220 and performs processing.
- a VMM 222 and a VM image 221 are placed on the main storage device 220.
- a plurality of VM images may be placed.
- the VMM 222 is software that creates one or a plurality of VMs on the CPU 210.
- the VM image 221 is a pack of programs and data that operate on the VM.
- VMM 222 and the VM image 221 are not placed on the main storage device 220, but the program may be placed directly.
- the VM identifier 211 possessed by the CPU 210 is information for identifying the VM currently being executed by the CPU 210.
- the VMM 222 that is software operating on the CPU 210 provides a plurality of VMs in a time division manner. Therefore, the VM identifier 211 is updated for each clock cycle of the CPU 210. However, when the same VM is continuously executed, the same identifier is continuously recorded in the VM identifier 211.
- the CPU 210 transfers data via the main storage device 220, the I / O controller 240, the RTC 250, and the internal bus 230. This data transfer is realized by flowing a bus transaction on the internal bus 230.
- the VM identifier 211 is assigned to the bus transaction caused by the CPU 210 in order to identify in which VM the bus transaction is executed.
- the VMM 222 has the ability to generate a maximum of four VMs, and therefore, the VM identifier 211 is represented by four 2-bit integers 0 to 3. For example, the notation such as VM identifier # 0 is used.
- Real-time clock device RTC (Real-Time Clock) 250 holds time information 251.
- the time information 251 is time information used uniformly in the computer system 100. In general, the time information 251 is synchronized with a standard time such as Coordinated Universal Time (UTC) or Japan Standard Time (JST), but the time used independently in the computer system 100 may be used.
- the role of the RTC 250 is to always keep the time information 251 and keep timing. Therefore, even after the power supply to the computer system 100 is cut off, the RTC 250 continues to operate using a battery backup or the like.
- the RTC 250 has an accuracy of about milliseconds, which is sufficient for use in file time stamps and the like, but is used for guaranteeing the punctuality of I / O processing as described later in this embodiment. May lack accuracy.
- the timer 212 of the CPU 210 can achieve an accuracy of about nanoseconds. Therefore, the main node 110 copies the time information 251 to the timer 212 at the time of activation, and measures time on the timer 212. Thereafter, while the main node 110 is activated, the timer 212 supplies time information used as a reference in the computer system 100. Since the time information in the timer 212 is lost when the power supply to the CPU 210 is cut off, it is necessary to save the time information in the timer 212 in the RTC 250 prior to power-off.
- the I / O controller 240 receives an I / O instruction executed on the CPU 210 via a bus transaction flowing through the internal bus 230, and generates an I / O transaction 1200 shown in FIG. 12 to the downlink 160D. Output.
- the I / O transaction 1200 is a packet, and is transferred on the link in a mixed manner with packets that play other roles.
- response transactions from the I / O devices 150 to 152 to the I / O transaction 1200 are input to the I / O controller 240 via the uplink 160U, and the I / O controller 240 analyzes the response transaction and performs internal processing. It responds to the CPU 210 via the bus 230.
- the I / O command includes an IN command for the CPU 210 to obtain data from the I / O devices 150 to 152 and an OUT command for the CPU 210 to send data to the I / O devices 150 to 152.
- the operand of the IN instruction is expressed in the form of two operands such as “(destination address / destination register), (source address)”, and the I / O devices 150 to 150 designated by the source address
- the data is read from the resources (register, memory, etc.) on 152, and the read data is stored in the area on the main storage device 220 designated by the destination address or the register on the CPU 210 designated by the destination register. The operation of doing.
- the operand of the OUT instruction is expressed in the form of two operands such as “(destination address), (source address / source register)”, or an area on the main storage device 220 designated by the source address, or The data stored in the register on the CPU 210 designated by the source register is read and stored in the resources on the I / O devices 150 to 152 designated by the destination address.
- the I / O instruction is issued until the I / O device accepts it after the I / O transaction is issued. It is assumed that information (time constraint information) indicating a required time constraint can be added.
- the operand of the IN instruction is expanded to a format such as “(destination address / destination register), (source address), (time constraint information)”. The difference from the conventional IN instruction is that time constraint information is added to the operand.
- the operand of the OUT instruction is expanded to a format such as “(destination address), (source address / source register), (time constraint information)”. This is also different from the conventional OUT instruction in that time constraint information is added to the operand.
- the operand is changed from 2 operands to 3 operands.
- the CPU in this embodiment issues an I / O instruction when the I / O controller issues an I / O transaction. Then, the time constraint information is included in the operand of the I / O instruction.
- the effects based on such a configuration are as follows.
- the CPU stores the time constraint information in a register in the I / O controller 240 in advance by a store instruction.
- the method according to this embodiment has the effect of reducing the number of instructions issued by the CPU and improving the performance by adding time constraint information to the operands of the I / O instruction.
- the combination of the two instructions of the store instruction for setting the time constraint information in the I / O controller 240 and the two instructions of the I / O instruction must maintain the execution order between the two instructions. Scheduling becomes difficult.
- the I / O instruction according to the present embodiment has a format in which time restriction information is included in one instruction, the scheduling problem is solved, and the system is more suitable for out-of-order execution. Can be provided.
- the time constraint information indicates a time constraint when the I / O devices 150 to 152 accept the IN command or the OUT command.
- Information indicating the time constraint includes time information and time limit information.
- the time information is a time based on the time held by the timer 212 described above, and indicates a restriction that the IN command or the OUT command must be received by the time designated by the I / O devices 150 to 152. .
- the time information indicates a restriction that the IN command or the OUT command must be received within the required time indicated by the time information with respect to the I / O devices 150 to 152.
- time information is used as the time constraint information.
- time limit information used as time constraint information.
- the I / O transaction 1200 includes a destination address 1201, a physical priority identifier 1202, a virtual priority identifier 1203, time constraint information 1204, a command 1205, a data length 1207, and data 1206.
- the data 1206 may not exist depending on the type of the command 1205. In this case, it can be seen that the data 1206 does not exist because the data length 1207 is 0.
- the time constraint information 1204 when an IN instruction or OUT command without a conventional time constraint is executed, there is no valid time constraint information, so information indicating that there is no time constraint (for example, 0 is a time). (There are no restrictions.)
- the I / O controller 240 includes a QoS (Quality of Service) information table 241, a route information table 242, and a transmission cost table 243 in order to satisfy the time constraint specified by the time constraint information.
- QoS Quality of Service
- FIG. 4 is an example of a configuration diagram of the QoS information table 241.
- the QoS configuration table 241 is a table that specifies the priority of I / O processing for each VM.
- the QoS configuration table 241 also includes I / O hubs 130 to 131, which will be described later.
- the I / O hubs 130 to 131 are tables that specify the priority of I / O processing for each node. Accordingly, FIG. 4 shows both of them. It is to be noted that an entry for specifying the priority of VM identifier # 0 is a priority specifier 401, and an entry for specifying the priority of VM identifier # 1 is a priority specifier 402, so that the priority is specified for each VM. It is characterized by having an entry.
- a plurality of VMs operate on the main node 110 which is a physical node.
- the plurality of VMs operate for different purposes, and their I / O processing priorities are different.
- VMs responsible for controlling sensors and actuators are required to have high real-time properties, and therefore I / O processing has a high priority.
- the real-time property required for the VM responsible for the information system such as screen display is relatively low. Therefore, it is necessary to give different I / O processing priorities to each VM.
- the I / O process activated by the VM with the VM identifier # 0 is executed with the highest priority
- the I / O process activated by the VM with the VM identifier # 3 is It is executed with the lowest priority.
- FIG. 5 is an example of a configuration diagram of the route information table 242.
- the route information table 241 indicates the route from the main node 110 to the I / O devices 150 to 152 and the required time.
- the route information table 242 has entries 501 to 504, and each entry corresponds to one I / O device. That is, each entry records a route and a required time for each I / O device.
- Each of the entries 501 to 504 includes a Valid bit, a device identifier, a route identifier, and the fastest required time.
- Valid bit is a field indicating whether the entry is valid or invalid, and 0 is invalid and 1 is valid.
- the device identifier identifies the destination I / O device whose route is to be indicated by the entry. For example, in the computer system 100 of this embodiment, since there are three I / O devices I / O devices 150 to 152, it is only necessary to specify 2-bit device identifiers # 0 to # 2. In the following description, the device identifier indicating the I / O device 150 is referred to as device identifier # 150 in order to facilitate the correspondence with the figure, but if the numerical value # 150 is encoded into # 0 here, Note that it only takes 2 bits.
- the path identifier specifies an I / O link to which an I / O transaction 1200 should be output in order to be accepted by the I / O device whose destination is indicated by the entry.
- the route identifier field may be omitted.
- the I / O controller 240 has a plurality of downlinks
- the downlink to be output is specified in the path identifier field.
- the path information table 242 is also used in the I / O hub 130 described later.
- the I / O hub 130 generally has a plurality of downlinks as shown in FIG. 1, a path identifier field is required.
- the fastest required time is the fastest time required for the I / O device to process the I / O transaction, assuming that the I / O transaction 1200 is issued to the I / O device whose destination is indicated by the entry. Show time. More specifically, when it is assumed that there is no I / O transaction remaining in the downstream I / O hub queue or I / O device queue, the I / O transaction is accepted by the I / O device. The time required is the fastest required time.
- the fastest required time is calculated in the computer system 100 while following the uplink in order from the I / O devices 150 to 152 to the main node 110 and the sub nodes 120 to 121.
- the I / O device 151 will be described as an example.
- the I / O device 151 has a queue therein, and there is a possibility that I / O transactions are accumulated in the queue. Also, how often an I / O transaction can be processed depends on the nature of the I / O device and the target ahead of the I / O device (such as a network if the I / O device is a NIC). ) Depends on the situation.
- the I / O device 151 periodically calculates the fastest required time from the internal state as described above, and notifies the upstream by the uplink 165U. This information is stored in the I / O hub 131. Note that a packet for performing this notification is referred to as a fastest required time notification packet.
- the fastest required time notified upstream by the uplink 165U is the fastest time when no I / O transaction is queued in the I / O device 151 queue when an I / O transaction is input from the downlink 165D to the I / O device 151. This is the time required for processing in
- the node can clearly satisfy the time constraint based on the fastest required time obtained from the I / O device 151. Can be anticipated before issuing an I / O transaction to.
- two-stage I / O hubs 130 and 131 are interposed between the node and the I / O device 151.
- These I / O hubs 130 and 131 have queues inside as well as I / O devices and nodes. These queues store I / O transactions issued from a plurality of nodes, and there are a plurality of I / O devices to which I / O transactions are output from each queue. If the computer system 100 tries to accurately predict the time required for processing an I / O transaction that a node is going to issue, all queue states existing in the computer system 100, that is, stored in the queue. Information on all I / O transactions must be centrally managed in one place. However, this is actually difficult.
- each I / O device and each I / O hub do not have an I / O transaction staying in the queue of the downstream I / O hub or the queue of the I / O device.
- the time when the I / O transaction is accepted by the I / O device is stored as the fastest required time.
- the method of determining the time constraint autonomously distributed by propagating the said fastest required time from downstream to upstream is provided.
- the I / O hub 131 receives the fastest required time issued by the I / O device 151 on the uplink 165U (hereinafter referred to as the fastest required time of the I / O device 151). .
- the I / O hub 131 adds the required time attributed to the I / O hub 131, such as the time required for packet processing in the I / O hub 131, to the fastest required time of the I / O device 151.
- the fastest required time from 131 to the I / O device 151 is calculated and stored.
- the fastest required time from the I / O hub 131 to the I / O device 151 is that when an I / O transaction addressed to the I / O device 151 is input from the downlink 164D to the I / O hub 131, the I / O device 151 It will be the required time when it is accepted at the fastest. That is, when it is assumed that there is no transaction remaining in each queue of the I / O hub 131 and the I / O device 151, the required time to be accepted by the I / O device 151 is obtained. This fastest required time is notified to the I / O hub 130 via the uplink 164U and stored in the I / O hub 130.
- the fastest required time from the downstream to the upstream that is, the I / O hub 130 and the main node 110 to the I / O device 151 is sequentially calculated.
- each component the main node 110, the I / O hub 130, and the I / O hub 131 can obtain the fastest required time from the device itself to the I / O device 151.
- the main node 110 can obtain the fastest required time from the I / O device 150, 151, 152 to itself. Comparing the fastest time required for the I / O devices 151 and 152 with the fastest time required for the I / O device 150 is relatively large because the number of I / O hubs is one stage higher (I / O hub 131). It often takes time.
- the I / O transaction is transferred to the I / O hub 130 as the next stage.
- the satisfaction of the time constraint is determined again based on the fastest required time of the I / O hub 130 and the internal state of the I / O hub 130. That is, in the I / O hub 130 (first I / O hub), an I / O transaction from the main node 110 to the I / O device 151 passes through the I / O hub 131 (second I / O hub). Thus, information on the required time until it is accepted by the I / O device 151 is held. Then, using this required time information, it is determined whether or not the I / O transaction is accepted by the I / O device within the time constraint. If it is determined that it cannot be accepted, the I / O hub 130 notifies the main node 110 to that effect.
- the I / O hub 130 transfers the I / O transaction to the I / O hub 131 which is the next stage.
- the I / O hub 131 performs the same determination. That is, the I / O hub 131 holds information on the time required until the I / O transaction is accepted by the I / O device 151. Then, using this required time information, it is determined whether or not the I / O transaction is accepted by the I / O device within the time constraint. If it is determined that it cannot be accepted, the I / O hub 131 notifies the main node 110 to that effect.
- FIG. 9 is an example of a configuration diagram of the transmission cost table 243.
- the transmission cost table 243 is a table for setting a time cost required for outputting the I / O transaction 1200 from the path indicated by the path identifier.
- the transmission cost table 243 records transmission costs 901 to 905 for each I / O link serving as a route. In the case of the main node 110, since the downlink 161D is the only route as described above, if there is one register that specifies the time cost to be received by the I / O hub 130 via the downlink 161D. good.
- FIG. 10 is an example of a configuration diagram of the I / O controller 240.
- the I / O controller 240 includes a bus controller 1010, a control unit 1020, a packet decryption unit 1030, a packet generation unit 1040, a queue 1050, and a queue 1060.
- the control unit 1020 has the above-described path information table 241, QoS information table 242, and transmission cost table 243.
- the bus controller 1010 extracts (destination address / destination register), (source address), and (time constraint information) from the operand of the IN instruction, and transfers them to the control unit 1020.
- the time constraint information is expressed as time information.
- the VM identifier 211 in the CPU 210 also accompanies the bus transaction. That is, each bus transaction is accompanied by the VM identifier 211 of the VM that issued the instruction that caused the bus transaction to be generated, and the control unit 1020 identifies the VM that issued the instruction by referring to it. Can do. Since the IN instruction reads the resource on the I / O device specified by the source address, the destination address 1201 of the I / O transaction 1200 is the address indicated by the source address.
- the command 1205 is a command indicating an IN command.
- the bus controller 1010 extracts (destination address), (source address / source register), and (time constraint information) from the operand of the OUT instruction, and controls each of them as in the case of the IN instruction. Forward to 1020.
- the time constraint information and the VM identifier 211 are the same as the IN command. Since the OUT instruction writes to the resource on the I / O device specified by the destination address, the destination address 1201 of the I / O transaction 1200 is the address indicated by the destination address.
- the command 1205 is a command indicating an OUT command.
- the control unit 1020 searches the route information table 241 using the destination address (source address in the case of IN instruction, destination address in the case of OUT instruction), and accepts it in the I / O device specified by the destination address. To get the route identifier and the fastest required time.
- the relationship between the destination address and the device identifier is, for example, that the upper bit of the destination address is a device identifier, and the lower bit of the destination address is an address indicating a resource position in the I / O device.
- the I / O controller 240 and the I / O hubs 130 to 131 see only the device identifier in the upper bits of the destination address.
- the address indicating the resource position in the I / O device corresponding to the lower bits of the destination address is used inside the I / O devices 150 to 152 that have received the I / O transaction 1200.
- control unit 1020 reads the current time recorded by the timer 212 via the bus controller 1010. Next, a difference between the time of the time constraint information and the current time is calculated, and this is set as a margin time.
- the I / O transaction 1200 needs to be received by the destination I / O devices 150 to 152 within the spare time.
- the control unit 1020 compares the fastest required time in the route information table with the margin time. Here, if (margin time ⁇ fastest required time), it is certain that the I / O transaction 1200 cannot be processed within the margin time. That is, it is certain that the punctuality cannot be satisfied. In that case, the control unit 1020 notifies the CPU 210 of an error (time constraint satisfaction error) indicating that the time constraint cannot be satisfied via the bus controller 1010.
- error time constraint satisfaction error
- the status in the queue 1060 in the I / O controller 240 is checked next. There may be a case where the preceding I / O transaction 1200 is already enqueued in the queue 1060.
- the new I / O transaction 1200 is also dequeued and accepted by the I / O hub 130 unless they are all dequeued and accepted by the I / O hub 130. Not accepted. That is, there is a waiting time until the preceding I / O transaction is released.
- the fastest case (fastest waiting time) can be calculated from the size and number of I / O transactions already enqueued in the queue 1060 and the transmission cost recorded in the transmission cost table 243.
- the actual waiting time is added with a waiting time caused by flow control by credit management performed between both ends (the main node 110 and the I / O hub 130) of the I / O link 160D.
- the transfer time in the fastest case can be obtained by calculation as described above without the transfer being stopped by flow control.
- the QoS information table 242 is referenced using the VM identifier 211 associated with the bus transaction, and the obtained priority specifier is used as the virtual priority identifier of the I / O transaction 1200.
- the time constraint information associated with the bus transaction is stored in the time constraint information 1204. This is because, like the I / O controller 240, the I / O hubs 130 to 131 perform queue overtaking control and the like for guaranteeing punctuality using the virtual priority identifier 1203 and the time constraint information 1204. Yes, in order to propagate information necessary for this control.
- the control unit 1020 attempts to overtake in the queue 1060 in order to reduce the fastest waiting time that is a waiting time generated in the I / O controller 240.
- no overtaking is performed in the queue 1060, but this rule is generally applied only to a single CPU. Since different programs are operating at different timings between different CPUs, the order is not guaranteed. Similarly, it is not necessary to guarantee the order among a plurality of VMs.
- I / O transactions from different VMs may pass each other. Therefore, rearrangement in the queue 1060 is performed using the priority identifier.
- An I / O transaction that is to be enqueued in the queue 1060 or an I / O transaction that has already been enqueued in the queue 1060 and cannot satisfy the time constraint has a priority as viewed from the priority identifier. Can overtake other low I / O transactions. If the time constraint cannot be satisfied even after overtaking, a time constraint satisfaction error is notified.
- FIG. 3 is an example of a configuration diagram of the secondary node 120 of the present embodiment. Since the secondary node 121 has the same configuration, repeated description is omitted.
- the secondary node 120 has the same configuration as that of the main node 110 and is characterized by not having the RTC 250. Each component in computer system 100 must operate based on a common time as described above.
- the common time standard is the RTC 250 in the main node 110, and more specifically, the timer 212 in the main node 110 synchronized with the RTC 250.
- the RTC 250 is not required for components other than the main node 110, and the time information of the main node 110 is distributed to each component via the I / O subsystem. Distribution is performed by flowing a time information notification packet on the I / O subsystem. As a matter of course, a shift between the time information included in the time information notification packet and the true time information occurs due to the transmission delay of the I / O subsystem, but correction is performed in consideration of the transmission delay of the I / O. be able to.
- This technology is standardized (RFC2030) as, for example, NTP (Network Time Protocol), and there is no point to be newly mentioned in the present embodiment.
- At least one main node 110 and an arbitrary number of secondary nodes 120 to 121 are used.
- the secondary nodes 120 to 121 may also be equipped with an RTC so that the RTC is disabled when operating as a secondary node, and the RTC is enabled only when operating as a primary node. .
- FIG. 6 is an example of a configuration diagram of the I / O hub 130 of the present embodiment.
- the I / O hub 131 also differs only in the number of uplinks and downlinks, and the number of packet reception units 610 to 614 and queues 620 to 624 associated with these numbers, so that repeated description is omitted. .
- the I / O hub 130 will be described as a representative.
- the I / O hub 130 is a switch for connecting the primary node 110, the secondary nodes 120 to 121, and the I / O devices 150 to 152.
- the I / O hub 130 and the I / O hub 131 can be connected in multiple stages.
- the I / O hub 130 includes packet reception units 610 to 614, queues 620 to 624, a crossbar switch 630, and a control unit 640. Further, as illustrated in FIG. 7, the control unit 640 includes a QoS information table 241, a route information table 242, a transmission cost table 243, and a timer 730.
- the packet reception units 610 to 614 receive the I / O transaction 1200 and other packets input from the downlinks 160D to 162D and the uplinks 163U to 164U.
- the queues 620 to 624 are the same as the queue 1050 and the queue 1060 of the I / O controller 240.
- the crossbar switch 630 is a switch that outputs the I / O transaction 1200 and other packets stored in the queues 620 to 624 to any one of the paths of the uplink 160U to 162U and the downlink 163D to 164D. It is.
- the route selection is specified by the control unit 640 using the control signal 650.
- FIG. 11 shows the operation of the control unit 640 of the I / O hub 130.
- the I / O hub 130 When the I / O hub 130 receives a packet, the I / O hub 130 operates as shown in FIG. In step S1101, the packet reception units 610 to 614 notify the packet information to the control unit 640 via the control signal 660, and the control unit 640 determines whether or not the received packet is a time information notification packet. When the time information notification packet is received, the time information of the timer 730 is updated based on the time information included in the packet in step S1102.
- step S1103 If the received packet is not a time information notification packet, it is determined in step S1103 whether the received packet is the fastest required time notification packet. If the packet is the fastest required notification time packet, the control unit 640 updates the fastest required time in the route information table 242 of the control unit 640 in step S1104.
- step S1105 the time constraint information 1204 of the I / O transaction 1200 is inspected to determine whether there is a time constraint. If the I / O transaction has no time constraint, the I / O transaction is simply enqueued in the queue in step S1106.
- step S1107 determines the sufficiency of the time constraint by the same method as that of the I / O controller 240. As a result of the determination, if the time constraint can be satisfied as it is (no need to overtake), the process is enqueued in step S1106.
- step S1108 it is determined in step S1108 whether the I / O transaction already enqueued in the queue can be overtaken. This determination is also made from the time constraint information 1204 of the enqueued I / O transaction, the physical priority identifier 1202, and the virtual priority identifier 1203 in the same manner as in the case of the I / O controller 240. In the case of the I / O controller 240, with respect to the priority identifier, the physical priority identifier 1202 is not given, and only the virtual priority identifier 1203 is used. A priority identifier 1202 is also used.
- step S1109 If it is determined here that overtaking is possible, overtaking is performed in step S1109. If overtaking is impossible, or if time constraints cannot be satisfied even if overtaking is performed, a time constraint satisfaction error is notified in step S1110.
- time information is used instead of time information as time constraint information in the first embodiment.
- each component on the computer system 100 when time information is used as time constraint information, each component on the computer system 100 must know the current time. That is, the current time is required to calculate the margin time from the time constraint information. Therefore, it is necessary to provide the RTC 250 as a time reference in the computer system 100 and to synchronize between the timers 212 and 730 that each component has independently by the time information notification packet.
- This embodiment is suitable for an information processing system such as the RTC 250 that does not have time keeping means, for example, a single-function information processing system that controls sensors and actuators in an embedded system.
- time information is used as the time constraint information in order to guarantee the punctuality of the I / O processing under the above constraints.
- the programmer designates the time allowed from the issuance of the I / O instruction until it is processed by the I / O device as the time limit information.
- the time limit information corresponds to the spare time calculated from the time information in the first embodiment. Therefore, the method for determining the satisfaction of the time constraint using the time limit information is the same as in the first embodiment.
- the control unit 1020 of the I / O controller 240 determines the time from when the bus transaction is received until the I / O transaction can be transmitted to the I / O hub 130 by the timer of the CPU 212. Use to measure the time. At this time, since the timer of the CPU 212 is used to measure the elapsed time, it is not necessary to synchronize with the common time in the computer system 100 as in the first embodiment.
- the control unit 1020 When sending the I / O transaction 1020 to the I / O hub 130, the control unit 1020 sets a time constraint to a value obtained by subtracting the elapsed time measured by the timer from the time information given in the IN command or the OUT command. Information 1204 is updated and stored, and an I / O transaction 1020 is sent.
- the control unit 640 of the I / O hub 130 uses the timer 730 in the I / O hub 130 to calculate the elapsed time required for the I / O processing for the I / O transaction to pass through the I / O hub 130. Update to the value subtracted from the time constraint information 1204. Similarly, the I / O hub 131 is also updated to a value obtained by subtracting the elapsed time required for the I / O processing for the I / O transaction to pass through the I / O hub 131. That is, in this embodiment, the time constraint information 1204 may be considered to correspond to the life of the I / O transaction.
- Computer system 110 Primary node 120-121 Secondary node 130-131 I / O hub 150-152 I / O device 160U-166U Uplink 160D-166D Downlink 210 CPU 211 VM identifier 212 Timer 220 Main storage device 221 VM image 222 VMM 230 Internal bus 240 I / O controller 241 QoS information table 242 Path information table 243 Transmission cost table 250 RTC 251 Time information 610 to 614 Packet reception unit 620 to 624 Queue 630 Crossbar switch 640 Control unit 730 Timer 1010 Bus controller 1020 Control unit 1030 Packet decoding unit 1040 Packet generation unit 1050, 1060 Queue 1200 I / O transaction
Abstract
CPUとI/Oデバイスの間にI/Oハブが導入されること、または、同一のCPU上で複数のVMが動作することにより、I/O処理の定時性の保証が困難となる課題がある。係る課題を解決する手段として、コンピュータノード(110、120,121)とI/Oデバイス(151、152)の間に設けられたI/Oハブ(130、131)のそれぞれが当該I/Oデバイスまでの所要時間情報を有し、当該所要時間情報を元に時間制約内にI/Oトランザクションを当該I/Oデバイスに受け付けられるかを判定し、受け付けられないと判定した場合は当該コンピュータノードに対してエラーを通知する。係る構成によって、情報処理システムにおける定時性の保証をより容易とする。
Description
本発明は情報処理システムに関し、より具体的には、CPUとI/Oデバイス間を接続するI/Oサブシステムに関する。
FA(Factory Automation)で用いられる産業用コンピュータや、自動車等各種機器に組み込まれて利用される組込みシステムにおいて、CPUがセンサやアクチュエータ等を制御するI/Oデバイスに対してデータを読書きする、I/O(Input/Output)処理の定時性を保証する技術がある。
例えば、特許文献1では、複数のDMA(Direct Memory Access)要求を時間的に管理し、制限時間以内にDMAを完了させることを主眼とした、実行効率の良いDMA動作を実現できるデータ転送制御装置についての記載がある。特許文献1に記載のデータ転送制御装置では、DMA転送起動要因設定の際に予め転送サイズ、転送アドレス、転送モードおよび転送制限時間を受け付ける。前記データ転送制御装置は、前記転送制限時間内に起動不可能なDMA要求に対しては事前に異常通知を行う起動順序調停部を有する。また、前記データ転送制御装置は、1つあるいは複数のDMA転送要求が新規に発生した場合にそれぞれの予想転送時間を算出し、前記予想転送時間と前記転送制限時間から、全てのDMA要求が制限時間以内に完了できるよう起動順序を全体調停するよう構成されている。
また、前述した産業用コンピュータや組込みシステムにおいて、仮想化が用いられるようになってきている。仮想化とは、単一のCPU上で仮想マシンモニタ(VMM:Virtual Machine Monitor)を動作させることで、複数の仮想マシン(VM:Virtual Machine)を提供する技術である。仮想化を用いることで、複数のコンピュータで構成していたシステムをより少数のコンピュータに集約することが出来る。そのため、ハードウェアのコスト低減、小型化、及び、低消費電力化に効果がある。サーバ分野では、これらの利点が認められて仮想化が急速に普及してきているが、産業用コンピュータや組込みシステムにおいても同様の傾向がある。
例えば、消費電力やサイズの制約が厳しいモバイル機器における組込みシステムでは、部品の数を減らすことが望ましい。そのために、従来は用途別に複数のCPUで構成されていた組込みシステムを、仮想化を用いてより少数のCPU(望ましくは単一のCPU)で構成すること取り組みも、従前からなされてきていた。
しかしながら、特許文献1のような転送制限時間を用いた制御によって、仮想化が用いられるシステムの定時性を保証することは、以下に述べる課題から困難である。その課題を以下で詳述する。
第1の課題は、仮想化に伴いI/Oデバイスとその用途(アプリケーション)の対応関係が複雑化することである。従来のように、用途別に複数のCPUで構成されていたシステムでは、アプリケーションとI/Oデバイスが一対一に対応し、その結果としてCPUとI/Oデバイスも一対一に対応することが多かった。そのため、特許文献1に記載されたデータ転送制御装置を利用してI/O処理の定時性を保証する上で、プログラマはI/O処理の挙動を理解し、定時性を考慮した転送制御時間を適切に設定することができた。
しかしながら、特許文献1に記載のデータ転送制御装置を、背景技術で述べたような仮想化技術と併用しようとすると問題が発生する。
例えば、仮想化を適用した組込みシステムでは、単一のCPUに複数のVMを動作させる。すると、従来アプリケーションとCPUが一対一に対応していたのに対して、アプリケーションとVMを一対一に対応させることができるので、CPUの数を削減することが出来る。その結果として、アプリケーションとI/Oデバイスが一対一に対応することから、CPUとI/Oデバイスの対応が一対多の関係になる。
そこで、CPUとI/Oデバイスを一対多の関係で接続するためには、CPUとI/Oデバイスの間に、電気通信で用いられている交換機(ハブ)に相当する機構を設ける必要がある。この機構を以下、「I/Oハブ」と呼ぶ。I/Oハブが導入されることで、CPUからI/Oデバイスに至る経路は複雑になる。そのため、前記経路が複雑になったことにより、プログラマがI/O処理の挙動を理解して、定時性を考慮した転送制御時間を適切に設定することが困難になる。
第2の課題は、仮想化に伴い複数のアプリケーションが互いのI/O処理に影響を及ぼすことである。一般的にCPUがI/Oデバイスと通信をするために用意している接続手段(以下、「I/Oリンク」と呼ぶ)は、VMの数と比較して少数である。例えば、CPUが用意しているI/Oリンクの本数を1本と仮定する。従来のように、用途別に複数のCPUで構成されていたシステムでは、アプリケーションとCPUが一対一に対応していたので、アプリケーションとI/Oリンクも一対一に対応することが多かった。そのため、アプリケーションはI/Oリンクを占有することができたので、複数のアプリケーションが互いのI/O処理に影響を及ぼすことは無かった。
しかしながら、仮想化を適用すると同一CPU上で複数のVMが動作することになる。そして、同一CPU上で動作する複数のVMは、1本のI/Oリンクを共有することになる。前述した通り、仮想化を導入した場合には、VMとアプリケーションは一対一に対応しているから、複数のアプリケーションが1本のI/Oリンクを共有することになる。そのため、互いに影響し合わないで動作すべき複数のアプリケーションが、I/Oリンクを共有することで、互いにI/O処理の挙動に影響を及ぼしてしまうという課題が発生する。
本発明では上記2点の課題を解決すること、より具体的には、I/Oハブを用いて構成されたコンピュータシステムにおいて、プログラマが指定した明示的な時間制約の元にI/O処理の定時性を保証することが可能なコンピュータシステム、I/Oハブ、ないしは、I/O制御方法を提供することを目的とする。あるいは、CPU上で複数のVMが動作している時に、システム設計者が仮想マシン毎にI/O処理の優先度を設定し、優先度に基づいて定時性を保証することが可能なコンピュータシステム、I/Oハブ、ないしは、I/O制御方法を提供することを目的とする。
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
本願発明における課題を解決する手段のうち、代表的なものを例示すれば、情報処理システムであって、外部のI/Oデバイスに対し第1のI/Oトランザクションを発行する第1のI/Oコントローラと、前記第1のI/Oトランザクションが発行されてから前記I/Oデバイスに受け付けられるまでに要する時間の制約を示す第1の時間制約情報を前記第1のI/Oトランザクションに付す第1のCPUと、を有する第1のコンピュータノードと、第1の記憶装置を有し、前記第1のコンピュータノードと前記I/Oデバイスの間に設けられる第1のI/Oハブと、第2の記憶装置と、第2の判定部と、を有し、前記第1のI/Oハブと前記I/Oデバイスの間に設けられる第2のI/Oハブと、を具備し、前記第1の記憶装置は、前記第1のI/Oトランザクションが前記第1のI/Oハブから前記第2のI/Oハブを経由して前記I/Oデバイスに受け付けられるまでの所要時間情報である、第1の所要時間情報を記憶し、前記第1のI/Oハブは、前記第1の所要時間情報に基づいて前記第1のI/Oトランザクションが前記制約内に前記I/Oデバイスに受け付けられるか否かを判定し、受け付けられないと判定した場合は、前記制約を充足できないことを示す第1のエラーを前記第1のコンピュータノードに通知し、前記第2の記憶装置は、前記第1のI/Oトランザクションが前記第2のI/Oハブから前記I/Oデバイスに受け付けられるまでの所要時間である、第2の所要時間情報を記憶し、前記第2のI/Oハブは、前記第2の所要時間情報に基づいて前記I/Oトランザクションが前記制約内に前記I/Oデバイスに受け付けられるか否かを判定し、受け付けられないと判定した場合は、前記制約を充足できないことを示す第2のエラーを、前記第1のI/Oハブを経由して、前記第1のコンピュータノードに通知することを特徴とする。
本発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下の通りである。
本発明によれば、CPUとデバイスの間にI/Oハブが介在するI/O構成において、定時性の保証をより容易とするコンピュータシステム、I/Oハブ、ないしは、I/O制御方法を実現することが出来る。
また、CPU上で複数の仮想マシンが動作するシステムにおいて、定時性の保証をより容易とするコンピュータシステム、I/Oハブ、ないしは、I/O制御方法を実現することができる。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、同一の符号の繰り返しの説明は省略する。
本実施例では、産業用コンピュータや組込みシステムに向けて、I/O処理の定時性を保証するコンピュータシステム100の例を説明する。
図1は、本実施例のコンピュータシステム100の構成図の例である。コンピュータシステム100は、主ノード110、副ノード120~121、I/Oハブ130~131、I/Oデバイス150~152を具備する。
主ノード110、及び、副ノード120~121は後述するようにCPU及びメモリ(主記憶装置)を有し、ソフトウェアを動作させることのできるコンピュータである。主ノード110、及び、副ノード120~121上は、I/Oハブ130~131を介して、I/Oデバイス150~152に接続されている。よって、ソフトウェアが発行したI/O命令に起因するI/Oトランザクションは、I/Oデバイス150に対してはI/Oハブ130(I/Oハブ1段)を介して、I/Oデバイス151~152に対してはI/Oハブ130~131(I/Oハブ2段)を介して受け付けられる。このようにI/Oハブとは、各ノードと各I/Oデバイスの間に設けられ、各ノードと各I/Oデバイスの間のI/Oトランザクションの交換機として機能するデバイスを指す。
コンピュータシステム100の各構成要素間は、I/Oリンク160U~166U、及び、160D~166Dで接続される。I/Oリンクは、インタフェースで用いられている高速シリアル伝送を用いる。I/Oリンクは構成要素間を一対一に接続するものであり、構成要素間で双方向に独立した通信が行えるように全2重の構成となっている。なお、便宜上、主ノード110、及び、副ノード120~121に向かう側を上流として、この方向に向かうリンクをアップリンク(Uplink)160U~166Uとしている。また、I/Oデバイス150~152に向かう側を下流として、この方向に向かうリンクをダウンリンク(Downlink)160D~166Dとしている。
なお、I/O処理にかかわる各構成要素は、図1に示すようにキューを有している。各構成要素において受付けられたI/Oトランザクション1200は、実際に処理されるまでの間、キューに保持される。システム100中で、特にI/O処理に関わっている構成要素及び接続全体を「I/Oサブシステム」と称する。I/Oサブシステムとは、主ノード110、及び、副ノード120~121内のI/Oコントローラ240、I/Oハブ130~131、I/Oデバイス150~152、I/Oリンク160U~166U、及び、160D~166U等、システムの外部に対しデータの入出力を行うデバイス群の総称である。
図2は、本実施例の主ノード110の構成図の例である。主ノード110は、CPU210、主記憶装置220、内部バス230、I/Oコントローラ240、RTC250から構成される。なお、図2ではCPU210は1個であるが、複数個のCPU(マルチプロセッサ)で構成してもよい。
CPU210は、主記憶装置220上のプログラムを読み出して処理を行う。本実施例では、主記憶装置220上にはVMM222、及び、VMイメージ221が置かれている。図2ではVMイメージ221は1個であるが、複数個のVMイメージを置いても良い。
VMM222は、CPU210上に1個ないしは複数個のVMを作り出すソフトウェアである。VMイメージ221は、VM上で動作するプログラム、及び、データをパックしたものである。
なお、仮想化を用いず、CPU210上で直接プログラムを動作させる場合には、主記憶装置220上にVMM222、及び、VMイメージ221を置くのではなく、前記プログラムを直接置けば良い。
CPU210が有するVM識別子211は、現在CPU210が実行しているVMを識別する情報である。CPU210上で動作するソフトウェアであるVMM222は、時分割で複数のVMを提供する。そのため、CPU210のクロックサイクル単位で、VM識別子211は更新される。但し、同じVMを連続して実行している場合には、VM識別子211には同じ識別子が記録され続ける。
CPU210は、主記憶装置220、I/Oコントローラ240、及び、RTC250と内部バス230を介してデータを転送する。このデータ転送は、内部バス230上にバストランザクションを流すことで実現する。
CPU210を起因とするバストランザクションには、当該バストランザクションがどのVMでの実行された命令かを識別するために、VM識別子211が付与される。
例えば、本実施例においては、VMM222は最大4個のVMを生成する能力を有するものであり、そのためVM識別子211は2bitの整数0~3の4個で表わされるものとする。例えば、VM識別子#0、のような記法で記す。
リアルタイムクロック装置RTC(Real-Time Clock)250は、時刻情報251を保持している。時刻情報251は、コンピュータシステム100内で統一的に用いられる時刻情報である。一般的には、時刻情報251は協定世界時(UTC)や日本標準時(JST)などの標準時に同期させるが、コンピュータシステム100内で独自に用いる時を用いても良い。RTC250の役割は、時刻情報251を常に保持し、計時し続けることである。そのために、RTC250はコンピュータシステム100に対する電源供給が遮断された後も、バッテリバックアップ等を用いて動作し続ける。
一般的にRTC250はミリ秒程度の精度であり、これはファイルのタイムスタンプ等に用いるには十分な精度であるが、本実施例で後述するようなI/O処理の定時性保証に用いる場合には精度が不足する場合がある。それに対して、CPU210が有するタイマー212はナノ秒程度の精度を実現することができる。そこで、主ノード110は起動時に時刻情報251をタイマー212にコピーし、タイマー212上で計時を行う。これ以降、主ノード110が起動している間は、タイマー212がコンピュータシステム100内で基準として用いられる時刻情報を供給する。なお、タイマー212内の時刻情報はCPU210への電源供給が断たれる時に失われてしまうので、電源遮断に先立ってタイマー212内の時刻情報をRTC250内に退避する必要がある。
I/Oコントローラ240は、CPU210上で実行されたI/O命令を、内部バス230を流れるバストランザクションを介して受け取り、図12に示すI/Oトランザクション1200を生成してダウンリンク160Dに対して出力する。I/Oトランザクション1200はパケットであり、他の役割を担うパケットと混在してリンク上を転送されていく。また、I/Oトランザクション1200に対するI/Oデバイス150~152からの応答トランザクションは、アップリンク160Uを介してI/Oコントローラ240に入力され、I/Oコントローラ240は前記応答トランザクションを解析し、内部バス230を介してCPU210に応答する。
I/O命令には、CPU210がI/Oデバイス150~152からデータを得ようとするIN命令と、CPU210がI/Oデバイス150~152に対してデータを送ろうとするOUT命令がある。一般的には、IN命令のオペランドは、「(ディスティネーションアドレス/ディスティネーションレジスタ)、(ソースアドレス)」というような2オペランドの形式で表現され、ソースアドレスで指定されるI/Oデバイス150~152上のリソース(レジスタやメモリなど)からデータを読出し、ディスティネーションアドレスで指定される主記憶装置220上の領域、ないしは、ディスティネーションレジスタで指定されるCPU210上のレジスタに読み出した前記データを格納するという動作を行う。また、OUT命令のオペランドは、「(ディスティネーションアドレス)、(ソースアドレス/ソースレジスタ)」というような2オペランドの形式で表現され、ソースアドレスで指定される主記憶装置220上の領域、ないしは、ソースレジスタで指定されるCPU210上のレジスタに格納されているデータを読出し、ディスティネーションアドレスで指定されるI/Oデバイス150~152上のリソースに格納する。
本発明においては、I/O処理の時間制約をプログラマがプログラム上に明示的に指定するために、I/O命令に、I/Oトランザクションが発行されてからI/Oデバイスに受け付けられるまでに要する時間の制約を示す情報(時間制約情報)を付加できるものとする。そのために、IN命令のオペランドを「(ディスティネーションアドレス/ディスティネーションレジスタ)、(ソースアドレス)、(時間制約情報)」というような形式に拡張する。従来のIN命令との相違点は、オペランドに時間制約情報が加わった点にある。また、OUT命令のオペランドも同様に「(ディスティネーションアドレス)、(ソースアドレス/ソースレジスタ)、(時間制約情報)」というような形式に拡張する。こちらも、従来のOUT命令との相違点はオペランドに時間制約情報が加わった点にある。本実施例においては、以上の拡張の結果、オペランドが2オペランドから3オペランドへと変更されたこととなる。
以上をまとめると、本実施例におけるCPUは、I/OコントローラにI/Oトランザクションを発行させる際に、I/O命令を発行する。そして、そのI/O命令のオペランドに、時間制約情報が含まれることとなる。係る構成に基づく効果は以下の通りである。
前述したように、I/O命令のオペランドに時間制約情報を付与しないで本発明を実現する方法としては、例えば、CPUが時間制約情報を予めI/Oコントローラ240内のレジスタにストア命令で格納しておき、その後に、当該時間制約の内に処理されるべきI/O命令を発行するような方法がある。この方法と比較すると、本実施例に係る方法は、I/O命令のオペランドに時間制約情報を付与することで、CPUが発行する命令の個数を減らし、性能を向上させる効果を持つ。また、I/O命令をプログラム上の順序と異なる順序で実行する(out-of-order実行)ためには、前述したようにI/O命令のオペランドに時間制約情報を付与する必要がある。時間制約情報をI/Oコントローラ240に設定するストア命令と、I/O命令の2命令の組合せでは、2命令間の実行順序を保たなければならないので、out-of-order実行を行うためのスケジューリングが難しくなる。これに対し、本実施例に係るI/O命令は、1命令に時間制約情報が含まれる形式となっているので、係るスケジューリングの課題を解決し、よりout-of-order実行に好適なシステムを提供しうる。
時間制約情報は、当該IN命令、ないしは、当該OUT命令をI/Oデバイス150~152に受け付けさせる際の時間制約を示す。時間制約を示す情報としては、時刻情報と時限情報がある。時刻情報は、前述したタイマー212が保持する時に基づく時刻であり、当該IN命令、ないしは、当該OUT命令はI/Oデバイス150~152に指定された時刻までに受け付けられなければならないという制約を示す。時限情報は、当該IN命令、ないしは、当該OUT命令はI/Oデバイス150~152に対して、時限情報で示される所要時間以内で受け付けられなければならないという制約を示す。
本実施例においては、時間制約情報として、特に時刻情報を用いる例を示す。時間制約情報として時限情報を用いる実施例は、実施例2として後述する。
I/Oトランザクション1200は図12に示すように、宛先アドレス1201、物理優先度識別子1202、仮想優先度識別子1203、時間制約情報1204、コマンド1205、データ長1207、データ1206から構成されている。なお、データ1206はコマンド1205の種別によっては無い場合がある。その場合には、データ長1207が0であることにより、データ1206が存在しないことが分かる。なお、時間制約情報1204に関しては、旧来の時間制約が無いIN命令、OUT命令を実行した際には、有効な時間制約情報が無いため、時間制約が無いことを示す情報(例えば、0を時間制約無しと定めておく)を入れる。
I/Oコントローラ240は、前記時間制約情報で指定された時間制約を満たすために、QoS(Quality of Service)情報テーブル241、経路情報テーブル242、及び、伝送コストテーブル243を有する。
図4は、QoS情報テーブル241の構成図の例である。QoS構成テーブル241は、VM毎のI/O処理の優先度を指定するテーブルである。なお、QoS構成テーブル241は後述するI/Oハブ130~131も備えており、I/Oハブ130~131においてはノード毎のI/O処理の優先度を指定するテーブルである。よって、図4は、その二種を兼ねて図示している。なお、VM識別子#0の優先度を指定するエントリは優先度指定子401、VM識別子#1の優先度を指定するエントリは優先度指定子402、というように、VM毎に優先度を指定するエントリを有することを特徴としている。
物理的なノードである主ノード110上では、複数のVMが動作する。複数のVMはそれぞれ異なる目的で動作しており、そのI/O処理の優先度は異なる。例えば、センサやアクチュエータ等の制御を担うVMは高いリアルタイム性が要求されるのでI/O処理の優先度は高い。それに対して、画面表示等の情報系を担うVMに求められるリアルタイム性は相対的に低い。そこで、VM毎に異なるI/O処理の優先度を付与する必要がある。
例えば、図8に示すようにQoS情報テーブル241を設定すると、VM識別子#0のVMが起動したI/O処理が最優先で実行され、VM識別子#3のVMが起動したI/O処理は最も優先度が低く実行される。
図5は経路情報テーブル242の構成図の例である。経路情報テーブル241は、主ノード110からI/Oデバイス150~152に至るまでの経路と所要時間を示すものである。経路情報テーブル242はエントリ501~504を有しており、各エントリは1個のI/Oデバイスに対応する。すなわち、各エントリは、個々のI/Oデバイス毎の経路と所要時間を記録している。
エントリ501~504はそれぞれ、Valid bit、デバイス識別子、経路識別子、最速所要時間から構成される。
Valid bitは、当該エントリが有効であるか、ないしは、無効であるかを示すフィールドであり、0が無効、1が有効を示すものとする。
デバイス識別子は、当該エントリで経路を示そうとしている宛先のI/Oデバイスを識別する。例えば、本実施例のコンピュータシステム100であれば、I/Oデバイス150~152の3個のI/Oデバイスがあるので、2bitのデバイス識別子#0~#2が指定できれば良い。なお、以降の説明では図との対応を容易にするために、I/Oデバイス150を示すデバイス識別子をデバイス識別子#150というように記すが、ここで#150という数値を#0にエンコードすれば2bitで済むことに留意されたい。
経路識別子は、当該エントリで宛先が示されているI/Oデバイスに受け付けられるために、I/Oトランザクション1200を出力すべきI/Oリンクを指定する。但し、主ノード110の場合には経路はダウンリンク161Dが唯一であるため、経路識別子のフィールドは省略しても良い。I/Oコントローラ240が複数のダウンリンクを有する場合には、経路識別子のフィールドで出力すべきダウンリンクを指定する。また、後述するI/Oハブ130においても経路情報テーブル242を用いるが、I/Oハブ130は図1で示すように一般に複数のダウンリンクを有するので、経路識別子のフィールドが必要となる。
最速所要時間は、当該エントリで宛先が示されているI/OデバイスにI/Oトランザクション1200を発行したとして、当該I/Oトランザクションを当該I/Oデバイスが処理してくれるまでの最速の所要時間を示す。より具体的には、下流側のI/OハブのキューやI/Oデバイスのキューに滞留しているI/Oトランザクションが無いと仮定した場合に、I/OトランザクションがI/Oデバイスに受け付けられる時間を、最速所要時間とする。
最速所要時間は、コンピュータシステム100において、I/Oデバイス150~152から順にアップリンクを辿って、主ノード110や副ノード120~121に辿って行きながら算出する。
例えば、I/Oデバイス151を例にして説明する。I/Oデバイス151は内部にキューを有しており、キュー内にI/Oトランザクションが溜まっている可能性がある。また、I/Oトランザクションをどの程度の頻度で処理することができるかは、I/Oデバイスの性質や、I/Oデバイスの先にある対象(I/OデバイスがNICであればネットワーク、等)の状況によっても異なる。
ここで、I/Oデバイス151は前述したような内部状態から、定期的に最速所要時間を算出して、アップリンク165Uで上流に通知する。この情報は、I/Oハブ131に記憶される。なお、この通知を行うパケットを最速所要時間通知パケットと称する。このアップリンク165Uで上流に通知する最速所要時間は、ダウンリンク165DからI/Oデバイス151にI/Oトランザクションを入力した時に、I/Oデバイス151のキューに滞留しているトランザクションが無く、最速で処理されたと仮定した場合に要する時間である。
もし、I/Oデバイス151に直接ノードを接続するのであれば、ノードはI/Oデバイス151から得た最速所要時間を元に、明らかに時間制約を満たせない場合には、I/Oデバイス151に対してI/Oトランザクションを発行する前に、それを予想することができる。
ここで、実際にはノードとI/Oデバイス151の間には2段のI/Oハブ130、131が介在している。これらのI/Oハブ130、131は、I/Oデバイスやノードと同様に内部にキューを有している。そして、これらのキューは、複数のノードから発行されたI/Oトランザクションが格納されており、また、各キューからI/Oトランザクションが出力される先も複数のI/Oデバイスがある。もし、コンピュータシステム100において、ノードが発行しようとしているI/Oトランザクションの処理に要する時間を正確に予測しようとすると、コンピュータシステム100内に存在する全てのキューの状態、すなわちキュー内に格納されているI/Oトランザクション全ての情報を一箇所で集中管理しなければならない。しかし、これは実際には困難である。
よって、本実施例においては、各I/Oデバイスおよび各I/Oハブが下流側のI/OハブのキューやI/Oデバイスのキューに滞留しているI/Oトランザクションが無いと仮定した場合に、I/OトランザクションがI/Oデバイスに受け付けられる時間を、最速所要時間として記憶する。そして、当該最速所要時間を下流から上流に伝搬させることで、自律分散的に時間制約の判定を行う方法を提供している。
本実施例の方法によれば、I/Oデバイス151がアップリンク165Uで発行した最速所要時間(以降、これをI/Oデバイス151の最速所要時間と称する)を、I/Oハブ131が受け取る。I/Oハブ131はI/Oデバイス151の最速所要時間に、I/Oハブ131内でのパケット処理に要する時間等、I/Oハブ131に起因する所要時間を加えて、I/Oハブ131からI/Oデバイス151への最速所要時間を算出し、記憶する。このI/Oハブ131からI/Oデバイス151への最速所要時間は、ダウンリンク164DからI/Oデバイス151宛のI/OトランザクションをI/Oハブ131に入力した時に、I/Oデバイス151まで最速で受け付けられたときの所要時間となる。すなわち、I/Oハブ131およびI/Oデバイス151のそれぞれのキューに滞留しているトランザクションが無いと仮定した場合に、I/Oデバイス151に受け付けられる所要時間となる。この最速所要時間が、アップリンク164Uを介してI/Oハブ130に通知され、I/Oハブ130において記憶される。
同様に、下流から上流に向かって、すなわち、I/Oハブ130、及び、主ノード110からI/Oデバイス151への最速所要時間を順次算出していく。これにより、各構成要素(主ノード110、I/Oハブ130、I/Oハブ131)が、自身からI/Oデバイス151への最速所要時間を得ることが出来る。例えば、図1の構成においては、主ノード110は、自身からI/Oデバイス150、151、152それぞれへの最速所要時間を得ることができる。I/Oデバイス151、152への最速所要時間を、I/Oデバイス150への最速所要時間と比較すると、I/Oハブの段数が一段多い(I/Oハブ131)ため、相対的に大きい時間を要する場合が多い。
ここで、主ノード110からI/Oデバイス151へI/Oトランザクションを発行する場合を考える。主ノード110が有している最速所要時間を用いれば、主ノード110内において、当該I/Oトランザクションの時間制約を確実に満たせないか、満たせる可能性があるかの判定を行うことができる。確実に満たせない場合には、その場でエラーを返す。一方、満たせる可能性が有る場合に関しては、真に満たせるか否かは主ノード110が有している情報からだけでは判定できない。I/Oデバイス151、I/Oハブ131、及び、I/Oハブ130の内部状態を全て知らない限り、満たせるかどうか確実な判定はできないが、それを実現するのは前述した通り困難である。
そこで、満たせる可能性が有ると判定された場合、I/Oトランザクションを次段であるI/Oハブ130に転送する。
そして、I/Oハブ130がI/Oハブ130の有する最速所要時間とI/Oハブ130の内部状態を元に、再度時間制約の充足性を判定する。すなわち、I/Oハブ130(第1のI/Oハブ)は、主ノード110からI/Oデバイス151へのI/OトランザクションがI/Oハブ131(第2のI/Oハブ)を経由してI/Oデバイス151へ受け付けられるまでの所要時間の情報を保持する。そして、この所要時間の情報を用いて、I/Oトランザクションが時間制約内にI/Oデバイスに受け付けられるか否かを判定する。受け付けられないと判定した場合は、I/Oハブ130は、その旨を主ノード110に通知する。
さらに、上記判定において受け付けられると判定した場合は、I/Oハブ130は、当該I/Oトランザクションを次段であるI/Oハブ131に転送する。そして、I/Oハブ131でも同様の判定を行う。すなわち、I/Oハブ131は、当該I/OトランザクションがI/Oデバイス151へ受け付けられるまでの所要時間の情報を保持する。そして、この所要時間の情報を用いて、I/Oトランザクションが時間制約内にI/Oデバイスに受け付けられるか否かを判定する。受け付けられないと判定した場合は、I/Oハブ131は、その旨を主ノード110に通知する。
このように、各I/Oハブにおける判定を繰り返していくことで、経路上の中で時間制約が充足できないと判定された時にはただちにエラーを通知することができる。また、経路上の各構成要素において、時間制約の充足が出来ないと判定された場合には、キューの追越し処理等を行って、時間制約を満たすように転送する処理を行うこともできる。どちらの場合においても、経路上の各構成要素において最速所要時間という基準を用い、絶対に時間制約を満たせないのか、満たせる可能性があるのかを判定することを、上記エラーを通知する動作または上記転送処理のトリガーとする。
図9は伝送コストテーブル243の構成図の例である。伝送コストテーブル243は、前記経路識別子で示される経路からI/Oトランザクション1200を出力する際に要する時間的コストを設定するテーブルである。
伝送コストテーブル243は、経路となるI/Oリンク毎に伝送コスト901~905を記録する。主ノード110の場合には、前述した通り経路はダウンリンク161Dが唯一であるため、ダウンリンク161Dを介してI/Oハブ130に受け付けられるための時間的コストを指定するレジスタが1個あれば良い。
図10はI/Oコントローラ240の構成図の例である。I/Oコントローラ240は、バスコントローラ1010、制御部1020、パケット解読部1030、パケット生成部1040、キュー1050、キュー1060から構成される。制御部1020は前述した経路情報テーブル241、QoS情報テーブル242、伝送コストテーブル243を有している。
CPU210がI/O命令を発行すると、内部バス230を経由して、I/O命令に伴うバストランザクションがバスコントローラ1010に受け付けられる。以降、IN命令の場合とOUT命令の場合のそれぞれについて、I/Oコントローラ240の詳細な動作を説明する。
IN命令の場合、バスコントローラ1010はIN命令のオペランドから、(ディスティネーションアドレス/ディスティネーションレジスタ)、(ソースアドレス)、(時間制約情報)を抽出して、それぞれを制御部1020に転送する。なお、本実施例では、時間制約情報は時刻情報として表現される。また、CPU210内のVM識別子211もバストランザクションに付随する。すなわち、各バストランザクションは、そのバストランザクションを発生させる元になった命令を発行したVMのVM識別子211を伴っており、制御部1020はそれを参照することで命令を発行したVMを識別することができる。IN命令は、ソースアドレスで指定されるI/Oデバイス上のリソースを読み出すことになるので、I/Oトランザクション1200の宛先アドレス1201はソースアドレスで示されているアドレスになる。また、コマンド1205はIN命令を示すコマンドになる。
OUT命令の場合、バスコントローラ1010はOUT命令のオペランドから、(ディスティネーションアドレス)、(ソースアドレス/ソースレジスタ)、(時間制約情報)を抽出して、IN命令の場合と同様にそれぞれを制御部1020に転送する。時限制約情報やVM識別子211に関してもIN命令と同様である。OUT命令は、ディスティネーションアドレスで指定されるI/Oデバイス上のリソースに書込みを行うことになるので、I/Oトランザクション1200の宛先アドレス1201はディスティネーションアドレスで示されているアドレスになる。また、コマンド1205はOUT命令を示すコマンドになる。
制御部1020は、宛先アドレス(IN命令の場合にはソースアドレス、OUT命令の場合にはディスティネーションアドレス)を用いて経路情報テーブル241を探索し、宛先アドレスで指定されるI/Oデバイスに受け付けられるための経路識別子と最速所要時間を得る。なお、宛先アドレスとデバイス識別子の関係は、例えば宛先アドレスの上位ビットがデバイス識別子で、宛先アドレスの下位ビットがI/Oデバイス内でのリソース位置を示すアドレスとなる。I/Oコントローラ240、及び、I/Oハブ130~131は宛先アドレスの上位ビットにあるデバイス識別子のみを見る。宛先アドレスの下位ビットにあたるI/Oデバイス内でのリソース位置を示すアドレスは、I/Oトランザクション1200を受信したI/Oデバイス150~152の内部で用いられる。
ここで、制御部1020はバスコントローラ1010を介して、タイマー212の記録する現在時刻を読み出す。次に、時間制約情報の時刻と現在時刻の差分を算出し、これを余裕時間とする。
当初の目的であるI/O処理の定時性を保証するためには、余裕時間内にI/Oトランザクション1200を宛先であるI/Oデバイス150~152に受け付けてもらう必要がある。
そこで、まず制御部1020は、経路情報テーブル内の最速所要時間と余裕時間を比較する。ここで、(余裕時間<最速所要時間)であれば、余裕時間内にI/Oトランザクション1200を処理することが不可能であることが確実である。すなわち、定時性を満たせないことが確実となる。その場合には、制御部1020はバスコントローラ1010を介して、CPU210に時間制約を充足することが不可能であることを示すエラー(時間制約充足エラー)を通知する。
次に、(余裕時間>=最速所要時間)の場合には、時間制約を満たせる可能性がある。この場合には、次にI/Oコントローラ240内のキュー1060内の状況を調べる。キュー1060には、既に先行するI/Oトランザクション1200がエンキューされている場合がある。一般に、I/O処理ではアクセスする順序が動作に影響を及ぼすので、CPU210がI/O命令を発行した順序と同順でI/Oトランザクション1200をI/Oデバイス150~152に転送する順序保証(ストロングオーダリング)を行う場合が多い。そこで、キュー1060内は基本的には追越しが無い。そのため、キュー1060に先行してI/Oトランザクション1200がエンキューされていると、それらが全てデキューされてI/Oハブ130に受け付けられない限り、新規のI/Oトランザクション1200もI/Oハブ130に受け付けられない。すなわち、先行するI/Oトランザクションがはけるまでの待ち時間が生じる。
この待ち時間に関して、最速の場合(最速待ち時間)はキュー1060に既にエンキューされているI/Oトランザクションの大きさと個数、及び、伝送コストテーブル243に記録されている伝送コストから算出することが出来る。実際の待ち時間はこれに加えて、I/Oリンク160Dの両端(主ノード110とI/Oハブ130)の間で行われるクレジット管理によるフロー制御で生じる待ち時間が加わる。しかし、フロー制御で転送が停止することなく、最速のケースで転送する場合の時間は、前述の通り計算で求めることができる。
ここで、(余裕時間>=(最速所要時間+最速待ち時間))であれば、少なくとも最速のケースでは時間制約を充足することができるため、パケット生成部1040で新規にI/Oトランザクション1200を生成して、キュー1060にエンキューする。
なお、キュー1060にエンキューする際には、バストランザクションに付随していたVM識別子211を用いてQoS情報テーブル242を参照し、得られた優先度指定子をI/Oトランザクション1200の仮想優先度識別子1203に格納する。また、バストランザクションに付随していた時間制約情報を時間制約情報1204に格納する。これは、I/Oハブ130~131でも、I/Oコントローラ240と同様に、仮想優先度識別子1203と時間制約情報1204を用いた、定時性を保証するためのキュー追い越し制御等を行うためであり、この制御に必要な情報を伝搬させるためである。
次に、(余裕時間<(最速所要時間+最速待ち時間))となってしまう場合について述べる。また、一度キュー1060にエンキューした後も、前述したフロー制御の影響等により、途中で(余裕時間<(最速所要時間+最速待ち時間))になってしまうI/Oトランザクションがある。キュー1060内にこのようなI/Oトランザクションが発生しているかどうかは制御部1020が定期的に検査する。
前述したように、時間制約を充足できない場合には、I/Oコントローラ240内で発生する待ち時間である最速待ち時間を縮めるために制御部1020はキュー1060内での追越しを試みる。前述した通り、ストロングオーダリングを守るために、原則的にキュー1060内での追越しは行わないが、この規定は一般には単一のCPUに対してのみ適用される。異なるCPU間はそもそも別のプログラムが異なるタイミングで動作しているので、順序保証を行うことはない。同様に、複数のVM間の順序保証も不要である。
換言すれば、異なるVMからのI/Oトランザクションは相互に追越しをしても良い。そこで、優先度識別子を用いてキュー1060内の並び替えを行う。キュー1060内にエンキューしようとしているI/Oトランザクション、ないしは、既にキュー1060内にエンキュー済みのI/Oトランザクションのうち、時間制約を充足できないI/Oトランザクションは、優先度識別子で見て優先度が低い他のI/Oトランザクションを追い越すことが出来る。追い越しを行ってもなお時間制約を充足できない場合には、時間制約充足エラーを通知する。
図3は、本実施例の副ノード120の構成図の例である。なお、副ノード121も同様の構成であるため、繰り返しの説明を省略する。
副ノード120は、主ノード110と同様の構成で、RTC250を有しないことを特徴としている。コンピュータシステム100内の各構成要素は、前述した通り共通の時に基づいて動作しなければならない。共通の時の基準となるのは、主ノード110内のRTC250であり、さらに言えばRTC250に同期した主ノード110内のタイマー212である。
よって、主ノード110以外の構成要素にはRTC250は不要であり、I/Oサブシステムを介して主ノード110が有する時刻情報を各構成要素に配信する。配信はI/Oサブシステム上に時刻情報通知パケットを流すことで行う。当然のことながら、I/Oサブシステムの伝送遅延により、時刻情報通知パケットに含まれる時刻情報と真の時刻情報との間のずれが生じるが、I/Oの伝送遅延を加味した補正を行うことができる。この技術は、例えばNTP(Network Time Protocol)として標準化(RFC2030)されており、本実施例では新規に言及すべき点は無い。
なお、コンピュータシステム100では、少なくとも1台以上の主ノード110と、任意の台数の副ノード120~121を用いる。また、副ノード120~121にもRTCを装備させ、副ノードとして動作するときにはRTCをディセーブル(disable)し、主ノードとして動作する時にのみRTCをイネーブル(enable)するような構成にしても良い。
図6は、本実施例のI/Oハブ130の構成図の例である。なお、I/Oハブ131もアップリンク及びダウンリンクの本数、及び、それらの本数に付随するパケット受付部610~614とキュー620~624の数が異なるのみであるため、繰り返しの説明を省略する。以降では、I/Oハブ130を代表として説明する。
I/Oハブ130は、主ノード110、副ノード120~121、I/Oデバイス150~152間を接続するためのスイッチである。また、I/Oハブ130、及び、I/Oハブ131を接続しているように、多段に構成することが出来る。
I/Oハブ130は、パケット受付部610~614、キュー620~624、クロスバースイッチ630、制御部640で構成される。また、図7で示すように、制御部640はQoS情報テーブル241、経路情報テーブル242、伝送コストテーブル243、及び、タイマー730を有する。
パケット受付部610~614は、ダウンリンク160D~162D、及び、アップリンク163U~164Uから入力されたI/Oトランザクション1200、及び、その他のパケットを受け付ける。
キュー620~624は、I/Oコントローラ240のキュー1050、キュー1060と同様である。
クロスバースイッチ630は、キュー620~624に格納されているI/Oトランザクション1200、及び、その他のパケットを、アップリンク160U~162U、及び、ダウンリンク163D~164Dのいずれかの経路に出力するスイッチである。経路の選択は制御部640が制御信号650で指定する。
I/Oハブ130内でも、I/Oコントローラ240と同様にI/Oの定時性を保証するための動作を行う。図11は、I/Oハブ130の制御部640の動作を示す。
I/Oハブ130はパケットを受信すると図11に示すような動作を行う。ステップS1101では、パケット受付部610~614が制御信号660を経由してパケットの情報を制御部640に通知し、制御部640は受信したパケットが時刻情報通知パケットであるか否かを判定する。時刻情報通知パケットを受信した場合、ステップS1102で当該パケットに含まれる時刻情報を元に、タイマー730の時刻情報を更新する。
受信パケットが時刻情報通知パケットで無かった場合には、ステップS1103で受信パケットが最速所要時間通知パケットであるかどうかを判定する。最速所要通知時間パケットだった場合には、ステップS1104で制御部640は、制御部640の有する経路情報テーブル242の最速所要時間を更新する。
最速所要時間の更新は以下の手順で行う。まず、経路情報テーブル242のエントリ501~504から、最速所要時間パケットが入力されたI/Oリンクを示す経路識別子を有しているエントリを検索する。そして、当該エントリの最速所要時間フィールドを、最速所要時間パケットで通知された最速所要時間に更新する。
受信パケットが、時刻情報通知パケットでも最速所要時間通知パケットでも無い場合には、その受信パケットは、I/Oトランザクション1200である。そのため、ステップS1105でI/Oトランザクション1200の時間制約情報1204を検査し、時間制約があるかどうかを検査する。時間制約が無いI/Oトランザクションであれば、ステップS1106で単に当該I/Oトランザクションをキューにエンキューするだけで良い。
時間制約があると判定された場合には、次にステップS1107で追い越しの必要性を判定する。これは、I/Oコントローラ240の場合と同様の方法で、時間制約の充足性を判定する。判定の結果、そのままで時間制約を充足できる(追い越しの必要が無い)のであれば、ステップS1106でエンキューする。
そのままでは時間制約を充足できないと判定された場合には、ステップS1108で既にキューにエンキューされたI/Oトランザクションを追い越せるかどうかを判定する。この判定に関しても、I/Oコントローラ240の場合と同様の方法で、エンキューされたI/Oトランザクションの時間制約情報1204、物理優先度識別子1202、仮想優先度識別子1203から判定する。I/Oコントローラ240の場合には、優先度識別子に関しては、物理優先度識別子1202が付与されておらず、仮想優先度識別子1203のみを用いていたが、I/Oハブ130の場合には物理優先度識別子1202も用いる。
ここで、追い越しが可能であると判定すれば、ステップS1109で追い越しを行う。もし、追い越しが不可能である、ないしは、追い越しを行っても時間制約を充足できない場合には、ステップS1110で時間制約充足エラーを通知する。
本実施例では、実施例1において時間制約情報として時刻情報を用いていた代わりに、時限情報を用いる形態の例を説明する。
実施例1において示したように、時間制約情報として時刻情報を用いる場合、コンピュータシステム100上の各コンポーネントは現在の時刻を知っていなければならない。すなわち、時間制約情報から余裕時間を算出するために、現在の時刻が必要となる。そのために、コンピュータシステム100内に時の基準となるRTC250を設け、かつ、時刻情報通知パケットによって各構成要素が独立に有するタイマー212、730間の同期を取る必要があった。
実施例2では、このような時刻同期を不要にし、かつ、RTC250を不要にする実施の形態を説明する。この実施の形態は、RTC250のような時刻を保持する手段を有していない情報処理システム、例えば組込みシステムにおいてセンサやアクチュエータを制御する単機能な情報処理システムに適している。
実施例2では、前記の制約下においてI/O処理の定時性を保証するために、時間制約情報として、時限情報を用いる。プログラマはIN命令、ないしは、OUT命令において、I/O命令の発行からI/Oデバイスで処理されるまでに許容される時間を時限情報として指定する。
時限情報は、実施例1で時刻情報から算出していた余裕時間に相当する。よって、時限情報を用いて時間制約の充足性を判定する方法は実施例1と同様である。
ここで、実施例2では、I/Oコントローラ240の制御部1020は、バストランザクションを受付けてから、I/OトランザクションをI/Oハブ130に送信できるようになるまでの時間を、CPU212のタイマーを用いて計時する。この時、CPU212のタイマーは経過時間を計時するために用いられるので、実施例1のように、コンピュータシステム100で共通の時刻に同期してある必要はない。
制御部1020は、I/Oトランザクション1020をI/Oハブ130に送出するときに、IN命令、ないしは、OUT命令において与えられた時限情報からタイマーで計時した経過時間を減算した値に、時間制約情報1204を更新して格納し、I/Oトランザクション1020を送出する。
I/Oハブ130の制御部640も同様に、I/Oハブ130内のタイマー730を用いてI/OトランザクションがI/Oハブ130を通過するためのI/O処理に要した経過時間を時間制約情報1204から減算した値に更新する。以下同様に、I/Oハブ131においても、I/OトランザクションがI/Oハブ131を通過するためのI/O処理に要した経過時間を減算した値に更新する。すなわち、本実施例においては、時間制約情報1204はI/Oトランザクションの寿命に相当すると考えてよい。
100 コンピュータシステム
110 主ノード
120~121 副ノード
130~131 I/Oハブ
150~152 I/Oデバイス
160U~166U アップリンク
160D~166D ダウンリンク
210 CPU
211 VM識別子
212 タイマー
220 主記憶装置
221 VMイメージ
222 VMM
230 内部バス
240 I/Oコントローラ
241 QoS情報テーブル
242 経路情報テーブル
243 伝送コストテーブル
250 RTC
251 時刻情報
610~614 パケット受付部
620~624 キュー
630 クロスバースイッチ
640 制御部
730 タイマー
1010 バスコントローラ
1020 制御部
1030 パケット解読部
1040 パケット生成部
1050、1060 キュー
1200 I/Oトランザクション
110 主ノード
120~121 副ノード
130~131 I/Oハブ
150~152 I/Oデバイス
160U~166U アップリンク
160D~166D ダウンリンク
210 CPU
211 VM識別子
212 タイマー
220 主記憶装置
221 VMイメージ
222 VMM
230 内部バス
240 I/Oコントローラ
241 QoS情報テーブル
242 経路情報テーブル
243 伝送コストテーブル
250 RTC
251 時刻情報
610~614 パケット受付部
620~624 キュー
630 クロスバースイッチ
640 制御部
730 タイマー
1010 バスコントローラ
1020 制御部
1030 パケット解読部
1040 パケット生成部
1050、1060 キュー
1200 I/Oトランザクション
Claims (5)
- 外部のI/Oデバイスに対し第1のI/Oトランザクションを発行する第1のI/Oコントローラと、前記第1のI/Oトランザクションが発行されてから前記I/Oデバイスに受け付けられるまでに要する時間の制約を示す第1の時間制約情報を前記第1のI/Oトランザクションに付す第1のCPUと、を有する第1のコンピュータノードと、
第1の記憶装置を有し、前記第1のコンピュータノードと前記I/Oデバイスの間に設けられる第1のI/Oハブと、
第2の記憶装置と、第2の判定部と、を有し、前記第1のI/Oハブと前記I/Oデバイスの間に設けられる第2のI/Oハブと、を具備し、
前記第1の記憶装置は、前記第1のI/Oトランザクションが前記第1のI/Oハブから前記第2のI/Oハブを経由して前記I/Oデバイスに受け付けられるまでの所要時間情報である、第1の所要時間情報を記憶し、
前記第1のI/Oハブは、前記第1の所要時間情報に基づいて前記第1のI/Oトランザクションが前記制約内に前記I/Oデバイスに受け付けられるか否かを判定し、受け付けられないと判定した場合は、前記制約を充足できないことを示す第1のエラーを前記第1のコンピュータノードに通知し、
前記第2の記憶装置は、前記第1のI/Oトランザクションが前記第2のI/Oハブから前記I/Oデバイスに受け付けられるまでの所要時間である、第2の所要時間情報を記憶し、
前記第2のI/Oハブは、前記第2の所要時間情報に基づいて前記I/Oトランザクションが前記制約内に前記I/Oデバイスに受け付けられるか否かを判定し、受け付けられないと判定した場合は、前記制約を充足できないことを示す第2のエラーを、前記第1のI/Oハブを経由して、前記第1のコンピュータノードに通知することを特徴とする情報処理システム。 - 請求項1において、
前記第1のCPUは、前記第1のI/Oコントローラに前記第1のI/Oトランザクションを発行させる際に、第1のI/O命令を発行し、
前記第1のI/O命令のオペランドに、前記第1の時間制約情報が含まれることを特徴とする情報処理システム。 - 請求項1において、
前記第1の所要時間情報とは、前記第2のI/Oハブのキューにエンキューされたトランザクションおよび前記I/Oデバイスのキューに滞留しているトランザクションが無いと仮定した場合に、前記第1のトランザクションが前記I/Oデバイスに受け付けられる時間の情報であり、
前記第2の所要時間情報とは、前記I/Oデバイスのキューに滞留しているトランザクションが無いと仮定した場合に、前記第1のトランザクションが前記I/Oデバイスに受け付けられる時間の情報であることを特徴とする情報処理システム。 - 請求項1において、
前記I/Oデバイスに対し前記第1のI/Oハブおよび前記第2のI/Oハブを介して第2のI/Oトランザクションを発行する第2のI/Oコントローラと、前記第2のI/Oトランザクションが発行されてから前記I/Oデバイスに受け付けられるまでに要する時間の制約を示す第2の時間制約情報を前記第2のI/Oトランザクションに付す第2のCPUと、を有する第2のコンピュータノードをさらに有し、
前記第1のコンピュータノードは、時刻情報を保持するリアルタイムクロック装置をさらに有し、
前記第2のコンピュータノード、前記第1のI/Oハブ、前記第2のI/Oハブ、および前記I/Oデバイスのそれぞれの時刻情報は、前記時刻情報に同期されることを特徴とする情報処理システム。 - 請求項1において、
前記第1のCPUは、前記第1のI/Oコントローラに前記第1のI/Oトランザクションを発行させる際に、第1のI/O命令を発行し、
前記第1の時間制約情報とは、前記第1のI/O命令の発行から前記I/OデバイスにおけるI/O処理までに許容される時間であり、
前記第1のI/Oハブは、前記第1の時間制約情報を、前記第1のI/OハブにおけるI/O処理に要した時間を減算した値に更新し、
前記第2のI/Oハブは、前記第1の時間制約情報を、前記第2のI/OハブにおけるI/O処理に要した時間を減算した値に更新することを特徴とする情報処理システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2011/001196 WO2012117445A1 (ja) | 2011-03-02 | 2011-03-02 | 情報処理システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2011/001196 WO2012117445A1 (ja) | 2011-03-02 | 2011-03-02 | 情報処理システム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2012117445A1 true WO2012117445A1 (ja) | 2012-09-07 |
Family
ID=46757421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2011/001196 WO2012117445A1 (ja) | 2011-03-02 | 2011-03-02 | 情報処理システム |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2012117445A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014095997A (ja) * | 2012-11-08 | 2014-05-22 | Fujitsu Ltd | 情報処理装置、制御装置及び情報処理装置の制御方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002207691A (ja) * | 2001-01-11 | 2002-07-26 | Matsushita Electric Ind Co Ltd | データ転送制御装置 |
JP2008004110A (ja) * | 2006-05-24 | 2008-01-10 | Hitachi Ltd | デバイス管理システム |
JP2009088837A (ja) * | 2007-09-28 | 2009-04-23 | Oki Electric Ind Co Ltd | 中継システム、中継装置、プログラム、および制御方法 |
-
2011
- 2011-03-02 WO PCT/JP2011/001196 patent/WO2012117445A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002207691A (ja) * | 2001-01-11 | 2002-07-26 | Matsushita Electric Ind Co Ltd | データ転送制御装置 |
JP2008004110A (ja) * | 2006-05-24 | 2008-01-10 | Hitachi Ltd | デバイス管理システム |
JP2009088837A (ja) * | 2007-09-28 | 2009-04-23 | Oki Electric Ind Co Ltd | 中継システム、中継装置、プログラム、および制御方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014095997A (ja) * | 2012-11-08 | 2014-05-22 | Fujitsu Ltd | 情報処理装置、制御装置及び情報処理装置の制御方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI502511B (zh) | 用於管理多核心架構之資源的方法和設備 | |
US10210117B2 (en) | Computing architecture with peripherals | |
JP2021529488A (ja) | ゲートウェイ上のホストプロキシ | |
EP1779609B1 (en) | Integrated circuit and method for packet switching control | |
JP6428805B2 (ja) | 演算装置、制御装置および制御方法 | |
WO2014103144A1 (ja) | インタフェース装置、およびメモリバスシステム | |
TWI478055B (zh) | 非對稱式處理之多核心系統與其網路設備 | |
KR20150067332A (ko) | 코어 간 통신 장치 및 방법 | |
US20140068165A1 (en) | Splitting a real-time thread between the user and kernel space | |
WO2016189294A1 (en) | Single-chip multi-processor communication | |
US7564860B2 (en) | Apparatus and method for workflow-based routing in a distributed architecture router | |
JP5583046B2 (ja) | 二重化制御装置 | |
Behnke et al. | Towards a real-time IoT: Approaches for incoming packet processing in cyber–physical systems | |
JP2009282917A (ja) | サーバ間通信機構及びコンピュータシステム | |
CN112867998A (zh) | 运算加速器、交换器、任务调度方法及处理系统 | |
WO2016033755A1 (zh) | 任务处理装置、电子设备及方法 | |
JP2010134698A (ja) | 情報処理システム | |
JP2021089715A (ja) | 複数のプロセッサ間の通信を同期させるためのシステム及び方法 | |
WO2012117445A1 (ja) | 情報処理システム | |
JP2007102447A (ja) | 演算処理装置 | |
JP2009037273A (ja) | マルチプロセッサシステム | |
JP2006215621A (ja) | Dma制御装置 | |
Chi et al. | Modeling and Simulation Based on Concurrent FC-AE-1553 Network | |
JP2009157731A (ja) | 仮想計算機システムおよび仮想計算機システムの制御方法 | |
Beichler et al. | Optimization of a novel WLAN Simulation Framework for Prototyping Network Applications and Protocols. |
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: 11860030 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 11860030 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: JP |