從Multicore到Many-Core:體系結構和經(jīng)驗
編程模型
這三種芯片代表了系統軟件開(kāi)發(fā)人員三種完全不同的模型。Octeon Fusion非常專(zhuān)用:它是芯片基站。編程人員使用它時(shí),將基站應用線(xiàn)程映射到CPU、加速器和DSP上,通過(guò)中心共享高速緩存來(lái)同步線(xiàn)程。雖然可以在CPU之間或者在DSP之間動(dòng)態(tài)映射任務(wù),還是需要在不同類(lèi)型的處理器之間來(lái)回遷移一些任務(wù)。
對于軟件設計人員,16核SPARC64在兩方面是完全不同的。所有這些處理器都是一樣的,都共享一個(gè)L2,因此,不需要將線(xiàn)程鎖定某一CPU。硬件加速器位于指令級,由編譯器推斷其使用,而不是由編程器進(jìn)行調用。您不需要在分立的硬件加速器之間輸入輸出數據,確定正確的線(xiàn)程位于正確的CPU上,或者與松耦合輔助處理器同步。
Xeon Phi在數量上與Fujitsu SPARC64芯片不同,北向有50個(gè)CPU,而不是16個(gè)。其互聯(lián)結構也明顯不同,連貫環(huán)上有適度的專(zhuān)用L2,而不是完全共享的L2。毫無(wú)疑問(wèn),對于與以前IBM相似的Intel體系結構,雙環(huán)是最高效的芯片實(shí)現方式。
Intel和Fujitsu芯片都具有同構體系結構的優(yōu)點(diǎn),不需要專(zhuān)門(mén)調用硬件加速器,性能與具體位置無(wú)關(guān),沒(méi)有跑道方式那么復雜。軟件設計人員可以按照自己的方式,將任何混合數據流、多線(xiàn)程或者數據并行機映射到CPU中。
那么,這到底意味著(zhù)什么?
很顯然,這三種完全不同的many-core芯片對軟件開(kāi)發(fā)人員提出了不同的需求。但是,如果是這樣,這些SoC究竟給系統開(kāi)發(fā)人員帶來(lái)了哪些問(wèn)題呢?由于這些芯片是新出現的,因此,我們向其他公司中有many-core應用經(jīng)驗的用戶(hù)提出了我們的問(wèn)題。
他們建議我們應深入了解幾個(gè)不同的問(wèn)題。一是配置:SoC需要多大的I/O帶寬、總線(xiàn)帶寬以及外部存儲器帶寬?第二,密切相關(guān)的問(wèn)題是性能建模。芯片到底需要多大帶寬與它使用數據和產(chǎn)生數據的速度有關(guān)。第三是控制問(wèn)題:SoC怎樣處理中斷?芯片初始化調試操作、電源管理和按序關(guān)斷時(shí),都需要什么條件?還有功耗問(wèn)題,在另一篇文章中專(zhuān)門(mén)解決了這一問(wèn)題。
有經(jīng)驗的用戶(hù)還提出了另一個(gè)有用的建議:明確Octeon Fusion等異構專(zhuān)用SoC與Xeon Phi等同構芯片之間的不同。專(zhuān)家說(shuō),這兩方面代表了完全不同的挑戰。
數據之后
異構many-coreSoC盡管在內部組織上是圍繞共享存儲器和總線(xiàn)進(jìn)行構建,而實(shí)際上用作數據流機。在某一工作模式下,已知數據流通過(guò)芯片的各種處理器來(lái)傳送,一般是固定的數據無(wú)關(guān)碼型。這些約束簡(jiǎn)化了系統級分析。
全球研究組織IMEC (比利時(shí)Leuven)的軟件無(wú)線(xiàn)電(SDR)研究部科學(xué)項目總監Liesbet Van der Perre解釋說(shuō):“這些系統的存儲器數據流有很高的可預測性。在這些系統中,數據流定義了處理器和通路。在某些共享總線(xiàn)或者存儲器結構中的某些點(diǎn)上,您會(huì )看到瓶頸,但這通常是可以預測的。”
Van der Perre的計劃是采用可重新定義的粗粒度處理器陣列來(lái)實(shí)現移動(dòng)SDR。芯片配置會(huì )隨著(zhù)射頻工作模式而變化,但是,當射頻保持在某一模式上時(shí),配置會(huì )保持穩定。那么,在某一模式下,陣列的行為實(shí)際上與靜態(tài)異構體系結構非常相似。一旦您理解了數據流之后,就比較容易對帶寬需求和功耗進(jìn)行建模。其實(shí)施要求主要來(lái)自算法級模型。
這種實(shí)現方法是應用異構多處理器常用的方法,能夠以同樣的方式來(lái)使用同構many-core系統。對于某一工作模式,可以將任務(wù)固定映射至處理器和存儲器,明確設計團隊的配置需求,能夠解釋數據。由于這種映射,分析SoC體系結構和算法描述體現了系統設計人員是否具有這方面的設計技巧。這也是Mercury計算機公司成名的原因之一,該公司是高端嵌入式計算公司,在PowerPC早期就使用了multicore和many-core體系結構,并率先使用了圖像處理單元(GPU)進(jìn)行信號處理。Mercury公司的技術(shù)總監Scott Thieret說(shuō):“這成為我們增值的主要來(lái)源,使我們能夠與客戶(hù)一起工作,將數據流映射到硬件中。”
通過(guò)固定映射,至少有信心在理論上對數據流和功耗建模。但這并不意味著(zhù)很容易實(shí)現。Thieret說(shuō):“對這些系統建模和優(yōu)化來(lái)自于經(jīng)驗。您需要進(jìn)行很多測試。有一些重要的指南,例如,讓數據盡可能靠近處理器,利用芯片最佳數據移動(dòng)模型等。但這要依靠經(jīng)驗。”
動(dòng)態(tài)挑戰
一些規劃人員認為many-core系統的未來(lái)是在另一方向:不是將任務(wù)靜態(tài)映射至處理器,而是流動(dòng)的、虛擬化系統,其中任何線(xiàn)程都可能隨時(shí)占用任何資源。在這一環(huán)境中,預測帶寬需求、處理負載甚至是功耗都會(huì )成為很復雜的任務(wù)。
一家經(jīng)驗豐富的many-core系統開(kāi)發(fā)公司內部人士評論說(shuō):“出于這一原因,發(fā)售的很多系統性能都不是太好。開(kāi)發(fā)人員能夠對系統平均帶寬需求進(jìn)行建模,但是,他們低估了峰值需求,遇到了無(wú)法預測的瓶頸問(wèn)題。使其能夠正常工作的唯一方法是降低系統性能。”
他繼續解釋說(shuō):“很難預測這些系統中的總線(xiàn)競爭或者峰值帶寬。設計人員一般甚至都不會(huì )進(jìn)行嘗試;他們只是盡量做好總線(xiàn)和外部存儲器配置。他們設計,測試,并不斷重復。”
這種不確定性意味著(zhù),在工程開(kāi)始時(shí),如果缺少工作參考設計,則無(wú)法知道某一many-coreSoC是否能夠滿(mǎn)足一些特殊的要求。解決的唯一方法是為系統提供過(guò)多的資源,使得資源競爭不會(huì )超出能夠使用的資源范圍。
這樣做必然的結果就是增大了功耗。如果不能提前預測哪些處理器會(huì )全速運行,哪些會(huì )降速工作,哪些會(huì )在某些時(shí)刻關(guān)斷,那么,很難估算SoC和DRAM的功耗或者溫度。Thieret認為:“很難預測功耗??偣牡葦祿笜藥缀跖c系統中的實(shí)際功耗不相干。您最好的做法是借鑒以前工程的經(jīng)驗,進(jìn)行大量的測試。在FPGA行業(yè)以外,還沒(méi)有很好的工具來(lái)進(jìn)行早期功耗估算。”
誰(shuí)在控制?
如果理解了many-coreSoC的性能和功耗是很大的挑戰,那么,也就知道這些芯片的系統控制同樣是棘手的問(wèn)題。與前兩個(gè)問(wèn)題不同,對于異構、靜態(tài)映射的系統,系統控制并不那么簡(jiǎn)單。也不能通過(guò)過(guò)度設計來(lái)解決這一問(wèn)題。Thieret提醒說(shuō):“系統控制是一個(gè)基本問(wèn)題,隨著(zhù)處理器數量的增加,會(huì )越來(lái)越復雜。但是,您必須解決這一問(wèn)題。”
最基本的難點(diǎn)在于將不同處理器中的任務(wù)與外部異步事件同步,例如,中斷、調試信號或者掉電等。即使是以清晰數據流模型為主的靜態(tài)系統,如果需要對某一處理器中的任務(wù)進(jìn)行中斷,以響應某一事件,那么,也很難弄清楚應該啟動(dòng)、暫?;蛘咧匦峦侥男┤蝿?wù)。
在同構虛擬系統中,只有系統管理程序知道某一任務(wù)所在的位置,幾乎不可能在正確的地方及時(shí)執行中斷,在嵌入式操作系統中,會(huì )很難完成這一過(guò)程。系統設計人員可能要考慮中斷的替代方案,例如,讓一個(gè)處理器專(zhuān)門(mén)用于輪詢(xún)外部事件,或者使用中斷信號來(lái)啟動(dòng)新服務(wù)線(xiàn)程,而不是中斷現有線(xiàn)程。這些方法都不能很好的解決SoC內部和外部之間復雜的仲裁問(wèn)題。
初始化和關(guān)斷是同樣的難題。只是停止所有處理器上的所有線(xiàn)程,并不是一種好選擇,這可能會(huì )破壞數據結構,或者使得受控機處于危險狀態(tài)中。在出現電源完全失效等情況時(shí),也會(huì )很難理解系統是怎樣工作的。一開(kāi)始就會(huì )很難。一些設計團隊已經(jīng)證實(shí),能夠設計無(wú)法初始化的芯片。一些設計支持有序啟動(dòng),但是不在系統要求的時(shí)間范圍內。Thieret看到:“不同的應用有不同的需求。有時(shí)候,您有一個(gè)小時(shí)的重新啟動(dòng)時(shí)間,而有時(shí)候,只有四秒的時(shí)間。” Many-core計算的前景很直觀(guān):這是摩爾定律向前發(fā)展的唯一途徑。而采用many-core SoC來(lái)實(shí)際實(shí)現系統時(shí),在系統理解、估算、配置和控制等方面會(huì )帶來(lái)很多新問(wèn)題。SoC設計人員和系統設計人員一般通過(guò)參考設計來(lái)互相理解,這樣才能夠推動(dòng)向前發(fā)展。
評論