時鐘週期也稱為振盪週期,定義為時鐘頻率的倒數。時鐘週期是計算機中最基本的、最小的時間單位。在乙個時鐘週期內,cpu僅完成乙個最基本的動作。時鐘週期是乙個時間的量。時鐘週期表示了sdram所能執行的最高頻率。更小的時鐘週期就意味著更高的工作頻率。
時鐘週期是同步電路中時鐘基礎頻率的倒數。它以時間動作重複的最小週期來度量,度量單位採用時間單位。在單個時鐘週期內(現代非嵌入式微處理器的這個時間一般都短於1納秒),邏輯零狀態與邏輯一狀態來回切換。由於發熱和電氣規格的限制,週期裡邏輯零狀態的持續時間歷來要長於邏輯一狀態。
在微程式控制器中,時序訊號比較簡單,一般採用節拍電位——節拍脈衝二級體制。就是說它只要乙個節拍電位,在節拍電位又包含若干個節拍脈衝(時鐘週期)。節拍電位表示乙個cpu週期的時間,而節拍脈衝把乙個cpu週期劃分為幾個叫較小的時間間隔。根據需要這些時間間隔可以相等,也可以不等。
指令週期是取出並執行一條指令的時間。
指令週期常常有若干個cpu週期,cpu週期也稱為機器週期,由於cpu訪問一次記憶體所花費的時間較長,因此通常用記憶體中讀取乙個指令字的最短時間來規定cpu週期。這就是說,一條指令取出階段(通常為取指)需要乙個cpu週期時間。而乙個cpu週期時間又包含若干個時鐘週期(通常為節拍脈衝或t週期,它是處理操作的最基本的單位)。這些時鐘週期的總和則規定了乙個cpu週期的時間寬度。
對於軟體工程師來說,印象流我們可能會覺得執行一條指令乙個時鐘週期嘛,一條指令算是乙個最小的原子操作,不可能再細分了吧。
如果看看諸如《see mips run》,《arm體系架構》等書籍就會了解到,這個問題可沒這麼簡單了,因為處理器設計中使用了流水線技術。
一條指令還是相當複雜的,處理器在乙個時鐘週期內肯定是完不成的,可能需要好多個時鐘週期來完成執行。如果這樣讓處理器執行完一條指令,再去執行另一條,處理器的效率是很低的,假如一條指令是5個時鐘週期完成,對於500mhz的處理器序列執行指令,1秒內取指100000000次。
因此處理器引入了流水線技術,將一條指令劃分為多個功能,由不同的功能部件來執行,並且這些功能部件可以並行工作。下面是乙個arm7的**流水線執行圖。
流水線劃分為取指 解碼 執行,但並不是僅需3個時鐘週期即執行完指令。因為執行單元模組的操作較多,可能需要多個週期,取指 解碼一般是乙個時鐘週期,這樣可以看出雖然一條指令完成需要多個時鐘週期,但是總體來說看在每個時鐘週期都有一條指令開始取指。如果我們的處理器是500mhz,則1秒內取指了500000000次。
不同的處理器設計時流水線級數不一樣,現在主流的有** 五級 七級,增加流水線級數,簡化流水線的各級邏輯,可以提高處理器的效能。
回答咱們開頭的問題也就明白了,一條指令需要的時鐘週期還真不固定,這得看處理器的流水線級數,也得看該指令的複雜度,在執行階段需要幾個時鐘週期。
對於流水線各級具體工作這裡就不細說了,網上文章很多,畢竟咱們是做軟體的,硬體點到為止,流水線各級工作是有處理器內部邏輯單元來完成的,對於軟體來說都是不可見的,軟體可操作的最小原子操作就是指令。
不過呢,處理器的流水線技術在有乙個事情對咱們軟體造成了影響,那就是pc值。
據我了解的處理器流水線設計,前**基本都是取指 解碼 執行。處理器的pc暫存器中儲存的是處理器的取指位址,根據上述流水線機制,而我們的處理器執行的指令位址是落後於要去預取的指令的位址,落後2個時鐘週期。
也就是說我們在取了第一條指令後,等該指令到了執行階段時,我們的處理器其實已經預取了往後的第二條指令了。
對於32位處理器,一條指令佔據4位元組。這也就是pc值 = 當前指令位址 + 8的根本原因啦。
處理器一條指令需要幾個時鐘週期?
思考個小問題,處理器執行一條指令需要幾個時鐘週期。對於軟體工程師來說,印象流我們可能會覺得執行一條指令乙個時鐘週期嘛,一條指令算是乙個最小的原子操作,不可能再細分了吧。如果看看諸如 see mips run arm體系架構 等書籍就會了解到,這個問題可沒這麼簡單了,因為處理器設計中使用了流水線技術。...
ARM指令協處理器處理指令
arm支援16個協處理器,在程式執行過程中,每個協處理器忽略屬於arm處理器和其他協處理器指令,當乙個協處理器硬體不能執行屬於她的協處理器指令時,就會產生乙個未定義的異常中斷,在異常中斷處理程式中,可以通過軟體模擬該硬體的操作,比如,如果系統不包含向量浮點運算器,則可以選擇浮點運算軟體模擬包來支援向...
ARM指令協處理器處理指令
arm支援16個協處理器,在程式執行過程中,每個協處理器忽略屬於arm處理器和其他協處理器指令,當乙個協處理器硬體不能執行屬於她的協處理器指令時,就會產生乙個未定義的異常中斷,在異常中斷處理程式中,可以通過軟體模擬該硬體的操作,比如,如果系統不包含向量浮點運算器,則可以選擇浮點運算軟體模擬包來支援向...