讀CSAPP 3 儲存器層次結構

2021-10-01 13:08:18 字數 1902 閱讀 6337

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的小的,快速的告訴快取儲存器...