[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [oc] Beyond Transmeta...



> > In how many cycles can you execute this? How many instructions do you
need?
> > c = add32(a,b)
> > e = add32(c,d)
>
> Well in a network manner with a minimum of 8 1bit processors, it would be
> like 32 clocks, less processors increase that. But the minimum that could
be
> required could be only 1clock (depending on what bits change), if only the
> first bit changes, or if 2 clocks if only 1 bit changes, of course if the
bit
In avereage inc changes exactly one bit at time :) Theory comes handy
sometimes.

What I ment was - how many instructions and cycles do you need to calculate
all 32 bits of e.

> > I suppose you can link data back to loop start, can't you? Parallely you
can
> > detect
> > whether loop should be finished. Of course this isn't normal equation
> > anymore...
> > But otherwise I don't see a problem here.
>
> Oh, yeah... ha... I did not think of that. :)
Yes... I just remembered - this could be a problem since number of
connections will
be probably limited... I think that routing is major problem for your
design.
Procesors with wider word size (e.g. 32b) connected in network would need
about
32times less routing... and also information gain is pretty lower in your
case, since
you will use a lot of bits to specify an address.
However I would recomend some mixture of or2k network and somesort message
passing for longer distances (like in plastic cell arrays).

> > Yes that is true for basic blocks. But not for functions. Compiler would
> > create
> > separate network for each function (there are too many problems
otherwise).
> > You cannot link them dinamicaly together. I won't go in detailed
> > explanation,
> > even when detecting parallelity between functions there are certain
> > problems,
> > unless program (meaning of program) itself is modified. ILP here stand
for
> > inductive logic programing.
>
> What I'm getting at though, is not to modify the programs source code, but
to
> compile it into a network and to shift the network around into a more
> parallel program. What I think the way it would work would be to shift
parts
> of the network which compose a function into other functions, so that as
you
> shift them around they sort of lose them selves as a descreet and seperate
> function and instead become an integrated part.
I don't see a problem here if routing would be enough general. But even if
not
nets can be optimized pretty good, shown in or2k example. Speed loss
in 3x3 or2k matrix because of connections inside basic block is just around
5%.

> I'm not exactly sure what you mean by creating seperate networks for each
> function. You could mean to create a seperate network for each function
> call/usage, which I think you mean. For that, I would say that you do not
> necesarily have to do it that way, you could create a network that acts
like
> a mini-highlevel processor (high level instructions), that will reduce the
You can surely use function like use normal instructions. But you cannot
gain
parallelity this way.
There is another thing I am not sure I understand - how would you know when
certain network finishes its work?
You cannot know that from result itself unless it changes, but you don't
know if
it ever will. So when may you use it to send it to next network?

Marko