2009-10-10 97 views

回答

6

時鐘時間假定全寬零等待狀態存儲器。內核執行該指令所用的時間是一個時鐘週期。

有一段時間,每條指令花費了不同的時鐘週期數。內存也相對較快,通常爲零等待狀態。在管線之前還有一段時間,如果指令具有存儲器操作,則必須刻錄時鐘週期,然後進行時鐘週期解碼,然後執行時鐘週期,再加上額外的時鐘週期以獲得可變長度指令和額外的時鐘週期。

今天的時鐘速度很高,芯片的房地產相對便宜,所以一個時鐘週期的加法或乘法是常態,管道和高速緩存也是如此。處理器時鐘速度不再是性能的決定性因素。內存相對較貴且速度較慢。因此,緩存(配置,數量和大小),總線大小,內存速度,外圍設備速度決定了系統的整體性能。通常提高處理器時鐘速度,但不提高內存或外圍設備的性能增益,但在某些情況下,可能會使其速度變慢。

內存大小和等待狀態不是參考手冊中時鐘執行規範的一部分,他們只是在討論每個指令的時鐘單位內核本身花費的成本。如果它是指令和數據總線分離的哈佛架構,那麼在存儲器週期中可能有一個時鐘。如果不是在那之前,指令的取指發生在至少前一個時鐘週期,所以在時鐘週期開始時,指令準備就緒,解碼和執行(讀取存儲器週期)發生在結束時的一個時鐘期間一個時鐘週期將讀取結果鎖存到寄存器中。如果指令和數據總線是共享的,那麼你可以爭辯說它仍然在一個時鐘週期內完成,但是你不能獲取下一條指令,所以在那裏有一個失速的位置,他們可能會欺騙並且調用那個時鐘週期。

+0

請問你能否向我確認,指令高速緩存(因此在提取階段)或數據高速緩存(因此在內存階段)的高速緩存未命中會導致流水線延遲,這是存儲器延遲的長度? – 2012-09-21 09:11:08

+1

確定提取是否錯過,並且在運行中沒有其他事務,則內存控制器會等待該提取完成。這並不意味着管道的攤位,如果它確實拖延了,並不意味着它會停頓一段時間。你的問題是關於數據週期而不是指令(取指)週期,你沒有提到緩存或緩存。對於數據緩存,您可能需要使用mmu或其他某種方案,mmu還會爲提取或數據循環增加時鐘週期。再次,管道不一定會停滯,如果不是這樣的話,也不會受到內存週期的影響。 – 2012-09-21 13:54:38

+0

感謝您的回覆,但我實際上並不清楚數據週期與指令(取指)週期之間的關係。我對CPU體系結構的瞭解非常有限,我遇到這個問題的同時遇到了向代碼添加代碼時速度更快的應用程序問題。 – 2012-09-21 15:32:16

1

我的理解是:當說一些指令需要一個週期時,並不是指令將在一個週期內完成。 要指導pipe-line假設你的CPU有5級管線,如果按順序執行,該指令需要5個週期。

相關問題