Unal Color of Education Research & Development
Increasing system complexity has created a pressing need for better design tools and associated methodologies and languages for meeting the stringent time to market and cost constraints. Platform-centric and platform based system-on-chip (SoC) design methodologies, based on reuse of software and hardware functionality, has also gained increasing exposure and usage within the Electronic System-Level (ESL) design communities. Embedded systems are designed for dedicated applications running in control systems. The unique feature of such systems is the capability to perform timely and predictable operations in response to concurrent requests arriving from the external environment. To create an effective embedded system one must properly employ the appropriate system architecture, hardware/software interfaces, peripheral devices, and software components.
In Embedded application people first write assembly language programs to control peripherals, handle interrupts, and perform I/O operations, then perform experiments with a target single board microprocessor system integrated with typical interface circuits such as programmable timers, serial ports and parallel ports. Unfortunately, this approach fails to keep pace with industry technology. This lag is prompted by the advent of rapid prototyping development of microelectronic systems that includes:
a. SoC-based platforms for embedded applications:
The system-on-a-chip (SoC) devices have made great progress along with the ever-growing number of transistors that can be integrated on a chip.
b. Abundant I/O interfaces:
Besides programmable timers, serial ports, and parallel ports, there are several new I/O standards designed for human interfaces, multimedia, networking, and inter-IC/device communication.
c. I/O programming with high-level languages:
For software portability, modularity, and readability, high-level programming languages have been used in all levels of software development. An appropriate use of programming languages and software structures often leads to reusable embedded software.
Mega-gate FPGAs now allow complete embedded systems to be implemented on a single reconfigurable logic chip, including softcore or hardcore processors - so-called reconfigurable system-on-chip (rSoC). Because softcore processors are implemented on a configurable logic fabric, they are not as area and power efficient as fixed microprocessors implemented directly on custom integrated circuits. The benefit of softcore processors is that they can be modified, on an application by application basis, to better fit the requirements of that particular application.
For example, if an application requires fast floating point operations, then hardware floating point support can be provided on the softcore processor. Otherwise, the FPU is not needed. If no floating point is used for that application, even software floating point implementations are not needed.
Processors could be customized by word size, cache size, arithmetic operations supported, etc. The complete system can be customized by including just the set of peripherals required for that application. One area which has not been widely explored is customization of the instruction set of the processor. Usually, in order to get reasonable clock speeds, the softcore CPU core is hand optimized for its given instruction set. Users of softcore processors such as Xilinx’s Microblaze and Altera’s Nios do not get source code for the CPU, and cannot change the instruction set directly. Customizations to the CPU are limited to those available from the supplier.
Additionally, changes to the instruction set require changes to the compiler, which has proven difficult to do automatically. However, there appear to be useful optimizations that could be made to an instruction set which can result in improved CPU performance and smaller code size. Possible optimizations include instruction format, addressing modes, conditional execution, etc.