US20100054130A1 - Data Flow Management Device Transmitting a Plurality of Data Flows - Google Patents
Data Flow Management Device Transmitting a Plurality of Data Flows Download PDFInfo
- Publication number
- US20100054130A1 US20100054130A1 US12/403,363 US40336309A US2010054130A1 US 20100054130 A1 US20100054130 A1 US 20100054130A1 US 40336309 A US40336309 A US 40336309A US 2010054130 A1 US2010054130 A1 US 2010054130A1
- Authority
- US
- United States
- Prior art keywords
- data flow
- output
- buffers
- data
- buffer
- Prior art date
- Legal status (The legal status 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 status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/02—Disposition of storage elements, e.g. in the form of a matrix array
- G11C5/04—Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/22—Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
Definitions
- 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.
- 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.
- 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.
- the arbitrating unit may determine the order of outputting the plurality of data flows.
- the arbitrating unit may determine the order of outputting the data flow stored in the plurality of storage units.
- 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.
- FIGS. 1A and 1B are block diagrams of a data flow management devices according to exemplary embodiments
- FIG. 2 is a block diagram of a data flow management device according to another exemplary embodiment
- FIG. 3A is a block diagram of a storing unit of FIG. 1A , 1 B or 2 , according to an exemplary embodiment
- FIG. 3B is a block diagram of a storing unit of FIG. 1A , 1 B or 2 , according to another exemplary embodiment.
- FIG. 4 is a block diagram for explaining a transmitting operation of data flows according to an exemplary embodiment
- FIG. 5 is a flowchart for explaining a method of data flow management, according to another exemplary embodiment.
- a unit 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.
- 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.
- the components and units may be implemented such that they execute one or more computers in a communication system.
- FIG. 1A is a block diagram of a data flow management device 100 according to an exemplary embodiment.
- the data flow management device may be implemented as a semiconductor device although the inventive concept is not limited thereto.
- the data flow management device 100 transmitting data flows from a plurality of sources S 1 , S 2 , S 3 and S 4 to a plurality of destinations D 1 , D 2 , D 3 and D 4 may include a plurality of buffers 110 _ 1 , 110 _ 2 , 110 _ 3 and 110 _ 4 and a transmitting unit 140 .
- FIG. 1A the data flow management device 100 transmitting data flows from a plurality of sources S 1 , S 2 , S 3 and S 4 to a plurality of destinations D 1 , D 2 , D 3 and D 4 may include a plurality of buffers 110 _ 1 , 110 _ 2 , 110 _ 3 and 110 _ 4 and a transmitting unit 140 .
- FIG. 1A illustrates a case in which the data flow management device 100 includes the first through fourth sources S 1 , S 2 , S 3 and S 4 , the first through fourth destinations D 1 , D 2 , D 3 and D 4 , and the first through fourth buffers 110 _ 1 , 110 _ 2 , 110 _ 3 and 110 _ 4 , but the exemplary embodiments of the inventive concept are not limited thereto. Even if the data flow management device 100 includes different numbers of sources, destinations and buffers, it may obtain the same effect as the current exemplary embodiment.
- the plurality of buffers 110 _ 1 , 110 _ 2 , 110 _ 3 and 110 _ 4 buffer and output data flows received from the corresponding sources S 1 , S 2 , S 3 and S 4 .
- the first buffer 110 _ 1 buffers and outputs a data flow received from the first source S 1
- the second buffer 110 _ 2 buffers and outputs a data flow received from the second source S 2
- the third buffer 110 _ 3 buffers and outputs a data flow received from the third source S 3
- the fourth buffer 110 _ 4 buffers and outputs a data flow received from the fourth source S 4 .
- 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 FIG.
- the second buffer 110 _ 2 may prevent output of a second data flow set to be output to the transmitting unit 140 to be transmitted to the first destination D 1 , and instead, may output a third data flow to be transmitted to the second destination D 2 concurrently with the first data flow.
- the second data flow may be output to the transmitting unit 140 to be transmitted to the destination D 1 later when no collisions with other data flows are expected.
- the first and second data flows may have been received at the first and second buffers 110 _ 1 and 110 _ 2 substantially at the same time from the first and second sources S 1 and S 2 , in response to first and second data flow requests from the first destination D 1 to the first and second sources S 1 and S 2 , respectively.
- the first and second data flow requests may have been output from the destination D 1 consecutively.
- the third data flow may have been received at the second buffer 110 _ 2 in response to third data flow request transmitted from the second destination D 2 to the second source S 2 .
- the first, second and third data flow requests may have been transmitted from the first and second destinations D 1 and D 2 to the first and second sources S 1 and S 2 directly or through the transmitting unit 140 . Operations of the above buffers will be described in detail later with reference to FIG. 4 .
- 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 S 1 .
- 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 .
- 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 S 2 .
- 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 .
- the third buffer 110 _ 3 may include a third storing unit 120 _ 3 and a third arbitrating unit 130 _ 3
- 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 S 3 .
- 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 S 4 .
- 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).
- the bus 150 may be a bus dedicated to transmitting the destination information.
- 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 D 1 , D 2 , D 3 and D 4 .
- the transmitting unit 140 transmits the first data flow that is output from the first buffer 110 _ 1 to the second destination D 2 , and transmits the second data flow that is output from the second buffer 110 _ 2 to the third destination D 3 .
- the transmitting unit 140 may be implemented as a bus.
- FIG. 2 is a block diagram of a data flow management device 200 according to another exemplary embodiment.
- the data flow management device 200 transmitting data flows from a plurality of sources S 1 , S 2 , S 3 and S 4 to a plurality of destinations D 1 , D 2 , D 3 and D 4 may include a plurality of buffers 210 _ 1 , 210 _ 2 , 210 _ 3 and 210 _ 4 and a transmitting unit 240 .
- FIG. 2 illustrates a case in which the data flow management device 200 includes first through fourth sources S 1 through S 4 , first through fourth destinations D 1 through D 4 , and first through fourth buffers 210 _ 1 through 210 _ 4 , but the exemplary embodiments of the inventive concept are not limited thereto. Even if the data flow management device 200 includes different numbers of sources, destinations and buffers, it may obtain the same effect as the current exemplary embodiment.
- the buffers 210 _ 1 through 210 _ 4 buffer and output data flows received from the sources S 1 through S 4 .
- the first buffer 210 _ 1 buffers and outputs a data flow received from a first source S 1
- the second buffer 210 _ 2 buffers and outputs a data flow received from a second source S 2
- the third buffer 210 _ 3 buffers and outputs a data flow received from a third source S 3
- the fourth buffer 210 _ 4 buffers and outputs a data flow received from a fourth source S 4 .
- the first buffer 210 _ 1 may include a first storing unit 220 _ 1 storing the data flow received from the first source S 1
- the second buffer 210 _ 2 may include a second storing unit 220 _ 2 storing the data flow received from the second source S 2
- the third buffer 210 _ 3 may include a third storing unit 220 _ 3 storing the data flow received from the third source S 3
- the fourth buffer 210 _ 4 may include a fourth storing unit 220 _ 4 storing the data flow received from the fourth source S 4 .
- 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 .
- 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 D 4 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 D 4 .
- An operation of the arbitrating unit 230 will be described in detail later with reference to FIG. 4 .
- a transmitting unit 240 may transmit data flows that are output from the buffers to corresponding destinations, similar to the transmitting unit 140 of FIGS. 1A and 1B .
- FIG. 3A is a block diagram of a storing unit 120 corresponding to each of the first through fourth storing units 120 _ 1 through 120 _ 4 of FIG. 1A or each of the first through fourth storing units 220 _ 1 through 220 _ 4 of FIG. 2 according to an exemplary embodiment.
- the FIFO storing unit may include a plurality of storage units 310 , 320 , 330 and 340 .
- FIG. 3A illustrates the case in which the storing unit 120 includes the first through fourth storage units 310 through 340 , but the present inventive concept is not limited thereto. Even if the storing unit 120 includes different numbers of storage units, it may obtain a same effect as the current exemplary embodiment.
- #1, #2, #3 and #4 represent destination information. For example, since the destination information of a data flow stored in a first storage unit 310 is #1, the data flow may be transmitted to the first destination D 1 .
- the data flow may be transmitted to the third destination D 3 .
- the data flow may be transmitted to the second destination D 2 .
- the destination information of a data flow stored in the fourth storage unit 340 is #4, the data flow may be transmitted to the fourth destination D 4 .
- FIG. 3B is a block diagram of the storing unit 121 of corresponding to each of the first through fourth storing units 120 _ 1 through 120 _ 4 of FIG. 1A or each of the first through fourth storing units 220 _ 1 through 220 _ 4 of FIG. 2 , according to another exemplary embodiment.
- the storing unit 120 may include a storage unit 360 .
- the storage unit 360 may store a plurality of data flows, and one data flow may be managed as a linked list separated in the storage unit 360 .
- #1, #2, #3 and #4 represent destination information.
- the data flow to be transmitted to the first destination D 1 may be stored at a position of the destination information #1 in an arrow direction (as indicated by an arrow shown in FIG. 3B ) in the storage unit 360 .
- the data flow to be transmitted to the second destination D 2 may be stored at a position of the destination information #2 in an arrow direction (as indicated by an arrow shown in FIG. 3B ) in the storage unit 360 .
- the data flow to be transmitted to the third destination D 3 may be stored at a position of the destination information #3 in an arrow direction (as indicated by an arrow shown in FIG. 3B ) in the storage unit 360
- the data flow to be transmitted to the fourth destination D 4 may be stored at a position of the destination information #4 in an arrow direction (as indicated by an arrow shown in FIG. 3B ) in the storage unit 360 .
- FIG. 3B illustrates a case in which a data flow is managed as the linked list, but the present inventive concept is not limited thereto. If a plurality of data flows can be managed in one storage unit 360 in another manner different from the above, it may obtain a same effect as the current exemplary embodiment. For example, the storage unit 360 is divided into regions, so that a plurality of data flows can be stored in corresponding regions.
- FIG. 4 is a block diagram for explaining a transmitting operation of data flows according to an exemplary embodiment.
- first through fourth storing units 120 _ 1 through 120 _ 4 of FIG. 4 are the first through fourth storing units 120 _ 1 through 120 _ 4 of FIG. 1A .
- the first storing unit 120 _ 1 includes first through fourth storage units 410 _ 1 through 410 _ 4
- the second storing unit 120 _ 2 includes fifth through eighth storage units 420 _ 1 through 420 _ 4 .
- the third storing unit 120 _ 3 includes ninth through twelfth storage units 430 _ 1 through 430 _ 4
- the fourth storing unit 120 _ 4 includes thirteenth through sixteenth storage units 440 _ 1 through 440 _ 4 .
- data flows stored in the first through fourth storing units 120 _ 1 through 120 _ 4 are transmitted to destinations D 1 through D 4 corresponding to destination information. That is, a stored data flow is transmitted to a first destination D 1 when destination information is #1, a stored data flow is transmitted to a second destination D 2 when destination information is #2, a stored data flow is transmitted to a third destination D 3 when destination information is #3, and a stored data flow is transmitted to a fourth destination D 4 when destination information is #4.
- the first storage unit 410 _ 1 stores a data flow to be transmitted to the fourth destination D 4
- the second storage unit 410 _ 2 stores a data flow to be transmitted to the second destination D 2
- the fourth storage unit 410 _ 4 stores a data flow to be transmitted to the third destination D 3 .
- 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 D 2 , the fourth destination D 4 , the third destination D 3 , the second destination D 2 , the first destination D 1 and the fourth destination D 4 .
- 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.
- the first through fourth arbitrating units 130 _ 1 through 130 _ 4 determine orders of output of data flows stored in the corresponding storage units 410 _ 1 through 410 _ 4 , 420 _ 1 through 420 _ 4 , 430 _ 1 through 430 _ 4 and 440 _ 1 through 440 _ 4 , respectively.
- the first arbitrating unit 130 _ 1 determines an output order of data flows stored in the first through fourth storage units 410 _ 1 through 410 _ 4
- the second arbitrating unit 130 _ 2 determines an output order of data flows stored in the fifth through eighth storage units 420 _ 1 through 420 _ 4
- the third arbitrating unit 130 _ 3 determines an output order of data flows stored in the ninth through twelfth storage units 430 _ 1 through 430 _ 4
- the fourth arbitrating unit 130 _ 4 determines an output order of data flows stored in the thirteenth through sixteenth storage units 440 _ 1 through 440 _ 4 .
- These orders determined by the first through further arbitrating units may be referred to as local priority orders.
- 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.
- a method of arbitrating output of data flows by fixing the local priority order is called a fixed priority arbitration method.
- 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.
- 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
- the fourth buffer 110 _ 4 is set to output a data flow having the destination information #4.
- both the first buffer 110 _ 1 and the second buffer 110 _ 2 are set to output the data flows having the destination information #2.
- the first buffer 110 _ 1 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.
- 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.
- 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.
- 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
- the fourth buffer 110 _ 4 is set to output the data flow having the destination information #4.
- 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
- the fourth buffer 110 _ 4 outputs the data flow having the destination information #4, without an additional arbitration.
- these data flows may be concurrently output from the respective buffers to the transmitting unit 140 .
- these data flows may be concurrently transmitted to the respective destinations.
- the first buffer 110 _ 1 is set to output the data flow having the destination information #4
- the fourth buffer 110 _ 4 is set to output the data flow having the destination information #2.
- 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
- the fourth buffer 110 _ 4 outputs the data flow having the destination information #2, without an additional arbitration.
- these data flows may be concurrently output from the respective buffers to the transmitting unit 140 .
- these data flows may be concurrently transmitted to the respective destinations.
- the data flow having the destination information #2 in the storage unit 410 _ 2 of the first storing unit 120 _ 1 of the first buffer 110 _ 1 has the highest global priority order as well as the highest local priority order.
- the data flow having the destination information #2 in the storage unit 410 _ 2 may be output to the transmitting unit 140 without being buffered in the storage unit 410 _ 2 when received at the first buffer 110 _ 1 .
- 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.
- 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 S 1 through S 4 as shown in FIG. 1A may be corresponding memory modules of the 3-D stacked memory, and the data flows may be output from the sources in response to memory read requests from the destinations.
- the memory modules may include Double Data Rate (DDR) random access memories.
- DDR Double Data Rate
- the data flow management device 100 of FIG. 1A has been described.
- the arbitrating unit 230 functions as the first through fourth arbitrating units 130 _ 1 through 130 _ 4 of FIG. 1A
- the data flow management device 200 of FIG. 2 may also operate in the same manner as described above.
- FIG. 4 illustrates the case in which the storing unit includes a plurality of storage units as illustrated in FIG. 3A .
- the storing unit of FIG. 3B may operate in the same manner as described above with reference to FIG. 4 by using a local priority order of destination information.
- the local priority order of the destination information may be determined using a fixed priority arbitration method, a round robin arbitration method, or a latency-based arbitration method.
- the local priority order may be determined with respect to only partial destination information from among destination information #1, #2, #3 and #4.
- the priority order of the destination information is determined as #1-#2, and it may be determined that a data flow of destination information #3 is output after outputting a data flow of destination information #1 and a data flow of destination information #4 is output after outputting a data flow of destination information #2.
- the data flow of the destination information #1 is firstly output without being stored in the buffer and then the data flow of the destination information #3 is output, according to the local priority order of the destination information.
- the data flow of the destination information #2 is output and then finally the data flow of the destination information #4 is output, according to the local priority order of the destination information.
- 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.
- a method of data flow management in a network comprising a plurality of sources, a plurality of buffers, a transmitting unit and a plurality of destinations is provided. The method includes receiving at the plurality of buffers data flows from the sources (S 510 ).
- the method further includes outputting the received data flows to the transmitting unit such that any two data flows, that are received from two different sources among the plurality of sources and are to be transmitted to a same destination among the destinations, are not output from the buffers to the transmitting unit at a same time (S 520 ), and transmitting the data flows that are output from the buffers to the destinations from the transmitting unit to the destinations (S 530 ).
Abstract
Provided is a data flow management device managing a plurality of data flows. The data flow management device transmits data flows received from a plurality of sources to be transmitted to a plurality of destinations. The data flow management device includes a plurality of buffers outputting data flows received from the sources; and a transmitting unit transmitting the data flows output from the buffers to the destinations. The buffers do not output at a same time any two data flows received from two different sources to be transmitted to a same destination.
Description
- 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:
-
FIGS. 1A and 1B are block diagrams of a data flow management devices according to exemplary embodiments; -
FIG. 2 is a block diagram of a data flow management device according to another exemplary embodiment; -
FIG. 3A is a block diagram of a storing unit ofFIG. 1A , 1B or 2, according to an exemplary embodiment; -
FIG. 3B is a block diagram of a storing unit ofFIG. 1A , 1B or 2, according to another exemplary embodiment; and -
FIG. 4 is a block diagram for explaining a transmitting operation of data flows according to an exemplary embodiment, andFIG. 5 is a flowchart for explaining a method of data flow management, according to another exemplary embodiment. - 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.
-
FIG. 1A is a block diagram of a dataflow management device 100 according to an exemplary embodiment. The data flow management device may be implemented as a semiconductor device although the inventive concept is not limited thereto. - Referring to
FIG. 1A , the dataflow management device 100 transmitting data flows from a plurality of sources S1, S2, S3 and S4 to a plurality of destinations D1, D2, D3 and D4 may include a plurality of buffers 110_1, 110_2, 110_3 and 110_4 and a transmittingunit 140.FIG. 1A illustrates a case in which the dataflow management device 100 includes the first through fourth sources S1, S2, S3 and S4, the first through fourth destinations D1, D2, D3 and D4, and the first through fourth buffers 110_1, 110_2, 110_3 and 110_4, but the exemplary embodiments of the inventive concept are not limited thereto. Even if the dataflow management device 100 includes different numbers of sources, destinations and buffers, it may obtain the same effect as the current exemplary embodiment. - 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
FIG. 1B , when a first data flow is set to be output from the first buffer 110_1 to the transmittingunit 140 in order to be transmitted to the first destination D1, the second buffer 110_2 may prevent output of a second data flow set to be output to the transmittingunit 140 to be transmitted to the first destination D1, and instead, may output a third data flow to be transmitted to the second destination D2 concurrently with the first data flow. The second data flow may be output to the transmittingunit 140 to be transmitted to the destination D1 later when no collisions with other data flows are expected. In this example, the first and second data flows may have been received at the first and second buffers 110_1 and 110_2 substantially at the same time from the first and second sources S1 and S2, in response to first and second data flow requests from the first destination D1 to the first and second sources S1 and S2, respectively. The first and second data flow requests may have been output from the destination D1 consecutively. The third data flow may have been received at the second buffer 110_2 in response to third data flow request transmitted from the second destination D2 to the second source S2. The first, second and third data flow requests may have been transmitted from the first and second destinations D1 and D2 to the first and second sources S1 and S2 directly or through the transmittingunit 140. Operations of the above buffers will be described in detail later with reference toFIG. 4 . - 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, thebus 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 toFIG. 4 . - 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 transmittingunit 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 transmittingunit 140 may be implemented as a bus. -
FIG. 2 is a block diagram of a dataflow management device 200 according to another exemplary embodiment. - Referring to
FIG. 2 , the dataflow management device 200 transmitting data flows from a plurality of sources S1, S2, S3 and S4 to a plurality of destinations D1, D2, D3 and D4 may include a plurality of buffers 210_1, 210_2, 210_3 and 210_4 and a transmittingunit 240. Similar toFIG. 1A ,FIG. 2 illustrates a case in which the dataflow management device 200 includes first through fourth sources S1 through S4, first through fourth destinations D1 through D4, and first through fourth buffers 210_1 through 210_4, but the exemplary embodiments of the inventive concept are not limited thereto. Even if the dataflow management device 200 includes different numbers of sources, destinations and buffers, it may obtain the same effect as the current exemplary embodiment. - 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 arbitratingunit 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 arbitratingunit 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 arbitratingunit 230 will be described in detail later with reference toFIG. 4 . - A transmitting
unit 240 may transmit data flows that are output from the buffers to corresponding destinations, similar to the transmittingunit 140 ofFIGS. 1A and 1B . -
FIG. 3A is a block diagram of astoring unit 120 corresponding to each of the first through fourth storing units 120_1 through 120_4 ofFIG. 1A or each of the first through fourth storing units 220_1 through 220_4 ofFIG. 2 according to an exemplary embodiment. - Referring to
FIG. 1A throughFIG. 3A , the FIFO storing unit may include a plurality ofstorage units FIG. 3A illustrates the case in which thestoring unit 120 includes the first throughfourth storage units 310 through 340, but the present inventive concept is not limited thereto. Even if thestoring unit 120 includes different numbers of storage units, it may obtain a same effect as the current exemplary embodiment. #1, #2, #3 and #4 represent destination information. For example, since the destination information of a data flow stored in afirst storage unit 310 is #1, the data flow may be transmitted to the first destination D1. Since the destination information of a data flow stored in thesecond storage unit 320 is #3, the data flow may be transmitted to the third destination D3. Similarly, since the destination information of a data flow stored in thethird storage unit 330 is #2, the data flow may be transmitted to the second destination D2. Since the destination information of a data flow stored in thefourth storage unit 340 is #4, the data flow may be transmitted to the fourth destination D4. -
FIG. 3B is a block diagram of thestoring unit 121 of corresponding to each of the first through fourth storing units 120_1 through 120_4 ofFIG. 1A or each of the first through fourth storing units 220_1 through 220_4 ofFIG. 2 , according to another exemplary embodiment. - Referring to
FIGS. 1A , 2 and 3B, the storingunit 120 may include astorage unit 360. Thestorage unit 360 may store a plurality of data flows, and one data flow may be managed as a linked list separated in thestorage unit 360. Similarly toFIG. 3A , #1, #2, #3 and #4 represent destination information. If a data flow havingdestination information # 1 is to be transmitted to a first destination D1, a data flow havingdestination information # 2 is to be transmitted to a second destination D2, a data flow havingdestination information # 3 is to be transmitted to a third destination D3, and a data flow havingdestination information # 4 is to be transmitted to a fourth destination D4, the data flow to be transmitted to the first destination D1 may be stored at a position of thedestination information # 1 in an arrow direction (as indicated by an arrow shown inFIG. 3B ) in thestorage unit 360. The data flow to be transmitted to the second destination D2 may be stored at a position of thedestination information # 2 in an arrow direction (as indicated by an arrow shown inFIG. 3B ) in thestorage unit 360. Also, the data flow to be transmitted to the third destination D3 may be stored at a position of thedestination information # 3 in an arrow direction (as indicated by an arrow shown inFIG. 3B ) in thestorage unit 360, and the data flow to be transmitted to the fourth destination D4 may be stored at a position of thedestination information # 4 in an arrow direction (as indicated by an arrow shown inFIG. 3B ) in thestorage unit 360. -
FIG. 3B illustrates a case in which a data flow is managed as the linked list, but the present inventive concept is not limited thereto. If a plurality of data flows can be managed in onestorage unit 360 in another manner different from the above, it may obtain a same effect as the current exemplary embodiment. For example, thestorage unit 360 is divided into regions, so that a plurality of data flows can be stored in corresponding regions. -
FIG. 4 is a block diagram for explaining a transmitting operation of data flows according to an exemplary embodiment. - In the current exemplary embodiment, first through fourth storing units 120_1 through 120_4 of
FIG. 4 are the first through fourth storing units 120_1 through 120_4 ofFIG. 1A . The first storing unit 120_1 includes first through fourth storage units 410_1 through 410_4, and the second storing unit 120_2 includes fifth through eighth storage units 420_1 through 420_4. The third storing unit 120_3 includes ninth through twelfth storage units 430_1 through 430_4, and that the fourth storing unit 120_4 includes thirteenth through sixteenth storage units 440_1 through 440_4. - 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
FIG. 4 , when the first through fourth storing units 120_1 through 120_4 include the storage units 410_1 through 410_4, 420_1 through 420_4, 430_1 through 430_4 and 440_1 through 440_4, respectively, the first through fourth arbitrating units 130_1 through 130_4 determine orders of output of data flows stored in the corresponding storage units 410_1 through 410_4, 420_1 through 420_4, 430_1 through 430_4 and 440_1 through 440_4, respectively. That is, the first arbitrating unit 130_1 determines an output order of data flows stored in the first through fourth storage units 410_1 through 410_4, and the second arbitrating unit 130_2 determines an output order of data flows stored in the fifth through eighth storage units 420_1 through 420_4. Also, the third arbitrating unit 130_3 determines an output order of data flows stored in the ninth through twelfth storage units 430_1 through 430_4, and the fourth arbitrating unit 130_4 determines an output order of data flows stored in the thirteenth through sixteenth storage units 440_1 through 440_4. These orders determined by the first through further arbitrating units may be referred to as local priority orders. - 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 thedestination information # 2, the second buffer 110_2 is set to output a data flow having thedestination information # 2, the third buffer 110_3 is set to output a data flow having thedestination information # 3, and the fourth buffer 110_4 is set to output a data flow having thedestination information # 4. Here, both the first buffer 110_1 and the second buffer 110_2 are set to output the data flows having thedestination 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 thedestination information # 2. That is, the first arbitrating unit 130_1 controls the first storing unit 120_1 to output the data flow having thedestination information # 2, and the second arbitrating unit 130_2 controls the second storing unit 120_2 to prevent output of the data flow having thedestination information # 2. Therefore, the second buffer 110_2 outputs the data flow having thedestination 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 thedestination information # 4, only the second buffer 110_2 outputs the data flow having thedestination 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 thedestination information # 2, the second buffer 110_2 outputs the data flow having thedestination information # 4, the third buffer 110_3 outputs the data flow having thedestination information # 3, and the fourth buffer 110_4 outputs the data flow having thedestination information # 1. Here, these data flows may be concurrently output from the respective buffers to the transmittingunit 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 thedestination information # 2, and the fourth buffer 110_4 is set to output the data flow having thedestination 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 thedestination information # 3, the second buffer 110_2 outputs the data flow having thedestination information # 2, and the fourth buffer 110_4 outputs the data flow having thedestination information # 4, without an additional arbitration. Here, these data flows may be concurrently output from the respective buffers to the transmittingunit 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 thedestination 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 thedestination information # 4, and the fourth buffer 110_4 outputs the data flow having thedestination information # 2, without an additional arbitration. Here, these data flows may be concurrently output from the respective buffers to the transmittingunit 140. In addition, these data flows may be concurrently transmitted to the respective destinations. In the meantime, referring toFIG. 4 , the data flow having thedestination information # 2 in the storage unit 410_2 of the first storing unit 120_1 of the first buffer 110_1 has the highest global priority order as well as the highest local priority order. Thus, according to another exemplary embodiment, since the data flow having thedestination information # 2 in the storage unit 410_2 may be output to the transmittingunit 140 without being buffered in the storage unit 410_2 when received at the first buffer 110_1. - 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
FIG. 1A may be corresponding memory modules of the 3-D stacked memory, and the data flows may be output from the sources in response to memory read requests from the destinations. Here, the memory modules may include Double Data Rate (DDR) random access memories. - In the above description, the data
flow management device 100 ofFIG. 1A has been described. However, since the arbitratingunit 230 functions as the first through fourth arbitrating units 130_1 through 130_4 ofFIG. 1A , the dataflow management device 200 ofFIG. 2 may also operate in the same manner as described above. - Also,
FIG. 4 illustrates the case in which the storing unit includes a plurality of storage units as illustrated inFIG. 3A . However, as illustrated inFIG. 3B , when the storing unit includes one storage unit and a plurality of data flow are stored in the one storage unit, the storing unit ofFIG. 3B may operate in the same manner as described above with reference toFIG. 4 by using a local priority order of destination information. When the storing unit is formed as illustrated inFIG. 3B , the local priority order of the destination information may be determined using a fixed priority arbitration method, a round robin arbitration method, or a latency-based arbitration method. Alternatively, the local priority order may be determined with respect to only partial destination information from amongdestination information # 1, #2, #3 and #4. For example, the priority order of the destination information is determined as #1-#2, and it may be determined that a data flow ofdestination information # 3 is output after outputting a data flow ofdestination information # 1 and a data flow ofdestination information # 4 is output after outputting a data flow ofdestination information # 2. In this case, if there is no collision with a data flow that is output from a different buffer, the data flow of thedestination information # 1 is firstly output without being stored in the buffer and then the data flow of thedestination information # 3 is output, according to the local priority order of the destination information. Next, the data flow of thedestination information # 2 is output and then finally the data flow of thedestination information # 4 is output, according to the local priority order of the destination information. - 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
FIG. 5 , a method of data flow management in a network comprising a plurality of sources, a plurality of buffers, a transmitting unit and a plurality of destinations is provided. The method includes receiving at the plurality of buffers data flows from the sources (S510). The method further includes outputting the received data flows to the transmitting unit such that any two data flows, that are received from two different sources among the plurality of sources and are to be transmitted to a same destination among the destinations, are not output from the buffers to the transmitting unit at a same time (S520), and transmitting the data flows that are output from the buffers to the destinations from the transmitting unit to the destinations (S530). - 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.
Claims (20)
1. A data flow management device managing a plurality of data flows that are received from a plurality of sources and are to be transmitted to a plurality of destinations, the data flow management device comprising:
a plurality of buffers that receive the data flows from the sources and output the data flows that are received from the sources; and
a transmitting unit that transmits the data flows that are 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 that are received from two different sources among the sources and are to be transmitted to a same destination among the destinations.
2. The data flow management device of claim 1 , wherein if a first buffer of the buffers receives a first data flow to be transmitted to a destination, a second buffer receives a second data flow to be transmitted to the destination, and the first and second data flows are both set to be output to the transmitting unit at a first time, the second buffer prevents output of the second data flow to the transmitting unit at the first time and the first buffer outputs the first data flow to the transmitting unit at the first time.
3. The data flow management device of claim 2 , wherein if the first buffer receives the first data flow to be transmitted to the destination, the second buffer receives the second data flow to be transmitted to the destination, and the first and second data flows are both set to be output to the transmitting unit at the first time, the second data flow prevented from being output to the transmitting unit is buffered in the second buffer and output to the transmitting unit at a second time subsequent to the first time to be transmitted to the first destination.
4. The data flow management device of claim 3 , wherein if a third data flow to be transmitted to another destination is stored in the second buffer at the first time, the third data flow is concurrently output to the transmitting unit with the first data flow at the first time.
5. The data flow management device of claim 1 , wherein each buffer comprises an arbitrating unit that controls whether to output 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 to the transmitting unit.
6. The data flow management device of claim 1 , further comprising at least one arbitrating unit that controls whether to output a data flow received at a buffer of the buffers to the transmitting unit by using information on a destination of another data flow that is set to be output from another buffer to the transmitting unit.
7. The data flow management device of claim 6 , wherein the information on the destination of the second data flow is transmitted from the other buffer to the arbitrating unit through a bus dedicated to transmitting the information on the destinations of the data flows.
8. The data flow management device of claim 6 , wherein the arbitrating unit controls the buffers to output the data flows to the transmitting unit by using a global priority order between the buffers.
9. The data flow management device of claim 8 , wherein the arbitrating unit controls the buffers to output the data flows to the transmitting unit by using a local priority order between data flows received at a same buffer, and
wherein the local priority order is determined based on destinations of the data flows received at the same buffer.
10. The data flow management device of claim 1 , further comprising at least one arbitrating unit,
wherein each of the buffers comprises at least one storage unit storing at least two data flows that are received from at least one of the sources and are to be transmitted to at least one of the destinations, and
wherein the at least one arbitrating unit determines a local priority order of outputting the at least two data flows to be output from the storage unit to the transmitting unit based on the at least one of the destinations.
11. The data flow management device of claim 10 , wherein the at least one arbitrating unit determines a global priority order for outputting another at least two data flows received at different buffers.
12. The data flow management device of claim 1 , wherein the buffers concurrently output to the transmitting unit data flows to be transmitted to different destinations.
13. The data flow management device of claim 1 , wherein at least one of the buffers outputs to the transmitting unit a data flow received from one of the sources without buffering the data flow within the at least one buffer, if the data flow is determined not to be transmitted to a destination that is the same as a destination of another data flow received from another source, and if there is not any data flow that is set to be output from the at least one of the buffers to the transmitting unit before the data flow.
14. The data flow management device of claim 1 , wherein the transmitting unit comprises a bus.
15. The data flow management device of claim 1 , wherein the sources are memory modules, and the data flows are output from the sources by memory read requests from the destinations.
16. An on-chip network comprising the data flow management device of claim 1 , wherein the sources are memory modules of a three-dimensional (3D) stacked memory.
17. An on-chip network comprising the data flow management device of claim 1 , wherein the sources are Double Data Rate (DDR) random access memories.
18. A data flow management device managing data flows that are received from a plurality of sources and are to be transmitted to a plurality of destinations, the data flow management device comprising:
a plurality of buffers that receive the data flows from the sources and output the data flows that are received from the sources;
an arbitrating unit that controls the buffers so 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 that transmits concurrently the set of data flows that are output from the buffers to the different destinations.
19. The data flow management device of claim 18 , wherein the buffers output the set of data flows according to a local priority order determined based on which destinations the set of data flows are to be transmitted to and a global priority order determined based on at which buffers the set of data flows are received so that the set of data flows that are concurrently output from the buffers have different destinations.
20. A method of data flow management in a network comprising a plurality of sources, a plurality of buffers, a transmitting unit and a plurality of destinations, the method comprising:
receiving at the plurality of buffers data flows from the sources and outputting the received data flows to the transmitting unit; and
transmitting the data flows that are output from the buffers to the destinations from the transmitting unit to the destinations,
wherein any two data flows, that are received from two different sources among the plurality of sources and are to be transmitted to a same destination among the destinations, are not output from the buffers to the transmitting unit at a same time.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080085536A KR20100026509A (en) | 2008-08-29 | 2008-08-29 | Semiconductor device for transmitting a plurality of data flow |
KR10-2008-0085536 | 2008-08-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
US20100054130A1 true US20100054130A1 (en) | 2010-03-04 |
Family
ID=41725310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/403,363 Abandoned US20100054130A1 (en) | 2008-08-29 | 2009-03-12 | Data Flow Management Device Transmitting a Plurality of Data Flows |
Country Status (2)
Country | Link |
---|---|
US (1) | US20100054130A1 (en) |
KR (1) | KR20100026509A (en) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6038651A (en) * | 1998-03-23 | 2000-03-14 | International Business Machines Corporation | SMP clusters with remote resource managers for distributing work to other clusters while reducing bus traffic to a minimum |
US20020057712A1 (en) * | 2000-11-13 | 2002-05-16 | Hitachi. Ltd. | Packet switching apparatus |
US6460120B1 (en) * | 1999-08-27 | 2002-10-01 | International Business Machines Corporation | Network processor, memory organization and methods |
US7080168B2 (en) * | 2003-07-18 | 2006-07-18 | Intel Corporation | Maintaining aggregate data counts for flow controllable queues |
US20070266179A1 (en) * | 2006-05-11 | 2007-11-15 | Emulex Communications Corporation | Intelligent network processor and method of using intelligent network processor |
US7319669B1 (en) * | 2002-11-22 | 2008-01-15 | Qlogic, Corporation | Method and system for controlling packet flow in networks |
US20080165793A1 (en) * | 2002-07-09 | 2008-07-10 | International Business Machines Corporation | Memory sharing mechanism based on priority elevation |
US20080239949A1 (en) * | 2007-03-28 | 2008-10-02 | Nec Corporation | Load-balanced cell switch device and priority control method |
US20090073873A1 (en) * | 2007-09-17 | 2009-03-19 | Integrated Device Technology, Inc. | Multiple path switch and switching algorithms |
-
2008
- 2008-08-29 KR KR1020080085536A patent/KR20100026509A/en not_active Application Discontinuation
-
2009
- 2009-03-12 US US12/403,363 patent/US20100054130A1/en not_active Abandoned
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6038651A (en) * | 1998-03-23 | 2000-03-14 | International Business Machines Corporation | SMP clusters with remote resource managers for distributing work to other clusters while reducing bus traffic to a minimum |
US6460120B1 (en) * | 1999-08-27 | 2002-10-01 | International Business Machines Corporation | Network processor, memory organization and methods |
US20020057712A1 (en) * | 2000-11-13 | 2002-05-16 | Hitachi. Ltd. | Packet switching apparatus |
US20080165793A1 (en) * | 2002-07-09 | 2008-07-10 | International Business Machines Corporation | Memory sharing mechanism based on priority elevation |
US7319669B1 (en) * | 2002-11-22 | 2008-01-15 | Qlogic, Corporation | Method and system for controlling packet flow in networks |
US7080168B2 (en) * | 2003-07-18 | 2006-07-18 | Intel Corporation | Maintaining aggregate data counts for flow controllable queues |
US20070266179A1 (en) * | 2006-05-11 | 2007-11-15 | Emulex Communications Corporation | Intelligent network processor and method of using intelligent network processor |
US20080239949A1 (en) * | 2007-03-28 | 2008-10-02 | Nec Corporation | Load-balanced cell switch device and priority control method |
US20090073873A1 (en) * | 2007-09-17 | 2009-03-19 | Integrated Device Technology, Inc. | Multiple path switch and switching algorithms |
Also Published As
Publication number | Publication date |
---|---|
KR20100026509A (en) | 2010-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11003604B2 (en) | Procedures for improving efficiency of an interconnect fabric on a system on chip | |
US10805392B2 (en) | Distributed gather/scatter operations across a network of memory nodes | |
US11914528B2 (en) | Packet processing system, method and device utilizing a port client chain | |
EP3777059B1 (en) | Queue in a network switch | |
US20170017404A1 (en) | System And Method For Implementing Hierarchical Distributed-Linked Lists For Network Devices | |
CN116583823A (en) | Asynchronous pipeline merging using long vector arbitration | |
US20190012102A1 (en) | Information processing system, information processing apparatus, and method for controlling information processing system | |
US20070208887A1 (en) | Method, apparatus, and medium for controlling direct memory access | |
US11714779B2 (en) | NoC relaxed write order scheme | |
CN115114042A (en) | Storage data access method and device, electronic equipment and storage medium | |
KR101855379B1 (en) | Improved banked memory access efficiency by a graphics processor | |
JP4687925B2 (en) | Priority arbitration system and priority arbitration method | |
US20100054130A1 (en) | Data Flow Management Device Transmitting a Plurality of Data Flows | |
US20150109916A1 (en) | Method and apparatus for supporting reprogramming or reconfiguring | |
US9407578B2 (en) | System and method of arbitrating access to interconnect | |
US20170017568A1 (en) | System And Method For Implementing Distributed-Linked Lists For Network Devices | |
US20150227481A1 (en) | System interconnect and operating method of system interconnect | |
US20150039795A1 (en) | System interconnection, system-on-chip having the same, and method of driving the system-on-chip | |
RU2571376C1 (en) | Method and apparatus for parallel processing of digital information in computer system | |
WO2016051435A1 (en) | Data transfer apparatus and microcomputer | |
US8799529B2 (en) | Direct memory access controller and operating method thereof | |
US10346089B2 (en) | Data processing system having a write request network and a write data network | |
CN115964982A (en) | Topological structure of accelerator | |
JP2009169599A (en) | Bus device | |
KR20190068331A (en) | An Apparatus and a Method for Controlling Multi-Master Modules for Vehicles Based on Ring Communication Topology |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SAMSUNG ELECTRONICS CO., LTD.,KOREA, REPUBLIC OF Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KWON, WOO-CHEOL;YOO, SUNG-JOO;HONG, SUNG-MIN;REEL/FRAME:022728/0016 Effective date: 20090512 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |