A data flow architecture or language performs a computation when all the operands are available. Data flow is one kind of data driven architecture, the other is demand driven. It is a technique for specifying fine-grain concurrency, usually in the form of two-dimensional graphs in which instructions that are available for concurrent execution are written alongside each other while those that must be executed in sequence are written one under the other. Data dependencies between instructions are indicated by directed arcs. Instructions do not reference memory since the data dependence arcs allow data to be transmitted directly from the producing instruction to the consuming one.