「速度」二字其實就暴露了業余身份。但是業余沒啥,術業有專攻。
如果只是填充幾個字節,論速度很可能是CPU快。
但是如果是填充幾十MB幾GB這種量級,GPU快的可能性很大。
這裏的「快」,指從開始寫出第一個數據,到全部數據寫入目標儲存的時間。
造成這種差異的主要原因在於,通常CPU所使用的DDR,是按照高穩定、低遲延、低頻寬設計的。現代CPU雖然有的時候也用來進行大數據的處理,但是更多時候是用於控制。單命令處理的數據量相對較小,因此不需要很高的頻寬,但是要低延遲。
打個比方的話,就好像家裏客廳到臥室的過道,不寬,但是距離短。
而GPU的套用場景主要是大量數據的相對簡單的處理,而且是高並列處理。所以與GPU配對使用的GDDR,是按照高頻寬、高延遲、相對低穩定性來設計的。
打個比方的話,就好像連線家和學校的馬路。路寬,但是路遠。
所以,如果只是寫少量數據,那麽這個時候延遲起絕對作用,延遲低的勝出,也就是CPU+DDR勝出。
但是如果要寫大量數據,那麽這個時候路寬的可以開大卡車,但是路窄的只能走人。延遲就不再是決定性因素,頻寬變為瓶頸。從而GPU+GDDR勝出。
目前,桌面級別的CPU和記憶體的頻寬,在小幾十GB/s,這個量級。而GPU和視訊記憶體之間的頻寬,在幾百GB/s這個量級。兩者之間差不多有將近10倍的差別。
不過GPU為了支持並列,對於視訊記憶體的分頁以及對齊等等有諸多要求。如寫出數據時不能很好滿足這個要求,效能會飛速降低,以至於只有原本的1/10左右,都是可能的。