ARM處理器工作模式及寄存器結(jié)構(gòu)
一、ARM的指令結(jié)構(gòu)
1、ARM匯編程序組成:
匯編指令+偽操作+宏指令(instruction directive pseudo-instruction);
偽操作:定義符號(hào)、數(shù)據(jù)等使用
宏指令:使用宏定義指令方式
2、匯編指令的組成:
操作碼、操作條件(根據(jù)CPSR中的N、Z、C、V等標(biāo)志)、操作數(shù)(源、目的/地址或寄存器)、條件、地址變化等等;
3、ARM指令和簡(jiǎn)化的Thumb指令可以相互跳轉(zhuǎn)
B、BL、BLX、BX帶L表示考慮LR寄存器,而X實(shí)現(xiàn)不同指令模式的切換;
4、批量操作地址的方式分類
IA、IB、DA、DB
A:after B:before I:increment D:decrement
亦即:事后遞增 事先遞增 事后遞減 事先遞減 四種方式;
5、棧類型及尋址
FD ED FA EA
F:full E:empty D:descending A:Ascending
FULL/EMPTY棧:區(qū)別在于指向棧定的指針是否指向有效數(shù)據(jù),是則為FULL棧,否則為EMPTY棧;
DESCENDING/ASCENDING: 數(shù)據(jù)棧按內(nèi)存地址減小方式增長(zhǎng)為DESCENDING棧,相反為ASCENDING棧;
二、ARM的存儲(chǔ)系統(tǒng)及MMU和MPU的差別與聯(lián)系
1、ARM的存儲(chǔ)系統(tǒng)
CASHE及WRITE BUFFER技術(shù)用于縮小內(nèi)存和處理器之間差距;
存儲(chǔ)類型:ROM(FLASH/ROM)+RAM(SRAM、DRAM、SDRAM[ sychronization DRAM])
ARM采用協(xié)處理器CP15來進(jìn)行存儲(chǔ)器的管理;
2、存儲(chǔ)器管理單元MMU
MMU可以實(shí)現(xiàn)對(duì)內(nèi)存的精細(xì)控制:16域\段:1M\大頁 64KB\小頁 4KB\小頁1KB
MMU主要實(shí)現(xiàn)的功能:
1、物理地址和虛擬地址的映射;
2、memory讀寫權(quán)限AP的設(shè)置;
3、B、C(buffer-ability 和 cachability)是否可以使用cache和寫緩沖;
是否使用MMU功能:可以通過CP15的寄存器進(jìn)行使能設(shè)置;
對(duì)于MMU實(shí)現(xiàn)需要引入頁表(translate table)機(jī)制,頁表存儲(chǔ)在內(nèi)存,系統(tǒng)通常提供一個(gè)寄存器來存儲(chǔ)頁表的基地址,為了解決內(nèi)存訪問速度問題,采用類似cache方式,引入快表TLB(translation lookaside buffer)機(jī)制,小的快速的存儲(chǔ)期間來存儲(chǔ)當(dāng)前需要訪問的地址變換頁表。(相應(yīng)塊表可以存在無效、鎖定等操作。)
頁表中存儲(chǔ)著虛擬地址對(duì)應(yīng)的物理地址、訪問權(quán)限、緩沖特性等。
頁表根據(jù)設(shè)置空間使用情況分為:分為一、二級(jí)頁表;粗粒度二級(jí)表和細(xì)粒度二級(jí)表;一級(jí)頁表包含以段為單位的地址變換條目以及指向二級(jí)頁表的指針。二級(jí)頁表包含以大小頁為單位的地址變換條目。
關(guān)于訪問控制權(quán)限:需要C1寄存器的R、S控制位和頁表中AP來共同控制;
關(guān)于域:最多支持16個(gè)域,設(shè)置每個(gè)域的訪問控制特性,可以控制是否從頁表得到訪問權(quán)限...
3、MPU與MMU差別
MPU只是簡(jiǎn)單支持MMU一小部分功能:不支持虛擬地址和實(shí)地址的映射;不支持頁表;(MMU需要更多硬件來支持相應(yīng)的功能);
MPU最多可以分為8個(gè)域,對(duì)相應(yīng)的域進(jìn)行B、C、AP的設(shè)置;
同樣CP15可以控制MPU的功能開關(guān),對(duì)于域的設(shè)置可以存在地址的重疊,一般如果地址重疊,后面的域設(shè)置具有更高的優(yōu)先級(jí);
4、CACHE及WRITE BUFFER技術(shù)
cache和寫緩沖用來解決CPU速度大于內(nèi)存的問題,而cache得成本比內(nèi)存高;
cache高速緩沖存儲(chǔ)器,可以數(shù)據(jù)指令分開,也可以使用同一cache;
cache有寫回法和寫通法:寫回法指CPU寫數(shù)據(jù)寫入cache,而寫通法是指數(shù)據(jù)修改cache的同時(shí),也寫入內(nèi)存。
cache內(nèi)容和內(nèi)存地址的映射:有全相聯(lián)映射方式、直接映像方式、組組相聯(lián)映像方式。
cache的存儲(chǔ)空間小于內(nèi)存,所以存在cache內(nèi)容的替換問題,ARM中cache的替換算法:隨機(jī)替換和輪轉(zhuǎn)法
5、快速進(jìn)程上下文切換(fast context switch extension,F(xiàn)CSE)
主要解決多個(gè)進(jìn)程映射虛擬地址映射重疊問題,簡(jiǎn)單理解增加了進(jìn)程ID PID來區(qū)分,解決這個(gè)引起的開銷問題。
小貼士:
1、關(guān)于ASR LSR ROR RRX的差別:
--ASR 算數(shù)右移;
--LSR 邏輯右移 和ASR差別在符號(hào)位;
--ROR 循環(huán)右移;
--RRX 帶擴(kuò)展的循環(huán)右移 主要是用CPSR中的C填充移入,并且移出的位改寫C(carry out)位;
2、使用cache應(yīng)注意的問題
寫入數(shù)據(jù)只寫入cache的情況下,如果硬件如DMA資源直接從物理地址取數(shù)據(jù),需要注意同步問題?梢栽谟|發(fā)硬件資源之前操作cache內(nèi)容同步到內(nèi)存中。
3、子程序參數(shù)的傳遞規(guī)則
可變參數(shù):R0~R3,多與4個(gè)參數(shù),則用棧來進(jìn)行傳送;返回一個(gè)32整數(shù)用R0,64位R0-R1,浮點(diǎn)通過f0、D0、s0傳送?
4、MMU和MPU差別參考:
ARM Architecture Reference Manual
編輯:admin 最后修改時(shí)間:2019-07-31