簡體   English   中英

iPhone ARMv6 VFP組件延遲,吞吐量和危害

[英]iPhone ARMv6 VFP asm latency, throughput and hazards

在本文檔中: http : //infocenter.arm.com/help/topic/com.arm.doc.ddi0301g/DDI0301G_arm1176jzfs_r0p7_trm.pdf

在第21-25頁(pdf第875頁)中,給出了VFP單元組裝說明的吞吐量和等待時間。

這些數字獨立於vectorsize嗎?

1:讓我們以吞吐量為1且延遲為8的FMULS為例,這是否意味着如果我不使用當前未由上一個函數計算的寄存器,則可以在每個周期中開始一個新的FMULS操作嗎? 例如:

FMULS s8, s16, s20
FMULS s12, s21, s25

那些會互相追逐的人嗎?

2:如果我彼此有兩個FMULS函數,其中一個參數取決於先前的計算,會發生什么情況

FMULS s8, s16, s20
FMULS s12, s21, s8

VFP在開始處理第二條指令之前會等待8個周期嗎?

3:如果我們處於具有4個元素的向量模式中,並且在第二條FMULS指令上,所有輸入寄存器都可用,但一個可用,該怎么辦? 會發生什么?

4:sqrt和除法:sqrt或除法運算是否會阻止任何后續操作在19個周期內啟動?

謝謝!

您的問題都在您鏈接的文檔中得到了回答。 您應該仔細閱讀。

這些數字是否獨立於vectorsize?

否。例如,請參見所鏈接文檔中的表21-15。 注意短向量FADDS的等待時間。

這是否意味着如果不依賴尚不可用的較早結果,我可以在每個周期開始一個新的FMULS操作嗎?

是的,這就是吞吐量的定義。

如果我彼此有兩個FMULS函數,其中一個參數取決於先前的計算,會發生什么情況

執行將暫停,直到第一個FMULS的結果可用為止。 有關更多詳細信息,請參見21.6“記分板的操作”。

如果我們處於具有4個元素的向量模式下,並且在第二條FMULS指令上,所有輸入寄存器都可用但一個可用,該怎么辦? 會發生什么?

它會停轉。 相同的參考。

sqrt和除法:sqrt或除法運算是否會阻止任何后續操作開始19個周期?

否。請參見第21.10節“並行執行”。 表21-15中給出了一個示例,其中在FADDS立即執行不相關的FDIVS

請注意,對於許多類型的計算而言,編寫短於標量代碼的速度要快得多的短向量VFP代碼可能是一個挑戰(盡管並非不可能)。 即使您學習了如何做,它的價值也值得懷疑,因為NEON單元似乎是ARM上矢量計算的新模型。 從長遠來看,您可能會更好,因為現在忽略短向量運算,而專注於將來學習NEON。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM