Swift:高級架構、流水線深度、內存延遲 轉載



http://hi.baidu.com/nqkafzesyqgsuzr/item/6fdbbc04f37c88e4ff240dd7

【Swift:高級架構、流水線深度、內存延遲】

根據之前的發現,以及其它一些資料,Swift的高級架構應該是這個樣子。雖然只是象徵性的,不同單元的分佈位置誰也不清楚,但總體應該差不了多少。 


對比Cortex-A9: 


Swift的前端從2寬度升級爲3寬度,仍舊是個相對很小的亂序核心,但執行端口從3個增加到5個。注意專用的載入與存儲單元,可能是浮點性能驟增的原因之一。
我們知道,高通Krait也是人家自己設計的CPU核心,但高通不肯公佈任何具體資料。它也是類似的3寬度前端,但是7個執行單元只有4個端口,不過具體分佈就不知道了。Intel Haswell發佈前九個月就敢公開整數和浮點寄存器文件,高通的都出貨半年了卻連高級架構都不肯透露一點!


Cortex-A15的前端也是3寬度,號稱拾取帶寬比Cortex-A9翻番,還可以亂序執行更多類型的指令,並使用3個獨立的發射池(issue pool)來滿足8個獨立的流水線,包括載入與存儲、兩個整數ALU、兩個浮點/NEON、一個分支、一個乘除法。 
Swift比它肯定要差多了,更可能和Krait處在類似的水平上。 


流水線深度方面,Cortex-A8是13級,Cortex-A9精簡爲8級但頻率基本不變(所以性能更突出),Cortex-A15則又加深到15級,高通Krait定製的是11級,順便說Intel Atom擁有最深的16級。 
Swift是多少呢?Anand Shimpi又寫了兩種不同的代碼路徑,分別有簡單可預測的分支和複雜難預測的分支,最後以主代碼循環的時鐘週期衡量延遲。 


無論簡單還是複雜預測,Swift都和Cortex-A8差不多,但是要比Cortex-A9長很多,證明Swift的預測錯誤要比Cortex-A9多了大約50%,但是和Cortex-A8基本一致,複雜的稍多一點。據此猜測,Swift的流水線可能是12級的,跟高通Krait很接近。
但是儘管流水線深度加大了,蘋果依然保住了IPC,從前邊的Geekbench 2對比數據就可以看出來。應該是分支預測精度有了大幅度的改進,這也是加深流水線深度的時候芯片設計師必須注意的問題。蘋果做得很好。 
最後是內存延遲。iPhone 5性能測試顯示了CPU核心內存帶寬的大幅提升,但既然外部位寬仍是64-bit,所有這些改變肯定來自內部的緩存和內存控制器。繼續自己寫代碼測試。 


無論何種尺寸,Swift的延遲都是最低的,只不過4-16KB左右的時候差距不大。超過32KB(一級數據緩存容量)之後,Swift的優勢就凸顯出來了(Cortex-A8有256KB二級緩存所以有延遲增加很快)。這與其它iOS內存測試表現相符合。 
低得多的內存延遲再配合專用的載入與存儲端口,iPhone 5的內存性能相比iPhone 4S可以提升2.5-3.2倍。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章