前言
生活中經(jīng)常聽到這句話“一分錢一分貨,哪有那么多又便宜又好用”,在計算機存儲體系中,也是如此,存儲速度越快的,也就越貴,而且是呈指數(shù)的貴。計算機存儲呈如下金字塔排布。
理想情況下,我們肯定希望擁有無限大的內(nèi)存容量,這樣就可以立刻訪問任何一個特定的機器字,但我們不得不認識到有可能需要構(gòu)建分層結(jié)構(gòu)的存儲器,每一層次容量都要大于前一層次,但其訪問速度也要更慢一些。
你是不是經(jīng)常被以下名詞弄得暈頭轉(zhuǎn)向。ROM/RAM/DRAM/SRAM/SDRAM/DDR SDRAM等等,下面,我盡力以上圖為參考,從上到下,說明各個層次存儲器的特點和區(qū)別,并對它們的工作原理做一些簡要的說明
1.寄存器( Register )
寄存器是CPU中的一部分。它是一個高速存貯部件,可以用來暫存指令、數(shù)據(jù)和地址。每個CPU中有多個寄存器,例如8086CPU中含有14個寄存器。
寄存器是CPU的內(nèi)部組成單元,是CPU運算時取指令和數(shù)據(jù)最快的地方。它可以用來暫存指令、數(shù)據(jù)和地址。在CPU的控制部件中,包含的寄存器有指令寄存器(IR)和程序計數(shù)器(PC)。CPU的算術(shù)邏輯部件中,包含的寄存器有累加器(ACC)。 下圖中藍色小框里面,全是寄存器。
2.高速緩存(Cache)與主存
2.1 引入cache的目的
計算機在運行程序時,首先將程序從磁盤讀取到主存,然后CPU按規(guī)則從主存中取出指令,數(shù)據(jù)并執(zhí)行指令,但是直接從主存(一般是DRAM)中讀寫是很慢的,所以引入了高速緩存(Cache)。
在程序運行前首先會試圖將指令,數(shù)據(jù)從主存中讀取到Cache中,然后在程序執(zhí)行時直接訪問Cache,如果指令和數(shù)據(jù)可以從Cache中讀取到,那么就說是“命中(hit)”,反之就是“不命中(miss)”,miss情況下需要從主存中讀取指令或者數(shù)據(jù),這樣會直接影響CPU的性能,所以命中率對CPU來說至關(guān)重要。
現(xiàn)代處理器一般有三層cache,分別稱為L1 cache、L2 cache、L3 cache。L1 cache離CPU核最近,存儲信息的 讀取速度接近CPU核的工作速度 ,容量較小,一般分成I-cache和D-cache兩塊,分別存儲指令和數(shù)據(jù);L2 cache比L1更遠,速度慢一些,但是容量更大,不分I-cache和D-cache;L3更慢、更大,現(xiàn)在流行多核處理器,L3一般由多個處理器核共享,而L1、L2是單核私有的。
實際上cache是一個廣義的概念,可以認為主存是磁盤的cache,而CPU內(nèi)cache又是主存的cache,使用cache的目的就是偽造出一個容量有低層次存儲器(如磁盤)那么大,而速度又有寄存器(如通用寄存器)那么快的存儲器,簡單來說就 要讓存儲單元看起來又大又快 。
2.2 cache的理論基礎(chǔ)
cache之所以能work,主要基于兩個認識,即程序運行時數(shù)據(jù)具有時間局部性和 空間局部性 。
時間局部性是指一個數(shù)據(jù)如果當前被使用到,那么接下去一段時間它很可能被再次用到;空間局部性是指一個數(shù)據(jù)如果當前被使用到,那么接下去一段時間它周圍的數(shù)據(jù)很可能也會被用到,比如數(shù)組。
2.3 Cache的組成方式
cache容量較小,所以 數(shù)據(jù)需要按照一定的規(guī)則從主存映射到cache 。一般把主存和cache分割成一定大小的塊,這個塊在主存中稱為 data block ,在cache中稱為cache line。 舉個例子,塊大小為1024個字節(jié),那么data block和cache line都是1024個字節(jié)。當把主存和cache分割好之后,我們就可以把data block放到cache line中,而這個“放”的規(guī)則一般有三種,分別是“ 直接映射 ”、“ 組相聯(lián) ”和“ 全相聯(lián) ”。
直接映射
直接映射采用“ 取模 ”的方式進行一對一映射。舉個例子,如果cache中共有8個cache line,那么0、8、16、24…號data block會被映射到0號cache line中,同理1、9、17….號data block會被映射到1號cache line中。
組相聯(lián):
直接映射中主存中的每一個data block都有一個確定的cache line進行映射,這是有缺陷的。當程序連續(xù)讀取0、8、0、8號data block的數(shù)據(jù)時,因為只有一個cache line供映射,所以當?shù)诙巫x取0號block時,第一次讀到cache中的0號block早被頂替出去了,這時候又會產(chǎn)生miss,miss會極大地影響執(zhí)行效率。
為了解決上面的問題,提出使用“組相聯(lián)”的方式。
根據(jù)上圖我們很容易發(fā)現(xiàn)比起直接映射,組相聯(lián)翻倍了block可以映射的cache line的數(shù)量,圖上數(shù)量為2,我們稱每兩個cache line為一個cache set。
全相聯(lián)
全相聯(lián)是極端的組相聯(lián),即cache只有一個cache set。每一個data block都可以存進任何一個cache line。下圖是對應(yīng)關(guān)系。
2.4.RAM與ROM
計算機中按存儲類型劃分為 隨機存儲器 (Random Access Memory, RAM)和 只讀存儲器 (Read Only Memory, ROM)
-
(1) 隨機存儲器 (Random Access Memory, RAM)
RAM是一種可讀/寫存儲器,其特點是存儲器的任何一個存儲單元的內(nèi)容都可以隨機存取,而且存取時間域存儲單元的物理位置無關(guān)。
-
(2) 只讀存儲器 (Read Only Memory, ROM)
顧名思義,ROM只能對其存儲的內(nèi)容讀出,不能對其重新寫入。因此,通常用它存放固定不變的程序、常數(shù)、漢字字庫等。存放在ROM設(shè)備中的程序通常稱為固件(firmware)。比如我們計算機的BIOS,就是存放在ROM中的。隨著半導體技術(shù)的發(fā)展,出現(xiàn)了可編程只讀存儲器(Programmable ROM, PROM)、可擦除可編程只讀存儲器(Erasable Programmable ROM, EPROM)及用電可擦除可編程只讀存儲器(Electrically Erassable Programmable ROM, EEPROM)。近年來還出現(xiàn)了閃速存儲器(Flash Memory),它基于EEPROM。
高速緩存和主存都是RAM(Random-Access Memory,隨機訪問存儲器),它分為靜態(tài)的(SRAM)和動態(tài)的(DRAM),分別對應(yīng)高速緩存和主存。
-
SDRAM
+關(guān)注
關(guān)注
7文章
422瀏覽量
55129 -
ROM
+關(guān)注
關(guān)注
4文章
562瀏覽量
85618 -
DDR
+關(guān)注
關(guān)注
11文章
704瀏覽量
65156
發(fā)布評論請先 登錄
相關(guān)推薦
評論