The Makbilan Project (1989 - 1995)
The goal of the Makbilan project was to provide a platform for research
on parallel systems.
This was a shared-memory system based on Intel's single-board
computers and Multibus-II technology.
The Multibus-II allows access to the memory of other boards, but does
not support cache coherence.
Our research was not so much on the architecture, as on system support
and parallel programming.
Major projects performed were
- The ParC programming language
- The MAXI runtime system
- The Sim-ParC simulator
- Additional interconnection mechanisms
ParC
ParC is a parallel programming language, based on C, for the shared
memory programming model.
Its main feature is the use of the block structure of the language to
define the scope of shared variables.
The main language constructs (apart from thos of C) are
- parblock: specify a set of activities that should be processes
in parallel
- parfor: specify a parallel loop, where iterations should be
processed in parallel
- pbreak: break out of a parallel construct, killing all the
sibling activities created by this construct
- sync: a barrier synchronization
The parallel constructs, parblock and parfor, can be nested within
each other, and also combined with conventional C constructs such as
branching and loops.
The nesting results in a tree of activities, in which internal nodes
are activities that are blocked waiting for their children to
complete, and leaves are active.
There were also some more sophisticated constructs that allow for
performance optinization and the mapping of activities to processors.
The development of ParC was
continued for some
time by its original author,
Yosi Ben Asher,
at Haifa University.
MAXI
MAXI stands for the makbilan system.
This runtime system was based on Intel's RMK real-time kernel that ran
on each node.
Its main function was to support the constructs of the ParC
programming language, as follows:
- Parblock and parfor: the spawning activity places a spawn
descriptor in shared memory.
Each processor has a special get-work activity, which looks for such
spawn descriptors and creates new local activities accordingly.
- Pbreak: a broadcast interrupt is sent, and all processors
scan their local activities and kill those that are in the affected subtree.
- Sync: the activities that arrive at the barrier are counted
using fetch-and-add.
They use busy waiting, but yield their processor if not ready.
In addition, versions with some special features were created,
including
- Support for gang scheduling
- Support for deadlock detection
- Support for monitoring the unfolding structure of the computation,
with logging for post-mortem display
- Alternative mechanisms for support of the pbreak construct
Sim-ParC
This is a simulator for ParC that runs on a single PC.
Interconnection
Three additional interconnection mechanisms were constructed:
- A gateway board that connected two 20-slot Multibus-II cages into
one logical 40-slot multibus-II
- A crossbar switch that provides direct high-bandwidth connectivity
among processors
- An experimental optical switch connecting the processors with each
other (collaboration with P. Chavel, France).
We also have a Makbilan photo album (total
about 203 KB)
Publications
To the Parallel
Systems Lab home page
To the Hebrew University Institute
of Computer Science home page