星期三, 6月 22, 2005

Cacheable vs Non-Cacbeavke Access

Embedded System的Cache並不是”透明”的,也就是說,programmer可以分開處理cache和memory。

XXX Chip的DRAM分成cacheable和non-cacheable兩個region.每個chip selection都會佔據兩個region : cacheable, non-cacheable.白話一點說,就是有兩個memory address region都會對應到同一塊memory,但是一個memory region是透過cache,一個不是。
他是利用Address 28來區分二者(偉大,可以cache整個區域?)。

實際上內部只有16K的cache

使用cacheable區域的好處:
  1. non-cacheable的access一定要以int為單位(32 bit)。這在read來OK,但是在write時就比較麻煩,所以作byte-wirite時,可以寫入cacheable regsion.
  2. 如果資料已經在cache裡,read cacheable region會比none-cacheable region快(但是若是不在cache裡,要invalidate cache再update cache就慢了)。

使用None-cacheable區域的好處:
  1. DMA動作沒有和cache同步(也就是說不會觸發invalidate cache)。
  2. 太多寫入cache的動作會導致cache不斷要update,反而慢,所以不重要的就對None-cacheable操作。

補充:
Cache 內部會區分成很多小區域,有一個lookup table,表示每個”小區域”對應到真正memory的位址。當cache內容和memory內容不一致,而有人要作read時,就會引發 invalidate cache,cache作update動作,將cache和memory內容同步。

沒有留言:

網誌存檔