先聲明 PS3 的記憶體頻寬有 25.6GB/s。
因為 PS3 的時間測量是以 tick 為單位,
而 PS3 有 79,800,000 ticks per second,
所以 Shady 會把比較結果換算成 GB/s 來比較。
以下為 Shady 的測試結果對比,
記憶體拷貝容量以 16MBytes 做測試。
Linux memcpy:
約 8,000,000 ticks,16*1024*1024/(8000000/79800000)/1000000000 = 0.167GB/s
freevec memcpy:
約 1,590,000 ticks,16*1024*1024/(1590000/79800000)/1000000000 = 0.842GB/s
Shady loop prefech freevec memcpy:
約 597,500 ticks,16*1024*1024/(597500/79800000)/1000000000 = 2.24GB/s
結果只能說悽慘...,
還有 Cell 模擬器是個"快樂模擬器",
因為它的 tick 為 25,000,000 ,且換算後的頻寬又較高,
更以 freevec memcpy 的測試數值最高,有超過 25.6GB/s 的 50%,
但 Shady 猜想此模擬器應該是對應 PowerXCell8i 版的 Cell,所以會有所不同。
看樣子得重寫個沒有 loop 版的 prefech memcpy 才行了...XD
訂正:
以上的測試與計算方式有誤,
因為三者是在同一程式按順測試,
所以順序越後者,其速度較快。
在 Shady 重頭一一測試後,
"Shady loop prefech freevec memcpy"項之 Tick 值約為原本的四倍不到,
而其餘二者則高出 10000ticks 多以上。
而計算頻寬之方式,
Shady 還在尋找其他方法。
沒有留言:
張貼留言