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

Re: [openrisc] Address pipeline during exception...



> > When you are doing OS port, you should cover all implementations.
> > I think things are defined in a way that you don't loose much,
> > when writing portable code. It is up to implementation to use
> > or1k code in a way that application needs.
> 
> Fine, give me 7 special cases and I'll happily write 7 completely
> customized solutions. It will take me only a little longer, but
> generate code that is significantly more efficient, and thus more
> useable in a real implementation.
As I said: If there is application, that highly depends on certain
software solution, you can optimize the code just for this
implementation. I believe this kind of applications are very rare,
but we probably disagree. In any case we need solution, that
will work with every implementation. You can then optimize some
parts further, if you wish...

> A nice idea, but I think untrue. If the machine isn't pipelined, I
> get the best performance by reusing a few temporary register
> locations as quickly as possible while leaving some untouched for
> global storage. In a pipelined situation, my best efficiency comes
> from not using registers until they are available, even if this means
> dumping to memory now and then. Different solutions for different
> problems. I also need to know the latency for instructions. Always
> assuming worst case always generates worst case code. It's not a
> recipe for success.
Assume that you have no stalls. 
It is up to HW developer to do such implementation, on which SW
written for or1k will run fast.

Anyway, in case you are considering, if you do things right you loose
only N registers, where N is longest stall. Most application need only
12 registeres, and we have 32 of them in non-FPGA
implementations... So there is no real concern about stalls.

Assume that every instruction has same lateny, except l.mac instruction,
and maybe some others. These kind of instructions have some sort of
synchronization added.

And like Damjan said - PPC, ARC and others are doing the things in
the same way. Maybe this can give you some guarantee that we are
not trying to force you into something stupid.

Marko