[comp.arch] Write-Back, Write-Allocate Policies

campbell@sauron.Columbia.NCR.COM (Mark Campbell) (06/06/90)

I'm looking for information on the write-allocate policies
(i.e., whether to write-allocate or not) on write-back caches.
I'm in the middle of a heated debate concerning whether it is
better to ***not*** write-allocate, specifically in a
second-level write-back cache that we're designing.

I simply don't have time to do the modeling/simulation that
would prove or disprove this (in addition to not having what
I consider to be adequate traces) and am looking for references
and/or examples in support of either mechanism.  I don't believe
that these examples have to be from second-level caches -- first-
level cache examples would be good also.

One specific question that has come up during this is whether
the RS/6000 supports write-allocate -- if I could get an answer
to this it would at least start me on my way.

Thanks.
-- 
					      Mark Campbell
					      mark.campbell@ncrcae.Columbia.NCR.COM

davec@nucleus.amd.com (Dave Christie) (06/07/90)

In article <2175@sauron.Columbia.NCR.COM> campbell@sauron.UUCP (Mark Campbell) writes:
>I'm looking for information on the write-allocate policies
>(i.e., whether to write-allocate or not) on write-back caches.
>I'm in the middle of a heated debate concerning whether it is
>better to ***not*** write-allocate, specifically in a
>second-level write-back cache that we're designing.

Wellllll, it depends.  Which is better is probably fairly application
dependent, and you didn't give any clues as to the intended environment
(a high-powered cash register, perhaps? :-) :-)  Sorry, engineers from
NCR probably may be rather tired of such jokes...).  

If it's general-purpose, more significant factors might be design
complexity/cost, rather than performance, since whatever you choose 
will win on some applications and loose on others, but probably not 
by a whole lot.  I personally would pay more attention to complexity/
cost, unless I had data that I felt was representative of my target 
environment and showed a clear win.  Good luck finding such data from 
an outside source!

Some things to consider: 

If your memory system wouldn't otherwise have to handle single-word 
writes, write allocate may keep it somewhat simpler, handling only 
cache line transfers.

A particular coherency scheme (if needed) may influence the decision.

Is the cache locked up while refill occurs?  If so, it may be best
not to refill until you definitely need the data, to avoid impacting
subseqent accesses unnecessarily.  This is more important for a first
level cache, but can be significant for large line sizes usually used
for second-level caches.  It also depends on the relative frequencies
of loads and stores.

Just my opinions.....  As I said, good luck finding outside _data_ ,
rather than opinions, that gives you a warm feeling.

>One specific question that has come up during this is whether
>the RS/6000 supports write-allocate -- if I could get an answer
>to this it would at least start me on my way.

Don't know for sure, but since refill doesn't delay subsequent accesses,
I would guess they might do write allocate.  I'm sure someone else
knows for sure.

--------------------------
Dave Christie
Remember, only your hairdresser knows for sure....