On Mon, Jul 12, 2010 at 2:25 AM, Gabe Black <[email protected]> wrote:

> Steve Reinhardt wrote:
> > On Sat, Jul 10, 2010 at 11:37 PM, Gabe Black <[email protected]>
> wrote:
> >
> >> In ARM's SIMD instruction set extension Neon, there are some
> >> instructions which can load or store 3 of something, and that something
> >> can be 1, 2, 4, or 8 bytes. To implement this properly, I'm planning to
> >> add readBytes and writeBytes functions to the various ExecContexts which
> >> would load/store some arbitrary (but practically bounded) number of
> >> bytes without performing endian conversion. As a side benefit, this
> >> should, I think, let us get rid of the twin data types in SPARC and the
> >> various explicit template instantiations used to support them. I think
> >> something like this came up for MIPS too, although I don't remember the
> >> particulars.
> >>
> >
> > How did we end up handling the MIPS instructions?  I don't recall.
> >
>
> Me either. Do you remember, Korey? Or whoever handled that if it wasn't
> Korey?
>

Since awhile back, there was no *true* conclusion to this story. for MIPS,
the problem can with unaligned load/stores I believe.

For the loads, it wasnt a problem. Since you are restricted by the word size
anyway, you just read the full word from the cache block and then "trim" off
the # of bytes you need.

For stores, there has been a stopgap solution (currently commented out I
believe in MIPS ISA description) that will readFunctional the full word
before editing the right bytes on the word and sending back through the
memory system (in timing fashion).

I want to say Matt (?) or someone actually fully implemented or attacked
this problem recently (although Gabe's question makes me think otherwise).

Regardless, having a send/receiveBytes that can be 1 or 3 bytes would be a
huge YES in terms of support from me. Now that I think about it more, there
has to be some discussion in the archives about this because I remember us
going back/forth on whether there should be some type of struct or
concatenation of chars or ??? to make an arbitrary sized # of bytes data
packet.


-- 
- Korey
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to