This application claims priority from Korean Patent Application No. 10-2008-0085536, filed on Aug. 29, 2008, in the Korean Intellectual Property Office, the disclosure of which is incorporated herein in its entirety by reference.
The inventive concept relates to a data flow management device, and more particularly, to a data flow management device transmitting a plurality of data flows.
In data flow management devices transmitting data flows from a plurality of sources to a plurality of destinations, when the plurality of destinations access the plurality of sources at the same time, data collision may occur. That is, when a plurality of data flows are transmitted at the same time from the plurality of sources to one destination, collisions between the data flows may occur.
The inventive concept provides a data flow management device which may prevent data collision when data flows are transmitted from a plurality of sources to a plurality of destinations.
According to an aspect of the inventive concept, there is provided a data flow management device managing a plurality of data flows received from a plurality of sources to be transmitted to a plurality of destinations, the data flow management device including: a plurality of buffers receiving the data flows from the sources and outputting the data flows received from the sources; and a transmitting unit transmitting the data flows output from the buffers to the destinations, wherein the buffers do not output to the transmitting unit, at a same time, any two data flows received from two different sources and are to be transmitted to a same destination.
Each buffer may be configured to prevent output of a data flow to be transmitted to a destination that is the same as a destination of another data flow that is set to be output from another buffer.
Each buffer may include an arbitrating unit controlling output of a data flow received at the buffer by using information on a destination of another data flow that is set to be output from another buffer.
Each buffer may include at least one storing unit storing received data flows.
When a plurality of data flows are stored in the storing unit, the arbitrating unit may determine the order of outputting the plurality of data flows.
When each buffer comprises a plurality of storage units, the arbitrating unit may determine the order of outputting the data flow stored in the plurality of storage units.
According to another aspect of the inventive concept, there is provided a data flow management device managing data flows received from a plurality of sources and to be transmitted to a plurality of destinations, the device including: a plurality of buffers receiving the data flows from the sources and outputting the data flows; an arbitrating unit controlling the buffers such that a set of data flows to be transmitted to different destinations are respectively output from each of the buffers at a same time; and a transmitting unit transmitting the set of data flows to the different destinations concurrently.
The arbitrating unit may control the buffers by using information on a destination of each data flow.
Exemplary embodiments of the inventive concept will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings, in which:
Hereinafter, exemplary embodiments of the inventive concept are explained with reference to the attached drawings. Like reference numerals in the drawings denote like elements.
The term “unit”, as used herein, may include, but is not limited to, a software or hardware component, such as a Field Programmable Gate Array (FPGA) or Application Specific Integrated Circuit (ASIC), which performs certain tasks. A unit may be configured to reside on the addressable storage medium and configured to execute on one or more processors. Thus, a unit may include, by way of example, components, such as software components, object-oriented software components, class components and task components, processes, functions, attributes, procedures, subroutines, segments of program code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays, and variables. The functionality provided for in the components and units may be combined into fewer components and units or further separated into additional components and units. In addition, the components and units may be implemented such that they execute one or more computers in a communication system.
Referring to
The plurality of buffers 110_1, 110_2, 110_3 and 110_4 buffer and output data flows received from the corresponding sources S1, S2, S3 and S4. For example, the first buffer 110_1 buffers and outputs a data flow received from the first source S1, and the second buffer 110_2 buffers and outputs a data flow received from the second source S2. The third buffer 110_3 buffers and outputs a data flow received from the third source S3, and the fourth buffer 110_4 buffers and outputs a data flow received from the fourth source S4.
Each of the first through fourth buffers 110_1, 110_2, 110_3 and 110_4 outputs a data flow to be transmitted to a destination different from a destination of another data flow that is output from a different buffer. Each of the first through fourth buffers 110_1, 110_2, 110_3 and 110_4 prevents a data flow from being transmitted to a destination that is the same as a destination of another data flow that is output from a different buffer. For example, as shown in
The first buffer 110_1 may include a first storing unit 120_1 and a first arbitrating unit 130_1. The first storing unit 120_1 may store a data flow received from the first source S1. The first arbitrating unit 130_1 controls whether to output the data flow stored in the first storing unit 120_1 by using destination information corresponding to data flows that are respectively output from the second through fourth buffers 110_2 through 110_4. Similar to the first buffer 110_1 the second buffer 110_2 may include a second storing unit 120_2 and a second arbitrating unit 130_2. The second storing unit 120_2 may store a data flow received from the second source S2. The second arbitrating unit 130_2 controls whether to output the data flow stored in the second storing unit 120_2 by using destination information corresponding to data flows that are respectively output from the first buffer 110_1, the third buffer 110_3 and the fourth buffer 110_4. Also, the third buffer 110_3 may include a third storing unit 120_3 and a third arbitrating unit 130_3, and the fourth buffer 110_4 may include a fourth storing unit 120_4 and a fourth arbitrating unit 130_4. The third storing unit 120_3 may store a data flow received from the third source S3. The third arbitrating unit 130_3 controls whether to output the data flow stored in the third storing unit 120_3 by using destination information corresponding to data flows that are respectively output from the first buffer 110_1, the second buffer 110_2 and the fourth buffer 110_4. The fourth storing unit 120_4 may store a data flow received from the fourth source S4. The fourth arbitrating unit 130_4 controls whether to output the data flow stored in the fourth storing unit 120_4 by using destination information corresponding to data flows that are respectively output from the first through third buffers 110_1 through 110_3. The destination information may be transmitted via a bus 150 to the first through fourth buffers 110_1 through 110_4, and the destination information may be a destination identifier (ID). According to an exemplary embodiment, the bus 150 may be a bus dedicated to transmitting the destination information. An operation of an arbitrating unit such as the arbitrating units 130_1, 130_2, 130_3 and 130_4 using the destination information will be described in detail later with reference to
The transmitting unit 140 may transmit data flows that are output from the buffers 110_1, 110_2, 110_3 and 110_4 to corresponding destinations D1, D2, D3 and D4. For example, in the case that the first buffer 110_1 outputs a first data flow to be transmitted to the second destination D2, and the second buffer 110_2 outputs a second data flow to be transmitted to the third destination D3, the transmitting unit 140 transmits the first data flow that is output from the first buffer 110_1 to the second destination D2, and transmits the second data flow that is output from the second buffer 110_2 to the third destination D3. According to an exemplary embodiment, the transmitting unit 140 may be implemented as a bus.
Referring to
The buffers 210_1 through 210_4 buffer and output data flows received from the sources S1 through S4. For example, the first buffer 210_1 buffers and outputs a data flow received from a first source S1, and the second buffer 210_2 buffers and outputs a data flow received from a second source S2. Also, the third buffer 210_3 buffers and outputs a data flow received from a third source S3, and the fourth buffer 210_4 buffers and outputs a data flow received from a fourth source S4.
The first buffer 210_1 may include a first storing unit 220_1 storing the data flow received from the first source S1, and the second buffer 210_2 may include a second storing unit 220_2 storing the data flow received from the second source S2. Also, the third buffer 210_3 may include a third storing unit 220_3 storing the data flow received from the third source S3, and the fourth buffer 210_4 may include a fourth storing unit 220_4 storing the data flow received from the fourth source S4.
An arbitrating unit 230 controls the first through fourth buffers 210_1 through 210_4 so that a plurality of data flows that are output from the first through fourth buffers 210_1 through 210_4 are transmitted to different destinations. That is, the arbitrating unit 230 may prevent a plurality of data flows that are set to be transmitted to the same destination from being simultaneously output from two or more buffers from among the first through fourth buffers 210_1 through 210_4. For example, when data flows are simultaneously output from the first and second buffers 210_1 and 210_2 to the fourth destination D4, the arbitrating unit 230 may control the data flows such that only the first buffer 210_1 outputs a data flow to be transmitted to the fourth destination D4 according to a given priority order, and the second buffer 210_2 outputs a data flow that is to be transmitted to a different destination instead of to the fourth destination D4. An operation of the arbitrating unit 230 will be described in detail later with reference to
A transmitting unit 240 may transmit data flows that are output from the buffers to corresponding destinations, similar to the transmitting unit 140 of
Referring to
Referring to
In the current exemplary embodiment, first through fourth storing units 120_1 through 120_4 of
Also in the current exemplary embodiment, data flows stored in the first through fourth storing units 120_1 through 120_4 are transmitted to destinations D1 through D4 corresponding to destination information. That is, a stored data flow is transmitted to a first destination D1 when destination information is #1, a stored data flow is transmitted to a second destination D2 when destination information is #2, a stored data flow is transmitted to a third destination D3 when destination information is #3, and a stored data flow is transmitted to a fourth destination D4 when destination information is #4. Therefore, the first storage unit 410_1 stores a data flow to be transmitted to the fourth destination D4, the second storage unit 410_2 stores a data flow to be transmitted to the second destination D2, and the fourth storage unit 410_4 stores a data flow to be transmitted to the third destination D3. Similarly, the sixth storage unit 420_2, the eighth storage unit 420_4, the eleventh storage unit 430_3, the thirteenth storage unit 440_1, the fourteenth storage unit 440_2 and the sixteenth storage unit 440_4 store data flows to be respectively transmitted to the second destination D2, the fourth destination D4, the third destination D3, the second destination D2, the first destination D1 and the fourth destination D4. The third storage unit 410_3, the fifth storage unit 420_1, the seventh storage unit 420_3, the ninth storage unit 430_1, the tenth storage unit 430_2, the twelfth storage unit 420_4 and the fifteenth storage unit 440_3 that do not have destination information are in a state where no data flows are stored.
Similar to
For example, the first arbitrating unit 130_1 determines a local priority order of destination information as #2-#3-#1-#4, the second arbitrating unit 130_2 determines a local priority order of destination information as #2-#4-#1-#3, the third arbitrating unit 130_3 determines a local priority order of destination information as #3-#2-#4-#1, and the fourth arbitrating unit 130_3 determines a local priority order of destination information as #4-#1-#2-#3. The local priority order of the destination information becomes higher toward the left side of the above destination information. The local priority order of the destination information is arbitrarily determined for convenience of description, and the local priority order may vary as required. As described above, a method of arbitrating output of data flows by fixing the local priority order is called a fixed priority arbitration method. Also, an arbitration method may use a round robin arbitration method or a latency-based arbitration method. The round robin arbitration method is a method in which an output order of data flows is not fixed and a data flow is output whenever received. The latency-based arbitration method determines a local priority order on the basis of a waiting time until a data flow is output after being received. Even though any arbitration method may be used, a same effect as the current exemplary embodiment can be obtained.
The first through fourth arbitrating units 130_1 through 130_4 may control the first through fourth buffers 110_1, 110_2, 110_3 and 110_4 such that whether these buffers should output data flows or not by using one arbitration method from among the above arbitration methods. For example, that the first through fourth arbitrating units 130_1 through 130_4 may determine a priority order in the order of the first buffer 110_1—the second buffer 110_2—the third buffer 110_3—the fourth buffer 110_4. This priority order between the buffers may be referred to as a global priority order. The global priority order of the buffers becomes higher toward the left side of the buffers.
Hereinafter, an operation of a data flow management device 100 will be described according to the global and local priority orders taken as examples above. First, according to the local priority order of the destination information, the first buffer 110_1 is set to output a data flow having the destination information #2, the second buffer 110_2 is set to output a data flow having the destination information #2, the third buffer 110_3 is set to output a data flow having the destination information #3, and the fourth buffer 110_4 is set to output a data flow having the destination information #4. Here, both the first buffer 110_1 and the second buffer 110_2 are set to output the data flows having the destination information #2. However, since the first buffer 110_1 has a higher global priority order than the second buffer 110_2, only the first buffer 110_1 outputs the data flow having the destination information #2. That is, the first arbitrating unit 130_1 controls the first storing unit 120_1 to output the data flow having the destination information #2, and the second arbitrating unit 130_2 controls the second storing unit 120_2 to prevent output of the data flow having the destination information #2. Therefore, the second buffer 110_2 outputs the data flow having the destination information #4 according to the local priority order of the destination information. However, in this case, since the second buffer 110_2 and the fourth buffer 110_2 equally output the data flows having the destination information #4, only the second buffer 110_2 outputs the data flow having the destination information #4 according to the global priority order between the buffers. The fourth buffer 110_4 outputs the data flow having the destination information is #1 according to the local priority order of the destination information. Accordingly, the first buffer 110_1 outputs the data flow having the destination information #2, the second buffer 110_2 outputs the data flow having the destination information #4, the third buffer 110_3 outputs the data flow having the destination information #3, and the fourth buffer 110_4 outputs the data flow having the destination information #1. Here, these data flows may be concurrently output from the respective buffers to the transmitting unit 140. In addition, these data flows may be concurrently transmitted to the respective destinations.
Examining the state after the first output is finished, according to the local priority order of the destination information, the first buffer 110_1 is set to output the data flow having the destination information #3, the second buffer 110_2 is set to output the data flow having the destination information #2, and the fourth buffer 110_4 is set to output the data flow having the destination information #4. In this case, since the first buffer 110_1, the second buffer 110_2 and the fourth buffer 110_4 respectively are set to output data flows having different destination information, the first buffer 110_1 outputs the data flow having the destination information #3, the second buffer 110_2 outputs the data flow having the destination information #2, and the fourth buffer 110_4 outputs the data flow having the destination information #4, without an additional arbitration. Here, these data flows may be concurrently output from the respective buffers to the transmitting unit 140. In addition, these data flows may be concurrently transmitted to the respective destinations.
Examining the state after the second output is finished, according to the local priority order of the destination information, the first buffer 110_1 is set to output the data flow having the destination information #4, and the fourth buffer 110_4 is set to output the data flow having the destination information #2. In this case, since the first buffer 110_1 and the fourth buffer 110_4 respectively are set to output data flows of different destination information, the first buffer 110_1 outputs the data flow having the destination information #4, and the fourth buffer 110_4 outputs the data flow having the destination information #2, without an additional arbitration. Here, these data flows may be concurrently output from the respective buffers to the transmitting unit 140. In addition, these data flows may be concurrently transmitted to the respective destinations. In the meantime, referring to
According to an exemplary embodiment, transmission of data flows and control of buffers are performed at the same time by using a local priority order of destination information of each buffer and a global priority order between the buffers, so that the data flows that are respectively output from each buffer can be prevented from being simultaneously transmitted to the same destination. Thus, the present inventive concept can be also applied to a system-on-chip which uses a plurality of memory ports, such as a three-dimensional (3D) stacked memory, in which case the sources S1 through S4 as shown in
In the above description, the data flow management device 100 of
Also,
According to the exemplary embodiments of a data flow management device transmitting a plurality of data flows, when data flows are transmitted from a plurality of sources to a plurality of destinations, transmission and control of the data flows are performed at the same time, so that data collision can be effectively prevented. According to another exemplary embodiment as illustrated in
While the inventive concept has been particularly shown and described with reference to the exemplary embodiments thereof, it will be understood that various changes in form and details may be made therein without departing from the spirit and scope of the following claims.
Number | Date | Country | Kind |
---|---|---|---|
10-2008-0085536 | Aug 2008 | KR | national |