1. A reconfigurable and programmable multi-core processor that can be configured and programmed to conform to the requirement of a wide range of applications, the processor comprising: a plurality of processing units capable of executing intrinsic operations; a plurality of memory blocks; a plurality of cognitive data routing units that can be configured or programmed to route data from any of the processing unit to any of the memory blocks, from any of the processing units to any other of the processing units, from any of the memory blocks to any of the processing units, and from any of the memory blocks to any other of the memory blocks; a cognitive on-chip network comprising a network of ports, each port comprising a data channel and a protocol channel, the network being able to connect ports together by connecting the output data channels to the input data channels and the bi-directional protocol channels to each other; the cognitive data routing units and the cognitive on-chip network being able to form communication channels between the processing units with or without assistance from the memory blocks.