1. A programmable data flow processor operable for performing data transfers between a plurality of devices, the data flow processor comprising: a plurality of ports each for coupling to a device; programmable configuration registers which are operable to receive data for programming the data flow processor for data transfers between selected ones of said plurality of ports; a stream processor coupled to each of said plurality of ports and coupled to said programmable configuration registers, wherein the stream processor is operable to access data comprised in said programmable configuration registers and in response configure a plurality of data streams between said plurality of ports, wherein each of said plurality of data streams is transferred between at least one source port and at least one destination port, and wherein said stream processor is operable to transfer said plurality of data streams between said plurality of ports; wherein the data flow processor includes at least one buffer for temporarily storing data transferred between two devices; and wherein the stream processor determines an ordering of transfers between said plurality of ports based on buffer availability.