CoSy Technology
Background
Because of the specific nature of embedded processors
and strong requirements on software tools, the construction of
optimizing compilers can be a complicated task that is best left to
the experienced. CoSy’s open infrastructure and easy targeting are
definitely making the life of compiler engineers much easier.
Obtaining results with CoSy goes beyond time and cost effectiveness.
The quality and robustness of the CoSy system and the compilers it
generates are equally important. What is a quick-turn compiler worth
if it doesn’t pass validation? With each release and update of CoSy,
compiler experts at ACE go to great lengths performing rigorous
testing and validation of all CoSy components in order to insure
that the generator system produces correct compilers. For this we
use our in-house developed SuperTest environment, as well as a
range of industry-standard compiler test and validation suites.
CoSy
In CoSy, optimal code selectors and optimization strategies are
generated from descriptions that reflect the features, parallelism
and timing of the architecture. And as the focus in producing
compilers is moved to creation of the processor description,
optimizing compilers can be available as soon as architecture
specifications are stable.
Compilers built with the CoSy compiler development system are
inherently of high quality and performance. To reach this level,
front-ends, analysis algorithms, optimization algorithms, code
selectors and register allocators are all engineered and generated
as self-contained engines. These engines perform their specific
function on the IR
in co-operation with all the other engines configured into the
compiler. Typically there will be over fifty of these independent
engines in a compiler. A generated compiler supervisor controls the
order in which the engines are invoked, and their interactions.
Particularly with respect to the latest powerful processor
architectures, the dynamics of compiler optimization can be quite
challenging. During the compilation process many decisions
are made in various phases of the compiler. Such decisions may seem
appropriate in the context of a particular phase, but may be
suboptimal, or even counter productive from the perspective of
subsequent phases. With CoSy's independent engines, interacting on
the IR and
managed by the supervisor, the phase ordering challenge is more easy
to grasp, as the basis is provided for powerful performance and space
optimization strategies.
Target architectures
CoSy's generic design makes it the perfect environment for
development of compilers for any class of processor architectures.
As a natural consequence, CoSy has been used for the
generation of compilers for dozens of different processor
architectures ranging from 8/16/32/64-bit
CISC
microcontrollers to
RISC,
DSP,
NoC and
VLIW
processors.
Specific analysis engines in CoSy make sure that the instruction
level parallelism that is inherent to
DSP and
VLIW
architectures is fully taken into account. Based upon this
information conditional execution and advanced scheduling
techniques, among which software pipelining, ensure optimal use of
the architecture's dedicated registers,
ALUs, Load/Store
units, pipelines, etc.
Additionally, the ACE original DSP-C and recently accepted ISO/IEC
Embedded C language extensions provide
the necessary high-level language support to efficiently program
embedded signal processing algorithms in C. Support for multiple
memory spaces, fixed-point (fractional) data types and circular
arrays and pointers has been built in the very foundations of
CoSy, thus enabling CoSy DSP compilers to produce code that is on
average 5 times faster and 36% smaller than with standard C.
Lately we have seen the advent of reconfigurable processor
architectures, which allow adaptation of the original design far
beyond the standard peripheral functions, such as internal
RAM,
ROM and cache size.
The more advanced configurable architectures allow significant
flexibility of the design, including configuration of the number
and depth of pipelines, the number of ALUs and subsets or supersets to
the instruction set. This obviously is the ideal playground for
CoSy, for these kind of 'minor' changes to the processor
description can swiftly be turned into a newly generated,
dedicated compiler. Providing prompt feedback on the effectiveness
of the latest design step of the reconfigurable architecture, CoSy
thus enables true integrated Hardware/Software design.
|
A wealth of Analysis and Optimization techniques |
|||
Analyses:
|
Optimizations:
|
||








