由於硬體技術的限制,我們可以製造出容量很小但很快的儲存器,也可以製造出容量很大但很慢的儲存器,但不可能兩邊的好處都佔著,不可能製造出訪問速度又快容量又大的儲存器。因此,現代計算機都把儲存器分成若干級,稱為memory hierarchy,按照離cpu由近到遠的順序依次是cpu暫存器、cache、記憶體、硬碟,越靠近cpu的儲存器容量越小但訪問速度越快,下圖給出了各種儲存器的容量和訪問速度的典型值。
儲存器型別
位於**
儲存容量
半導體工藝
訪問時間
如何訪問
cpu暫存器
位於cpu執行單元中。
cpu暫存器通常只有幾個到幾十個,每個暫存器的容量取決於cpu的字長,所以一共只有幾十到幾百位元組。
「暫存器」這個名字就是一種數位電路的名字,它由一組觸發器(flip-flop)組成,每個觸發器儲存乙個bit的資料,可以做訪問和移位等操作。計算機掉電時暫存器中儲存的資料會丟失。
暫存器是訪問速度最快的儲存器,典型的訪問時間是幾納秒。
使用哪個暫存器,如何使用暫存器,這些都是由指令決定的。
cache
和mmu一樣位於cpu核中。
cache
通常分為幾級,最典型的是如上圖所示的兩級cache,一級cache更靠近cpu執行單元,二級cache更靠近物理記憶體,通常一級cache有幾十到幾百kb,二級cache有幾百kb到幾mb。
cache
和記憶體都是由ram(randomaccessmemory)組成的,可以根據位址隨機訪問,計算機掉電時ram中儲存的資料會丟失。不同的是,cache通常由sram(staticram,靜態ram)組成,而記憶體通常由dram(dynamicram,動態ram)組成。dram電路比sram簡單,儲存容量可以做得更大,但dram的訪問速度比sram慢。
典型的訪問時間是幾十納秒。
cache
快取最近訪問過的記憶體資料,由於cache的訪問速度是記憶體的幾十倍,所以有效地利用cache可以大大提高計算機的整體效能。一級cache是這樣工作的:cpu執行單元要訪問記憶體時首先發出va,cache利用va查詢相應的資料有沒有被快取,如果cache中有就不需要訪問物理記憶體了,是讀操作就直接將cache中的資料傳給cpu暫存器,是寫操作就直接在cache中改寫資料;如果cache中沒有,就去物理記憶體中取資料,但並不是要哪個位元組就取哪個位元組,而是把相鄰的幾十個位元組都取上來快取著,以備下次用到,這稱為乙個cache line,典型的cacheline大小是32~256位元組。如果計算機還配置了二級快取,則在訪問物理記憶體之前先用pa去二級快取中查詢。一級快取是用va定址的,二級快取是用pa定址的,這是它們的區別。cache所做的工作是由硬體自動完成的,而不是像暫存器一樣由指令決定先做什麼後做什麼。記憶體
位於cpu外的晶元,與cpu通過位址和資料匯流排相連。
典型的儲存容量是幾百mb到幾gb。
由dram組成,詳見上面關於cache的說明。
典型的訪問時間是幾百納秒。
記憶體是通過位址來訪問的,但是在啟用mmu的情況下,程式指令中的位址是va,而訪問記憶體用的是pa,並無直接關係,這種情況下記憶體的分配和使用由作業系統通過修改mmu的對映項來協調。硬碟
位於裝置匯流排上,並不直接和cpu相連,cpu通過裝置匯流排的控制器訪問硬碟。
典型的儲存容量是幾百gb。
硬碟由磁性介質和磁頭組成,訪問硬碟時存在機械運動,磁頭要移動,磁性介質要旋轉,機械運動的速度很難提高到電子的速度,所以訪問速度很受限制。但是儲存在硬碟上的資料掉電後不會丟失。
典型的訪問時間是幾毫秒,是暫存器的106倍。
由驅動程式操作裝置匯流排控制器去訪問。由於硬碟的訪問速度較慢,作業系統通常在一次從硬碟上讀幾個頁面(典型值是4kb)到記憶體中快取起來,如果這些資料後來都被程式訪問到了,那麼這一次硬碟訪問的時間就可以分攤(amortize)給多次資料訪問了。
計算機底層04 計算機儲存層次架構
上接 計算機底層03 cpu工作原理 按照儲存介質分類 有磁芯,磁碟,光碟,半導體儲存 按照儲存性質分類 易失性儲存 非易失性儲存 也叫做非持久化儲存 持久化儲存 易失性儲存通常指斷電即丟失 按照效能層次分類 主存 外存進行分類 而快取為了彌補速度的差異性 儲存分為主存,輔存和快取 而主存裡有ram...
計算機層次化儲存結構
隨著cpu不斷的公升級和匯流排速度的不斷提高,儲存器的速度遠遠不能與之匹配,快取記憶體的訪問速度和cpu相匹配,但 高,且容量小 記憶體由dram構成,速度比快取記憶體慢,但容量大 輔助儲存器速度比記憶體慢的多,但容量又比記憶體大得多。為使儲存空間足夠大且又能滿足cpu的訪問速度要求而且 適中,計算...
計算機的儲存器
計算機組成之儲存器 目前我們採用的計算機都是馮.諾依曼結構,採用的都是程式驅動型,使用者使用計算機解決問題必須編寫程式,儲存程式和執行程式。儲存器按儲存位置分為 記憶體儲器 外儲存器 記憶體儲器 記憶體小,讀寫速度快 外儲存器 記憶體大,讀寫速度慢,且每次呼叫資料都得先通過主線再進行呼叫。按儲存介質...