|
Frequently Asked Questions
Managers
-
Q. What is reflective memory?
-
Q. How will reflective memory accelerate my development
schedule?
-
Q. How does RM compare with other communication methods?
-
Q. Why is network connection management to be avoided?
-
Q. Are any special skills needed to use a reflective memory interface?
-
Q. Why use Mirror Memory rather than Hardware reflective memory?
-
Q. Can Mirror Memory help update existing products?
-
Q. Does Mirror Memory need complex tuning to optimize performance?
-
Q. Does Mirror Memory scale well?
-
Q. Can Mirror Memory
run on different machines?
A. Reflective memory is a very simple mechanism
that allows computer systems to communicate across a network. When an
application program on one machine writes into a memory location, the new data
is written into all other computers and is visible in application programs
running on those machines. Reflective memory systems are a mature technology
that have been proven in many high-performance areas – Aerospace, Energy,
Particle accelerators, and Plant control, to name just a few.
Hardware solutions
rely upon dedicated special-purpose networks; AmirusMM™ uses
existing network infrastructure to achieve the same goal. It allows
you to bring the benefits of a reflective memory design into the wireless world
too.
A.
AmirusMM™ can speed the
development schedule by allowing you to dispense with other inter-machine
communication protocols which frequently confuse an otherwise straightforward
application design. Its simple interface characteristics allow you to split the
tasks so that your team is most productive. It can be also used to
retrofit existing systems that need expansion or improvement, requiring minimal
changes to code which is already successfully running.
A. Inter-machine communication mechanisms are many and
varied. Pipes, Sockets and Mailboxes are typical ways of having one machine
communicate with others. To effectively implement designs using these techniques
requires particular care. Programmers must address communication path failures,
timeouts and possibly retransmission protocols to produce an effective
implementation. Incoming data must be read at frequent intervals to prevent data
overrun losses. Network connection management can become a major part of an
overall design, diverting creative energy from the original problem you are
trying to solve. All this translates to a longer development times, more
difficult testing, and higher staffing costs as more experienced programmers are
required to complete the tasks.
AmirusMM™, on the other hand, provides a consistent
memory interface for communication – programs needing information just read it
out of memory and programs providing information just write it in. There are no
network connections to establish and no input sources to check. Timeouts and
retransmissions are handled internally. All programmers are familiar with
reading and writing to memory, and so no special skills are required.
A. For many applications, network connection management can require
a major implementation effort and is frequently a significant source of problems
during debugging and testing. Often, these problems can be difficult to
reproduce -- sometimes depending critically on system loading -- and can
resurface later if code changes alter the timing of developed code. "Connection"
based protocols, such as TCP/IP, don't scale well in a one-to-many architecture,
and no multicast protocols exist which guarantee data delivery.
Keeping track of connections and timeouts,
remembering to service input queues on a timely basis, and anticipating every
possible real-world failure mode can get complicated.
It requires considerable expertise to get right, which translates to greater
staffing costs. Reflective memory allows your programmers to concentrate on
algorithm design, not communication.
A. Other than skills beyond general computing, no. A reflective memory interface
is intuitively easy to use and all programmers are familiar with reading and
writing to memory. All computer languages talk to memory, so there are no
special interface libraries to be written and debugged. There are commercially
available products which implement algorithms graphically, and the ‘glue’ needed
to match their output to reflective memory is very simply completed. Several
sites have been able to use tools to permit process engineers to design
algorithms graphically, considerably speeding the design process.
AmirusMM™ is language-neutral. The product provides memory mapping subroutine
prototypes for "C" and "C++", but these can be easily duplicated in other
languages which require prototypes. After mapping, it doesn't matter which
languages are used to develop applications; you can choose to develop software
with whatever tools or languages which best match your staff skills. Additional
interfaces are provided for languages which try to hide memory addresses from
the programmer (Visual Basic .NET and MATLAB), simplifying the user interface
for implementers. The system
is also compatible with other 3rd party software, for which source code
might not be available.
A. Hardware Reflective Memory requires additional hardware to be installed in
the computer and needs a dedicated network for communication. There are physical
separation limits between machines served by Hardware reflective memory.
AmirusMM™ requires just a software installation and can be used to prototype
solutions without reorganizing programmer workstations or development
labs. There are no limitations on the geographical area a mirror memory
system can cover, and the memory reflected can be up to 64Mbytes.
For read-intensive applications -- particularly those which process shared data
repetitively while performing matrix arithmetic -- Mirror Memory provides significant performance advantages. As the memory is
implemented in main memory, data is cached close to the CPU for very fast
retrieval. This translates to faster execution times and less backplane data
transfer.
Mirror Memory is very closely integrated with the operating system upon which it
runs, whereas hardware reflective memory is just a device. When data throughput
rates approach system capacity -- or if electrical noise or a physical
disturbance cause a hiccup in data throughput -- hardware systems are generally
unable to gracefully throttle the data source. This can lead to data loss and
system instability. AmirusMM suspends data writer threads (while continuing to
permit access to readers) transparently, so that no data is lost and no
instability results.
AmirusMM also has inbuilt algorithms to implement distributed memory consistency
when new nodes join a system. This ensures that all computer systems see the
same data in their shared memory areas. An in-built global distributed lock
facility is also included, which allows updates in shared memory structures to
be made consistently.
Mirror Memory will never replace hardware
reflective memory for 'hard' real-time applications, but a large class of
applications do not need the facilities that hardware solutions provide,
particularly when used with general purpose operating systems. Mirror Memory can
also be used in the development laboratory to prototype applications which will
eventually run on hardware systems. And of course, with the optional bridging
component, you can have the best of both worlds by integrating your 'hard'
real-time world with the rest of your application.
A. AmirusMM™ works on memory, without needing complex ‘hooks’ for network
communication, it is often particularly easy to integrate a reflective memory system
with existing program code. Little code changes are necessary to make data produced on one machine available to others on a network. This allows for
product expansion without sacrificing the effort that went into producing a
product in the first place.
A. AmirusMM™ allows tuning and provides monitoring options. There are simple
tools that manage the few variables that affect performance and which might need
to be adjusted. The procedure is straightforward -- with the MMManager utility
you can configure all the nodes in your system, and with MMTest you can observe
the changes in performance directly. Trade-offs can be made to optimize
throughput, latencies, and CPU overhead.
The system comes preconfigured 'out of the box' for simple applications. Your
staff can start using it within minutes of installation.
A. Mirror memory uses standard networking components
and scales as well as the
network it resides on. This allows you to take advantage of new network
technologies, as they emerge with no changes necessary in your product code. Data
bandwidth requirements scale linearly with increasing Mirror Memory data – even on
collision sensitive networks like EtherNet. Timeout reconfiguration algorithms
scale linearly with the number of nodes too.
A. Mirror Memory is available currently on Intel
Pentium® and Windows NT/2000/XP. Implementations for Linux(Pentium) and Itanium
are presently under development. Contact
Citrus Controls for the latest information.
|