SimCon - Fortran Analysis, Engineering & Migration About UsDownloadsPricing Home | SimCom logo
$keywords!
Research - FPGAs and Parallel Programming
Consultancy
Migration & Software QA
 
WinFPT & FPT
WinFPT
FPT Summary
 
Error Correction
Hosts
Metrics
Migration
Optimization/Optimisation
QA
Reports
Security
Standardisation  
Updates & Release notes
$keywords!
WinFPT & FPT - Special Issues
Checking Expressions
Continuation Lines
Datapool
File Handling
File Names
Hex Numbers
Program Control
Record/Replay
Tab Format
Tracing Execution
 
Gould-SEL
VMS & Unix
 
Associated Companies
IQS Solutions
 
 
FPGAs and Multi-core Machines

FPGAs are Field programmable Gate Arrays. They have a far higher density of programmable gates than more conventional computing systems, but a lower clock speed. They offer enormous potential for fine-grain parallel computing, where the results of individual computations are almost immediately available to other computing elements. This is quite unlike the coarse-grain parallel computing used in modern supercomputers, where there are significant delays in transferring data between different computing elements.

Quad-core PC chips are now widely available. A new generation of parallel chips is under development where there may be as many as 64 parallel cores in a closely coupled system. These devices are far less parallel than FPGAs but are faster and may offer similar scope for fine-grain parallelism.

 

Parallel Algorithms

Algorithms for fine-grain parallel computing were developed by a member of SimCon in 1983 for the Applied Dynamics International AD10 simulation computer. This machine was by far the fastest real-time simulation system available in the mid 1980s, and was used in the design of Space Shuttle, comunications satellites, nuclear powerplant, helicopters and a range of military hardware. The algorithms are applicable to Fortran or C programming for FPGAs and multicore systems. Research is in progress in collaboration with Liverpool Hope University and The University of Cape Town to apply the algorithms to these devices.

 

Fixed-point Programming

FPGAs are most efficiently programmed in fixed point arithmetic. Real numbers are represented by scaled fractions. Each real value, x, is assigned a maximum absolute value, scale(x), and is represented internally by an integer which is calculated as X = 2**(n-1) * x / scale(x) where n is the number of bits used in the scaled fraction. Usually, n would be 32 bits, but in an FPGA this is not necessarily the case.

The AD10 was also a fixed-point machine. A system was developed to maintain the coefficients and data structures required to support the scaled-fraction arithmetic. For example, where


      a = b + c

and a, b and c have different scales, a set of coefficients must be generated to correct the values so that the effective calculation would be:

      A = ( B + C * ( scale(c) / scale(b) ) ) * ( scale(b) / scale(a) )

where A, B and C are the scaled fractions representing a, b and c. This system will be applied in the FPGA programs.

 

Copyright ©1995 to 2008 Software Validation Ltd. All rights reserved.