Information processing apparatus, communication method and storage medium

There is provided an information processing apparatus including a plurality of communication units connected to one another in a ring shape by a bus, each of the plurality of communication units being connected to one of processing units, each of which executes a predetermined process, and transmitting data processed by the one of the processing units to the bus as a packet, the information processing apparatus transferring data between the processing units and processing the data in a predetermined order. Among the plurality of communication units, in at least one communication unit, a packet including a value indicative of suspension of the process is generated when the connected processing unit has suspended a process, and information showing whether or not the generation unit has generated the packet including the value indicative of suspension of the process is stored.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to an information processing apparatus, communication method and storage medium that transfer and process data using a ring-shaped bus.

2. Description of the Related Art

There is a conventional method for achieving high-speed pipeline processing, whereby a sequence of data processing constituting the pipeline processing is divided into groups, the groups of data processing are assigned to a plurality of modules, and the plurality of modules are connected by a bus in the order of the flow of processing (Japanese Patent Laid-Open No. 5-081178). However, when modules are connected by a physical bus, it is difficult to change the order of pipeline processing, e.g. change processes A→B→C to processes A→C→B. Note that the above assignment is made to avoid overlapping of processes A, B and C.

In image processing, the efficiency of processing may be improved by changing the order of the sequence of processing. For example, in the case where an image is output to an output apparatus, if the number of pixels in the input image is greater than the number of pixels of the output apparatus, it would be efficient to process the image after reducing the number of pixels therein in the upstream process close to the start of processing. On the other hand, if the number of pixels in the input image is smaller than the number of pixels of the output apparatus, it is better to process the image having the small number of pixels without executing resolution conversion, and then increase the number of pixels in the image by executing resolution conversion in the downstream process immediately before the output.

In some cases, data defined in a certain space (e.g. an input device space) is processed after being converted into a standard space (e.g. a CIELAB color space), and the processed data is converted into another space (e.g. an output device space). In such cases, the space conversion units at the input side and the output side execute processing (one-dimensional LUT, matrix operation, three-dimensional LUT, etc.) in the reverse order. That is to say, if the order of processing can be changed, the input side and the output side may be able to share the same processing module. One way to enable a change in the processing order is to connect processing circuits by a ring-shaped bus (hereinafter referred to as a ring bus) (Japanese Patent Laid-Open No. 1-023340 and No. 2-283142).

However, in the case of a branch process where two processes A→B and A→C are simultaneously executed in pipeline processing composed of processes A→B→C, if a processing module at one side suspends a packet without processing the same, that processing module cannot be identified. This gives rise to the problem that the suspended packet cannot be deleted at a correct timing and is therefore stalled on the ring bus. Furthermore, should the suspended packet be deleted before data included in the suspended packet is processed by another processing module that is supposed to process that data, the subsequent packets cannot be processed. This gives rise to the problem that the ring bus ends up in a deadlock.

The present invention provides technology for executing a branch process without losing data in a data path control mechanism in which a plurality of processing units are connected by a ring-shaped bus.

SUMMARY OF THE INVENTION

According to one aspect of the present invention, there is provided an information processing apparatus including a plurality of communication units connected to one another in a ring shape by a bus, each of the plurality of communication units being connected to one of processing units, each of which executes a predetermined process, and transmitting data processed by the one of the processing units to the bus as a packet, the information processing apparatus transferring data between the processing units and processing the data in a predetermined order, wherein among the plurality of communication units, at least one communication unit comprises: a generation unit configured to, when the connected processing unit has suspended a process, generate a packet including a value indicative of suspension of the process; and a storage unit configured to store information showing whether or not the generation unit has generated the packet including the value indicative of suspension of the process.

According to one aspect of the present invention, there is provided an information processing apparatus including a plurality of communication units connected to one another in a ring shape by a bus, each of the plurality of communication units being connected to one of processing units, each of which executes a predetermined process, and transmitting data processed by the one of the processing units to the bus as a packet, the information processing apparatus transferring data between the processing units and processing the data in a predetermined order, wherein among the plurality of communication units, at least one communication unit comprises: a storage unit configured to store information for identifying the connected processing unit; and a generation unit configured to, when the connected processing unit has suspended a process, generate a packet including the information for identifying the connected processing unit.

According to one aspect of the present invention, there is provided a communication method used in an information processing apparatus including a plurality of communication units connected to one another in a ring shape by a bus, each of the plurality of communication units being connected to one of processing units, each of which executes a predetermined process, and transmitting data processed by the one of the processing units to the bus as a packet, the information processing apparatus transferring data between the processing units and processing the data in a predetermined order, wherein in at least one communication unit among the plurality of communication units, the communication method comprises: generating, by a generation unit, a packet including a value indicative of suspension of a process when the connected processing unit has suspended the process; and storing, by a storage unit, information showing whether or not the packet including the value indicative of suspension of the process has been generated in the generating step.

According to one aspect of the present invention, there is provided a communication method used in an information processing apparatus including: a plurality of communication units connected to one another in a ring shape by a bus; and a storage unit, each of the plurality of communication units being connected to one of processing units, each of which executes a predetermined process, and transmitting data processed by the one of the processing units to the bus as a packet, the information processing apparatus transferring data between the processing units and processing the data in a predetermined order, the storage unit storing therein information for identifying the processing unit connected to at least one communication unit among the plurality of communication units, wherein in the at least one communication unit, the communication method comprises: generating, by a generation unit, a packet including the information for identifying the connected processing unit when the connected processing unit has suspended a process.

DESCRIPTION OF THE EMBODIMENTS

(Configuration of Information Processing Apparatus)

FIG. 1shows an example of a configuration of an information processing apparatus pertaining to the present embodiment. A control unit100includes a CPU101for arithmetic control, a ROM102that stores therein fixed data and programs, a RAM103used to temporarily store data and load programs, and an external storage device104that holds external data.

A data input unit110imports data to be processed. The data input unit110may be, for example, an image reading apparatus constituted by devices such as an image scanner and an A/D converter, or an audio input apparatus constituted by devices such as a microphone and an A/D converter. Alternatively, the data input unit110may be a reception unit that acquires data from an input device. As will be described later, a data processing unit120executes parallel processing using a plurality of processing modules. The data processing unit120processes image data and the like. However, the target of processing by the data processing unit120is not limited to this, but may be any data appropriate for a sequence of data processing such as pipeline processing. A data output unit130outputs processed data to the outside. The data output unit130may be, for example, an image output apparatus including a printer device that converts image data into dotted patterns for printing and outputs the dotted patterns, or an audio output apparatus that outputs audio data via a D/A converter and the like. Alternatively, the data output unit130may simply be an interface for transmitting data to an external device.

Upon receiving data input to the data input unit110, the control unit100may process the data in the CPU101, or may temporarily store the data as-is in the RAM103or the external storage device104.

The data processing unit120may directly receive and process data input from the data input unit110, or may process data upon receiving an instruction and the data from the control unit100. The output from the data processing unit120may be transmitted to the control unit100, or may be directly transmitted to the data output unit130. The details of processing of the data processing unit120are set by the control unit100in advance, and the data processing unit120executes processing that has been set in correspondence with supplied data.

(Configuration of Data Processing Unit)

FIG. 2is a block diagram showing an example of a configuration of the data processing unit120pertaining to the present embodiment, presenting a schematic configuration of a data path control mechanism in which processing modules are connected by a ring-shaped bus. Hereinafter, the ring-shaped bus is referred to as a “ring bus”. InFIG. 2,1201denotes a data input/output unit,1202-1to1202-4denote communication units, and1203-2to1203-4denote data processing units that are provided in one-to-one correspondence with the communication units1202-2to1202-4.

Each of the communication units1202-1to1202-4is connected to a neighboring communication unit (note, the communication unit1202-4is connected to the communication unit1202-1), and transmits data received from a certain direction (first direction) to the other direction (second direction) as a part of the ring bus1206. That is to say, the communication units1202-1to1202-4constitute the ring bus1206and exchange data between the ring bus1206and the input/output unit1201or the processing units1203.

Note that the input/output unit1201serves as an interface for an external device (or module), and may be omitted if the communication unit1202-1can directly exchange information with the external device. Furthermore, the input/output unit1201may serve both as an input unit and an output unit like it is in the present embodiment. Alternatively, an input unit and an output unit may be connected to different communication units1202on the ring bus, respectively. Furthermore, a plurality of input units and output units may be provided.

(Data Structure of Packet)

FIG. 3shows a data structure of a packet carried over the ring bus1206. InFIG. 3,201denotes a valid flag indicating that the packet is valid,202denotes a stall flag indicating that the packet has been received and suspended,203denotes a count value indicating the order of transmission of data,204denotes a node ID indicating a connection ID for identifying logical connection of data, and205denotes data that is input or output to the communication units.

The communication units1202analyze a packet transmitted to the ring bus1206and determine whether or not the valid flag201is valid and whether or not the ID204and the count value203match the values managed in the communication units1202. When the values match, the communication units1202determine whether or not the processing units1203directly connected thereto can process the received data. That is to say, in the case of the communication unit1202-2shown inFIG. 2, it determines whether or not the corresponding processing unit1203-2can process the data. When determining that the corresponding processing units1203can process the data, the communication units1202transmit the data included in the packet to the corresponding processing units1203. At the same time, each communication unit1202transmits a packet in which the valid flag201and the stall flag202are set to be invalid (hereinafter referred to as an “empty packet”) to another communication unit1202that is connected thereto and downstream thereof (in the subsequent stage) along the ring bus1206.

Under certain setting, even when the data is transmitted to the processing units1203, the packet may be transmitted downstream with the valid flag201remaining to be valid. Hereinafter, this setting is referred to as “erase mode”. In the case where the erase mode is invalid, each communication unit1202transmits the packet in which the valid flag201remains to be valid to another communication unit1202that is connected thereto and downstream thereof, even when the data is transmitted to the corresponding processing unit1203. This setting is used in the branch process, which will be described later. However, the stall flag202is set to be invalid. The above operation prevents a suspended packet, which will be described later, from being needlessly retained on the ring bus1206.

There are cases where data in the packet received by the communication units1202cannot be processed by the processing units1203corresponding to the communication units1202, even when the valid flag201is valid and the ID204and the count value203match the values managed in the communication units1202. In such cases, a packet in which the stall flag202is validated (hereinafter referred to as a suspended packet) is transmitted to the ring bus1206. Similarly, the communication units1202transmit the suspended packet to the ring bus1206also when the valid flag201is valid and the ID204matches the value managed in the communication units1202but the count value203does not match the value managed in the communication units1202. On the other hand, in the case where the valid flag201in the received packet is valid but the ID204in the received packet does not match the value managed in the communication units1202, the communication units1202transmit the packet as-is to the ring bus1206without changing the contents of the packet.

The communication unit1202-1manages two pairs of ID and count value that are referenced when determining whether or not they match the ID204and the count value203in the input packet. In this way, packets that have been processed through two data flows can be received and output to the output terminal152in the branch process described later.

With reference toFIG. 4, the following describes a specific example of operations of the data path control mechanism shown inFIG. 2for the case of the branch process where two processes A→B and A→C are simultaneously executed. Note that inFIG. 4, the numbers enclosed in circles denote valid packets (in which the valid flag201is valid), and the numbers in the circles denote the count value203in the packets. Also, filled circles denote empty packets, and a circle with a bold outline denotes a packet in which the stall flag202is valid.

First, the CPU (not shown in the figure) or the like sets the value of ID stored in the communication units1202to a value for execution of the branch process. That is to say, in the communication unit1202-2, the value of ID is set so as to process data input from the communication unit1202-1via the input/output unit1201. Furthermore, in the communication units1202-3and1202-4, the value of ID is set so as to process data that has been processed by the processing unit1203-2corresponding to the communication unit1202-2. Moreover, in the communication unit1202-3, the erase mode is set to be invalid. In this way, a valid packet can be output to the communication unit1202-4that is downstream of the communication unit1202-3, even when the data is transmitted to the processing unit1203-3as the processing unit1203-3can process the data. In any other communication unit1202, the erase mode is set to be valid.

First, the communication unit1202-1acquires data from the input terminal151via the input/output unit1201(S100). The acquired data is packetized and input to the communication unit1202-2via the ring bus1206(S101). At this time, the valid flag201is valid and the stall flag202is invalid in the packet. Data in the input packet is input to the processing unit1203-2because the valid flag201in the input packet is valid, the ID204and the count value203in the input packet match the values managed in the communication unit1202-2, and the processing unit1203-2can process the data. The processing unit1203-2executes process A (S102). The processed data is output to the ring bus1206as a packet and input to the communication unit1202-3(S103).

The communication unit1202-3outputs data in the input packet to the processing unit1203-3because the valid flag201in the input packet is valid, the ID204and the count value203in the input packet match the values managed in the communication unit1202-3, and the processing unit1203-3can process the data. The processing unit1203-3executes process B on the input data (S104). At the same time, as the erase mode is invalid in the communication unit1202-3, the input packet is output as-is to the communication unit1202-4that is downstream of the communication unit1202-3(S104). The data processed by the processing unit1203-3is output to the ring bus1206as a packet (S105), and the data is output to the output terminal152via the communication unit1202-4, the communication unit1202-1and the input/output unit1201(S106).

The packet that was input to the communication unit1202-3and output therefrom as-is is input to the communication unit1202-4(S104). Data included in the input packet is input to the processing unit1203-4and process C is executed on the data because the valid flag201in the input packet is valid, the ID204and the count value203in the input packet match the values managed in the communication unit1202-4, and the processing unit1203-4can process the data (S105). The processed data is output to the ring bus1206as a packet, and output to the output terminal152via the communication unit1202-1and the input/output unit1201(S107).

A description is now given of the case where a suspended packet occurs in a similar branch process because the processing units1203-2and1203-4can process data but the processing unit1203-3cannot process data. Note that the following description uses a packet including the1st data as an example. In a similar manner as the above-described example, data input from the input terminal151is input to the communication unit1202-2via the input/output unit1201and the communication unit1202-1, and process A is executed on the input data (S103to S105). The processed data is output to the ring bus1206as a packet and input to the communication unit1202-3(S106). At this time, the valid flag201is valid and the stall flag202is invalid in the packet.

The valid flag201in the input packet is valid, and the ID204and the count value203in the input packet match the values managed in the communication unit1202-3. However, the processing unit1203-3corresponding to the communication unit1202-3cannot process the data. Therefore, the stall flag202in the input packet is set to be valid, and the input packet is transmitted to the ring bus1206as a suspended packet (S107).

The valid flag201in the packet transmitted from the communication unit1202-3is valid, the ID204and the count value203in the packet match the values managed in the communication unit1202-4, and the processing unit1203-4corresponding to the communication unit1202-4can process data in the packet. Therefore, the data in the packet is input to the processing unit1203-4, and process C is executed on the data (S108). On the other hand, as the erase mode is valid in the communication unit1202-4, the communication unit1202-4outputs an empty packet to the communication unit1202-1via the ring bus1206(S108). Thereafter, the data processed by the processing unit1203-4is output to the ring bus1206as a packet, and then output to the output terminal152via the communication unit1202-1(S109).

In the present example, process B cannot be executed because the suspended packet that was input from the communication unit1202-3to be processed in process B was deleted and an empty packet was generated. As such, the problem with the branch process is that data for which processing has been suspended in another branch may be deleted. In view of this, the present embodiment provides a configuration for handling the above problem.

(Configuration of Communication Unit)

FIG. 5is a block diagram showing a schematic configuration of a communication unit1202. As shown inFIG. 5, the communication unit1202includes a reception unit301, a buffer302, a selector303, and a transmission unit304. The communication unit1202also includes an input terminal357and an output terminal359via which it is connected to neighboring communication units1202. More specifically, the input terminal357and the output terminal359are respectively connected to the output terminal359and the input terminal357of the neighboring communication units1202. The plurality of communication units1202-1to1202-4are connected by the ring bus1206in this manner. In the following description, a neighboring communication unit1202on the ring bus1206is referred to as an upstream neighboring communication unit1202if it is connected via the input terminal357, and as a downstream neighboring communication unit1202if it is connected via the output terminal359. The communication unit1202also includes signal lines351to356via which it is connected to a corresponding processing unit1203(one of the processing units1203-2to1203-4).

A packet input from an upstream neighboring communication unit1202is temporarily held in the buffer302, and output to the selector303in the next clock cycle. The reception unit301monitors the packet from the input terminal357and determines whether or not the valid flag201is valid and whether or not the ID204and the count value203match the values held in the reception unit301. The reception unit301also determines whether or not the processing unit1203connected thereto can process data. More specifically, if the stall signal is not valid on the signal line353, the reception unit301determines that the processing unit1203can process the data and therefore the data can be input to the processing unit1203.

The reception unit301imports the data in the input packet if the data can be input to the processing unit1203, the valid flag201in the input packet is valid, and the ID204and the count value203in the input packet match the values held in the reception unit301. At this time, the reception unit301validates the valid signal on the signal line351and outputs the imported data to the processing unit1203via the signal line352. Furthermore, once the data in the packet has been imported, the reception unit301increments the count value appended to the data managed in the reception unit301. At the same time, the reception unit301executes control to clear (invalidate) the valid flag201in the packet stored in the buffer302via a signal line360. The reception unit301also sets the value of the stall flag202in the packet stored in the buffer302via a signal line361. The specifics of operations for the above control will be described later.

Via a signal line363, the transmission unit304monitors the valid flag201in the packet output from the buffer302to a signal line358. When the valid flag201is valid, the packet output from the buffer302is preferentially output to the output terminal359, and therefore the transmission unit304cannot output the packet including the data from the processing unit1203. Hence, the transmission unit304validates the stall signal via the signal line354to suspend the output of the data from the processing unit1203. When the valid flag201in the packet output from the buffer302is invalid, the transmission unit304invalidates the stall signal via the signal line354and receives the data from the processing unit1203. When the valid flag201of the packet on the signal line358is valid, the selector303selects and outputs the output from the buffer302.

When the processing unit1203can output the data (when the valid signal is valid on the signal line356), the transmission unit304validates the valid flag201on a signal line362. Then, the transmission unit304generates a packet to which the count value managed therein and the connection ID set in the register are added, and outputs the generated packet to the selector303via the signal line362. When the valid flag201is invalid on the signal line358, the selector303selects the signal line362, i.e. the output from the transmission unit304, and transmits the packet generated by the transmission unit304to the ring bus1206via the output terminal359. Although the packet is described herein as being generated, conceptually it means that the data is stored in an empty packet carried over the ring bus1206. After the packet is output, the aforementioned count value is incremented.

FIG. 6is a block diagram showing a schematic configuration of the reception unit301. As shown inFIG. 6, the reception unit301includes a register401(storage unit), a counter402, a comparison unit403, a determination unit404(switch unit), a stall counter405, and an erase mode register406.

The register401stores therein the connection ID. When this connection ID matches the ID204in a received packet, it means that the processing unit1203connected to the reception unit301should process data included in the received packet. The counter402manages the order of data to be processed. When the count value203in the received packet matches the value in the counter402, it means that the received packet includes data that should be processed next by the processing unit1203connected to the reception unit301.

The comparison unit403monitors the valid flag201, the stall flag202, the ID204, and the count value203in the received packet. If the valid flag201in the received packet is valid, the comparison unit403checks, through comparison, whether or not the ID204in the received packet matches the connection ID stored in the register401, and whether or not the count value in the received packet matches the value in the counter402. The comparison unit403outputs, to the determination unit404, a connection ID match signal if the ID204matches the connection ID, and a count value match signal if the count value matches the value in the counter402, in “valid” state. Furthermore, if the stall flag202in the input packet is valid, the comparison unit403outputs a stall valid signal to the determination unit404.

The determination unit404determines a process to be executed based on the connection ID match signal, the count value match signal, the stall valid signal, the stall signal of the processing unit1203via the signal line353, the stall counter405, and the erase mode register406. Here, the stall signal from the signal line353indicates whether or not the processing unit1203can execute the process. When the stall signal is invalid, it means that the processing unit1203can execute the process and therefore import the data.

The stall counter405increments the count by one (adds one to the count value) when the reception unit301validates the stall flag202. The stall counter405deducts one from the count value when the packet in which the stall flag202was validated is processed later. The stall counter405is reset when the operation is started by, for example, turning on the power. The initial value of the stall counter405is “0”. Therefore, unless the reception unit301outputs a suspended packet, the value of the stall counter remains to be “0”. That is to say, the stall counter405shows the number of packets suspended by the reception unit301, or the number of data that has been left unprocessed after the corresponding processing unit1203suspended the process.

Note that the communication unit1202is allowed to change the value of the stall flag202in the received packet only when the value of the stall counter is greater than “0” and the stall flag202is valid, or when the stall flag202is invalid. More specifically, the stall flag202can be changed from valid to invalid only when the value of the stall counter is greater than “0” and the stall flag202is valid, and from invalid to valid only when the stall flag202is invalid.

When the erase mode is set to be valid or invalid by the control unit100, the erase mode register406stores therein that setting. The value of the stall counter405may be cleared to “0” at timings other than the start of the operation by, for example, being reset under the instruction from the control unit100before the data input is started upon switching the mode (upon starting a new process).

There are two main types of operations executed by the reception unit301when receiving a packet having the same ID as the connection ID stored in the register401. These two types of operations are: (1) a accepting operation of analyzing the received packet and transmitting data205to the processing unit1203when the processing unit1203can process the data; and (2) a suspending operation of outputting a suspended packet to the buffer302when the processing unit1203cannot process the data. When receiving a packet having an ID that differs from the connection ID stored in the register401, the reception unit301outputs the packet stored in the buffer302as-is to a neighboring communication unit1202(through).

The operation (1) is classified into the following two operations: (1-1) an operation of leaving the value of the stall flag202unchanged; and (1-2) an operation of changing the value of the stall flag202. The operation (1-1) is classified into the following two operations: (1-1-1) an operation of storing an empty packet in the buffer302; and (1-1-2) an operation of storing a valid packet in the buffer302. Similarly, the operation (1-2) is classified into the following two operations: (1-2-1) an operation of storing an empty packet in the buffer302; and (1-2-2) an operation of storing a valid packet in the buffer302. On the other hand, the operation (2) is classified into the following two operations: (2-1) an operation of validating the stall flag202; and (2-2) an operation of leaving the stall flag202unchanged. The determination unit404determines which of these operations is to be selected. These operations are explained below.

(1) Accepting Operation

(1-1) Operation of Leaving Value of Stall Flag202Unchanged

This operation is executed when the value of the stall counter405is “0”. In other words, this operation is executed when the reception unit301has not output the suspended packet, or after the data that has once been suspended is all processed.

(1-1-1) Operation of Storing Empty Packet in Buffer302

This operation is executed when the value of the stall counter405is 0 in the communication unit1202in which the erase mode is set to be valid in the state where predetermined conditions are satisfied. The predetermined conditions are: the valid flag included in the received packet is valid; the connection ID match signal and the count value match signal are both valid; the stall valid signal is invalid; and the stall signal is invalid on the signal line353.

In order to invalidate the packet in the buffer302, this operation executes control to clear the valid flag201in the packet stored in the buffer302via the signal line360. At the same time, a control signal for the stall flag202is output to the buffer302via the signal line361. There are three types of control for the stall flag, namely, set (validate), clear (invalidate), and maintain (do nothing). In the present case, as the value of the stall counter405is “0”, a control signal for “maintain” is output.

Also, when this operation is executed, the determination unit404causes the counter402to increment the count value (add one to the count value) in the next clock cycle, so as to acquire data following the data that has been received and transmitted to the processing unit1203. For example, the determination unit404may notify the counter402of a count valid signal in a valid state, and the counter402may increment the count value upon receiving that notification. At the same time, the determination unit404validates the valid signal on the signal line351, and outputs the data205included in the packet to the processing unit1203via the signal line352.

(1-1-2) Operation of Storing Valid Packet in Buffer302

This operation is executed when the value of the stall counter405is 0 in the communication unit1202in which the erase mode is set to be valid in the state where predetermined conditions are satisfied. The predetermined conditions are: the valid flag included in the received packet is valid; the connection ID match signal and the count value match signal are both valid; the stall valid signal is valid; and the stall signal is invalid on the signal line353. That is to say, this operation is executed when the received suspended packet has been suspended by another communication unit1202, is to be processed by the processing unit1203connected to the reception unit301, and can be processed by that processing unit1203.

This operation is executed also when the value of the stall counter405is 0 in the communication unit1202in which the erase mode is set to be invalid in the state where predetermined conditions are satisfied. The predetermined conditions are: the valid flag included in the received packet, the connection ID match signal and the count value match signal are all valid; and the stall signal on the signal line353is invalid.

In this case, the determination unit404maintains the valid state of the valid flag201in the buffer302without clearing it. The determination unit404also “maintains” the stall flag202as the value of the stall counter405is “0”. Other control, such as control for incrementing the count value and outputting data, is similar to the operation (1-1-1) and a description thereof is omitted.

(1-2) Operation of Invalidating Stall Flag202

This operation is executed when the value of the stall counter405is not “0” in the state where predetermined conditions are satisfied. The predetermined conditions are: the valid flag included in the received packet is valid; the connection ID match signal and the count value match signal are both valid; the stall valid signal is valid; and the stall signal on the signal line353is invalid.

When the value of the stall counter405is greater than “0”, it means that the reception unit301has output a packet in which the stall flag202is valid. In this state, if a packet in which the stall flag202is valid is received, the stall flag202in the buffer302can be invalidated by causing the processing unit1203to process data included in that packet. At this time, the determination unit404decrements the value of the stall counter405(deduct one therefrom) as the processing unit1203processes the data included in the packet in which the stall flag202is valid. For example, the determination unit404may output a count control signal including a countdown instruction to the stall counter405and cause the stall counter405to decrement the count value in the next clock cycle. Note that the smallest value of the stall counter405is “0”. Once the value of the stall counter405has been decremented to “0”, the stall counter405maintains the value “0” thereafter.

(2-1) Operation of Storing Empty Packet in Buffer302

This operation is executed by a communication unit1202in which the erase mode is set to be valid. This operation is substantially the same as the operation (1-1-1). That is to say, this operation invalidates the valid flag201in the packet stored in the buffer302. However, unlike the operation (1-1-1), the determination unit404outputs a control signal for clearing the stall flag202in the packet stored in the buffer302. Other control, such as control for incrementing the count value and outputting data, is similar to the operation (1-1-1) and a description thereof is omitted.

(1-2-2) Operation of Storing Valid Packet in Buffer302

This operation is executed by a communication unit1202in which the erase mode is set to be invalid. In this operation, the determination unit404outputs a control signal for clearing the stall flag202in the packet stored in the buffer302, as with the operation (1-2-1). However, the determination unit404does not clear the valid flag201in the packet stored in the buffer302, but maintains the valid state of the valid flag201. Other control, such as control for incrementing the count value and outputting data, is similar to the operation (1-1-1) and a description thereof is omitted.

When the stall signal via the signal line353is valid, the processing unit1203cannot import data, and therefore a suspending operation is executed. In this case, the determination unit404determines whether or not to set the stall flag202in the buffer302with reference to the stall valid signal and the value of the stall counter405. At the same time, the determination unit404invalidates the valid signal on the signal line351.

(2-1) Operation of Changing Stall Flag202

This operation is executed when the connection ID match signal and the count value match signal are valid, the stall valid signal is invalid, and the stall signal via the signal line353is valid. This operation is executed also when the connection ID match signal is valid, the count value match signal and the stall valid signal are invalid, and the value of the stall counter405is not 0. In the former case, the stall flag in the received packet is validated because the processing unit1203cannot import data included in the received packet. In the latter case, the stall flag in the received packet is validated because it is thought that the reception unit301has suspended a packet with a count value previous to the count value of the received packet. In this case, the determination unit404outputs a control signal for setting the stall flag202in the packet stored in the buffer302, as well as a control signal for incrementing the value of the stall counter405by one. In this case, the determination unit404invalidates the valid signal on the signal line351because the processing unit1203cannot import data. Furthermore, the value of the counter402remains unchanged.

(2-2) Operation of Leaving Stall Flag202Unchanged

This operation is executed when the connection ID match signal and the count value match signal are valid, the stall valid signal is valid, and the stall signal via the signal line353is valid. In this case, although a suspended packet is output, the determination unit404does not change the stall flag202because the stall flag202is already valid. Furthermore, the value of the stall counter405is not incremented, i.e. maintained.

(Configuration of Transmission Unit)

FIG. 7is a block diagram showing a schematic configuration of the transmission unit304. As shown inFIG. 7, the transmission unit304includes a register501(storage unit), a counter502, and a packet generation unit503. The valid flag201in the packet output from the buffer302is input to the packet generation unit503via the signal line363. This valid flag201is also output to the processing unit1203via the signal line354. Furthermore, the processing unit1203inputs data and a data valid signal (valid signal) to the packet generation unit503via the signal lines355and356, respectively. The packet generation unit503outputs the generated packet to the selector303via the signal line362.

The packet generation unit503references the valid signal transmitted from the processing unit1203connected thereto via the signal line356, and if the valid signal is valid, determines that the data output from the processing unit1203is possible. In the case where the packet generation unit503has determined that the data output from the processing unit1203is possible, if the valid flag201on the signal line354is invalid, the packet generation unit503generates a packet storing therein the count value of the counter502and an output connection ID set in the register501. At this time, the packet generation unit503sets the valid flag and the stall flag in the generated packet to be valid and invalid, respectively, and stores them in the data205of the data packet processed by the processing unit1203via the signal line355. The packet generation unit503then outputs the packet to the selector303. In the next clock cycle, the counter502increments the count value (adds one to the count value). Note that the control unit100resets the counter502of the transmission unit304and the counter402of the reception unit301in the communication unit1202to the same value prior to the start of data transfer so as to ensure synchronization.

When the stall flag202in the received packet is invalid and the ID204in the received packet matches the output connection ID stored in the register501, the communication unit1202considers that the packet it output was not processed in the subsequent stage, invalidates the valid flag201, and deletes the received packet (turns the received packet into an empty packet). The communication unit1202deletes the received packet because the packet it output was not processed in the subsequent stage and no processing was suspend, that is to say, it can be judged that there is no longer any module that should process data included in that packet.

(Operations of Data Path Control Mechanism)

With reference toFIGS. 8A and 8B, the following describes operations of the branch process in the data path control mechanism configured as shown inFIG. 2using the communication units1202pertaining to the present embodiment shown inFIGS. 5 to 7. InFIGS. 8A and 8B, the statuses of the reception units301in the communication units1202-1to1202-4are shown in accordance with processing steps. As the branch process, processes A→B and A→C are executed in parallel. Note that the following description is given under the assumption that the control unit100has set the registers401and501in the communication units1202-1to1202-4to values for execution of the branch process. Furthermore, the erase mode register406is set to be invalid in the communication unit1202-3and valid in the other communication units.

Note that inFIGS. 8A and 8B, the numbers enclosed in circles denote valid packets (packets in which the valid flag201is valid), the numbers in the circles denote the count value203in the packets, and circles with a bold outline denote packets in which the stall flag202is valid. The numbers402,405, and353below the valid packets respectively indicate the value of the counter402, the value of the stall counter405, and the state of the stall signal input via the signal line353. In order to simplify the description, it is assumed here that the processing unit1203-2and the input/output unit1201can always process data, and the communication units1202-2and1202-1do not output a suspended packet.

Furthermore, inFIGS. 8A and 8B, the state of the signal line353is indicated as “invalid” or “valid”, where “invalid” means that the stall valid signal on the signal line353is invalid and data can be processed, and “valid” means that the stall valid signal on the signal line353is valid and data cannot be processed.

First, the 0th data is input from the input terminal151(S0), and a packet including the 0th data is output from the communication unit1202-1. Upon receiving the packet transmitted from the communication unit1202-1, the communication unit1202-2imports the 0th data included in the received packet as the processing unit1203-2can process data (the signal line353is invalid). The communication unit1202-2adds one to (increments) the value of the counter402. As a result, the value of the counter402is set to “1” (S1). The communication unit1202-2transmits the data to the processing unit1203-2and outputs an empty packet (S2). The processing unit1203-2processes the data (S2). After process A has been executed, the communication unit1202-2packetizes the data and outputs the packetized data to the ring bus1206(S3). Note that this receiving operation corresponds to the above-described operation (1-1-1).

As the processing unit1203-3can process data (the signal line353is invalid), the communication unit1202-3imports the 0th data, which was processed by the processing unit1203-2, from the received packet and increments the value of the counter402to “1” (S3). As the erase mode is invalid in the communication unit1202-3, the communication unit1202-3transmits the data to the processing unit1203-3and outputs the received valid packet to the ring bus1206(S4). The processing unit1203-3executes process B on the received data (S4). The processed data is output to the communication unit1202-3. The communication unit1202-3packetizes this data and outputs the packetized data to the ring bus1206(S5). This operation corresponds to the above-described operation (1-1-2). Thereafter, the packet including this processed data passes through the communication unit1202-4(S5). The processed data is output to the output terminal152via the communication unit1202-1, and the packet is deleted (S6). It is assumed here that after executing process B, the processing unit1203-3becomes incapable of processing data (the signal line353becomes valid).

As the processing unit1203-4can process data (the signal line353is invalid), the communication unit1202-4imports the packet including the 0th data that was processed by the processing unit1203-2, and increments the value of the counter402to “1” (S4). The processing unit1203-4executes process C on the data imported by the communication unit1202-4, and returns the processed data to the communication unit1202-4(S5). The communication unit1202-4packetizes the received data and outputs the packetized data to the ring bus1206. Note that as the communication unit1202-4transfers the packet received from the communication unit1202-3in S6, the packet including the data on which process C was executed is output to the ring bus1206in S7. This operation corresponds to the above-described operation (1-1-1). The processed data in the output packet is output to the output terminal152via the communication unit1202-1, and the packet is deleted (S7).

A description is now given of a packet including the 1st data (a packet whose count value203is 1). The 1st data is input from the input terminal151and packetized by the communication unit1202-1in S3. The1st data is then output to the ring bus1206(S4). As the processing unit1203-2can process data, the communication unit1202-2imports the data from this packet and increments the value of the counter402to “2” (S4). Then, the imported data is output to the processing unit1203-2. The processing unit1203-2executes process A on this data (S5). The processed data is input to the communication unit1202-2. The communication unit1202-2packetizes this data and outputs the packetized data to the ring bus1206(S6). Note that this receiving operation also corresponds to the above-described operation (1-1-1).

As the processing unit1203-3cannot process data (the signal line353is valid), the communication unit1202-3cannot import the packet including the 1st data that was processed by the processing unit1203-2(S6). Therefore, the communication unit1202-3increments the value of the stall counter405to “1” and validates the stall flag202in the packet in the buffer302(S6). This operation corresponds to the above-described operation (2-1).

As the processing unit1203-4can process data, the communication unit1202-4imports the packet including the 1st data that was processed by the processing unit1203-2, and increments the value of the counter402to “2” (S7). Then, the communication unit1202-4inputs the imported data to the processing unit1203-4, and outputs the packet in the buffer302to the ring bus1206without changing the valid flag201and the stall flag202(S8). This operation corresponds to the above-described operation (1-1-2). The processing unit1203-4executes process C on the input data and returns the processed data to the communication unit1202-4(S8). The communication unit1202-4packetizes the processed data and outputs the packetized data to the ring bus1206. The processed data is output to the output terminal152via the communication unit1202-1and deleted (S9).

It is assumed here that, in parallel with the 1st data, the 2nd data is input from the input terminal151in S6. The input data is packetized by the communication unit1202-1and output to the ring bus1206(S7). As the processing unit1203-2can process data, the communication unit1202-2imports data from this packet and increments the value of the counter402to “3” (S7). Then, the imported data is output to the processing unit1203-2. The processing unit1203-2executes process A on this data (S8). The processed data is input to the communication unit1202-2. The communication unit1202-2packetizes this data and outputs the packetized data to the ring bus1206(S9). Note that this receiving operation also corresponds to the above-described operation (1-1-1).

It is assumed here that the processing unit1203-3became capable of processing data in S8. As the processing unit1203-3can process data, the communication unit1202-3compares the ID and the count value in the received packet with the values stored in the communication unit1202-3. In this case, however, the count value203in the received packet (2) differs from the value of the counter402(1). Here, the value of the stall counter405is incremented to “2” because the connection ID match signal is valid, the count value match signal and the stall valid signal are invalid, and the stall counter is not 0 (S9). After the stall flag202in the packet in the buffer302is validated, this packet is output to the ring bus1206. This operation corresponds to the above-described operation (2-1).

Thereafter, the communication unit1202-3receives the packet including the1st data, which was suspended earlier (S10). As the processing unit1203-3can process data at this point, the count value is incremented and the stall count is decremented. Furthermore, the stall flag202in the packet stored in the buffer302is cleared. However, the valid flag is not cleared. This operation corresponds to the above-described operation (1-2-2). Then, the data is extracted from this packet and output to the processing unit1203-3. The processing unit1203-3executes process B on this data (S11) and returns the processed data to the communication unit1202-3. The communication unit1202-3packetizes the received processed data and outputs the packetized data to the ring bus1206(S12). After this packet passes through the communication unit1202-4(S12), it is output from the output terminal152via the communication unit1202-1and then deleted (S13). When the branch packet in which the stall flag202has been cleared reaches the communication unit1202-2, it is deleted (the valid flag is cleared) (S13). This is because the communication unit1202-2considers that the packet it output was not processed in the subsequent stage since the stall flag202is invalid and the ID204matches the output connection ID stored in the register501.

Furthermore, the communication unit1202-4receives the packet including the 2nd data, which was suspended by the communication unit1202-3and output to the ring bus1206(S10). It is assumed here that the processing unit1203-4became incapable of processing data in S8. In this case, the above-described operation (2-2) is executed because the connection ID match signal, the count value match signal and the stall valid signal are all valid and the stall signal from the processing unit1203-4is valid. That is to say, the communication unit1202-4outputs the packet in the buffer302to the ring bus1206without changing the stall flag202, and the value of the stall counter405is maintained (S10).

After the packet including the 2nd data passes through the communication units1202-1and1202-2(S11, S12), it is received by the communication unit1202-3. As the processing unit1203-3can process data, the communication unit1202-3imports the 2nd data from the received packet and increments the value of the counter402to “3” (S13). The stall counter405is decremented. After the stall flag202in the packet stored in the buffer302is invalidated, this packet is output to the ring bus1206without changing the valid flag (S14). This operation corresponds to the above-described operation (1-2-2).

The data imported by the communication unit1202-3is output to the processing unit1203-3. The processing unit1203-3executes process B on this data (S14). The processing unit1203-3outputs the processed data to the communication unit1202-3. The communication unit1202-3packetizes the processed data and outputs the packetized data to the ring bus1206(S16). Thereafter, the processed data in this packet is output to the output terminal152via the communication units1202-4and1202-1, and this packet is deleted (S17). This packet was not transmitted in S15because the valid packet including the3rd data was stored in the buffer302and preferentially transmitted.

Note that the packet in which the stall flag202was invalidated in S13is received by the communication unit1202-4(S14). The communication unit1202-4imports data from this packet because the valid flag in this packet, the connection ID match signal and the count value match signal are all valid, the stall valid signal is invalid, and the processing unit1203-4can process data. The value of the counter402is incremented to “3” (S14). This operation corresponds to the above-described operation (1-1-1). Then, the imported data is output to the processing unit1203-4. The processing unit1203-4executes process C on this data (S15). The processed data is input to the communication unit1202-4. The communication unit1202-4packetizes this data and outputs the packetized data to the ring bus1206(S20). Note that this packet was not output to the ring bus1206in S16to S19because valid packets were consecutively input to the buffer302and preferentially output. The packet output to the ring bus1206is received by the communication unit1202-1. After the data included in this packet is output to the output terminal152, this packet is deleted.

In S10, the3rd data is input from the input terminal151. The communication unit1202-1packetizes this data and outputs the packetized data to the ring bus1206(S11). As the processing unit1203-2can process data, the communication unit1202-2imports the packet including the 3rd data and increments the value of the counter402to “4”. This operation also corresponds to the above-described operation (1-1-1). The communication unit1202-2imports the data from this packet and outputs the data to the processing unit1203-2. The processing unit1203-2executes process A on the data and returns the processed data to the communication unit1202-2(S12). The communication unit1202-2packetizes the received data and outputs the packetized data to the ring bus1206(S14). Note that this packet was not output in S13because the packet including the 2nd data, which was suspended by the communication unit1202-3, was preferentially output.

As the processing unit1203-3can process data, the communication unit1202-3imports the packet including the 3rd data and increments the value of the counter402to “4”. The communication unit1202-3outputs the imported data to the processing unit1203-3. The processing unit1203-3executes process B on this data (S15). As the erase mode is invalid in the communication unit1202-3, the communication unit1202-3maintains the valid flag in the packet stored in the buffer302as-is and outputs this packet to the ring bus1206(S15). This operation corresponds to the above-described operation (1-1-2). The processed data is returned to the communication unit1202-3. The communication unit1202-3packetizes this data and outputs the packetized data to the ring bus1206(S17). The packet output to the ring bus1206is received by the communication unit1202-1. After the data included in this packet is output to the output terminal152, this packet is deleted (S18).

The communication unit1202-4receives the packet for the branch process, which was output from the communication unit1202-3(S15). It is assumed here that, after the operation of S14, the processing unit1203-4became incapable of processing data. As the processing unit1203-4cannot process data, the communication unit1202-4cannot import the data included in the received packet. Therefore, the value of the stall counter405is incremented to “1”. After the stall flag202in the packet stored in the buffer302is validated, this packet is output to the ring bus1206(S16). This operation corresponds to the above-described operation (2-1).

The packet including the 3rd data, which was suspended by the communication unit1202-4, passes through the communication units1202-1to1202-3(S16to S18), and is received by the communication unit1202-4again (S19). It is assumed here that the processing unit1203-4became capable of processing data before receiving the packet. As the processing unit1203-4can process data, the communication unit1202-4imports the data included in the packet, increments the count value, and decrements the stall count (S19). At this time, as the erase mode is valid in the communication unit1202-4, the communication unit1202-4invalidates the valid flag in the packet stored in the buffer302. This operation corresponds to the above-described operation (1-2-1). The imported data is input to the processing unit1203-4. The processing unit1203-4executes process C on this data (S20). The processed data is returned to the communication unit1202-4. The communication unit1202-4packetizes this data and outputs the packetized data to the ring bus1206(not shown in the figures).

The packets including the 4th data and the 5th data are processed in a similar manner as the above-described operations. As set forth above, by identifying a communication unit1202that executed the suspending operation based on the value of the stall counter405, a suspended packet output from a module is not deleted by modules in other branches. In this way, the branch process can be normally executed in a data path control mechanism using a ring bus. It suffices for the stall counter405to have the number of bits that allows counting from the state where there is no suspended packet (the count value is “0”) through the state where all the empty packets on the ring bus have been expelled. For example, in the present embodiment, it suffices for the stall counter405to have 3 bits as there are four communication units1202on the ring bus1206.

A description is now given of the second embodiment as one embodiment of the present invention. In the second embodiment, an information processing apparatus and a data processing unit therein have the configurations shown inFIGS. 1 and 2as with the first embodiment.

(Data Structure of Packet)

FIG. 9shows a data structure of a packet carried over a ring bus1206. The components ofFIG. 9that have the same functions as those inFIG. 2pertaining to the first embodiment are given the same reference signs thereas, and a description thereof is omitted.FIG. 9differs fromFIG. 2in that the stall flag202is replaced by a stall ID802. The stall ID802is an area for storing a number of a branch from which a suspended packet has been output. For example, in the case of a branch process where processes A→B and A→C are executed, there are two branches, namely processes B and C. In order to identify these branches, the branch numbers are stored in stall ID registers1005in communication units1202. The stall ID registers1005will be described later. Therefore, in this case, the stall ID802may be any information for identifying in which one of processes B and C the process was suspended. For the sake of explanation, “1”, “1”, “2”, and “3” are respectively stored in correspondence with the branches of input/output, process A, process B, and process C. When a suspended packet is output from each branch, the branch number in the corresponding stall ID register1005is stored in the stall ID802of the packet. Note that when the stall ID802is “0”, it means that the packet is not the suspended packet.

In the present embodiment, the communication units1202have the configuration shown inFIG. 5as with the first embodiment. However, in the present embodiment, a signal line361is used to set the stall ID802in the packet stored in the buffer302.

(Configuration and Operations of Reception Unit)

FIG. 10shows the configuration of a reception unit301pertaining to the present embodiment. The reception unit301of the present embodiment differs from that of the first embodiment in the following points: the reception unit301includes the stall ID register1005in place of the stall counter405; wiring of a comparison unit403and a determination unit404; and operations of the comparison unit403and the determination unit404. In the present embodiment, the reception unit301can invalidate the stall ID802in a packet stored in a buffer302only when the stall ID802in the received packet matches the branch number in the stall ID register1005.

Although the comparison unit403in the reception unit301monitors whether or not the stall flag202is invalid in the first embodiment, it monitors whether or not the stall ID802is “0” in the present embodiment. Note that the operations executed when the stall ID802is “0” match the operations executed when the stall flag202is invalid in the first embodiment. On the other hand, when the stall ID802is not “0”, if the stall ID802in the received packet matches the value stored in the stall ID register, the comparison unit403outputs a stall ID match signal in “valid” state to the determination unit404. Note that the stall valid signal is valid when the stall ID is not “0”.

The determination unit404outputs a control signal for the stall ID802to the buffer302via the signal line361. As to the types of control, control for clearing and control for maintenance are similar to those of the first embodiment, but control for setting is to write the value stored in the stall ID register1005to the stall ID802in the packet. Furthermore, as the stall counter405is not provided in the present embodiment, control signals for incrementing/decrementing the count value are not output.

As to the operations of the determination unit404, the operation (1-1) is similar as in the first embodiment. On the other hand, the operation (1-2) is executed when the stall ID match signal is valid. When the stall ID match signal is valid, it means that the reception unit301has received a packet that was suspended by itself. Therefore, data included in this packet is output to the corresponding processing unit1203, and the stall ID802in the packet stored in the buffer302is cleared (invalidated). Whether to invalidate or maintain the valid flag is determined based on whether the erase mode is valid or invalid, as with the above-described operations (1-2-1) and (1-2-2). As with the first embodiment, the operation (2-1) is executed when the connection ID match signal and the count value match signal are valid, the stall valid signal is invalid, and the stall signal via the signal line353is valid. However, unlike the first embodiment, when the connection ID match signal is valid and the count value match signal and the stall valid signal are invalid, the operation (2-1) is executed if the stall ID match signal is valid. That is to say, the condition that the stall counter405is other than “0” in the first embodiment is replaced by the condition that the stall ID match signal is valid in the present embodiment. The value stored in the stall ID register1005is written to the stall ID802in the packet stored in the buffer302. On the other hand, the operation (2-2) is similar as in the first embodiment.

The communication units1202are allowed to change the value of the stall ID802only when the stall ID802is 0 or when the stall ID802matches the branch number stored in the stall ID register1005.

More specifically, when the stall ID802is 0, the communication units1202are allowed to change the value of the stall ID802to the branch number stored in the stall ID register1005. When the stall ID802matches the branch number stored in the stall ID register1005, the communication units1202are allowed to change the value of the stall ID802to 0 by clearing it.

(Configuration of Transmission Unit)

In the present embodiment, a transmission unit304has the configuration shown inFIG. 7as with the first embodiment. The operations of the transmission unit304are similar as in the first embodiment. However, when packetizing data output from the corresponding processing unit1203, the transmission unit304sets the stall ID802to “0”.

(Operations of Data Path Control Mechanism)

A description is now given of operations of the branch process of the data path control mechanism pertaining to the second embodiment with reference toFIGS. 11A and 11B. As the branch process, processes A→B and A→C are executed in parallel. The following description is given under the assumption that the control unit100has set the values of the registers401and501in the communication units1202-1to1202-4to values for realizing the branch process. Furthermore, the erase mode register406is set to be invalid in the communication unit1202-3, and the erase mode is set to be valid in the other communication units1202. In addition, the branch numbers 1, 1, 2, and 3 are respectively set in the stall ID registers1005of the communication units1202-1to1202-4.

InFIGS. 11A and 11B, circles with the numbers denote valid packets (in which the valid flag201is valid), the numbers in the circles denote the count values203of packets, and the circles with a bold outline denote packets in which the stall ID802is other than “0”. The expression “X-Y” in the circles with a bold outline denotes packets which include the Xth data and in which the stall ID802is Y. Filled circles denote empty packets. The numbers402and353below the valid packets respectively indicate the value in the counter402and the state of the stall signal input via the signal line353. In order to simplify the description, it is assumed here that the processing unit1203-2and the input/output unit1201can always process data, and the communication units1202-2and1202-1do not output a suspended packet.

The operations of S200to S205are similar to those of S0to S5inFIG. 8A. In S206, the processing unit1203-3judges that the stall signal is valid. At this time, the operation for incrementing the value in the stall counter405is not executed because there is no stall counter405in the present embodiment. However, the stall ID802in the packet output in S207is set to “2”, which is the value stored in the stall ID register1005of the communication unit1202-3. Therefore, inFIG. 11A, the number “1-2” is shown in the packet with a bold outline that arrives at the communication unit1202-4in S207. In the subsequent processes, when suspension occurs, the value stored in the stall ID register1005in the communication unit1202is written to the stall ID802in the packet in a similar manner. As set forth above, as opposed to the first embodiment in which the value of the stall counter405is incremented, the stall ID802in the packet stored in the buffer302is set to the value stored in the stall ID register1005in the present embodiment. Similarly, in the present embodiment, when the stall ID802in the received packet matches the value stored in the stall ID register1005, control is executed to process data included in this packet and clear the stall ID. At this time, the internal state of the communication units1202does not change unlike the case of the first embodiment in which the value of the stall counter405is decremented. As has been described above, although the operations of the second embodiment differ from those of the first embodiment in relation to the stall ID802and the stall counter405, other operations of the second embodiment are substantially similar to those of the first embodiment. Therefore, a description of other steps is omitted.

As set forth above, a complicated branch process that involves outputting a suspended packet can be realized by allowing identification of modules and branches that have output the suspended packet. An increase in the number of modules and the number of branches on the ring bus can be easily accommodated by increasing the number of bits in the stall counter or the number of bits of the stall ID. In this way, the present embodiment makes it possible to accommodate a complicated branch process with the use of simple hardware.

The present invention can provide an information processing apparatus, a communication method and storage medium that can execute a branch process without losing data in a data path control mechanism where a plurality of processing units are connected by a ring-shaped bus.

This application claims the benefit of Japanese Patent Application No. 2011-202334 filed on Sep. 15, 2011, which is hereby incorporated by reference herein in its entirety.