CPU的快取功用?

ya19881217

進階會員
已加入
11/14/07
訊息
376
互動分數
0
點數
0
製造大容量快取的技術困難
頂多幾M而已

快取的妙用到底在哪 對效能的影響又是怎樣呢?
 

cfw2214

一般般會員
已加入
5/3/04
訊息
112
互動分數
0
點數
0
如果我沒記錯的話

因為 cpu 是負責 運算 如 1+1=2

但因為 要加速效能 在作複雜運算的時候

要增加效能 L2 快取 這時他的工作就是 有記憶體空間 給CPU猜答案

如 要運算提目 1+1=?

CPU 就預先把 答案 猜出來

1.1+1=0

2.1+1=1

3.1+1=2

這樣一來 就已經有三個答案在等者它 用這樣的方法來增加效能

當然現在的L1 L2 L3快取 應該有更 好的運用

就請其他大大來解說 (以上如有錯誤 請指正)
 

sauce3794

一般般會員
已加入
10/26/07
訊息
94
互動分數
0
點數
6
Cache memory的內容只是主記憶體的一小部分資料
這一點點資料是程式執行時經常使用的資料
那為什麼要快取記憶體?
因為他的速度比主記憶體快得多
且通常程式執行會有 Locality 現象, 對於作業系統會將經常存取的資料會放在 Cache memory 中, 就是想讓平均記憶體存取時間可以降低, 儘量的讓CPU只對速度快的Cache memory存取
所以一般來說 Cache 愈大, 效能愈好.

至於 Page fault, Cache miss, hit的處理
您有興趣可以翻翻
Patterson and Hennessy寫的
Computer Organization and Design 這本書(俗稱白算盤)




樓上的大大
您完全說錯了, 電腦系統不會自己猜答案的 - -"
L1 L2 L3 只是分成三層的Cache架構
原理與 L1 L2 兩層相同

分層如下
CPU <--> L1 <--> L2 <--> L3 <--> RAM <--> HARD DISK

簡單來說
當CPU在某一層存取, 發生 MISS 的時候 CPU就會去下一曾找資料
 
最後編輯:

ya19881217

進階會員
已加入
11/14/07
訊息
376
互動分數
0
點數
0
Cache memory的內容只是主記憶體的一小部分資料
這一點點資料是程式執行時經常使用的資料
那為什麼要快取記憶體?
因為他的速度比主記憶體快得多
且通常程式執行會有 Locality 現象, 對於作業系統會將經常存取的資料會放在 Cache memory 中, 就是想讓平均記憶體存取時間可以降低, 儘量的讓CPU只對速度快的Cache memory存取
所以一般來說 Cache 愈大, 效能愈好.

至於 Page fault, Cache miss, hit的處理
您有興...


跟我預想的完全相通 只是無法求證
存取速度也就是
暫存器>L1>L2>L3>RAM>HDD
說也怪AMD的cache總是比INTEL小4倍 是技術不足還是架構上的不同?
如果我沒記錯的話

因為 cpu 是負責 運算 如 1+1=2

但因為 要加速效能 在作複雜運算的時候

要增加效能 L2 快取 這時他的工作就是 有記憶體空間 給CPU猜答案

如 要運算提目 1+1=?

CPU 就預先把 答案 猜出來

1.1+1=0

2.1+1=1

3.1+1=2

這樣一來 就已經有三個答案在等者它 用這樣的方法來增加效能

當然現在的L1 L2 L3快取 應該有更 好的運用

就請其他大大來解說 (...



"猜答案"是有點誇張;x;
 
最後編輯:

salunt

Silent Link
已加入
4/27/07
訊息
1,535
互動分數
0
點數
0
年齡
42
如果我沒記錯的話

因為 cpu 是負責 運算 如 1+1=2

但因為 要加速效能 在作複雜運算的時候

要增加效能 L2 快取 這時他的工作就是 有記憶體空間 給CPU猜答案

如 要運算提目 1+1=?

CPU 就預先把 答案 猜出來

1.1+1=0

2.1+1=1

3.1+1=2

這樣一來 就已經有三個答案在等者它 用這樣的方法來增加效能

當然現在的L1 L2 L3快取 應該有更 好的運用

就請其他大大來解說 (...

完全錯誤......

現行電腦運作的機制
資料一定要存入主記憶體,也就是我們平常說的RAM才能運算,
而目前CPU的運算速度是遠超過記憶體的,所以CPU常常需要『等』RAM

為了減緩這種狀況,就有所謂的cache快取(也稱緩存)
通常有L1~L3
是一種內建於CPU中,時脈跟CPU一樣的記憶體
(最早期還有Build在主機板的)
以目前的L2來說,頻寬大約是DDR2-800雙通道的4倍左右
當CPU運算時,他會把較為常用的資料存於快取中
等到需要存取資料,就會先從快取之中尋找
找到了就好,找不到才進一步去RAM中搜尋
如此減少從RAM搜尋資料浪費的時間
 

sauce3794

一般般會員
已加入
10/26/07
訊息
94
互動分數
0
點數
6
存取速度也就是
暫存器>L1>L2>L3>RAM>HDD
說也怪AMD的cache總是比INTEL小4倍 是技術不足還是架構上的不同?
至於上面說的"猜答案"則是有點誇張 999999X999999電腦要猜多久? 猜到100年?

其實AMD想要把Cache做得比INTEL大是很容易的,
不過AMD不這麼做, 可能是要 節省成本, 因為Cache memory成本太高, 如果cache小一點, 自然售價就可以反映在市場上了...
 
最後編輯:

salunt

Silent Link
已加入
4/27/07
訊息
1,535
互動分數
0
點數
0
年齡
42
其實AMD想要把Cache做得比INTEL大是很容易的,
不過AMD不這麼做, 可能是要 節省成本, 因為Cache memory成本太高, 如果cache小一點, 自然售價就可以反映在市場上了...

不全然對
之前所說,CPU之所以要『等』記憶體
主要的原因在於需要透過北橋這個橋樑
北橋頻寬不足,自然會拖慢CPU跟記憶體溝通的時間

而AMD CPU的Cache比較小
除了降低成本,對大的原因是因為AMD現行CPU架構比較不依賴快取
為什麼呢?因為AMD CPU使用了HT技術
把記憶體控制器直接內建於CPU中,讓CPU可以直接跟記憶體溝通
不需要經過北橋,相對也就比較不會有頻寬不足拖慢速度的問題
 

ya19881217

進階會員
已加入
11/14/07
訊息
376
互動分數
0
點數
0
不全然對
之前所說,CPU之所以要『等』記憶體
主要的原因在於需要透過北橋這個橋樑
北橋頻寬不足,自然會拖慢CPU跟記憶體溝通的時間

而AMD CPU的Cache比較小
除了降低成本,對大的原因是因為AMD現行CPU架構比較不依賴快取
為什麼呢?因為AMD CPU使用了HT技術
把記憶體控制器直接內建於CPU中,讓CPU可以直接跟記憶體溝通
不需要經過北橋,相對也就比較不會有頻寬不足拖慢速度的問題

原來主因是出在架構上的不同 兩家各有優缺點
 

sauce3794

一般般會員
已加入
10/26/07
訊息
94
互動分數
0
點數
6
感謝您的補充
不過
AMD現行CPU架構比較不依賴快取
這句話其實是錯的
不管是INTEL 或是 AMD 對於這個Cache都是很依賴的
INTEL與AMD再記憶體控制器設計上的不同
是因為AMD考量的地方與INTEL不同
但不會是因為AMD比較不依賴Cache而將記憶體控制器內建於CPU
且 Cache size做的比較小的原因也不會是AMD的CPU比較不依賴Cache.
所以我個人認為AMD是要降低成本來吸引消費者
 
最後編輯:

salunt

Silent Link
已加入
4/27/07
訊息
1,535
互動分數
0
點數
0
年齡
42
AMD現行CPU架構比較不依賴快取
其實是錯的
不管是INTEL 或是 AMD 對於這個Cache都是很依賴的

這是相對性而言
相對Intel來說AMD的架構的確比較不依賴cache
你可以比較看看E4xxx和E6xxx,以及Athlon和Opteron
這兩種組合,那種差距比較大

Cache的用意在於減少CPU讀寫主記憶體造成的延遲
既然AMD的HT架構比較不會有這種延遲
當然可以說成他比較不依賴cache
 
最後編輯:
▌延伸閱讀