ram分兩類,靜態(sram)的和動態的(dram),sram要比dram更快,**也更高。
sram用於快取記憶體儲存器,可以在cpu晶元上,也可以在片下。dram用來作為主存以及
圖形系統的幀緩衝區。無論哪種ram一旦斷電,所有資訊都會丟失。
磁碟儲存資料的數量級更大,比ram大得多,但讀取資訊要比dram慢10w倍,比sram慢100w倍。
磁碟分為機械硬碟和固態硬碟,機械硬碟的讀寫速度要低於固態硬碟,但**低廉。
io匯流排:例如,滑鼠鍵盤,圖形卡,磁碟等裝置連線的稱為io匯流排乙個好的程式應該有良好的區域性性,這樣可以使得效率更快
看乙個例子
int
sumvec
(int v[n]
)
這個函式中,sum就有很好的時間區域性性,在多次迴圈中,會一直訪問同乙個記憶體位置,因為是標量所以沒有空間區域性性。
陣列v被順序讀取,讀取第i個位置,那麼附近的位置也會在下次迴圈中讀取,所以有很好的空間區域性性,但每個變數只訪問一次,所以時間區域性性很差。
這個函式中要麼有好的時間區域性性,要麼有好的空間區域性性,所以sumvec函式有良好的區域性性。
再看乙個例子:
int
sumarray1
(int a[m]
[n])
intsumarray2
(int a[m]
[n])
兩個程式做的事情一模一樣,效率看起來也是一樣的。但根據區域性性原理:
sumarray1有空間區域性性,sumarry2則沒有。
這個二維陣列儲存在記憶體的順序是一行行的儲存,也就是按照行來讀就會按序讀取,按列讀取就會跳著讀。
空間區域性性的臨近讀取,導致最終sumarry1更高效。
快取型別
快取內容
快取在何處
延遲(時鐘週期)
管理cpu暫存器
4或8 位元組
晶元上的cpu暫存器
0編譯器
tlb位址翻譯
晶元上的tlb
0記憶體管理單元
l1 快取記憶體
64 位元組塊
晶元上的l1 快取4硬體
l2 快取記憶體
64 位元組塊
晶元上的l2 快取
10硬體
虛擬記憶體
4 kb 頁
主存100
硬體+os
緩衝區快取
部分檔案
主存100
os磁碟快取
磁碟扇區
磁碟控制器
100,000
磁碟韌體
網路緩衝區快取
部分檔案
本地磁碟
10,000,000
nfs 客戶端
瀏覽器快取
web頁
本地磁碟
10,000,000
web瀏覽器
web 快取
web頁
遠端伺服器磁碟
1,000,000,000
web **伺服器
下一層的儲存器都是為上一層做快取的,如果想要獲取某個資料物件d,在k層則是快取命中,如果沒有則需要去k+1層查詢,查詢到後放入k層。
如果這時候k層資料已滿就會可能覆蓋現在的儲存空間塊,有專門的替換策略來將新資料替換原先資料。這種多級儲存體系將幾種儲存技術結合起來,更好的解決儲存器大容量、高速度和低成本這三者之間的矛盾
當前儲存器中獲取不到資料,則需要向下級進行獲取,這就是快取不命中,主要有三種:
儲存器層次結構
sram 靜態隨機訪問儲存器 sram儲存穩定,訪問速度快 具有雙穩定特性,一般作為1,2級快取記憶體。dram 動態隨機訪問儲存器 dram儲存不如sram訪問速度快,相比也沒有sram穩定,一般作為主存 記憶體 和圖形系統幀緩衝區。dram晶元中的乙個單元儲存乙個位,w個單元儲存乙個位元組,w個...
儲存器層次結構
電腦程式的乙個基本屬性 區域性性 儲存器層次結構分類 1 cpu暫存器 放在cpu裡面的記憶體,特點 速度快,高 2 快取記憶體儲存器 主儲存器 磁碟。特點 cpu之外,需要時訪問呼叫,相對較慢 兩類ram 1 sram 靜態 1 更快,更貴。2 作為快取記憶體儲存器,主要負責運算需要 3 雙穩態的...
儲存器層次結構
在簡單模型中,儲存器系統是乙個線性的位元組陣列,而cpu能夠在乙個常數時間內訪問每個儲存器的位置。雖然到現在為止沒有任何乙個有效的模型,可以模仿它的工作方式。實際上,儲存器系統是乙個具有不同容量,成本和訪問時間的儲存裝置的層次結構。cpu暫存器儲存最常用的資料。靠近cpu的小的,快速的告訴快取儲存器...