superzch 发表于 2003-4-14 21:39:00

一個CACHE的問題

QUESTION:CHCHE中保存的是數據還是指針 :?:

superzch 发表于 2003-4-14 21:45:55

QUESTION2:在一個雙CPU的系統里,如果CACHE1,CACHE2同時命中內存中的區塊A,現CPU1使A的內容發生了變化,那通常CACHE2中的數據如何處理,作廢?WRITE-BACK?...

superzch 发表于 2003-4-14 21:51:44

QUESTION3:TAG是否只是在WRITE-BACK時有效

superzch 发表于 2003-4-14 21:54:28

QUESTION4:CACHE的地址是獨立的還是系統地址的一部分?TAG呢,他又是如何尋址的?

superzch 发表于 2003-4-14 22:00:51

QUESTION5:對於I-Cache和D-Cache,是否只是簡單的把一條指令拆成兩半,然後丟里邊去

i2win 发表于 2003-4-14 23:37:28

N人,难道你要搞CACHE的系统集成啊?!

Zxm 发表于 2003-4-15 10:24:35

1、Cache里存的是数据,不是指针(指令也可算是数据的一种,只不过存在I-Cache中,你说的捌成两半我不太明白)

2、你说的Cache1与Cache2(是不是指L1与L2 Cache,我是这么理解的)同时命中A区,之后的处理要看具体的CPU了,对于Intel的处理器而言,L1的内容是L2内容的一个子集,两者同时更新,但对于AMD的处理器则不是,L1中的数据不会出现在L2中,它们之间的协调有专用的算法(一般来说是L1先用,如果不需要了则转到L2,同时将L1的同数据清除)。现在我们只管L2中的数据改变情况,目前都是WB的回写机制,也就是说当前L2数据要被替换时才会写回内存中,平时不用回写,所有改动只在L2中体现。

3、Cache有自己独立的地址系统,Tag是做索引用的一种RAM(全称TagRAM),也称为标记缓存,是对Cache中的数据所对应的内存物理块地址的标记,所以在每次访问Cache时都要通过Tag进行检索,看看所需要的内存块有没有存在Cache中,如果没有就要到指定的内存块中读取所需的数据。Tag的地址有固定的编法(它和内存块地址有一个转换公式),在这里就不多说了,如果需要我可能会写一篇专文讨论这个问题。但要肯定的是,只要访问Cache就意味着搜索,有搜索就要用到Tag,而不管是不是要进行WB操作。

superzch 发表于 2003-4-15 13:07:04

多謝多謝,呵呵 :D
我那個CACHE1/CACHE2的問題是:在一個雙CPU的系統里,有CPU1/CPU2,CPU1的CACHE為CACHE1,CPU2的CACHE為CACHE2,現CAHCE1/CAHCE2都命中memory中的區塊A,如果現在CPU1將A中的數據改變,那麼CACHE2的數據自然就是錯誤的,一般CAHCE2的控制邏輯會如何處理?一些比較舊的資料里寫CACHE2會把數據丟棄,不知現在是否正確,或還可能有沒有其他的解法 :D

Zxm 发表于 2003-4-15 13:13:05

多謝多謝,呵呵 :D
我那個CACHE1/CACHE2的問題是:在一個雙CPU的系統里,有CPU1/CPU2,CPU1的CACHE為CACHE1,CPU2的CACHE為CACHE2,現CAHCE1/CAHCE2都命中memory中的區塊A,如果現在CPU1將A中的數據改變,那麼CACHE2的數據自然就是錯誤的,一般CAHCE2的控制邏輯會如何處理?一些比較舊的資料里寫CACHE2會把數據丟棄,不知現在是否正確,或還可能有沒有其他的解法 :D

我记得多CPU处理器在同一时间只能有一个CPU访问共享的内存,而且先访问的CPU会将所访问的数据设为锁存状态(在Cache释放前,禁止其他CPU修改),所以只能说多个CPU先后对同一个内存数据寻址,而不能说同时访问。此时就要用到CPU之间的交流机制还实现数据的同步,这方面《电脑高手》以前有过专文介绍,你可以看看(好象就是《多处理器系统随览》)

aze34 发表于 2003-6-5 06:11:10

理解理解。。。。。。 :lol::lol::lol:
页: [1] 2
查看完整版本: 一個CACHE的問題