[FoRK] Cheap Electronics Dissection Project

Eugen Leitl < eugen at leitl.org > on > Thu Oct 19 12:08:46 PDT 2006

On Thu, Oct 19, 2006 at 03:01:03PM +0100, Tony Finch wrote:

> I'm not arguing against CSP (or oop-style message passing) as a
> programming model: in fact I believe it's the Right Thing. However from a

We're on the same cache line, then.

> language run-time implementation perspective, on medium sized hosts, and
> especially if you want to make the most of current hardware (SMPs as
> opposed to transputers), you might be better off implementing message
> passing as pointer-passing instead of data copying. But I'm not certain of
> this.

You're *always* copying data, whether explictly, or implicitly. The
program never sees the inefficiencies (current signalling fabric only
gives you few us latency for userland code, small messages). Things
become very different when you you have a read/write intensive application
of some moderate (10-1000 asynchronous parallel processes) parallelism.
Things become really interesting with considerable (10^6..10^9) degree
of parallelism. At the high end you really have no other choice but
to go a cellular automaton model, using constellations of virtual
particles to encode and send messages. There, information processing
is a lot like physics, or biology.
> Fortunately it looks like some empirical evidence is on the way. The
> Erlang run-time can be built with different heap arrangements which allow

Erlang doesn't have to deal with hard (that's ns, not us) realtime and 
10^4 asyncores. To me, sending an address and read request to memory
is a message. The memory responding back with content is a message.
When a line goes high or a photon is emitted, that's a message. In
this world, there are no global clocks, a cm is very far away, and 
vacuum or copper is a pretty good FIFO, and there's really not a major
difference between analog and digital. You don't see any of this
in Computer Science land, unless you're doing some very high-end,
some very holistic design work.

> different levels of sharing. By default Erlang is shared-nothing, and
> message passing is implemented by data copying. This has the advantage
> that garbage collection is simple because there's no coupling between
> processes. It can be built in a "shared" mode with a single global heap,
> but then garbage collection gets slow. "Shared" is now deprecated in
> favour of "hybrid" where only messages between processes are stored in a
> global heap and private data lives on per-process heaps. Erlang's SMP
> support is still relatively new so it is still unclear how the
> disadvantages of copying will balance against the disadvantages of
> concurrent GC in the shared heap.
> http://user.it.uu.se/~kostis/Papers/toplas06.pdf

I wonder how GC in biology would work. Something with dynamic equilibrium.
Or, a late snack.

Eugen* Leitl <a href="http://leitl.org">leitl</a> http://leitl.org
ICBM: 48.07100, 11.36820            http://www.ativel.com
8B29F6BE: 099D 78BA 2FD3 B014 B08A  7779 75B0 2443 8B29 F6BE

More information about the FoRK mailing list