采用C/C++、OpenCL編程中的下個邏輯步驟
自從賽靈思在上世紀 80 年代初期開發(fā)和推出世界首款 FPGA后,這些用途豐富的可編程邏輯器件就成為硬件工程師的 MacGyver 萬能工具。 賽靈思最近發(fā)布了 SDxTM 系列開發(fā)環(huán)境(即 SDAccelTM、SDSoCTM 和 SDNetTM), 使軟件開發(fā)人員和系統(tǒng)工程師(非 FPGA 設計人員)能夠利用賽靈思器件輕松創(chuàng)建自己的定制化軟件定義硬件,從而助力更多創(chuàng)意頭腦實現(xiàn)非凡的創(chuàng)新技術。
本文引用地址:http://m.butianyuan.cn/article/284914.htm介紹這些新型環(huán)境以及賽靈思及其 聯(lián)盟成員提供的其他軟件開發(fā)資源之 前,我們先來思量一下處理架構的演變 及其對軟件開發(fā)的影響。
這是軟件問題…
2000 年以前,典型的微處理器主要由一 個帶有板載內存的巨型單片處理器內核 和一些其他零部件組成,使 MPU 成為一 種用以開發(fā)新一代應用的相對簡單直觀的平臺。在那之前的三十年里,微處理器廠商每隔22個月就會以摩爾定律的增長速度推出具有更高容量和性能的器件。他們會簡單地以增加時鐘速率的方式來提高性能。當時速度最快的單片 MPU 是英特爾奔騰 4 處理器 (Pentium 4 Pro),其極限速度剛剛超 過 4GHz。這種演進對于開發(fā)人員來說非常重要,因 為隨著每代產品的推出,他們的程序會變得日趨復 雜,能執(zhí)行更細化的功能,而且程序運行速度更快。
但在 21 世紀初期 ,半 導 體行 業(yè)改 變 了游 戲規(guī) 則,迫使開發(fā)人員根據(jù)一套新的規(guī)則進行調整。這 種轉變起始于人們意識到了如果 MPU 產業(yè)繼續(xù)在新 的單片 MPU 架構中提高時鐘速率,那么鑒于芯片工藝技術的發(fā)展路線圖以及日趨惡化的晶體管漏電流問題,MPU 將很快達到與太陽相同的功率密度。
正因為如此,MPU 產業(yè)快速向同質多處理架構轉型 ;在這種同質多處理架構中,計算任務被分配 給多個以較低時鐘速率運行的小型內核。新的處理 模型讓 MPU 和半導體廠商能夠繼續(xù)生產新一代容量 更高的器件,并將更多功能集成到單個芯片中以獲 得更高性能。然而,現(xiàn)有程序無法利用新型分布式 架構,因此軟件開發(fā)人員必須想辦法開發(fā)出能夠跨 多個處理器內核高效運行的程序。
同時,后來的幾代芯片工藝技術繼續(xù)使晶體管 數(shù)量成倍增長,讓半導體公司能夠采取另一個創(chuàng)新舉措,即將不同類型的內核集成到同一顆芯片中,創(chuàng)建出 SoC。這些異構多處理器架構給嵌入式軟件 開發(fā)人員提出了更多挑戰(zhàn),使軟件開發(fā)人員不得不 開發(fā)定制軟件協(xié)議棧,讓應用能夠在目標系統(tǒng)上實 現(xiàn)最佳運行。
如今,半導體行業(yè)又一次改變游戲規(guī)則,但這 次軟件開發(fā)人員則對轉變持歡迎態(tài)度。面對另一個 功耗窘境,半導體和系統(tǒng)公司正在將目光轉向由 FPGA 加速的異構處理架構。這種架構將 MPU 與 FPGA 緊密配合在一起,能以最小的功耗成本提高 系統(tǒng)性能。這種新興架構最顯著的應用是用于新型 數(shù)據(jù)中心處理架構中。在一篇現(xiàn)在著名的論文中, 微軟研究人員展示了在架構上將 MPU 與 FPGA 組合 在一起能實現(xiàn) 90% 的性能提升,同時功耗僅僅增加10%,在單位功耗性能方面遠遠優(yōu)于 MPU 與高功耗GPU 相結合而實現(xiàn)的架構。
通過 FPGA 加速的異構多處理架構的優(yōu)勢已 經超 出了數(shù) 據(jù)中心應 用范疇 。賽靈 思 Z yn q ? -70 00 All Programmable SoC 器件在單芯片上完美集成了 ARM 處理器和可編程邏輯,讓采用該器件的嵌入式 系統(tǒng)受益良多。使用即將推出的 Zynq UltraScale+TM MPSoC 的系統(tǒng)注定將會更加出色。Zynq UltraScale+ MPSoC 在單個器件中集成了多個 ARM? 內核(4 個 CortexTM-A53 應用處理器、2 個 Cortex-R5 實時處理 器和 1 個 MaliTM-400MP GPU)、可編程邏輯、多級 安全、更高安全性以及高級電源管理模塊(如圖 1 所示)。
圖1 - Zynq UltraScale+ MPSoC
不過,要讓這些 FPGA 加速的異構架構適合大規(guī)模部署并方便軟件開發(fā)人員使用,F(xiàn)PGA 廠商必須開發(fā)新的環(huán)境。在這方面,賽靈思提供了三個開 發(fā)平臺 :針對數(shù)據(jù)中心開發(fā)人員的 SDAccel、針對 嵌入式系統(tǒng)開發(fā)人員的 SDSoC,以及針對網絡線卡 架構師和開發(fā)人員的 SDNet。這些賽靈思新環(huán)境讓 開發(fā)人員能夠輕松將代碼的緩慢部分放在可編程邏 輯上編程以加速程序,從而創(chuàng)建出最佳系統(tǒng)。
面向 OpenCL、C/C++ 的 SDAccel 通過編程實現(xiàn)FPGA 加速處理
最新的賽靈思 SDAccel 開發(fā)環(huán)境為數(shù)據(jù)中心應用 開發(fā)人員提供一套基于 FPGA 的完整軟硬件解決方 案(圖 2)。SDAccel 環(huán)境包含一個能有效利用片上 FPGA 資源的快速的架構優(yōu)化編譯器。該環(huán)境為開 發(fā)人員提供類似于 CPU/GPU 的熟悉的工作環(huán)境和軟 件開發(fā)流程,并具有一個用于代碼開發(fā)、特性分析 與調試的基于 Eclipse 的集成設計環(huán)境 (IDE)。利用 該環(huán)境,開發(fā)人員可以創(chuàng)建針對不同數(shù)據(jù)中心應用 可即時換入換出而優(yōu)化的動態(tài)重配置加速器 , 可即時 換入換出。開發(fā)人員可使用該環(huán)境創(chuàng)建諸多應用, 這些應用能在運行時間內將眾多內核換入和換出 FPGA,且不會干擾服務器 CPU 與 FPGA 之間的接 口連接,從而實現(xiàn)不間斷的應用加速。SDAccel 環(huán) 境針對的是基于 x86 服務器處理器的主機系統(tǒng),并 提供現(xiàn)成商用插電式 PCIe 卡,以增加 FPGA 功能。
圖 2 - 面向 OpenCL、C 和 C++ 的 SDAccel 開發(fā)環(huán)境可將單位功耗性能提高 25 倍,利用 FPGA 實現(xiàn)數(shù)據(jù)中心應用加速。
憑借 SDAccel 環(huán)境,開發(fā)人員即使先前沒有 FPGA 經驗也能使用 SDAccel 似曾相識的工作流程 來優(yōu)化他們的應用,并充分發(fā)揮 FPGA 平臺作用。該 IDE 提供編碼模板和軟件庫,并可用來針對所有開發(fā)目標進行編譯、調試和特性分析,包括 x86 上 的仿真、使用快速仿真進行性能驗證,以及 FPGA 處理器上本地執(zhí)行。該開發(fā)環(huán)境在面向數(shù)據(jù)中心的 FPGA 平臺上執(zhí)行應用,而且能自動插入工具以實現(xiàn) 所有開發(fā)目標。賽靈思設計的 SDAccel 環(huán)境能夠讓 CPU 和 GPU 開發(fā)人員輕松將應用遷移到 FPGA 上, 同時在熟悉的工作流程中維護和重用 OpenCLTM、C 和 C++ 代碼。
SDAccel 庫對于 SDAccel 環(huán)境能實現(xiàn)類似于 CPU/GPU 的開發(fā)體驗起到了重大作用。SDAccel 庫 包含低級數(shù)學庫以及生產力更高的庫(如 BLAS、 OpenCV 和 DSP 庫)。這些庫用 C++(而非 RTL) 編寫而成,因此開發(fā)人員可在所有開發(fā)和調試階段完全按所編寫的內容來使用它們。在項目早期,所有開發(fā)工作都在 CPU 主機上完成。因為 SDAccel 庫 用 C++ 編寫,所以它們能夠與 CPU 目標(創(chuàng)建一個 虛擬原型)的應用代碼一起編譯,從而允許所有測 試、調試和初始特性分析在主機上進行。這個階段 無需 FPGA。
SDSOC 支持 ZYNQ SOC 和 MPSOC 系統(tǒng)的嵌入式 開發(fā)
賽靈思為嵌入式系統(tǒng)開發(fā)人員設計了 SDSoC 開發(fā)環(huán) 境,用以針對賽靈思 Zynq SoC 和即將推出的 Zynq UltraScale+ MPSoC 進行編程。SDSoC 環(huán)境提供極 大簡化的嵌入式 C/C++ 應用編程體驗,包括一個可 在裸機或操作系統(tǒng)(例如 Linux 和 FreeRTOS)上運行的簡單易用的 Eclipse IDE。該環(huán)境是一種用于異構 Zynq SoC 和 Zynq MPSoC 平臺部署的綜合而全面 的開發(fā)平臺(圖 3)。SDSoC 環(huán)境還配套提供業(yè)界 首款 C/C++ 全系統(tǒng)優(yōu)化編譯器,支持系統(tǒng)級特性分 析、可編程邏輯中的自動軟件加速、自動系統(tǒng)連接 生成,以及可加快編程速度的多種庫。該環(huán)境還為 客戶和第三方平臺開發(fā)人員提供開發(fā)流程,以使平 臺能夠在 SDSoC 開發(fā)環(huán)境中使用。
圖 3 – SDSoC 開發(fā)環(huán)境提供熟悉的嵌入式 C/C++ 應用開發(fā)體驗,包括簡單易用的 Eclipse IDE和綜合而全面的設計環(huán)境,以實現(xiàn)異構 Zynq All Programmable SoC 和 MPSoC 部署。
更多關于讓您能夠將代碼性能最大化的文章,請點擊“軟件開發(fā)及嵌入式系統(tǒng)開發(fā)人員必備”
評論