ARM體系的存儲(chǔ)器系統(tǒng)

ARM是知識(shí)產(chǎn)權(quán)(IP)供應(yīng)商纤壁,不制造芯片叁丧,也不出售芯片,而是轉(zhuǎn)讓設(shè)計(jì)方案冈止。ARM架構(gòu)是ARM公司第一款低成本RISC微處理器狂票。

RISC結(jié)構(gòu)特性

ARM內(nèi)核采用精簡(jiǎn)指令集計(jì)算機(jī)體系結(jié)構(gòu)(RISC),其指令集和相關(guān)的譯碼機(jī)制比復(fù)雜指令集計(jì)算機(jī)(CISC)要簡(jiǎn)單熙暴。

其目標(biāo)是闺属,設(shè)計(jì)出一套能在高時(shí)鐘頻率下,單周期執(zhí)行周霉,簡(jiǎn)單而有效的指令集掂器。

其設(shè)計(jì)的重點(diǎn),在于降低處理器中指令執(zhí)行部件的硬件復(fù)雜度俱箱,這是因?yàn)檐浖扔布菀滋峁└蟮撵`活性和更高的智能化国瓮,因此ARM具備了非常典型的RISC結(jié)構(gòu)特性:

大量通用的寄存器;

通過裝載/保存(load-store)結(jié)構(gòu),使用獨(dú)立的load和store指令完成數(shù)據(jù)在寄存器與外部存儲(chǔ)器之間的傳送,處理器只處理寄存器中的數(shù)據(jù)乃摹,從而避免多次訪問存儲(chǔ)器;

尋址方式簡(jiǎn)單禁漓,所有裝載/保存的地址都只由寄存器內(nèi)容和指令域決定;

使用統(tǒng)一和固定長(zhǎng)度的指令格式;

ARM體系存儲(chǔ)系統(tǒng)

ARM處理器采用馮.諾依曼結(jié)構(gòu),因此指令和數(shù)據(jù)共用一條32位總線孵睬,因此只有裝載播歼、存儲(chǔ)和交換指令可以對(duì)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行訪問。

ARM規(guī)范僅僅定義了其處理器內(nèi)核與存儲(chǔ)器系統(tǒng)之間的信號(hào)掰读,以及局部總線秘狞,而實(shí)際的芯片(CPU芯片,而不是指內(nèi)核)一般在外部總線與處理器核的局部總線之間有一個(gè)存儲(chǔ)器管理部件:

負(fù)責(zé)將局部總線的信號(hào)和時(shí)序轉(zhuǎn)換為現(xiàn)實(shí)的外部總線信號(hào)和時(shí)序蹈集。

因此烁试,外部總線的信號(hào)和時(shí)序與具體的芯片相關(guān),而不是ARM規(guī)范定義的標(biāo)準(zhǔn)雾狈。具體的某個(gè)芯片的外部存儲(chǔ)系統(tǒng)的設(shè)計(jì)廓潜,需要參考其芯片的使用手冊(cè)。

對(duì)ARM來說善榛,它將存儲(chǔ)器看成是一個(gè)從0開始的線性遞增的字節(jié)集合:

字節(jié)0-3保存第1個(gè)存儲(chǔ)的字辩蛋;

字節(jié)4-7保存第2個(gè)存儲(chǔ)的字;

字節(jié)8-11保存第3個(gè)存儲(chǔ)的字移盆;

……

ARM處理器可以將存儲(chǔ)器中的字以兩種格式存儲(chǔ):? 大端格式和小端格式悼院。前者高位數(shù)據(jù)存取低地址,低位數(shù)據(jù)存入高地址咒循。后者反之据途。

地址空間

ARM結(jié)構(gòu)使用2的32次方個(gè)8位字節(jié)的地址空間,字節(jié)地址從:0到2∧32-1叙甸。

地址空間同樣也可以看作是2∧30個(gè)32位字颖医,地址則以字為單位進(jìn)行分配。就是將字節(jié)地址除以4裆蒸,如此熔萧,地址為A的字包含4個(gè)字節(jié),其地址分別為A僚祷、A+1佛致、A+2、A+3辙谜。

地址空間還可以看做包含2∧31個(gè)16位半字俺榆,地址是按照半字分配。地址為A的半字装哆,包含兩個(gè)字節(jié): A和A+1罐脊。

地址的計(jì)算通常通過普通的 整數(shù)指令 實(shí)現(xiàn)定嗓。這意味著,若地址向上或向下溢出地址空間通常會(huì)發(fā)生反轉(zhuǎn)爹殊,也就是說計(jì)算的結(jié)果以2∧32為模蜕乡。如果地址的計(jì)算沒有發(fā)生翻轉(zhuǎn),那么結(jié)果仍然位于0-2∧32-1范圍內(nèi)梗夸。

大多數(shù)指令都是通過指令所指定的偏移量與PC值相加并將結(jié)果寫入PC來計(jì)算目標(biāo)地址。若用公式

PC+偏移值=[(當(dāng)前程序執(zhí)行位置)+8]+偏移量

來確定溢出地址空間号醉,那么該指令依賴于地址的翻轉(zhuǎn)反症。由此可見,在技術(shù)上是不可預(yù)測(cè)的畔派,因此程序應(yīng)該保證穿過地址0xFFFF FFFF的向前轉(zhuǎn)移和穿過地址0x0000 0000的向后轉(zhuǎn)移的情況都不發(fā)生铅碍。

此外正常連續(xù)執(zhí)行的指令,實(shí)際上是通過“當(dāng)前程序執(zhí)行位置+4”來確定下一條將要執(zhí)行的指令线椰。


存儲(chǔ)器的字與半字

ARM處理器直接支持8位字節(jié)胞谈,16位半字或32位字的數(shù)據(jù)類型。其中憨愉,以能被4整除的地址開始連續(xù)的4個(gè)字節(jié)構(gòu)成1個(gè)字烦绳,字的數(shù)據(jù)類型為4個(gè)連續(xù)的字節(jié)。從偶數(shù)地址開始連續(xù)的兩個(gè)字節(jié)構(gòu)成一個(gè)半字配紫,半字的數(shù)據(jù)類型為2個(gè)連續(xù)的字節(jié)径密。ARM的指令的長(zhǎng)度剛好是一個(gè)字,而Thumb指令的長(zhǎng)度剛好為一個(gè)半字躺孝。

字對(duì)齊與非字對(duì)齊

如果數(shù)據(jù)以字的方式存儲(chǔ)享扔,那么它就是字對(duì)齊。否則就是非字對(duì)齊植袍。如果一個(gè)數(shù)據(jù)是以半字方式存儲(chǔ)的惧眠,那么它就是半字對(duì)齊,否則就是非半字對(duì)齊于个。


表半字與字對(duì)齊

ARM處理器是直接支持 對(duì)齊存放的半字或字?jǐn)?shù)據(jù)的存取氛魁,就是說可用一條相應(yīng)的指令來實(shí)現(xiàn)對(duì)應(yīng)操作:

程序執(zhí)行效率

如果訪問非對(duì)齊的半字或字?jǐn)?shù)據(jù)览濒,將需要多條指令組合 才能實(shí)現(xiàn)對(duì)應(yīng)的操作呆盖,這個(gè)弊端就很明顯了,這會(huì)大大地影響程序的執(zhí)行效率贷笛,因此应又,在C語言編程中,定義的多字節(jié)變量或結(jié)構(gòu)體乏苦,最好使其為對(duì)齊存放株扛。

對(duì)齊存放的目的就是為提高代碼的執(zhí)行效率尤筐,而減少執(zhí)行指令數(shù)。

存儲(chǔ)器格式

地址空間要求洗地址A的規(guī)則:

位于地址A的字所包含的字節(jié)位于A洞就、A+1盆繁、A+2、A+3旬蟋。

上面并不能完全定義字油昂、半字和字節(jié)之間的映射,存儲(chǔ)系統(tǒng)使用以下兩種映射機(jī)制的其中一種:小端存儲(chǔ)器系統(tǒng)

大端存儲(chǔ)器系統(tǒng)


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末倾贰,一起剝皮案震驚了整個(gè)濱河市冕碟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌匆浙,老刑警劉巖安寺,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異首尼,居然都是意外死亡挑庶,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門软能,熙熙樓的掌柜王于貴愁眉苦臉地迎上來迎捺,“玉大人,你說我怎么就攤上這事埋嵌∑萍樱” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵雹嗦,是天一觀的道長(zhǎng)范舀。 經(jīng)常有香客問我,道長(zhǎng)了罪,這世上最難降的妖魔是什么锭环? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮泊藕,結(jié)果婚禮上辅辩,老公的妹妹穿的比我還像新娘。我一直安慰自己娃圆,他們只是感情好玫锋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著讼呢,像睡著了一般阱驾。 火紅的嫁衣襯著肌膚如雪箫老。 梳的紋絲不亂的頭發(fā)上刺覆,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音键思,去河邊找鬼。 笑死甫贯,一個(gè)胖子當(dāng)著我的面吹牛吼鳞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播叫搁,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赔桌,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了常熙?” 一聲冷哼從身側(cè)響起纬乍,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎裸卫,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纽竣,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡墓贿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蜓氨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聋袋。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖穴吹,靈堂內(nèi)的尸體忽然破棺而出幽勒,到底是詐尸還是另有隱情,我是刑警寧澤港令,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布啥容,位于F島的核電站,受9級(jí)特大地震影響顷霹,放射性物質(zhì)發(fā)生泄漏咪惠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一淋淀、第九天 我趴在偏房一處隱蔽的房頂上張望遥昧。 院中可真熱鬧,春花似錦朵纷、人聲如沸炭臭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鞋仍。三九已至,卻和暖如春革屠,著一層夾襖步出監(jiān)牢的瞬間凿试,已是汗流浹背排宰。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留那婉,地道東北人板甘。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像详炬,于是被迫代替她去往敵國(guó)和親盐类。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 總線 計(jì)算機(jī)的各個(gè)功能部件通過總線連接在一起構(gòu)成完整的計(jì)算機(jī)系統(tǒng)呛谜,總線是多個(gè)系統(tǒng)功能部件之間進(jìn)行數(shù)據(jù)傳送的公共通路...
    羅蓁蓁閱讀 4,810評(píng)論 0 10
  • 什么是嵌入式 IEEE(Institute of Electrical and Electronics Engin...
    Leon_Geo閱讀 3,707評(píng)論 1 20
  • ???本文主要介紹嵌入式系統(tǒng)的一些基礎(chǔ)知識(shí)在跳,希望對(duì)各位有幫助。 嵌入式系統(tǒng)基礎(chǔ) 1隐岛、嵌入式系統(tǒng)的定義 (1)定義:...
    OpenJetson閱讀 3,306評(píng)論 0 13
  • 1猫妙、嵌入式系統(tǒng)的定義 (1)定義:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ)聚凹,軟硬件可裁剪割坠,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性妒牙、成本...
    榮卓然閱讀 1,820評(píng)論 0 5
  • ARM手冊(cè)中都會(huì)有一些Programmers’ Model章節(jié)彼哼。那么什么是Programmers’ Model,P...
    趙國(guó)開閱讀 1,157評(píng)論 1 1