[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [f-cpu] F-CPU architecture...


Tobias Bergmann wrote:

Oh I forgot to mention: A collegue of mine is writing a OS tool for circuit simulation, synthesis, ATPG, fault sim, ...
It's called signs: http://www.iti.uni-stuttgart.de/~bartscgr/signs/wiki/index.php/Main_Page

Already noticed that on freshmeat.net :) But I didn't look at it yet.

How large would the effort be to add SMT to the FC0 core? I'm thinking of approx. 3-fold SMT.

Too high, IMHO. In particular, the required changes to the register set and crossbar would be real speed killers.

I recently had an idea for light-weight parallel execution - let's call it "threadlets". By adding explicit fork/join instructions, an application could split itself into threadlets if it sees fit. Of course careful programming would be required because threadlets share the same register set.

The basic idea is that there is a variant of the jump instruction (with two arguments), called "fork":

	fork r2, r1

That will fork a threadlet starting at address r2 and return some kind of threadlet "ID" in r1. Now both the main program and the threadlet can work independently. When the threadlet is done, it will execute a "return from threadlet" instruction. The main program can use the "join" instruction

	join r1

to wait for termination of a particular threadlet, or

	join r0

to wait for all of them. To ease implementation, only the main program will be allowed to fork threadlets or execute special instructions like syscall or get/put.

Note that the core is not required to process threadlets in parallel at all. If support for parallel execution is missing, threadlets will be executed sequentially, in any order (or lack of order, as you like it). In the most simple implementation, the "fork" instruction would turn into a subroutine call (that is, "jump r2, r1"), and "join" would be a no-op.

On the other hand, a core may execute as many threadlets in parallel as it can. All we need to provide is an IF&D unit that supports multiple instruction streams.

Michael "Tired" Riepe <michael@xxxxxxxx>
X-Tired: Each morning I get up I die a little
To unsubscribe, send an e-mail to majordomo@xxxxxxxx with
unsubscribe f-cpu       in the body. http://f-cpu.seul.org/