cache一致性問題:
因爲cache中的內容是主存塊副本,當對cache的內容進行更新時,就存在cache和主存如何保持一致性問題。
cache操作:兩種情況 寫命中 write hit):要寫的單元已經在cache當中
兩種處理方式
1.write through(直寫)
同時寫cache和主存單元
由於CPU寫數據到cache很快,但是cache寫到DRAM很慢,爲了解決這個問題所以我們加入了寫緩衝(write buffer)
2.write back( 回寫)
即寫cache時不管主存,直接在cache上面改就行,這個時候鎖死主存那塊數據(我想到了我們打開excel文件時,再修改桌面名字時發現一致性問題),
我們加入dirty-bit髒位:即判斷cache裏面內容修改沒,沒修改就不改主存
2.寫不命中(write Miss):要寫的單元不在cache中
有兩種處理方式
1.write allocate(寫分配)
將主存裝入Cache,然後更新相應單元
2.no write allocate(非寫分配)
直接寫主存單元,不裝入到cache, 與第一種相比沒有利用到空間局部性,因爲沒有裝入到cache中。
實現虛擬存儲器需要解決的問題
1.塊大小應該多大?2到 64kb
2.主存與輔存的空間管理 採用全相連映射,主存只要有空,就放進去,原因,缺頁開銷比cache大得多,而訪問磁盤要幾百萬個時鐘週期
缺頁 使用軟件處理,cache缺失使用硬件處理
3.程序塊/存儲塊之間如何映像
4.邏輯地址與物理地址之間如何轉換,轉換速度提高
5.主存輔存之間如何讓進行替換
6.頁表如何實現,需啊要記錄啥信息 頁表項
7.加快頁表的訪問速度 引入TLB(快表)
8.要找的內容不在主存
9.如何保護進程各自存儲區不被其他進程訪問 設定訪問權限
cpu 訪存過程:3個缺失處理,
TLB,Cache,頁框