時鐘周期,機器周期,指令周期的區別(轉)
時鐘周期
時鐘周期也稱為振蕩周期,定義為時鐘脈沖的倒數(時鐘周期就是單片機外接晶振的倒數,例如12M的晶振,它的時鐘周期就是1/12us),是計算機中的最基本的、最小的時間單位。
在一個時鐘周期內,CPU僅完成一個最基本的動作。時鐘脈沖是計算機的基本工作脈沖,控制著計算機的工作節奏。時鐘頻率越高,工作速度就越快。
8051單片機把一個時鐘周期定義為一個節拍(用P表示),二個節拍定義為一個狀態周期(用S表示)。
機器周期
計算機中,常把一條指令的執行過程劃分為若幹個階段,每一個階段完成一項工作。每一項工作稱為一個基本操作,完成一個基本操作所需要的時間稱為機器周期。8051系列單片機的一個機器周期由6個S周期(狀態周期)組成。 一個S周期=2個節拍(P),所以8051單片機的一個機器周期=6個狀態周期=12個時鐘周期。
例如外接24M晶振的單片機,他的一個機器周期=12/24M 秒;
指令周期
執行一條指令所需要的時間,一般由若幹個機器周期組成。指令不同,所需的機器周期也不同。
CPU 周期信號、節拍周期信號、節拍脈沖信號三者之間的關系是什麽?
一小塊石英晶體加電後產生壓電反應,在固定頻率振動,產生出電壓按照固定周期變化的脈沖信號。這個高頻率的信號通向分頻器(frequency divider),轉化為比較低頻的信號。
( http://www.electronics-tutorials.ws/counter/count_1.html )
以上圖為例,分頻器分出來的信號有四個頻率。題目中所說 CPU周期信號、節拍周期信號、節拍脈沖信號本質上都是時鐘脈沖的不同分頻,主要區別在於用途上。
通常來說,CPU 周期信號最“慢”,它決定 CPU 所處的狀態。CPU 執行一條指令的周期叫做指令周期(instruction cycle),指令周期可以劃分為 fetch、decode、和 execute 三個部分,所以也叫 fetch-decode-execute cycle。假設上圖與 QD 頻率相同的信號有三個,QD1、QD2、QD3,它們分別依次處於高電位,那麽就可以用它們來控制 CPU 處於 fetch、decode、還是 execute 狀態,這就是 CPU 周期信號。
節拍周期信號是控制信號,調整電路的功能。比如,現在 CPU 處於 fetch 狀態,仍舊以上圖為例,假設 QC 這個比 QD “快”的信號有 QC1、QC2、QC3……QCi 個,分別對應電路的不同功能(比如,應該將從內存中取來的數字作為指令解釋,還是送給寄存器存起來),誰處於高電位,CPU 就能執行誰決定的功能。
節拍脈沖信號則是觸發信號,決定電路的實際工作起點。以上圖的 QB 為例,假設 QD1 決定 CPU 處於 fetch 階段,QC1 決定 CPU 的功能是去內存取一個數字,那麽 QB 的上升沿會觸發整個電路切實地執行這個功能。
可以這樣類比:
某診所周一二三門診,周四五看復診病人,周六日不辦公
——對應三個 CPU 周期
診所星期一二三 8:00 開始門診,12:00 午休,13:00 繼續門診,17:00 關門
——對應節拍周期
某個病人星期二 9:00 去看了病
——對應脈沖信號
(註意上面的說法極度簡化,實際的實現要復雜很多,比如振動源不一定是石英,每個 CPU 周期未必等長,CPU 也並不是在某一時刻只能處於單獨一種周期狀態裏(詳見 pipelining),乃至周期層級也未必就是三層等等。)
時鐘周期,機器周期,指令周期的區別(轉)