title: Definition/meaning of Aliasing? (CPU cache architectures)
body: <p>I'm a little confused by the meaning of "Aliasing" <b>between CPU-cache and Physical address</b>.
  First I found It's definition on Wikipedia :</p>
  
  <blockquote>
    <p>However, VIVT suffers from <b>aliasing</b> problems, where several <b>different virtual addresses may refer to the same physical address</b>. Another problem is homonyms, where the same virtual address maps to several different physical addresses.</p>
  </blockquote>
  
  <p>but after a while I saw a different definition on a presentation(<b>ppt</b>)
  of DAC'05: "Energy-Efficient Physically Tagged Caches for Embedded Processors with
  Virtual Memory"</p>
  
  <blockquote>
    <p><i>Cache aliasing and synonyms:</p>
    
    <p><b>Alias</b>: Same virtual address from different contexts mapped to different physical addresses Synonym: Different virtual address mapped to the same physical address (data sharing)</i></p>
  </blockquote>
  
  <p>As I'm not a native speaker, I don't know which is correct,
  though I feel the Wiki's definition is correct.</p>
  
  <p><b>Edit:</b></p>
  
  <p>Concept of "aliasing" in CPU cache usually means "synonym", on the contrary is "homonym". In a more generic level, "aliasing" is "confusing" or "chaos" or something like that. So In my opinion, "aliasing" exactly means the mapping of (X->Y) is "not bijective", where</p>
  
  <p>"X" = the subset of physical addresses units which has been cached. (each element is a line of byte)</p>
  
  <p>"Y" = the set of valid cache lines. (elements a also "line")</p>