1. 程式人生 > >處理器(續)_緩存(cache)

處理器(續)_緩存(cache)

處理器 緩存

4.處理器(續)_緩存(cache)

4.1硬件的處理速度

由於經濟因素,處理器和內存所使用的半導體工藝不同,工藝的差異導致了處理器和內存的速度差異,處理器總是要等待內存,處理器速度遠遠大於內存。所以在兩者之間增加緩存是及其必要的。
通常:V處理 > V處理器內部寄存器 > V緩存 > V內存 > Vflash

4.2程序訪問的局部性

程序運行時有一個特點,在短時間內,處理器訪問的儲存空間是一個很小的範圍。
A.時間局部性:某個存儲單元在短時間內很可能被再次訪問
B.空間局部性:某個存儲單元的鄰近單元在短時間內也可能被訪問
4.3 cache
Cache是一種小容量高速存儲器,其存取速度與處理器的運算速度幾乎同量級,現代計算機通常將其內置於處理器芯片內。

在處理器和內存之間設置cache,把內存中別頻繁訪問的指令和數據復制到cache中。大多數情況下,處理器能直接從cache中取得指令和數據。
技術分享圖片

4.4 內存和緩存之間的映射

內存與緩存之間的映射最簡單的方法是直接映射法。特點是任意一個內存地址都能映射到cache中的一個固定位置。

直接映射法

?將cache和內存分成固定大小的塊(如512Byte/塊)
?內存中每一塊在cache中有固定的映射位置
?映射公式為:pos_cache = 內存塊號 % cache總塊數,如下圖示:
技術分享圖片

地址劃分:

![](http://i2.51cto.com/images/blog/201803/09/1037cd3857ebfbac7c4c45dc02e2a74c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

映射原理:

根據訪問地址中的c位找到cache中的對應塊,比較地址中的t位和對應塊號的flag是否相同。
?相同,則根據塊內地址做為偏移量直接讀取數據
?不同,說明要訪問的內存數據不在緩存中,則從內存中復制塊內容到緩存。

直接映射法示例:

技術分享圖片

直接映射法的特點:

優點:映射過程簡單,所需耗時短
缺點:當短時間訪問的地址有同余沖突(兩片內存對應同一片緩存),會造成緩存失效。

4.5 Cache原理軟件應用:

背景:日誌系統對系統效率影響很大,同時不易分析,無法高效打印二進制數據,需要自定義日誌的解析格式,並且可以對日誌進行分類,控制其輸出。
最初方案:開發一個日誌解析軟件,配合腳本實現日誌解析,每一種日誌都有自己對應的解析程序。當有日誌來時,通過日誌類型查找對應的解析程序。

問題:短時間內有大量日誌需要打印時,性能無法滿足要求。性能的瓶頸在於每次頻繁查找耗時太多。
解決方案:根據cache原理,設置二級緩存,盡可能避開查找。

處理器(續)_緩存(cache)