CPU緩存與性能的關系
CPU緩存與性能的關系
說到CPU,不得不說的就是CPU緩存,目前CPU的緩存已經成了衡量CPU性能的一個必要指標,那么CPU緩存到底對CPU性能的影響有多大呢? CPU維修知識
CPU執行指令時,會將執行結果放在一個叫“寄存器”的元件中,由于“寄存器”集成在CPU內部,與ALU等構成CPU的重要元件,因此寄存器中的指令很快被CPU所訪問,但畢竟寄存器的容量太小,CPU所需的大量指令和數據還在內存(RAM)當中,所以CPU為了完成指令操作,需要頻繁地向內存發送接收指令、數據。
由于內存的處理速度遠遠低于CPU,所以傳統的系統瓶頸在這里就產生了,CPU在處理指令時往往花費很多時間在等待內存做準備工作。為了解決這個問題,人們在CPU內部集成了一個比內存快許多的“Cache”,這就是最早的“高速緩存”。
L1高速緩存是與CPU完全同步運行的存儲器,也就是我們常說的一級緩存,如果CPU需要的數據和指令已經在高速緩存中了,那么CPU不必等待,直接就可以從一級緩存(L1)中取得數據,如果數據不在L1中,CPU再從二級緩存(L2)中提取數據,大大提高了系統的工作效率。
CPU緩存工作原理
沒有CPU緩存前
CPU的運算單元想象成是一間坐落在城市中心的工廠,把內存看成是工廠設置在郊區的一間面積很大的倉庫A。
工廠生產所需要的原材料每次都要花時間去遠處的倉庫A調運,而且到達倉庫后,還要等待倉庫準備好材料,中間浪費了不少時間。這就是CPU頻率未變的情況下,CPU與內存的數據交換不同步的現象。
由于資金短缺,倉庫A從近郊區“搬到”了遠郊區,這樣原料和成品在工廠與倉庫A之間的運輸所花費的時間就更長了,工廠生產所需的原料供應不足,經常處于空運轉的狀態下。這就是說當CPU頻率增加后,CPU與內存交換數據等待需時間會變得更長。
增加L1 Cache
要解決CPU與內存交換數據不同步這個系統瓶頸問題,其中一個辦法是在靠近工廠的市區設置一個小型的倉庫B(L1 Cache)。
平時把生產最迫切需要、用得最多的原材料(指令和數據)從倉庫A(內存)調配到倉庫B(L1 Cache),這樣工廠生產所需要的原材料就可以很快地調配過來,減少空運轉的時間。當所需的原材料在倉庫B中找不到(緩存未命中)時,仍然要到倉庫A(內存)里調配,雖然無可避免地使工廠又進入空運轉,或部分空運轉(CPU等待若干個時鐘周期),但這樣畢竟使等待時間大大降低了。
小知識:緩存有一個“預讀”功能,也就是可以通過一定的算法,猜測接下來所要的數據,并預先取入緩存。
再添L2 Cache
隨著CPU的頻率提高,與內存之間交換數據不同步的現象更明顯了,可以理解為倉庫A(內存)搬離郊區,遷到更遠的地方了。解決這一問題的一個更好的辦法就是在城市的邊緣再設立一個比倉庫B大的倉庫C,也就是我們說的二級緩存。
它的作用是把郊區之外的倉庫A(內存)中最迫切用的材料(指令)運到倉庫C,而工廠如果在倉庫B中找不到所需的材料,就可以到倉庫C中找,而不必老遠跑到倉庫A那里找,節省了不少時間。
通常情況下,L2包括L1所有的數據,另外還有一些附加的數據。換言之,L1與L2、L2與內存之間是子母關系,所以CPU緩存的出現更有效地解決了CPU空等待所造成的資源浪費問題。
CPU緩存越大越好?
當然,CPU緩存并不是越大越好,因為緩存采用的是速度快、價格昂貴的靜態RAM(SRAM),由于每個SRAM內存單元都是由4~6個晶體管構成,增加緩存會帶來CPU集成晶體管個數大增,發熱量也隨之增大,給設計制造帶來很大的難度。所以就算緩存容量做得很大,但如果設計不合理會造成緩存的延時,CPU的性能也未必得到提高。CPU緩存與性能知識