版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、窗體頂端窗體底端時鐘周期、機器周期、指令周期概念 ARM 時鐘周期: 時鐘周期也稱為振蕩周期,定義為時鐘脈沖的倒數(shù)(可以這樣來理解,時鐘周期就是單片機外接晶振的倒數(shù),例如12M的晶振,它的時間周期就是1/12 us),是計算機中最基本的、最小的時間單位。 在一個時鐘周期內(nèi),CPU僅完成一個最基本的動作。對于某種單片機,若采用了1MHZ的時鐘頻率,則時鐘周期為1us;若采用4MHZ的時鐘頻率,則時鐘 周期為250us。由于時鐘脈沖是計算機的基
2、本工作脈沖,它控制著計算機的工作節(jié)奏(使計算機的每一步都統(tǒng)一到它的步調(diào)上來)。顯然,對同一種機型的計算 機,時鐘頻率越高,計算機的工作速度就越快。 8051單片機把一個時鐘周期定義為一個節(jié)拍(用P表示),二個節(jié)拍定義為一個狀態(tài)周期(用S表示)。 機器周期:(ARM沒有機器周期的概念) 在計算機中,為了便于管理,常把一條指令的執(zhí)行過程劃分為若干個階段,每一階段完成一項工作。例如,取指令、存儲器讀、存儲器寫等,這每一項工作稱為一個基本操作。完成一個基本操作所
3、需要的時間稱為機器周期。一般情況下,一個機器周期由若干個S周期(狀態(tài)周期)組成。 8051系列單片機的一個機器周期同6個 S周期(狀態(tài)周期)組成。前面已說過一個時鐘周期定義為一個節(jié)拍(用P表示),二個節(jié)拍定義為一個狀態(tài)周期(用S表示),8051單片機的機器周期由6個 狀態(tài)周期組成,也就是說一個機器周期=6個狀態(tài)周期=12個時鐘周期。 例如外接24M晶振的單片機,他的一個機器周期=12/24M 秒; 指令周期:
4、0; 執(zhí)行一條指令所需要的時間,一般由若干個機器周期組成。指令不同,所需的機器周期也不同。 對于一些簡單的的單字節(jié)指令,在取指令周期中,指令取出到指令寄存器后,立即譯碼執(zhí)行,不再需要其它的機器周期。對于一些比較復(fù)雜的指令,例如轉(zhuǎn)移指令、乘法指令,則需要兩個或者兩個以上的機器周期。 通常含一個機器周期的指令稱為單周期指令,包含兩個機器周期的指令稱為雙周期指令。 總線周期: 由于存貯器和I/O端口
5、是掛接在總線上的,CPU對存貯器和I/O接口的訪問,是通過總線實現(xiàn)的。通常把CPU通過總線對微處理器外部(存貯器或 I/O接口)進行一次訪問所需時間稱為一個總線周期。 總結(jié)一下,時鐘周期是最小單位,機器周期需要1個或多個時鐘周期,指令周期需要1個或多個機器周期;機器周期指的是完成一個基本操作的時間,這個基本操作有時可能包含總線讀寫,因而包含總線周期,但是有時可能與總線讀寫無關(guān),所以,并無明確的相互包含的關(guān)系。 指令周期:是CPU的關(guān)鍵指標(biāo),指取出并執(zhí)行一條指令的時間。一般以機器周期為單位,分單指令執(zhí)行周期、雙指令執(zhí)行周期等?,F(xiàn)在的處理器的
6、大部分指令(ARM、DSP)均采用單指令執(zhí)行周期。機器周期:完成一個基本操作的時間單元,如取指周期、取數(shù)周期。時鐘周期:CPU的晶振的工作頻率的倒數(shù)。 例子:22.1184MHZ的晶振,它的晶振周期、時鐘周期和機器周期分別是多少? 以51為例,晶振22.1184M,時鐘周期(晶振周期)就是(1/22.1184)s,一個機器周期包含12個時鐘周期,一個機器周期就是 0.5425s。一個機器周期一般是一條指令花費的時間,也有些是2個機器周期的指令,DJNZ,是雙周期指令. - 紅皮書1
7、18頁說cpu的操作頻率可達(dá)60MHZ,這個頻率是機器周期還是指令周期?ARM機器周期跟指令周期有什么對應(yīng)關(guān)系?由于ARM采用的是三級流水線的技術(shù),所有的指令執(zhí)行都由相同的三個階段取指,譯碼,執(zhí)行,那么所有的指令的執(zhí)行時間是不是都是相同的? 我的理解是:如果ARM不接pll(即ARM直接采用晶振的周期),ARM的機器周期就是晶振的振蕩周期,這兩個是等同的,所有的指令的執(zhí)行時間都是相同的,且都等于晶振周期;如果ARM連接并使能pll,則1/Fcclk就是機器周期,指令的執(zhí)行頻率等于Fcclk。請教高手指點更正,多謝! zlgarm :
8、160;沒有機器周期的概念,只有主時鐘的概念,它是OLL的輸出。如果程序和數(shù)據(jù)均在片內(nèi)RAM中,這樣計算指令執(zhí)行時間1、一般指令需1個主時鐘時間2、每次跳轉(zhuǎn)增加3個主時鐘時間(也許是2個,需要確認(rèn))3、從RAM中取一個操作數(shù)多增加一個主時鐘時間,以次類推4、保存一個結(jié)果到RAM中多增加一個主時鐘時間,以次類推5、訪問片內(nèi)外設(shè),增加一個外設(shè)時鐘時間注意偽指令ldr rn,=x需要從ram中取一個操作數(shù)。 slump: 如果從FLASH中運行,啟動MAM后,當(dāng)指令不在MAM緩沖中,需用MAMTIM個周期進行MAM預(yù)取指。所以程序跳轉(zhuǎn)的開銷是相當(dāng)大的。 - &
9、#160;8051、ARM和DSP指令周期的測試與分析本文對三種最具代表性的微控制器(AT89S51單片機、7TDMI核的LPC2114型單片機和TMS320F2812)的指令周期進行了分析和。為了能觀察到指令周期,將三種控制器的GPIO口設(shè)置為數(shù)字輸出口,并采用循環(huán)不斷地置位和清零,通過觀察GPIO口的波形變化得到整個循環(huán)的周期。為了將整個循環(huán)的周期與具體的每一條指令的指令周期對應(yīng)起來,通過C語言源程序得到匯編語言指令來計算每一條匯編語言的指令周期。 1 AT89S51工作機制及指令周期的 AT89S51單片機的時鐘采用內(nèi)部方式,時鐘發(fā)生器對
10、振蕩脈沖進行2分頻。由于時鐘周期為振蕩周期的兩倍(時鐘周期振蕩周期P1+振蕩周期P2),而1個機器周期含有6個時鐘,因此1個機器周期包括12個晶振的振蕩周期。取石英晶振的振蕩頻率為11.059 2 MHz,則單片機的機器周期為12/11.059 2=1.085 1 s。51系列單片機的指令周期一般含14個機器周期,多數(shù)指令為單周期指令,有2周期和4周期指令。 為了觀察指令周期,對單片機的P1口的最低位進行循環(huán)置位操作和清除操作。源程序如下: #include main() while(1) P1=0x01; P1=0x
11、00; 采用KEIL uVISION2進行編譯、鏈接,生成可執(zhí)行文件。當(dāng)調(diào)用該集成環(huán)境中的Debug時,可以得到上述源程序混合模式的反匯編代碼: 2:main() 3: 4:while(1) 5: 6:P1=0x01; 0x000F759001MOVP1(0x90),#0x01 7:P1=0x00; 0x0012 E4CLRA 0x0013 F590MOVP1(0x90),A 8: 0x001580EDSJMPmain (C:0003) 其中斜體的代碼為C源程序,正體的代碼為斜體C源程序?qū)?yīng)的匯編語言代碼。每行匯編代碼的第1列為該代碼在器中的位置,第2列為機器碼,后面
12、是編譯、鏈接后的匯編語言代碼。所有指令共占用6個機器周期(其中“MOV P1(0x90),#0x01”占用2個機器周期,“CLR A”和“MOV P1(0x90),A”各占用1個機器周期,最后一個跳轉(zhuǎn)指令占用2個機器周期),則總的循環(huán)周期為6×機器周期6×1.085 1 s6.51 s。 &
13、#160; 圖1 P1口最低位的波形 將編譯、鏈接生成的可執(zhí)行文件到AT89S51的Flash中執(zhí)行可以得到P1口最低位的波形,如圖1所示。整個循環(huán)周期為6.1 s,與上面的分析完全一致。
14、2 LPC2114工作機制及指令周期的測試 LPC2114是基于ARM7TDMI核的可加密的單片機,具有零等待128 KB的片內(nèi)Flash,16 KB的SRAM。時鐘頻率可達(dá)60 MHz(晶振的頻率為11.059 2 MHz,時鐘頻率設(shè)置為11.059 2×4 =44.236 8 MHz,片內(nèi)外設(shè)頻率為時鐘頻率的1/4,即晶振的頻率)。7TDMI核通過使用三級流水線和大量使用內(nèi)部寄存器來提高指令流的執(zhí)行速度,能提供0.9 MIPS/MHz的指令執(zhí)行速度,即指令周期為1/(0.9×44.236 8)=0.025 12 s,約為25 ns。 為了觀察指令周期,將LPC2114中
15、GPIO的P0.25腳設(shè)置為輸出口,并對其進行循環(huán)的置位操作和清除操作。C源程序如下: #include"config.h" /P0.25引腳輸出 #defineLEDCON0x02000000 intmain(void) /設(shè)置所有引腳連接GPIO PINSEL0 = 0x00000000; PINSEL1 = 0x00000000; /設(shè)置LED4控制口為輸出 IO0DIR = LEDCON; while(1) IO0SET = LEDCON; IO0CLR = LEDCON; return(0); 采用ADS1.2進行編譯、鏈接,生成可執(zhí)行文件。當(dāng)調(diào)用AXD Debu
16、gger時,可以得到上述源程序的反匯編代碼: main0xe59f1020ldrr1,0x40000248 400002240xe3a00000movr0,#0 400002280xe5810000strr0,r1,#0 4000022c0xe5810004strr0,r1,#4 400002300xe3a00780movr0,#0x2000000 400002340xe1c115c0bicr1,r1,r0,asr #11 400002380xe5810008strr0,r1,#8 4000023c0xe5810004strr0,r1,#4 400002400xe581000cstrr0,r1
17、,#0xc 400002440xeafffffcb0x4000023c 400002480xe002c000dcd0xe002c000 每行匯編代碼的第1列為該代碼在器中的位置,第2列為機器碼,后面是編譯、鏈接后的匯編語言代碼。循環(huán)部分的語句最關(guān)鍵的就是下面3句: 4000023c0xe5810004strr0,r1,#4 400002400xe581000cstrr0,r1,#0xc 400002440xeafffffcb0x4000023c 在AXD Debugger中,將其調(diào)用到RAM中運行程序得到循環(huán)部分GPIO的P0.25的輸出波形,如圖2所示。 從圖中可以看出,循環(huán)周期中保持為高電
18、平的時間為1350 ns左右,低電平的時間為450 ns左右,即指令“str r0,r1,#4”和指令“str r0,r1,#0xc”均需350 ns左右,而跳轉(zhuǎn)指令則需100 ns左右。這主要是由于以下原因造成的: ARM的大部分指令是單周期的,但是也有一些指令(如乘法指令)是多周期的; 基于核的微控制器只有加載、存儲和指令可以對存儲器的數(shù)據(jù)進行訪問,這樣從存儲器讀數(shù)據(jù)或向存儲器寫數(shù)據(jù)要增加1個時鐘周期; 訪問片內(nèi)外設(shè)要增加一個外設(shè)時鐘周期。當(dāng)然,每個指令還要有1個時鐘周期,跳轉(zhuǎn)時要清空流水線還要另加一定的時鐘周期。 &
19、#160; 圖2 GPIO的P0.25腳輸出波形
20、;為了觀察乘法指令,特地采用下述匯編語言進行了實驗。 首先是沒有乘法指令的匯編源程序: INCLUDELPC2294.INC ;引入頭文件 ; P0.25引腳控制LED4,低電平點亮 LEDCONEQU0x02000000
21、 EXPORTMAIN ;聲明程序代碼塊 AREALEDCONC,CODE,READONLY ;裝載寄存器地址,PINSEL0 MAINLDRR0,=PINSEL0
22、60; ;設(shè)置數(shù)據(jù),即設(shè)置引腳連接GPIO MOVR1,#0x00000000 STRR1,R0; R0 R1 LDRR0,=PINSEL1
23、0; STRR1,R0 LDRR0,=IO0DIR LDRR1,=LEDCON ;設(shè)置LED控制口為輸出 STRR1,R0
24、 ;設(shè)置GPIO控制參數(shù) LOOPLDRR1,=LEDCON LEDSETLDRR0,=IO0SET ; LED控制I/O置位,即LED4熄滅 STRR1,R0
25、; LEDCLRLDRR0,=IO0CLR ; LED控制I/O復(fù)位,即LED4點亮 STRR1,R0 ;無條件跳轉(zhuǎn)到LOOP B LOOP
26、60;采用ADS1.2進行編譯、鏈接后的匯編代碼為: LOOP 0xe3a01780movr1,#0x2000000 LEDSET0xe59f0028 ldrr0,0x40000128 400000fc0xe5801000strr1,r0,#0 LEDCLR0xe59f0024 ldrr0,0x4000012c 40000104 0xe5801000strr1,r0,#0 40000108 0xeafffff9 bLOOP 在AXD Debugger中,將其調(diào)用到RAM中運行程序得到循環(huán)部分的GPIO的P0.25腳輸出波形,如圖3所示。 從圖中可以看出,循環(huán)周期中保持為高電平的時間
27、為450 ns左右,低電平的時間為550 ns左右。 資源來自"歲月聯(lián)盟" 本文來自"歲月聯(lián)盟"
28、0; 圖3 GPIO的P0.25腳輸出波形2 在上例的LOOP循環(huán)部分中加入乘法指令,即將循環(huán)部分改為: LOOP LDRR1,=LEDCON LEDSETLDRR0,=IO0SET
29、160; STRR1,R0 MOVR2,#0x0234 MULR2,R1,R2 LEDCLRLDRR0,=IO0CLR STRR1,R0
30、; B LOOP 采用ADS1.2進行編譯、鏈接后的匯編代碼為: LOOP0xe3a01780movr1,#0x2000000 LEDSET0xe59f0030ldrr0,0x40000130 400000fc0xe5801000strr1,r0,#0 400001000xe3a02f8dmovr2,#0x234 400001040xe0020291 mulr2,r1,r2 LEDCLR0xe59f0024 ldrr0,0x40000134 4000010c0xe5801000strr1,r0,#0 40000
31、1100xeafffff7bLOOP 在AXD Debugger中,將其調(diào)用到RAM中運行程序得到循環(huán)部分的GPIO的P0.25腳輸出波形,如圖4所示。 從圖中可以看出,循環(huán)周期中保持為高電平的時間為550 ns左右,低電平的時間為550 ns左右。與上例比較可知,多出的MUL乘法指令和MOV傳送指令共占用100 ns。 綜上所述,得出如下結(jié)論: 當(dāng)指令放在RAM中運行時,指令“str r0,r1,#4”和指令“strr0,r1,#0xc”均需350 ns左右,相當(dāng)于14個指令周期;指令“l(fā)dr r0,0x4000012c”的執(zhí)行時間為100 ns,相當(dāng)于4個指令周期;MUL乘法指
32、令和MOV傳送指令共占用100ns,相當(dāng)于4個指令周期;跳轉(zhuǎn)指令共占用100 ns,相當(dāng)于4個指令周期。 3 TMS320F2812工作機制及指令周期測試 TMS320F2812是TI公司的一款用于控制的高性能和高性價比的32位定點DSP芯片。該芯片最高可在150 MHz主頻下工作(本文將其設(shè)置到100 MHz),并帶有18K×16位等待周期片上SRAM和128K×16位片上Flash(存取時間為36 ns)。TMS320F2812采用哈佛總線結(jié)構(gòu),即在同一個時鐘周期內(nèi)可同時進行一次取指令、讀數(shù)據(jù)和寫數(shù)據(jù)的操作,
33、同時TMS320F2812還通過采用8級流水線來提高系統(tǒng)指令的執(zhí)行速度。 為了觀察指令周期,對TMS320F2812的GPIOA0進行循環(huán)的置位操作和清除操作。C源程序如下: #include "DSP28_Device.h" void main(void) InitSysCtrl();/*初始化系統(tǒng)*/ DINT;/*關(guān)中斷*/ IER = 0x0000; IFR = 0x0000; InitPieCtrl();/*初始化PIE控制寄存器*/ InitPieVectTable();/*初始化PIE矢量表*/ InitGpio();/*初始化EV*/ EINT; ERTM;
34、 for(;) GpioDataRegs.GPADAT.all=0xFFFF; GpioDataRegs.GPADAT.all=0xFFFF; GpioDataRegs.GPADAT.all=0xFFFF; GpioDataRegs.GPADAT.all=0x0000; GpioDataRegs.GPADAT.all=0x0000; GpioDataRegs.GPADAT.all=0x0000;
35、0; 圖4 GPIO的P0.25腳輸出波形3 其中最重要的是要對通用輸入/輸出進行初始化和確定系統(tǒng)CPU時鐘。其中系統(tǒng)的時鐘通過PLL設(shè)定為100 MHz,而初始化 InitGpi
36、o() 的源程序為: #include "DSP28_Device.h" void InitGpio(void) EALLOW; /多路復(fù)用器選為數(shù)字I/O GpioMuxRegs.GPAMUX.all=0x0000; /GPIOAO為輸出,其余為輸入 GpioMuxRegs.GPADIR.all=0x0001; GpioMuxRegs.GPAQUAL.all=0x0000; EDIS; 通過在主程序for(;)的地方加斷點,可以很容易找到上面主程序中循環(huán)部分程序編譯后的匯編指令: 3F8011 L1: 3F8011761FMOVWDP,#0x01C3 3F80
37、13 2820 MOV32,#0xFFFF 3F8015 2820 MOV32,#0xFFFF 3F8017 2820 MOV32,#0xFFFF 3F8019 2820 MOV32,#0xFFFF 3F801B 2820 MOV32,#0xFFFF 3F801D 2820 MOV32,#0xFFFF 3F801F 2B20 MOV32,#0 3F8020 2B20 MOV32,#0 3F8021 2B20 MOV32,#0 3F8022 6FEF SBL1,UNC 其中第1列為程序在RAM中的位置,第2列為機器碼,后面就是匯編語言程序。指令“MOV 32,#0xFFFF”使GPI
38、O輸出高電平,指令“MOV 32,#0”使GPIO輸出低電平。其中含有6個使GPIOA0輸出高電平的指令和3個使GPIOA0輸出低電平的指令,系統(tǒng)的指令周期為10 ns,因此循環(huán)周期中保持高電平的時間為60 ns。通過將該程序放在H0 SARAM中進行調(diào)試,可得GPIOA0的波形,如圖5所示。其中高電平時間正好為60 ns。注意,由于3個低電平之后要進行跳轉(zhuǎn),故清空流水線的周期要長一些。 圖5 TMS320F2812中GPIOA0的波形1 為了觀察乘法指令的周期,將上述循環(huán)部分的C源程序修改為: for(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年國際私人民間貿(mào)易協(xié)議樣式
- 2024年期企業(yè)互保反擔(dān)保協(xié)議樣本
- 2024年企業(yè)勞動協(xié)議范本要點
- 2024廣告影片拍攝場地使用協(xié)議
- DB11∕T 1570-2018 甜瓜設(shè)施栽培技術(shù)規(guī)程
- 2024年鋼材供應(yīng)協(xié)議鋼筋條款詳本
- 2024年適用場地租賃協(xié)議模板
- 不銹鋼欄桿建設(shè)施工服務(wù)協(xié)議2024
- 2024年定制銷售受托管理協(xié)議
- 2024年度特定物資委托采購合作協(xié)議
- 化妝品半成品成品檢驗規(guī)程
- 電大中級財務(wù)會計二形成性考核冊
- 宮之奇諫假道(課堂PPT)
- 公司員工晉升管理辦法(草案)
- 英語介紹微信PPT課件
- 入戶門技術(shù)標(biāo)準(zhǔn)要求
- 關(guān)于銀行信息科技工作的幾點思考
- 單腳起跳、雙腳落地
- 毛竹腳手架施工方案
- 中南大學(xué)學(xué)位證書樣本掃描件WORD
- 多重中介模型及其應(yīng)用
評論
0/150
提交評論