Software Reflective Memory from Citrus Controls Software Solutions for Reflective Memory
Home AmirusMM Purchase Support Consulting
 

 

FAQ
Download
Support
Updates

 

Amirus Mirror Memory Details

Amirus Mirror Memory is a software reflective memory system which uses built-in processor architecture and standard networking 'off the shelf' hardware instead of custom boards and proprietary network protocols. The highly-optimized, exception-driven algorithms and multi-threaded design deliver outstanding performance well matched to the bandwidth and transmission latencies of general-purpose operating systems. Its peer-to-peer design ensures no single point of failure.

Installation and Setup takes just a few minutes, and the system is ready to start work after the next processor boot. AmirusMM™ comes preconfigured with 512Kbytes of shared memory. This memory can be expanded up to 16Mbytes, and up to four memory areas can be defined for a total of 64Mbytes. Since the shared memory is simply computer main memory dedicated to this specific purpose, applications benefit from processor caching and do not have to go "out to the bus" to retrieve data. Changes in memory configuration can be made from one location, using a management utility which is able to configure all the nodes in the system.

The system is fault-tolerant, and is robust even if the connecting network is less than perfect. This allows reliable systems to be designed which span a large geographical area on shared networks. If the system uses its own dedicated network, near-real-time determinacy can be achieved. The UDP broadcast data exchange algorithms are designed to minimize collisions even on a CSMA/CD network such as EtherNet. Nodes can join and leave a memory "Ring" with minimal disruption to on-going operations. Joining nodes receive an exact copy of existing shared memory contents through our unique "CopyUp/CopyDown" algorithms.

AmirusMM™ can be easily integrated with any brand of hardware Reflective Memory. This provides you with an extremely cost-effective way of extending a high-speed, deterministic network over a wider geographic area while utilizing existing network cabling. Data flows in either direction, and you can select which areas get mapped to match disparate data rates. The individual setup requirements of different hardware reflective memories are handled by simple shared library code which you compile and build yourself. Citrus provides example code for many common hardware boards.

For distributed systems, AmirusMM provides two synchronization mechanisms so that cooperating applications can synchronize their operations. A 'synchronized' mode provides the ability for an application to wait until all other nodes have had their memory areas updated; this mode corresponds to 'write-me-last' in some hardware memory systems, and is useful for porting existing codes. A more general system-wide lock facility allows applications to take ownership of different sections of memory at either shared or exclusive levels, a convenient facility to avoid race conditions and collisions when memory is being updated by more than one node.

As transmission occurs over the standard network, diagnosis of any communication problem is particularly easy. In addition to the usual network monitoring tools, AmirusMM provides a monitoring facility which diagnoses the health of the network. Information is available on transmission statistics & latencies, throughput, timeouts and retransmissions. This information is also available through the application programmer interface, allowing you to write your own monitoring and statistical programs.

With version 1.1, Amirus comes with an interface to the popular MATLAB® mathematical modeling package. The interface provides a number of MATLAB class definitions which allow you to define variables in shared memory. These variables are then available for MATLAB applications running on other machines, for exporting the results of calculations in near real-time, or importing data from external sources for local processing. Matrix class definitions allow for MATLAB arrays to be read and written as single entities, using the AmirusMM lock manager. This ensures that cooperating processes always get a consistent view of data in shared memory.

Version 1.2 introduces the Visual Basic .NET interface. This interface provides various class definitions that allow Visual Basic programmers to access Amirus shared memory. When an interface object is defined, data transfer is accomplished by setting/getting various object properties or using methods. These properties and methods allow for integer, single- and double-precision data. and structures to be transferred, as either isolated data items or as arrays. The interface class also transparently handles synchronization, allowing 'large' data structures to be read or written as single atomic entities.

The system consists of several different program components. At installation time, you select which components wish to include on a node.

  • MMService, a utility which manages the communication with the other nodes in the Ring, and provides mapping services for all application programs running on its node. Most nodes include this utility, but nodes dedicated simply to system management need not.

  • MMLibrary, a subroutine library which provides an application program interface (API) for client applications to call. These routines can map and unmap memory regions, request and release global system locks, and ask for notification in case of memory change or system events.

  • MMMonitor, a program which displays statistics about the reflective memory system. MMMonitor displays information about the local Ring, and one of the four memory regions within the Ring.

  • MMTest, a program which provides a simple graphical interface to the memory areas. It also provides facilities for throughput testing and stress testing.

  • MMManager, an optional program which allows the system to be configured from one central location.

  • MMServiceConfigurer, an optional program which configures a local node to act as a hardware bridge between Amirus™ and a hardware reflective memory system.

 

Need even more information?

Take a two minute tour of Amirus' advanced features!

 Comments about this web site? Please let us know.
 Copyright © 2003, 2004 Citrus Controls Incorporated
 Last modified: Monday January 26, 2004