Mercury designs and builds embedded "multicomputers", which may be considered to be either loosely coupled NUMA computers or tightly coupled clusters. Despite being marked as COTS, the computers are generally customized to better fit application requirements. Popular applications include airborne military radar, sonar, software-defined radio (cellular telephone base stations for example), video transcoding, chip wafer inspection, medical scanners of all types, and classified projects.
Mercury hardware is generally about packing huge numbers of decently-fast processors into a tiny space while keeping power requirements tolerable. Many dozens of CPUs or even a few hundred CPUs will be packed into a space that is only a foot or two (half a meter) on each side. Vector math and IO performance are strongly emphasized.
Mercury product offerings span three generations of switch fabric technology.
Mercury's products bring the latest in high performance microprocessor technology to deployed applications with size, weight, and power constraints. Recently, Mercury announced a partnership with IBM to bring the Cell processor to embedded applications in the defense, medical, and demanding commercial fields.
Mercury supplies a set of APIs, libraries and a kernel called MCOE. The APIs provide multicomputer services to applications, and provide a common API layer above Solaris, VxWorks, Linux, or Windows on the host side, and MCexec or Linux on the compute node side. MCexec is our own real-time kernel, which is provided today mainly for customers who are not yet ready for Linux. Systems can be configured today that run MCexec on some nodes, and Linux on others. Mercury systems in the past have required a host board, which is typically not a Mercury product, and then the compute node boards. Next generation products include a host board that also provides I/O capability through the use of PMC or XMC modules.
MCOE is properly used in two stages, start-up and run. During start-up, the user allocates memory and communication resources. This can be slow on large systems, and is certainly not real-time. During the run stage, MCexec generally acts as a hard-real-time OS. Linux provides comparable performance. For the most demanding applications, the user can even disable interrupts when running MCexec on the compute nodes.
MCOE inclues a single-node kernel called MCexec or LNXexec, and distributed database services for system-wide naming, routing, and resource allocation. MCexec supports the minimum real-time profile of POSIX. It is thus vaguely UNIX-like, with fork() being the greatest omission. Running a program involves two steps: loading the executable to get a handle, and spawning a process from that handle. LNXexec is essentially an off-the-shelf Linux kernel, built with a reduced footprint and with inherent support for TCP/IP over the fabric (Race or RapidIO). This, the set of nodes running LNXexec essentially become a Linux cluster, with the choice of cluster-like development or traditional Mercury development using the high-performance MCOE APIs.
Filesystem and terminal IO is abysmally slow, being redirected to a non-Mercury host OS. Applications normally do little of this; instead they use high-speed DMA to interact directly with IO hardware.
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Mercury Computer Systems".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world