2012-10-27 18 views
1

我在讀這本書由Elsevier「ARM系統開發人員指南」,我碰到這個傳來:哪些是不同的可變週期ARM指令?

ARM指令集從單純的RISC德網絡nition存在許多差異,使 ARM指令集的適合於嵌入式應用程序:

某些指令的可變週期執行 - 並非每個ARM指令都在一個週期內執行。例如,根據正在傳輸的寄存器的數量,加載存儲多個指令的執行週期數會有所不同。傳輸可能發生在順序存儲器地址上,這會增加性能,因爲順序存儲器訪問通常比隨機訪問更快。由於多個寄存器傳輸是功能的開始和結束 的常見操作,所以代碼密度也得到了改進 。

您可以指出哪些其他ARM指令需要執行變量週期?

回答

2

週期時間依賴於微架構,因此您需要檢查特定實施的技術參考手冊(TRM)。例如對於Cortex-A9,它被描述爲相當複雜。

的所述Cortex-A9處理器的複雜性使得不能手動計算精確的定時信息。指令的時序通常受其他併發指令,存儲器系統活動以及指令流以外的其他事件的影響。

但是對同一文檔有用於數據處理,加載和存儲,乘法和大約分支和串行化指令的一些信息的精確定時。

例如,從同一文檔可以看到是否涉及shiftingAND指令可能需要1-2個週期,具體取決於移位源,這可能是嵌入指令或從寄存器讀取的常量。

另外,關於load-store-multiple的註釋旁邊也可能因涉及的寄存器數量而異,但如果地址是對齊的,它們也會有所不同。

+0

+1如果你看看axi總線,首先考慮對齊和總線寬度,但後來認爲這是芯片供應商進來和手臂無法控制的地方,時間差別很大,從相同的內核使用由不同的廠商在不同的實現中。包括最簡單的(nop)指令在內的所有指令都需要多個時鐘週期,這是現代流水線架構的本質。 –