第13講_存儲(chǔ)機(jī)制_第1頁
第13講_存儲(chǔ)機(jī)制_第2頁
第13講_存儲(chǔ)機(jī)制_第3頁
第13講_存儲(chǔ)機(jī)制_第4頁
第13講_存儲(chǔ)機(jī)制_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、河南大學(xué)計(jì)算機(jī)與信息工程學(xué)院授課人:金勇u ARM ARM存儲(chǔ)系統(tǒng)概述存儲(chǔ)系統(tǒng)概述u 快速上下文切換技術(shù)快速上下文切換技術(shù)u 高速緩沖區(qū)和寫緩沖區(qū)高速緩沖區(qū)和寫緩沖區(qū)u ARM ARM存儲(chǔ)器管理單元存儲(chǔ)器管理單元u ARM ARM存儲(chǔ)器訪問指令存儲(chǔ)器訪問指令3 與其他中低檔單片機(jī)不同,與其他中低檔單片機(jī)不同,ARM處理器中一般都包含一處理器中一般都包含一個(gè)存儲(chǔ)器管理部件,用于對存儲(chǔ)器的管理。個(gè)存儲(chǔ)器管理部件,用于對存儲(chǔ)器的管理。 為了適應(yīng)不同的嵌入式應(yīng)用,為了適應(yīng)不同的嵌入式應(yīng)用, ARM存儲(chǔ)系統(tǒng)的體系結(jié)構(gòu)存儲(chǔ)系統(tǒng)的體系結(jié)構(gòu)存在很多差別。簡單的可以使用像單片機(jī)系統(tǒng)中使用的存在很多差別。簡單的可

2、以使用像單片機(jī)系統(tǒng)中使用的平板式地址映射機(jī)制即可;而一些復(fù)雜的系統(tǒng)中則可能平板式地址映射機(jī)制即可;而一些復(fù)雜的系統(tǒng)中則可能包含多種技術(shù)來提供功能強(qiáng)大的存儲(chǔ)系統(tǒng)。包含多種技術(shù)來提供功能強(qiáng)大的存儲(chǔ)系統(tǒng)。41. 系統(tǒng)中可能包含多種類型的存儲(chǔ)器件,如系統(tǒng)中可能包含多種類型的存儲(chǔ)器件,如FLASH、ROM、SDRAM、SRAM等;而且不同類型的存儲(chǔ)器等;而且不同類型的存儲(chǔ)器件要求不同的速度、數(shù)據(jù)寬度等;件要求不同的速度、數(shù)據(jù)寬度等;2. 通過通過CACHE和和WRITE BUFFER技術(shù)縮小處理器和存技術(shù)縮小處理器和存儲(chǔ)系統(tǒng)速度差別,從而提高系統(tǒng)性能;儲(chǔ)系統(tǒng)速度差別,從而提高系統(tǒng)性能;3. 內(nèi)存管理部件

3、使用內(nèi)存管理部件使用內(nèi)存映射內(nèi)存映射技術(shù)實(shí)現(xiàn)虛擬空間到物理技術(shù)實(shí)現(xiàn)虛擬空間到物理空間的映射??臻g的映射。4. 引入存儲(chǔ)保護(hù)機(jī)制,增強(qiáng)系統(tǒng)的安全性;引入存儲(chǔ)保護(hù)機(jī)制,增強(qiáng)系統(tǒng)的安全性;5. 引入一些機(jī)制保證引入一些機(jī)制保證I/O操作映射成內(nèi)存操作后,各種操作映射成內(nèi)存操作后,各種I/O操作能夠得到正確的結(jié)果。操作能夠得到正確的結(jié)果。5 S3C2410X的存儲(chǔ)器管理器提供訪問外部存儲(chǔ)器的所有控制信號(hào):27位地址信號(hào)、32位數(shù)據(jù)信號(hào)、8個(gè)片選信號(hào)、以及讀/寫控制信號(hào)等。 S3C2410X的存儲(chǔ)空間分成8組,最大容量是1GB,bank0-bank5為固定128MB,bank6和bank7的容量可編程改

4、變,可以是2、4、8、16、32、64、128MB,并且bank7的開始地址與bank6的結(jié)束地址相連接,但是二者的容量必須相等。 bank0可以作為引導(dǎo)ROM,其數(shù)據(jù)線寬只能是16位和32位,復(fù)位時(shí)由OM0、OM1引腳確定;其它存儲(chǔ)器的數(shù)據(jù)線寬可以是8位、16位和32位。 S3C2410X的存儲(chǔ)器格式,可以編程設(shè)置為大端格式,也可以設(shè)置為小端格式。6S3C2410X存儲(chǔ)器組織示意圖存儲(chǔ)器組織示意圖寄存器寄存器地地 址址功功 能能操作操作復(fù)位值復(fù)位值BWSCON0 x48000000總線寬度和等待控制總線寬度和等待控制讀讀/寫寫0 x0BANKCON00 x48000004BANK0控制控制讀

5、讀/寫寫0 x0700BANKCON10 x48000008BANK1控制控制讀讀/寫寫0 x0700BANKCON20 x4800000CBANK2控制控制讀讀/寫寫0 x0700BANKCON30 x48000010BANK3控制控制讀讀/寫寫0 x0700BANKCON40 x48000014BANK4控制控制讀讀/寫寫0 x0700BANKCON50 x48000018BANK5控制控制讀讀/寫寫0 x0700BANKCON60 x4800001CBANK6控制控制讀讀/寫寫0 x18008BANKCON70 x48000020BANK7控制控制讀讀/寫寫0 x18008REFRESH

6、0 x48000024SDRAM刷新控制刷新控制讀讀/寫寫0 xAC0000BANKSIZE0 x48000028可變的組大小設(shè)置可變的組大小設(shè)置讀讀/寫寫0 x0MRSRB60 x4800002CBANK6模式設(shè)置模式設(shè)置讀讀/寫寫xxxMRSRB70 x48000030BANK7模式設(shè)置模式設(shè)置讀讀/寫寫xxx13個(gè)控制寄存器為訪問外部存儲(chǔ)空間提供存儲(chǔ)器控制信號(hào)。個(gè)控制寄存器為訪問外部存儲(chǔ)空間提供存儲(chǔ)器控制信號(hào)。8用于存儲(chǔ)管理的系統(tǒng)控制協(xié)處理寄存器用于存儲(chǔ)管理的系統(tǒng)控制協(xié)處理寄存器CP15CP15 在基于ARM的嵌入式系統(tǒng)中,存儲(chǔ)系統(tǒng)通常使用CP15來完成存儲(chǔ)器的大部分管理工作;除了CP1

7、5之外,在具體的存儲(chǔ)機(jī)制中可能還會(huì)用到其他技術(shù)如:頁表技術(shù)等。 CP15可以保護(hù)16個(gè)32位的寄存器,編號(hào)015。實(shí)際上對于某些編號(hào)的寄存器可能對應(yīng)有多個(gè)物理寄存器,在指令中指定特定的標(biāo)志位來區(qū)分相應(yīng)的寄存器。CP15CP15寄存器列表寄存器列表1 1寄存器編號(hào)寄存器編號(hào)基本作用基本作用在在MMUMMU中的作用中的作用0 0IDID編碼(只讀)編碼(只讀)IDID碼和碼和CacheCache類型類型1 1控制位控制位各種控制位各種控制位2 2存儲(chǔ)保護(hù)和控制存儲(chǔ)保護(hù)和控制地址轉(zhuǎn)換表基地址地址轉(zhuǎn)換表基地址3 3存儲(chǔ)保護(hù)和控制存儲(chǔ)保護(hù)和控制域訪問控制位域訪問控制位4 4存儲(chǔ)保護(hù)和控制存儲(chǔ)保護(hù)和控制保

8、留保留5 5存儲(chǔ)保護(hù)和控制存儲(chǔ)保護(hù)和控制內(nèi)存失效狀態(tài)內(nèi)存失效狀態(tài)6 6存儲(chǔ)保護(hù)和控制存儲(chǔ)保護(hù)和控制內(nèi)存失效地址內(nèi)存失效地址CP15CP15寄存器列表寄存器列表2 2寄存器編號(hào)寄存器編號(hào)基本作用基本作用在在MMUMMU中的作用中的作用7 7高速緩存和寫緩存高速緩存和寫緩存高速緩存和寫緩存控制高速緩存和寫緩存控制8 8存儲(chǔ)保護(hù)和控制存儲(chǔ)保護(hù)和控制TLBTLB控制控制9 9高速緩存和寫緩存高速緩存和寫緩存高速緩存鎖定高速緩存鎖定1010存儲(chǔ)保護(hù)和控制存儲(chǔ)保護(hù)和控制TLBTLB鎖定鎖定1111保留保留 1212保留保留 11CP15CP15寄存器列表寄存器列表3 3寄存器編號(hào)寄存器編號(hào)基本作用基本作用

9、在在MMUMMU中的作用中的作用1313進(jìn)程標(biāo)識(shí)符進(jìn)程標(biāo)識(shí)符進(jìn)程標(biāo)識(shí)符進(jìn)程標(biāo)識(shí)符1414保留保留 1515因不同設(shè)計(jì)而異因不同設(shè)計(jì)而異因不同設(shè)計(jì)而異因不同設(shè)計(jì)而異12訪問訪問CP15CP15寄存器的指令寄存器的指令 訪問訪問CP15寄存器的指令有如下兩條:寄存器的指令有如下兩條:1. MCRRegister - Coprocessor Register2. MRCCoprocessor Register - Register【注注】這兩條指令只能在系統(tǒng)模式下執(zhí)行;在用戶模式這兩條指令只能在系統(tǒng)模式下執(zhí)行;在用戶模式下執(zhí)行該指令將引起異常。下執(zhí)行該指令將引起異常。 指令語法指令語法 MCR co

10、nd p15, , , MCR cond p15, , , MCR2 p15, , , MCR2 p15, , , OP1為協(xié)處理器將執(zhí)行的操作的代碼。對于CP15來說,該值必須為0; Rd為源寄存器,其值將被傳送到協(xié)處理器中;該寄存器不能為PC; CRn是協(xié)處理器的目標(biāo)寄存器,可以是C0-15; CRm是附加的目標(biāo)寄存器或源操作數(shù)寄存器,用于區(qū)分同一編號(hào)的不同物理寄存器,當(dāng)指令中不需要附加信息時(shí)要將C0指定為CRm; OP2也提供附加信息,用于區(qū)分同一編號(hào)的不同物理寄存器,當(dāng)指令中不需要附加信息時(shí),可以省略或者將其置0。14MCR 訪問CP15示例MCRP15, 0, R4, C1, C0,

11、 0p 上述指令從ARM寄存器R4中將數(shù)據(jù)傳送到協(xié)處理器CP15的寄存器C1中。其中R4為ARM寄存器,存放源操作數(shù);C1和C0為協(xié)處理器寄存器,為目標(biāo)寄存器;操作碼1為0,操作碼附加信息也為0。15 指令語法指令語法 MRC cond p15, , , MRC cond p15, , , MRC2 p15, , , MRC2 p15, , , OP1為協(xié)處理器將執(zhí)行的操作的代碼。對于CP15來說,該值必須為0; Rd為目標(biāo)寄存器,指令處理的結(jié)果將存放在該寄存器中; CRn是協(xié)處理器寄存器,存放第一個(gè)源操作數(shù); CRm是附加的源操作數(shù)寄存器,用于區(qū)分同一編號(hào)的不同物理寄存器,當(dāng)指令中不需要附加

12、信息時(shí)要將C0指定為CRm; OP2也提供附加信息,用于區(qū)分同一編號(hào)的不同物理寄存器,當(dāng)指令中不需要附加信息時(shí),可以省略或者將其置0。16存儲(chǔ)管理單元存儲(chǔ)管理單元MMUMMU的作用的作用 實(shí)現(xiàn)虛擬地址空間到物理存儲(chǔ)空間的映射; 存儲(chǔ)器訪問權(quán)限的控制; 設(shè)置虛擬存儲(chǔ)空間的緩沖特性。頁表頁表是實(shí)現(xiàn)上述功能的一個(gè)重要手段,它實(shí)際上是位是實(shí)現(xiàn)上述功能的一個(gè)重要手段,它實(shí)際上是位于內(nèi)存中的一個(gè)對照表。于內(nèi)存中的一個(gè)對照表。17存儲(chǔ)器單元的段頁式管理存儲(chǔ)器單元的段頁式管理為了實(shí)現(xiàn)不同層次的管理,系統(tǒng)提供了基于段或頁的存儲(chǔ)器為了實(shí)現(xiàn)不同層次的管理,系統(tǒng)提供了基于段或頁的存儲(chǔ)器訪問方式訪問方式1.段(sect

13、ion):由1MB 的存儲(chǔ)器塊構(gòu)成2.大頁(large page):由64KB 的存儲(chǔ)器塊構(gòu)成3.小頁(small page):由4KB 的存儲(chǔ)器塊構(gòu)成4.微頁(tiny page):由1KB 的存儲(chǔ)器塊構(gòu)成18用于存儲(chǔ)管理的頁表用于存儲(chǔ)管理的頁表地址變換條目:頁表的每一行對應(yīng)與虛擬地址空間的一個(gè)頁,該行地址變換條目:頁表的每一行對應(yīng)與虛擬地址空間的一個(gè)頁,該行同時(shí)保含了該虛擬內(nèi)存頁對應(yīng)的物理內(nèi)存頁的地址、該頁的訪問權(quán)同時(shí)保含了該虛擬內(nèi)存頁對應(yīng)的物理內(nèi)存頁的地址、該頁的訪問權(quán)限以及緩沖特性等。我們將頁表中的一行稱為地址變換條目。限以及緩沖特性等。我們將頁表中的一行稱為地址變換條目。頁表存放在內(nèi)

14、存中,系統(tǒng)通常有一個(gè)寄存器來保存頁表的基地址。頁表存放在內(nèi)存中,系統(tǒng)通常有一個(gè)寄存器來保存頁表的基地址。ARM系統(tǒng)中使用的就是系統(tǒng)中使用的就是CP15的寄存器的寄存器C2??毂恚簭奶摂M地址到物理地址的轉(zhuǎn)換實(shí)際上就是查詢頁表的過程??毂恚簭奶摂M地址到物理地址的轉(zhuǎn)換實(shí)際上就是查詢頁表的過程。由于程序在執(zhí)行過程中具有局部性,即在一段時(shí)間內(nèi)只是局限在少由于程序在執(zhí)行過程中具有局部性,即在一段時(shí)間內(nèi)只是局限在少數(shù)幾個(gè)單元,為了加快頁表的查詢速度,在系統(tǒng)中通常使用一個(gè)容數(shù)幾個(gè)單元,為了加快頁表的查詢速度,在系統(tǒng)中通常使用一個(gè)容量更小、速度更快的存儲(chǔ)器件來保存當(dāng)前需要訪問的地址變換條目量更小、速度更快的存儲(chǔ)

15、器件來保存當(dāng)前需要訪問的地址變換條目,這個(gè)容量小的頁表又稱作快表(,這個(gè)容量小的頁表又稱作快表(TLB)。)。19快表的使用快表的使用 更新:當(dāng)更新:當(dāng)CPU需要訪問內(nèi)存時(shí),首先在需要訪問內(nèi)存時(shí),首先在TLB中查找需要中查找需要的地址變換條目。若不存在則在內(nèi)存頁表中查詢,并把的地址變換條目。若不存在則在內(nèi)存頁表中查詢,并把查詢的結(jié)果添加到查詢的結(jié)果添加到TLB中。中。 清除:當(dāng)內(nèi)存中頁表的內(nèi)容改變或者使用新的頁表時(shí),清除:當(dāng)內(nèi)存中頁表的內(nèi)容改變或者使用新的頁表時(shí),TLB中的內(nèi)容需要清空。中的內(nèi)容需要清空。CP15的寄存器的寄存器8用于完成該功用于完成該功能。能。 鎖定:可以將一個(gè)地址變換條目鎖

16、定在鎖定:可以將一個(gè)地址變換條目鎖定在TLB中,以加快中,以加快訪問速度,訪問速度,CP15的寄存器的寄存器10用于完成該功能。用于完成該功能。20域(域(domaindomain)管理)管理域是段、大頁和小頁的集合。ARM 結(jié)構(gòu)支持16 個(gè)域。對域的訪問由域訪問控制寄存器( CP15的寄存器3 )的兩個(gè)位字段控制。因?yàn)槊總€(gè)字段對訪問對應(yīng)的域的使能非常迅速,所以整個(gè)存儲(chǔ)器區(qū)間能很快地交換進(jìn)出虛擬存儲(chǔ)器。這里支持2 種域訪問方式1. 客戶:域的用戶(執(zhí)行程序,訪問數(shù)據(jù)),被形成這個(gè)域的節(jié)或頁來監(jiān)督訪問權(quán)限。2. 管理者:控制域的行為(域中的當(dāng)前段和頁,對域的訪問),不被形成這個(gè)域的段或頁來監(jiān)督訪

17、問權(quán)限。一個(gè)程序可以是一些域的客戶,也是另外一些域的管理者,同時(shí)沒有對其它域的訪問權(quán)限。這允許對程序訪問不同存儲(chǔ)器資源的非常靈活的存儲(chǔ)器保護(hù)。21內(nèi)存訪問失效管理內(nèi)存訪問失效管理 當(dāng)存儲(chǔ)器訪問失敗時(shí),MMU單元提供了相應(yīng)的機(jī)制用于處理這種情況。CP15的寄存器5和寄存器6用于完成該功能。22寄存器寄存器1 1的的MMU MMU 控制位控制位 M(bit0) M(bit0) 使能使能MMUMMU0 = 0 = 禁止禁止MMUMMU1 = 1 = 允許允許MMUMMU 在沒有在沒有MMU MMU 和保護(hù)單元的系統(tǒng)上,這個(gè)位應(yīng)該讀出為和保護(hù)單元的系統(tǒng)上,這個(gè)位應(yīng)該讀出為0 0,并忽略寫。并忽略寫。

18、A(bit1) A(bit1) 使能對齊錯(cuò)檢查使能對齊錯(cuò)檢查0 = 0 = 禁止禁止1 = 1 = 允許允許.RRRRV VI IZ ZF FR RS SB BL LD DP PW WC CA AM M.141413131212111110109 98 87 76 65 54 43 32 21 10 023禁止和使能禁止和使能MMUMMU 下面指令使能MMUMRCP15, 0, R0, C1, 0, 0ORR0, #1MCRP15, 0, R0, C1, 0, 0 下面指令禁止MMUMRCP15, 0, R0, C1, 0, 0BICR0, #1MCRP15, 0, R0, C1, 0, 02

19、4地址變換過程地址變換過程虛擬存儲(chǔ)空間到物理存儲(chǔ)空間的映射是以內(nèi)存塊為單位進(jìn)行的。在MMU中采用兩級(jí)頁表實(shí)現(xiàn)上述地址映射:1. 一級(jí)頁表中包含有以段為單位的地址變換條目以及指向二級(jí)頁表的指針。一級(jí)頁表實(shí)現(xiàn)的地址映射粒度較大;2. 二級(jí)頁表中包含以大頁和小頁為單位的地址變換條目。其中一種類型的二級(jí)表還包含有極小頁為單位的地址變換條目。25基于一級(jí)頁表的地址變換基于一級(jí)頁表的地址變換26一級(jí)頁表描述符可能的格式一級(jí)頁表描述符可能的格式如果bits1:0=0b10時(shí),該頁表項(xiàng)為段描述符(Section Descriptor),段描述符定義了對應(yīng)的1MB的虛擬存儲(chǔ)空間的地址映射關(guān)系。 如果bits1:

20、0=0b01時(shí),該頁表項(xiàng)包含了粗二級(jí)頁表的物理地址。該粗二級(jí)頁表定義了對應(yīng)的1MB虛擬存儲(chǔ)空間的地址映射關(guān)系。它可以實(shí)現(xiàn)以大頁和小頁為單位的地址映射。 如果bits1:0=0b11時(shí),該頁表項(xiàng)包含了細(xì)二級(jí)頁表的物理地址。該細(xì)二級(jí)頁表定義了對應(yīng)的1MB虛擬存儲(chǔ)空間的地址映射關(guān)系。它可以實(shí)現(xiàn)以大頁、小頁和極小頁為單位的地址映射。 如果bits1:0=0b00時(shí),說明此頁表項(xiàng)是一個(gè)錯(cuò)誤頁表項(xiàng)。它將產(chǎn)生一個(gè)存儲(chǔ)頁錯(cuò)誤。錯(cuò)誤條件會(huì)導(dǎo)致預(yù)取指令中止或數(shù)據(jù)中止,這取決于具體的存儲(chǔ)器訪問類型。27基于段地址的映射示意圖基于段地址的映射示意圖28 處理器主頻較高,通常為幾十兆甚至幾百兆,而一般存儲(chǔ)器(DRAM)

21、的存儲(chǔ)周期為100200ns。存儲(chǔ)器的速度嚴(yán)重制約著系統(tǒng)的性能。 高速緩沖存儲(chǔ)器(cache)是一個(gè)硬件部件,對我們來說是透明的。Cache與主存儲(chǔ)器間以塊(cache line)為單位進(jìn)行數(shù)據(jù)交換。 Cache的存取速度遠(yuǎn)遠(yuǎn)大于主存儲(chǔ)器的速度,存儲(chǔ)器訪問的時(shí)間局部性決定了采用Cache后,系統(tǒng)的整體性能可以得到大大提高。29CacheCache的工作原理的工作原理塊 號(hào) B 塊 內(nèi) 地 址主 存 cache 地 址 變 換塊 號(hào) B 塊 內(nèi) 地 址cache 替 換策 略Cache主 存 儲(chǔ) 器命中未 命 中替 換 塊裝 入 塊已滿未滿虛 擬 地 址30CacheCache的工作原理的工作原

22、理 在Cache存儲(chǔ)系統(tǒng)中,把Cache和主存劃分為相同大小的塊。主存地址可以使用塊號(hào)(B)和塊內(nèi)地址(W)兩部分組成。同樣Cache的地址也可以使用塊號(hào)(B)和塊內(nèi)地址(W)兩部分組成。 命中率:當(dāng)CPU訪問存儲(chǔ)器時(shí),通過存儲(chǔ)器地址變換部件把地址變換成cache的塊號(hào)和塊內(nèi)地址,如果變換成功(稱為cache命中),就用得到的cache地址訪問cache,從cache中取數(shù);如果變換失敗,則產(chǎn)生cache失效信息,并用主存儲(chǔ)器的地址訪問主存儲(chǔ)器,同時(shí)將包含被訪問字在內(nèi)的一整塊都從主存儲(chǔ)器讀出來,裝入到cache中,但如果這時(shí)cache已滿,需要采用適當(dāng)?shù)奶鎿Q算法來更新cache。31Cache

23、Cache的地址映象和變換方法的地址映象和變換方法 地址映象指把主存地址空間映象到cache地址空間,具體說就是把存放在主存中的程序按照某種規(guī)則裝入到cache中,并建立主存地址到cache地址之間的對應(yīng)關(guān)系。 地址變換是指當(dāng)程序已經(jīng)裝入到cache中后(形成地址映象),在實(shí)際運(yùn)行過程中,把主存地址如何變換成cache地址。 地址映象和變換是密切相關(guān)的,算法需要統(tǒng)一。但所有方法都將主存和cache劃分為同樣大小的存儲(chǔ)單元(稱為塊),在進(jìn)行變換時(shí)都是以塊為單位。 地址映象和變換方法包括:全相聯(lián)映象、直接映象、組相聯(lián)映象三種方法。32地址映象和變換方法全相聯(lián)映象方式地址映象和變換方法全相聯(lián)映象方式

24、 主存中任意一塊可以映射到cache中的任意一塊的位置上。 如果cache的塊容量為C,主存的塊容量為M,則兩則之間的映象關(guān)系有C*M中,如果采用目錄表來存放這些映象關(guān)系,目錄表的容量為C。缺點(diǎn):電路設(shè)計(jì)難以實(shí)現(xiàn)缺點(diǎn):電路設(shè)計(jì)難以實(shí)現(xiàn)33地址映象和變換方法直接映象方式地址映象和變換方法直接映象方式 這是最簡單也是最直接的方法。主存中一塊只能映象到cache中的一個(gè)特定的塊中。 假設(shè)主存的塊號(hào)為B,cache的塊號(hào)為b,則他們之間的映象關(guān)系可以使用下面的公式表示:b B mode Cb其中Cb為cache的塊容量34地址映象和變換方法組相聯(lián)映象方式地址映象和變換方法組相聯(lián)映象方式 在這種方式下,

25、把主存和cache按照同樣大小劃分成組,每個(gè)組都由相同的塊數(shù)組成。這樣,主存的組數(shù)要比cache的組數(shù)多; 主存的組與cache的組之間采用直接映象的方式; 在兩個(gè)對應(yīng)的組之間采用全相聯(lián)映象方式。35CacheCache的分類的分類 統(tǒng)一/獨(dú)立的數(shù)據(jù)和指令cache適應(yīng)獨(dú)立的數(shù)據(jù)和指令cache,可以在同一個(gè)時(shí)鐘周期中讀取指令和數(shù)據(jù),而不需要雙端口的cache。但這時(shí)需要保證指令和數(shù)據(jù)的一致性。 寫回和寫通cache寫回cache指執(zhí)行寫操作時(shí),被寫的數(shù)據(jù)只寫入cache,僅當(dāng)cache需要被替換時(shí)才將數(shù)據(jù)寫入到實(shí)際的存儲(chǔ)器中;寫通則是在指執(zhí)行寫操作時(shí),同時(shí)向cache和存儲(chǔ)器執(zhí)行寫操作,從而

26、保證數(shù)據(jù)的一致性。36CacheCache替換算法替換算法 隨機(jī)替換算法和輪轉(zhuǎn)法 隨機(jī)替換算法通過一個(gè)隨機(jī)數(shù)發(fā)生器產(chǎn)生隨機(jī)數(shù),用新塊將編號(hào)為該隨機(jī)數(shù)的塊進(jìn)行替換。 輪轉(zhuǎn)法維護(hù)一個(gè)邏輯的計(jì)數(shù)器,利用該計(jì)數(shù)器依次選擇將要被替換出去的cache塊。37CacheCache的編程接口的編程接口 與cache和寫緩沖區(qū)相關(guān)的寄存器包括CP15中的寄存器C7、寄存器C9以及寄存器C1中的某些位。 MCR P15, 0, , , , MCR P15, 0, , , , MCR P15, 0, , , c0, MRC P15, 0, , , , MRC P15, 0, , , , MRC P15, 0, ,

27、, c0, 38 快速上下文切換技術(shù)通過修改系統(tǒng)中不同進(jìn)程的虛擬地址,避免在進(jìn)行進(jìn)程間切換時(shí)造成的虛擬地址到物理地址的重映射,從而提高系統(tǒng)的性能。39快速上下文切換技術(shù)原理(快速上下文切換技術(shù)原理(FCSEFCSE)如果兩個(gè)進(jìn)程占用的虛擬地址空間有重疊,系統(tǒng)在這兩個(gè)進(jìn)程之間如果兩個(gè)進(jìn)程占用的虛擬地址空間有重疊,系統(tǒng)在這兩個(gè)進(jìn)程之間進(jìn)行切換時(shí),必須進(jìn)行虛擬地址到物理地址的重映射,包括重建進(jìn)行切換時(shí),必須進(jìn)行虛擬地址到物理地址的重映射,包括重建TLB ,清除,清除cache,整個(gè)工作需要帶來巨大的系統(tǒng)開銷。而快速上,整個(gè)工作需要帶來巨大的系統(tǒng)開銷。而快速上下文切換技術(shù)的引入避免了這種開銷。下文切換

28、技術(shù)的引入避免了這種開銷。FCSE位于位于CPU和和MMU之間,他的責(zé)任就是將不同進(jìn)程使用的相同之間,他的責(zé)任就是將不同進(jìn)程使用的相同的虛擬地址映射為不同的虛擬空間,使得在上下文切換時(shí)無需重建的虛擬地址映射為不同的虛擬空間,使得在上下文切換時(shí)無需重建TLB等。等。如果兩個(gè)進(jìn)程使用了同樣的虛擬地址空間,則對如果兩個(gè)進(jìn)程使用了同樣的虛擬地址空間,則對CPU而言,而言,兩個(gè)進(jìn)程使用了同樣的虛擬地址空間,兩個(gè)進(jìn)程使用了同樣的虛擬地址空間,F(xiàn)CSE機(jī)構(gòu)對各個(gè)進(jìn)程的虛機(jī)構(gòu)對各個(gè)進(jìn)程的虛擬地址進(jìn)行變換,這樣系統(tǒng)中除了擬地址進(jìn)行變換,這樣系統(tǒng)中除了CPU之外的部分看到的是經(jīng)過上之外的部分看到的是經(jīng)過上下文切換

29、機(jī)構(gòu)變換后的虛擬地址。下文切換機(jī)構(gòu)變換后的虛擬地址。40 在ARM系統(tǒng)中,4G的虛擬地址空間被分成128個(gè)進(jìn)程空間塊,每個(gè)空間塊中可以包含一個(gè)進(jìn)程,該進(jìn)程可以使用的虛擬地址空間為00 x01ffffff。 編號(hào)為I的進(jìn)程空間塊中的進(jìn)程實(shí)際使用的虛擬地址空間為:(I*0 x02000000)( I*0 x02000000 +0 x01ffffff)快速上下文切換技術(shù)原理(快速上下文切換技術(shù)原理(FCSEFCSE)助記符說明操作條件碼位置STR Rd, addressing 存儲(chǔ)字?jǐn)?shù)據(jù)addressingRd,addressing索引STRcondSTRB Rd,addressing 存儲(chǔ)字節(jié)數(shù)據(jù)

30、addressingRd,addressing索引STRcondBSTRT Rd,addressing 以用戶模式存儲(chǔ)字?jǐn)?shù)據(jù)addressingRd, addressing索引STRcondTSTRBT Rd,addressing 以用戶模式存儲(chǔ)字節(jié)數(shù)據(jù)addressingRd,addressing索引STRcondBTSTRH Rd,addressing 存儲(chǔ)半字?jǐn)?shù)據(jù)addressing Rd,addressing索引STRcondHARM存儲(chǔ)器訪問指令存儲(chǔ)器訪問指令單寄存器存儲(chǔ)單寄存器存儲(chǔ) LDR/STR LDR/STR指令用于對內(nèi)存變量的訪問、內(nèi)存緩沖區(qū)數(shù)據(jù)的訪問、查表、指令用于對內(nèi)存變

31、量的訪問、內(nèi)存緩沖區(qū)數(shù)據(jù)的訪問、查表、外圍部件的控制操作等。若使用外圍部件的控制操作等。若使用LDRLDR指令加載數(shù)據(jù)到指令加載數(shù)據(jù)到PCPC寄存器,則實(shí)現(xiàn)程寄存器,則實(shí)現(xiàn)程序跳轉(zhuǎn)功能,這樣也就實(shí)現(xiàn)了程序散轉(zhuǎn)。序跳轉(zhuǎn)功能,這樣也就實(shí)現(xiàn)了程序散轉(zhuǎn)。 所有單寄存器加載所有單寄存器加載/ /存儲(chǔ)指令可分為存儲(chǔ)指令可分為“字和無符號(hào)字節(jié)加載存儲(chǔ)指令字和無符號(hào)字節(jié)加載存儲(chǔ)指令”和和“半字和有符號(hào)字節(jié)加載存儲(chǔ)指令。半字和有符號(hào)字節(jié)加載存儲(chǔ)指令。LDRLDR和和STRSTR字和無符號(hào)字節(jié)加載字和無符號(hào)字節(jié)加載/ /存儲(chǔ)指令存儲(chǔ)指令 LDRLDR指令用于從內(nèi)存中讀取單一字或字節(jié)數(shù)據(jù)指令用于從內(nèi)存中讀取單一字或

32、字節(jié)數(shù)據(jù)存入寄存器中,存入寄存器中,STRSTR指令用于將寄存器中的單一字指令用于將寄存器中的單一字或字節(jié)數(shù)據(jù)保存到內(nèi)存。指令格式如下:或字節(jié)數(shù)據(jù)保存到內(nèi)存。指令格式如下:ARM存儲(chǔ)器訪問指令存儲(chǔ)器訪問指令單寄存器存儲(chǔ)單寄存器存儲(chǔ) LDRcondTRd, ;將指定地址上的字?jǐn)?shù)據(jù)讀入將指定地址上的字?jǐn)?shù)據(jù)讀入Rd STRcondTRd, ;將將Rd中的字?jǐn)?shù)據(jù)存入指定地址中的字?jǐn)?shù)據(jù)存入指定地址 LDRcondBTRd, ;將指定地址上的字節(jié)數(shù)據(jù)讀入將指定地址上的字節(jié)數(shù)據(jù)讀入Rd STRcondBTRd, ;將將Rd中的字節(jié)數(shù)據(jù)存入指定地址中的字節(jié)數(shù)據(jù)存入指定地址 其中,其中,T T為可選后綴。若指令

33、有為可選后綴。若指令有T T,那么即使處,那么即使處理器是在特權(quán)模式下,存儲(chǔ)系統(tǒng)也將訪問看成是在理器是在特權(quán)模式下,存儲(chǔ)系統(tǒng)也將訪問看成是在用戶模式下進(jìn)行的。用戶模式下進(jìn)行的。T T在用戶模式下無效,不能與在用戶模式下無效,不能與前索引偏移一起使用前索引偏移一起使用T T。 ARM存儲(chǔ)器訪問指令存儲(chǔ)器訪問指令單寄存器存儲(chǔ)單寄存器存儲(chǔ)LDRLDR和和STRSTR字和無符號(hào)字節(jié)加載字和無符號(hào)字節(jié)加載/ /存儲(chǔ)指令編碼存儲(chǔ)指令編碼指令執(zhí)行的條件碼指令執(zhí)行的條件碼I I為為0 0時(shí),偏移量為時(shí),偏移量為1212位立即數(shù),為位立即數(shù),為1 1時(shí),時(shí),偏移量為寄存器移偏移量為寄存器移位位P P表示前表示前

34、/ /后變址后變址U U表示加表示加/ /減減B B為為1 1表示字節(jié)訪問,表示字節(jié)訪問,為為0 0表示字訪問表示字訪問WW表示回寫表示回寫為指令的尋址方式為指令的尋址方式RdRd為源為源/ /目標(biāo)寄存器目標(biāo)寄存器RnRn為基址寄存器為基址寄存器L L用于區(qū)別加載(用于區(qū)別加載(L L為為1 1)或存儲(chǔ)(或存儲(chǔ)(L L為為0 0)ARM存儲(chǔ)器訪問指令存儲(chǔ)器訪問指令單寄存器存儲(chǔ)單寄存器存儲(chǔ)LDRLDR和和STRSTR字和無符號(hào)字節(jié)加載字和無符號(hào)字節(jié)加載/ /存儲(chǔ)指令存儲(chǔ)指令 LDR/STRLDR/STR指令尋址非常靈活,它由兩部分組成,其中一部分為一指令尋址非常靈活,它由兩部分組成,其中一部分為

35、一個(gè)基址寄存器,可以為任一個(gè)通用寄存器;另一部分為一個(gè)地址偏移個(gè)基址寄存器,可以為任一個(gè)通用寄存器;另一部分為一個(gè)地址偏移量。地址偏移量有以下量。地址偏移量有以下3 3種格式:種格式: 立即數(shù)立即數(shù)。立即數(shù)可以是一個(gè)無符號(hào)的數(shù)值。這個(gè)數(shù)據(jù)可以加到基址。立即數(shù)可以是一個(gè)無符號(hào)的數(shù)值。這個(gè)數(shù)據(jù)可以加到基址寄存器,也可以從基址寄存器中減去這個(gè)數(shù)值。寄存器,也可以從基址寄存器中減去這個(gè)數(shù)值。 如:如:LDR R1,R0,#0 x12 ;R1-R0+0 x12寄存器寄存器。寄存器中的數(shù)值可以加到基址寄存器,也可以從基址寄存。寄存器中的數(shù)值可以加到基址寄存器,也可以從基址寄存器中減去這個(gè)數(shù)值。器中減去這個(gè)

36、數(shù)值。 如:如:LDR R1,R0,R2 ; R1-R0+R2 LDR R1,R0,-R2 ; R1-R0-R2寄存器及移位常數(shù)寄存器及移位常數(shù)。寄存器移位后的值可以加到基址寄存器,也可。寄存器移位后的值可以加到基址寄存器,也可以從基址寄存器中減去這個(gè)數(shù)值。以從基址寄存器中減去這個(gè)數(shù)值。 如:如:LDR R1,R0,R2,LSL #2 ;R1-R0+R2*4 ARM存儲(chǔ)器訪問指令存儲(chǔ)器訪問指令單寄存器存儲(chǔ)單寄存器存儲(chǔ) 從尋址方式的地址計(jì)算方法分,加載從尋址方式的地址計(jì)算方法分,加載/ /存儲(chǔ)指令有以下存儲(chǔ)指令有以下4 4種格式:種格式: 零偏移零偏移。如:如:LDR Rd,Rn 前索引偏移前索

37、引偏移。如:如:LDR Rd,Rn,#0 x04!程序相對偏移程序相對偏移。如:如:LDR Rd,labe1 后索引偏移。后索引偏移。如:如:LDR Rd,Rn,#-0 x04注意注意:必須保證字?jǐn)?shù)據(jù)操作的地址是:必須保證字?jǐn)?shù)據(jù)操作的地址是3232位對齊的。位對齊的。LDRLDR和和STRSTR字和無符號(hào)字節(jié)加載字和無符號(hào)字節(jié)加載/ /存儲(chǔ)指令存儲(chǔ)指令LDRLDR和和STRSTR半字和有符號(hào)字節(jié)加載半字和有符號(hào)字節(jié)加載/ /存儲(chǔ)指令存儲(chǔ)指令 這類這類LDR/STRLDR/STR指令可加載有符號(hào)半字或字節(jié),可加載指令可加載有符號(hào)半字或字節(jié),可加載/ /存存儲(chǔ)無符號(hào)半字。偏移量格式、尋址方式與加載

38、儲(chǔ)無符號(hào)半字。偏移量格式、尋址方式與加載/ /存儲(chǔ)字和無符存儲(chǔ)字和無符號(hào)字節(jié)指令相同。號(hào)字節(jié)指令相同。 ARM存儲(chǔ)器訪問指令存儲(chǔ)器訪問指令單寄存器存儲(chǔ)單寄存器存儲(chǔ) LDRcondSB Rd, ;將指定地址上的有符號(hào)字節(jié)讀入將指定地址上的有符號(hào)字節(jié)讀入Rd LDRcondSH Rd, ;將指定地址上的有符號(hào)半字讀入將指定地址上的有符號(hào)半字讀入Rd LDRcondH Rd, ;將指定地址上的半字?jǐn)?shù)據(jù)讀入將指定地址上的半字?jǐn)?shù)據(jù)讀入Rd STRcondH Rd, ;將將Rd中的半字?jǐn)?shù)據(jù)存入指定地址中的半字?jǐn)?shù)據(jù)存入指定地址注意注意:1. 1.有符號(hào)位半字有符號(hào)位半字/ /字節(jié)加載是指用符號(hào)位加載擴(kuò)展到字

39、節(jié)加載是指用符號(hào)位加載擴(kuò)展到3232位,無位,無符號(hào)半字加載是指用零擴(kuò)展到符號(hào)半字加載是指用零擴(kuò)展到3232位;位;2.2.半字讀寫的指定地址必須為偶數(shù),否則將產(chǎn)生不可靠的結(jié)半字讀寫的指定地址必須為偶數(shù),否則將產(chǎn)生不可靠的結(jié)果;果;ARM存儲(chǔ)器訪問指令存儲(chǔ)器訪問指令單寄存器存儲(chǔ)單寄存器存儲(chǔ)LDRLDR和和STRSTR半字和有符號(hào)字節(jié)加載半字和有符號(hào)字節(jié)加載/ /存儲(chǔ)指令編碼存儲(chǔ)指令編碼指令執(zhí)行的條件碼指令執(zhí)行的條件碼I I為為0 0時(shí),偏移量為時(shí),偏移量為1212位立即數(shù),為位立即數(shù),為1 1時(shí),時(shí),偏移量為寄存器移偏移量為寄存器移位位P P表示前表示前/ /后變址后變址U U表示加表示加/

40、/減減WW表示回寫表示回寫為指令的尋址方式為指令的尋址方式RdRd為源為源/ /目標(biāo)寄存器目標(biāo)寄存器RnRn為基址寄存器為基址寄存器L L用于區(qū)別加載(用于區(qū)別加載(L L為為1 1)或存儲(chǔ)(或存儲(chǔ)(L L為為0 0)S S為為1 1表示有符號(hào)訪問,表示有符號(hào)訪問,為為0 0表示無符號(hào)訪問表示無符號(hào)訪問H H為為1 1表示半字訪問,為表示半字訪問,為0 0表示字節(jié)訪問表示字節(jié)訪問LDRLDR和和STRSTR指令應(yīng)用示例:指令應(yīng)用示例:1. 1.加載加載/ /存儲(chǔ)字和無符號(hào)字節(jié)指令存儲(chǔ)字和無符號(hào)字節(jié)指令LDRR2,R5;將將R5指向地址的字?jǐn)?shù)據(jù)存入指向地址的字?jǐn)?shù)據(jù)存入R2STRR1,R0,#0

41、x04;將將R1的數(shù)據(jù)存儲(chǔ)到的數(shù)據(jù)存儲(chǔ)到R0+0 x04地址地址LDRBR3,R2,#-1 ;將將R2指向地址的字節(jié)數(shù)據(jù)存入指向地址的字節(jié)數(shù)據(jù)存入R3,R2R21STRBR0,R3,-R8 ASR 2 ;R0-R3-R8/4,存儲(chǔ)存儲(chǔ)R0的最低有效字節(jié)的最低有效字節(jié)2.2.加載加載/ /存儲(chǔ)半字和有符號(hào)字節(jié)指令存儲(chǔ)半字和有符號(hào)字節(jié)指令LDRSB R1,R0,R3;將將R0+R3地址上的字節(jié)數(shù)據(jù)存入地址上的字節(jié)數(shù)據(jù)存入R1,;高高24位用符號(hào)擴(kuò)展位用符號(hào)擴(kuò)展LDRH R6,R2,#2;將將R2指向地址的半字?jǐn)?shù)據(jù)存入指向地址的半字?jǐn)?shù)據(jù)存入R6,高,高16位用位用0擴(kuò)展擴(kuò)展;讀出后,讀出后,R2=R

42、2+2STRH R1,R0,#2!;將將R1的半字?jǐn)?shù)據(jù)保存到的半字?jǐn)?shù)據(jù)保存到R0+2地址,地址,;只修改低只修改低2字節(jié)數(shù)據(jù),然后字節(jié)數(shù)據(jù),然后R0=R0+2ARM存儲(chǔ)器訪問指令存儲(chǔ)器訪問指令單寄存器存儲(chǔ)單寄存器存儲(chǔ)n(3 3)LDRLDR和和STR -STR -雙字:雙字:加載/存儲(chǔ)兩個(gè)相鄰的寄存器,64位雙字。其句法有4種:nOp cond D Rd,Rn 零偏移nOp cond D Rd,Rn,offset ! 前索引偏移nOp cond D Rd,label 程序相對偏移nOp cond D T Rd,Rn,offset 后索引偏移 ARM存儲(chǔ)器訪問指令存儲(chǔ)器訪問指令單寄存器存儲(chǔ)單寄存

43、器存儲(chǔ) 其中:其中: Rd Rd 加載加載/ /存儲(chǔ)寄存器中的一個(gè),另一個(gè)是存儲(chǔ)寄存器中的一個(gè),另一個(gè)是R R(d+1d+1)。)。RdRd必須是偶數(shù)寄存器,且不是必須是偶數(shù)寄存器,且不是R14R14。 Rn Rn 除非指令為零偏移,或不帶寫回的前索引,否則,除非指令為零偏移,或不帶寫回的前索引,否則,RnRn不允許與不允許與RdRd和和R R(d+1d+1)相同。)相同。label labellabel label必須是在當(dāng)前指令的上下必須是在當(dāng)前指令的上下252252字節(jié)范圍內(nèi)。字節(jié)范圍內(nèi)。例如:例如:LDRD R6,R11 ;R6R11,R7R11+4STRD R4,R9,#24 ;R4

44、R9+24,R5R9+28ARM存儲(chǔ)器訪問指令存儲(chǔ)器訪問指令單寄存器存儲(chǔ)單寄存器存儲(chǔ)助記符說明操作條件碼位置LDMmode Rn!,reglist 多寄存器加載reglistRn.,Rn回寫等LDMcondmodeSTMmode Rn!,reglist 多寄存器存儲(chǔ)Rn.reglist,Rn回寫等STMcondmodeARM存儲(chǔ)器訪問指令存儲(chǔ)器訪問指令多寄存器存取多寄存器存取 多寄存器加載多寄存器加載/ /存儲(chǔ)指令可以實(shí)現(xiàn)在一組寄存器和一塊連續(xù)的內(nèi)存單元存儲(chǔ)指令可以實(shí)現(xiàn)在一組寄存器和一塊連續(xù)的內(nèi)存單元之間傳輸數(shù)據(jù)。之間傳輸數(shù)據(jù)。LDMLDM為加載多個(gè)寄存器;為加載多個(gè)寄存器;STMSTM為存儲(chǔ)

45、多個(gè)寄存器。允許一為存儲(chǔ)多個(gè)寄存器。允許一條指令傳送條指令傳送1616個(gè)寄存器的任何子集或所有寄存器。它們主要用于現(xiàn)場保護(hù)、個(gè)寄存器的任何子集或所有寄存器。它們主要用于現(xiàn)場保護(hù)、數(shù)據(jù)復(fù)制、常數(shù)傳遞等。數(shù)據(jù)復(fù)制、常數(shù)傳遞等。ARM存儲(chǔ)器訪問指令存儲(chǔ)器訪問指令多寄存器存取多寄存器存取 多寄存器加載多寄存器加載/ /存儲(chǔ)指令格式如下:存儲(chǔ)指令格式如下: LDMcond Rn!,reglist STMcond Rn!,reglistcondcond:指令執(zhí)行的條件;:指令執(zhí)行的條件;模式模式:控制地址的增長方式,一共有:控制地址的增長方式,一共有8 8種模式;種模式;! !:表示在操作結(jié)束后,將最后的

46、地址寫回:表示在操作結(jié)束后,將最后的地址寫回RnRn中;中;reglistreglist :表示寄存器列表,可以包含多個(gè)寄存器,它們使用:表示寄存器列表,可以包含多個(gè)寄存器,它們使用“, ,”隔開,如隔開,如R1,R2,R6-R9R1,R2,R6-R9,寄存器由小到大排列;,寄存器由小到大排列;:可選后綴。允許在用戶模式或系統(tǒng)模式下使用。它有以下兩個(gè)功能:可選后綴。允許在用戶模式或系統(tǒng)模式下使用。它有以下兩個(gè)功能:1 1)若)若opop是是LDMLDM且寄存器列表包含且寄存器列表包含R15R15時(shí),那么除了正常的多寄存器傳送外,時(shí),那么除了正常的多寄存器傳送外,還將還將SPSRSPSR也復(fù)制到

47、也復(fù)制到CPSRCPSR中。這用于異常處理返回,僅在異常模式下使用。中。這用于異常處理返回,僅在異常模式下使用。2 2)數(shù)據(jù)傳入或傳出的是用戶模式下的寄存器,而不是當(dāng)前模式的寄存器。)數(shù)據(jù)傳入或傳出的是用戶模式下的寄存器,而不是當(dāng)前模式的寄存器。ARM存儲(chǔ)器訪問指令存儲(chǔ)器訪問指令多寄存器存取多寄存器存取LDMLDM和和STMSTM多寄存器加載多寄存器加載/ /存儲(chǔ)指令編碼存儲(chǔ)指令編碼指令執(zhí)行的條件碼指令執(zhí)行的條件碼S S 對 應(yīng) 于 指 令 中對 應(yīng) 于 指 令 中的的”符號(hào)符號(hào)P P表示前表示前/ /后變址后變址U U表示加表示加/ /減減WW表示回寫表示回寫寄存器列表寄存器列表RnRn為基

48、址寄存器為基址寄存器L L用于區(qū)別加載(用于區(qū)別加載(L L為為1 1)或存儲(chǔ)(或存儲(chǔ)(L L為為0 0)ARM存儲(chǔ)器訪問指令存儲(chǔ)器訪問指令多寄存器存取多寄存器存取 多寄存器加載多寄存器加載/ /存儲(chǔ)指令的存儲(chǔ)指令的8 8種模式如下表所示,右邊四種為堆棧種模式如下表所示,右邊四種為堆棧操作、左邊四種為數(shù)據(jù)傳送操作。操作、左邊四種為數(shù)據(jù)傳送操作。模式說明模式說明IA每次傳送后地址加4FD滿遞減堆棧IB每次傳送前地址加4ED空遞減堆棧DA每次傳送后地址減4FA滿遞增堆棧DB每次傳送前地址減4EA空遞增堆棧數(shù)據(jù)塊傳送操作堆棧操作 進(jìn)行數(shù)據(jù)復(fù)制時(shí),先設(shè)置好源數(shù)據(jù)指針和目標(biāo)指針,然后使用塊進(jìn)行數(shù)據(jù)復(fù)制時(shí)

49、,先設(shè)置好源數(shù)據(jù)指針和目標(biāo)指針,然后使用塊拷貝尋址指令拷貝尋址指令LDMIA/STMIALDMIA/STMIA、LDMIB/STMIBLDMIB/STMIB、LDMDA/STMDALDMDA/STMDA、LDMDB/STMDBLDMDB/STMDB進(jìn)行讀取和存儲(chǔ)進(jìn)行讀取和存儲(chǔ) 。 進(jìn)行堆棧操作操作時(shí),要先設(shè)置堆棧指針(進(jìn)行堆棧操作操作時(shí),要先設(shè)置堆棧指針(SPSP),然后使用堆棧),然后使用堆棧尋址指令尋址指令STMFD/LDMFD STMFD/LDMFD 、STMED/LDMEDSTMED/LDMED、STMFA/LDMFASTMFA/LDMFA和和STMEA/LDMEASTMEA/LDMEA實(shí)現(xiàn)堆棧操作。實(shí)現(xiàn)堆棧操作。ARM存儲(chǔ)器訪問指令存儲(chǔ)器訪問指令多寄存器存取多寄存器存取數(shù)據(jù)塊傳送指令數(shù)據(jù)塊傳送指令操作操作過程如右圖所示,其過程如右圖所示,其中中R1R1為指令執(zhí)行前的為指令執(zhí)行前的基址寄存器,基址寄存器,R1R1則為則為指令執(zhí)行后的基址寄指令執(zhí)行后的基址寄存器。存器。R5R6R7R1 R1 指令指令STMIA R1!,R5-R74008H4004H4000H4014H4010H400CHR5R6R7R1 R1 指令指令STMDA R1!,R5-R74008H4004H4000H4014H4010H400CHR5R6R7R1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論