US20100054130A1 - Data Flow Management Device Transmitting a Plurality of Data Flows - Google Patents

Data Flow Management Device Transmitting a Plurality of Data Flows Download PDF

Info

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
Application number
US12/403,363
Inventor
Woo-cheol Kwon
Sung-Joo Yoo
Sung-min Hong
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Assigned to SAMSUNG ELECTRONICS CO., LTD. reassignment SAMSUNG ELECTRONICS CO., LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HONG, SUNG-MIN, KWON, WOO-CHEOL, YOO, SUNG-JOO
Publication of US20100054130A1 publication Critical patent/US20100054130A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow 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

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • 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.
  • SUMMARY
  • 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.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • 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 of FIG. 1A, 1B or 2, according to an exemplary embodiment;
  • FIG. 3B is a block diagram of a storing unit of FIG. 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, and FIG. 5 is a flowchart for explaining a method of data flow management, according to another exemplary embodiment.
  • DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS
  • 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 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.
  • Referring to FIG. 1A, the data flow 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 transmitting unit 140. FIG. 1A illustrates a case in which the data flow 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 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 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 transmitting unit 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 transmitting unit 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 transmitting unit 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 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 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 FIG. 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 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.
  • FIG. 2 is a block diagram of a data flow management device 200 according to another exemplary embodiment.
  • Referring to FIG. 2, the data flow 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 transmitting unit 240. Similar to FIG. 1A, FIG. 2 illustrates a case in which the data flow 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 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 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 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.
  • Referring to FIG. 1A through FIG. 3A, 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 D1. Since the destination information of a data flow stored in the second 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 the third 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 the fourth storage unit 340 is #4, the data flow may be transmitted to the fourth destination D4.
  • 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.
  • Referring to FIGS. 1A, 2 and 3B, 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. Similarly to FIG. 3A, #1, #2, #3 and #4 represent destination information. If a data flow having destination information #1 is to be transmitted to a first destination D1, a data flow having destination information #2 is to be transmitted to a second destination D2, a data flow having destination information #3 is to be transmitted to a third destination D3, and a data flow having destination 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 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 D2 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. Also, the data flow to be transmitted to the third destination D3 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, and the data flow to be transmitted to the fourth destination D4 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.
  • 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 of FIG. 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 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 FIG. 4, 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. Thus, according to another exemplary embodiment, since 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.
  • 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 of FIG. 1A has been described. However, since 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.
  • Also, FIG. 4 illustrates the case in which the storing unit includes a plurality of storage units as illustrated in FIG. 3A. However, as illustrated in FIG. 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 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. When the storing unit is formed as illustrated in FIG. 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 among destination 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 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. In this case, if there is no collision with a data flow that is output from a different buffer, 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. Next, 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.
  • 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.
US12/403,363 2008-08-29 2009-03-12 Data Flow Management Device Transmitting a Plurality of Data Flows Abandoned US20100054130A1 (en)

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)

* Cited by examiner, † Cited by third party
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

Patent Citations (9)

* Cited by examiner, † Cited by third party
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