动态ram依靠什么存储信息_处理器内存系统1(ROM,RAM,数据存储顺序)
本篇文章主要介紹處理器中存儲器:ROM和RAM以及數(shù)據(jù)在內(nèi)存中的存儲順序:大/小端(Little/Big Endian)。
只讀存儲器(ROM)
ROM(Read Only Memory)用來存儲和保存數(shù)據(jù)。ROM數(shù)據(jù)不能隨意更新,但是在任何時候都可以讀取。即使是斷電,ROM也能夠保留數(shù)據(jù)。此內(nèi)存主要用來放置使用者所開發(fā)之程序,eg. Bios,boot,而其性質(zhì)乃屬于不常更動或永不變動之資料,微控制器之動作便是依據(jù)儲存于此區(qū)之程序指令運作。
ROM有很多種,例如PROM,EPROM,EEPROM,具體可百度。
隨機存取存儲器(RAM)
RAM(Read-Write Memory)亦稱為讀/寫內(nèi)存,是與CPU直接交換數(shù)據(jù)的內(nèi)部存儲器,也叫內(nèi)存。它可以隨時讀寫,而且速度很快,通常作為操作系統(tǒng)或其他正在運行中的程序的臨時數(shù)據(jù)存儲媒介, 當(dāng)電源關(guān)閉時RAM不能保留數(shù)據(jù)。
RAM 可以進一步分為靜態(tài)RAM(SRAM)和動態(tài)內(nèi)存(DRAM)兩大類。靜態(tài)RAM(Static RAM/SRAM):SRAM速度非常快,不需要刷新電路即能保存數(shù)據(jù),是目前讀寫最快的存儲設(shè)備了,但是集成度較低,多用于CPU的一級緩存,二級緩存(L1/L2 Cache);動態(tài)RAM(Dynamic RAM/DRAM),DRAM保留數(shù)據(jù)的時間很短(需要內(nèi)存刷新電路,每隔一段時間,刷新充電一次,否則數(shù)據(jù)會消失),速度也比SRAM慢,不過它還是比任何的ROM都要快.
若其地址總線位32位,則RAM大小為2^32bits。
大/小端模式
存儲器中對數(shù)據(jù)的存儲是以字節(jié)(Byte)為基本單位的,因此,字(Word)和半字(Half-Word)在存儲器中就有兩種次序,分別稱為:大端模式(Big Endian)和小端模式(Little Endian)。
大段模式:低地址存放高字節(jié)數(shù)據(jù)。
小端模式:低地址存放低字節(jié)數(shù)據(jù)。
例如一個 int 型變量中存放一個數(shù)值是 0x12345678的數(shù)據(jù):
大端模式:
小端模式:
一般地,ARM處理器均默認為小端模式。
知道了大小端模式的概念,怎樣用C語言寫段代碼判斷一個CPU是大端模式還是小端模式應(yīng)當(dāng)如何做呢 ?要用C語言實現(xiàn)就要用到聯(lián)合體(union)。聯(lián)合體union中的存放順序是所有成員都從低地址開始存放,利用該特性可獲得處理器對內(nèi)存采用Little Endian還是Big Endian模式的讀寫。
采用union來判斷,具體代碼如下:
int CheckEndian(void){union check{int word;char half;} Endian;Endian.Word=1;if(1 == Endian.half)return Little_Endian;else return Big_Endian; }另外關(guān)于共用體與結(jié)構(gòu)體:
結(jié)構(gòu)體和共用體的區(qū)別在于結(jié)構(gòu)體的各個成員會占用不同的內(nèi)存,互相之間沒有影響;而共用體的所有成員占用同一段內(nèi)存,修改一個成員會影響其余所有成員。
結(jié)構(gòu)體占用的內(nèi)存大于等于所有成員占用的內(nèi)存的總和(成員之間可能會存在縫隙),共用體占用的內(nèi)存等于最長的成員占用的內(nèi)存。共用體使用了內(nèi)存覆蓋技術(shù),同一時刻只能保存一個成員的值,如果對新的成員賦值,就會把原來成員的值覆蓋掉。
總結(jié)
以上是生活随笔為你收集整理的动态ram依靠什么存储信息_处理器内存系统1(ROM,RAM,数据存储顺序)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 没出账单能提前还款吗
- 下一篇: java信息管理系统总结_java实现科