Just about RMW sequence in real CPU. It is needed when CPU writes less then data bus size and there is ECC. CPU needs to read complete word or double word, modify appropriate bytes, recalculate ECC bits and then write it back. Or, memory system must do RMW in same way, but it is not possible to do partial modification of word or double word "in place". And for MIPS it depends is access to cached or uncached memory region (kseg1/disabled caching in TLB entry or normal cached access). Same applies to caches if it have ECC (probably L2 or L3, L1 highly unlikely), but explicit partial load/stores are not very common and cached byte/half word stores goes to L1 caches which usually have just parity which can be updated in the flight.

----- Original Message ----- From: "Steve Reinhardt" <[email protected]>
To: "M5 Developer List" <[email protected]>
Sent: 20. N~?�?1Nf?�N� 2010 2:31
Subject: Re: [m5-dev] MIPS o3 unaligned store error



In hardware it's pretty easy to do per-byte enables if you need to;
much simpler than doing a read-modify-write sequence.  The only reason
I can imagine that they wouldn't do it that way is if they already had
to do an RMW for some other instructions and so they piggybacked on
that.  I don't know of any MIPS instructions that would require RMW
though (particularly since MIPS uses LL/SC for atomic ops, which is
the main reason you'd want RMW).

Have we discussed doing 3-byte memory ops on the list before?  It's
clear it would require some new functionality at the read()/write()
ExecContext interface, but that seems like a worthwhile addition to
me.

Steve




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

Reply via email to