Mercury Computer Systems
From Wikipedia, the free encyclopedia
- For other company with similar name, see Mercury Interactive.
Mercury Computer Systems, Inc. NASDAQ: MRCY provides high-performance embedded, real-time digital signal and image processing solutions.
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.
[edit] Hardware
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.
- RACEway is Mercury's original interconnect fabric. RACEway uses 6-way crossbar chips organized in a fat tree network. RACEway is circuit switched, with circuit setup and teardown being performed automatically as a chip-by-chip operation done by the hardware. There are four priority levels, with high-priority circuit setup able to kill existing lower-priority circuits. RACEway primarily uses 27 bits of 3-bit-per-hop source routing, with the added ability to specify that crossbars may choose the less-congested route under certain circumstances. There is a "broadcast" ability that operates as a flood-fill. Each CPU node, called a "CE", has the ability to map the memory of up to 14 other nodes and has a mailbox for incoming messages. Node-to-node strided DMA is available, for example allowing every third column of a matrix to be transmitted. RACEway is 32 bits wide. It always operates at 40 MHz. Heterogeneous shared-memory products were offered with the Intel i860, SHARC, and PowerPC.
- RACE++ is Mercury's second interconnect fabric. It is very similar to the original RACEway, and in fact can be set into a compatibility mode for connection to RACEway devices. RACE++ offers a 66 MHz native mode that is not compatible with the older hardware. Crossbars examine 5 bits of the 27-bit route, then shift out a configurable 3, 4 (typical), or 5 bits. The all-1-bit address is reserved to address a crossbar itself for discovery and configuration; the older RACEway crossbars are not configurable or discoverable. RACE++ crossbars typically have 8 ports. Because the chips are configurable, localized broadcast addresses can be made available.
- RapidIO is the current switch fabric. It is a serious departure from the older technology, though bridging between the two types of fabric is possible with dedicated conversion chips. RapidIO was designed in cooperation with Motorola (now Freescale). It is a reliable packet switched network that uses point-to-point links and chip-to-chip handshaking reservations to avoid dropping packets. Packets are 256 bytes, with 8-bit (most non-Mercury devices) or 16-bit addresses. Crossbars throughout the multicomputer contain local routing tables so that packets need not be source-routed.
Mercury's touts it products as bringing 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.
[edit] Software
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 includes 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.
[edit] External links
The Mercury Computer Systems Web Site: http://www.mc.com
History at: http://www.mc.com/about/history.cfm