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