[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Unclocked logic / delay insensitive circuits
Barry and others,
CSP is very succesful in compilation to clocked logic.
What about compilation to unclocked logic?
I know Philips research has been performing significant
research in this area: they call it delay insensitive
circuits.
They developed a kind of asynchronous CSP-like abstraction.
A quick overview of my view on those activities:
* They have got "Processes" connected via Channels.
* Processes can be composed from Processes (like CSP).
* Communication occurs via messages, which for the moment I'll
call Marbles.
* A Marble may only be sent over a Channel if somehow, one can
guarantee that a previously sent Marble has been received.
Marbles are vulnarable: "when rolling them down a channel,
one may go faster than the previous one, when they hit eachother,
they fall to pieces".
* Incorrectness: a program in which marbles MAY get cracked,
is considered incorrect"
* Incorrectness: a program in which deadlock may occur is
considered to be incorrect.
* A Marble communication is implemented in hardware as a transition:
both the transition logical "1" to logical "0", and
the transition logical "0" to logical "1", are both considered
to be a communication event. Note that no data is transfered
* They have got a number of primitive processes.
If I remember it correctly, one of them is the "MERGE(in1,in2,out)".
MERGE is something like:
MERGE = (in1?||in2?);out!;MERGE
After initialisation, one can perform:
in1!;in2!
After that, one HAS TO GET TO KNOW that out? has completed,
before starting the next in1!;in2!.
Difference with CSP: you can try to execute in1!;in2!;in1!;in2!, however
after the second in2!, you get blocked until someone else has consumed
out?.
* Another primitive is: WIRE(in?, out!), and IWIRE(in?,out!)
WIRE = in?;out!;WIRE
IWIRE = out!;WIRE
* Advantages: electrical transitions take energy, since a delay insensitive
circuits does not make any electrical transitions in parts that are not
performing computation at that moment, energy can be saved.
Example: a decoder for a CD player. The error correction part only
becomes active when an error has occured. This only happens
once-in-a-while, and only then, energy is used in the error
correction unit.
* It releases all the constraints w.r.t. the clock interval, since there is
no hardware clock at all: this makes IC development in many cases
a lot simpler.
* This type of energy saving is ofcourse also useful in Space applications,
an interesting area...?
Question:
Cannot dealy insensitive circuits be simply implemented with a
CSP-based approach?
My impression:
It should be.
Cheers,
Marcel