A flexible data pipeline architecture for accommodating substantially all types of software computational requirements for varying applications, comprising:
- a programmable embedded processor having a plurality of pipeline stages;
- the pipeline stages including execution units and memory units;
- an interconnecting switch, each of the pipeline stages having a direct connection to the interconnecting switch, the interconnecting switch being able to form direct interconnections between the pipeline stages, the direct interconnections between the pipeline stages being variable in response to varying application instruction sequences so as to interconnect the pipeline stages in any desired number and in any desired order;
- and
- interconnections between the pipeline stages being reconfigurable and operating modes of at least some of the pipeline stages being changeable under control of each individual instruction as it is executed.