|



 |
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! |
|