[Cbe-oss-dev] A couple of MARS questions

tthompso at eecs.utk.edu tthompso at eecs.utk.edu
Sun Nov 30 10:54:31 EST 2008


Hey Everybody,
I have a couple of questions regarding MARS and wasn’t too sure where to
look or whom to ask, so I thought I’d start here and hopefully get a
pointer or two.

I came across MARS recently while researching the “library problem” with
the Cell architecture – namely that creating libraries of independent
components for the cell is difficult due to the problem of
cooperating/competing for resources. MARS seems to be well aimed at that
with its lightweight task switching model, but I haven’t been able to find
much regarding the plans for MARS outside of the documentation and Geoff’s
presentations. Is MARS targeted at becoming a library interface framework
or mainly for application development? Why MARS as opposed to IBM’s ALF?

Next question, why the context unload/load on every yield? I understand
the decision to make all blocking spu kernel calls yield to another task
if it is ready, but throwing out the context every time seems like it
would hurt for programs that are lock-step synchronized with the PPU (or
another SPU). For instance, I wouldn’t expect the partial_context_save
example program to do anything when the mpu task yields. If there aren’t
any other programs waiting to run, why take the time and bandwidth to save
context? Could you not do something like specify a processor affinity for
a task when blocking, so if the task becomes runnable again before another
program needs that SPU it could pick right up without moving the context
at all? This would seem to help significantly with applications that move
locality from one set of SPU programs to another (such as mine ;)

On the whole MARS seems to be a pretty slick piece of work.

Thanks,
Thad Thompson




More information about the cbe-oss-dev mailing list