A Specific and Unique Architectural Approach |
|
Viva for the High Performance Computing Market: The trend by those beginning to venture into the world of reconfigurable high-performance computing is to utilize FPGA development tools for programming that are "C" based. C is the natural reaction and trend because it is the development language that most application programmers are already familiar and comfortable with. Thus, it makes sense that in order to create a bridge or transition from standard application programming that targets microprocessor-based hardware to programming reconfigurable FPGA based hardware; you would introduce tools that the developer community is familiar with. This is a logical assumption, yet we are seeing that this approach has not only advantages, but distinct disadvantages as well.
First, let's describe what it means to program FPGAs and why you would do it in the first place. FPGAs have been used historically by hardware design engineers to design, validate, and test circuitry as an intermediate step, ultimately targeting the design for use in an ASIC (Application Specific Integrated Circuit) such as a custom DSP or other special purpose chips. ASICs are fast and highly specialized, and thus very efficient. They are very costly to bring to market, and thus are usually used in mass-market applications. For the past twenty years, text based hardware design languages (HDLs) such as VHDL and Verilog have been used for designing, or programming such custom circuitry. FPGAs have had much slower clock speeds than processors, and thus were never originally intended for use as processing elements themselves.
Over the years, FPGAs have been catching up to processors, and have outstripped Moore's law, becoming much denser, faster, and cheaper at a much faster rate than microprocessors. In fact, today the majority of designs for custom circuitry can now remain on an FPGA for execution instead of going through the long and expensive process of bringing a custom ASIC to market. Could these FPGAs ultimately be used to accelerate or even replace in some instances traditional microprocessors for running highly parallel, compute intense applications? Back in the mid-90s, Starbridge founder and CTO Kent Gilson apparently believed so, and began the quest for building the ideal development environment for FPGAs. This foresight has produced the Viva programming environment, which is specifically designed for exploiting today's high-performance FPGAs.
Although the C based FPGA programming environments today can facilitate an application programmer in putting circuitry (Cores) into FPGAs by making simple redirected function calls to place these cores in the FPGA based hardware, they were never really designed as parallel hardware design languages for creating optimal cores, and especially for creating complex designs. C and C++ were never actually designed to do parallel programming in reconfigurable FPGA hardware, and mixing them with hardware design languages such as VHDL to accomplish tasks that they were never designed to do can produce an awkward and challenging experience for programmers. These solutions are sufficient for placing cores and simple single chip designs into a single FPGA, but in order to maximize performance with larger parallelized applications in a deep-scaling (multiple FPGA designs, and multiple FPGA board to board designs) environment, these tools will need to greatly evolve their capabilities.
Viva, the FPGA design environment by Starbridge, was designed from inception to enable engineers to quickly design, prototype, test, debug, simulate, optimize, and then run their programs in FPGAs. These designs can then be easily inserted into the target environment through API calls to the target reconfigurable hardware from C in Linux or Windows environments.
For more information, or for a supported Viva test drive, please contact the Starbridge sales department at 801-984-444, or email us at: sales@starbridgesystems.com.