WO2010113291A1 - データ転送回路及びデータ転送方法 - Google Patents

データ転送回路及びデータ転送方法 Download PDF

Info

Publication number
WO2010113291A1
WO2010113291A1 PCT/JP2009/056742 JP2009056742W WO2010113291A1 WO 2010113291 A1 WO2010113291 A1 WO 2010113291A1 JP 2009056742 W JP2009056742 W JP 2009056742W WO 2010113291 A1 WO2010113291 A1 WO 2010113291A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
port
unit
data request
arbitration
Prior art date
Application number
PCT/JP2009/056742
Other languages
English (en)
French (fr)
Inventor
健 西屋敷
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to JP2011506910A priority Critical patent/JP5035469B2/ja
Priority to EP09842645.5A priority patent/EP2416253B1/en
Priority to PCT/JP2009/056742 priority patent/WO2010113291A1/ja
Publication of WO2010113291A1 publication Critical patent/WO2010113291A1/ja
Priority to US13/137,983 priority patent/US8819323B2/en

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/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
    • 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/4027Coupling between buses using bus bridges
    • G06F13/4031Coupling between buses using bus bridges with arbitration

Definitions

  • a system board and an I / O (Input / Output) board are connected, and data such as a crossbar board that mediates data transfer between the system board and the I / O board.
  • the present invention relates to a transfer circuit and a data transfer method.
  • control device such as a CPU (Central Processing Unit) as an arithmetic processing device, a system board including an I / O port, a memory and a system controller, and an I / O board including an external storage device and an I / O port
  • CPU Central Processing Unit
  • System board and I / O board transmit data to other system board or I / O board via crossbar board.
  • arbitration of data transfer requests is performed by priority control in the crossbar board through which data transmitted by each system board and I / O board passes. (Arbitration) is performed.
  • an arbitration method has been proposed in which arbitration is performed by excluding a memory bus acquisition request for a memory bank in a memory bank busy state as a target for memory access of a computer device.
  • a communication interface device having a high memory bus use priority may automatically wait for a memory bus use request sent from a communication interface device having a low priority.
  • an arbitration method that suppresses transmission of a bus use request from a device and cancels the suppression when the number of suppressions exceeds a predetermined value.
  • arbitration is executed as the first-stage arbitration in each I / O port of the data request source, and the data request for which the transmission right is acquired is transmitted to each I / O port of the request destination.
  • Arbitration of data requests from a plurality of I / O ports is executed as a second-stage arbitration at each I / O port.
  • requests that cannot be output due to resource busy remain in the second stage arbiter even though there are interdependencies between request types of the same data request source or I / O ports of the data request destination.
  • the data request order must be overtaken between specific data requests, the data request that must be overtaken cannot participate in the first stage of arbitration, so the right of the data request is acquired in the arbitration. Inability to continue, deadlock could occur.
  • the data request source I / O port does not output another type of data request until the output data request acquires the resource of the data request destination I / O port. For this reason, even if the request destination I / O port of another type of data request is in a state where the resource is not busy, a state in which the right of the data request cannot be acquired continues, and the data transfer throughput is reduced.
  • the disclosed technique has been made in order to solve the above problems (issues), and is a data transfer circuit and data for avoiding a live block state, a deadlock state, and a decrease in data transfer throughput.
  • An object is to provide a transfer method.
  • the disclosed technique is a data transfer circuit in which a control circuit and a data input / output circuit are connected and data is transferred between the control circuit and / or the data input / output circuit. And a data transfer method performed by the corresponding data transfer circuit, which monitors the use status of the reception resources of the control circuit and / or the data input / output circuit on the receiving side that receives data corresponding to a data request for requesting data transfer.
  • the data request input from the control circuit and / or the data input / output circuit on the data transmission side and the corresponding data transmission side is stored in the data request storage unit, and the data request stored in the data request storage unit is output.
  • Accepts multiple data requests output from multiple data request storage units Select one data request from multiple data requests by arbitration, perform data transfer of the data request selected by the arbitration step, and suppress the output of the data request when the reception resource usage status is busy. Requirement.
  • FIG. 1 is a block diagram illustrating an outline of a configuration of a computer apparatus according to the related art and the disclosed technique.
  • FIG. 2 is a block diagram showing a configuration of a conventional crossbar 100.
  • FIG. 3 is a flowchart showing a conventional arbitration processing procedure.
  • FIG. 4 is a block diagram illustrating a configuration of a port A request queue according to an example of the first embodiment.
  • FIG. 5 is a block diagram illustrating a configuration of a crossbar according to an example of the first embodiment.
  • FIG. 6 is a flowchart showing an arbitration processing procedure according to an example of the first embodiment.
  • FIG. 7 is a block diagram illustrating a configuration of a port A arbiter unit according to an example of the second embodiment.
  • FIG. 8 is a block diagram illustrating a configuration of a crossbar according to an example of the second embodiment.
  • FIG. 9 is a flowchart illustrating an arbitration processing procedure according to an example of the second embodiment.
  • FIG. 10 is a flowchart illustrating a resource release waiting flag control processing procedure according to an example of the second embodiment.
  • FIG. 11 is a block diagram illustrating a configuration of a port A request queue according to an example of the third embodiment.
  • FIG. 12 is a block diagram illustrating a configuration of a port X arbiter unit according to an example of the third embodiment.
  • FIG. 13 is a block diagram illustrating a configuration of a crossbar according to an example of the third embodiment.
  • FIG. 14 is a flowchart illustrating an arbitration processing procedure according to an example of the third embodiment.
  • FIG. 15 is a flowchart illustrating a resource release waiting flag control processing procedure according to an example of the third embodiment.
  • FIG. 16 is a flowchart illustrating a live block prevention circuit
  • FIG. 1 is a block diagram illustrating an outline of a configuration of a computer apparatus according to the related art and the disclosed technique.
  • a system board A 500, a system board B 600, an I / O board X 700, and an I / O board Y 800 are connected to a crossbar board (hereinafter abbreviated as “crossbar”, which corresponds to a data transfer circuit) 100.
  • crossbar a crossbar board
  • resource refers to a storage area for each request type of a reception buffer of a system board and an I / O board described later. The reception buffer and request type will be described later.
  • a CPU 501 and a CPU 502 as arithmetic processing units, and a memory 503 and a memory 504 are connected to a system controller 505.
  • the CPU 501 and the CPU 502 are arithmetic devices that perform various arithmetic processes in the computer apparatus 10.
  • the memory 503 and the memory 504 are storage units that temporarily store calculation results performed by the CPU 501 and the CPU 502 and store data transferred from the I / O board X700 and / or the I / O board Y800.
  • the system controller 505 is a control circuit that controls the entire system board A500.
  • the system controller 505 includes transmission / reception buffers for various data requests and various data transmitted and received between the CPU 501 and the CPU 502 or between the memory 503 and the memory 504 and the crossbar 100.
  • the system controller 505 includes a transmission buffer 506 for various data requests and various data transmitted from the CPU 501 and CPU 502 or the memory 503 and memory 504 to the crossbar 100, and various data requests and various data received from the crossbar 100. Buffer 507.
  • the transmission buffer 506 is a buffer that temporarily stores various data requests output from the CPU 501 or the CPU 502 to other system boards or I / O boards.
  • the data request temporarily stored in the transmission buffer 506 is transmitted to the input port 104 of the port A 103 of the crossbar 100 described later.
  • the data request is a request related to data transmission / reception. There is actual data that is sent and received in response to a data request.
  • the reception buffer 507 temporarily stores various requests or data received from the crossbar 100 described later. Various requests and data temporarily stored in the reception buffer 507 are output to the CPU 501 and / or the CPU 502, the memory 503, and the / memory 504, respectively.
  • the system board B600 has the same configuration as the system board A500.
  • the system board B 600 includes a system controller 605 including a CPU 601 and a CPU 602, a memory 603 and a memory 604, a transmission buffer 606 and a reception buffer 607.
  • the functions and processes of the components of the system board B600 are the same as those of the components of the system board A500.
  • the functional units having the same name except for the reference numerals have the same function and perform the same processing.
  • system board connected to the crossbar 100 is not limited to the two system boards A500 and B600 described above.
  • Each system board includes two CPUs and two memories, but is not limited to “two”, and may include functional units other than the CPU and the memory.
  • the crossbar 100 includes an arbiter unit 101, a data crossbar 102, a port A103 and a port B108, a port X113 and a port Y118.
  • the arbiter unit 101 arbitrates various requests output from the port A 103, the port B 108, the port X 113, and the port Y 118 according to priority control such as round robin and LRU (Least Recently Used) algorithm.
  • the data crossbar 102 outputs data corresponding to the data request that won the arbitration by the arbiter unit 101 to the destination port among the data requests output from each port in the crossbar 100.
  • winning arbitration means that the data request acquires the right to make an actual data request in the arbitration in the arbiter unit 101.
  • the data request that won the arbitration is output from the data crossbar to the destination port.
  • losing arbitration means that the data request cannot acquire the right to make an actual data request in the arbitration. In other words, a data request lost to arbitration is not output from the data crossbar to the destination port.
  • the port A103 includes an input port 104, a port A request queue 105a, a port A data control unit 106a, and an output port 107.
  • the input port 104 distributes the data request received from the transmission buffer 506 of the system controller 505 of the system board A 505 to the port A request queue 105a and outputs the data to the port A data control unit 106a.
  • the port A request queue 105 a outputs a data request input from the input port 104 to the arbiter unit 101.
  • the port A data control unit 106a temporarily stores data corresponding to a data request input from the input port 104 to the port A request queue 105a.
  • the port A data control unit 106 a When the port A data control unit 106 a is notified from the arbiter unit 101 that the corresponding data request has won the arbitration, the port A data control unit 106 a outputs data corresponding to the data request that has won the arbitration to the data crossbar 102.
  • the output port 107 receives data output from the data crossbar as a destination port.
  • the port B108 is a port corresponding to the system board B600.
  • the port B108 has the same configuration as the port A.
  • the port B 108 includes an input port 109, a port B request queue 105b, a port B data control unit 106b, and an output port 112.
  • the functional units having the same name except the reference numerals have the same functions as the functional units in the port A 103 and perform the same processing.
  • the port X113 includes an input port 114, a request queue 115, a data control unit, and an output port 117
  • a port Y118 includes an input port 119, a request queue 120, a data control unit 121, and an output port 122.
  • Each functional unit differs only in that an I / O board X700 or an I / O board Y800 is connected instead of the system board A500 or the system board B600, and the same function as the corresponding functional unit of the 500 port A103 and the port B108. The same processing is performed.
  • the I / O board 700 is configured such that the card slot 701 and the card slot 702, and the disk storage device 703 and the disk storage device 704 are connected to the I / O controller 705.
  • the card slot 701 and the card slot 702 are interfaces as function expansion devices for connecting an external storage device to the computer device 10.
  • the disk storage device 703 and the disk storage device 704 are storage devices that store data used by the computer device 10.
  • the I / O controller 705 controls the data input / output of the entire I / O board X700.
  • the I / O controller 705 includes a card slot 701 or an external storage device connected to the card slot 702, a disk storage device 703 or various data requests transmitted and received between the disk storage device 704 and the crossbar 100, Includes a send / receive buffer for data.
  • the I / O controller 705 is an external storage device connected to the card slot 701 and the card slot 702, or various data requests, various data transmitted and received between the disk storage device 703 and the disk storage device 704 and the crossbar 100, etc. Transmission buffer 706, and various data requests received from the crossbar 100, various data reception buffers 707.
  • the transmission buffer 706 is a buffer that temporarily stores data transmitted in response to a data request from the system board A 500 or the system board B 600. Data temporarily stored in the transmission buffer 706 is transmitted to the input port 114 of the port X113 of the crossbar 100 described later.
  • the reception buffer 707 temporarily stores data corresponding to various data requests received from the crossbar 100 described later. Various data stored in the reception buffer 707 are output to an external storage device connected to the card slot 701 and the card slot 702, or to the disk storage device 703 and the disk storage device 704, respectively.
  • the I / O board Y800 has the same configuration as the I / O board X700.
  • the I / O board Y800 has an I / O controller 805 including a card slot 801 and a card slot 802, a disk storage device 803 and a disk storage device 804, a transmission buffer 806, and a reception buffer 807.
  • the function and processing of each component is the same as each component of the I / O board X700.
  • the functional units having the same name except for the reference numerals have the same function and perform the same processing.
  • each I / O board connected to the crossbar 100 is not limited to the two I / O boards X700 and Y800 described above.
  • Each I / O board includes two card slots and two disk storage devices, but is not limited to “two”, and functions other than the card slot and disk storage device are provided. May be included.
  • FIG. 2 is a block diagram showing a configuration of a conventional crossbar 100.
  • the arbiter unit 101, the data crossbar 102, the port A request queue 105a and the port B request queue 105b, the port A data control unit 106a and the port B data control unit 106b are shown, and the description of other configurations is omitted. Yes.
  • the arbiter unit 101 includes a port X resource management unit 101a, a port X arbiter unit 101b, a port Y resource management unit 101c, and a port Y arbiter unit 101d.
  • the arbiter unit 101 includes a port A resource management unit, a port A arbiter unit, a port B resource management unit, and a port B arbiter unit. This is because a case where a data request is transmitted to the port X113 from the port A request queue 105a of the port A103 will be described as an example.
  • the port A request queue 105a and the port B request queue 105b are queues for managing data input from the input port 104 and the input port 109, and hold information necessary for arbitration, for example, a data destination and a data size.
  • the port A request queue 105a includes a port AQ0_105a00, a port AQ1_105a01,..., A port AQn_105a0n, a port A local arbiter unit 105a1, and a destination determination unit 105a2 that accept data requests for each type.
  • Q0, Q1,..., Qn represent data request types (hereinafter referred to as request types).
  • the port A local arbiter unit 105a1 arbitrates data requests input from the port AQ0_105a00, port AQ1_105a01,..., Port AQn_105a0n. Then, the destination determination unit 105a2 outputs the data request that has won the arbitration to the port X arbiter unit 101b or the port Y arbiter unit 101d according to the destination. That is, arbitration is performed in two stages: the port A local arbiter unit 105a1 and the port X arbiter unit 101b or the port Y arbiter unit 101d.
  • the port B request queue 105b includes a port BQ0_105b00, a port BQ1_105b01,..., A port BQn_105b0n, a port B local arbiter unit 105b1, and a destination determination unit 105b2.
  • the functions and processes of the components of the port B request queue 105b are the same as those of the components of the port A request queue 105a.
  • the functional units having the same name except for the reference numerals have the same function and perform the same processing.
  • the port X resource management unit 101a of the arbiter unit 101 includes a resource information unit (for Q0) 101a0, a resource information unit (for Q1) 101a1,..., And a resource information unit (for Qn) 101an.
  • the resource information part (for Q0) 101a0, the resource information part (for Q1) 101a1,..., The resource information part (for Qn) 101an are stored in the reception buffer 707 of the I / O board X700 connected to the crossbar 100.
  • the queue Q0, queue Q1,..., Queue Qn usage status for each type of request data is acquired and managed.
  • the resource information managed by each resource information section indicates the usable amount of the reception buffer 707 as a resource. At the time of data output, the usable amount decreases when the data is temporarily stored in the reception buffer 707, and the usable amount increases when the temporary storage of data is released.
  • the port X arbiter unit 101b includes a port A resource check unit 101b0, a port B resource check unit 101b1, an interport X port arbiter unit 101b2, an output control unit 101b3, and an arbitration information unit 101b4.
  • the port A resource check unit 101b0 has a resource information part (for Q0) 101a0, a resource information part (for Q1) 101a1,..., Resource information according to the type of request for the data request input from the port A request queue 105a. Part (for Qn) 101an is referred to.
  • the port B resource check unit 101b1 has a resource information unit (for Q0) 101a0, a resource information unit (for Q1) 101a1,... According to the type of data request received from the port B request queue 105b. Reference is made to the resource information part (for Qn) 101an.
  • the port A resource check unit 101b0 When the queue corresponding to the data request is not busy in the reception buffer 707, the port A resource check unit 101b0 outputs the data request to the interport X port arbiter unit 101b2. Similarly, when the queue corresponding to the data request is not busy in the reception buffer 707, the port B resource check unit 101b1 outputs the data request to the interport X port arbiter unit 101b2.
  • the output control unit 101b3 instructs the port A data control unit 106a or the port B data control unit 106b to output data corresponding to the data request that has won the arbitration in the interport X port arbiter unit 101b2.
  • the arbitration information unit 101b4 holds information indicating the priority order between ports or request types used in arbitration in the port X interport arbiter unit 101b2.
  • the port A data control unit 106a includes a data buffer 106a1 and a read control unit 106a2.
  • the port B data control unit 106b includes a data buffer 106b1 and a read control unit 106b2.
  • the read control unit 106a2 of the port A data control unit 106a or the read control unit 106b2 of the port B data control unit 106b sends the corresponding data to the data buffer 106a1 and the data buffer 106b1, respectively. Instruct to read.
  • the data buffer 106a1 and the data buffer 106b1 output corresponding data to the port X data selector 102a and the port Y data selector 102b of the data crossbar 102, respectively.
  • the port Y resource management unit 101c of the arbiter unit 101 includes a resource information unit (for Q0) 101c0, a resource information unit (for Q1) 101c1,..., And a resource information unit (for Qn) 101cn.
  • the resource information part (for Qn) 101cn are the resource information part (for Q0) 101a0 and the resource information part (for Q1). 101a1,..., Resource information part (for Qn) 101an, queue Q0, queue Q1,...
  • the usage status of the queue Qn is acquired and managed.
  • the port Y arbiter unit 101d includes a port A resource check unit 101d0, a port B resource check unit 101d1, an interport Y port arbiter unit 101d2, and an output control unit 101d3.
  • the port A resource check unit 101d0 has a resource information part (for Q0) 101c0, a resource information part (for Q1) 101c1,..., Resource information according to the type of request for the data request input from the port A request queue 105a. Part (for Qn) 101cn is referred to.
  • the port B resource check unit 101d1 has a resource information part (for Q0) 101c0, a resource information part (for Q1) 101c1,... According to the type of data request received from the port B request queue 105b. Reference is made to the resource information part (for Qn) 101cn.
  • the port A resource check unit 101d0 When the queue corresponding to the data request is not busy in the reception buffer 807, the port A resource check unit 101d0 outputs the data request to the interport Y port arbiter unit 101d2. Similarly, when the queue corresponding to the data request is not busy in the reception buffer 807, the port B resource check unit 101d1 outputs the data request to the inter-port Y port arbiter unit 101d2.
  • the output control unit 101d3 instructs the port A data control unit 106a or the port B data control unit 106b to output data corresponding to the data request that won the arbitration in the port Y interport arbiter unit 101d2.
  • the read control unit 106a2 of the port A data control unit 106a or the read control unit 106b2 of the port B data control unit 106b that has received an instruction from the output control unit 101d3 corresponds to the data buffer 106a1 and the data buffer 106b1, respectively. Instructs to read data. Then, the data buffer 106a1 and the data buffer 106b1 output the corresponding data to the port X data selector 102a and the port Y data selector 102b of the data crossbar 102, respectively.
  • FIG. 3 is a flowchart showing a conventional arbitration processing procedure.
  • a data request of the request type Q0 is transmitted from the system board A500 to the port X via the port A103 is shown.
  • the crossbar 100 receives a data request and data (packet) having a request type of Q0 from the system board A500.
  • the port AQ0_105a00 of the port A request queue 105a of the crossbar 100 registers a data request of the request type Q0 from the system board A500.
  • the data buffer 106a1 of the port A data control unit 106a stores data (packets) corresponding to the data request of the request type Q0 from the system board A500.
  • step S102 the port AQ0_105a00 inputs the registered request type Q0 data request to the port A local arbiter unit 105a1 in order to participate in the port A local arbitration performed inside the port A request queue 105a.
  • the port A local arbiter unit 105a1 to which the data request is input performs local arbitration inside the port A request queue 105a.
  • step S103 the port A local arbiter unit 105a1 determines whether or not the data request input in step S102 has won the local arbitration. If it is determined that the player has won (Yes at Step S103), the process proceeds to Step S104. If it is not determined that the player has won (No at Step S103), the process proceeds to Step S102.
  • step S104 the port A local arbiter unit 105a1 determines whether or not the read control unit 106a2 of the port A data control unit is busy. When it is determined that it is busy (Yes at Step S104), the process proceeds to Step S102, and when it is not determined that it is busy (No at Step S104), the process proceeds to Step S105.
  • step S105 the port A local arbiter unit 105a1 outputs a data request that has won the local arbitration from the destination determination unit 105a2 to the arbiter unit of the destination port (here, the port X arbiter unit 101b).
  • the port A local arbiter unit 105 a 1 outputs the corresponding data request addressed to the port X to the port A resource check unit 101 b 0 of the port X arbiter unit 101 b of the arbiter unit 101.
  • step S106 the port A resource check unit 101b0 of the port X arbiter unit 101b of the arbiter unit 101 refers to the resource information unit 101a0 of the port X resource management unit 101a, and the resource of the request type Q0 of the reception buffer 707 is busy. It is determined whether or not there is. When it is determined that it is busy (Yes at Step S106), the process proceeds to Step S102 (or Step S106), and when it is not determined that it is busy (No at Step S106), the process proceeds to Step S107.
  • step S107 the port A resource check unit 101b0 inputs a data request of the request type Q0 to the interport Xport arbiter unit 101b2 to participate in the interport X port arbitration performed by the port X arbiter unit 101b2.
  • the port X port arbiter unit 101b2 to which the data request is input performs arbitration between the port X ports in the port X arbiter unit 101b2.
  • step S108 the port X port arbiter unit 101b2 determines whether or not the data request of the request type Q0 has won the arbitration between port X ports. If it is determined that the game has been won (Yes at Step S108), the process proceeds to Step S109. If it is not determined that the game has been won (No at Step S108), the process proceeds to Step S106.
  • step S109 the interport X port arbiter unit 101b2 clears the queue of request type Q0 data requests registered in the port AQ0_105a00 that has won the interport X port arbitration. Further, the output control unit 101b3 instructs the read control unit 106a2 of the port A data control unit to output data corresponding to the data request that has won the arbitration between the port X port.
  • step S110 the read control unit 106a2 reads the data (packet) corresponding to the corresponding data request addressed to the port X from the data buffer 106a1 according to the instruction from the output control unit 101b3, and the port X data selector of the data crossbar 102 To 102a.
  • step S101, step S105, step S106, step S107, and step S109 is represented by each arrow which attaches
  • the port A resource check unit 101b0 of the port X arbiter unit 101b of the arbiter unit 101 refers to the resource information unit 101a0 of the port X resource management unit 101a, and receives the reception buffer.
  • the resource of the request type Q0 707 is busy, the following two correspondences can be considered.
  • step S102 Cancel the data request and start over from the local arbitration in the port A request queue 105a (refer to the wavy arrow indicated by (A) in FIG. 2; if the result in step 106 is affirmative in FIG. 3, the process proceeds to step S102).
  • step S102 Continue to re-inject the data request into the port A resource check unit 101b0 of the port X arbiter unit 101b until the resource busy state of the reception buffer 707 is resolved (a wavy arrow indicated by (B) in FIG. 2) (Refer to step S106 in the case of step 106 in FIG. 3)
  • the above (1) has the following problems. That is, (Problem 1) If a steady resource busy state continues, there is a possibility that a live lock state is established. Specifically, the resource information of the request type Q0 of the port X113 is updated, and another data request from the port A103 (for example, the request type Q1 addressed to the port Y118) is secured at the timing when the resources necessary for data transmission are secured. Is selected, and a data request of the request type Q0 addressed to the port X113 from the port B108 is selected.
  • the resource for the request type Q0 of the port X113 is used by the port B108, and the data request of the request type Q0 addressed from the port A103 to the port X113 falls into the resource busy state again. If this state continues, the resource request is sequentially released, so that a live request state in which data requests from some ports are not constantly selected, such as port A103, is established.
  • the port A request queue 205a may reduce the opportunity to input data requests of other request types that are not in shortage of resources, and may reduce throughput.
  • the resource for the request type Q0 in the port X113 is interdependent with either the data request of another request type Q1 to Qn in the port X113 or the request type Q0 to Qn in the output port different from the port X113.
  • a specific data request remains in the arbiter unit 101, and other data that needs to be overtaken by the port A local arbiter unit 105a1
  • the possibility of deadlock is further increased by making it impossible to submit a request. If a specific data request does not stay in the arbiter unit 101, there is a problem that a live block may occur.
  • the crossbar 200 includes a port A request queue 205a and a port B request queue 205b instead of the port A request queue 105a and the port B request queue 105b. Specifically, for example, a port A request queue 205a is provided instead of the port A request queue 105a. The same applies to the request queues of other request types.
  • the port A request queue 205a is configured such that the requester resource busy flag control unit 205a30 to the requester resource busy flag control unit 205a3n are connected to the ports AQ0_205a00 to AQn_205a0n for the request types Q0 to Qn, respectively. .
  • the port A resource check unit 201b0 of the port X arbiter unit 201b refers to the resource information unit 201a0 of the port X resource management unit 201a, so that the data request from the port AQ0_205a00 is busy. If it is determined that output to the port X interport arbiter unit 201b2 is not possible, the requester resource busy flag control unit 205a30 of the port AQ0_205a00 is instructed to turn on the busy flag.
  • the port AQ0_205a00 suppresses outputting a data request as long as the busy flag is on. When the busy flag is off, the port AQ0_205a00 does not prevent the data request from being output.
  • FIG. 6 is a flowchart showing an arbitration processing procedure according to an example of the first embodiment. Steps S201 to S210 in FIG. 6 are the same as the conventional arbitration processing procedure shown in FIG. The difference is the branch process in step S206.
  • step S206 the port A resource check unit 201b0 of the port X arbiter unit 201b of the arbiter unit 201 refers to the resource information unit 201a0 of the port X resource management unit 201a, and the resource of the request type Q0 of the reception buffer 707 is busy. If it is determined that there is (Yes at Step S206), the process proceeds to Step S211.
  • step S211 the port A resource check unit 201b0 sends a cancel notification to the port A request queue 205a.
  • the requester resource busy flag control unit 205a30 sets a requester resource busy flag in response to the cancellation notification.
  • step S213 the resource information unit 201a0 of the port X resource management unit 201a determines whether the resource busy has been resolved. When it is determined that the problem has been resolved (Yes at Step S213), the process proceeds to Step S214. When it is not determined that the problem has been resolved (No at Step S213), the process proceeds to Step S213. In step S214, the requester resource busy flag control unit 205a30 receives a notification that the resource busy has been released from the resource information unit 201a0 of the port X resource management unit 201a, and resets (turns off) the requester resource busy flag. When this process ends, the process proceeds to step S202.
  • the request queue 205a00 can know the busy state of the resource for each request type, and suppresses the output of data requests that are highly likely to be lost due to arbitration between ports.
  • the above (Problem 2) can be solved.
  • the port X arbiter unit 301b of the arbiter unit 301 further includes a resource release waiting flag storage unit 301b5.
  • the resource release waiting flag storage unit 301b5 holds a resource release waiting flag for each request type and each input port.
  • the resource release wait flag storage unit 301b5 sets (turns on) a resource release wait flag when a resource shortage is detected in the resource check in the output port.
  • resource release wait flag of any input port of the request type If the resource release wait flag of any input port of the request type is set, data requests from other input ports that do not have the resource release wait flag set will be in the resource busy state even if they are not in the resource busy state. . This prevents a new data request from winning the arbitration before the preceding input port waiting for resource release. That is, the order of waiting for resource release is maintained.
  • the port A resource check unit 301b0 cancels the data request when detecting a resource shortage of the corresponding request type. Further, when the port A resource check unit 301b0 does not detect a shortage of resources of the corresponding request type, the port A resource check unit 301b0 inputs a data request to the port X port arbiter unit 301b2. In this way, if there is no shortage of resources, the data request stays in the arbiter unit 301, so that it is not necessary to start again from the local arbiter, and the data request that is likely to be output can be efficiently participated in the arbitration between ports. .
  • the resource information part 301a0 of the port X resource management part recognizes that the resource information has been updated and the resource shortage has been resolved, the information in the resource release waiting flag storage part 301b5 and the arbitration information held in the arbitration information part 301b4
  • the requester resource busy flag of the corresponding request type of the input port that holds the data request with the highest priority based on is reset (turned off).
  • the resource release wait flag held in the resource release wait flag storage unit 301b5 is selected again by the interport X port arbiter unit 301b2 through the port A local arbiter unit 305a1. Reset.
  • the requester resource busy flag of the corresponding request type of the input port with the next highest priority is reset.
  • FIG. 9 is a flowchart illustrating an arbitration processing procedure according to an example of the second embodiment.
  • steps S301 to S306 the same processing as in steps S101 to S106 is performed. If step S306 is positive, the process proceeds to step S315. If step S306 is negative, the process proceeds to step S307.
  • step S307 the port A resource check unit 301b0 refers to the resource release wait flag storage unit 301b5 and determines whether all the resource release wait flags are off (“0”). When it is not determined that all the resource release waiting flags are off (“0”) (Yes at Step S307), the process proceeds to Step S308, and when it is determined that all the resource release waiting flags are off (“0”). (No at step S307), the process proceeds to step S309.
  • step S308 the port A resource check unit 301b0 determines whether the resource release wait flag of the target port is on (“1”). If it is determined that the resource release wait flag of the target port is on (“1”) (Yes at Step S308), the process proceeds to Step S309, and it is determined that the resource release wait flag of the target port is on (“1”). If not (No at Step S308), the process proceeds to Step S315.
  • step S311 the port X port arbiter unit 301b2 determines whether or not the resource release wait flag of the corresponding request type of the port that has won the arbitration is on (“1”). If it is determined that the resource release wait flag of the corresponding request type of the port that won the arbitration is on (“1”) (Yes in step S311), the process proceeds to step S312 and the corresponding request type of the port that won the arbitration. If it is not determined that the resource release waiting flag is on (“1”) (No at step S311), the process proceeds to step S313.
  • step S312 the port X port arbiter unit 301b2 instructs the resource release wait flag storage unit 301b5 to reset the resource release wait flag of the corresponding request type of the target port.
  • the resource release wait flag storage unit 301b5 resets the resource release wait flag of the target port.
  • step S315 the port A resource check unit 301b0 notifies the port A request queue 305a of the cancellation of the data request and sets the resource release waiting flag storage unit 301b5 of the target port so as to set the resource release waiting flag. Instruct. In response to this instruction, the resource release wait flag storage unit 301b5 sets the resource release wait flag of the target port.
  • step S316 the requester resource busy flag control unit 305a30 sets a requester resource busy flag in response to the cancellation notification.
  • step S317 the requester resource busy flag control unit 305a30 waits for a reset instruction when the information in the resource information unit 301a0 of the port X resource management unit is updated.
  • step S318 the same process as in step S214 is performed.
  • FIG. 10 is a flowchart illustrating a resource release waiting flag control processing procedure according to an example of the second embodiment.
  • the resource release waiting flag storage unit 301b5 waits for a flag setting instruction from any of the resource check units. If no setting is instructed for any of the resource release waiting flags (No at Step S321), the process proceeds to Step S321. If setting is instructed for any of the resource release waiting flags (Yes at step S321), the process proceeds to step 322.
  • step S322 the resource information unit 301a0 of the port X resource management unit determines whether the resource busy has been resolved. If it is determined that the resource busy has been resolved (Yes at Step S322), the process proceeds to Step S323, and if it is not determined that the resource busy has been resolved (No at Step S322), the process proceeds to Step S322.
  • step S323 the resource information unit 301a0 of the port X resource management unit resets the requester resource busy flag according to the type of data request and the information of the arbitration information unit 301b4 and the resource release waiting flag storage unit 301b5 of the output port. Select.
  • step S324 the resource information unit 301a0 of the port X resource management unit instructs the requester resource busy flag control unit 305a30 of the target port to reset the requester resource busy flag.
  • step 318 is executed.
  • step S325 the resource information unit 301a0 of the port X resource management unit waits for an instruction to reset the target port resource release flag in step S312.
  • step S326 in response to the instruction in step S312, the corresponding resource release waiting flag in the resource release waiting flag storage unit 301b5 is reset.
  • step S327 the resource information unit 301a0 of the port X resource management unit determines whether all the resource release waiting flags in the resource release waiting flag storage unit 301b5 are off (“0”). If it is determined that all the resource release wait flags are off (“0”) (Yes at Step S327), the process proceeds to Step S321, and it is determined that all the resource release wait flags are off (“0”). If not (No at step S327), the process proceeds to step S322.
  • the arbitration information unit 301b4 and the resource release wait flag storage unit 301b5 are at the timing when it is guaranteed by the resource release wait flag control of the example of the second embodiment that resources are secured for the input port waiting for resource release. Using this information, it becomes possible to make a data request participate in arbitration between ports again for the port to be prioritized, and the above (Problem 1) can be solved.
  • the crossbar 400 according to the example of the third embodiment includes a livelock monitoring timer for each request queue for each request type in addition to the configuration of the crossbar 300 according to the example of the second embodiment, and the count value of the livelock monitoring timer is The live block prevention circuit is activated when the live block monitoring threshold is exceeded.
  • the port AQ0_405a00 of the port A request queue 405a further includes a live block monitoring timer 405a40, a comparator 405a50, and a destination determination unit 405a60.
  • the port AQ0_405a01 further includes a live lock monitoring timer 405a41, a comparator 405a51, and a destination determination unit 405a61.
  • the port AQ0_405a0n further includes a live block monitoring timer 405a4n, a comparator 405a5n, and a destination determination unit 405a6n.
  • the port A request queue 405a includes a live block monitoring threshold storage unit 405a7 and is connected to the comparators 405a50, 405a51, and 405a5n.
  • the live lock monitoring timer will be described by taking port AQ0_405a00 as an example, as shown in FIGS.
  • the live lock monitoring timer 405a40 starts timing when the resource check unit 401b0 cancels the request due to resource busy, and inputs the timing result to the comparator 405a50.
  • the comparator 405a50 always compares the predetermined threshold value stored in the live lock monitoring threshold value storage unit 405a7 with the input time measurement result. If the time measurement result exceeds a predetermined time threshold, the destination determination unit 405a60 determines the destination of the data request of the request type Q0 output from the port AQ0_405a00, and the request type Q0 data request live is output to the destination output port. Instructs to activate the lock prevention function.
  • the timer reset timing of the live block monitoring timer 405a40 is when the target data request is selected by the interport X port arbiter unit 401b2.
  • the port X arbiter unit 401b further includes a live block prevention circuit enable bit storage unit 401b6.
  • the live block prevention circuit enable bit storage unit 401b6 of the port X arbiter unit 401b stores a live block prevention circuit enable bit for enabling the live block prevention circuit for each request type.
  • the live block prevention circuit enable bit is set to a bit (“1”) based on a signal output by determining the output port from the destination determination unit 405a60 of the port A request queue.
  • live lock prevention circuit enable bit Until the live lock prevention circuit enable bit is set, data requests from input ports that do not have the resource release wait flag set are not treated as resource busy. When resolving the resource busy is recognized, all the requester resource busy flag and resource release waiting flag of the corresponding input port are reset.
  • the live lock prevention circuit enable bit is reset when the request that detected the live lock state by the live lock monitor timer is selected by the interport X port arbiter unit 401b2, and the comparator 405a50 resets the threshold value. Reset when no more is detected.
  • FIG. 14 is a flowchart illustrating an arbitration processing procedure according to an example of the third embodiment. Steps S401 to S406 in FIG. 14 are the same as steps S301 to S306 in the arbitration processing procedure of the example of the second embodiment shown in FIG.
  • step S407 the port A resource check unit 401b0 determines whether the livelock prevention circuit is valid and all the resource release wait flags are off (“0”). If it is determined that the livelock prevention circuit is valid and the resource release wait flags are not all off (“0”) (Yes at step S407), the process proceeds to step S408, and the livelock prevention circuit valid and resource release wait flags are all off ( If it is not determined that it is not “0”) (No at Step S407), the process proceeds to Step S409.
  • step S410 are the same as steps S308, S309, and S310 of the arbitration processing procedure of the example of the second embodiment shown in FIG. If the determination in step S410 is affirmative, the process proceeds to step S411. If the determination in step S410 is negative, the process proceeds to step S406.
  • step S411 the port X port arbiter unit 401b2 determines whether or not the resource release waiting flag of the port that won the live lock prevention circuit and that has won the arbitration is on (“1”). If it is determined that the resource release wait flag of the port that has won the live lock prevention circuit and has won arbitration is on (“1”) (Yes in step S411), the process proceeds to step S412 and the live block prevention circuit has been turned on and wins the arbitration. If it is not determined that the resource release wait flag of the selected port is on (“1”) (No at step S411), the process proceeds to step S413. Steps S412 to S414 in FIG. 14 are the same as steps S312 to S314 in the arbitration processing procedure of the example of the second embodiment shown in FIG.
  • step S415 in FIG. 14 is the same as step S315 in the arbitration processing procedure of the example of the second embodiment shown in FIG.
  • step S416 the port A resource check unit 401b0 instructs the livelock monitoring timer to start timing.
  • Steps S417 to S419 in FIG. 14 are the same as steps S316 to S318 in the arbitration processing procedure of the example of the second embodiment shown in FIG. When step S419 ends, the process proceeds to step S401.
  • FIG. 15 is a flowchart illustrating a resource release waiting flag control processing procedure according to an example of the third embodiment. Steps S421 and S422 in FIG. 15 are the same as steps S321 and S322 in the resource release wait flag control processing procedure of the example of the second embodiment shown in FIG.
  • step S423 the resource information unit 401a0 of the port X resource management unit refers to the live block prevention circuit enable bit storage unit 401b6, sets the live block prevention circuit enable bit, and the live block prevention circuit is enabled. It is determined whether or not. If it is determined that the livelock prevention circuit is valid (Yes at step S423), the process proceeds to step S424. If it is not determined that the livelock prevention circuit is valid (No at step S423), step S429 is performed. Move on.
  • Steps S424 to S428 in FIG. 15 are the same as steps S323 to S327 of the resource release waiting flag control processing procedure in the example of the second embodiment shown in FIG.
  • step S429 the resource information unit 401a0 of the port X resource management unit instructs to reset the requester resource busy flag of all ports.
  • step S430 the resource information unit 401a0 of the port X resource management unit instructs resetting of the resource release waiting flag of all ports.
  • FIG. 16 is a flowchart illustrating a live block prevention circuit control processing procedure according to an example of the third embodiment.
  • the livelock monitoring timer 405a40 waits for the monitoring timer to be activated in S416.
  • the process proceeds to Step S432, and when the live lock monitor timer 405a40 is not activated (No at Step S431), the process proceeds to Step S431.
  • step S432 the live lock monitoring timer 405a40 determines whether or not the data request to be monitored is selected by the interport X port arbiter unit 401b2.
  • the process proceeds to step S437, and the data request to be monitored is selected by the port X port arbiter unit 401b2. If it is not determined that the result is negative (No at step S432), the process proceeds to step S433.
  • step S433 the comparator 405a50 determines whether or not the value counted by the livelock monitoring timer 450a40 exceeds the livelock monitoring threshold stored in the livelock monitoring threshold storage unit 405a7. If it is determined that the live block monitoring threshold has been exceeded (Yes at step S433), the process proceeds to step S434. If it is not determined that the live block monitoring threshold has been exceeded (No at step S433), the process proceeds to step S435.
  • step S434 the live block monitoring timer 405a40 sets the live block prevention circuit enable bit for each request type in the live block prevention circuit enable bit storage unit 401b6 through the destination determination unit 405a60, and enables the live block prevention circuit. To do.
  • step S435 a predetermined value (for example, 1) is added to the value counted by the live lock monitoring timer 405a40. When this process ends, the process moves to step S432.
  • step S436 the live lock monitoring timer 405a40 determines whether the data request to be monitored is selected by the interport X port arbiter unit 401b2 after enabling the live lock prevention circuit.
  • the process proceeds to step S437, and the data request to be monitored is selected by the port X port arbiter unit 401b2. If it is not determined that the result is negative (No at step S436), the process proceeds to step S436.
  • step S437 the live lock monitoring timer 405a40 corresponding to the request selected by the port X port arbiter unit 401b2 is initialized (reset).
  • the comparator 405a50 does not detect exceeding the threshold value
  • the live lock prevention circuit enable bit for each request type in the live lock prevention circuit enable bit storage unit 401b6 is reset, and the live lock monitor timer 405a40 is reset. Disable the lock prevention circuit.
  • the process moves to step S431.
  • the requester resource busy flag 405a30, the resource release waiting flag storage unit 401b5, and The activation of the livelock prevention circuit including the port A resource check unit 401b0 for controlling these is suppressed when the resource busy that occurs in a short time until the time measured by the livelock monitoring timer exceeds the livelock monitoring threshold.
  • a decrease in data transfer throughput within the crossbar 400 can be suppressed by suppressing the operation of the live lock prevention circuit.
  • Example of this invention was described, this invention is not limited to this, In the range of the technical idea described in the claim, it may be implemented with a various different Example. Is. Moreover, the effect described in the Example is not limited to this.
  • each component of each illustrated apparatus is functionally conceptual and does not necessarily need to be physically configured as illustrated.
  • the specific form of distribution / integration of each device is not limited to that shown in the figure, and all or a part thereof may be functionally or physically distributed or arbitrarily distributed in arbitrary units according to various loads or usage conditions. Can be integrated and configured.

Abstract

 ポートAリクエストキュー(205)は、リクエストタイプQ0~Qn毎のポートAQ0(_205a00)~ポートAQn(_205a0n)にそれぞれリクエスタ資源ビジーフラグ制御部(205a30)~リクエスタ資源ビジーフラグ制御部(205a3n)が接続された構成である。ポートXアービタ部(201b)のポートA資源チェック部(201b0)は、ポートX資源管理部(201a)の資源情報部(201a0)を参照した結果、ポートAQ0(_205a00)からのデータリクエストが資源ビジーのためにポートXポート間アービタ部(201b2)へ出力可能でないと判断した場合、ポートAQ0(_205a00)のリクエスタ資源ビジーフラグ制御部(205a4)に対してビジーフラグをオンにするよう指示する。ポートAQ0(_205a00)は、ビジーフラグがオンである限りデータリクエストを出力することを抑止する。

Description

データ転送回路及びデータ転送方法
 情報処理装置としてのコンピュータ装置において、システムボード及びI/O(Input/Output、入出力)ボードが接続され、システムボード及びI/Oボードの各ボード間のデータ転送を調停するクロスバボード等のデータ転送回路及びデータ転送方法に関する。
 従来から、演算処理装置としてのCPU(Central Processing Unit)等の制御装置、I/Oポート、メモリ、システムコントローラを含むシステムボード、及び、外部記憶装置、I/Oポートを含むI/Oボードをクロスバボードで接続するような構成のコンピュータ装置が知られている。
 システムボード及びI/Oボードは、クロスバボードを介して他のシステムボード又はI/Oボードへデータを送信する。クロスバボードを介して複数のシステムボード及びI/Oボードが接続される構成の場合、各システムボード及びI/Oボードが送信するデータが経由するクロスバボードでは、優先制御によってデータ転送のリクエストのアービトレーション(調停)が行なわれる。
 クロスバボード内でデータの転送のアービトレーションを効率的に行い、データ転送効率を向上させるため、様々な従来技術が提供されてきた。例えば、従来技術として、コンピュータ装置のメモリアクセスに関し、メモリバンクビジー状態のメモリバンクに対するメモリバス獲得リクエストを対象から除外してアービトレーションを行うアービトレーション方法が提案されている。
 また、従来技術として、コンピュータ装置のメモリアクセスに関し、メモリバスの使用優先度の高い通信インターフェース装置は、優先度の低い通信インターフェース装置から送出されているメモリバス使用要求が待たされているとき、自装置からのバス使用要求の送出を抑止し、抑止回数が所定値以上になったとき抑止を解除するアービトレーション方法が提案されている。
 また、従来技術として、コンピュータ装置のメモリアクセスに関し、バス・エージェントがトランザクションを初めて実行し、中断されたのちに他のバス・エージェントがトランザクションを完了すると、トランザクションを完了できない状態が続くバス・エージェントにバス・アクセス権をトランザクションが終了するまで独占的に与えるアービトレーション方法が提案されている。
 また、従来技術として、クロスバボード内でデータの転送のアービトレーションを一段階ではなく二段階で行う事が提案されている。すなわち、データリクエスト元の各I/Oポート内でアービトレーションを一段階目のアービトレーションとして実行する、そして、送出権を獲得したデータリクエストをリクエスト先の各I/Oポートへ送信し、リクエスト先の各I/Oポートのそれぞれで複数のI/Oポートからのデータリクエストのアービトレーションを二段階目のアービトレーションとして実行する。このように、複数のリクエスト元からの複数のリクエスト先に対するデータリクエストを同時にアービトレーションすることによってデータ転送効率を向上させるアービトレーション方法が提案されている。
特開平11-167546号公報 特開平9-293050号公報 特開平11-143824号公報
 ところで、近年、I/Oポート毎のリクエストタイプの種類が増加してきている。このため、上記従来技術では、リクエスト先のI/Oポートが資源ビジー状態であるデータリクエストを一段階目のアービトレーションに参加させない様に制御したとしても、リクエスト先のI/Oポートが資源ビジー状態でない多くのデータリクエストが一段階目のアービトレーションの参加対象となり、バスが占有される。このため、リクエスト先のI/Oポートの資源ビジー状態が解消したタイミングに、二段階目のアービトレーションに参加できず、データリクエストの権利を獲得できないデータリクエストが存在する状態が続くというライブロック状態が発生する可能性があった。
 また、同一データリクエスト元のリクエストタイプ同士、又は、データリクエスト先のI/Oポート同士で相互依存関係があるにも関わらず、二段階目のアービタに資源ビジーにより出力不可能なリクエストが留まった場合を考える。この場合、特定のデータリクエスト間でデータのリクエストの順序の追い越しを行わなければならないとき、追い越しを行わなければならないデータリクエストが一段階目のアービトレーションに参加できないため、アービトレーションにおいてデータリクエストの権利を獲得できない状態が続き、デッドロック状態が発生する可能性があった。
 また、相互依存関係に関わらず、二段階目のアービタに資源ビジーにより出力不可能なリクエストが留まった場合を考える。この場合、データリクエスト元のI/Oポートは、出力したデータリクエストがデータリクエスト先のI/Oポートの資源を獲得するまで他の種類のデータリクエストを出力しない。このため、他の種類のデータリクエストのリクエスト先のI/Oポートが資源ビジーでない状態であってもデータリクエストの権利を獲得できない状態が続き、データ転送のスループットを低下させていた。
 開示の技術は、上記問題点(課題)を解消するためになされたものであって、データリクエストのライブロック状態、デッドロック状態、及び、データ転送のスループットの低下を回避するデータ転送回路及びデータ転送方法を提供することを目的とする。
 上述した問題を解決し、目的を達成するため、開示の技術は、制御回路及びデータ入出力回路が接続され、前記制御回路及び/又は前記データ入出力回路の間のデータ転送を行うデータ転送回路及び該当データ転送回路が行うデータ転送方法であって、データ転送を要求するデータリクエストに対応するデータを受信する受信側の前記制御回路及び/又は前記データ入出力回路の受信資源の使用状況を監視し、データリクエスト及び対応するデータの送信側の制御回路及び/又はデータ入出力回路から入力されたデータリクエストをデータリクエスト格納部に格納し、データリクエスト格納部に格納される前記データリクエストを出力するか否かを制御し、複数のデータリクエスト格納部から出力された複数のデータリクエストを受け付け、複数のデータリクエストから一つのデータリクエストを調停によって選択し、調停ステップによって選択されたデータリクエストのデータ転送を行い、受信資源の使用状況がビジー状態である場合、データリクエストの出力を抑止することを要件とする。
 開示の技術によれば、クロスバを介したデータ転送に必要な資源が定常的に枯渇している場合、資源枯渇状態解消時に優先すべきI/Oポート以外のI/Oポートからのデータリクエストがアービトレーションに参加することを抑止して、ライブロック状態が発生することを回避することが出来るという効果を奏する。
図1は、従来技術及び開示の技術に係るコンピュータ装置の構成の概略を示すブロック図である。 図2は、従来技術のクロスバ100の構成を示すブロック図である。 図3は、従来技術のアービトレーション処理手順を示すフローチャートである。 図4は、第一実施形態の一例に係るポートAリクエストキューの構成を示すブロック図である。 図5は、第一実施形態の一例に係るクロスバの構成を示すブロック図である。 図6は、第一実施形態の一例に係るアービトレーション処理手順を示すフローチャートである。 図7は、第二実施形態の一例に係るポートAアービタ部の構成を示すブロック図である。 図8は、第二実施形態の一例に係るクロスバの構成を示すブロック図である。 図9は、第二実施形態の一例に係るアービトレーション処理手順を示すフローチャートである。 図10は、第二実施形態の一例に係る資源解放待ちフラグ制御処理手順を示すフローチャートである。 図11は、第三実施形態の一例に係るポートAリクエストキューの構成を示すブロック図である。 図12は、第三実施形態の一例に係るポートXアービタ部の構成を示すブロック図である。 図13は、第三実施形態の一例に係るクロスバの構成を示すブロック図である。 図14は、第三実施形態の一例に係るアービトレーション処理手順を示すフローチャートである。 図15は、第三実施形態の一例に係る資源解放待ちフラグ制御処理手順を示すローチャートである。 図16は、第三実施形態の一例に係るライブロック防止回路制御処理手順を示すフローチャートである。
符号の説明
10 コンピュータ装置
100、200、300、400 クロスバ
105a、205a、305a、405a ポートAリクエストキュー
105a00、205a00、305a00、405a00 ポートAQ0
205a30、205a31、205a3n、305a30、405a30 リクエスタ資源ビジーフラグ制御部
105a1、205a1、305a1、405a1 ポートAローカルアービタ部
105a2、205a2、305a2、405a2 宛先判定部
101、201、301、401 アービタ部
101a、201a、301a、401a ポートX資源管理部
101a0、201a0、301a0、401a0 資源情報部(Q0用)
101a1、201a1、301a1、401a1 資源情報部(Q1用)
101an、201an、301an、401an 資源情報部(Qn用)
101b、201b、301b、401b ポートXアービタ部
101b0、201b0、301b0、401b0 ポートA資源チェック部
101b1、201b1、301b1、401b1 ポートB資源チェック部
101b2、201b2、301b2、401b2 ポートXポート間アービタ部
101b3、201b3、301b3、401b3 出力制御部
201b4、301b4、401b4 アービトレーション情報部
301b5、401b5 資源開放待ちフラグ格納部
405a40、405a41、405a4n ライブロック監視タイマ
405a50、405a51、405a5n 比較器
405a7 ライブロック監視閾値格納部
401b6 ライブロック防止回路有効化ビット格納部
500 システムボードA
700 I/OボードX
 以下に添付図面を参照し、開示の技術に係る実施形態の一例を詳細に説明する。従来技術及び開示の技術に係る情報処理装置としてのコンピュータ装置の構成の概略、従来技術のアービトレーション処理と問題点、従来技術を解決する第一実施形態の一例、第二実施形態の一例、及び、第三実施形態の一例の順序で説明を行う。なお、以下の説明で用いる「データ」は「パケット」であり、「データリクエスト」は、「リクエストパケット」である。以下においては、後述のポートA103から後述のポートX113へ後述のリクエストタイプQ0のデータリクエストを送信する場合を例として説明する。
[コンピュータ装置の構成の概略]
 図1は、従来技術及び開示の技術に係るコンピュータ装置の構成の概略を示すブロック図である。コンピュータ装置10は、クロスバボード(以下、「クロスバ」と略記する、データ転送回路に相当)100にシステムボードA500、システムボードB600、I/OボードX700、I/OボードY800が接続されている。
 なお、従来技術及び開示の技術に関し、システムボード及びI/Oボードは、クロスバに対する位置付けは同じである。また、従来技術及び開示の技術に関し、「資源」とは、後述のシステムボード及びI/Oボードの受信バッファのリクエストタイプ毎の記憶領域を指す。なお、受信バッファ、リクエストタイプについては後述する。
 処理部としてのシステムボードA500は、演算処理装置としてのCPU501及びCPU502、及び、メモリ503及びメモリ504がシステムコントローラ505に接続される。CPU501及びCPU502は、コンピュータ装置10における各種演算処理を行う演算装置である。メモリ503及びメモリ504は、CPU501及びCPU502が行った演算結果を一時記憶し、また、I/OボードX700及び/又はI/OボードY800から転送されるデータを記憶する記憶部である。
 システムコントローラ505は、システムボードA500全体の制御を司る制御回路である。特に、システムコントローラ505は、CPU501及びCPU502、又は、メモリ503及びメモリ504とクロスバ100との間で送受信される各種データリクエスト、各種データ等の送受信バッファを含む。システムコントローラ505は、CPU501及びCPU502、又は、メモリ503及びメモリ504からクロスバ100へ送信される各種データリクエスト、各種データ等の送信バッファ506と、クロスバ100から受信する各種データリクエスト、各種データ等の受信バッファ507とを含む。
 送信バッファ506は、CPU501又はCPU502から他のシステムボード若しくはI/Oボードへ出力される各種データリクエストを一時記憶するバッファである。送信バッファ506に一時記憶されるデータリクエストは、後述するクロスバ100のポートA103の入力ポート104へ送信される。ここで、データリクエストとは、データの送受信に関するリクエストである。データリクエストに対応して送受信される実データが存在する。
 受信バッファ507は、後述するクロスバ100から受信した各種リクエスト又はデータを一時記憶する。受信バッファ507に一時記憶される各種リクエスト、データは、CPU501及び/又はCPU502、メモリ503及び/メモリ504にそれぞれ出力される。
 なお、システムボードB600は、システムボードA500と同一の構成である。システムボードB600は、CPU601及びCPU602、メモリ603及びメモリ604、送信バッファ606及び受信バッファ607を含むシステムコントローラ605を有する。システムボードB600の各構成部の機能及び処理は、システムボードA500の各構成部と同様である。符号を除き名称が一致する機能部は、同一の機能を有し、同一の処理を行う。
 また、クロスバ100に接続されるシステムボードの数は、上記したシステムボードA500及びシステムボードB600の二つに限定されるものではない。また、各システムボードは、それぞれ二つのCPU及び二つのメモリを含むが、それぞれ「二つ」に限定されるものではなく、また、CPU及びメモリ以外の機能部を含んでもよい。
 クロスバ100は、アービタ部101、データクロスバ102、ポートA103及びポートB108、ポートX113及びポートY118を含む。アービタ部101は、ラウンドロビン、LRU(Least Recently Used)アルゴリズム等の優先制御に従ってポートA103、ポートB108、ポートX113、ポートY118から出力される各種リクエストをアービトレーションする。
 データクロスバ102は、クロスバ100内の各ポートから出力されるデータリクエストの内、アービタ部101によってアービトレーションに勝ったデータリクエストに対応するデータを宛先のポートへ出力する。ここで、「アービトレーションに勝つ」とは、アービタ部101におけるアービトレーションにおいてデータリクエストが実際のデータリクエストを行う権利を獲得することを意味する。ここで、アービトレーションに勝ったデータリクエストは、データクロスバから、宛先のポートへ出力されることになる。一方、「アービトレーションに負ける」とは、アービトレーションにおいてデータリクエストが実際のデータリクエストを行う権利を獲得出来なかったことを意味する。すなわち、アービトレーションに負けたデータリクエストは、データクロスバから、宛先のポートへは出力されない。
 ポートA103は、入力ポート104、ポートAリクエストキュー105a、ポートAデータ制御部106a、出力ポート107を含む。入力ポート104は、システムボードA505のシステムコントローラ505の送信バッファ506から受信したデータリクエストをポートAリクエストキュー105aへ、データをポートAデータ制御部106aへと振り分けて出力する。
 ポートAリクエストキュー105aは、入力ポート104から入力されるデータリクエストをアービタ部101へ出力する。ポートAデータ制御部106aは、入力ポート104からポートAリクエストキュー105aへ入力されるデータリクエストに対応するデータを一時記憶する。そして、ポートAデータ制御部106aは、対応するデータリクエストがアービトレーションに勝ったことをアービタ部101から通知されると、アービトレーションに勝ったデータリクエストに対応するデータをデータクロスバ102へ出力する。出力ポート107は、データクロスバから宛先のポートとして出力されるデータが入力される。
 なお、ポートB108は、システムボードB600に対応するポートである。ポートB108は、ポートAと同一の構成である。ポートB108は、入力ポート109、ポートBリクエストキュー105b、ポートBデータ制御部106b、出力ポート112を含む。符号を除き名称が一致する機能部は、ポートA103における機能部と同一の機能を有し、同一の処理を行う。
 また、ポートX113は、入力ポート114、リクエストキュー115、データ制御部、出力ポート117を含み、ポートY118は、入力ポート119、リクエストキュー120、データ制御部121、出力ポート122を含む。各機能部は、システムボードA500又はシステムボードB600の代わりにI/OボードX700又はI/OボードY800が接続される点のみが異なり、500ポートA103及びポートB108の対応する機能部と同一の機能を有し、同一の処理を行う。
 I/Oボード700は、カードスロット701及びカードスロット702、及び、ディスク記憶装置703及びディスク記憶装置704がI/Oコントローラ705に接続される構成である。カードスロット701及びカードスロット702は、コンピュータ装置10に外部記憶装置を接続する機能拡張装置としてのインターフェースである。ディスク記憶装置703及びディスク記憶装置704は、コンピュータ装置10で利用するデータを記憶する記憶装置である。
 I/Oコントローラ705は、I/OボードX700全体のデータ入出力の制御を司る。特に、I/Oコントローラ705は、カードスロット701若しくはカードスロット702に接続される外部記憶装置、又は、ディスク記憶装置703若しくはディスク記憶装置704とクロスバ100との間で送受信される各種データリクエスト、各種データ等の送受信バッファを含む。
 I/Oコントローラ705は、カードスロット701及びカードスロット702に接続される外部記憶装置、又は、ディスク記憶装置703及びディスク記憶装置704とクロスバ100との間で送受信される各種データリクエスト、各種データ等の送信バッファ706と、クロスバ100から受信する各種データリクエスト、各種データ等の受信バッファ707とを含む。
 送信バッファ706は、システムボードA500又はシステムボードB600からのデータリクエストに応じて送信されるデータを一時記憶するバッファである。送信バッファ706に一時記憶されるデータは、後述するクロスバ100のポートX113の入力ポート114へ送信される。
 受信バッファ707は、後述するクロスバ100から受信した各種データリクエストに対応するデータを一時記憶する。受信バッファ707に記憶される各種データは、カードスロット701及びカードスロット702に接続される外部記憶装置、又は、ディスク記憶装置703及びディスク記憶装置704にそれぞれ出力される。
 なお、I/OボードY800は、I/OボードX700と同一の構成である。I/OボードY800は、カードスロット801及びカードスロット802、ディスク記憶装置803及びディスク記憶装置804、送信バッファ806及び受信バッファ807を含むI/Oコントローラ805を有する。各構成部の機能及び処理は、I/OボードX700の各構成部と同様である。符号を除き名称が一致する機能部は、同一の機能を有し、同一の処理を行う。
 また、クロスバ100に接続されるI/Oボードの数は、上記したI/OボードX700及びI/OボードY800の二つに限定されるものではない。また、各I/Oボードは、それぞれ二つのカードスロット及び二つのディスク記憶装置を含むが、それぞれ「二つ」に限定されるものではなく、また、カードスロット及びディスク記憶装置以外の機能部を含んでもよい。
[従来技術のクロスバの詳細構成]
 図2は、従来技術のクロスバ100の構成を示すブロック図である。図2では、アービタ部101、データクロスバ102、ポートAリクエストキュー105a及びポートBリクエストキュー105b、ポートAデータ制御部106a及びポートBデータ制御部106bのみを示し、その他の構成の記載を省略している。
 アービタ部101は、ポートX資源管理部101a、ポートXアービタ部101b、ポートY資源管理部101c、ポートYアービタ部101dを含む。なお、アービタ部101は、ポートA資源管理部、ポートAアービタ部、ポートB資源管理部、ポートBアービタ部を含むが、説明を省略する。これは、ポートA103のポートAリクエストキュー105aからポートX113宛てにデータリクエストを送信する場合を例に説明するためである。
 ポートAリクエストキュー105a及びポートBリクエストキュー105bは、入力ポート104及び入力ポート109から入力されるデータを管理するキューであり、アービトレーションに必要な情報、例えば、データの宛先、データサイズを保持する。
 ポートAリクエストキュー105aは、種類毎にデータリクエストを受け付けるポートAQ0_105a00、ポートAQ1_105a01、・・・、ポートAQn_105a0n、ポートAローカルアービタ部105a1、宛先判定部105a2を含む。なお、Q0、Q1、・・・、Qnは、データリクエストの種類(以下、リクエストタイプと呼ぶ)を表す。
 ポートAローカルアービタ部105a1は、ポートAQ0_105a00、ポートAQ1_105a01、・・・、ポートAQn_105a0nから入力されるデータリクエストのアービトレーションを行う。そして、宛先判定部105a2は、アービトレーションに勝ったデータリクエストを宛先に応じてポートXアービタ部101b又はポートYアービタ部101dへ出力する。すなわち、ポートAローカルアービタ部105a1と、ポートXアービタ部101b又はポートYアービタ部101dとの二段階でアービトレーションを行う。
 なお、ポートBリクエストキュー105bは、ポートBQ0_105b00、ポートBQ1_105b01、・・・、ポートBQn_105b0n、ポートBローカルアービタ部105b1、宛先判定部105b2を含む。ポートBリクエストキュー105bの各構成部の機能及び処理は、ポートAリクエストキュー105aの各構成部と同様である。符号を除き名称が一致する機能部は、同一の機能を有し、同一の処理を行う。
 アービタ部101のポートX資源管理部101aは、資源情報部(Q0用)101a0、資源情報部(Q1用)101a1、・・・、資源情報部(Qn用)101anを含む。なお、資源情報部(Q0用)101a0、資源情報部(Q1用)101a1、・・・、資源情報部(Qn用)101anは、クロスバ100に接続されるI/OボードX700の受信バッファ707のリクエストデータの種類毎のキューQ0、キューQ1、・・・、キューQnの使用状況をそれぞれ取得及び管理する。
 なお、各資源情報部で管理される資源情報は、資源としての受信バッファ707の使用可能量を示す。データの出力時、受信バッファ707においてデータが一時記憶されると、使用可能量は減少し、データの一時記憶が解除されると、使用可能量は増加する。
 ポートXアービタ部101bは、ポートA資源チェック部101b0、ポートB資源チェック部101b1、ポートXポート間アービタ部101b2、出力制御部101b3、アービトレーション情報部101b4を含む。ポートA資源チェック部101b0は、ポートAリクエストキュー105aから入力されるデータリクエストのリクエストの種類に応じて資源情報部(Q0用)101a0、資源情報部(Q1用)101a1、・・・、資源情報部(Qn用)101anを参照する。
 また、ポートB資源チェック部101b1は、ポートBリクエストキュー105bから入力されるデータリクエストのリクエストの種類に応じて資源情報部(Q0用)101a0、資源情報部(Q1用)101a1、・・・、資源情報部(Qn用)101anを参照する。
 そして、ポートA資源チェック部101b0は、受信バッファ707においてデータリクエストに対応するキューがビジー状態でない場合、データリクエストをポートXポート間アービタ部101b2へ出力する。同様に、ポートB資源チェック部101b1は、受信バッファ707においてデータリクエストに対応するキューがビジー状態でない場合、データリクエストをポートXポート間アービタ部101b2へ出力する。
 そして、出力制御部101b3は、ポートXポート間アービタ部101b2においてアービトレーションに勝ったデータリクエストに対応するデータを出力する様、ポートAデータ制御部106a又はポートBデータ制御部106bに指示する。アービトレーション情報部101b4は、ポートXポート間アービタ部101b2においてアービトレーションの際に使用するポート間もしくはリクエストタイプ間の優先順位を示す情報を保持する。
 ポートAデータ制御部106aは、データバッファ106a1、リード制御部106a2を含む。また、ポートBデータ制御部106bは、データバッファ106b1、リード制御部106b2を含む。出力制御部101b3から指示を受けたポートAデータ制御部106aのリード制御部106a2、又は、ポートBデータ制御部106bのリード制御部106b2は、データバッファ106a1、データバッファ106b1に対してそれぞれ該当データを読み出す様に指示する。
 そして、データバッファ106a1、データバッファ106b1は、データクロスバ102のポートXデータセレクタ102a、ポートYデータセレクタ102bへそれぞれ該当データを出力する。
 アービタ部101のポートY資源管理部101cは、資源情報部(Q0用)101c0、資源情報部(Q1用)101c1、・・・、資源情報部(Qn用)101cnを含む。なお、資源情報部(Q0用)101c0、資源情報部(Q1用)101c1、・・・、資源情報部(Qn用)101cnは、資源情報部(Q0用)101a0、資源情報部(Q1用)101a1、・・・、資源情報部(Qn用)101anと同様に、クロスバ100に接続されるI/OボードY800の受信バッファ807のリクエストデータの種類毎のキューQ0、キューQ1、・・・、キューQnの使用状況をそれぞれ取得及び管理する。
 ポートYアービタ部101dは、ポートA資源チェック部101d0、ポートB資源チェック部101d1、ポートYポート間アービタ部101d2、出力制御部101d3を含む。ポートA資源チェック部101d0は、ポートAリクエストキュー105aから入力されるデータリクエストのリクエストの種類に応じて資源情報部(Q0用)101c0、資源情報部(Q1用)101c1、・・・、資源情報部(Qn用)101cnを参照する。
 また、ポートB資源チェック部101d1は、ポートBリクエストキュー105bから入力されるデータリクエストのリクエストの種類に応じて資源情報部(Q0用)101c0、資源情報部(Q1用)101c1、・・・、資源情報部(Qn用)101cnを参照する。
 そして、ポートA資源チェック部101d0は、受信バッファ807においてデータリクエストに対応するキューがビジー状態でない場合、データリクエストをポートYポート間アービタ部101d2へ出力する。同様に、ポートB資源チェック部101d1は、受信バッファ807においてデータリクエストに対応するキューがビジー状態でない場合、データリクエストをポートYポート間アービタ部101d2へ出力する。
 そして、出力制御部101d3は、ポートYポート間アービタ部101d2においてアービトレーションに勝ったデータリクエストに対応するデータを出力する様、ポートAデータ制御部106a又はポートBデータ制御部106bに指示する。
 そして、出力制御部101d3から指示を受けたポートAデータ制御部106aのリード制御部106a2、又は、ポートBデータ制御部106bのリード制御部106b2は、データバッファ106a1、データバッファ106b1に対してそれぞれ該当データを読み出す様に指示する。そして、データバッファ106a1、データバッファ106b1は、データクロスバ102のポートXデータセレクタ102a、ポートYデータセレクタ102bへそれぞれ該当データを出力する。
 [従来技術のアービトレーション処理と問題点]
 図3は、従来技術のアービトレーション処理手順を示すフローチャートである。以下では、システムボードA500からポートA103を介してポートXへリクエストタイプQ0のデータリクエストを送信する例を示す。なお、以下の第一実施形態の一例、第二実施形態の一例、第三実施形態の一例も同様である。
 先ず、ステップS101では、クロスバ100は、システムボードA500からリクエストタイプがQ0のデータリクエスト及びデータ(パケット)を受け付ける。具体的には、クロスバ100のポートAリクエストキュー105aのポートAQ0_105a00は、システムボードA500からのリクエストタイプQ0のデータリクエストを登録する。また、ポートAデータ制御部106aのデータバッファ106a1は、システムボードA500からのリクエストタイプQ0のデータリクエストに対応するデータ(パケット)を格納する。
 ステップS102では、ポートAQ0_105a00は、登録したリクエストタイプQ0のデータリクエストを、ポートAリクエストキュー105aの内部で行われるポートAローカルアービトレーションに参加させるため、ポートAローカルアービタ部105a1に入力する。データリクエストを入力されるポートAローカルアービタ部105a1は、ポートAリクエストキュー105aの内部でのローカルアービトレーションを行う。
 ステップS103では、ポートAローカルアービタ部105a1は、ステップS102で入力されるデータリクエストがローカルアービトレーションに勝ったか否かを判定する。勝ったと判定された場合(ステップS103肯定)、ステップS104へ移り、勝ったと判定されなかった場合(ステップS103否定)、ステップS102へ移る。
 ステップS104では、ポートAローカルアービタ部105a1は、ポートAデータ制御部のリード制御部106a2がビジー状態であるか否かを判定する。ビジー状態であると判定された場合(ステップS104肯定)、ステップS102へ移り、ビジー状態であると判定されなかった場合(ステップS104否定)、ステップS105へ移る。
 ステップS105では、ポートAローカルアービタ部105a1は、ローカルアービトレーションに勝ったデータリクエストを宛先判定部105a2から宛先ポートのアービタ部(ここでは、ポートXアービタ部101b)へ出力する。ポートAローカルアービタ部105a1は、ポートX宛である該当データリクエストをアービタ部101のポートXアービタ部101bのポートA資源チェック部101b0へ出力する。
 ステップS106では、アービタ部101のポートXアービタ部101bのポートA資源チェック部101b0は、ポートX資源管理部101aの資源情報部101a0を参照し、受信バッファ707のリクエストタイプQ0の資源がビジー状態であるか否かを判定する。ビジー状態であると判定された場合(ステップS106肯定)、ステップS102(または、ステップS106)へ移り、ビジー状態であると判定されなかった場合(ステップS106否定)、ステップS107へ移る。
 ステップS107では、ポートA資源チェック部101b0は、リクエストタイプQ0のデータリクエストを、ポートXアービタ部101b2で行われるポートXポート間アービトレーションに参加させるため、ポートXポート間アービタ部101b2に入力する。データリクエストが入力されるポートXポート間アービタ部101b2は、ポートXアービタ部101b2でのポートXポート間アービトレーションを行う。
 ステップS108では、ポートXポート間アービタ部101b2は、リクエストタイプQ0のデータリクエストがポートXポート間アービトレーションに勝ったか否かを判定する。勝ったと判定された場合(ステップS108肯定)、ステップS109へ移り、勝ったと判定されなかった場合(ステップS108否定)、ステップS106へ移る。
 ステップS109では、ポートXポート間アービタ部101b2は、ポートXポート間アービトレーションに勝ったポートAQ0_105a00に登録されているリクエストタイプQ0のデータリクエストのキューをクリアする。また、出力制御部101b3は、ポートXポート間アービトレーションに勝ったデータリクエストに対応するデータを出力する様、ポートAデータ制御部のリード制御部106a2に対して指示する。
 ステップS110では、リード制御部106a2は、出力制御部101b3からの指示に応じてポートX宛である該当データリクエストに対応するデータ(パケット)をデータバッファ106a1から読み出し、データクロスバ102のポートXデータセレクタ102aへ出力する。
 なお、上記ステップS101、ステップS105、ステップS106、ステップS107、ステップS109の各処理は、図2に各ステップ番号を付して示す各矢印で表される。
 ここで、上記従来技術のアービトレーション処理では、ステップS106において、アービタ部101のポートXアービタ部101bのポートA資源チェック部101b0は、ポートX資源管理部101aの資源情報部101a0を参照し、受信バッファ707のリクエストタイプQ0の資源がビジー状態である時、次の二通りの対応が考えられる。
 (1)データリクエストをキャンセルし、ポートAリクエストキュー105aにおけるローカルアービトレーションからやり直すこと(図2において(A)で指し示される波線矢印参照、図3においてステップ106肯定の場合、ステップS102へ移る)。(2)受信バッファ707の資源のビジー状態が解消されるまでデータリクエストをポートXアービタ部101bのポートA資源チェック部101b0に再投入し続けること(図2において(B)で指し示される波線矢印参照、図3においてステップ106肯定の場合、ステップS106へ移る)。
 しかし、上記(1)では、次の問題点があった。すなわち、(問題点1)定常的な資源ビジー状態が続くとライブロック状態になる可能性がある。具体的には、ポートX113のリクエストタイプQ0の資源情報が更新され、データ送信に必要な資源が確保されるタイミングで、ポートA103からの別のデータリクエスト(例えば、ポートY118宛のリクエストタイプQ1)が選択され、ポートB108からポートX113宛のリクエストタイプQ0のデータリクエストが選択される場合を考える。
 この場合、ポートX113のリクエストタイプQ0用の資源は、ポートB108によって使用され、ポートA103からポートX113宛のリクエストタイプQ0のデータリクエストは、再度資源ビジー状態に陥る。この状態が継続すると、資源は順次解放されるにも関わらず、例えばポートA103の様に一部のポートからのデータリクエストが定常的に選択されないライブロック状態となる。
 (問題点2)また、資源不足により受け付けられないデータリクエストの投入は、他の有効なデータリクエストの妨げとなる。具体的には、例えばローカルアービタは、ポートX113の資源情報を参照せずにデータリクエストを発行するため、ポートX113へ無駄なデータリクエストを出力してしまう可能性がある。このため、ポートAリクエストキュー205aは、資源不足ではない他のリクエストタイプのデータリクエストを投入する機会が減り、スループットが低下する可能性がある。
 また、上記(2)では、次の問題があった。すなわち、(問題点3)資源不足のデータリクエストがポートXアービタ部101bに留まるため、デッドロック又は大幅なスループットの低下が発生する可能性がある。
 例えば、ポートX113内のリクエストタイプQ0用の資源は、ポートX113内の別のリクエストタイプQ1~Qnのデータリクエスト、若しくはポートX113とは異なる出力ポート内のリクエストタイプQ0~Qnの何れかと相互依存関係を持つとする。特定のリクエストキュー間で追い越しを行わなければデッドロックが発生することがプロトコル上明白であるとき、アービタ部101に特定のデータリクエストが留まり、ポートAローカルアービタ部105a1で追い越しが必要な別のデータリクエストを投入できなくなることにより、デッドロック発生の可能性がより高まる。アービタ部101に特定のデータリクエストが留まらなければ、ライブロック発生の可能性の問題がある。
 また、上記リクエストタイプの相互依存関係の有無に関わらず、ポートX113のリクエストタイプQ0用の資源が解放されるまでの間、ポートA103から他のデータリクエストタイプQ1~Qnのリクエストデータを出力する機会を逃す可能性があり、スループット低下の要因となる。開示の技術は、上記(問題点1)~(問題点3)を解消するためになされた。
[第一実施形態の一例]
 以下に図4~図6を参照して、開示の技術の第一実施形態の一例を説明する。図4及び図5のブロック図で示す各機能部は、符号の違いを除き名称が一致するものは同一の処理機能を有する。第一実施形態の一例に係るクロスバ200は、ポートAリクエストキュー105a及びポートBリクエストキュー105bの代わりにポートAリクエストキュー205a及びポートBリクエストキュー205bを備える。詳細には、例えば、ポートAリクエストキュー105aに代えて、ポートAリクエストキュー205aを備えることを特徴とする。その他の各リクエストタイプのリクエストキューも同様である。
 図4に示す様に、例えば、ポートAリクエストキュー205aは、リクエストタイプQ0~Qn毎のポートAQ0_205a00~ポートAQn_205a0nにそれぞれリクエスタ資源ビジーフラグ制御部205a30~リクエスタ資源ビジーフラグ制御部205a3nが接続される構成である。その他の入力ポートも同様である。
 さらに、図5を参照すると、ポートXアービタ部201bのポートA資源チェック部201b0は、ポートX資源管理部201aの資源情報部201a0を参照した結果、ポートAQ0_205a00からのデータリクエストが資源ビジーのためにポートXポート間アービタ部201b2へ出力可能でないと判断した場合、ポートAQ0_205a00のリクエスタ資源ビジーフラグ制御部205a30に対してビジーフラグをオンするように指示する。
 ポートAQ0_205a00は、ビジーフラグがオンである限りデータリクエストを出力することを抑止する。なお、ビジーフラグがオフである場合、ポートAQ0_205a00は、データリクエストを出力することを抑止しない。
[第一実施形態の一例に係るアービトレーション処理]
 図6は、第一実施形態の一例に係るアービトレーション処理手順を示すフローチャートである。図6のステップS201~ステップS210は、図3に示した従来技術のアービトレーション処理手順と同一である。異なる点は、ステップS206の分岐処理である。
 ステップS206で、アービタ部201のポートXアービタ部201bのポートA資源チェック部201b0によって、ポートX資源管理部201aの資源情報部201a0を参照し、受信バッファ707のリクエストタイプQ0の資源がビジー状態であると判定された場合(ステップS206肯定)、ステップS211へ移る。
 ステップS211では、ポートA資源チェック部201b0は、ポートAリクエストキュー205aに対してキャンセル通知を行う。ステップS212では、リクエスタ資源ビジーフラグ制御部205a30は、キャンセル通知に応じて、リクエスタ資源ビジーフラグをセットする。
 ステップS213では、ポートX資源管理部201aの資源情報部201a0は、資源ビジーが解消されたか否かを判定する。解消されたと判定された場合(ステップS213肯定)、ステップS214へ移り、解消されたと判定されなかった場合(ステップS213否定)、ステップS213へ移る。ステップS214では、リクエスタ資源ビジーフラグ制御部205a30は、ポートX資源管理部201aの資源情報部201a0から資源ビジーが解除されたことの通知を受け、リクエスタ資源ビジーフラグをリセット(オフに)する。この処理が終了すると、ステップS202へ移る。
 上記第一実施形態の一例のリクエスタ資源ビジーフラグ制御によって、リクエストキュー205a00は、リクエストタイプ毎の資源のビジー状態を知ることができ、ポート間アービトレーションで負ける可能性が高いデータリクエストの出力を抑制するので、上記(問題点2)を解決することができる。
[第二実施形態の一例]
 以下に図7~図10を参照して、開示の技術の第二実施形態の一例を説明する。図7及び図8のブロック図で示す各機能部は、符号の違いを除き名称が一致するものは同一の処理機能を有する。第二実施形態の一例に係るクロスバ300は、第一実施形態の一例に係るクロスバ200の構成に加え、アービタ部301のポートXアービタ部301bが資源解放待ちフラグ格納部301b5をさらに備える。
 資源解放待ちフラグ格納部301b5は、図7及び図8に示す様に、リクエストタイプ毎、入力ポート毎に資源解放待ちフラグを保持する。資源解放待ちフラグ格納部301b5は、出力ポート内の資源チェックにおいて、資源不足を検出した場合、資源解放待ちフラグをセットする(オンにする)。
 リクエストタイプの何れかの入力ポートの資源開放待ちフラグがセットされている場合、資源開放待ちフラグがセットされていない他の入力ポートからのデータリクエストは、資源ビジー状態でなくとも資源ビジー状態とする。これにより、先行する資源開放待ちの入力ポートよりも先に新規のデータリクエストがアービトレーションに勝つことを防止する。すなわち、資源開放待ちの順序を維持する。
 ポートA資源チェック部301b0は、対応するリクエストタイプの資源不足を検出した場合、データリクエストをキャンセルする。また、ポートA資源チェック部301b0は、対応するリクエストタイプの資源不足を検出しなかった場合、データリクエストをポートXポート間アービタ部301b2に入力する。この様に、資源不足でない場合、データリクエストをアービタ部301に留まらせることで、再度ローカルアービタからやり直す必要がなくなり、出力できる可能性が高いデータリクエストを効率よくポート間アービトレーションに参加させることが出来る。
 ポートX資源管理部の資源情報部301a0は、資源情報が更新され、資源不足が解消したことを認識すると、資源解放待ちフラグ格納部301b5の情報、およびアービトレーション情報部301b4に保持しているアービトレーション情報に基づいて最も優先度が高いデータリクエストを保持する入力ポートの該当するリクエストタイプのリクエスタ資源ビジーフラグをリセットする(オフにする)。
 資源解放待ちフラグ格納部301b5に保持される資源開放待ちフラグは、リクエスタ資源ビジーフラグがリセットされることによって、再度ポートAローカルアービタ部305a1を通ってポートXポート間アービタ部301b2で選択される時点でリセットされる。資源開放待ちフラグをリセットする場合、資源が残っており、他の資源開放待ちフラグが残っている場合、次に優先度が高い入力ポートの該当するリクエストタイプのリクエスタ資源ビジーフラグをリセットする。
[第二実施形態の一例に係るアービトレーション処理]
 図9は、第二実施形態の一例に係るアービトレーション処理手順を示すフローチャートである。ステップS301~ステップS306では、上記ステップS101~ステップS106と同一の処理を行う。ステップS306肯定の場合、ステップS315へ移り、ステップS306否定の場合、ステップS307へ移る。
 ステップS307では、ポートA資源チェック部301b0は、資源開放待ちフラグ格納部301b5を参照して、資源開放待ちフラグが全てオフ(“0”)か否かを判定する。資源開放待ちフラグが全てオフ(“0”)であると判定されなかった場合(ステップS307肯定)、ステップS308へ移り、資源開放待ちフラグが全てオフ(“0”)であると判定された場合(ステップS307否定)、ステップS309へ移る。
 ステップS308では、ポートA資源チェック部301b0は、対象ポートの資源開放待ちフラグがオン(“1”)であるか否かを判定する。対象ポートの資源開放待ちフラグがオン(“1”)であると判定された場合(ステップS308肯定)、ステップS309へ移り、対象ポートの資源開放待ちフラグがオン(“1”)であると判定されなかった場合(ステップS308否定)、ステップS315へ移る。
 ステップS309、ステップS310では、上記ステップS107、ステップS108とそれぞれ同様の処理を行う。ステップS311では、ポートXポート間アービタ部301b2は、アービトレーションに勝ったポートの該当するリクエストタイプの資源開放待ちフラグがオン(“1”)であるか否かを判定する。アービトレーションに勝ったポートの該当するリクエストタイプの資源開放待ちフラグがオン(“1”)であると判定された場合(ステップS311肯定)、ステップS312へ移り、アービトレーションに勝ったポートの該当するリクエストタイプの資源開放待ちフラグがオン(“1”)であると判定されなかった場合(ステップS311否定)、ステップS313へ移る。
 ステップS312では、ポートXポート間アービタ部301b2は、対象ポートの該当するリクエストタイプの資源開放待ちフラグをリセットする様、資源開放待ちフラグ格納部301b5に対して指示する。この指示に応じて、資源開放待ちフラグ格納部301b5は、対象ポートの資源開放待ちフラグをリセットする。そして、ステップS313、ステップS314では、上記ステップS109、ステップS110と同様の処理をそれぞれ行う。
 一方、ステップS315では、ポートA資源チェック部301b0は、データリクエストのキャンセルをポートAリクエストキュー305aへ通知し、対象ポートの資源開放待ちフラグをセットする様、資源開放待ちフラグ格納部301b5に対して指示する。この指示に応じて、資源開放待ちフラグ格納部301b5は、対象ポートの資源開放待ちフラグをセットする。ステップS316では、リクエスタ資源ビジーフラグ制御部305a30は、キャンセル通知に応じてリクエスタ資源ビジーフラグをセットする。ステップS317では、リクエスタ資源ビジーフラグ制御部305a30は、ポートX資源管理部の資源情報部301a0の情報が更新される事によるリセット指示を待つ。ステップS318では、上記ステップS214と同様の処理を行う。
[第二実施形態の一例に係る資源解放待ちフラグ制御処理]
 図10は、第二実施形態の一例に係る資源解放待ちフラグ制御処理手順を示すフローチャートである。先ず、ステップS321では、資源開放待ちフラグ格納部301b5は何れかの資源チェック部からのフラグのセット指示を待つ。何れの資源解放待ちフラグに対してもセットが指示されなかった場合(ステップS321否定)、ステップS321へ移る。何れかの資源解放待ちフラグに対してセットが指示された場合(ステップS321肯定)、ステップ322へ移る。
 ステップS322では、ポートX資源管理部の資源情報部301a0は、資源ビジーが解消されたか否かを判定する。資源ビジーが解消されたと判定された場合(ステップS322肯定)、ステップS323へ移り、資源ビジーが解消されたと判定されなかった場合(ステップS322否定)、ステップS322へ移る。
 ステップS323では、ポートX資源管理部の資源情報部301a0は、データリクエストの種類及び出力ポートのアービトレーション情報部301b4と資源解放待ちフラグ格納部301b5の情報に応じてリクエスタ資源ビジーフラグのリセット対象のデータリクエストを選択する。ステップS324では、ポートX資源管理部の資源情報部301a0は、対象ポートのリクエスタ資源ビジーフラグ制御部305a30に対してリクエスタ資源ビジーフラグのリセットを指示する。ステップS324を受け、上記ステップ318が実行される。
 ステップS325では、ポートX資源管理部の資源情報部301a0は、ステップS312の対象ポート資源解放フラグのリセット指示を待つ。ステップS326では、上記ステップS312の指示を受け、資源開放待ちフラグ格納部301b5の該当資源解放待ちフラグをリセットする。
 ステップS327では、ポートX資源管理部の資源情報部301a0は、資源開放待ちフラグ格納部301b5の全ての資源解放待ちフラグがオフ(“0”)であるか否かを判定する。全ての資源解放待ちフラグがオフ(“0”)であると判定された場合(ステップS327肯定)、ステップS321へ処理を移し、全ての資源解放待ちフラグがオフ(“0”)であると判定されなかった場合(ステップS327否定)、ステップS322へ処理を移す。
 上記第二実施形態の一例の資源開放待ちフラグ制御によって、資源開放待ちの入力ポートに対して資源が確保できていることが保証されているタイミングでアービトレーション情報部301b4と資源解放待ちフラグ格納部301b5の情報を用いて優先すべきポートに対して再度データリクエストをポート間アービトレーションに参加させる事が可能になり、上記(問題点1)を解決することができる。
[第三実施形態の一例]
 以下に図11~図16を参照して、開示の技術の第三実施形態の一例を説明する。図11~図13のブロック図で示す各機能部は、符号の違いを除き名称が一致するものは同一の処理機能を有する。第三実施形態の一例に係るクロスバ400は、第二実施形態の一例に係るクロスバ300の構成に加え、リクエストタイプ毎のリクエストキュー毎にライブロック監視タイマを備え、ライブロック監視タイマの計数値がライブロック監視閾値を超えた場合に、ライブロック防止回路を起動させる構成となっている。
[ライブロック監視タイマ]
 図11及び図13に示す様に、ポートAリクエストキュー405aのポートAQ0_405a00には、ライブロック監視タイマ405a40、比較器405a50、宛先判定部405a60がさらに備えられる。同様に、ポートAQ0_405a01には、ライブロック監視タイマ405a41、比較器405a51、宛先判定部405a61がさらに備えられる。同様に、ポートAQ0_405a0nには、ライブロック監視タイマ405a4n、比較器405a5n、宛先判定部405a6nがさらに備えられる。また、ポートAリクエストキュー405aには、ライブロック監視閾値格納部405a7が備えられ、比較器405a50、比較器405a51、比較器405a5nに接続されている。
 ライブロック監視タイマについて、図11及び図13に示す様に、ポートAQ0_405a00を例に説明する。ライブロック監視タイマ405a40は、資源チェック部401b0が資源ビジーによってリクエストをキャンセルすると計時を開始し、計時結果を比較器405a50に入力する。比較器405a50は、ライブロック監視閾値格納部405a7に格納されている時間の所定閾値と、入力される計時結果とを常に比較する。そして、計時結果が時間の所定閾値を越えた場合、宛先判定部405a60にポートAQ0_405a00から出力されるリクエストタイプQ0のデータリクエストの宛先判定を行い、宛先の出力ポートにリクエストタイプQ0のデータリクエストのライブロック防止機能を起動するよう指示する。
 なお、ライブロック監視タイマ405a40のタイマリセットのタイミングは、ポートXポート間アービタ部401b2で対象となるデータリクエストが選択されるときである。
[ライブロック防止回路有効化ビット格納部]
 図12及び図13に示す様に、ポートXアービタ部401bは、ライブロック防止回路有効化ビット格納部401b6をさらに備える。ポートXアービタ部401bのライブロック防止回路有効化ビット格納部401b6は、リクエストタイプ毎にライブロック防止回路を有効化するライブロック防止回路有効化ビットを格納する。ライブロック防止回路有効化ビットは、ポートAリクエストキューの宛先判定部405a60から出力ポートを判定して出力される信号に基づきビット(“1”)がセットされる。
 ライブロック防止回路有効化ビットがセットされるまで、資源開放待ちフラグがセットされていない入力ポートからのデータリクエストについては資源ビジーとして取り扱わない。そして、資源ビジーの解消を認識すると、対応する入力ポートのリクエスタ資源ビジーフラグと資源開放待ちフラグを全てリセットする。また、ライブロック防止回路有効化ビットは、ライブロック監視タイマによってライブロック状態を検出したリクエストがポートXポート間アービタ部401b2で選択される事によってライブロック監視タイマがリセットされ、比較器405a50で閾値超えを検出しなくなるとリセットされる。
[第三実施形態の一例に係るアービトレーション処理]
 図14は、第三実施形態の一例に係るアービトレーション処理手順を示すフローチャートである。図14のステップS401~ステップS406は、図9に示した第二実施形態の一例のアービトレーション処理手順のステップS301~ステップS306と同一である。
 ステップS407では、ポートA資源チェック部401b0は、ライブロック防止回路が有効かつ資源開放待ちフラグが全てオフ(“0”)か否かを判定する。ライブロック防止回路が有効かつ資源開放待ちフラグが全てオフ(“0”)でないと判定された場合(ステップS407肯定)、ステップS408へ移り、ライブロック防止回路有効かつ資源開放待ちフラグが全てオフ(“0”)でないと判定されなかった場合(ステップS407否定)、ステップS409へ移る。
 図14のステップS408、ステップS409及びステップS410は、図9に示した第二実施形態の一例のアービトレーション処理手順のステップS308、ステップS309及びステップS310と同一である。ステップS410の判定が肯定の場合、ステップS411へ移り、ステップS410の判定が否定の場合、ステップS406へ移る。
 ステップS411では、ポートXポート間アービタ部401b2は、ライブロック防止回路有効かつアービトレーションに勝ったポートの資源解放待ちフラグがオン(“1”)であるか否かを判定する。ライブロック防止回路有効かつアービトレーションに勝ったポートの資源解放待ちフラグがオン(“1”)であると判定された場合(ステップS411肯定)、ステップS412へ移り、ライブロック防止回路有効かつアービトレーションに勝ったポートの資源解放待ちフラグがオン(“1”)であると判定されなかった場合(ステップS411否定)、ステップS413へ移る。図14のステップS412~ステップS414は、図9に示した第二実施形態の一例のアービトレーション処理手順のステップS312~ステップS314と同一である。
 一方、図14のステップS415は、図9に示した第二実施形態の一例のアービトレーション処理手順のステップS315と同一である。ステップS416では、ポートA資源チェック部401b0は、ライブロック監視タイマの計時の開始を指示する。図14のステップS417~ステップS419は、図9に示した第二実施形態の一例のアービトレーション処理手順のステップS316~ステップS318とそれぞれ同一である。ステップS419が終了すると、ステップS401へ移る。
[第三実施形態の一例に係る資源解放待ちフラグ制御処理]
 図15は、第三実施形態の一例に係る資源解放待ちフラグ制御処理手順を示すフローチャートである。図15のステップS421、ステップS422は、図10に示した第二実施形態の一例の資源解放待ちフラグ制御処理手順のステップS321、ステップS322とそれぞれ同一である。
 ステップS423では、ポートX資源管理部の資源情報部401a0は、ライブロック防止回路有効化ビット格納部401b6を参照し、ライブロック防止回路有効化ビットがセットされ、ライブロック防止回路が有効となっているか否かを判定する。ライブロック防止回路が有効となっていると判定された場合(ステップS423肯定)、ステップS424へ移り、ライブロック防止回路が有効となっていると判定されなかった場合(ステップS423否定)、ステップS429へ移る。
 図15のステップS424~ステップS428は、図10に示した第二実施形態の一例の資源解放待ちフラグ制御処理手順のステップS323~ステップS327とそれぞれ同一である。
 一方、ステップS429は、ポートX資源管理部の資源情報部401a0は、全ポートのリクエスタ資源ビジーフラグのリセットを指示する。ステップS430では、ポートX資源管理部の資源情報部401a0は、全ポートの資源解放待ちフラグのリセットを指示する。この処理が終了すると、ステップS421へ処理を移す。
[第三実施形態の一例に係るライブロック防止回路制御処理]
 図16は、第三実施形態の一例に係るライブロック防止回路制御処理手順を示すフローチャートである。ステップS431では、ライブロック監視タイマ405a40は、S416によって監視タイマが起動されるのを待つ。ライブロック監視タイマ405a40が起動された場合(ステップS431肯定)、ステップS432へ移り、ライブロック監視タイマ405a40が起動されなかった場合(ステップS431否定)、ステップS431へ移る。
 ステップS432では、ライブロック監視タイマ405a40は、監視対象であるデータリクエストがポートXポート間アービタ部401b2によって選択されたか否かを判定する。監視対象であるデータリクエストがポートXポート間アービタ部401b2によって選択されたと判定された場合(ステップS432肯定)、ステップS437へ移り、監視対象であるデータリクエストがポートXポート間アービタ部401b2によって選択されたと判定されなかった場合(ステップS432否定)、ステップS433へ移る。
 ステップS433では、比較器405a50は、ライブロック監視タイマ450a40が計時する値がライブロック監視閾値格納部405a7に格納されるライブロック監視閾値を超えたか否かを判定する。ライブロック監視閾値を超えたと判定された場合(ステップS433肯定)、ステップS434へ移り、ライブロック監視閾値を超えたと判定されなかった場合(ステップS433否定)、ステップS435へ移る。
 ステップS434では、ライブロック監視タイマ405a40は、宛先判定部405a60を通して、ライブロック防止回路有効化ビット格納部401b6のリクエストタイプ毎のライブロック防止回路有効化ビットをセットし、ライブロック防止回路を有効化する。一方、ステップS435では、ライブロック監視タイマ405a40が計時する値に所定値(例えば、1)を加算する。この処理が終了すると、ステップS432へ移る。
 ステップS436では、ライブロック監視タイマ405a40は、ライブロック防止回路有効化後に、監視対象であるデータリクエストがポートXポート間アービタ部401b2によって選択されたか否かを判定する。監視対象であるデータリクエストがポートXポート間アービタ部401b2によって選択されたと判定された場合(ステップS436肯定)、ステップS437へ移り、監視対象であるデータリクエストがポートXポート間アービタ部401b2によって選択されたと判定されなかった場合(ステップS436否定)、ステップS436へ移る。
 ステップS437では、ポートXポート間アービタ部401b2で選択されたリクエストに対応する、ライブロック監視タイマ405a40を初期化(リセット)する。ライブロック監視タイマ405a40が初期化される事で比較器405a50は閾値超えを検出しなくなり、ライブロック防止回路有効化ビット格納部401b6のリクエストタイプ毎のライブロック防止回路有効化ビットがリセットされ、ライブロック防止回路を無効化する。この処理が終了すると、ステップS431へ移る。
 第三実施形態の一例に係る資源解放待ちフラグ制御処理、及び、第三実施形態の一例に係るライブロック防止回路制御処理によれば、リクエスタ資源ビジーフラグ405a30、資源解放待ちフラグ格納部401b5、及び、これらを制御するポートA資源チェック部401b0を含むライブロック防止回路の有効化をライブロック監視タイマの計時時間がライブロック監視閾値を超えるまでの短時間に発生する資源ビジー時に抑止する。そして、ライブロックの危険性がない状態で資源ビジーを検出した場合、ライブロック防止回路の動作を抑止することによって、クロスバ400内でのデータ転送のスループットの低下を抑制することができる。
 以上、本発明の実施例を説明したが、本発明は、これに限られるものではなく、請求の範囲に記載した技術的思想の範囲内で、更に種々の異なる実施例で実施されてもよいものである。また、実施例に記載した効果は、これに限定されるものではない。
 また、上記実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記実施例で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
 また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。

Claims (12)

  1.  制御回路及びデータ入出力回路が接続され、前記制御回路及び/又は前記データ入出力回路の間のデータ転送を行うデータ転送回路であって、
     前記データ転送を要求するデータリクエストに対応するデータを受信する受信側の前記制御回路及び/又は前記データ入出力回路の受信資源の使用状況を監視する受信資源使用状況監視部と、
     前記データリクエスト及び対応するデータの送信側の前記制御回路及び/又は前記データ入出力回路から入力された前記データリクエストを格納するデータリクエスト格納部と、
     前記データリクエスト格納部に格納される前記データリクエストを出力するか否かを制御する出力制御部と、
     複数の前記データリクエスト格納部から出力された複数のデータリクエストを受信し、前記複数のデータリクエストから一つのデータリクエストを調停によって選択する調停部と、
     前記調停部によって選択されたデータリクエストのデータ転送を行うデータ転送部と
     を備え、
     前記出力制御部は、前記受信資源使用状況監視部によって監視される前記受信資源の使用状況がビジー状態である場合、前記データリクエストの出力を抑止する
     ことを特徴とするデータ転送回路。
  2.  前記出力制御部は、前記受信資源使用状況監視部によって監視される前記受信資源の使用状況のビジー状態が解消された場合、前記データリクエストの出力の抑止を解除する
     ことを特徴とする請求項1記載のデータ転送回路。
  3.  前記調停部は、
     送信側の前記制御回路又は前記データ入出力回路毎に前記複数のデータリクエストから一つのデータリクエストを調停によって選択する第一の調停部と、
     受信側の前記制御回路又は前記データ入出力回路毎に前記複数のデータリクエストから一つのデータリクエストを調停によって選択する第二の調停部と
     を含むことを特徴とする請求項1又は2記載のデータ転送回路。
  4.  送信側の前記制御回路及び前記データ入出力回路毎、及び、前記データリクエストのタイプ毎に前記受信資源の使用状況のビジー状態の解消待ち情報を記憶するビジー状態解消待ち情報記憶部と、
     送信側の何れかの前記制御回路及び前記データ入出力回路の前記ビジー状態解消待ち情報が前記ビジー状態解消待ち情報記憶部に記憶されている場合、全ての送信側の前記制御回路及び前記データ入出力回路の該当するデータリクエストと同一タイプのデータリクエストに対して前記受信資源の使用状況をビジー状態とするビジー状態解消待ち制御部と
     を備えたことを特徴とする請求項3記載のデータ転送回路。
  5.  前記ビジー状態解消待ち制御部は、前記第二の調停部による前記データリクエストの調停の際に前記受信資源使用状況監視部によって前記受信資源のビジー状態が検出された場合に前記ビジー状態解消待ち情報をセットし、前記第二の調停部によって前記データリクエストが選択された場合に前記ビジー状態解消待ち情報をリセットする
     ことを特徴とする請求項4記載のデータ転送回路。
  6.  送信側の前記制御回路及び前記データ入出力回路毎、及び、前記データリクエストのタイプ毎に前記受信資源使用状況監視部が監視する前記受信資源の使用状況がビジー状態であるため、前記第二の調停部へのデータリクエストの投入が抑止される際に計時を開始し、前記第二の調停部によって選択された際に計時を終了する計時部と、
     前記計時部によって計時される時間が所定閾値を上回ったとき、前記ビジー状態解消待ち制御部の機能を有効化する機能有効化部と
     を備えたことを特徴とする請求項5記載のデータ転送回路。
  7.  制御回路及びデータ入出力回路が接続され、前記制御回路及び/又は前記データ入出力回路の間のデータ転送を行うデータ転送回路が行うデータ転送方法であって、
     前記データ転送を要求するデータリクエストに対応するデータを受信する受信側の前記制御回路及び/又は前記データ入出力回路の受信資源の使用状況を監視する受信資源使用状況監視ステップと、
     前記データリクエスト及び対応するデータの送信側の前記制御回路及び/又は前記データ入出力回路から入力された前記データリクエストをデータリクエスト格納部に格納するデータリクエスト格納ステップと、
     前記データリクエスト格納部に格納される前記データリクエストを出力するか否かを制御する出力制御ステップと、
     複数の前記データリクエスト格納部から出力された複数のデータリクエストを受信し、前記複数のデータリクエストから一つのデータリクエストを調停によって選択する調停ステップと、
     前記調停ステップによって選択されたデータリクエストのデータ転送を行うデータ転送ステップと
     を含み、
     前記出力制御ステップは、前記受信資源使用状況監視ステップによって監視される前記受信資源の使用状況がビジー状態である場合、前記データリクエストの出力を抑止する
     ことを特徴とするデータ転送方法。
  8.  前記出力制御ステップは、前記受信資源使用状況監視ステップによって監視される前記受信資源の使用状況のビジー状態が解消された場合、前記データリクエストの出力の抑止を解除する
     ことを特徴とする請求項7記載のデータ転送方法。
  9.  前記調停ステップは、
     送信側の前記制御回路又は前記データ入出力回路毎に前記複数のデータリクエストから一つのデータリクエストを調停によって選択する第一の調停ステップと、
     受信側の前記制御回路又は前記データ入出力回路毎に前記複数のデータリクエストから一つのデータリクエストを調停によって選択する第二の調停ステップと
     を含むことを特徴とする請求項7又は8記載のデータ転送方法。
  10.  送信側の前記制御回路及び前記データ入出力回路毎、及び、前記データリクエストのタイプ毎に前記受信資源の使用状況のビジー状態の解消待ち情報をビジー状態解消待ち情報記憶部に記憶するビジー状態解消待ち情報記憶ステップと、
     送信側の何れかの前記制御回路及び前記データ入出力回路の前記ビジー状態解消待ち情報が前記ビジー状態解消待ち情報記憶部に記憶されている場合、全ての送信側の前記制御回路及び前記データ入出力回路の該当するデータリクエストと同一タイプのデータリクエストに対して前記受信資源の使用状況をビジー状態とするビジー状態解消待ち制御ステップと
     を含むことを特徴とする請求項9記載のデータ転送方法。
  11.  前記ビジー状態解消待ち制御ステップは、前記第二の調停ステップによる前記データリクエストの調停の際に前記受信資源使用状況監視ステップによって前記受信資源のビジー状態が検出された場合に前記ビジー状態解消待ち情報をセットし、前記第二の調停ステップによって前記データリクエストが選択された場合に前記ビジー状態解消待ち情報をリセットする
     ことを特徴とする請求項10記載のデータ転送方法。
  12.  送信側の前記制御回路及び前記データ入出力回路毎、及び、前記データリクエストのタイプ毎に前記受信資源使用状況監視ステップによって監視される前記受信資源の使用状況がビジー状態であるため、前記第二の調停ステップへのデータリクエストの投入が抑止される際に計時を開始し、前記第二の調停ステップによって選択された際に計時を終了する計時ステップと、
     前記計時ステップによって計時される時間が所定閾値を上回ったとき、前記ビジー状態解消待ち制御ステップの機能を有効化する機能有効化ステップと
     を含むことを特徴とする請求項11記載のデータ転送方法。
PCT/JP2009/056742 2009-03-31 2009-03-31 データ転送回路及びデータ転送方法 WO2010113291A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2011506910A JP5035469B2 (ja) 2009-03-31 2009-03-31 データ転送回路及びデータ転送方法
EP09842645.5A EP2416253B1 (en) 2009-03-31 2009-03-31 Data transmission circuit and data transmission method
PCT/JP2009/056742 WO2010113291A1 (ja) 2009-03-31 2009-03-31 データ転送回路及びデータ転送方法
US13/137,983 US8819323B2 (en) 2009-03-31 2011-09-22 Data transfer circuit and data transfer method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/056742 WO2010113291A1 (ja) 2009-03-31 2009-03-31 データ転送回路及びデータ転送方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/137,983 Continuation US8819323B2 (en) 2009-03-31 2011-09-22 Data transfer circuit and data transfer method

Publications (1)

Publication Number Publication Date
WO2010113291A1 true WO2010113291A1 (ja) 2010-10-07

Family

ID=42827623

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/056742 WO2010113291A1 (ja) 2009-03-31 2009-03-31 データ転送回路及びデータ転送方法

Country Status (4)

Country Link
US (1) US8819323B2 (ja)
EP (1) EP2416253B1 (ja)
JP (1) JP5035469B2 (ja)
WO (1) WO2010113291A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10270010B2 (en) * 2014-01-28 2019-04-23 Kaneka Corporation Substrate with transparent electrode and method for producing same
US9875211B2 (en) * 2015-06-04 2018-01-23 Synaptics Incorporated Signal conditioner for high-speed data communications
US10055368B2 (en) * 2016-02-26 2018-08-21 Sandisk Technologies Llc Mobile device and method for synchronizing use of the mobile device's communications port among a plurality of applications
JP7401050B2 (ja) * 2018-09-18 2023-12-19 キヤノン株式会社 バス制御回路

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0916542A (ja) * 1995-04-20 1997-01-17 Sun Microsyst Inc パケット交換コンピュータ・システムにおける割込み通信方法および装置
JPH09293050A (ja) 1996-04-25 1997-11-11 Nec Eng Ltd 情報処理システム
JPH11143824A (ja) 1997-11-11 1999-05-28 Nec Corp バス・アービトレーション方式
JPH11167546A (ja) 1997-12-04 1999-06-22 Nec Corp バス制御方式およびこのバス制御方式を備えたマルチプ ロセッサシステム
JPH11191076A (ja) * 1997-12-26 1999-07-13 Fujitsu Ltd 情報処理装置
JP2002123371A (ja) * 2000-10-13 2002-04-26 Nec Corp ディスクアレイ制御装置及びディスクアレイ制御方法
JP2002519785A (ja) * 1998-06-30 2002-07-02 エス・アール・シィ・コンピューターズ・インコーポレイテッド マルチプロセッサコンピュータシステムのための分割ディレクトリベースのキャッシュコヒーレンシ技術

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265257A (en) * 1990-06-22 1993-11-23 Digital Equipment Corporation Fast arbiter having easy scaling for large numbers of requesters, large numbers of resource types with multiple instances of each type, and selectable queuing disciplines
EP1016957B1 (en) * 1994-04-04 2011-08-10 MagnaChip Semiconductor Ltd. Method of managing resources shared by multiple processing units
US5907485A (en) 1995-03-31 1999-05-25 Sun Microsystems, Inc. Method and apparatus for flow control in packet-switched computer system
EP0752666A3 (en) * 1995-07-06 2004-04-28 Sun Microsystems, Inc. Method and apparatus for fast-forwarding slave requests in a packet-switched computer system
US6141715A (en) * 1997-04-03 2000-10-31 Micron Technology, Inc. Method and system for avoiding live lock conditions on a computer bus by insuring that the first retired bus master is the first to resubmit its retried transaction
US6230229B1 (en) * 1997-12-19 2001-05-08 Storage Technology Corporation Method and system for arbitrating path contention in a crossbar interconnect network
US6973521B1 (en) * 2000-05-16 2005-12-06 Cisco Technology, Inc. Lock controller supporting blocking and non-blocking requests
US6892259B2 (en) * 2001-09-29 2005-05-10 Hewlett-Packard Development Company, L.P. Method and apparatus for allocating computer bus device resources to a priority requester and retrying requests from non-priority requesters
US7080174B1 (en) * 2001-12-21 2006-07-18 Unisys Corporation System and method for managing input/output requests using a fairness throttle
US7986625B2 (en) * 2002-12-10 2011-07-26 International Business Machines Corporation Resource-aware system, method and program product for managing request traffic based on a management policy
US7308510B2 (en) * 2003-05-07 2007-12-11 Intel Corporation Method and apparatus for avoiding live-lock in a multinode system
US7748001B2 (en) * 2004-09-23 2010-06-29 Intel Corporation Multi-thread processing system for detecting and handling live-lock conditions by arbitrating livelock priority of logical processors based on a predertermined amount of time
US7246188B2 (en) * 2005-02-10 2007-07-17 Qualcomm Incorporated Flow control method to improve bus utilization in a system-on-a-chip integrated circuit

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0916542A (ja) * 1995-04-20 1997-01-17 Sun Microsyst Inc パケット交換コンピュータ・システムにおける割込み通信方法および装置
JPH09293050A (ja) 1996-04-25 1997-11-11 Nec Eng Ltd 情報処理システム
JPH11143824A (ja) 1997-11-11 1999-05-28 Nec Corp バス・アービトレーション方式
JPH11167546A (ja) 1997-12-04 1999-06-22 Nec Corp バス制御方式およびこのバス制御方式を備えたマルチプ ロセッサシステム
JPH11191076A (ja) * 1997-12-26 1999-07-13 Fujitsu Ltd 情報処理装置
JP2002519785A (ja) * 1998-06-30 2002-07-02 エス・アール・シィ・コンピューターズ・インコーポレイテッド マルチプロセッサコンピュータシステムのための分割ディレクトリベースのキャッシュコヒーレンシ技術
JP2002123371A (ja) * 2000-10-13 2002-04-26 Nec Corp ディスクアレイ制御装置及びディスクアレイ制御方法

Also Published As

Publication number Publication date
US20120017017A1 (en) 2012-01-19
EP2416253A1 (en) 2012-02-08
EP2416253A4 (en) 2012-12-05
EP2416253B1 (en) 2014-07-23
US8819323B2 (en) 2014-08-26
JPWO2010113291A1 (ja) 2012-10-04
JP5035469B2 (ja) 2012-09-26

Similar Documents

Publication Publication Date Title
CN107078959B (zh) 用于减轻分布式非核结构中的业务量引导低效的系统和方法
KR100203441B1 (ko) 시스템 버스의 중앙집중화된 중재 제어를 행하는 컴퓨터 시스템 및 멀티프로세서시스템
US6519666B1 (en) Arbitration scheme for optimal performance
US8364874B1 (en) Prioritized polling for virtual network interfaces
JP5035469B2 (ja) データ転送回路及びデータ転送方法
US20140115197A1 (en) Inter-queue anti-starvation mechanism with dynamic deadlock avoidance in a retry based pipeline
US9135195B2 (en) Prediction of electronic component behavior in bus-based systems
US6763418B1 (en) Request bus arbitration
JP4184614B2 (ja) バスシステム及びその実行順序の調整方法
US9367349B2 (en) Multi-core system and scheduling method
JP2008293487A (ja) プロセッサシステム、バス制御方法および半導体装置
US7054330B1 (en) Mask-based round robin arbitration
US20140372646A1 (en) Receiver based communication permission token allocation
WO2009147744A1 (ja) バス調停装置
US7930456B1 (en) Data packet arbitration system
JP2006338184A (ja) 割り込み分配装置及び割り込み分配システム
JP7318203B2 (ja) 演算処理装置及び演算処理装置の制御方法
TWI282057B (en) System bus controller and the method thereof
JP4151362B2 (ja) バス調停方式、データ転送装置、及びバス調停方法
JP2009251652A (ja) マルチコアシステム
JP4669174B2 (ja) チューナブルブロードキャスト/ポイントツーポイントパケットアービトレーション
JP2000250853A (ja) バス調整制御装置
CN115269467B (zh) 一种总线仲裁的方法、装置、存储介质及电子设备
JP2002342295A (ja) マルチプロセッサシステム
CN112306698A (zh) 一种numa系统中的临界区执行方法及装置

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2011506910

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 2009842645

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE