Path: utzoo!mnetor!uunet!husc6!purdue!decwrl!pyramid!jeffs
From: jeffs@pyrthoth (Jeff Sewall)
Newsgroups: comp.arch
Subject: Re: SPARC and multiprocessing
Message-ID: <22227@pyramid.pyramid.com>
Date: 6 May 88 18:36:46 GMT
Sender: daemon@pyramid.pyramid.com
Reply-To: jeffs@pyrthoth.UUCP (Jeff Sewall)
Organization: Pyramid Technology Corp., Mountain View, CA
Lines: 36

In article <63900014@convex> gruger@convex.UUCP writes:
>
>>/* Written  5:51 pm  May  2, 1988 by jeff@alliant.Sun.Com
>>	...In order to
>>	properly snoop, all of the aliases must be checked for in the cache.
>
>Nah, it ain't that hard.  One can have a virtually mapped, physically tagged
>cache.  As the virtual cache is filled with data, the translated physical
>address from the MMU is written into the tag RAMs.  The physical tags are 
>then used by the bus watcher to selectively invalidate the cache entries.
>
>This is in fact how cache coherency is maintained in the Convex C-2 machines.
>Each of the CPUs has a set of remote invalidation tag memories which watches
>all of the other physical address buses (3 other CPUs and one I/O).  When 
>there is a hit, the validity bits are cleared for that particular entry in 
>the virtually mapped cache.  
>
>Jeff Gruger

This only works for small caches. Once the size of each set of the cache
exceeds your page size, the location of an entry in a physically mapped
"remote invalidation tag memory" will be different than the location of
that entry in the virtually mapped cache. This is because the page index
alone is no longer sufficient to address the cache.

This problem can be solved by passing part of the virtual page address
along with the physical address on memory requests. Then the remote tag
can be addressed with the virtual address and guarantee mapping to the
same location. But this works only if synonyms are not allowed. BTW, this
is the approach taken in the SPUR architecture.

I think that the original poster's question is still valid. Is there a
good solution to snooping a virtually mapped cache with the following
constraints:
(1) Synonyms are allowed
(2) The cache is large enough that the size of a set exceeds the page size