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

計(jì)算機(jī)存儲(chǔ)器的作用和分類(lèi)說(shuō)明

探究計(jì)算機(jī)存儲(chǔ)器結(jié)構(gòu)體系2

計(jì)算機(jī)系統(tǒng)的組成之存儲(chǔ)器

評(píng)論