軟硬體協同設計如何優化晶片架構

王樹一 發佈 2022-05-17T10:55:01.074669+00:00

文︱BRIAN BAILEY來源︱Semiconductor Engineering編譯 | 編輯部僅通過單獨查看硬體或軟體來優化在系統上運行的工作負載是不可能的。這項工程需要共同開發並錯綜複雜地交織在一起,還需要將兩個具有悠久獨立運行歷史的領域連接起來。

文︱BRIAN BAILEY

來源︱Semiconductor Engineering

編譯 | 編輯部

僅通過單獨查看硬體或軟體來優化在系統上運行的工作負載是不可能的。這項工程需要共同開發並錯綜複雜地交織在一起,還需要將兩個具有悠久獨立運行歷史的領域連接起來。

在計算的早期,硬體和軟體是由完全獨立的團隊設計和構建的,通常在不同的企業或部門中,並且很少或根本沒有直接通信或共同管理。這使得優化任何設計都很困難。

最近,硬體和軟體工程團隊已經了解到,通過加強合作可以取得巨大收益。隨著世紀之交電子系統級設計(ESL)的引入,軟硬體的界限逐漸模糊。當時EDA公司試圖構建從統一描述自動創建硬體和軟體的流程。使用ESL,設計被劃分為幾個部分,各部分都能夠以最佳技術實現。事實證明,對於ESL來說,這項工程過於龐大,以致於難以獲得過多的支持。但是現在,為定義的工作負載定製處理器的概念逐漸成為標準做法。

在更快、更高效的設計競賽中,優化不僅僅是構建更好的硬體或更好的軟體。它是關於以識別實現能力的方式定義工作負載。例如,重要的是要了解與定義準確性提高1%的AI學習算法相關的含義。成本是否超過收益?或者,如果使用量化,這將對精度、功耗、成本和其他因素會產生什麼影響?將應用映射到硬體編譯器或其他工具的效率如何?

同樣,在量子計算中,考慮到硬體的錯誤率和其他限制,哪些工作負載是可能的?有一個使系統成熟的過程,但並非所有事情都以相同的時間或相同的速率發生。

當前的晶片架構

要了解正在發生的變化,了解該過程過去的工作方式會很有幫助。「長期以來,業界都以某種方式開展晶片設計工作,」Cadence Tensilica AI產品的產品營銷總監Suhas Mitra表示。「隨著時間的推移,工程師開發了更多的軟體,硬體也在發展。有人為處理器設計了一個工作架構,可獲取指令並執行。這適用於簡單的應用程式。但是,當他們想要擴展到更高的應用程式時,他們意識到需要更多的內存,也許是一些緩存。然後他們需要內存保護,或者其他東西,需要以某種方式做某些工作,因為功耗低,所有這些都是由競爭驅動的。」

任何與中斷相關的設計都可能面臨很高的風險。「多年前,GPU架構是通過查看算法要求來設計的,」Tensilica Xtensa Processor IP,Cadence的產品營銷總監George Wall指出。「但在硬體原型存在之前,軟體開發人員實際上並沒有太多事情可做。在他們擁有硬體之前,他們無法針對該硬體開發軟體。因此,硬體開發將先於軟體。然而,這種情況正在改變。開發左移正在推動該行業加速軟體開發的啟動,這樣他們就不會被困在等待硬體的困境中。」

處理器架構的開放也正在推動這一趨勢。在最近的一篇博客中,Codasip大學項目負責人Keith Graham寫道:「由於固定和封閉的處理器架構,傳統的研究僅限於軟體算法和外部硬體資源。不幸的是,研究方程式的一個重要組成部分(處理器)被遺漏了。處理器架構優化涉及兩個關鍵概念,將特定於應用的功能緊密耦合到處理器中,並通過減少周期數來提高處理器性能。」

處理器架構優化現已納入大學研究(圖源:Codasip)

但這不是傳統上用於優化系統的路徑。「真正的挑戰是,對於特定領域的架構開發人員來說,要擊敗CPU和GPU等現有架構,他們需要高度專業化的解決方案,」西門子EDA的HLS平台項目總監Russell Klein表示。「但要獲得足夠大的市場,使其在商業上取得成功,它們將需要高度靈活的方案。也就是說,它們必須是可編程的。這是一個艱難的組合,因為這兩個目標截然相反。具有非常特殊需求的開發人員可能希望創建自己的硬體加速器,這消除了高度可編程或針對大型市場的需要。」

許多提議的架構似乎都是在尋找一個問題。「從CPU到xPU的演變仍在繼續,幾乎沒有一天不會看到一家新公司推出新的計算平台,」西門子EDA IC設計驗證部門戰略總監Neil Hand指出。「許多企業不會成功。從本質上講,為工作負載創建新架構完全與風險/回報率有關。潛在的問題是,是否會發生某些事情來改變這種風險/回報等式。如果是這樣,它是否加速了從通用處理到特定於工作負載處理的過渡。」

也許是市場失敗了,而不是提議的架構。「我不會假設有人設計了一個晶片,然後想,『讓我找到一個我可以使用該晶片的應用,』」Arteris IP的研究員兼系統架構師Michael Frank指出。「這是倒退思維。您可能有一個晶片,然後您正在尋找該晶片的替代用途。最初,該晶片的設計考慮了特定的用例。」

所有這些都假設硬體可以滿足最低要求。「當今量子計算的主要重點是,創建更可靠的量子計算機,這些計算機可以執行容錯量子計算所需的所有操作,並具有所需的準確性和精度,」是德科技研發運營經理Joel Wallman稱。「需要兩個主要的升級。首先,量子系統的物理實現需要更加健壯。其次,需要開發量子計算機的控制系統,以實現極其精確和快速的亞微秒級控制序列,並具有實時反饋,從而實現高效的電路執行和錯誤診斷。」

晶片架構演進

需要執行大量分析才能選擇正確的體系結構。「首先,你要考慮該用例的要求,」Arteris的Frank表示。「熱點在哪裡?什麼是內存占用量?特定用例的內存帶寬要求是什麼?大公司的架構師曾經做過電子表格驅動的分析。這已經讓位於更逼真的建模,可能使用像Gem5或QEMU這樣的模擬器。通過獲取應用程式軟體,運行並收集跟蹤。可以分析一定時間內的讀取和寫入次數,內存占用量以及正在執行的操作類型。例如,如果有很多矢量類型的操作,則可以使用此數據來推動構建計算機的決策。這是一場平行化事物的競賽。這是一個多層次的分析類型,希望不會留下任何障礙,因為如果錯過了一些重要的東西,你的系統可能無法處理工作量。」

一旦工作負載被市場接受,對它的要求通常會發生變化。「我在開發社區看到的不是太多的新工作負載,而是對現有算法的更好性能和效率的需求,以提供過去不實用的解決方案,」西門子的Klein指出。「用戶希望將實時4K圖像處理和AI內置到一副眼鏡中以實現增強現實,他們希望它的重量不足一盎司,更輕薄小型化,並且一次充電即可運行一周。」

「視頻播放是一個很好的例子,」Frank認為。「在過去,他們為此製造了專門的晶片,只是為了解碼視頻。如今,每個小設備都有一個視頻解碼器和編碼器,用於所有不同標準的高解析度視頻。有一個需要針對不同的市場的用例。性能要求是一個通用術語,因為性能要求可能不僅包括在一定時間內完成工作,而且可以用一定的可用能量完成工作。這是一個多維的問題。」

我們看到人工智慧也出現了類似的情況。「數據中心的模型正變得越來越複雜,」Cadence的Mitra表示。「模型也需要在邊緣上簡化。這意味著頻譜非常廣泛,這就是推動特定領域計算的原因。一家公司可能希望以物聯網為目標,這決定了僅適用於該特定領域的硬體。」

對於可能在兩個位置都發生的推理,這具有重要意義。「推理不再僅僅發生在雲中,也發生在邊緣,」Untether AI產品高級總監Philip Lewer稱。「這更是加深了對AI工作負載加速的需求,從可以達到500 TOPs的獨立高端AI加速器到微控制器的專用AI加速智慧財產權,性能低至數十個GOPs。」

硬體設計面臨挑戰

硬體設計面臨著重大挑戰。「任何開發設計都存在挑戰和風險,」Mitra認為。「你為某種類型的工作負載構建了一些硬體架構,儘管花了三年時間,但該架構並沒有成功普及。如今,市場正朝著不同的方向發展。模塊在不斷發展,而不僅僅是通過擴展。現階段,轉換器架構正在接管自然語言處理。對於ASIC的構建,開發者將會對任何結構進行強化。在某些市場領域,更青睞於使用FPGA,因為FPGA不必強化所有東西。它們可以在結構中保留一些功能,使設計更加靈活自如。」

這一挑戰正在影響著整個行業的發展。「我們可以看到,在基於變壓器的網絡上構建的大型語言模型的使用有所增加,」Untether的Lewer表示。「這些網絡最初專注於該用例,但我們現在看到它們越來越多地用於其他應用,如視覺,它們正在取代CNN。」

經濟效益驅動一切。「如果有人認為某個領域已經足夠穩定,並且可以構建硬體來支持其在幾年內運行所需的網絡,他們就更有信心加固,」Cadence的Wall稱。「但是,對於任何這些工作負載解決方案而言,具備一定程度的可編程性很重要。開發者不希望看到的是,在僅針對一類特定類別的網絡進行設計之後,發現兩年後市場已經向前發展。因此,在硬體設計開發方面,應該考慮可編程性和靈活性。」

除了算法的演進之外,還有一些技術進步可能會產生很大的影響。「目前將所有數據移動到中央處理單元的範式(操作詞是『中心』),然後返回內存,這種方式是非常低效的,」Klein表示。「在許多系統中,數據移動限制了整體性能。在更靠近存儲位置的地方處理數據可以極大地提高性能和功耗。可以看到,在編程中,存內計算或近內存計算面臨著巨大的挑戰。軟體開發人員如何描述操作並同步活動?在某種程度上,這是一個並行編程問題,到目前為止,軟體開發社區在很大程度上迴避了這個問題。」

人工智慧算法改變晶片架構

AI由GPU實現。「對於軟體開發而言,它定義了一組硬體要求,」Frank指出。「當時,GPU是最好的產品。GPU可以對獨立元素進行良好的並行處理。實際上,有時開發者必須修改算法才能在現有硬體上更好地工作。在某些時候,他們意識到不需要整個GPU。相反,他們需要一些更專業的東西。」

GPU的許多方面已經發展成為AI加速器。「GPU使用浮點,」Mitra稱。「但你只需要這些浮點模型的定點版本進行推理。如今,開發者正在嘗試更小版本的浮點模型,比如bfloat16。對於某些工作負載,即使是8位量化也可能足夠了。而對於另一些工作負載,可能需要更高的量化。這並沒有一個統一的正確答案,沒有一種量化格式適用於所有工作負載。這種情況給晶片公司或研究所帶來了很多困難,因為他們開發面向未來的技術和產品。開發者必須能夠重新定位、重新運行,以找到合適的方案。」

隨著對工作負載的理解越來越明確,其他架構變化也隨之出現。「對於計算並行化,你將繼續看到各種類型的空間架構,」Lewer表示。「這些允許將複雜圖形分解為數千個通過某種類型片上網絡連接的處理元素。內存速度和更大的內存深度使快速訪問大量權重和激活成為可能,反過來,內存和計算之間的耦合也將越來越緊密。」

如今,大多數架構都在嘗試優化操作,而不是優化工作負載。「硬體尋找應用,但工作負載是底層基礎,」Frank介紹。「工作負載可能是矩陣乘法。通過構建能夠良好運算矩陣乘法的算法架構,以廣泛應用於諸多應用領域。但是,應用不能和工作負載混淆一談。這是你試圖加速的一個算法元素,它定義了所謂的工作負載。」

總結

如今,軟體的發展升級速度要比硬體更為快速。這就導致硬體逐漸尋求更多策略,來滿足當今軟體的發展需求,同時能夠在不犧牲性能的前提下適應未來的發展需求。硬體與軟體應當協同發展,而不是成為競爭者。由於對多個操作環境的考慮,市場對軟體的需求也在不斷發展。

「軟硬體架構的優化將分為幾個階段,」Mitra表示。「即新網絡開發階段、新架構階段,及以需求為導向,對現有架構的改進開發階段。開發者可根據需求考慮培訓或推理,或者兩者兼有,這意味著他們將需要滿足PPA要求的多種解決方案。」

硬體正以前所未有的速度發展,現在必須解決這個問題的經濟性。軟體直接成為硬體的驅動力,但它也受到硬體可能性的影響。

關鍵字: