In addition, the level of performances does not need to be tremendous. An ASIP being essentially dedicated to streaming calculations, there is no need for the more advanced tricks of modern microprocessors: multiple execution units, superscalar issuing, out-of-order execution, branch prediction, large caches, multi-threading support etc… are normally irrelevant (as far as the generic purpose part of the ASIP is concerned).

Yet, in its essence, a C programmable ASIP closely resembles a microprocessor core. Instructions are usually decoded through a several-stage pipeline. There could be load/store RISC-oriented ASIP, or CISC-like ASIPs.

ASIPs are not archaic designs either. In order to achieve high computing speed, they are usually data-parallel oriented architectures, and this can be declined along several, non-mutually exclusive, lines (VLIW, SIMD, streaming architecture).

Finally, compared to CPU cores, an ASIP exists within a system, and its interfaces and memories are tailored for and around this system. Word width, memory interfaces, boot model, are all governed by how the ASIP interfaces to the rest of the system, whereas a stand-alone microprocessor on the opposite will govern the surrounding world structure.

Many of the architectural decisions are actually imposed by the nature of the algorithms (or class of algorithms) to be run. It follows that an ASIP meant for voice encoding will not be suitable for encryption or image processing. In fact, it will simply not be able to run