女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

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

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

3天內不再提示

CPU內核中的FPGA優化方法

FPGA之家 ? 來源:FPGA之家 ? 2023-08-09 11:10 ? 次閱讀

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

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

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

采取下一步行動

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

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

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

圖2.小型現代FPGA可以吸收舊設計中所有的傳統處理器

“芯”起點在哪兒?

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

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

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

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

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

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

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

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

如何實施 CPU?

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

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

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

擁有面向 FPGA 合成手動優化的 RTL 的內核。

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

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

圖3.CPU 內核中的三種 FPGA 優化級別。

開箱即用

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

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

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

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

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

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

優化方法

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

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

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

特定于FPGA的內核

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

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

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

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

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

審核編輯:湯梓紅

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

    關注

    68

    文章

    19833

    瀏覽量

    233965
  • FPGA
    +關注

    關注

    1644

    文章

    21993

    瀏覽量

    615544
  • 嵌入式系統
    +關注

    關注

    41

    文章

    3670

    瀏覽量

    131046
  • 內核
    +關注

    關注

    3

    文章

    1412

    瀏覽量

    41190
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11055

    瀏覽量

    216311

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

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    FPGA的I_O時序優化設計

    FPGA的I_O時序優化設計在數字系統的同步接口設計, 可編程邏輯器件的輸入輸出往往需要和周圍新片對接,此時IPO接口的時序問題顯得尤為重要。介紹了幾種
    發表于 08-12 11:57

    使用FPGA優化視頻水印操作的OpenCL應用

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

    混合CPU_FPGA系統的調試方法

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

    CPU內核結構解析

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

    基于FPGA的嵌入式CPU的VHDL建模和設計

    目前,基于FPGA 的嵌入式CPU核的設計已成為SOC設計的重要部分.提出一種嵌入式CPU核的VHDI 行為建模方法,與傳統的基于電路結構建模的CP
    發表于 06-27 16:00 ?75次下載
    基于<b class='flag-5'>FPGA</b>的嵌入式<b class='flag-5'>CPU</b>的VHDL建模和設計

    Arduino開發的內核與程序優化方法

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

    基于Windows 操作系統內核驅動的多核CPU 線程管理

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

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

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

    Linux CPU的性能應該如何優化

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

    使用FPGA實現CPU設計的畢業論文總結

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

    如何使用FPGA實現八位RISC CPU的設計

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

    鴻蒙系統內核CPU空閑時間都在干嘛

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

    如何使用SLX FPGA優化人臉檢測數據中心的OpenCL AI內核

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

    如何在內核啟動secondary cpu

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

    華為云 X 實例 CPU 性能測試詳解與優化策略

    分析 ? 3.2 CPU性能瓶頸分析 ? 4. CPU性能優化策略 ? 4.1 優化CPU性能的常用方法
    的頭像 發表于 12-30 14:52 ?610次閱讀
    華為云 X 實例 <b class='flag-5'>CPU</b> 性能測試詳解與<b class='flag-5'>優化</b>策略
    主站蜘蛛池模板: 临武县| 临洮县| 连山| 丹江口市| 湘潭县| 元谋县| 遂平县| 乡宁县| 浪卡子县| 淅川县| 板桥市| 潜山县| 甘洛县| 富锦市| 巧家县| 大名县| 仙游县| 长垣县| 潮州市| 阳西县| 万盛区| 彭山县| 聂荣县| 延安市| 桓仁| 正定县| 四平市| 海兴县| 达尔| 军事| 包头市| 陵水| 叙永县| 四会市| 靖江市| 临汾市| 石家庄市| 横峰县| 安远县| 赣榆县| 通州区|