91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CPU內核中的FPGA優(yōu)化方法

FPGA之家 ? 來源:FPGA之家 ? 2023-08-09 11:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

FPGA 技術更新傳統(tǒng)系統(tǒng)是許多嵌入式系統(tǒng)設計人員都知道的場景。但現(xiàn)有設計確實需要更新,這其中就包括連接互聯(lián)網、 IoT等。當然,我們也需要進一步增強安全性。尤其考慮到目前人們熱衷于人工智能,大家對深度學習推理或機器視覺又有了新的需求。

盡管現(xiàn)在已將系統(tǒng)整合至物聯(lián)網,但仍然面臨一個迫在眉睫的問題——這些更改將對系統(tǒng)硬件造成影響。直接使用 CPU 可以緩解所有的問題。但對于小型嵌入式設計(一開始就只有一英寸的小外形)來說,由于存在成本、功耗和散熱方面的限制,這種蠻力法可能行不通。此時,必須采用 FPGA 方法。

事實上,系統(tǒng)中通常有一個老舊的小型 FPGA 負責執(zhí)行實用工作:充當端口擴展器或設備控制器。然而,現(xiàn)在的低端 FPGA 可以充當硬件加速器,將新的計算要求拉回至現(xiàn)有系統(tǒng)處理器范圍之內。

采取下一步行動

我們需要采取進一步行動,考慮將系統(tǒng)(或子系統(tǒng))的 CPU 或微控制器單元 (MCU) 也整合到 FPGA 中是否可行?顯而易見,答案是“當然不可行”。眾所周知,F(xiàn)PGA 中的軟 CPU 內核尺寸大、速度慢、價格貴。除了對于重要的嵌入式系統(tǒng)來說,這些概括性說法都不對。

我們不是在討論擁有強大 CPU 性能的系統(tǒng)。(比如 Arm* Cortex*-A53 內核集群。)在硬件中包含此類 CPU 集群的中端 FPGA,但該主題不在本文介紹范圍之內。今天我們討論的是處理器適用范圍更廣的系統(tǒng)(或總體設計中的子系統(tǒng)):微控制器中的 Cortex-M 級內核,或真正的傳統(tǒng) CPU,如 68000。通常情況下,這種老舊處理器不適用于系統(tǒng)設計,因為它們始終不愿意接觸古老、文檔不完整的代碼,直至最后生命周期結束被迫淘汰。我們要介紹的是,通常可以將這種小型或老舊 CPU 整合至低端 FPGA 中(圖 2)。

33eb33a0-364b-11ee-9e74-dac502259ad0.jpg

圖2.小型現(xiàn)代FPGA可以吸收舊設計中所有的傳統(tǒng)處理器

“芯”起點在哪兒?

如果您有用 C 或 C++(最好是通過原始測試工作臺)編寫的文檔化源代碼,那么情況將對您非常有利。您可以從適用于在 FPGA 中進行軟實施的整個 CPU 內核選項中進行選擇。然后,還可以針對所選的 CPU 重新編譯并測試代碼。

遺憾的是,測試結果并不總是樂觀的。過去,微處理器的編譯器并不總是適合嵌入式設計,尤其是對于存在實時限制的子系統(tǒng)。老代碼或保守型工程師編寫的代碼,可能完全是用匯編語言編寫的。現(xiàn)代代碼主要是用 C 語言編寫的,其中關鍵例程用匯編語言手動編寫。無論采用哪種語言編寫,都至少會有一部分代碼鎖定在特定的指令集架構中。

其次,需要謹慎考慮硬件獨立性程度,不是語言方面,而是編碼風格方面。在過去節(jié)省代碼空間和縮短延遲至關重要的時候,往應用代碼中嵌入中斷處理程序、驅動程序和物理 I/O 地址等不良實踐通常被認為是明智之舉,這些做法會加大移植到新硬件的難度。過去,一些極其糟糕的想法,比如編寫時序依賴型代碼,通常被認為更加明智。這種代碼可能需要重新編寫,才能在快速的現(xiàn)代硬件上運行。但即使存在匯編語言源代碼和不合時宜的編碼風格,我們仍然可以采用實際方法將傳統(tǒng)模塊整合到 FPGA 中。

第一種方法是,如果 CPU 的確非常老舊,則使用開源寄存器傳輸級 (RTL) 模型在 FPGA 中重新實施傳統(tǒng)微處理器或微控制器。Github 等資源擁有許多用于傳統(tǒng)處理器(包括 6502、Z80、6809、68000 和 8086)的 Verilog 模型。但在這些內核中進行設計之前,必須考慮幾個問題。

第一個問題是合法性。因為 Verilog 可用并不意味著您擁有在商業(yè)產品中使用該設計的合法權利。有一些模型是研究人員和業(yè)余愛好者編寫的,沒有考慮到知識產權。因此,很久之前的一些架構可能實際上位于公共域中。

另一個問題是作者的意圖。例如:Verilog 是架構的近似功能描述。它的目的是僅在模擬中執(zhí)行代碼,還是封裝在用戶控件邏輯和 I/O 中?或者,該模型是否包含進入微處理器芯片的其他所有硬件?您必須匹配 Verilog 模型的特性和傳統(tǒng)系統(tǒng)的需求,否則將要花費大量的時間來了解舊芯片的劣勢。

接下來就是一些令人傷神的細節(jié)問題。SiFive 產品經理 Jack Kang 指出,與現(xiàn)代 CPU 一樣,傳統(tǒng) CPU 也在整個產品生命周期中經歷了多次修改,每次修改都會糾正一些錯誤或劣勢。Verilog 代表哪個版本?或者它是一個理想化版本,代表著作者假定芯片怎樣正常運行的方式?最后是設計師的謹慎程度。該模型是否按照實際傳統(tǒng)芯片一個循環(huán)接一個循環(huán)地運行?是否啟動了您需要使用的操作系統(tǒng)?是否成功合成過?

如果 Verilog 模型無法正常運行,還有另一個選擇。老舊的 CPU 速度非常慢,以致于在當前 FPGA 中的微小現(xiàn)代 RISC 內核上運行的指令集模擬器都可以實時地遍歷傳統(tǒng)代碼,尤其是當麻煩序列卸載到 FPGA 中其他位置的狀態(tài)機上時。這種方法不能簡單地呈現(xiàn)周期精確或時序精確,但在功能上是正確的。而且它還可以將移植問題從硬件域轉換到軟件域,在軟件域,您可以訪問整個調試工作臺,這樣移植問題處理起來容易得多。

如何實施 CPU?

討論了將傳統(tǒng)代碼遷移至新系統(tǒng)的可行性和難度后,接下來的問題是如何在低端 FPGA 中實施 CPU 內核。我們之前討論過復制傳統(tǒng) CPU 的情況,現(xiàn)在我們可以來了解下實施現(xiàn)代高性能 CPU 的選項。

主要問題是處理器內核依賴部分硬件結構,這種結構在 ASIC 中以標準單元甚至是自定義邏輯的形式實施,無法在 FPGA 結構中輕松高效地復制。因此,我們必須了解三種不同情況(圖 3):

僅通過用于模擬或 ASIC 合成的 Verilog 模型進行合成的 CPU 內核 — 即所謂的開箱即用場景。

擁有面向 FPGA 合成手動優(yōu)化的 RTL 的內核。

從一開始就開發(fā)了架構以在 FPGA 中實施的內核。每種方法的可用性、規(guī)模和性能都不相同。這些方法都適用于現(xiàn)代低端 FPGA。

33fa4e62-364b-11ee-9e74-dac502259ad0.jpg

圖3.CPU 內核中的三種 FPGA 優(yōu)化級別。

開箱即用

盡管并不是每家 CPU 內核知識產權 (IP) 廠商都專門針對 FPGA,但大多數(shù) IP 提供商都至少提供兩條遷移至 FPGA 內核的路徑。最明顯的路徑是授權面向內核的 RTL 源代碼,并通過 FPGA 廠商的工具鏈運行該代碼。實施這條路徑會遇到很多挑戰(zhàn),全都是因為該 RTL 用于 ASIC 合成,而非 FPGA 合成。

特別是首次在 FPGA 中嘗試運行該代碼,那么遇到第一個問題將是:源代碼中的有些東西是采用 FPGA 合成工具無法處理的。代碼可能與合成工具不兼容的方式被隱藏或加密,可能包含您的工具無法識別的編譯指示、信號命名,甚至是帶有破壞性的注釋約定。您可以編輯這些內容,但會因此產生第二個問題:許可。

如果您使用用于 ASIC 開發(fā)的 Verilog 源代碼,可能需要進行編輯。這意味著您需要包含完整文檔的未隱藏的源代碼,以及/或 IP 廠商的大量支持。這些都是可用的,但它們都是針對財力雄厚、產量巨大、擁有大型法務部門的客戶所編寫和定價的。

還有另一條路徑:一些 IP 廠商提供評估或開發(fā)套件,您可以通過它們在 FPGA 中實施 CPU 內核。該內核可能沒有經過高度優(yōu)化,但至少可以運行和驗證,而且其速度對軟件開發(fā)來說足夠快。

SiFive 產品經理 Jack Kang 表示,他的一些客戶已經采用了這種方法。該公司的 CoreDesigner 工具支持您從各種 RISC V 預配置內核開始,根據(jù)您特定的需求調整配置,然后輸出 RTL。但該工具也會在 SiFive 的開發(fā)套件上輸出一個關于 FPGA 的編程文件。

Kang 還指出,“RISC V 的這種 FPGA 實施并未面向 FPGA 使用進行高度優(yōu)化,但仍然包含不到 20K 的查找表,而且速度可以達到 100 Mhz 左右,當然這很大程度上取決于配置。這種規(guī)模適合許多留有大量空間的低端 FPGA,支持您快速、輕松地將常用開源內核整合到系統(tǒng)中?!?/p>

優(yōu)化方法

有一些方法可以改善這些數(shù)據(jù),但需要采取一些措施。之所以有這種改善機會,是因為 CPU 中有一些結構并不適合 FPGA 邏輯結構。

FPGA 使用大量相同邏輯元件陣列來實施邏輯,每個元件都包含一些查找表 (LUT) — 通常每個 LUT 包含 4 個輸入 — 以合成邏輯函數(shù),以及一個或多個觸發(fā)器。這種安排適用于大多數(shù)隨機邏輯、管道和簡單狀態(tài)機。對于高扇入邏輯,由于可能出現(xiàn)在算法硬件和地址解碼器中,因此合成往往會生成一長串窄邏輯元件,從而消耗互連并導致延遲。對于基于內存的功能,比如寄存器文件、高速緩存和相聯(lián)內存,一次將功能映射至邏輯元件的觸發(fā)器(一或二位)可能要消耗大量資源,即使廠商工具足夠智能,嘗試將邏輯元件的 LUT 和觸發(fā)器隔離,并單獨使用它們。

很久以前,當 FPGA 首次用于數(shù)據(jù)包切換、數(shù)字信號處理和類似應用時,這種不匹配就非常明顯。為了解決這個問題,F(xiàn)PGA 廠商在邏輯結構中嵌入了大型可分割 SRAM 模塊和硬件乘法累加模塊。通過使用這些資源,通??梢燥@著改進 CPU 實施規(guī)模,有時還可以提高性能。但可能需要在 RTL 源代碼中或合成過程中運用一定的知識進行干預。如果熟練的 FPGA 用戶仔細檢查 RTL,并面向 FPGA 合成使用已知最佳 FPGA 編碼實踐對其進行調優(yōu),能夠進一步提升性能。

特定于FPGA的內核

行業(yè)標準 CPU 內核,比如 Cortex-M 家族或 RISC V,提供熟悉度、成熟的(或以 RISC 為例不斷壯大的)工具和軟件生態(tài)系統(tǒng),以及在 FPGA 廠商之間輕松遷移或遷移至 ASIC 實施的機會,甚至在某些情況下還可遷移至第三方現(xiàn)成的 SoC。但反過來要付出一定的代價:費用、規(guī)模,有時還有性能。

如果您想最大限度地優(yōu)化 FPGA,還需采取另一個步驟:不僅優(yōu)化實施過程,還要優(yōu)化 CPC 和指令集架構本身:從一張白紙開始,僅添加對 FPGA 友好的結構。很久以前,當 FPGA 首次變得足夠大,可容納 CPU 內核時,主要 FPGA 廠商就已經開始做出這樣的努力。他們始終在做出這樣的努力:在英特爾案例中為 Nios II 處理器,其以發(fā)展演進為專有 CPU 架構,不斷壯大由工具、軟件和 FPGA 外設 IP 組成的生態(tài)系統(tǒng)。

目前,這些內核家族提供多種類型的產品,從具備最少特性的小型微內核 (和 Arm 的 Cortex M0 沒什么不同)到全功能、支持 Linux 的 CPU。其中許多型號都適用于廠商的低端 FPGA。例如,緊湊型 Nios Iie 內核只需大約 1000 個邏輯元件,但速度可達到或超過 75 MHz。在另一個極端,具備高速緩存和內存管理功能,且能夠運行 Linux* 操作系統(tǒng)的內核大約需要 5000 個元件。在這兩者之間還有許多選擇來滿足特定需求。甚至這種全功能配置也足夠小,不但可以將多核 CPU 集群放在一臺低端英特爾 MAX 10 設備中,還仍然擁有足夠的空間。

因此,有許多方法可以將傳統(tǒng) CPU 功能遷移至低端 FPGA,同時仍然擁有豐富的資源來支持傳統(tǒng)接口或控制器功能、IoT 連接、安全性,或機器學習加速。古老的機器代碼可在 FPGA 上運行,以向老舊 CPU 致敬,也可在現(xiàn)代內核的指令集模擬器上運行。

高級語言代碼可面向現(xiàn)代代碼進行編譯。極具挑戰(zhàn)性的代碼模塊可以卸載到 FPGA 中的加速塊中,然后通過多種優(yōu)化程度各不相同的方法,得到許可并在 FPGA 中實施現(xiàn)代 CPU 內核的某個版本。為了最大限度地提高資源效率,廠商專有 CPU 內核可在各種性能和功能點中實現(xiàn)最佳的緊湊性,且?guī)缀踹m合所有的設計場景。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    20275

    瀏覽量

    252944
  • FPGA
    +關注

    關注

    1661

    文章

    22434

    瀏覽量

    637147
  • 嵌入式系統(tǒng)

    關注

    41

    文章

    3757

    瀏覽量

    133709
  • 內核
    +關注

    關注

    4

    文章

    1470

    瀏覽量

    42942
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11293

    瀏覽量

    225325

原文標題:采用FPGA更新傳統(tǒng)系統(tǒng),你還需要知道哪些Key points?

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    數(shù)字IC/FPGA設計的時序優(yōu)化方法

    在數(shù)字IC/FPGA設計的過程,對PPA的優(yōu)化是無處不在的,也是芯片設計工程師的使命所在。此節(jié)主要將介紹performance性能的優(yōu)化,如何對時序路徑進行
    的頭像 發(fā)表于 12-09 10:33 ?3328次閱讀
    數(shù)字IC/<b class='flag-5'>FPGA</b>設計<b class='flag-5'>中</b>的時序<b class='flag-5'>優(yōu)化</b><b class='flag-5'>方法</b>

    蜂鳥E203內核優(yōu)化方法

    。 修改內核參數(shù):對蜂鳥E203的內核參數(shù)進行相應修改,可以優(yōu)化內核運行效率,提高系統(tǒng)性能,比如調整緩存大小、內存分配策略等。 資源管理:進行有針對的資源管理,例如調度算法的修改,調整
    發(fā)表于 10-21 07:55

    使用FPGA優(yōu)化視頻水印操作的OpenCL應用

    處理器會給FPGA架構的水印內核發(fā)送一個啟動信號。該信號觸發(fā)內核完成三件工作:開始從設備全局內存獲取輸入視頻幀;在掩膜定義的位置插入標識;將處理過的幀傳輸回設備全局處理器,等待處理器
    發(fā)表于 06-19 07:27

    混合CPU_FPGA系統(tǒng)的調試方法

    混合CPU_FPGA系統(tǒng)的調試方法:
    發(fā)表于 07-23 10:44 ?7次下載
    混合<b class='flag-5'>CPU_FPGA</b>系統(tǒng)的調試<b class='flag-5'>方法</b>

    CPU內核結構解析

    CPU內核結構解析  CPU內核主要分為兩部分:運算器和控制器。   (一) 運算器   1、 算
    發(fā)表于 04-15 16:13 ?1660次閱讀

    Arduino開發(fā)的內核與程序優(yōu)化方法

    原版 Arduino 技術內幕,詳細介紹了Arduino開發(fā)的內核與程序優(yōu)化方法,最大程度挖掘開發(fā)板的設計潛力
    發(fā)表于 05-02 10:55 ?6次下載

    基于Windows 操作系統(tǒng)內核驅動的多核CPU 線程管理

    1 引言 本文分析了Windows 系統(tǒng)的進程調度機制,并設計了一種基于Windows 操作系統(tǒng)內核驅動的多核CPU 線程管理方法,實現(xiàn)了一個基于Windows 內核驅動的線程管理服務
    發(fā)表于 10-31 11:02 ?0次下載
    基于Windows 操作系統(tǒng)<b class='flag-5'>內核</b>驅動的多核<b class='flag-5'>CPU</b> 線程管理

    SoC設計嵌入FPGA(eFPGA)內核實用評估方法

    雖然系統(tǒng)級芯片( SoC )的架構師們已了解嵌入式FPGA( eFPGA )內核能如何為他們的ASIC/ SoC 設計增加價值,甚至是在規(guī)劃出一個具體應用之前就了解,但可能還不清楚如何開始進行一次
    的頭像 發(fā)表于 09-20 09:51 ?4839次閱讀

    Linux CPU的性能應該如何優(yōu)化

    在Linux系統(tǒng),由于成本的限制,往往會存在資源上的不足,例如 CPU、內存、網絡、IO 性能。本文,就對 Linux 進程和 CPU 的原理進行分析,總結出 CPU 性能
    的頭像 發(fā)表于 01-18 08:52 ?4240次閱讀

    使用FPGA實現(xiàn)CPU設計的畢業(yè)論文總結

    CPU的總體結構到局部功能的實現(xiàn)采用了自頂向下的設計方法和模塊化的設計思想,利用Xilinx 公司的Spartan II 系列FPGA,設計實現(xiàn)了八位CPU軟核。在
    發(fā)表于 08-03 17:58 ?13次下載
    使用<b class='flag-5'>FPGA</b>實現(xiàn)<b class='flag-5'>CPU</b>設計的畢業(yè)論文總結

    如何使用FPGA實現(xiàn)八位RISC CPU的設計

    CPU的總體結構到局部功能的實現(xiàn)采用了自頂向下的設計方法和模塊化的設計思想, 利用Xilinx 公司的Spartan II 系列FPGA, 設計實現(xiàn)了八位CPU軟核。在
    發(fā)表于 08-19 17:43 ?7次下載
    如何使用<b class='flag-5'>FPGA</b>實現(xiàn)八位RISC <b class='flag-5'>CPU</b>的設計

    鴻蒙系統(tǒng)內核CPU空閑時間都在干嘛

    本篇說清楚CPU cpu是負責執(zhí)行指令的,誰能給它指令?是線程(也叫任務), 任務是內核的調度單元,調度到哪個任務CPU就去執(zhí)行哪個任務的指令. 要執(zhí)行指令就要有個取指令的開始地址.
    的頭像 發(fā)表于 03-15 14:37 ?2865次閱讀

    如何使用SLX FPGA優(yōu)化人臉檢測數(shù)據(jù)中心的OpenCL AI內核?

    本案例介紹了如何使用Silexica的SLX FPGA優(yōu)化人臉檢測數(shù)據(jù)中心的OpenCL AI內核。 引言 FPGA正越來越多地被用作數(shù)據(jù)中心的協(xié)處理器。這一轉變背后的驅動力是利用
    的頭像 發(fā)表于 05-08 14:55 ?2862次閱讀
    如何使用SLX <b class='flag-5'>FPGA</b><b class='flag-5'>優(yōu)化</b>人臉檢測數(shù)據(jù)中心的OpenCL AI<b class='flag-5'>內核</b>?

    如何在內核啟動secondary cpu

    啟動secondary cpu 內核在啟動secondary cpu之前當然需要為其準備好執(zhí)行環(huán)境,因為內核
    的頭像 發(fā)表于 12-05 15:46 ?1353次閱讀
    如何在<b class='flag-5'>內核</b><b class='flag-5'>中</b>啟動secondary <b class='flag-5'>cpu</b>

    華為云 X 實例 CPU 性能測試詳解與優(yōu)化策略

    分析 ? 3.2 CPU性能瓶頸分析 ? 4. CPU性能優(yōu)化策略 ? 4.1 優(yōu)化CPU性能的常用方法
    的頭像 發(fā)表于 12-30 14:52 ?1586次閱讀
    華為云 X 實例 <b class='flag-5'>CPU</b> 性能測試詳解與<b class='flag-5'>優(yōu)化</b>策略