From: Justin Voskuhl (justinv_at_microsoft.com)
Date: Wed Feb 18 2004 - 14:44:00 PST
This paper discusses a variety approaches for dealing with memory
coherence for loosely coupled shared memory multiprocessors. The idea
is to allow general purpose parallel programs run on the system and to
permit paging not only between memory and the disk, but between
processors as well. The system they implement runs on a cluster of
Apollo workstations that sit on the same local area network.
An important design factor they discuss is the size of the memory unit
to page. If it's too small, then you may incur extra network expense
because sending a network message is roughly equally expensive for a
small message as it is a large one (up to a limit.) To page larger
memory units means that processors may contend for that memory unit as
they run, slowing the system down. The authors discuss the benefits of
choosing a memory unit that meshes with the hardware paging support on
the system.
Ownership poses an interesting trade off. If one processor writes to a
page, then it needs to indicate to other processors that their copies of
that page are now invalid (and will need to be fetched when they next do
a read.) The processor that performed the write now "owns" this page.
The other strategy is to trap writes to pages, and to send updates to
the page as these writes occur.
Two major designs are presented for implementing share virtual memory.
The first major design is called the Centralized Manager algorithm.
Each processor maintains a list of pages it "owns" and is aware of other
processors that have copies of pages it keeps locally. Each page has a
"lock" associated with it which is used to synchronize between
processors. The other design distributes management ranges of memory
between the processors. All processors know the map from pages to
owners. A variant of this allows this map to change dynamically as the
system runs.
This archive was generated by hypermail 2.1.6 : Wed Feb 18 2004 - 14:44:07 PST