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