|
What is Diamond?
Diamond is a set of software tools that allow you to build efficient multiprocessor applications. You write your application using standard languages (mainly C and VHDL) according to a simple model that allows for great flexibility and clarity.
Designing Multiprocessor Applications
Diamond does not attempt to break a monolithic program into pieces that will execute on the multiple processors in your hardware; many attempts have been made to achieve automatic decomposition of code for multiprocessor systems, and none has come anywhere close to creating applications with the flexibility and level of performance most 3L customers require.
With Diamond, you start by developing your code as a number of independent, communicating tasks based on your unique knowledge of the requirements of your application. At this stage, you do not need to consider the number of processors you are going to use, or their types, or the ways in which they communicate.
You go on to describe the hardware that supports your application in terms of named processors and connections between them that allow the exchange of data. Just as the software description was independent of the hardware, this hardware description is independent of the software.
Finally, you map your software and hardware descriptions together by describing which parts of your software are to execute on which processors. Diamond can then construct and optimize your application based on this information.
Building Applications using Diamond
The way you build and execute applications using Diamond differs substantially from the more old-fashioned techniques used in other environments, particularly Code Composer Studio (CCS). CCS has been designed to produce applications for single processor systems; its only support for multiprocessor systems is nothing more than allowing several separate applications to be executed at the same time. For obvious reasons, it has no support for FPGAs.
When Diamond was originally designed more than twenty years ago, it took the diametrically opposite view and considered multiprocessor systems as an integrated whole. This, and the philosophy of keeping things as simple as possible, has led to a product that is both easy to learn and extremely powerful in generating efficient multiprocessor applications. While Diamond does not use the project facilities of CCS to build applications, it does make use of the compiler, assembler, archiver, and linker, which it calls directly to build code for DSPs.
|