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

 

Up
Installer FAQ
ManagerFAQ
ConsultantFAQ
ProgrammerFAQ

 

Frequently Asked Questions

Managers


Table of Contents

  1. Q. What is reflective memory?
  2. Q. How will reflective memory accelerate my development schedule?
  3. Q. How does RM compare with other communication methods?
  4. Q. Why is network connection management to be avoided?
  5. Q. Are any special skills needed to use a reflective memory interface?
  6. Q. Why use Mirror Memory rather than Hardware reflective memory?
  7. Q. Can Mirror Memory help update existing products?
  8. Q. Does Mirror Memory need complex tuning to optimize performance?
  9. Q. Does Mirror Memory scale well?
  10. Q. Can Mirror Memory run on different machines?

 


Q. What is reflective memory?

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.

Back to Top

Q How will reflective memory accelerate my development schedule?

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.
 

Back to Top

Q. How does RM compare with other communication methods?

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.

Back to Top

Q. Why is network connection management to be avoided?

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.

Back to Top

Q. Are any special skills needed to use a reflective memory interface?

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.
 

Back to Top

Q. Why use Mirror Memory rather than Hardware reflective memory?

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.

Back to Top

Q. Can Mirror Memory help update existing products?

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.

Back to Top

Q. Does Mirror Memory need complex tuning to optimize performance?

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.

Back to Top

Q. Does Mirror Memory scale well?

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.

Back to Top

Q. Can Mirror Memory run on different machines?

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.

Back to Top
 
 

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