[Barrelfish-users] Porting Barrelfish to a new architecture?
Matt Johnson
johnso87 at crhc.illinois.edu
Wed Mar 14 21:35:22 CET 2012
Hi All,
My research group develops a simulator, compiler toolchain,
libraries, and apps for
investigating many-core architectures. We recently released a large
portion of our
infrastructure ( http://rigelproject.github.com ) and are looking for
contributors.
One part of that is making a list of worthwhile projects for outside
contributors
to work on. In the interest of expediency, our architecture definition
and simulator
so far are more like a GPU than a CPU in that they do not support many
of the constructs
needed for a multitasking operating system (interrupts, inter-processor
interrupts, timers, traps, MMU, etc.).
We would like to flesh out the architecture and simulator to
efficiently support
an operating system. At a high level, Barrelfish seems like a great
design driver
for our OS support mechanisms, since it is explicitly designed for
many-core and
heterogeneous systems. My questions are:
* What primitives does Barrelfish *require* of the underlying CPU
(atomic instructions,
interrupts, MMU features, etc.)?
* What additional primitives, if any, are desirable for existing versions of
Barrelfish to run well?
* What further primitives would Barrelfish developers like to see on
future hardware
platforms?
* How would one go about porting Barrelfish to another architecture?
- Is CPU support code segregated into one part of the Barrelfish
source tree?
If not, what general patterns should I grep for?
I see things like .dev files for amd64 and arm, but don't know what
else is required.
* This is likely a dumb question, but does my architecture need ghc
codegen support
to run Barrelfish? If so, we have an LLVM backend, but I don't know
to what extent
that counts as ghc codegen support.
* At a high level, is this worth doing? There are two parts to that:
- If the port is successful, is there any hope of upstreaming the
changes so
they can keep pace with upstream API changes? (Remembering that
the platform
in question consists of a simulator, and possibly an FPGA in the
foreseeable future)
- If not, is the upstream API or organization likely to change in
such a way that the
port will quickly become non-functional?
- Would it be a Herculean effort, or something a student or two could
do in O(weeks)?
If any or all of this is covered by a doc somewhere, don't hesitate to
point me to
it in lieu of a long response. If it's not, I hope this thread can
serve as the
beginnings of such a document.
Best,
Matt
More information about the Barrelfish-users
mailing list