單片機(jī):時鐘周期,機(jī)器周期,指令周期總結(jié)來了
時鐘周期:
時鐘周期也稱為振蕩周期,定義為時鐘脈沖的倒數(shù)(可以這樣來理解,時鐘周期就是單片機(jī)外接晶振的倒數(shù),例如12M的晶振,它的時間周期就是1/12 us),是計(jì)算機(jī)中最基本的、最小的時間單位。
在一個時鐘周期內(nèi),CPU僅完成一個最基本的動作。對于某種單片機(jī),若采用了1MHZ的時鐘頻率,則時鐘周期為1us;若采用4MHZ的時鐘頻率,則時鐘 周期為250us。由于時鐘脈沖是計(jì)算機(jī)的基本工作脈沖,它控制著計(jì)算機(jī)的工作節(jié)奏(使計(jì)算機(jī)的每一步都統(tǒng)一到它的步調(diào)上來)。顯然,對同一種機(jī)型的計(jì)算 機(jī),時鐘頻率越高,計(jì)算機(jī)的工作速度就越快。具體計(jì)算就是1/fosc。也就是說如果晶振為1MHz,那么時鐘周期就為1us;6MHz的話,就是1 /6us。
8051單片機(jī)把一個時鐘周期定義為一個節(jié)拍(用P表示),二個節(jié)拍定義為一個狀態(tài)周期(用S表示)。
機(jī)器周期:
在計(jì)算機(jī)中,為了便于管理,常把一條指令的執(zhí)行過程劃分為若干個階段,每一階段完成一項(xiàng)工作。例如,取指令、存儲器讀、存儲器寫等,這每一項(xiàng)工作稱為一個基本操作。完成一個基本操作所需要的時間稱為機(jī)器周期。一般情況下,一個機(jī)器周期由若干個S周期(狀態(tài)周期)組成。
8051系列單片機(jī)的一個機(jī)器周期同6個 S周期(狀態(tài)周期)組成。前面已說過一個時鐘周期定義為一個節(jié)拍(用P表示),二個節(jié)拍定義為一個狀態(tài)周期(用S表示),8051 單片機(jī)的機(jī)器周期由6個 狀態(tài)周期組成,也就是說一個機(jī)器周期=6個狀態(tài)周期=12個時鐘周期。 具體計(jì)算為:時鐘周期 X cycles。如果單片機(jī)是12周期的話,那么機(jī)器周期就是T×12。假設(shè)晶振頻率為12M,單片機(jī)為12周期的話,那么機(jī)器周期就是1us。
例如外接24M晶振的單片機(jī),他的一個機(jī)器周期=12/24M 秒;52系列單片機(jī)一個機(jī)器周期等于12個時鐘周期。設(shè)晶振頻率為12MHz時,52單片機(jī)是12T的單片機(jī),即頻率要12分頻。12M經(jīng)過分頻變?yōu)?M,由T=1/f,即一個機(jī)器周期變?yōu)?us
指令周期:
執(zhí)行一條指令所需要的時間,一般由若干個機(jī)器周期組成。指令不同,所需的機(jī)器周期也不同。通常,包含一個機(jī)器周期的指令成為單周期指令,比如CLR,MOV等等。包含兩個機(jī)器周期的指令稱為雙周期指令。另外還有4周期指令,比如乘法和除法指令。對于一些簡單的的單字節(jié)指令,在取指令周期中,指令取出到指令寄存器后,立即譯碼執(zhí)行,不再需要其它的機(jī)器周期。對于一些比較復(fù)雜的指令,例如轉(zhuǎn)移指令、乘法指令,則需要兩個或者兩個以上的機(jī)器周期。
總線周期:
由于存貯器和I/O端口是掛接在總線上的,CPU對存貯器和I/O接口的訪問,是通過總線實(shí)現(xiàn)的。通常把CPU通過總線對微處理器外部(存貯器或 I/O接口)進(jìn)行一次訪問所需時間稱為一個總線周期。
總結(jié):
時鐘周期是最小單位,機(jī)器周期需要1個或多個時鐘周期,指令周期需要1個或多個機(jī)器周期;機(jī)器周期指的是完成一個基本操作的時間,這個基本操作有時可能包含總線讀寫,因而包含總線周期,但是有時可能與總線讀寫無關(guān),所以,并無明確的相互包含的關(guān)系。
指令周期:是CPU的關(guān)鍵指標(biāo),指取出并執(zhí)行一條指令的時間。一般以機(jī)器周期為單位,分單指令執(zhí)行周期、雙指令執(zhí)行周期等。現(xiàn)在的處理器的大部分指令(ARM、DSP)均采用單指令執(zhí)行周期。
機(jī)器周期:完成一個基本操作的時間單元,如取指周期、取數(shù)周期。
時鐘周期:CPU的晶振的工作頻率的倒數(shù)。
例子1:
22.1184MHZ的晶振,它的晶振周期、時鐘周期和機(jī)器周期分別是多少?
以51為例,晶振22.1184M,時鐘周期(晶振周期)就是(1/22.1184)μs,一個機(jī)器周期包含12個時鐘周期,一個機(jī)器周期就是 0.5425μs。一個機(jī)器周期一般是一條指令花費(fèi)的時間,也有些是2個機(jī)器周期的指令,DJNZ,是雙 周期指令.
例子2:
1.振蕩周期(時鐘周期):為單片機(jī)提供時鐘信號的振蕩源的周期。
2.機(jī)器周期:通常將完成一個基本操作所需的時間稱為機(jī)器周期。
3.指令周期:是指MCU執(zhí)行一條指令所需要的時間。一個指令周期通常含有1~4個機(jī)器周期。
若MCU單片機(jī)外接晶振為12MHz時具體值為:
振蕩周期(時鐘周期)=1/12MHz=1/12μs=0.0833μs, 機(jī)器周期=12*1/12μs=1μs,指令周期=1~4μs
說明:
1.時鐘周期即晶振的單位時間發(fā)出的脈沖數(shù),12MHz=12×10的6次方,即每秒發(fā)出12000000個脈沖信號,那么發(fā)出一個脈沖的時間就是時鐘周期,即1/12微秒。
2.一個機(jī)器周期等于12個時鐘周期,所以是1微秒。