Agilent Life Sciences goes multicore with FPGAs
Design of a new liquid chromatography instrument required the porting of software from a single core processor to a multicore processor platform, and to get the best from the platform it is important to understand how the software will make use of it, writes Peter Stemer from Agilent Life Sciences.
Semiconductor technology has a role to play in validating the authenticity of ingredients in what we eat. ?One of the most useful techniques available to detect the presence of unwanted substances in any number of daily items, for example, is the use of high performance liquid chromatography (HPLC).
Sometimes referred to as high pressure LC, it uses an established scientific technique of separating particles held in small samples across a spectrum to determine the composite elements of a substance suspended in a liquid. It is a technique used not only in toxicology but wherever chemicals are found, such as the food industry, agriculture and environmental control.
Agilent Technologies has been supplying HPLC systems since 1984. These are machines that include not only electronics but valves, pumps and heaters.
As the technologies developed, the range of applications that could make use of HPLC grew and with that came a demand for greater performance in terms of accuracy and speed of results.
Current HPLC instrument module design employs a PowerPC processor coupled to an FPGA, but for the next generation design, called Fusion, the platform will be based on the Zynq programmable system-on-chip (SoC) device from Xilinx. ?The Zynq-7000 platform is a development of the traditional FPGA format which tightly couples hardware circuit elements with the FPGA fabric and a dual-core ARM processor sub-system.
?The decision to use the Zynq was made to allow as much design reuse as possible. Both the firmware and the VHDL code used in the Nucleus range can be ported to the Zynq-7000 platform. The design team will develop new modules initially, but over time it will also work at replacing old modules with a single, common architecture.
It can take up to three years to fully develop a module for HPLC instrumentation, so any design reuse that can be achieved will be critical. ?The Nucleus family of modules employed a PowerPC processor, while the Zynq-7000 platform uses the ARM Cortex-A9. Porting the software will make use of the use of ENEA’s operating system, OSE.
Porting any software application from a single core to a multicore platform can make sense but in order get the best from the platform it is important to understand how the software will make use of it. ?ENEA’s real-time operating system, OSE, is now ‘multicore aware’ and to help with the process ENEA has developed a Multicore Migration Platform.
Instinctively most software is written to execute linearly; the programming language C doesn’t inherently support parallelisation, so when moving to a multicore platform it is important to understand the different approaches possible. ?
Specifically, these are symmetric multiprocessing (SMP) and asymmetric multiprocessing (AMP). In general terms, the former assumes the operating system will run on one core and the application software will be free to run on whichever core has most availability at any given time, while an AMP approach often assumes each core will have an instantiation of the operating system running on it and that the application will be ‘hard-partitioned’ such that specific functions are ‘tied’ to run on a specific core. ?
Where multiple processors are being replaced with a single multicore processor, AMP may be the most appropriate approach.
Where a single core is being replaced with a multicore device, as in the case with Agilent’s HPLC modules, then SMP may seem like the right solution.
In practice, however, the correct solution will also depend heavily on the software; where there exists a high degree of parallelisation in the code an AMP approach may be better than SMP, but for code with a large number of interdependencies the best solution could be SMP.
Another consideration is the use and distribution of shared resources in the multicore platform, such as memory. This can have an effect on which approach is better suited to a given application.
In many cases the best approach will be to employ a hypervisor; a software layer that provides abstraction between the operating system and the underlying hardware architecture. This allows the application software to ‘believe’ it is running on a single core, when in reality the hypervisor decides what runs on which core, by closely monitoring and controlling the available resources.
It is important to identify and deal with shared resources, how and where to partition code and how to use the load balancing framework built in to the multicore version of OSE.
A key requirement of Agilent’s design team is that the hardware platform they develop will not only support all the different modules produced today but have the ability to grow as the demand for more features and performance in the HPLC instruments increases over the next 10 years.
Authors are Stephane Monboisset, senior manager, processing platforms product marketing, Xilinx and Peter Stemer, R&D manager system control, Agilent Life Sciences.