




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第2章ARM體系結(jié)構(gòu)第一頁,共288頁。主要內(nèi)容1324ARM體系結(jié)構(gòu)概述編程模型ARM基本尋址方式ARM指令集5ARM9TDMI內(nèi)核6ARM9與ARM7的比較ARM920T核7第二頁,共288頁。2.1.1ARM體系結(jié)構(gòu)的特點(diǎn)ARM即AdvancedRISCMachines的縮寫。ARM公司1990年成立,是設(shè)計(jì)公司。ARM是知識(shí)產(chǎn)權(quán)(IP)供應(yīng)商,本身不生產(chǎn)芯片,靠轉(zhuǎn)讓設(shè)計(jì)許可,由合作伙伴公司來生產(chǎn)各具特色的芯片。ARM處理器的3大特點(diǎn)是:耗電少、成本低、功能強(qiáng);16位/32位雙指令集;全球眾多合作伙伴保證供應(yīng)。第三頁,共288頁。
ARM處理器為RISC芯片,其簡單的結(jié)構(gòu)使ARM內(nèi)核非常小,這使得器件的功耗也非常低。它具有經(jīng)典RISC的特點(diǎn):大的、統(tǒng)一的寄存器文件;裝載/保存結(jié)構(gòu),數(shù)據(jù)處理操作只針對(duì)寄存器的內(nèi)容,而不直接對(duì)存儲(chǔ)器進(jìn)行操作;簡單的尋址模式;統(tǒng)一和固定長度的指令域,簡化了指令的譯碼,便于指令流水線設(shè)計(jì)。2.1.1ARM體系結(jié)構(gòu)的特點(diǎn)第四頁,共288頁。2.1.1ARM體系結(jié)構(gòu)的特點(diǎn)ARM體系結(jié)構(gòu)的特點(diǎn):RISC型處理器結(jié)構(gòu)ARM/Thumb指令集多處理器狀態(tài)模式嵌入式在線仿真調(diào)試靈活和方便的接口ARM體系結(jié)構(gòu)具有協(xié)處理器接口ARM處理器核還具有片上總線AMBA(AHB/ASB/APB)低電壓低功耗的設(shè)計(jì)第五頁,共288頁。2.1.1ARM體系結(jié)構(gòu)的特點(diǎn)ARM目前的產(chǎn)品系列:ARM7ARM9ARM9EARM10SecurCore通用處理器系列專門為安全設(shè)備設(shè)計(jì)的處理器系列第六頁,共288頁。2.1.2ARM處理器結(jié)構(gòu)1324ARM的體系結(jié)構(gòu)ARM的流水線結(jié)構(gòu)ARM存儲(chǔ)器結(jié)構(gòu)ARMI/O結(jié)構(gòu)5ARMAMBA接口6ARM協(xié)處理器接口ARMJTAG調(diào)試接口78馮諾依曼結(jié)構(gòu)與哈佛結(jié)構(gòu)第七頁,共288頁。微處理器是整個(gè)系統(tǒng)的核心,通常由3大部分組成。
算術(shù)邏輯單元寄存器控制單元微處理器存儲(chǔ)器輸入輸出第八頁,共288頁。1.ARM的體系機(jī)構(gòu)由32位ALU、31個(gè)32位通用寄存器及6位狀態(tài)寄存器、32×8位乘法器、32×32位桶形移位寄存器、指令譯碼及控制邏輯、指令流水線和數(shù)據(jù)/地址寄存器組成。第九頁,共288頁。
ALU由兩個(gè)操作數(shù)鎖存器、加法器、邏輯功能、結(jié)果及零檢測邏輯構(gòu)成。ALU的邏輯結(jié)構(gòu)第十頁,共288頁。
ALU每一時(shí)鐘周期由雙相時(shí)鐘組成。ALU的最小數(shù)據(jù)通路周期由以下組成:寄存器讀時(shí)間;移位器延遲;ALU延遲;寄存器寫建立時(shí)間;雙相時(shí)鐘間非重疊時(shí)間。ALU的數(shù)據(jù)通路時(shí)序第十一頁,共288頁。桶形移位寄存器為了減少移位的延遲時(shí)間,ARM采用了32×32位的桶形移位寄存器。這樣,可以使左移/右移n位、環(huán)移n位和算術(shù)右移n位等都可以一次完成。第十二頁,共288頁。高速乘法器ARM為了提高運(yùn)算速度,采用兩位乘法的方法。兩位乘法根據(jù)乘數(shù)的2位來實(shí)現(xiàn)“加-移位”運(yùn)算。乘數(shù)An-1An: 00--原部分積S右移2位; 01--原部分積S加被乘數(shù)后右移2位; 10--原部分積S加2倍被乘數(shù)后,右移2位; 11--原部分積S加3倍被乘數(shù)后,右移2位。
2倍被乘數(shù)可通過將被乘數(shù)左乘1位來實(shí)現(xiàn);3倍可看作4-1(11=100-1),故先減1倍被乘數(shù),再加4倍被乘數(shù)來實(shí)現(xiàn)。4倍被乘數(shù)的操作實(shí)際上是在該2位乘數(shù)11的高1位乘數(shù)加“1”,且此“1”可暫存在Cout進(jìn)位觸發(fā)器中。第十三頁,共288頁。高速乘法器組合值
Yi-1
Yi
C
操作
C值變化
0
0
0
0
部分積+0;右移兩位
C=0
1
0
0
1
部分積+x;右移兩位
C=0
1
0
1
0
部分積+x;右移兩位
C=0
2
0
1
1
部分積+2x;右移兩位
C=0
2
1
0
0
部分積+2x;右移兩位
C=0
3
1
0
1
部分積-x;右移兩位
C=1
3
1
1
0
部分積-x;右移兩位
C=1
4
1
1
1
部分積+0;右移兩位
C=1
第十四頁,共288頁。高速乘法器x=0.101100 y=0.111001
第十五頁,共288頁。高速乘法器ARM的高速乘法器采用32×8位的結(jié)構(gòu),邏輯結(jié)構(gòu)如下:第十六頁,共288頁。浮點(diǎn)部件浮點(diǎn)部件是作為選件為ARM體系結(jié)構(gòu)選用,F(xiàn)PA10浮點(diǎn)加速器以協(xié)處理器方式與ARM相連,并通過協(xié)處理器指令的解釋來執(zhí)行。第十七頁,共288頁。控制器
ARM的控制器采用硬接線的可編程邏輯陣列PLA。輸入端14根,輸出40根,分散控制Load/Store多路、乘法器、協(xié)處理器以及地址、寄存器、ALU和移位器的控制。
第十八頁,共288頁。寄存器ARM內(nèi)含37個(gè)寄存器,其中:31個(gè)通用32位寄存器6個(gè)狀態(tài)寄存器第十九頁,共288頁。2.1.2ARM處理器結(jié)構(gòu)1324ARM的體系結(jié)構(gòu)ARM的流水線結(jié)構(gòu)ARM存儲(chǔ)器結(jié)構(gòu)ARMI/O結(jié)構(gòu)5ARMAMBA接口6ARM協(xié)處理器接口ARMJTAG調(diào)試接口78馮諾依曼結(jié)構(gòu)與哈佛結(jié)構(gòu)第二十頁,共288頁。馮·諾依曼體系結(jié)構(gòu)第二十一頁,共288頁。指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器存儲(chǔ)器程序指令0指令1指令2指令3指令4數(shù)據(jù)數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2馮·諾依曼體系結(jié)構(gòu)第二十二頁,共288頁。指令寄存器控制器數(shù)據(jù)通道輸入輸出CPU程序存儲(chǔ)器指令0指令1指令2數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2地址指令地址數(shù)據(jù)哈佛體系結(jié)構(gòu)第二十三頁,共288頁。2.1.2ARM處理器結(jié)構(gòu)1324ARM的體系結(jié)構(gòu)ARM的流水線結(jié)構(gòu)ARM存儲(chǔ)器結(jié)構(gòu)ARMI/O結(jié)構(gòu)5ARMAMBA接口6ARM協(xié)處理器接口ARMJTAG調(diào)試接口78馮諾依曼結(jié)構(gòu)與哈佛結(jié)構(gòu)第二十四頁,共288頁。指令執(zhí)行的階段計(jì)算機(jī)中的1條指令的執(zhí)行可以分若干個(gè)階段:①取指,從存儲(chǔ)器中取出指令(fetch);②譯碼,指令譯碼(dec):③取操作數(shù),假定操作數(shù)從寄存器組中取(reg);④執(zhí)行運(yùn)算(ALU);⑤存儲(chǔ)器訪問,操作數(shù)與存儲(chǔ)器有關(guān)(mem);⑥結(jié)果寫回寄存器(res)。第二十五頁,共288頁。指令執(zhí)行的階段流水線的停頓相鄰指令執(zhí)行的數(shù)據(jù)相關(guān)性會(huì)產(chǎn)生指令執(zhí)行的停頓。第二十六頁,共288頁。指令執(zhí)行的階段碰到分支類指令,則會(huì)使后面緊接該條指令的幾條指令的執(zhí)行都無效。遇到分支指令第二十七頁,共288頁。ARM7ARM處理器使用3級(jí)流水線,分別為:取指級(jí):取指級(jí)完成程序存儲(chǔ)器中指令的讀取,并放入指令流水線中。譯碼級(jí):對(duì)指令進(jìn)行譯碼,為下一周期準(zhǔn)備數(shù)據(jù)路徑需要的控制信號(hào)。這一級(jí)指令“占有”譯碼邏輯,而不“占有”數(shù)據(jù)路徑。執(zhí)行級(jí):指令“占有”數(shù)據(jù)路徑,寄存器被讀取,操作數(shù)在桶式移位器中被移位,ALU產(chǎn)生相應(yīng)的運(yùn)算結(jié)果并回寫到目的寄存器中,ALU的結(jié)果則根據(jù)指令需求來更改狀態(tài)寄存器的條件位。28第二十八頁,共288頁。
ARM體系結(jié)構(gòu)的3級(jí)流水線ARM7體系結(jié)構(gòu)采用了3級(jí)流水線,分為取指,譯碼和執(zhí)行。下圖是單周期3級(jí)流水線的操作示意圖。第二十九頁,共288頁。
ARM體系結(jié)構(gòu)的3級(jí)流水線由于取指的存儲(chǔ)器訪問和執(zhí)行的數(shù)據(jù)通路占用都是不可同時(shí)共享的資源,因此對(duì)多周期指令來說,會(huì)產(chǎn)生流水線阻塞。如圖3-12所示下圖的影印框周期都是與存儲(chǔ)器訪問有關(guān)的。因此在流水線設(shè)計(jì)中不允許重疊。第三十頁,共288頁。ARM9架構(gòu)采用5級(jí)流水線:增加了I-Cache和D-Cache,把存儲(chǔ)器的取指與數(shù)據(jù)存取分開;增加了數(shù)據(jù)寫回的專門通路和寄存器;把指令的執(zhí)行過程分割為5階段:
取指令;指令譯碼、寄存器讀、分支目標(biāo)計(jì)算及執(zhí)行;移位和ALU操作;數(shù)據(jù)Cache訪問;結(jié)果寫回到寄存器。31第三十一頁,共288頁。ARM9架構(gòu)采用了5級(jí)流水線:
取指:指令從存儲(chǔ)器中取出,放入指令流水線。譯碼:指令譯碼,從寄存器中讀取寄存器操作數(shù)。在寄存器組中有3個(gè)操作數(shù)讀端口,因此大多數(shù)ARM指令能在一個(gè)周期內(nèi)讀取其操作數(shù)。執(zhí)行:把一個(gè)操作數(shù)移位,產(chǎn)生ALU的結(jié)果。如果指令是Load或Store,在ALU中計(jì)算存儲(chǔ)器的地址。緩沖/數(shù)據(jù):如果需要,則訪問數(shù)據(jù)存儲(chǔ)器。否則,ALU的結(jié)果只是簡單地緩沖一個(gè)時(shí)鐘周期,以便使所有指令具有同樣的流水線流程。回寫:將指令產(chǎn)生的結(jié)果回寫到寄存器,包括任何從存儲(chǔ)器讀取的數(shù)據(jù)。32第三十二頁,共288頁。更多級(jí)的流水線ARM10采用了6級(jí)流水線。ARM11采用了8級(jí)流水線。33第三十三頁,共288頁。
ARM體系結(jié)構(gòu)的5級(jí)流水線5級(jí)流水線把存儲(chǔ)器的取指與數(shù)據(jù)存取分開,增加了I-Cache和D-Cache以提高存儲(chǔ)器存取的效率,增加了數(shù)據(jù)寫回的專門通路和寄存器,以減少數(shù)據(jù)通路沖突。這樣,5級(jí)流水線分為:取指、指令譯碼、執(zhí)行、數(shù)據(jù)緩存和寫回。第三十四頁,共288頁。2.1.2ARM處理器結(jié)構(gòu)1324ARM的體系結(jié)構(gòu)ARM的流水線結(jié)構(gòu)ARM存儲(chǔ)器結(jié)構(gòu)ARMI/O結(jié)構(gòu)5ARMAMBA接口6ARM協(xié)處理器接口ARMJTAG調(diào)試接口78馮諾依曼結(jié)構(gòu)與哈佛結(jié)構(gòu)第三十五頁,共288頁。存儲(chǔ)器系統(tǒng)寄存器高速緩存SRAM主存儲(chǔ)器DRAM本地存儲(chǔ)器Flash、ROM、磁盤網(wǎng)絡(luò)存儲(chǔ)器Flash、ROM、磁盤時(shí)鐘周期01—1050—100分層結(jié)構(gòu)第三十六頁,共288頁。存儲(chǔ)器種類RAM:隨機(jī)存取存儲(chǔ)器,SRAM:靜態(tài)隨機(jī)存儲(chǔ)器,DRAM:動(dòng)態(tài)隨機(jī)存儲(chǔ)器
1)SRAM比DRAM快
2)SRAM比DRAM耗電多
3)DRAM存儲(chǔ)密度比SRAM高得多
4)DRAM需要周期性刷新ROM:只讀存儲(chǔ)器EPROM(ErasableProgrammableROM)EEPROM(ElectricallyEPROM)FLASH:閃存第三十七頁,共288頁。閃速存儲(chǔ)器(FLASH)相對(duì)傳統(tǒng)的EPROM芯片,這種芯片可以用電氣的方法快速地擦寫由于快擦寫存儲(chǔ)器不需要存儲(chǔ)電容器,故其集成度更高,制造成本低于DRAM它使用方便,既具有SRAM讀寫的靈活性和較快的訪問速度,又具有ROM在斷電后可不丟失信息的特點(diǎn),所以快擦寫存儲(chǔ)器技術(shù)發(fā)展十分迅速第三十八頁,共288頁。NOR技術(shù)NOR技術(shù)閃速存儲(chǔ)器是最早出現(xiàn)的FlashMemory,目前仍是多數(shù)供應(yīng)商支持的技術(shù)架構(gòu),它源于傳統(tǒng)的EPROM器件。與其它FlashMemory技術(shù)相比,具有可靠性高、隨機(jī)讀取速度快的優(yōu)勢。在擦除和編程操作較少而直接執(zhí)行代碼的場合,尤其是代碼(指令)存儲(chǔ)的應(yīng)用中廣泛使用。由于NOR技術(shù)FlashMemory的擦除和編程速度較慢,而塊尺寸又較大,因此擦除和編程操作所花費(fèi)的時(shí)間很長,在純數(shù)據(jù)存儲(chǔ)和文件存儲(chǔ)的應(yīng)用中,NOR技術(shù)顯得力不從心。第三十九頁,共288頁。NAND技術(shù)NAND技術(shù)FlashMemory具有以下特點(diǎn):以頁為單位進(jìn)行讀和編程操作,1頁為256或512字節(jié);以塊為單位進(jìn)行擦除操作,1塊為4K、8K或16K字節(jié)。具有快編程和快擦除的功能,其塊擦除時(shí)間是2ms;而NOR技術(shù)的塊擦除時(shí)間達(dá)到幾百ms數(shù)據(jù)、地址采用同一總線,實(shí)現(xiàn)串行讀取。隨機(jī)讀取速度慢且不能按字節(jié)隨機(jī)編程。芯片尺寸小,引腳少,是位成本(bitcost)最低的固態(tài)存儲(chǔ)器,突破了每兆字節(jié)1元的價(jià)格限制。芯片包含有失效塊,其數(shù)目最大可達(dá)到3~35塊(取決于存儲(chǔ)器密度)。失效塊不會(huì)影響有效塊的性能,但設(shè)計(jì)者需要將失效塊在地址映射表中屏蔽起來基于NAND的存儲(chǔ)器可以取代硬盤或其它塊設(shè)備。第四十頁,共288頁。
ARM存儲(chǔ)器結(jié)構(gòu)ARM架構(gòu)的處理器,有的帶有指令Cache和數(shù)據(jù)Cache,但片內(nèi)不帶有片內(nèi)RAM和片內(nèi)ROM,系統(tǒng)所需的RAM和ROM須通過總線外接,如下圖。第四十一頁,共288頁。2.1.2ARM處理器結(jié)構(gòu)1324ARM的體系結(jié)構(gòu)ARM的流水線結(jié)構(gòu)ARM存儲(chǔ)器結(jié)構(gòu)ARMI/O結(jié)構(gòu)5ARMAMBA接口6ARM協(xié)處理器接口ARMJTAG調(diào)試接口78馮諾依曼結(jié)構(gòu)與哈佛結(jié)構(gòu)第四十二頁,共288頁。
ARM
I/O結(jié)構(gòu)ARM架構(gòu)中的處理器核和處理器內(nèi)核一般都沒有I/O的部件和模塊,構(gòu)成ARM架構(gòu)的處理器中的I/O可通過AMBA總線來擴(kuò)充。(1)存儲(chǔ)器映像I/OARM采用存儲(chǔ)器映像I/O的方式,即把I/O端口地址作為特殊的存儲(chǔ)器地址。不過I/O的輸入/輸出與真正的存儲(chǔ)器讀/寫仍然有所不同:存儲(chǔ)器的單元重復(fù)讀多次的值是一致的;而I/O設(shè)備的連續(xù)2次輸入,其輸入值可能會(huì)有所不同。(2)直接存儲(chǔ)器存取DMA
在I/O的數(shù)據(jù)流量比較大,中斷處理比較頻繁的場合,會(huì)明顯影響系統(tǒng)的性能。因此,許多系統(tǒng)就采用了直接存儲(chǔ)器存取DMA,這樣,I/O的數(shù)據(jù)塊傳送至存儲(chǔ)器的緩沖器區(qū)域就不需要處理器介入。而中斷也僅僅出現(xiàn)在出現(xiàn)出錯(cuò)時(shí)或緩沖器滿時(shí)。(3)中斷IRQ和快速中斷FIQ一般的ARM沒有DMA的功能,為了提高I/O處理的能力,對(duì)于一些要求I/O處理速率比較高的事件,系統(tǒng)安排快速中斷FIQ(FastInterrupt),而對(duì)其余的I/O源仍安排一般中斷IRQ。第四十三頁,共288頁。2.1.2ARM處理器結(jié)構(gòu)1324ARM的體系結(jié)構(gòu)ARM的流水線結(jié)構(gòu)ARM存儲(chǔ)器結(jié)構(gòu)ARMI/O結(jié)構(gòu)5ARMAMBA接口6ARM協(xié)處理器接口ARMJTAG調(diào)試接口78馮諾依曼結(jié)構(gòu)與哈佛結(jié)構(gòu)第四十四頁,共288頁。
ARM協(xié)處理器接口
ARM為了便于片上系統(tǒng)SOC的設(shè)計(jì),處理器內(nèi)核盡可能精簡,要增加系統(tǒng)的功能,可以通過協(xié)處理器來實(shí)現(xiàn)。在邏輯上,ARM可以擴(kuò)展16個(gè)協(xié)處理器,每個(gè)協(xié)處理器可有16個(gè)寄存器。協(xié)處理器號(hào)功能15系統(tǒng)控制14調(diào)試控制器13~8保留7~4用戶3~0保留
例如,MMU和保護(hù)單元的系統(tǒng)控制都采用CP15協(xié)處理器;JTAG調(diào)試中的協(xié)處理器為CP14,即調(diào)試通信通道DCC(DebugCommunicationChannel)。第四十五頁,共288頁。2.1.2ARM處理器結(jié)構(gòu)1324ARM的體系結(jié)構(gòu)ARM的流水線結(jié)構(gòu)ARM存儲(chǔ)器結(jié)構(gòu)ARMI/O結(jié)構(gòu)5ARMAMBA接口6ARM協(xié)處理器接口ARMJTAG調(diào)試接口78馮諾依曼結(jié)構(gòu)與哈佛結(jié)構(gòu)第四十六頁,共288頁。
ARMAMBA接口
ARM處理器也可以通過先進(jìn)微控制器總線架構(gòu)AMBA(AdvancedMicrocontrollerBusArchitecture)來擴(kuò)展不同體系架構(gòu)的宏單元及I/O部件。AMBA事實(shí)上已成為片上總線OCB(OnChipBus)標(biāo)準(zhǔn)。AMBA包括以下三類總線:先進(jìn)高性能總線AHB先進(jìn)系統(tǒng)總線ASB先進(jìn)外圍總線APB第四十七頁,共288頁。2.1.2ARM處理器結(jié)構(gòu)1324ARM的體系結(jié)構(gòu)ARM的流水線結(jié)構(gòu)ARM存儲(chǔ)器結(jié)構(gòu)ARMI/O結(jié)構(gòu)5ARMAMBA接口6ARM協(xié)處理器接口ARMJTAG調(diào)試接口78馮諾依曼結(jié)構(gòu)與哈佛結(jié)構(gòu)第四十八頁,共288頁。JTAG調(diào)試接口的結(jié)構(gòu)
JTAG是聯(lián)合測試工作組(JointTestActionGroup)的簡稱,是在名為標(biāo)準(zhǔn)測試訪問端口和邊界掃描結(jié)構(gòu)的IEEE的標(biāo)準(zhǔn)1149.1的常用名稱。此標(biāo)準(zhǔn)用于測試訪問端口,使用邊界掃描的方法來測試印刷電路板。
JTAG最初是用來對(duì)芯片進(jìn)行測試的,基本原理是在器件內(nèi)部定義一個(gè)TAP(TestAccessPort測試訪問口)通過專用的JTAG測試工具對(duì)內(nèi)部節(jié)點(diǎn)進(jìn)行測試。JTAG測試允許多個(gè)器件通過JTAG接口串聯(lián)在一起,形成一個(gè)JTAG鏈,能實(shí)現(xiàn)對(duì)各個(gè)器件分別測試。現(xiàn)今,JTAG接口還常用于實(shí)現(xiàn)ISP(In-SystemProgrammable;在線編程),對(duì)FLASH等器件進(jìn)行編程。第四十九頁,共288頁。JTAG調(diào)試接口的結(jié)構(gòu)因?yàn)橹挥幸粭l數(shù)據(jù)線,通信協(xié)議有必要像其他串行設(shè)備接口一樣為串行傳輸。時(shí)鐘由TCK引腳輸入。配置是通過TMS引腳采用狀態(tài)機(jī)的形式一次操作一位來實(shí)現(xiàn)的。每一位數(shù)據(jù)在每個(gè)TCK時(shí)鐘脈沖下分別由TDI和TDO引腳傳入或傳出。可以通過加載不同的命令模式來讀取芯片的標(biāo)識(shí),對(duì)輸入引腳采樣,驅(qū)動(dòng)(或懸空)輸出引腳,操控芯片功能,或者旁路(將TDI與TDO連通以在邏輯上短接多個(gè)芯片的鏈路)。第五十頁,共288頁。JTAG調(diào)試接口的結(jié)構(gòu)由測試訪問端口TAP(TestAccessPort)控制器、指令寄存器、數(shù)據(jù)寄存器以及與JTAG接口兼容的ARM架構(gòu)處理器組成。第五十一頁,共288頁。JTAG的控制寄存器①測試訪問端口TAP控制器對(duì)嵌入在ARM處理器核內(nèi)部的測試功能電路進(jìn)行訪問控制,是一個(gè)同步狀態(tài)機(jī)。通過測試模式選擇TMS和時(shí)鐘信號(hào)TCK來控制其狀態(tài)機(jī)。②指令寄存器是串行移位寄存器,通過它可以串行輸入執(zhí)行各種操作的指令。③數(shù)據(jù)寄存器組是一組串行移位寄存器。操作指令被串行裝入由當(dāng)前指令所選擇的數(shù)據(jù)寄存器,隨著操作的進(jìn)行,測試結(jié)果被串行移出。其中:器件ID寄存器:讀出在芯片內(nèi)固化的ID號(hào)。旁路寄存器:1位移位寄存器,用1個(gè)時(shí)鐘的延遲把TDI連至TDO,使測試者在同一電路板測試循環(huán)內(nèi)訪問其他器件。邊界掃描寄存器(掃描鏈):截取ARM處理器核與芯片引腳之間所有信號(hào),組成專用的寄存器位。第五十二頁,共288頁。JTAG測試信號(hào)TRST:測試復(fù)位輸入信號(hào),測試接口初始化。TCK:測試時(shí)鐘,在TCK時(shí)鐘的同步作用下,通過TDI和TDO引腳串行移入/移出數(shù)據(jù)或指令,同時(shí)也為測試訪問端口TAP控制器的狀態(tài)機(jī)提供時(shí)鐘。TMS:測試模式選擇信號(hào),控制測試接口狀態(tài)機(jī)的操作。TDI,測試數(shù)據(jù)輸入線,其串行輸入數(shù)據(jù)送至邊界掃描寄存器或指令寄存器(由TAP控制器的當(dāng)前狀態(tài)及已保存在指令寄存器中的指令來控制)。TDO:測試數(shù)據(jù)輸出線,把從邊界掃描鏈采樣的數(shù)據(jù)傳播至串行測試電路中的下一個(gè)芯片。第五十三頁,共288頁。TAP狀態(tài)機(jī)測試訪問端口TAP控制器是一個(gè)16狀態(tài)的有限狀態(tài)機(jī),為JTAG提供控制邏輯。狀態(tài)轉(zhuǎn)移圖如右圖:
第五十四頁,共288頁。JTAG接口控制指令控制指令用于控制JTAG接口各種操作,控制指令包括公用(Public)指令和私有(Private)指令。最基本的公用指令有:BYPASS:旁路片上系統(tǒng)邏輯指令,用于未被測試的芯片,即把TDI與TPO旁路(1個(gè)時(shí)鐘延遲)。EXTEST:片外電路測試指令,用于測試電路板上芯片之間的互連。IDCODE:讀芯片ID碼指令,用于識(shí)別電路板上的芯片。此時(shí),ID寄存器在TDI與TDO引腳之間,在captureDR狀態(tài)中,芯片的ID復(fù)制至該寄存器,然后在shiftDR狀態(tài)中移出。INTEST:片內(nèi)測試指令,邊界掃描寄存器位于TDI與TDO引腳之間,處理器核邏輯輸入和輸出狀態(tài)被該寄存器捕獲和控制。第五十五頁,共288頁。2.1.3ARM處理器內(nèi)核
ARM體系結(jié)構(gòu)的處理器內(nèi)核有:ARM7TDMI、ARM8、ARM9TDMI、ARM10TDMI及ARM11TDMI等。第五十六頁,共288頁。ARM7TDMIARM7TDMI名字原義如下:ARM7ARM632位整數(shù)核的3V兼容的版本;T16位壓縮指令集Thumb;D在片調(diào)試(Debug)支持,允許處理器響應(yīng)調(diào)試請(qǐng)求暫停;M增強(qiáng)型乘法器(Multiplier),與以前處理器相比性能更高,產(chǎn)生全64位結(jié)果;I嵌入式ICE硬件提供片上斷點(diǎn)和調(diào)試點(diǎn)支持。第五十七頁,共288頁。ARM7TDMI體系結(jié)構(gòu)圖ScanChain133個(gè)掃描單元,包括數(shù)據(jù)總線和一個(gè)斷點(diǎn)控制信號(hào)。ScanChain0113個(gè)掃描單元,包括ARM所有的I/O,地址/數(shù)據(jù)總線和輸入/輸出控制信號(hào)。此鏈很復(fù)雜,不易控制,但包含信息豐富,可通過它得到ARM7TDMI內(nèi)核的所有信息。ScanChain238個(gè)掃描單元,通過控制EmbeddedICE宏單元,實(shí)現(xiàn)對(duì)ARM進(jìn)行指令的斷點(diǎn)、觀察點(diǎn)的控制。第五十八頁,共288頁。ARM7TDMI引腳圖第五十九頁,共288頁。ARM7TDMI-接口存儲(chǔ)器接口中斷調(diào)試接口協(xié)處理器接口第六十頁,共288頁。ARM7TDMI-存儲(chǔ)器接口
MCLKnWAITA[31:0]D[31:0]nMREQ,SEQnRWLOCKABEDBEnTRANSABORTClocksandClockControlMemoryManagementMemoryInterfaceDataandAddressBusControlMemoryAccessControlnM[4:0]MAS[1:0]BL[3:0]APE,ALETBE
ECLKTBITBUSENnENINBIGENDARM7TDMInENOUT第六十一頁,共288頁。ARM7TDMI-存儲(chǔ)器接口MCLK–輸入處理器工作的時(shí)鐘。靜態(tài)設(shè)計(jì)的ARM通過延長時(shí)鐘周期來訪問慢速的設(shè)備。nWAIT–輸入在ARM內(nèi)部與MCLK相與。必須在MCLK為低的相位階段改變。容許該信號(hào)從一個(gè)周期擴(kuò)展到另一個(gè)周期,延長總線訪問周期。ECLK–輸出核心邏輯的時(shí)鐘的輸出。在正常和調(diào)試狀態(tài)下反映內(nèi)部時(shí)鐘。ph1&ph2–內(nèi)部信號(hào)雙相位非覆蓋的內(nèi)部時(shí)鐘。處理器內(nèi)部工作周期。第六十二頁,共288頁。ARM7TDMI-存儲(chǔ)器接口MCLKnWAITPhase1Phase2Phase2Phase1ph2InternalClockECLKph1InternalClock第六十三頁,共288頁。ARM7TDMI-存儲(chǔ)器接口MCLKnWAITPhase1Phase2Phase2Phase1ph2InternalClockECLKph1InternalClock第六十四頁,共288頁。ARM7TDMI-存儲(chǔ)器接口MCLKnWAITPhase1Phase2Phase2Phase1ph2InternalClockECLKph1InternalClock第六十五頁,共288頁。ARM7TDMI-存儲(chǔ)器接口nMREQ–輸出:存儲(chǔ)器請(qǐng)求.低有效,指示在接下來的周期中進(jìn)行存儲(chǔ)器訪問。SEQ–輸出:連續(xù)地址訪問高有效,指示在接下來的周期中地址不變或大一個(gè)操作數(shù)(字或半字)nRW–輸出:非讀/寫區(qū)分存儲(chǔ)器讀寫訪問LOCK–輸出:鎖定操作指示一條交換指令正在執(zhí)行,接下來的兩個(gè)處理器總線周期是不可見的。MAS[1:0]–輸出:存儲(chǔ)器訪問大小指示字、半字或字節(jié)訪問。第六十六頁,共288頁。ARM7TDMI-存儲(chǔ)器接口APE和ALE–輸入ARM建議兩個(gè)信號(hào)都為高,以便有最長的時(shí)間進(jìn)行地址譯碼。任何一個(gè)信號(hào)都可以連接到在數(shù)據(jù)訪問期間需要穩(wěn)定地址的設(shè)備。APE:地址流水線使能APE=1–地址是流水線的(在后續(xù)的相位2提供).APE=0–重新定時(shí)地址改變的時(shí)序,從MCLK的下降沿開始。控制對(duì)A[31:0]的透明鎖存。ALE:地址鎖存使能控制對(duì)A[31:0]的透明鎖存。僅用于已有的系統(tǒng)設(shè)計(jì),因?yàn)樗華PE更復(fù)雜。第六十七頁,共288頁。ARM7TDMI-存儲(chǔ)器接口ABE–輸入:地址總線使能當(dāng)ABE為低時(shí),下面的信號(hào)處于高阻狀態(tài):A[31:0],nRW,LOCK,MAS[1:0],nOPC,andnTRANSDBE–輸入:數(shù)據(jù)總線使能當(dāng)DBE為低時(shí),D[31:0]處于高阻狀態(tài)。TBE–輸入:測試總線使能當(dāng)TBE為低時(shí),下面的信號(hào)處于高阻狀態(tài):D[31:0],A[31:0],nRW,LOCK,MAS[1:0],nOPC,andnTRANS在ABE和DBE都為低時(shí),情況一樣。第六十八頁,共288頁。ARM7TDMI-存儲(chǔ)器接口nOPC–輸出低有效,指示處理器正在從存儲(chǔ)器取指。nTRANS–輸出低有效,指示處理器處于‘usermode’.nM[4:0]–輸出當(dāng)前操作模式,即User,FIQ,IRQ,Supervisor,Abort,SystemorUndefined.ABORT–輸入指示請(qǐng)求的訪問不容許。既用于指令預(yù)取,又用于Dataabort。第六十九頁,共288頁。ARM7TDMI-接口存儲(chǔ)器接口中斷調(diào)試接口協(xié)處理器接口第七十頁,共288頁。ARM7TDMI-中斷接口nIRQnFIQISYNCInterruptsARM7TDMI第七十一頁,共288頁。ARM7TDMI-中斷接口2個(gè)中斷源:nIRQandnFIQ–輸入nFIQ比nIRQ優(yōu)先級(jí)高。FIQ代碼可以在進(jìn)入中斷后直接訪問執(zhí)行。可以選擇(ISYNC–輸入)同步或異步時(shí)序。異步時(shí)序(ISYNC=0)損失一個(gè)周期的同步。同步時(shí)序(ISYNC=1)nIRQ和nFIQ必須在MCLK的下降沿的時(shí)候已經(jīng)建立且保持。nFIQ和nIRQ中斷可以通過設(shè)置CPSR寄存器中的F和I位屏蔽。第七十二頁,共288頁。ARM7TDMI-中斷接口ISYNC=0EarliestStartofInterruptSequenceInstructionfromInterruptvectorInterruptVectorAddressMCLKnFIQ/nIRQA[31:0]D[31:0]第七十三頁,共288頁。ARM7TDMI-中斷接口ISYNC=1EarliestStartofInterruptSequencevectorMCLKnFIQ/nIRQA[31:0]D[31:0]InterruptVectorAddressInstructionfromInterrupt第七十四頁,共288頁。ARM7TDMI-接口存儲(chǔ)器接口中斷調(diào)試接口協(xié)處理器接口第七十五頁,共288頁。ARM7TDMI-調(diào)試接口DBGRQBREAKPTDBGACKDebugInterface
ECLKEXTERN[1:0]DBGENARM7TDMIJTAGInterface第七十六頁,共288頁。ARM7TDMI-調(diào)試接口TDI -Input -TestDataInTDO -Output -TestDataOutTMS -Input -TestModeSelectTCK -Input -TestClocknTRST -Input -TestReset(activelow)第七十七頁,共288頁。ARM7TDMI-調(diào)試接口DBGEN–輸入(DEBUGENABLE)必須保持高電平,以允許ARM7TDMI的軟件調(diào)試。EXTERN[1:0]–輸入輸入到EmbeddedICE宏單元,允許基于外部條件的斷點(diǎn)。第七十八頁,共288頁。ARM7TDMI-調(diào)試接口下面的信號(hào)僅用于擴(kuò)展外部調(diào)試。Multi-ICE不使用這些信號(hào)。BREAKPT–輸入(BREAKPOINT)在指令上標(biāo)志斷點(diǎn)。在數(shù)據(jù)上標(biāo)志觀察點(diǎn)。如果不用,保持低電平。DBGRQ–輸入(DEBUGREQUEST)強(qiáng)制ARM7TDMI核進(jìn)入調(diào)試狀態(tài),高有效。如果不用,保持低電平。DBGACK–輸出(DEBUGACKNOWLEDGE)ARM7TDMI進(jìn)入調(diào)試狀態(tài)的響應(yīng)信號(hào)。高電平指示ARM7TDMI核已進(jìn)入調(diào)試狀態(tài)。第七十九頁,共288頁。ARM7TDMI-調(diào)試接口TAP信號(hào)容許增加額外的鏈SCREG[3:0] -
輸出 當(dāng)前選擇的掃描鏈IR[3:0] -
輸出 當(dāng)前已加載的指令TAPSM[3:0] -
輸出 TAP狀態(tài)機(jī)狀態(tài)SDINBS -輸出
掃描鏈串行數(shù)據(jù)輸入SDOUTBS -
輸入 掃描鏈串行數(shù)據(jù)輸出所需其它的移位、捕獲時(shí)鐘及多路復(fù)用器或選擇線。第八十頁,共288頁。ARM7TDMI-接口存儲(chǔ)器接口中斷調(diào)試接口協(xié)處理器接口第八十一頁,共288頁。ARM7TDMI-協(xié)處理器接口nCPI,nOPCCPB,CPACoprocessorInterfaceARM7TDMI第八十二頁,共288頁。ARM7TDMI-協(xié)處理器接口可以支持多達(dá)16個(gè)協(xié)處理器。nOPC–輸出:取操作碼低有效,指示正在取指令。使能協(xié)處理器跟蹤處理器指令流水線。nCPI–輸出:協(xié)處理器指令低有效,指示當(dāng)前正在執(zhí)行的指令是一條協(xié)處理器指令,且該指令應(yīng)該執(zhí)行。CPA–輸入:協(xié)處理器缺少高有效,當(dāng)能夠執(zhí)行所要求的協(xié)處理器操作的協(xié)處理器存在時(shí)變低。CPB–輸入:協(xié)處理器忙高有效,當(dāng)協(xié)處理器準(zhǔn)備好要執(zhí)行要求的協(xié)處理器操作時(shí)變低。如果沒有連接外部協(xié)處理器的話,將CPA和CPB拉高。第八十三頁,共288頁。采用了3級(jí)流水線結(jié)構(gòu),指令執(zhí)行分為取指、譯碼和執(zhí)行等3個(gè)階段;運(yùn)算器能實(shí)現(xiàn)32位整數(shù)運(yùn)算;采用了高效的乘法器,用32×8位乘法器實(shí)現(xiàn)32×32位乘法(結(jié)果為64位)。采用v4T版指令,支持16位Thumb指令集;嵌入式ICE(Embedded-ICE)模塊為ARM7TDMI提供了片內(nèi)調(diào)試功能。同時(shí)通過JTAG接口可以很方便地用PC主機(jī)對(duì)ARM7TDMI進(jìn)行開發(fā)和調(diào)試。還提供了存儲(chǔ)器接口、MMU接口、協(xié)處理器接口和調(diào)試接口,以及時(shí)鐘與總線等控制信號(hào)。ARM7TDMI主要特點(diǎn)第八十四頁,共288頁。ARM7TDMI主要性能指標(biāo)工藝:0.35μm(新近采用0.25μm);金屬布線:3層;電壓:3.3V(新近采用1.2V、0.9V);管子數(shù):74209只;內(nèi)核芯片面積:2.1mm2;時(shí)鐘:0~66MHz;MIPS:66;功耗:87mW;MIPS/W:690(采用0.25μm工藝,0.9V電壓,可達(dá)1200MIPS/W)。第八十五頁,共288頁。ARM9TDMI主要性能指標(biāo)工藝:025μm(0.18μm);金屬布線:3層;電壓:2.5V(1.2V);管子數(shù):11100只;核芯片面積:2.1mm2;時(shí)鐘:0~200MHz;MIPS:220;功耗:150mW;MIPS/W:1500。第八十六頁,共288頁。ARM9TDMI流水線結(jié)構(gòu)ARM9TDMI處理器內(nèi)核采用了5級(jí)流水線。第八十七頁,共288頁。ARM9TDMI主要特點(diǎn)采用指令和數(shù)據(jù)分離訪問的方式,即采用了指令Cache和數(shù)據(jù)Cache。用專門硬件來直接完成ARM與Thumb指令的譯碼。ARM9TDMI也有協(xié)處理器接口,允許在芯片增加浮點(diǎn)、數(shù)字信號(hào)處理或其他專用的協(xié)處理器。ARM9TDMI也提供相應(yīng)的軟核。ARM9E-S是具有DSP功能的能執(zhí)行v5TE版ARM指令的ARM9TDMI軟核,當(dāng)然其芯片面積要增加30%。在ARM9流水線設(shè)計(jì)中,增加專用流水段用于存儲(chǔ)器訪問和將結(jié)果寫回到寄存器組。而且,寄存器讀也移到譯碼段。這些改變通過減少在單一時(shí)鐘周期內(nèi)操作最大的邏輯數(shù)目,允許更高的時(shí)鐘頻率。第八十八頁,共288頁。ARM10TDMIARM10TDMI在系統(tǒng)結(jié)構(gòu)上主要采用增加時(shí)鐘速率和減少每條指令平均時(shí)鐘周期數(shù)CPI(ClockPerInstruction)兩大措施,以同樣的工藝,同樣的芯片面積,在性能上2倍于ARM9TDMI。
ARM10TDMI采用提高時(shí)鐘速率、6級(jí)流水線、分支預(yù)測邏輯、64位存儲(chǔ)器和無阻塞的存/取邏輯等措施,使ARM10TDMI的性能得到很大提高,是目前高檔ARM體系結(jié)構(gòu)的處理器內(nèi)核。流水線結(jié)構(gòu)第八十九頁,共288頁。2.1.4ARM處理器核在最基本的ARM處理器內(nèi)核基礎(chǔ)上,可增加Cache、存儲(chǔ)器管理單元MMU、協(xié)處理器CP15、AMBA接口以及EMT宏單元等,構(gòu)成ARM處理器核。以ARM7TDMI處理器內(nèi)核為基礎(chǔ)的有:ARM720T處理器核ARM740T處理器核以ARM9TDMI處理器內(nèi)核為基礎(chǔ)的有:ARM920T處理器核ARM940T處理器核第九十頁,共288頁。ARM720T
ARM720T處理器核是在ARM7TDMI處理器內(nèi)核基礎(chǔ)上,增加8KB的數(shù)據(jù)與指令Cache,支持段式和頁式存儲(chǔ)的MMU、寫緩沖器及AMBA接口構(gòu)成。第九十一頁,共288頁。ARM740TARM740T處理器核與ARM720T處理器核相比,結(jié)構(gòu)基本相同,但ARM740處理器核沒有存儲(chǔ)器管理單元MMU,不支持虛擬存儲(chǔ)器尋址;而是用存儲(chǔ)器保護(hù)單元來提供基本保護(hù)和Cache的控制。這為低價(jià)格低功耗的嵌入式應(yīng)用提供了合適的處理器核。由于在嵌入式應(yīng)用中運(yùn)行固定軟件,也不需要進(jìn)行地址變換,所以可以省去地址變換后備緩沖器TLB。第九十二頁,共288頁。ARM920T
ARM920T處理器核是在ARM9TDMI處理器內(nèi)核基礎(chǔ)上,增加了分離式的指令Cache和數(shù)據(jù)Cache,并帶有相應(yīng)的存儲(chǔ)器管理單元I-MMU和D-MMU、寫緩沖器及AMBA接口等。第九十三頁,共288頁。ARM920T處理器核特性:工藝:0.25μm;金屬布線:4層;電壓:2.5V;管子數(shù):2500000只;核芯片面積:23~25mm2;時(shí)鐘:0~200MHz;MIPS:220;功耗:560mW;MIPS/W:390。ARM920T特性第九十四頁,共288頁。ARM940T
ARM940T處理器核與ARM740T處理器核相似,采用了ARM9TDMI處理器內(nèi)核,是ARM920T處理器核的簡化。沒有存儲(chǔ)器管理單元MMU,不支持虛擬存儲(chǔ)器尋址,而是用有儲(chǔ)器保護(hù)單元來提供存儲(chǔ)保護(hù)和Cache控制。ARM940T的存儲(chǔ)保護(hù)單元結(jié)構(gòu)與ARM740T的基本相同。第九十五頁,共288頁。主要內(nèi)容1324ARM體系結(jié)構(gòu)概述
編程模型ARM基本尋址方式ARM指令集5ARM9TDMI內(nèi)核6ARM9與ARM7的比較ARM920T核7第九十六頁,共288頁。2.2.1數(shù)據(jù)類型ARM處理器支持下列數(shù)據(jù)類型:Byte字節(jié),8位;Halfword半字,16位(半字必須與2字節(jié)邊界對(duì)準(zhǔn));Word字,32位(字必須與4字節(jié)邊界對(duì)準(zhǔn))。第九十七頁,共288頁。2.2.2處理器模式ARM體系結(jié)構(gòu)支持7種處理器模式。處理器模式說明用戶usr正常程序執(zhí)行模式FIQfiq支持高速數(shù)據(jù)傳送或通道處理IRQirq用于通用中斷處理管理svc操作系統(tǒng)保護(hù)模式中止abt實(shí)現(xiàn)虛擬存儲(chǔ)器和/或存儲(chǔ)器保護(hù)未定義und支持硬件協(xié)處理器的軟件仿真系統(tǒng)sys運(yùn)行特權(quán)操作系統(tǒng)任務(wù)第九十八頁,共288頁。
處理器模式分類處理器模式用戶模式特權(quán)模式異常模式系統(tǒng)模式FIQIRQ管理中止未定義第九十九頁,共288頁。2.2.3處理器工作狀態(tài)ARM處理器有兩種工作狀態(tài):ARM:32位,這種狀態(tài)下執(zhí)行字對(duì)準(zhǔn)的ARM指令;Thumb:16位,這種狀態(tài)下執(zhí)行半字對(duì)準(zhǔn)的Thumb指令。ARM處理器在兩種工作狀態(tài)之間可以切換。ARM和Thumb之間狀態(tài)的切換不影響處理器的模式或寄存器的內(nèi)容。(1)進(jìn)入Thumb狀態(tài)。當(dāng)操作數(shù)寄存器的狀態(tài)位(位[0])為1時(shí),執(zhí)行BX指令進(jìn)入Thumb狀態(tài)。如果處理器在Thumb狀態(tài)進(jìn)入異常,則當(dāng)異常處理(IRQ﹑FIQ﹑Undef﹑Abort和SWI)返回時(shí),自動(dòng)轉(zhuǎn)換到Thumb狀態(tài)。(2)進(jìn)入ARM狀態(tài)。當(dāng)操作數(shù)寄存器的狀態(tài)位(位[0])為0時(shí),執(zhí)行BX指令進(jìn)入ARM狀態(tài)。處理器進(jìn)行異常處理(IRQ﹑FIQ﹑Reset﹑Undef﹑Abort和SWI)。在此情況下,把PC放入異常模式鏈接寄存器中。從異常向量地址開始執(zhí)行也可以進(jìn)入ARM狀態(tài)。第一百頁,共288頁。2.2.4寄存器組織ARM處理器總共有37個(gè)寄存器:31個(gè)通用寄存器,包括程序計(jì)數(shù)器(PC)。這些寄存器是32位的。6個(gè)狀態(tài)寄存器。這些寄存器也是32位的,但只使用了其中的12位。第一百零一頁,共288頁。通用寄存器通用寄存器(R0~R15)可分成3類:不分組寄存器R0~R7:在所有的處理器模式下,它們每一個(gè)都訪問一樣的32位物理寄存器。分組寄存器R8~R14:它們每一個(gè)訪問的物理寄存器取決于當(dāng)前的處理器模式。每種處理器模式有專用的分組寄存器用于快速異常處理。寄存器R13通常用作堆棧指針,稱作SP。
寄存器R14用作子程序鏈接寄存器,也稱為鏈接寄存器LR。寄存器R8~R12各有兩組物理寄存器。一組為FIQ模式,另一組為除FIQ以外的其它模式。寄存器R13、R14各有6個(gè)分組的物理寄存器。1個(gè)用于用戶模式和系統(tǒng)模式,而其它5個(gè)分別用于5種異常模式。程序計(jì)數(shù)器R15:在ARM狀態(tài),位[1:0]為0,位[31:2]保存PC在Thumb狀態(tài),位[0]為0,位[31:1]保存PC。第一百零二頁,共288頁。程序狀態(tài)寄存器在所有處理器模式下都可以訪問當(dāng)前程序狀態(tài)寄存器CPSR(CurrentProgramStatusRegister)。CPSR包含條件碼標(biāo)志、中斷禁止位、當(dāng)前處理器模式以及其它狀態(tài)和控制信息。每種異常模式都有一個(gè)程序狀態(tài)保存寄存器SPSR(SavedProgramStatusRegister)。當(dāng)異常出現(xiàn)時(shí),SPSR用于保留CPSR的狀態(tài)。CPSR和SPSR格式如下:第一百零三頁,共288頁。程序狀態(tài)寄存器條件碼標(biāo)志N、Z、C、V(Negative、Zero、Carry、oVerflow)位稱作條件碼標(biāo)志(ConditionCodeFlags)。通常條件碼標(biāo)志通過執(zhí)行下述指令進(jìn)行修改,即比較指令(CMN、CMP、TEQ、TST);一些算術(shù)運(yùn)算、邏輯運(yùn)算和傳送指令,它們的目的寄存器不是R15。這些指令通過在指令助記符后加上字符“S”進(jìn)行標(biāo)志設(shè)置。條件碼標(biāo)志的含義N:如果結(jié)果是帶符號(hào)二進(jìn)制補(bǔ)碼,若結(jié)果為負(fù)數(shù),則N=1;若結(jié)果為正數(shù)或0,則N=0。Z:若指令的結(jié)果為0,則置1,否則置0。C:-加法,包括比較指令CMN。產(chǎn)生進(jìn)位則C置1;否則置0。-減法,包括比較指令CMP。產(chǎn)生借位則C置0;否則置1。-對(duì)于結(jié)合移位操作的非加/減法指令,C置為移出值的最后1位。V:對(duì)于加法或減法指令,當(dāng)發(fā)生帶符號(hào)溢出時(shí),V置1。第一百零四頁,共288頁。程序狀態(tài)寄存器—溢出式子1:
式子2:
0111
(7)
0011
(3)
+
0111
(7)
+
0011
(3)
-------------------------------
---------------------------
1110
(-2)溢出
0110
(6)正確溢出標(biāo)志V:對(duì)于加法或減法指令,當(dāng)發(fā)生帶符號(hào)溢出時(shí),V置1。式子3:
式子4:
1100
(-4)
1100
(-4)
+
1000
(-8)
+
1111
(-1)
-------------------------------
----------------------------
10100
(
4)溢出
11011
(-5)正確
--
--
進(jìn)位
進(jìn)位第一百零五頁,共288頁。程序狀態(tài)寄存器—溢出總結(jié)兩個(gè)正數(shù)相加,如果結(jié)果為負(fù)數(shù),就產(chǎn)生了溢出。兩個(gè)負(fù)數(shù)相加,如果結(jié)果為正數(shù),就產(chǎn)生了溢出。不同符號(hào)的兩個(gè)數(shù)相加,不會(huì)產(chǎn)生溢出。對(duì)于加法,當(dāng)計(jì)算的結(jié)果最高位向上進(jìn)一位時(shí),就會(huì)產(chǎn)生進(jìn)位情況.第一百零六頁,共288頁。程序狀態(tài)寄存器控制位程序狀態(tài)寄存器PSR(ProgramStatusRegister)的最低8位I、F、T和M[4:0]用作控制位。①中斷禁止位I置1則禁止IRQ中斷;F置1則禁止FIQ中斷。②T位
T=0指示ARM執(zhí)行;T=1指示Thumb執(zhí)行。③模式位M0、M1、M2、M3和M4是模式位。這些位決定處理器的工作模式。M[4:0]模式可訪問的寄存器10000用戶PC、R14~R0、CPSR10001
FIQPC、R14_fiq~R8_fiq、R7~R0、CPSR、SPSR_fiq10010
IRQPC、R14_irq、R13_irq、R12~R0、CPSR、SPSR_irq10011管理PC、R14_svc、R13_svc、R12~R0、CPSR、SPSR_svc10111中止PC、R14_abt、R13_abt、R12~R0、CPSR、SPSR_abt11011未定義PC、R14_und、R13_und、R12~R0、CPSR、SPSR_und11111系統(tǒng)PC、R14~R0、CPSR第一百零七頁,共288頁。Thumb狀態(tài)的寄存器集Thumb
狀態(tài)下的寄存器集是ARM狀態(tài)下的寄存器集的子集。程序員可以直接訪問8個(gè)通用寄存器(R0~R7)、PC、SP、LR和CPSR。每一種特權(quán)模式都有一組SP、LR和SPSR。
第一百零八頁,共288頁。
Thumb狀態(tài)的寄存器集Thumb狀態(tài)寄存器與ARM狀態(tài)寄存器的關(guān)系注意:在Thumb狀態(tài)下,寄存器R8-R15(高寄存器)并不是標(biāo)準(zhǔn)寄存器集的一部分。第一百零九頁,共288頁。2.2.5異常異常由內(nèi)部或外部源產(chǎn)生并引起處理器處理一個(gè)事件,例如外部中斷或試圖執(zhí)行未定義指令都會(huì)引起異常。ARM支持7種類型的異常。異常類型模式正常地址高向量地址復(fù)位管理0x000000000xFFFF0000未定義指令未定義0x000000040xFFFF0004軟件中斷(SWI)管理0x000000080xFFFF0008預(yù)取中止(取指令存儲(chǔ)器中止)中止0x0000000C0xFFFF000C數(shù)據(jù)中止(數(shù)據(jù)訪問存儲(chǔ)器中止)中止0x000000100xFFFF0010IRQ(中斷)IRQ0x000000180xFFFF0018FIQ(快速中斷)FIQ0x0000001C0xFFFF001C當(dāng)異常出現(xiàn)時(shí),異常模式分組的R14和SPSR用于保存狀態(tài)。當(dāng)處理異常返回時(shí),把SPSR傳送到CPSR,R14傳送到PC。這可用兩種方法自動(dòng)完成,即使用帶“S”的數(shù)據(jù)處理指令,將PC作為目的寄存器;使用帶恢復(fù)CPSR的多加載指令。第一百一十頁,共288頁。優(yōu)先級(jí)異常1(最高)復(fù)位2數(shù)據(jù)中止3FIQ4IRQ5預(yù)取中止6(最低)未定義指令、SWI2.2.5異常異常優(yōu)先級(jí)第一百一十一頁,共288頁。2.2.6存儲(chǔ)器和存儲(chǔ)器映射I/O地址空間ARM體系結(jié)構(gòu)使用232個(gè)8位字節(jié)的單一、線性地址空間。將字節(jié)地址做為無符號(hào)數(shù)看待,范圍為0~232-1。存儲(chǔ)器格式第一百一十二頁,共288頁。2.2.6存儲(chǔ)器和存儲(chǔ)器映射I/O非對(duì)準(zhǔn)的存儲(chǔ)器訪問存儲(chǔ)器映射I/O
若在ARM態(tài)執(zhí)行期間,將沒有字對(duì)準(zhǔn)的地址寫到R15中,結(jié)果通常不可預(yù)知或者地址的位[1:0]被忽略。若在Thumb態(tài)執(zhí)行期間,將沒有半字對(duì)準(zhǔn)的地址寫到R15中,則地址的位[0]通常忽略。當(dāng)執(zhí)行無效代碼時(shí),從R15讀值的結(jié)果對(duì)ARM狀態(tài)來說總是位[1:0]為0,對(duì)Thumb狀態(tài)來說總是位[0]為0。ARM系統(tǒng)完成I/O功能的標(biāo)準(zhǔn)方法是使用存儲(chǔ)器映射I/O。從存儲(chǔ)器映射I/O地址加載用于輸入,向存儲(chǔ)器映射I/O地址存儲(chǔ)用于輸出。存儲(chǔ)器映射I/O位置的行為通常不同于對(duì)一個(gè)正常存儲(chǔ)器位置所期望的行為。例如,對(duì)于存儲(chǔ)器映射I/O位置,第2次加載的返回值可以不同于第1次加載的返回值。第一百一十三頁,共288頁。主要內(nèi)容1324ARM體系結(jié)構(gòu)概述
編程模型ARM基本尋址方式ARM指令集5ARM9TDMI內(nèi)核6ARM9與ARM7的比較ARM920T核7第一百一十四頁,共288頁。
尋址方式是根據(jù)指令中給出的地址碼字段來尋找真實(shí)操作數(shù)地址的方式。ARM處理器支持的基本尋址方式有:2.3ARM基本尋址方式寄存器尋址立即尋址寄存器移位尋址寄存器間接尋址變址尋址多寄存器尋址堆棧尋址塊復(fù)制尋址相對(duì)尋址第一百一十五頁,共288頁。寄存器尋址所需要的值在寄存器中,指令中地址碼給出的是寄存器編號(hào),即寄存器的內(nèi)容為操作數(shù)。例如指令:ADDR0,R1,R2;R0R1+R2這條指令將2個(gè)寄存器(R1和R2)的內(nèi)容相加,結(jié)果放入第3個(gè)寄存器R0中。必須注意寫操作數(shù)的順序,第1個(gè)是結(jié)果寄存器,然后是第一操作數(shù)寄存器,最后是第二操作數(shù)寄存器。第一百一十六頁,共288頁。立即尋址立即尋址是一種特殊的尋址方式,指令中在操作碼字段后面的地址碼部分不是通常意義上的操作數(shù)地址,而是操作數(shù)本身。這樣的數(shù)稱為立即數(shù)。例如指令:ADDR3,R3,#1;R3R3+1ANDR8,R7,#0xff;R8R7[7:0]第2個(gè)源操作數(shù)為一個(gè)立即數(shù),以“#”為前綴,十六進(jìn)制值以在“#”后加“0x”或“&”表示。第1條指令完成寄存器R3的內(nèi)容加1,結(jié)果放回R3中。第2條指令完成R7的32位值與0FFH相“與”,結(jié)果為將R7的低8位送到R8中。第一百一十七頁,共288頁。寄存器移位尋址這種尋址方式是ARM指令集特有的。第2個(gè)寄存器操作數(shù)在與第1個(gè)操作數(shù)結(jié)合之前,選擇進(jìn)行移位操作。例如指令:ADDR3,R2,R1,LSL#3;R3R2+8×R1寄存器R1的內(nèi)容邏輯左移3位,再與寄存器R2內(nèi)容相加,結(jié)果放入R3中。可以采取的移位操作如有:LSL:邏輯左移(LogicalShiftLeft)。寄存器中字的低端空出的位補(bǔ)0。0LSR:邏輯右移(LogicalShiftRight)。寄存器中字的高端空出的位補(bǔ)0。0第一百一十八頁,共288頁。可以采取的移位操作如有:寄存器移位尋址ASR:算術(shù)右移(ArithmeticShiftRight)。算術(shù)移位的對(duì)象是帶符號(hào)數(shù),若源操作數(shù)為正數(shù),則字的高端空出的位補(bǔ)0。若源操作數(shù)為負(fù)數(shù),則字的高端空出的位補(bǔ)1。RRX:擴(kuò)展為1的循環(huán)右移(RotateRighteXtendedby1place)。操作數(shù)右移一位,空位(位[31])用原C標(biāo)志值填充。
ROR:循環(huán)右移(ROtateRight)。從字的最低端移出的位填入字的高端空出的位。C第一百一十九頁,共288頁。寄存器間接尋址指令中的地址碼給出某一通用寄存器的編號(hào)。在被指定的寄存器中存放操作數(shù)的有效地址,而操作數(shù)則存放在存儲(chǔ)單元中,即寄存器為地址指針。例如指令:LDRR0,[R1];R0[R1]STRR0,[R1];R0[R1]寄存器間接尋址使用一個(gè)寄存器(基址寄存器)的值作為存儲(chǔ)器的地址。第1條指令將寄存器R1指向的地址單元的內(nèi)容加載到寄存器R0中。第2條指令將寄存器R0存入寄存器R1指向的地址單元。第一百二十頁,共288頁。變址尋址變址尋址就是將基址寄存器的內(nèi)容與指令中給出的位移量相加,形成操作數(shù)有效地址。變址尋址用于訪問基址附近的存儲(chǔ)單元,包括基址加偏移和基址加索引尋址。寄存器間接尋址是偏移量為0的基址加偏移尋址。基址加偏移尋址基址加索引尋址前索引尋址方式:基址需加(或減)最大4KB的偏移來計(jì)算訪問的地址。例如:LDRR0,[R1,#4];R0[R1+4]后索引尋址方式:基址不帶偏移作為傳送的地址,傳送后自動(dòng)索引。例如:LDRR0,[R1],#4;R0[R1];R1R1+4
指令指定一個(gè)基址寄存器,再指定另一個(gè)寄存器(索引),其值作為位移加到基址上形成存儲(chǔ)器地址。例如:LDRR0,[R1,R2];R0[R1+R2]第一百二十一頁,共288頁。多寄存器尋址一次可以傳送幾個(gè)寄存器的值。允許一條指令傳送16個(gè)寄存器的任何子集(或所有16個(gè)寄存器)。例如指令:LDMIAR1,{R0,R2,R5};R0[R1];R2[R1+4];R5[R1+8]
由于傳送的數(shù)據(jù)項(xiàng)總是32位的字,基址R1應(yīng)該字對(duì)準(zhǔn)。這條指令將R1指向的連續(xù)存儲(chǔ)單元的內(nèi)容送到寄存器R0、R2和R5。第一百二十二頁,共288頁。堆棧尋址堆棧是按“先進(jìn)后出”(FILO)的特定順序進(jìn)行存取的存儲(chǔ)區(qū)。堆棧尋址是隱含的,它使用一個(gè)專門的寄存器(堆棧指針)指向一塊存儲(chǔ)器區(qū)域(堆棧)。棧指針?biāo)付ǖ拇鎯?chǔ)單元就是堆棧的棧頂。根據(jù)增長方向,堆棧可分為:向上生長:即向高地址方向生長,稱為遞增堆棧(AscendingStack)。向下生長:即向低地址方向生長,稱為遞減堆棧(DescendingStack)。根據(jù)棧指針的指向位置,堆棧可分為:滿堆棧:堆棧指針指向最后壓入堆棧的有效數(shù)據(jù)項(xiàng)空堆棧:堆棧指針指向下一個(gè)數(shù)據(jù)項(xiàng)放入的空位置,第一百二十三頁,共288頁。這樣就有4種類型的堆棧表示遞增和遞減的滿和空堆棧的各種組合。ARM處理器支持所有這4種類型的堆棧。滿遞增:堆棧通過增大存儲(chǔ)器的地址向上增長,堆棧指針指向內(nèi)含有效數(shù)據(jù)項(xiàng)的最高地址。空遞增:堆棧通過增大存儲(chǔ)器的地址向上增長,堆棧指針指向堆棧上的第一個(gè)空位置。滿遞減:堆棧通過減小存儲(chǔ)器的地址向下增長,堆棧指針指向內(nèi)含有效數(shù)據(jù)項(xiàng)的最低地址。空遞減:堆棧通過減小存儲(chǔ)器的地址向下增長,堆棧指針指向堆棧下的第一個(gè)空位置。堆棧尋址第一百二十四頁,共288頁。塊復(fù)制尋址ARM支持兩種不同角度的尋址機(jī)制:堆棧角度和塊復(fù)制角度,兩者都映射到相同的基本指令。堆棧和塊拷貝角度的多寄存器加載和存儲(chǔ)指令映射如下圖。第一百二十五頁,共288頁。塊復(fù)制角度的尋址舉例,執(zhí)行指令之前的基址寄存器值是R9,自動(dòng)尋址之后的基址寄存器是R9’。
塊復(fù)制尋址第一百二十六頁,共288頁。相對(duì)尋址相對(duì)尋址是變址尋址的一種變通,由程序計(jì)數(shù)器PC提供基地址。指令中的地址碼字段作為位移量,兩者相加后得到操作數(shù)的有效地址。位移量指出的是操作數(shù)與現(xiàn)行指令之間的相對(duì)位置。例如指令:BLSUBR;轉(zhuǎn)移到SUBR…;返回到此SUBR…;子程序入口地址MOVPC,R14;返回第一百二十七頁,共288頁。主要內(nèi)容1324ARM體系結(jié)構(gòu)概述
編程模型ARM基本尋址方式ARM指令集5ARM9TDMI內(nèi)核6ARM9與ARM7的比較ARM920T核7第一百二十八頁,共288頁。名詞解釋:機(jī)器指令、偽指令、宏指令機(jī)器指令被處理器直接執(zhí)行,偽指令和宏指令不能。機(jī)器指令包括ARM指令集和Thumb指令集;偽指令是在源程序匯編期間,由匯編編譯器處理。其作用是為匯編程序完成準(zhǔn)備工作;宏指令在程序中用于調(diào)用宏,宏是一段獨(dú)立的程序代碼;在程序匯編時(shí),對(duì)宏調(diào)用進(jìn)行展開,用宏體代替宏指令。2.4.0
ARM指令集概述129第一百二十九頁,共288頁。指令:是規(guī)定計(jì)算機(jī)進(jìn)行某種操作的命令。指令系統(tǒng):計(jì)算機(jī)能夠執(zhí)行的各種指令的集合。
ARM指令集概念130第一百三十頁,共288頁。所有指令都是32位的。大多數(shù)指令都在單周期內(nèi)完成。所有指令都可以條件執(zhí)行。ARM指令為load/store類型。基本指令僅36條,分成5+1類。有9種尋址方式。指令集可以通過協(xié)處理器擴(kuò)展。
ARM指令的特點(diǎn)131第一百三十一頁,共288頁。ARM指令為load/store類型。也即指令集僅能處理寄存器中的數(shù)據(jù),而且處理結(jié)果都要放回寄存器中,而對(duì)系統(tǒng)存儲(chǔ)器的訪問則需要通過專門的加載/存儲(chǔ)指令來完成。
ARM指令的特點(diǎn)132第一百三十二頁,共288頁。ARM指令可以分為5類機(jī)器指令。5類機(jī)器指令:存儲(chǔ)器訪問(6個(gè))數(shù)據(jù)處理(16個(gè)算術(shù)邏輯、6個(gè)乘法、1個(gè)前導(dǎo)零)跳轉(zhuǎn)(4個(gè))協(xié)處理器指令(7個(gè))雜項(xiàng)指令(4個(gè))ARM偽指令
ARM指令的特點(diǎn)133第一百三十三頁,共288頁。
ARM指令的格式ARM指令基本的語法格式為:<Opcode>{<cond>}{s}<Rd>,<Rn>{,<Operand2>}Opcode:指令操作碼。cond:指令的條件碼。S:決定指令的操作是否影響cpsr的值。Rd:目標(biāo)寄存器編碼。Rn:包含第一個(gè)操作數(shù)的寄存器編碼。Operand2:第2操作數(shù)。<>內(nèi)是必需的{}內(nèi)是可選的134第一百三十四頁,共288頁。
ARM指令的格式LDR
R0,[R1] ;讀取R1地址上的存儲(chǔ)器單元內(nèi)容, ;執(zhí)行條件ALBEQDATAEVEN;跳轉(zhuǎn)指令,執(zhí)行條件EQ,即相等 ;跳轉(zhuǎn)到DATAEVEN
ADDS
R1,R1,#1
;加法指令,R1+1=R1影響CPSR ;寄存器,帶有S
SUBNES
R1,R1,#0xD;條件執(zhí)行減法運(yùn)算(NE), ;R1-0xD=>R1,影響 ;CPSR寄存器,帶有S135第一百三十五頁,共288頁。
ARM指令的格式ARM指令典型的編碼格式為:(數(shù)據(jù)處理指令類)CondOpcodeSRnRdOperand2011121516192021242527283178136第一百三十六頁,共288頁。2.4.1條件執(zhí)行條件碼的位數(shù)和位置:幾乎每條ARM指令都可以包含4位條件碼域<cond>,它占用指令編碼的最高四位[31:28]。條件碼的表示:條件編碼共24
=16種,其中,15種用于指令的條件碼。每種條件碼用2個(gè)英文縮寫字符表示。第一百三十七頁,共288頁。2.4.1條件執(zhí)行帶條件指令的執(zhí)行:ARM處理器根據(jù)指令的執(zhí)行條件是否滿足,決定當(dāng)前指令是否執(zhí)行。
只有在cpsr中的條件標(biāo)志位滿足指定的條件時(shí),指令才會(huì)被執(zhí)行。不符合條件的代碼依然占用一個(gè)時(shí)鐘周期(相當(dāng)于一個(gè)NOP指令)。條件碼的書寫方法:條件碼的位置在指令助記符的后面(因此也稱為條件后綴)。
例如:
MOVEQR0,R1第一百三十八頁,共288頁。2.4.1條件執(zhí)行操作碼[31:28]助記符后綴標(biāo)志含義0000EQZ=1相等0001NEZ=0不等0010CS/HSC=1大于或等于(無符號(hào)>=)0011CC/LOC=0小于(無符號(hào)<)0100MIN=1負(fù)0101PLN=0正或零0110VSV=1溢出0111VCV=0未溢出1000HIC=1且Z=0大于(無符號(hào)>)1001LSC=0或Z=1小于或等于(無符號(hào)<=)1010GEN和V相同帶符號(hào)>=1011LTN和V不同帶符號(hào)<1100GTZ=0且N和V相同帶符號(hào)>1101LEZ=1或N和V不同帶符號(hào)<=1110AL任
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 舞蹈房裝修方案(3篇)
- 個(gè)人店鋪推銷方案(3篇)
- DB23-T3021-2021-氣象災(zāi)害防御重點(diǎn)單位評(píng)估規(guī)范-黑龍江省
- DB23-T2923-2021-飼用大豆半干青貯加工與貯藏技術(shù)規(guī)程-黑龍江省
- DB23-T2889-2021-楊樹人工造林間作黨參栽培技術(shù)規(guī)程-黑龍江省
- 全力改進(jìn)服務(wù)管理制度
- 小型公司員工管理制度
- 利潤擺攤定價(jià)方案(3篇)
- 斜坡荒地改造方案(3篇)
- 公司測繪質(zhì)量管理制度
- 合格供應(yīng)商的聲明函和承諾書范文
- ITSM基礎(chǔ)知識(shí)及流程介紹
- 小學(xué)數(shù)學(xué)《年齡問題》ppt
- 部編版初中語文課后習(xí)題答案
- 數(shù)據(jù)鏈系統(tǒng)與技術(shù)(第2版) 課件 第5、6章 無人機(jī)數(shù)據(jù)鏈、數(shù)據(jù)鏈的消息格式
- SPSS大數(shù)據(jù)案例分析報(bào)告-
- 醫(yī)療機(jī)構(gòu)安全檢查表
- 眼科白內(nèi)障課件
- 高中英語-The Return of the Champions教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 教育研究的程序與方法課件
- 2023年江蘇蘇州市中考道法試卷試題及答案詳解(精校打印版)
評(píng)論
0/150
提交評(píng)論