iT邦幫忙

0

處理器的快取記憶體(Cache)為何要分成L1和L2?

市售新款的處理器都標榜高容量的L2快取記憶體,為何要把快取區分為L1和L2呢?這樣做對於處理效能有什麼好處?

john651216 iT邦研究生 1 級 ‧ 2008-04-19 22:43:03 檢舉
謝謝分享
fantasy iT邦新手 4 級 ‧ 2008-09-19 16:01:17 檢舉
其實除了L1與L2外,在一些大型主機上
還有L3與L4的cache layer
另外還有RAID卡與Disk上也都有自己所屬的cache
這些同樣目的都是為了加速重複資料的存取
一般Level越高的cache越貴,同樣容量越大也越貴
也跟您分享~
fantasy iT邦新手 4 級 ‧ 2008-09-19 16:11:57 檢舉
針對L1的cache倒屬第二段的說明,補充一下個人的了解,L1 cache寫為64K+64K,所指的應該是I-Cache與D-Cache的size,兩者的作用並不同,前者是提供給程式指令(Instruct)用,後者是提供給運算的資料(Data)用,我想應該是兩者並無法互相使用彼此的cache,所以才會特別標示為64K+64K才對,如果有接觸過組合語言的應該就會知道,網路有找到相關的說明,提供給各位參考~
http://www.qno.cn:2480/web/referrence_doc_view.asp?e_id=78

1 個回答

32
灌籃高手
iT邦高手 1 級 ‧ 2008-02-12 22:08:22
最佳解答

現在有許多CPU的L1快取記憶體(L1 Cache Memory)是128K的容量,但是有的會介紹到64K+64K的L1快取記憶體,為什麼要這樣子寫呢?有沒有什麼特別的原因呢?第二個64K是L2快取記憶體嗎?

原來,在中央處理器內部的快取記憶體,我們便稱為L1快取記憶體。快取記憶體的運作,主要是將CPU運算的部份結果先放置於快取記憶體裡,待CPU要繼續運算時,能夠快速地讀取;或者是先將要處理的資料先放置於快取記憶體裡,由於在CPU內部的傳輸速度比起CPU外部的傳輸速度要快許多,因此資料處理的速度比起沒有內建快取記憶體的CPU快了許多。

快取記憶體,就好像皮包與口袋的關係,當我們從銀行裡領錢出來後就會把錢放在皮包裡,當我們要用時,不僅從皮包裡拿錢出來,把剩下來的錢放到口袋裡去,等待要買時再拿出來花用,最後,我們才會把一天剩下來的錢,重新放到皮包裡,而不夠時再去銀行領。CPU的運作也是如此,銀行就好像是硬碟的資料一樣,先會讀取所需要的資料到像皮包的記憶體裡,而處理器便會從皮包裡再將部份資料給放到像口袋的快取記憶體裡去,等到運算處理完部份資料時,再丟到口袋裡放著待用,直到處理完後一次丟到記憶體去。

因此快取的感覺很有層次,有時候記憶體也會擔任快取的角色,尤其是CPU裡沒有快取記憶體的容量時,又或者在主機板上就會建置有快取記憶體的設備。一般而言,現在的CPU都有L2快取記憶體了,而主機板上又有快取,所以一共就有三層快取的設計。這三層呢,其中有二層是在CPU內部的,所以CPU的運算速度會因為資料傳輸度的增快,而加速許多。

不過,在CPU裡,有的快取記憶體是建置在晶圓上(on die)的,有的是建置在CPU的基板上的。因此,即使是L1的快取記憶體,也會有兩種層次的出現,所以有的文章會用64K+64K的方式來表達。但是,我們一般在表達時,還是僅用總和的方式來表示,因為不管是那種L1的快取,它的地位應該是相同的。

隨著CPU製作技術的提昇,製程的進步讓快取記憶體的空間愈來愈大,也讓CPU運算的速度,有了劃時代的提昇,不管是那一種製作方式,在面對琳瑯滿目的CPU產品時,可別讓快取記憶體混淆我們的耳目囉。

我要發表回答

立即登入回答