Hardware-software codesign is modern technique to obtain high productivity of real-time and embedded systems.
The key feature of this approach is simultaneous development of program and target processor to achieve better
match to target system requirements.
Success of this approach was assisted by progress of hardware description and specification tools. Due to this progress hardware development time was reduced and became comparable with time needed to produce optimized code for general-purpose processor. Often even slight modification of target processor results in sufficient advantage in comparison with deep code optimization.
So, unlike optimizing compilation, in hardware-software codesign area main efforts are concentrated on customization of target computational device to fit specific properties of the software. Under this approach efficient utilization of target processor custom features can be considered as optimization task.
In contrast to general-purpose processors which have to be able to execute any program distinctive feature of codesigned system is that target processor will execute only concrete, >given program or narrow class of programs with similar properties.