Extensibility - CVM's
source is freely available, and modules are written in C++.
New classes can easily be derived from a master Protocol class, allowing
new protocols to be easily incorporated.

Multi-threading support - CVM is multi-threaded, allowing
overlap of computation and communication through context switching.

On-line reconfiguration - CVM uses thread mobility to
support automatic online
reconfiguration. Thread migration will be used to adjust the degree of
parallelism, to balance load, and to minimize communication requirements.

Race detection - We built a practical online race detection
system that is guaranteed to catch all races that actually occurred during
an execution, with an order of magnitude less overhead than previous systems.

Tapes - Tape-based synchronization libraries are layered on top
of existing consistency protocols and synchronization interfaces, and are
used to direct data movement. Tapes allow shared accesses to be recorded,
grouped, and manipulated at a very high level. These tapes can be used to
predict future data accesses and to eliminate subsequent misses by moving
data before it is needed.