嵌入式系統(tǒng)內(nèi)存終于搞明白了
共 7632字,需瀏覽 16分鐘
·
2024-07-29 22:10
關(guān)注、星標(biāo)公眾號(hào),直達(dá)精彩內(nèi)容
內(nèi)存
內(nèi)存是計(jì)算機(jī)中用于存儲(chǔ)和讀取數(shù)據(jù)的設(shè)備,它由一系列連續(xù)的存儲(chǔ)單元組成,每個(gè)存儲(chǔ)單元都有一個(gè)唯一的地址。內(nèi)存可以分為主存和輔助存儲(chǔ)器兩種類型。主存是計(jì)算機(jī)中直接與CPU進(jìn)行數(shù)據(jù)交換的部分,通常是指隨機(jī)訪問存儲(chǔ)器(RAM,Random Access Memory)。輔助存儲(chǔ)器則是用于長(zhǎng)期存儲(chǔ)數(shù)據(jù)的設(shè)備,如機(jī)械硬盤、固態(tài)硬盤(SSD,solid-state drive)等。當(dāng)計(jì)算機(jī)執(zhí)行程序時(shí),需要將程序和相關(guān)數(shù)據(jù)加載到內(nèi)存中,CPU通過讀取內(nèi)存中的指令和數(shù)據(jù)來進(jìn)行計(jì)算和操作。
嵌入式平臺(tái)具有多層次的存儲(chǔ)器結(jié)構(gòu),即不同類型存儲(chǔ)器的集合,各類存儲(chǔ)器具有不同的速度、容量和用途(如下圖)。
寄存器
寄存器(Register)是計(jì)算機(jī)中的一種小型存儲(chǔ)器件,用于存儲(chǔ)處理器(CPU)需要快速訪問的數(shù)據(jù),通常被集成在處理器芯片中。寄存器是計(jì)算機(jī)中最快的存儲(chǔ)器件之一,它們的訪問速度比主存儲(chǔ)器和輔助存儲(chǔ)器要快得多,因此可以極大提升計(jì)算機(jī)的性能。常見的寄存器有以下幾類:
程序計(jì)數(shù)器是一種特殊的寄存器,用于存儲(chǔ)正在執(zhí)行的程序的地址。當(dāng)處理器執(zhí)行程序時(shí),它會(huì)不斷地從程序計(jì)數(shù)器中讀取指令并執(zhí)行它們。
2)指令寄存器
指令寄存器用于存儲(chǔ)當(dāng)前正在執(zhí)行的指令。處理器從指令寄存器中讀取指令并執(zhí)行它們。
3)狀態(tài)寄存器
狀態(tài)寄存器用于存儲(chǔ)處理器的狀態(tài)信息。狀態(tài)寄存器中的位表示了處理器的不同狀態(tài),如進(jìn)位標(biāo)志、零標(biāo)志、負(fù)數(shù)標(biāo)志等。
4)通用寄存器
通用寄存器是一種通用的寄存器,用于存儲(chǔ)處理器需要快速訪問的數(shù)據(jù)。它們可以用于存儲(chǔ)函數(shù)調(diào)用時(shí)的參數(shù)和返回值,以及存儲(chǔ)中間計(jì)算結(jié)果等。
Cache
Cache是一種高速緩沖存儲(chǔ)器,是為了解決CPU和主存之間速度不匹配而采用的一項(xiàng)重要技術(shù),一般分為一級(jí)緩存 L1 Cache、二級(jí)緩存 L2 Cache、三級(jí)緩存 L3 Cache。在現(xiàn)在的系統(tǒng)中,處理器需要上百個(gè)時(shí)鐘周期才能從主存中取到數(shù)據(jù),如果沒有cache,處理器在等待數(shù)據(jù)的大部分時(shí)間內(nèi)將會(huì)停滯不動(dòng)。
位于內(nèi)存和CPU之間,是一個(gè)讀寫速度比內(nèi)存更快的存儲(chǔ)器
當(dāng)CPU向內(nèi)存中讀寫數(shù)據(jù)時(shí),這些數(shù)據(jù)也會(huì)被讀寫入高速緩沖存儲(chǔ)器中,如果 Cache 中沒有,CPU會(huì)去讀內(nèi)存中的數(shù)據(jù)
每次被訪問的主存塊,一定會(huì)被立即調(diào)入Cache
為了進(jìn)一步提升性能,引入多級(jí)Cache,與CPU離得最近的是L1,L1后面連接L2,L2和主存之間連接L3,等級(jí)越高,速度越慢(相比主存依然很快),容量越大
L1和L2往往都是SRAM
(1)L1 Cache
一級(jí)緩存,與CPU離得最近的Cache,通常是32-64KB大小,一級(jí)緩存L1 Cache的容量是最小的
一般來說,一級(jí)緩存可以分為一級(jí)數(shù)據(jù)緩存(Data Cache,D-Cache)和一級(jí)指令緩存(Instruction Cache,I-Cache),二者分別用來處理數(shù)據(jù)和對(duì)這些這些數(shù)據(jù)的指令進(jìn)行及時(shí)解碼,而且二者可以同時(shí)被CPU訪問,減少了爭(zhēng)用Cache所造成的沖突,提高了處理器效能
目前大多數(shù)CPU的一級(jí)數(shù)據(jù)緩存和一級(jí)指令緩存具有相同的容量
L1 cache一般工作在CPU的時(shí)鐘頻率,要求的就是夠快,可以在2-4時(shí)鐘周期內(nèi)取到數(shù)據(jù)
(2)L2 Cache
L2 cache相對(duì)來說是為提供更大的容量而優(yōu)化的,因此比L1更便宜、省電,容量更大
雖然L1和L2往往都是SRAM,但構(gòu)成存儲(chǔ)單元的晶體管并不一樣
L1是為了更快的速度訪問而優(yōu)化過的,它用了更多/更復(fù)雜/更大的晶體管,從而更加昂貴和更加耗電
L2相對(duì)來說是為提供更大的容量?jī)?yōu)化的,用了更少/更簡(jiǎn)單的晶體管,從而相對(duì)便宜和省電
L2通常是256KB-2MB大小,一般從L2開始指令和數(shù)據(jù)就不分開了,可以在10-20個(gè)時(shí)鐘周期內(nèi)取到數(shù)據(jù)
(3)L3 Cache
三級(jí)緩存,位于L2和主存之間,大小通常為8-80MB,20-50個(gè)時(shí)鐘周期的訪問時(shí)間
在有一些CPU設(shè)計(jì)中,也會(huì)用DRAM實(shí)現(xiàn)大容量的L3 cache
備注:這里所說的時(shí)鐘周期都是指的CPU的時(shí)鐘周期。一般L2和L3的工作時(shí)鐘頻率要比CPU的低,這個(gè)時(shí)鐘周期是折算后的數(shù)值。
RAM
隨機(jī)訪問存儲(chǔ)器(RAM,Random Access Memory),通常也稱為主存儲(chǔ)器,是內(nèi)存中最重要的一種,既可以讀取數(shù)據(jù),也可以寫入數(shù)據(jù),但是當(dāng)機(jī)器掉電時(shí),數(shù)據(jù)就會(huì)丟失。RAM根據(jù)信息存儲(chǔ)的機(jī)理不同可以分為SRAM和DRAM。
(1)SRAM
靜態(tài)隨機(jī)訪問存儲(chǔ)器(SRAM,Static RAM),半導(dǎo)體存儲(chǔ)器,存取速度比DRAM快,是目前讀寫速度最快的存儲(chǔ)設(shè)備。
SRAM存儲(chǔ)單元由基于晶體管的觸發(fā)器電路組成,通過電流在電路中一對(duì)相反的門電路上雙向切換來保存數(shù)據(jù)
不需要刷新電路保存數(shù)據(jù),只要電源不被切斷,數(shù)據(jù)存入后不會(huì)消失
集成度比較低,不適合做容量大的內(nèi)存,相同容量成本比DRAM高的多
主要用于CPU內(nèi)部的一級(jí)緩存(L1 Cache)以及二級(jí)(L2)緩存
通過三組信號(hào)線與外部打交道:地址線、數(shù)據(jù)線、控制線,一般行列地址不復(fù)用
(2)DRAM
動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器(DRAM,Dynamic RAM),同樣屬于半導(dǎo)體存儲(chǔ)器。由于柵極會(huì)漏電,所以每隔一定的時(shí)間就需要一個(gè)刷新機(jī)構(gòu)給這些柵電容補(bǔ)充電荷,并且每讀出一次數(shù)據(jù)之后也需要補(bǔ)充電荷,這個(gè)就叫動(dòng)態(tài)刷新,所以稱其為動(dòng)態(tài)隨機(jī)存儲(chǔ)器。
DRAM存儲(chǔ)單元是具有電容器的電路,電容以存儲(chǔ)電荷的方式存儲(chǔ)數(shù)據(jù)(有電荷代表1,無(wú)電荷代表0)
電容無(wú)法保存電荷(數(shù)據(jù)),因此需要對(duì)電容定期進(jìn)行一次刷新動(dòng)作(若電量大于滿電量的1/2,則認(rèn)為其代表1,并把電容充滿電;若電量小于1/2,則認(rèn)為其代表0,并把電容放電),來保持?jǐn)?shù)據(jù)的連續(xù)性
DRAM保留數(shù)據(jù)的時(shí)間很短,速度也比SRAM相對(duì)慢一些,不過還是比任何的ROM都要快
由于只使用一個(gè)MOS管來存信息,所以集成度很高,容量能夠做的很大
支持行列地址復(fù)用,從價(jià)格上來說DRAM相比SRAM要便宜很多
DRAM分為很多種,常見的主要有SDRAM、DDR SDRAM、RDRAM、MDRAM、EDRAM、FRAM等
下面將介紹兩種常見的DRAM:SDRAM、DDR(DDR SDRAM)。
SDRAM
同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器(SDRAM,Synchronous DRAM),比DRAM多了一個(gè)時(shí)鐘同步,即數(shù)據(jù)的讀寫需要時(shí)鐘來同步。同步是指其時(shí)鐘頻率和CPU前端總線的系統(tǒng)時(shí)鐘相同,并且內(nèi)部命令的發(fā)送與數(shù)據(jù)的傳輸都以它為基準(zhǔn)。
存儲(chǔ)陣列需要不斷的刷新來保證數(shù)據(jù)不丟失
其存儲(chǔ)單元不是按線性排列的,是分頁(yè)的,因此數(shù)據(jù)不是線性依次存儲(chǔ),而是自由指定地址進(jìn)行數(shù)據(jù)的讀寫
DRAM和SDRAM容量較SRAM大,但是讀寫速度不如SRAM
一般的嵌入式產(chǎn)品里面的內(nèi)存都是用的SDRAM
DDR
雙倍數(shù)據(jù)速率同步隨機(jī)存儲(chǔ)器(DDR-SDRAM,Double Data Rate SDRAM),DDR是一種技術(shù),使用了DDR技術(shù)的SDRAM是常見的計(jì)算機(jī)內(nèi)存類型,用于存儲(chǔ)數(shù)據(jù)和指令。
可以在一個(gè)時(shí)鐘讀寫兩次數(shù)據(jù),這樣就使得數(shù)據(jù)傳輸速度加倍了
廣泛應(yīng)用于個(gè)人電腦、服務(wù)器和其他計(jì)算設(shè)備中,很多高端的顯卡上,也配備了高速DDR來提高帶寬,這可以大幅度提高3D加速卡的像素渲染能力
DDR分類主要根據(jù)其數(shù)據(jù)傳輸速率和代號(hào)來進(jìn)行區(qū)分
DDR1:DDR1是第一代DDR內(nèi)存,數(shù)據(jù)傳輸速率相對(duì)于傳統(tǒng)的SDRAM有所提升。它的數(shù)據(jù)傳輸速率相對(duì)較低,通常在200MHz到400MHz之間。DDR1內(nèi)存模塊有184個(gè)引腳。DDR1內(nèi)存的代號(hào)通常以PC開頭,如PC1600、PC2100等。
DDR2:DDR2是第二代DDR內(nèi)存,相比DDR1有更高的數(shù)據(jù)傳輸速率和更低的功耗。通常在400MHz到1066MHz之間。DDR2內(nèi)存模塊有240個(gè)引腳。如PC2-3200、PC2-5300等。
DDR3:DDR3是第三代DDR內(nèi)存,它的數(shù)據(jù)傳輸速率更高,通常在800MHz到2133MHz之間。DDR3內(nèi)存模塊有240個(gè)引腳。如PC3-8500、PC3-12800等。
DDR4:DDR4是第四代DDR內(nèi)存,相比DDR3,它的數(shù)據(jù)傳輸速率更高,通常在2133MHz到3200MHz之間。DDR4內(nèi)存模塊有288個(gè)引腳。如PC4-17000、PC4-24000等。
DDR5:DDR5是最新一代的DDR內(nèi)存,通常在3200MHz以上。DDR5內(nèi)存模塊有288個(gè)引腳。如PC5-3200、PC5-6400等。
ROM
只讀存儲(chǔ)器(ROM,Read Only Memory),一般只能用于數(shù)據(jù)的讀取,不能寫入,主要用于保存嵌入式系統(tǒng)中的永久性數(shù)據(jù)。通常不由系統(tǒng)主電源直接供電,而是由獨(dú)立的小型板級(jí)電池供電。傳統(tǒng)的ROM具備以下特點(diǎn):
一種線路最簡(jiǎn)單半導(dǎo)體電路,通過掩模工藝一次性制造,其中的代碼與數(shù)據(jù)將永久保存(除非壞掉),掉電不丟失,不能進(jìn)行修改
一般在大批量生產(chǎn)時(shí)才會(huì)使用
優(yōu)點(diǎn)是成本低,但風(fēng)險(xiǎn)比較大,產(chǎn)品設(shè)計(jì)時(shí),如果調(diào)試不徹底,很容易造成幾千片的廢片
(1)PROM
可編程只讀存儲(chǔ)器(PROM,Programmable Red-Only Memory),產(chǎn)品只允許寫入一次,所以也被稱為“一次可編程只讀存儲(chǔ)器”(One Time Progarmming ROM,OTP-ROM)
PROM在出廠時(shí),存儲(chǔ)的內(nèi)容全為1,用戶可以根據(jù)需要將其中的某些單元寫入數(shù)據(jù)0
部分的PROM在出廠時(shí)數(shù)據(jù)全為0,則用戶可以將其中的部分單元寫入1, 以實(shí)現(xiàn)對(duì)其“編程”的目的
PROM的典型產(chǎn)品是“雙極性熔絲結(jié)構(gòu)“,如果我們想改寫某些單元,則可以給這些單元通以足夠大的電流并維持一定的時(shí)間,原先的熔絲即可熔斷,這樣就達(dá)到了改寫某些位的效果
另外一類經(jīng)典的PROM為使用“肖特基二極管”的PROM,出廠時(shí),其中的二極管處于反向截止?fàn)顟B(tài),還是用大電流的方法將反相電壓加在“肖特基二極管”,造成其永久性擊穿即可
(2)EPROM
可擦寫可編程只讀存儲(chǔ)器(EPROM,Erasable Programmable Read-Only Memory)由MOS管組成, 可將高強(qiáng)度的短波紫外線照射進(jìn)其內(nèi)建透明窗口,從而實(shí)現(xiàn)數(shù)據(jù)擦除并進(jìn)行多次編程。
特點(diǎn)是具有可擦除功能,擦除后即可進(jìn)行再編程
缺點(diǎn)是擦除需要使用紫外線照射一定的時(shí)間
這一類芯片特別容易識(shí)別,其封裝中包含有“石英玻璃窗”,一個(gè)編程后的EPROM芯片的“石英玻璃窗”一般使用黑色不干膠紙蓋住, 以防止遭到陽(yáng)光直射
(3)EEPROM
電可擦除可編程只讀存儲(chǔ)器(EEPROM,Electrically Erasable Programmable Read-Only Memory)同EPROM一樣,也可以多次擦除和重編程。
最大優(yōu)點(diǎn)是可直接用電信號(hào)擦除,也可用電信號(hào)寫入
擦除和重寫是在字節(jié)(Byte)級(jí)別進(jìn)行的
缺點(diǎn)是價(jià)格很高,寫入時(shí)間長(zhǎng),寫入速度慢
EEPROM不能取代RAM的原因是其工藝復(fù)雜, 耗費(fèi)的門電路過多,且重編程時(shí)間比較長(zhǎng),同時(shí)其有效重編程次數(shù)也比較低。
(4)Flash Memory
閃存也是一種非易失性的內(nèi)存(NVM),屬于EEPROM的改進(jìn)產(chǎn)品,綜合了RAM和ROM的優(yōu)勢(shì),即不會(huì)斷電丟失數(shù)據(jù),同時(shí)還可以快速讀取數(shù)據(jù)(NVRAM的優(yōu)勢(shì))。
用作存儲(chǔ)Bootloader以及操作系統(tǒng)或者程序代碼
最大特點(diǎn)是必須按塊(Block)擦除(每個(gè)區(qū)塊的大小不定,不同廠家產(chǎn)品規(guī)格不同), 而EEPROM則可以一次只擦除一個(gè)字節(jié)
廣泛用在PC機(jī)的主板上,用來保存BIOS程序,便于進(jìn)行程序的升級(jí),另外一大應(yīng)用領(lǐng)域是用來作為硬盤的替代品,具有抗震、速度快、無(wú)噪聲、耗電低的優(yōu)點(diǎn),但是將其用來取代RAM就顯得不合適,因?yàn)镽AM需要能夠按字節(jié)改寫,而Flash做不到
目前Flash主要被分成兩類:NOR Flash和NAND Flash。
Nor Flash
NOR型閃存,由Intel于1988年首次開發(fā),以編碼應(yīng)用為主,其功能多與運(yùn)算相關(guān),讀寫數(shù)據(jù)時(shí)不容易出錯(cuò)。
采用并行接口,有獨(dú)立的地址線和數(shù)據(jù)線
芯片內(nèi)執(zhí)行,這樣應(yīng)用程序可以直接在flash閃存內(nèi)運(yùn)行,不必再把代碼讀到系統(tǒng)RAM中
成本相對(duì)較高,容量較小,常見有128KB,256KB,1MB,2MB等
NAND Flash
NAND型閃存,由東芝發(fā)表于1989年,強(qiáng)調(diào)降低每比特的成本,更高的性能,并且象磁盤一樣可以通過接口輕松升級(jí),主要功能是存儲(chǔ)資料,如數(shù)碼相機(jī)中所用的記憶卡。
采用串行接口,地址線和數(shù)據(jù)線是共用的I/O線,類似電腦硬盤
CPU從里面讀取數(shù)據(jù)的速度很慢,所以一般用NAND做閃存的話就必須把NAND里面的數(shù)據(jù)先讀到內(nèi)存里面,然后CPU才能夠執(zhí)行
無(wú)法尋址和直接運(yùn)行程序,只能存儲(chǔ)數(shù)據(jù)
NAND FLASH非常容易出現(xiàn)壞區(qū),所以需要有校驗(yàn)的算法
成本相對(duì)較低,容量較大,常見有1GB,2GB甚至8GB等
eMMC
嵌入式多媒體卡(eMMC,embedded MultiMediaCard)是一種嵌入式、非易失的存儲(chǔ)系統(tǒng),主要由閃存(一般是Nand Flash)、閃存控制器(對(duì)內(nèi)部的Nand Flash進(jìn)行操作和管理)和eMMC協(xié)議接口等組成(如下圖所示),以BGA的形式封裝在一起。
目前eMMC的版本包括:eMMC 5.1/5.0/4.5/4.41,版本越高,支持更高的時(shí)鐘頻率(200MHz max)和更快的數(shù)據(jù)傳輸速度(400MB/s Max)
eMMC只能由主機(jī)發(fā)起操作(主機(jī)為CPU的外設(shè),由CPU進(jìn)行配置操作),主機(jī)與eMMC之間通過命令交互
采用8位(bit)并行接口,eMMC和主機(jī)之間只能進(jìn)行半雙工通信
版權(quán)聲明:本文來源網(wǎng)絡(luò),免費(fèi)傳達(dá)知識(shí),版權(quán)歸原作者所有。如涉及作品版權(quán)問題,請(qǐng)聯(lián)系我進(jìn)行刪除。
???????????????? END ???????????????
關(guān)注我的微信公眾號(hào),回復(fù)“星球”加入知識(shí)星球,有問必答。
點(diǎn)擊“閱讀原文”查看知識(shí)星球詳情,歡迎點(diǎn)分享、收藏、點(diǎn)贊、在看。
