Three things:  index, tags, and asid.

The index selects the portion of the cache to look for the line.  

The tags tell you if you have a hit or not.

An address space identifier (ASID) of some sort must be used to 
allow cache use across context switches.  Without an ASID, the
caches would have to be flushed on every context switch.

Physical vs virtual

	Mostly an interprocess issue for caches that remain active 
	across context switches.

	If you can, using physical is nicer for several reasons.  
	. The addresses used are more likely to be evenly distributed,
	whereas virtual address tend to be reused (all processes 
	have their stack at the same place, typically have their
	shared libraries at the same place, and all assume their
	address space starts at 0).
	. Physical addresses are much easier to keep coherent in 
	multiprocessor machines.



Physical vs virtual index

	If you use physical, you get better use of your cache: location L
	will map to different places in the same cache.
	Since the indice is used immediately in the selection of the 
	cache lines, the address must go through the virtual to physical
	translation before starting to look in the cache.
	Tradeoff is better cache space use versus faster cache lookup.

Physical vs virtual tags

	Physical tags reduce the amount of flushing that must be done.
