時鐘周期簡介
時鐘周期也稱為振蕩周期,定義為時鐘頻率的倒數(shù)。時鐘周期是計算機中最基本的、最小的時間單位。在一個時鐘周期內(nèi),CPU僅完成一個最基本的動作。時鐘周期是一個時間的量。時鐘周期表示了SDRAM所能運行的最高頻率。更小的時鐘周期就意味著更高的工作頻率。
時鐘周期是同步電路中時鐘基礎頻率的倒數(shù)。它以時間動作重復的最小周期來度量,度量單位采用時間單位。在單個時鐘周期內(nèi)(現(xiàn)代非嵌入式微處理器的這個時間一般都短于1納秒),邏輯零狀態(tài)與邏輯一狀態(tài)來回切換。由于發(fā)熱和電氣規(guī)格的限制,周期里邏輯零狀態(tài)的持續(xù)時間歷來要長于邏輯一狀態(tài)。
CPU時鐘周期概述
在微程序控制器中,時序信號比較簡單,一般采用節(jié)拍電位——節(jié)拍脈沖二級體制。就是說它只要一個節(jié)拍電位,在節(jié)拍電位又包含若干個節(jié)拍脈沖(時鐘周期)。節(jié)拍電位表示一個CPU周期的時間,而節(jié)拍脈沖把一個CPU周期劃分為幾個叫較小的時間間隔。根據(jù)需要這些時間間隔可以相等,也可以不等。
指令周期是取出并執(zhí)行一條指令的時間。
指令周期常常有若干個CPU周期,CPU周期也稱為機器周期,由于CPU訪問一次內(nèi)存所花費的時間較長,因此通常用內(nèi)存中讀取一個指令字的最短時間來規(guī)定CPU周期。這就是說,一條指令取出階段(通常為取指)需要一個CPU周期時間。而一個CPU周期時間又包含若干個時鐘周期(通常為節(jié)拍脈沖或T周期,它是處理操作的最基本的單位)。這些時鐘周期的總和則規(guī)定了一個CPU周期的時間寬度。
處理器一條指令需要幾個時鐘周期
對于軟件工程師來說,印象流我們可能會覺得執(zhí)行一條指令一個時鐘周期嘛,一條指令算是一個最小的原子操作,不可能再細分了吧。
如果看看諸如《see mips run》,《arm體系架構(gòu)》等書籍就會了解到,這個問題可沒這么簡單了,因為處理器設計中使用了流水線技術。
一條指令還是相當復雜的,處理器在一個時鐘周期內(nèi)肯定是完不成的,可能需要好多個時鐘周期來完成執(zhí)行。如果這樣讓處理器執(zhí)行完一條指令,再去執(zhí)行另一條,處理器的效率是很低的,假如一條指令是5個時鐘周期完成,對于500MHZ的處理器串行運行指令,1秒內(nèi)取指100000000次。
因此處理器引入了流水線技術,將一條指令劃分為多個功能,由不同的功能部件來執(zhí)行,并且這些功能部件可以并行工作。下面是一個arm7的三級流水線運行圖。
流水線劃分為取指 譯碼 執(zhí)行,但并不是僅需3個時鐘周期即執(zhí)行完指令。因為執(zhí)行單元模塊的操作較多,可能需要多個周期,取指 譯碼一般是一個時鐘周期,這樣可以看出雖然一條指令完成需要多個時鐘周期,但是總體來說看在每個時鐘周期都有一條指令開始取指。如果我們的處理器是500MHZ,則1秒內(nèi)取指了500000000次。
不同的處理器設計時流水線級數(shù)不一樣,現(xiàn)在主流的有三級 五級 七級,增加流水線級數(shù),簡化流水線的各級邏輯,可以提高處理器的性能。
回答咱們開頭的問題也就明白了,一條指令需要的時鐘周期還真不固定,這得看處理器的流水線級數(shù),也得看該指令的復雜度,在執(zhí)行階段需要幾個時鐘周期。
對于流水線各級具體工作這里就不細說了,網(wǎng)上文章很多,畢竟咱們是做軟件的,硬件點到為止,流水線各級工作是有處理器內(nèi)部邏輯單元來完成的,對于軟件來說都是不可見的,軟件可操作的最小原子操作就是指令。
不過呢,處理器的流水線技術在有一個事情對咱們軟件造成了影響,那就是PC值。
據(jù)我了解的處理器流水線設計,前三級基本都是取指 譯碼 執(zhí)行。處理器的PC寄存器中存儲的是處理器的取指地址,根據(jù)上述流水線機制,而我們的處理器執(zhí)行的指令地址是落后于要去預取的指令的地址,落后2個時鐘周期。
也就是說我們在取了第一條指令后,等該指令到了執(zhí)行階段時,我們的處理器其實已經(jīng)預取了往后的第二條指令了。
對于32位處理器,一條指令占據(jù)4字節(jié)。這也就是PC值 = 當前指令地址 + 8的根本原因啦。
評論
查看更多