自從賽靈思在上世紀 80 年代初期開發和推出世界首款 FPGA 后,這些用途豐富的可編程邏輯器件就成為硬件工程師的 MacGyver 萬能工具。賽靈思最近發布了SDx系列開發環境(即 SDAccel、SDSoC 和 SDNet),使軟件開發人員和系統工程師(非 FPGA 設計人員)能夠利用賽靈思器件輕松創建自己的定制化軟件定義硬件,從而助力更多創意頭腦實現非凡的創新技術。
介紹這些新型環境以及賽靈思及其聯盟成員提供的其他軟件開發資源之前,我們先來思量一下處理架構的演變及其對軟件開發的影響。
這是軟件問題...
2000 年以前,典型的微處理器主要由一個帶有板載內存的巨型單片處理器內核和一些其他零部件組成,使 MPU 成為一種用以開發新一代應用的相對簡單直觀的平臺。在那之前的三十年里,微處理器廠商每隔 22 個月就會以摩爾定律的增長速度推出具有更高容量和性能的器件。他們會簡單地以增加時鐘速率的方式來提高性能。當時速度最快的單片 MPU 是英特爾奔騰4處理器 (Pentium 4 Pro),其極限速度剛剛超過 4GHz。這種演進對于開發人員來說非常重要,因為隨著每代產品的推出,他們的程序會變得日趨復雜,能執行更細化的功能,而且程序運行速度更快。
圖 1:Zynq UltraScale+ MPSoC
但在 21 世紀初期,半導體行業改變了游戲規則,迫使開發人員根據一套新的規則進行調整。這種轉變起始于人們意識到了如果 MPU 產業繼續在新的單片 MPU 架構中提高時鐘速率,那么鑒于芯片工藝技術的發展路線圖以及日趨惡化的晶體管漏電流問題,MPU 將很快達到與太陽相同的功率密度。
正因為如此,MPU 產業快速向同質多處理架構轉型;在這種同質多處理架構中,計算任務被分配給多個以較低時鐘速率運行的小型內核。新的處理模型讓 MPU 和半導體廠商能夠繼續生產新一代容量更高的器件,并將更多功能集成到單個芯片中以獲得更高性能。然而,現有程序無法利用新型分布式架構,因此軟件開發人員必須想辦法開發出能夠跨多個處理器內核高效運行的程序。
SDAccel 環境包括一個快速的架構優化編譯器,能高效利用片上 FPGA 資源。
同時,后來的幾代芯片工藝技術繼續使晶體管數量成倍增長,讓半導體公司能夠采取另一個創新舉措,即將不同類型的內核集成到同一顆芯片中,創建出 SoC。這些異構多處理器架構給嵌入式軟件開發人員提出了更多挑戰,使軟件開發人員不得不開發定制軟件協議棧,讓應用能夠在目標系統上實現最佳運行。
如今,半導體行業又一次改變游戲規則,但這次軟件開發人員則對轉變持歡迎態度。面對另一個功耗窘境,半導體和系統公司正在將目光轉向由 FPGA 加速的異構處理架構。這種架構將 MPU 與 FPGA 緊密配合在一起,能以最小的功耗成本提高系統性能。這種新興架構最顯著的應用是用于新型數據中心處理架構中。在一篇現在著名的論文中,微軟研究人員展示了在架構上將 MPU 與 FPGA 組合在一起能實現 90% 的性能提升,同時功耗僅僅增加 10%,在單位功耗性能方面遠遠優于 MPU 與高功耗 GPU 相結合而實現的架構。
通過 FPGA 加速的異構多處理架構的優勢已經超出了數據中心應用范疇。賽靈思 Zynq-7000 All Programmable SoC 器件在單芯片上完美集成了 ARM 處理器和可編程邏輯,讓采用該器件的嵌入式系統受益良多。使用即將推出的 Zynq UltraScale+ MPSoC 的系統注定將會更加出色。Zynq UltraScale+ MPSoC 在單個器件中集成了多個 ARM 內核(4 個 Cortex-A53 應用處理器、2 個 Cortex-R5 實時處理器和 1 個 Mali-400MP GPU)、可編程邏輯、多級安全、更高安全性以及高級電源管理模塊(如圖 1 所示)。
不過,要讓這些 FPGA 加速的異構架構適合大規模部署并方便軟件開發人員使用,FPGA廠商必須開發新的環境。在這方面,賽靈思提供了三個開發平臺:針對數據中心開發人員的 SDAccel、針對嵌入式系統開發人員的 SDSoC,以及針對網絡線卡架構師和開發人員的 SDNet。這些賽靈思新環境讓開發人員能夠輕松將代碼的緩慢部分放在可編程邏輯上編程以加速程序,從而創建出最佳系統。
面向 OpenCL、C/C++ 的 SDAccel 通過編程實現 FPGA 加速處理
最新的賽靈思 SDAccel 開發環境為數據中心應用開發人員提供一套基于 FPGA 的完整軟硬件解決方案(圖 2)。SDAccel 環境包含一個能有效利用片上 FPGA 資源的快速的架構優化編譯器。該環境為開發人員提供類似于 CPU/GPU 的熟悉的工作環境和軟件開發流程,并具有一個用于代碼開發、特性分析與調試的基于 Eclipse 的集成設計環境 (IDE)。利用該環境,開發人員可以創建針對不同數據中心應用可即時換入換出而優化的動態重配置加速器, 可即時換入換出。開發人員可使用該環境創建諸多應用,這些應用能在運行時間內將眾多內核換入和換出 FPGA,且不會干擾服務器 CPU 與 FPGA 之間的接口連接,從而實現不間斷的應用加速。SDAccel 環境針對的是基于 x86 服務器處理器的主機系統,并提供現成商用插電式 PCIe 卡,以增加 FPGA 功能。
憑借 SDAccel 環境,開發人員即使先前沒有 FPGA 經驗也能使用 SDAccel 似曾相識的工作流程來優化他們的應用,并充分發揮 FPGA 平臺作用。該 IDE 提供編碼模板和軟件庫,并可用來針對所有開發目標進行編譯、調試和特性分析,包括 x86 上的仿真、使用快速仿真進行性能驗證,以及 FPGA 處理器上本地執行。該開發環境在面向數據中心的 FPGA 平臺上執行應用,而且能自動插入工具以實現所有開發目標。賽靈思設計的 SDAccel 環境能夠讓 CPU 和 GPU 開發人員輕松將應用遷移到 FPGA 上,同時在熟悉的工作流程中維護和重用 OpenCL、C 和 C++ 代碼。
圖 2: 面向 OpenCL、C 和 C++ 的 SDAccel 開發環境可將單位功耗性能提高 25 倍,利用 FPGA 實現數據中心應用加速。
SDAccel 庫對于 SDAccel 環境能實現類似于 CPU/GPU 的開發體驗起到了重大作用。SDAccel 庫包含低級數學庫以及生產力更高的庫(如 BLAS、OpenCV 和 DSP 庫)。這些庫用 C++(而非 RTL)編寫而成,因此開發人員可在所有開發和調試階段完全按所編寫的內容來使用它們。在項目早期,所有開發工作都在 CPU 主機上完成。因為 SDAccel 庫用 C++ 編寫,所以它們能夠與 CPU 目標(創建一個虛擬原型)的應用代碼一起編譯,從而允許所有測試、調試和初始特性分析在主機上進行。這個階段無需 FPGA。
SDSOC 支持 ZYNQ SOC 和 MPSOC 系統的嵌入式開發
賽靈思為嵌入式系統開發人員設計了 SDSoC 開發環境,用以針對賽靈思 Zynq SoC和即將推出的 Zynq UltraScale+ MPSoC 進行編程。SDSoC 環境提供極大簡化的嵌入式C/C++ 應用編程體驗,包括一個可在裸機或操作系統(例如 Linux 和 FreeRTOS)上運行的簡單易用的 Eclipse IDE。該環境是一種用于異構 Zynq SoC 和 Zynq MPSoC 平臺部署的綜合而全面的開發平臺(圖 3)。SDSoC 環境還配套提供業界首款 C/C++ 全系統優化編譯器,支持系統級特性分析、可編程邏輯中的自動軟件加速、自動系統連接生成,以及可加快編程速度的多種庫。該環境還為客戶和第三方平臺開發人員提供開發流程,以使平臺能夠在 SDSoC 開發環境中使用。
圖 3: SDSoC 開發環境提供熟悉的嵌入式 C/C++ 應用開發體驗,包括簡單易用的 Eclipse IDE 和綜合而全面的設計環境,以實現異構 Zynq All Programmable SoC 和 MPSoC 部署。
SDSoC 為 ZC702 和 ZC706 等 Zynq All Programmable SoC 開發板,以及包括 ZedBoard、MicroZed、ZYBO 和視頻與成像開發套件等在內的第三方和市場專用平臺提供板支持包 (BSP)。BSP 包含能夠從軟件開發人員和系統架構師的代碼中將平臺抽象出來的元數據,以簡化智能異構系統的創建、集成和驗證。
SDNET 支持 FPGA 加速線卡的設計和編程
SDNet 是一種軟件定義規范環境,它使用直觀的類似于 C 的高級語言來設計要求并創建網絡線卡規范(圖 4)。該環境使網絡架構師和開發人員能夠創建“軟”定義網絡,將可編程性和智能化從控制層擴展到數據層。
傳統的軟件定義網絡架構采用固定的數據層硬件,通過狹窄的南向 API 連接到控制層,而軟定義網絡則不然,其基于可編程數據層,具有內容智能功能和寬泛的北向 API 控制層連接。這樣能實現多種突破性的功能,包括: 支持獨立的線速服務,避免各種協議的復雜性;提供以流程為單位的靈活服務;支持革命性的創新型“無損業務”升級,同時以 100% 的線路速率運行。
圖4: SDNet 環境使網絡架構師能以類似于 C 的語言創建規范。硬件團隊完成設計后,開發人員可使用 SDNet 現場為線卡升級或添加協議。
這些獨特的功能使運營商和多業務系統運營商 (MSO) 能夠動態提供差異化服務,且不會對現有服務造成任何中斷,也不需要硬件質量認證或進行上門服務。該環境的動態服務提供功能使服務提供商能夠增加營收并加快服務上市速度,同時降低資本支出和運營支出。網絡設備供應商意識到同樣能夠通過 SDNet 平臺獲得相同的優勢,使他們能夠通過部署 SDNet 環境編程的內容感知式數據層硬件,實現更大的差異化。
MathWorks 和賽靈思技術的這種組合幫助公司客戶打造出眾多創新產品。
嵌入式開發環境
為了進一步幫助嵌入式軟件工程師進行編程,賽靈思提供全套嵌入式工具和運行時間環境,以幫助嵌入式軟件開發人員從概念到生產高效編程。賽靈思為開發人員提供一個名為賽靈思軟件開發套件 (SDK) 的基于 Eclipse 的 IDE,其中包含編輯器、編譯器、調試器、驅動程序和多種庫,針對的是 Zynq SoC 或含有賽靈思 32 位 MicroBlaze 軟核的 FPGA。該環境開箱即用并支持多種高級功能,例如構建在賽靈思獨特 Zynq SoC 和 MPSoC 之上的安全和虛擬化軟件驅動程序。這讓開發人員可以構建智能、安全的真正差異化的連接系統。
賽靈思提供全套開源資源,可用以開發、引導、運行、調試和維護在賽靈思 SoC或仿真平臺上運行的 Linux 應用。賽靈思提供實例應用、內核構建、Yocto 方法、多處理與實時解決方案、驅動程序和論壇,以及社區鏈接。Linux 開源開發人員會找到一個非常舒適的環境,在其中進行學習和開發,并與其他具有相同興趣和需求的用戶互動交流。
不斷壯大的強大編程環境聯盟
除了為開發人員提供新的 SDx 開發環境和 SDK 以外,賽靈思還在過去十年中與很多已經具有完善開發環境的公司組建了強大的聯盟,這些開發環境都在特定的細分市場為開發人員服務。
美國國家儀器公司 (NI)(美國德克薩斯州 Austin)提供的硬件開發平臺倍受控制和測試系統創新人員青睞。賽靈思的 FPGA 和 Zynq SoC 則為 NI RIO 平臺注入動力。NI 的 LabVIEW 開發環境是一款用戶友好型圖形化程序,可以運行賽靈思的 Vivado Design Suite,這樣 NI 的客戶就無需知道任何 FPGA 設計細節,有些客戶或許都不知道賽靈思器件位于 RIO 平臺的核心。但他們可在 LabVIEW 環境中對系統簡單編程,并讓 NI 的硬件為他們所開發的設計實現進行性能加速。
MathWorks(美國馬薩諸塞州 Natick)在十多年前就在其 MATLAB、Simulink、HDL Coder 和 Embedded Coder 中提供了 FPGA 支持,賽靈思的 ISE 和 Vivado 工具可在其中全自動運行。這樣,用戶(主要是數學專業的算法開發人員)就可以在開發算法時簡便地在 FPGA 架構上運行算法,并顯著提升算法性能。
賽靈思在十多年前為其 ISE 開發環境添加了名為 System Generator 的 FPGA 架構級工具,最近,又將該工具添加到 Vivado Design Suite 中,以便讓具有 FPGA 知識背景的團隊能夠對設計進行調整,以進一步提升算法性能。MathWorks 和賽靈思技術的這種組合幫助公司客戶打造出出眾多創新產品。
ARM、勞特巴赫有限公司 (Lauterbach)、日本橫河數字計算機公司 (Yokogawa Digital Computer Corp) 和京都微機集團 (Kyoto Microcomputer Corp) 等眾多賽靈思聯盟成員可提供支持 SDx 和 Alliance 環境的開發工具。在 OS 和中間件支持方面,賽靈思以及聯盟成員為客戶提供多種軟件選擇,諸如 Linux、RTOS、裸機,甚至包括管理程序和支持 Trust-Zone 內核的解決方案,滿足保密性和安全性需求。
-
FPGA
+關注
關注
1629文章
21746瀏覽量
603753 -
半導體
+關注
關注
334文章
27421瀏覽量
219169 -
芯片工藝
+關注
關注
0文章
13瀏覽量
7129
發布評論請先 登錄
相關推薦
評論