eco16 family of 16-bit processors
The eco16 family of 16-bit microprocessors is targeted at embedded control and DSP applications. The family defines three ISAs:
ISAs (Instruction Set Architectures)
The eco16b is a 16-bit microprocessor architecture for embedded control and compute applications. Main target are applications with high performance and low data address space requirements.
The eco16b is a load/store architecture. All operands of computation instructions are either constants or contained in registers. Load/store instructions are used to transfer operands between registers and memory.
The eco16b base ISA defines a generic and complete instruction set for efficient high level language compiler implementations.
The eco16d is an extension of the eco16b base ISA and is fully backward compatible with the eco16b. Main target are 16-bit DSP applications including low-cost audio. The dsp extension adds only a few special registers but no general purpose registers to the programming model of the eco16b ISA. Main additions are addressing modes with memory source operands and special add/subtract instructions that improve the performance and precision of DSP algorithms. A 2-entry accumulation extension cache (patented) enables 32-bit accumulation precision. With the same pipeline architecture and computation resources implementations of the eco16d processors are only slightly larger than base ISA implementations.
The eco16d deviates from the puristic load/store architecture of the eco16b. Some performance critical DSP instructions have addressing modes with one source operand in memory
The instructions with additional addressing modes and the additional, special add/subtract instructions can't be used easily from high level languages. The targeted use model suggests hand optimized assembler routines for performance critical DSP functions using the special addressing modes and instructions. The less performance critical higher layers and control code is written in C and compiled to the eco16b base ISA instruction set.
The eco16i is an extension of the eco16b base ISA and is fully backward compatible with the eco16b. Main target applications are image-processing, digital video and graphics. The ISA extension is of 4-way SIMD DSP type and has a separate register file. In typical implementations the main share of the hardware resources is spent for the extension. The overhead of the base ISA (used for control code) is relatively low so that the overall resources are efficiently used for video and image processing.
The eco16i deviates from the puristic load/store architecture of the eco16b. Some performance critical extension instructions have one or two source operands in memory.
The extension instructions use operand types and perform operations that are difficult to support from high level languages. The targeted use model is to implement libraries with hand optimized assembler routines for the video and image processing functions. The control layers above can be written in C and compiled to the eco16b instruction set.
The eco16bl light implementation is focused on high performance and moderate resource consumption. A 3 read-ports register-file makes sure that almost all instructions potentially can be executed in one cycle effective. A decoupled unit for instruction fetch and flow-instruction execution together with separate execution units for computation and for load/store instructions enable high pipeline throughput.
With 16/32-bit variable length instruction coding and a 32-bit instruction bus the average instruction fetch rate per cycle is > 1 and fills the decoupling buffer between the instruction fetch unit and the computation and load/store execution units. A filled buffer enables zero cycle effective execution time for flow change instructions (branch, jump, return).
Branch speculation, pre-fetching and conditional instructions minimize performance penalties of program flow changes. Average IPCs strongly depend on instruction sequences e.g. branches and operand dependencies. Performance optimized sequences can get close to an IPC of 1, highly optimized sequences with effective zero cycle flow change instructions can achieve IPCs > 1.
The eco16dl light implementation has the same basic pipeline architecture as the eco16bl. Only difference is an extra execution unit for multiply/MAC instructions. To support this unit the register-file is upgraded to 4/3 read/write ports.
The eco16il light implementation has the same basic pipeline architecture as the eco16bl. With the dual data bus architecture and auto-update addressing for both memory source operands a register-file 5/5 read/write ports is required.