個典型的內存層次(A Typed Memory Hierarchy)
如上圖所示:
- 在數據路徑上的存儲:寄存器文件,訪問時間1個時鐘周期,容量非常小,非常昂貴,由軟件和編譯器(后面會講到)管理
- 在CPU芯片內部的存儲:有L1、L2、L3三級緩存,訪問時間在50個時鐘周期內,容量也不大,非常貴,由硬件管理。基本上是SRAM
- 在其他芯片上的存儲:對于主內存,屬于DRAM,訪問時間在200個時鐘周期以上,對于Flash,訪問時間在1~100微秒;容量較大,價格適中。由操作系統和應用軟件管理。
- 硬盤:訪問時間是10毫秒級,容量非常大,價格非常低廉。由操作系統和應用軟件管理。
硬件Caches vs.軟件Caches
緩存的管理分為硬件管理的緩存和軟件管理的緩存。
- 硬件管理的緩存:SRAM,主要是指在CPU芯片內部的三級緩存,它們的管理靠硬件電路實現。
- 軟件管理的緩存:主要是指DRAM、Flash、和硬盤
硬件管理的緩存和軟件管理的緩存具有相同的目標:
- 假的、快的、容量大的、便宜的內存。
- 從概念上講,兩者類似
不同點:不同的實現方式,非常不同的權衡。
存的訪問(Access Caches)
當處理器發出一個數據請求地址到Cache,有兩種選擇:
1. 緩存命中(Cache Hit):該地址的數據被處理器訪問,比如LD 0x6004,非常快
2. 緩存未命中(Cache Miss):數據不在緩存中。比如LD 0x6034,該地址的數據不在Cache中,將進行下列動作:
- 在主內存中查找該地址的數據,將其通過Cache發送回處理器
- 將該數據保留在Cache內(替換其他的一些數據),通常緩存會記住最新獲取的數據,可能會替換其中一些舊數據。
- 處理器必須處理可變的內存訪問時間。假設緩存訪問需要4ns,主內存訪問需要40ns,則緩存命中的訪問時間是4ns,緩存丟失的訪問時間是44ns.
緩存的度量(Cache Metrics)
命中率和丟失率告訴我們緩存的訪問命中的情況和未命中的情況。
根據上述指標,我們可以計算平均內存訪問時間AMAT(Average Memory Access Time)。
緩存技術的目的就是改善緩存的平均內存訪問時間。
如果我們有多級緩存,那么內存層次結構的平均訪問時間可以遞歸計算,如下:
示例
- 如果Cache的訪問時間為4cycles(4個時間周期),主內存的訪問延遲是100cycles,這意味著在緩存命中的情況下,訪問延遲為4cycles;在緩存未命中的情況下,訪問延遲為104cycles;那么我們需要多大的命中率才能達到收支平衡?
一下我這個電腦,電腦的配置重點就是cpu是i5-26673,內存是32g,顯卡要求不高,大話西游游戲對顯卡要求不高,這個就是2060。這個電腦基本上開個八九組,四五十個號沒問題。
這個電腦在于各種平臺上都能買到,兩千多塊錢,顯示器是2k的,二十七寸,二十七的顯示器,直屏。