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

Re: Re: [f-cpu] 15 MIPS FC0 emulator



On Mon, Dec 09, 2002 at 05:00:03PM +0100, whygee@club-internet.fr wrote:

[cload/cstore]
> huh i have to find exactly what it is about.
> But i think that conditional load and store is
> not a big problem. The exact semantics and behaviour
> has to be defined but basicly, cload/cstore use the
> same mechanism as conditional moves (for the condition
> part) and the usual load/store (instead that it doesn't
> trap when the condition is false, but the operation
> is aborted anyway). See the trick ? [i wish it works,
> in practice, though ;-)]

If you can make it work - fine. If not - to hell with it!

[madd/msub]
> as you both know, i see no point here.
> a load to register 0 with postincrement does the same.

I agree, as long as you turn off all exceptions and ignore cache
misses(!) for the initial address. Example:

	loadi $-8, r62, r0	// prepare stack pointer for pushing
	storei $-8, r62, r32
	...
	storei $-8, r62, r57
	store r62, r58

If r62 initially points to a cache line boundary, it will cause the
cache to prefetch a line that isn't used at all. Instead, it should
prefetch the line the register will point to *next*. A similar problem
occurs if r62 initially points to a memory area that isn't mapped (TLB
fault), or is badly aligned, or unreadable.

> >> 	* New cshift
> >
> >I guess the jury is still out on that.
> >BTW: `loadcons' also plays a role here.
> 
> i am not sure what it is about, so i won't
> step into that one ...

cshift[lr] was meant to access the upper chunks if registers are wider
than 64 bits. In a 64-bit core, we can make it either clear the
destination register or trigger an invalid opcode exception.

[...]
> >> 	* New cor/cand/mux/logic // Exist in Yann ROP2 code, but are not yet written 
> >> (the copy/paste is really unclear, need to be totally rewritten)
> >
> >Simple. But we used to call them differently:
> >
> >    short   long        new
> >    =============================
> >    <op>a   <op>.and    cand.<op>
> >    <op>o   <op>.or     cor.<op>
> >
> >where <op> is one of: and, or, xor, andn, orn, nand, nor, xnor.  All of
> >them take a size suffix,
> 
> why can't nobody agree ?

I remember that we agreed on the old names - and I implemented both
long and short versions in my assembler (more than a year ago?!)

> i see the combine as a suffix, because it is performed
> AFTER the logic operation. Otherwise it is potentially
> misleading.

Good point.

> > but only .b is currently supported in hardware
> >(because the latency would increase otherwise).
> this will be determined at synthesis time, but it's
> a first good guess that allows to do ASCII string searches
> easily.

As you can see in my other mail, that can also be done without combine.
The resulting code will be only slightly slower, and works for all
chunk sizes.

[ROP2 description]
> >I hope that was correct, I didn't look at the code for a while. Yann?
> 
> right.

*phew* ;)

> >> 	* New safeload/safestore
> >
> >It's not clear how that can be implemented.
> 
> are we speaking about the atomic things ?

I think so.

-- 
 Michael "Tired" Riepe <Michael.Riepe@stud.uni-hannover.de>
 "All I wanna do is have a little fun before I die"
*************************************************************
To unsubscribe, send an e-mail to majordomo@seul.org with
unsubscribe f-cpu       in the body. http://f-cpu.seul.org/