在PS3的結構裡面,CELL以FlexIO來連接RSX與SCC是眾所皆知的事情。
在CELL發表的時候,FlexIO以最大6.4Gbps、總共76.8GB/s,最大12byte的寬度(7 out + 5 in),各自可以8bit為單位切割…. 這部份大家都很清楚。
但是,RSX的FlexIO只做了4in、3out,5Gbps下共20GB/s in、15GB/s out的部份,卻一直沒有解答。
SCC與IBM的CELL-CC都做了1in 1out,提供雙向各5GB/s的頻寬,與RSX加起來總共只有45GB/s….. 和76.8GB/s @ 6.4GHz (or 60GB/s @ 5GHz)的最大頻寬實在有著很大的落差。
為什麼會差這麼多呢?是FlexIO的電氣規格有什麼缺陷存在嗎?
(有趣的地方是,PCI-Express 2.0規格也是訂到5Gbps為止,也許這是一個屏障沒錯)
不過如果考慮EIB的結構的話,或許會有些意外的狀況:
EIB對每個在上面的週邊(PPE、XDR控制器、八個SPE、以及FlexIO)各自提供了單向頻寬25.6GB/s的讀寫port。除了FlexIO有兩個port之外,PPE與XDR、八個SPE各自都有一個port,也就是說FlexIO實際上能使用的頻寬為51.2GB/s(單向),或是總共102.4GB/s(雙向總和)。
FlexIO本身實作面還需要查證,不過如果FlexIO控制器限制每個device只能對一個port作存取的話,因為EIB單一port單向最大只有25.6GB/s,所以對雙向的FlexIO來說,對EIB的兩個port只能各自設定成25.6GB/s in 與 out,FlexIO上的device也只能配合這個設定。
以雙CELL只實做20GB/s雙向的狀況來看,CELL與RSX剩下保留沒做的頻寬變成只有餘下的RSX往CELL的1in,約5GB/s…..不過身為GPU的RSX對寫回CELL所需的頻寬需求似乎並不需要刻意爭取這一塊,如果今天是兩個CELL互連的話,或許盡量做滿就會比較有意義。
當然,不見得FlexIO有這種限制,所以這只是一個假定。不過連雙CELL互聯實作也只有做到彼此只以20GB/s雙向連結,的確會讓人做出這種揣測。如果FlexIO在EIB上跨兩個port存取沒有問題,雙向總和各50GB/s 的頻寬絕對可以支撐FlexIO要求的吞吐,問題就完全只是RSX本身造成的。
比方說,另外一個說法是RSX的記憶體控制器被分割為128bit GDDR3 與 128bit 對 XDR,那麼既然GDDR3這邊只有22.4GB/s,XDR這邊是可以有所波動沒錯,但應該就不會大幅超過這個值才是。
另外,就算FlexIO真的有這個限制,而上面的敘述語氣聽起來RSX對CELL的頻寬好像不大,但是大家要回想一下PCI-Express 2.0提供的頻寬也只不過是8GB/s雙向,HyperTransport目前也只提供到X16的10.4GB/s雙向,FlexIO提供的頻寬仍然是非常大的。
—-
[EDIT]
根據CELL HIG的記載,上述的假定是正確的。任意一個單一Device只能從EIB上取得最大雙向16byte/cycle,1.6GHz 的頻寬,所以FlexIO上只裝配了雙向共5byte的讀寫介面,各為IOIF0與IOIF1,各自最大為4byte與2byte,IOIF0還可以設定為BIF,在這個狀態下具備Cache coherency。所以在IOIF0設定為4byte的狀況下,IOIF1只剩1byte可使用,這個狀況下各自只有20GB/s雙向與5GB/s雙向的總頻寬。
至於RSX只實作20GB/s + 15GB/s的頻寬,則應該進一步是RSX內部記憶體控制器的頻寬限制吧。
話說目前在巴哈的TV GAME哈啦版正在爭論PS3的記憶體夠不夠,
然後又辯論到RSX所能存取的VRAM是多少,
看樣子SCE若不快將系統所吃的記憶體量減少,
會招來更多的辯論性話題。
雖說RSX有著這麼大的頻寬與加大的texture cache去cover EIB造成的延遲來存取XDR,
但要把RSX當成SPE般來一起平行處理的問題就蠻多了,
更何況”系統所吃的記憶體量”這點小事…_A_
最近ID tech5的跨平台title發表之故,Carmack的訪談也被拉出來….他們就有說過實作面來看PS3是最麻煩的,不過這也和MegaTexture的觀念有關係。
MegaTexture基本上是階層式記憶體、streaming和ClipTexture的動態更新一起混合起來的一個作法,所以存取範圍也和一般的階層記憶體一樣,是以越快的記憶體越小、越慢的記憶體越大的基礎去做的。
但是這時候我們回顧一下PS3的記憶體設定:Main 256、Graphic 256,還外加OS扣掉main 64(目前稍減至52)、Graphic扣32,也就是說其實對PS3而言,主記憶體是比繪圖硬體可用記憶體還少的。
當然這理論上應該不會有什麼問題,尤其是對繪圖應用為主的Console來說應該問題不大;但是對MegaTexture來說問題應該就不小。