|
An entirely new and exciting market
and technology segment is emerging
with the growth of FPGA-based highperformance
computing (HPC). To
date, technical obstacles have made
practical success in this area more of a
challenge than an opportunity. This
year, the FPGA-based HPC market
takes off, with system vendors (such as
Cray and Silicon Graphics) and FPGA
board suppliers (such as Nallatech)
spearheading the hardware side of the
equation. Now Mitrionics is providing
its Mitrion Platform for fast and easy
software programming of FPGAs.
FPGAs have the potential to be
great application accelerators by working
as co-processors, off-loading computationally
intensive tasks from
conventional CPUs. The promise of
achieving orders of magnitude acceleration
in processing has fueled a number
of projects and enterprise ventures
over the last decade. Some were
proven very successful, while others
were not. Until now, the critical component
of converting applications to
run on FPGAs has depended on the
services of highly skilled hardware
designers. This has put the benefits of
FPGA performance boosts out of
reach for the majority of software
developers, who do not have the ability
nor inclination to go into the extensive
details of designing hardware.
At least that was the case until now.
With the Mitrion Platform, software
developers have the ability to convert
applications to be accelerated on an
FPGA without knowing the first thing
about the complexities of hardware
design. The Mitrion Platform allows
FPGA-based HPC applications to be
written in days or weeks with just a few
hundred lines of code – versus taking
months or years and tens of thousands
of lines of code to write with other
Putting FPGAs to Work
FPGAs are potentially small supercomputers.
One of the main reasons FPGAs have
not been prevalent in supercomputing is
their lack of programmability. The users
and application developers for supercomputers
do not know hardware
design, and have no wish to
learn it. These users are often
researchers with their own complex
field of work.
The Mitrion Platform gives
these users access to the performance
of FPGAs, while still
allowing them to write their
algorithms in software. It is
applicable to fields such as gene
sequencing, weather prediction,
image analyses, industrial
automation, and geosciences.
You will find FPGA-based
application acceleration highly
attractive in two main areas:
from a raw processing performance
perspective and because of
the significant reduction of
power consumption compared
to clusters of regular microprocessors.
Many problems
within these areas have been difficult
to address with traditional
FPGA design methods, mainly
because of their complexity.
The Mitrion Virtual Processor
Compiling software into a hardware
design is not a trivial task.
The program code that makes
up the software and the transistors,
wires, and gates that make
up the hardware are very different
things. We say that the best
solution is simply not to do it.
Traditional processors solve
this problem by using the von
Neumann architecture, a
machine (designed in hardware)
that reads the program code in
sequence and executes the
instructions. The problem with
the von Neumann architecture is
that it really does not lend itself
to the high level of parallelism that is required to extract the performance
benefits that you can get from an FPGA.
Pontus Borg and Stefan Möhl, two
“software guys” and the founders of
Mitrionics, realized that the concept of an
abstract machine that executes the software is the key to bridging the software-to-hardware
gap. Software developed for the
Mitrion Platform is compiled into instructions
for the Mitrion Virtual Processor,
which is then adapted accordingly and
instantiated in programmable logic. It
delivers massive parallelism and
high silicon utilization, and is
aimed at the acceleration of calculation-intensive programs.
The Mitrion Virtual
Processor performs thousands of
operations simultaneously by
allocating computational units
for each instruction. The finegrained
nature of the processing
elements permits every individual
operation of the program to
run in parallel.
To assure sufficient memory
bandwidth, the Mitrion processor
operates with simultaneous
access to multiple shared external
memories as well as all
internal memory banks in the
FPGA. Using heavy pipelining,
data is communicated directly
between the thousands of processing
units, and we reduce
the number of memory accesses
and I/O performance bottlenecks.
With the Mitrion Virtual
Processor, we are able to eliminate
the direct translation of
software to hardware.
The Mitrion-C Programming
Language
To exploit the parallel processing
capabilities of the Mitrion
Virtual Processor, traditional,
sequential programming languages
are not sufficient. For
that reason we have developed
Mitrion-C, an implicitly parallel
C-family programming language.
Mitrion-C helps you (as
a programmer) reveal and utilize
the parallelism inherent in
your algorithm. It gives you
access to implicit parallelism.
This means that parallelism is found automatically, without you having to
manually specify which parts of the algorithm
are to be executed simultaneously.
With Mitrion-C, many hundreds of dissimilar
parallel interacting operations are created
without the risk of deadlocks or race
conditions. Mitrion-C is a C-family language,
which is easy to learn and has a syntax
familiar to C programmers.
Developing Software for
the Mitrion Virtual Processor
For the great majority of applications, only
a small amount of code limits the performance.
Typically, when you develop an application
to be run on the Mitrion Virtual
Processor, you would identify the critical
code and write that in Mitrion-C. You
would then write the rest of the application
in the language of your choice to execute
on a host CPU, calling the critical code to
be run on the Mitrion processor.
The Mitrion Software Development Kit
comprises the Mitrion-C compiler, a
graphical debugger, a code simulator, and a
processor configurator. A C/C++ library is
included that gives easy access to the
Mitrion processor from the host application.
Several integration modules interface
the Mitrion Virtual Processor to a number
of system platforms.
The graphical debugger and code simulator
give you a hierarchical overview of all
the parallel operations and data dependencies
in the program. Figure 1 illustrates the
results from running the debugger and
simulator on the sample Mitrion-C code
shown in Figure 2; Figure 3 shows a nontrivial
example. Through the debugger, you
will find it easy to locate programming
errors and identify performance bottlenecks
and inefficient code. This lets you
efficiently refine your Mitrion-C program
and then recompile.
The final output from the Mitrion
Software Development Kit is a hardware
design in VHDL for a Mitrion Virtual
Processor, programmed and optimized to
execute the software algorithm. You will
then use third-party tools to complete
synthesis and place and route. Because the
algorithm you are developing can be tested
and simulated inside the Mitrion
Software Development Kit, there is no
need for tedious and time-consuming iterations
through the synthesis and place and
route steps to confirm the functionality of
your finished Mitrion Virtual Processor.
Conclusion
The Mitrion Platform allows rapid software
development for FPGA-based systems
to be completed by regular programmers
who have no hardware design experience.
The resulting applications are typically
accelerated 10x to 30x compared to execution
on a sequential CPU, with a fraction
of the power consumption.
The development of FPGA technology
is set to outpace the performance of
traditional CPUs. Solutions created on
the Mitrion Platform leverage this
through the platform’s portability. When
a new, more powerful FPGA is available,
all you have to do is reconfigure the
Mitrion Virtual Processor to take advantage
of the capabilities of the new device.
For more information, contact
Mitrionics Inc. at (310) 558-9495, visit
www.mitrionics.com, or e-mail info@mitrionics.com.
Printable PDF version of this article with graphics. (12/1/05) 295 KB
|