Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!uunet!seismo!gatech!bloom-beacon!husc6!mit-eddie!ll-xn!ames!oliveb!sun!joe!petolino
From: petolino%joe@Sun.COM (Joe Petolino)
Newsgroups: comp.arch
Subject: Re: Phys vs Virtual Addr Caches
Message-ID: <23622@sun.uucp>
Date: Thu, 16-Jul-87 12:00:42 EDT
Article-I.D.: sun.23622
Posted: Thu Jul 16 12:00:42 1987
Date-Received: Sat, 18-Jul-87 08:04:05 EDT
References: <3904@spool.WISC.EDU>
Sender: news@sun.uucp
Reply-To: petolino@sun.UUCP (Joe Petolino)
Organization: Sun Microsystems, Mountain View
Lines: 27

>Here's a question.  Why do people build their caches to respond to physical
>addresses instead of virtual addresses? [ . . . ]
>If you cache virtual addresses you can present the address to the cache
>as soon as it is generated, no delay do translation.  At the same time you
>are doing the cache lookup you can be doing the translation in case there
>is a miss.
>
>Am I missing something or is this the wave of the future?  

Not only is it the wave of the future, but of the past and present as
well.  Designers of high-performance machines (IBM, Amdahl, and Sun, to name
only a few) have been using virtual-addressed caches for years, mainly for
the speed advantage noted above.

The reason that this is not done universally has to do with cache consistency
problems.  If a word's location in the cache is a function of the Virtual
address by which it was last accessed, it can be difficult to find that 
word again if another processor (e.g. a DMA controller), or even another
process running on the same processor, tries to access it by a different
virtual address.  Two processes who share a word but don't agree on where it
is in the cache are bound to confuse each other.

There are a number of tricks used to solve this problem so that virtual
addresses can be used to access a cache - I think this topic has been
discussed here before.

-Joe