There were a lot of great technologies and products discussed at DesignCon in San Jose, Calif. One topic, presented by AMD corporate vice president and CTO Joe Macri, which should be of key interest for engineers designing test, measurement, and control systems, is that of heterogeneous systems.
On the surface, the concept of heterogeneous systems may sound too far removed or futuristic for everyday life in the engineering system design trenches. However, similar to the advances in system performance from multicore processors in recent years, heterogeneous systems will drive even further performance with regard to measurements speed, loop rates, real-time processing, and less expensive systems.
In simple terms, the concept of heterogeneous systems is the use of multiple processing targets in your system architecture, e.g., processors, FPGAs, GPUs, etc. This type of computing architecture enables engineers to distribute data, processing, and program execution among different computing nodes that are each best suited to specific computational tasks. For example, an RF test system that uses heterogeneous computing may have a CPU controlling program execution with an FPGA performing inline demodulation and a GPU performing pattern matching before storing all the results on a remote server.
As you can imagine, this approach provides incredible software-defined flexibility to adapt to future performance and system size requirements. The most common heterogeneous systems in test, measurement, and control today primarily use multicore processors and FPGAs, while more systems are likely to include ARM processors and GPUs in the future. Below is a brief overview of these common targets used in heterogeneous test and control systems:
- The central processing unit (CPU) is a general-purpose processor with a robust instruction set and cache, as well as direct access to memory. Sequential in its execution, the CPU is especially suited to program execution and can be adapted to almost any processing activities. Advances in the last decade have led to multiple computing cores on a single chip, with most processors running two to four cores and many more cores planned for the future. These multicore systems enable operations to occur in parallel, but require the programmer to implement a multi-threaded application with an eye toward parallelization to fully take advantage of these systems’ capabilities.
- The graphics processing unit (GPU) is a specialized processor originally developed for the rendering of 2D and 3D computer graphics. The GPU has seen tremendous advances due to the need for more realistic graphics in computer video games. It achieves its performance by implementing a highly parallel architecture of hundreds to thousands of cores specifically suited to vector and shader transforms. Engineers are trying to adapt these specialized processing cores for use in general-purpose processing. Performance gains have already been seen with the use of GPUs in the areas of image processing and spectral monitoring.