一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深度剖析FPGA架構(gòu)

jf_78858299 ? 來(lái)源:Hack電子 ? 作者:Hack電子 ? 2023-05-22 16:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

FPGA 即 Field Programmable Gate Arrays,現(xiàn)場(chǎng)可編程門(mén)陣列。如果邏輯代數(shù)為數(shù)字世界的理論指導(dǎo),那么邏輯門(mén)電路就是蓋起座座數(shù)字大廈的基本塊塊磚瓦,無(wú)論基本的數(shù)字電路還是現(xiàn)代的集成電路,無(wú)不構(gòu)建在邏輯門(mén)之上,把邏輯門(mén)和時(shí)鐘組合起來(lái),人們搭建起了加法器、選擇器、鎖存器、觸發(fā)器,進(jìn)而的運(yùn)算單元、可控制單元、RAM。按照聰明的工程師設(shè)計(jì)好的電路圖紙?jiān)賹⑦@些基本的數(shù)字電路原件組合起來(lái),再設(shè)計(jì)成可以印刷的集成電路形式,就可以構(gòu)成各種專(zhuān)用的集成電路(ASIC)或者通用計(jì)算機(jī)處理器(CPU)等。FPGA相對(duì)ASIC來(lái)說(shuō)更靈活。ASIC相對(duì)來(lái)說(shuō)量產(chǎn)后會(huì)更廉價(jià)、節(jié)能,性能也更好。

專(zhuān)用集成電路只在意輸入和輸出,中間的一切算法會(huì)被固化到硬件設(shè)計(jì)中;而通用CPU則同時(shí)接收數(shù)據(jù)流和指令流,按照軟件工程師的程序指令序列執(zhí)行一些列計(jì)算任務(wù)(雖有人將CPU也歸為ASIC,但是我覺(jué)得這是在硬件角度上來(lái)說(shuō)的,從計(jì)算任務(wù)的可編程性角度CPU實(shí)際上是最靈活通用的)。FPGA則介于ASIC和CPU之間,它并非將邏輯門(mén)組成的原件之間的連接形式固化,也非做成最有利通用計(jì)算的形式動(dòng)態(tài)地接收軟件指令來(lái)調(diào)動(dòng)片上已有的計(jì)算單元,而是可以通過(guò)重復(fù)硬件編程來(lái)改變它邏輯門(mén)所組成的基本功能單元和調(diào)整這些單元之間的連接關(guān)系。

1. 硬件架構(gòu)介紹

1.1 Overview

如下圖所示,邏輯上,F(xiàn)PGA主要由可編程的邏輯塊(programmable logic block, 主要是圖中CLB) 和 可編程互聯(lián)網(wǎng)絡(luò) (programmable interconnect network / routing interconnect, 主要是圖中SB, CB和一些路由通道組成)。

+-----------+
|           |
|    LUT    +-+
|           | |    +--------+    +-----------+
+-----------+ |    |        |    |           |
              +---->   BLE  +---->    CLB    +----+
+-----------+ |    |        |    |           |    |
|           | |    +--------+    +-----------+    |
| Flip-Flop +-+                                   |
|           |          +---------------------+    |
+-----------+          |                     |    |
                       |    Switch Box (SB)  +----+
                       |                     |    |
                       +---------------------+    |
                                                  +---> FPGA
                       +---------------------+    |
                       |                     |    |
                       |    Connection Box   +----+
                       |        (CB)         |    |
                       +---------------------+    |
                                                  |
                       +---------------------+    |
                       |                     |    |
                       |    I/O Block        |    |
                       |                     +----+
                       +---------------------+

空間布局上,可以簡(jiǎn)單理解為下圖[1]:

圖片

  • 按編程技術(shù)分類(lèi)FPGA

FPGA的基礎(chǔ),即可配置性依賴于存儲(chǔ)這些硬件門(mén)配置的介質(zhì),這種區(qū)別也成為FPGA的編程技術(shù),按照這種硬件編程技術(shù)分類(lèi),F(xiàn)PGA分為三類(lèi): 基于SRAM的FPGA 、基于flash的FPGA基于反熔絲(antifuse)的FPGA [1]。

基于SRAM的FPGA是斷電易失的,所以需要在開(kāi)機(jī)(startup)時(shí)通過(guò)JTAG編程,或者通過(guò)內(nèi)置/外置的非易失存儲(chǔ)進(jìn)行編程。

基于flash的FPGA的邏輯門(mén)本身就是非易失的。antifuse FPGA只能編程一次,不可逆。

1.2 組成單元

  • Look-Up Table (SRAM based)

k-bound LUT或稱(chēng)為L(zhǎng)UT-k指的是有k個(gè)輸入、2^k個(gè)配置bits的布爾函數(shù)邏輯。如下圖[1]所示的basic logic element(BLE)由1個(gè)LUT-4和一個(gè)D型觸發(fā)器(Flip-Flop)構(gòu)成,其中多個(gè)LUT-4有16個(gè)SRAM構(gòu)成的配置位,通過(guò)這些配置為配置這些選擇器可以構(gòu)成任意一個(gè)4輸入邏輯單元。

圖片

這個(gè)例子中,配置數(shù)據(jù)存在SRAM中,基于這種BLE的FPGA可以稱(chēng)為基于SRAM(或說(shuō)static memory)的FPGA。

  • Switch Box (SRAM based)

如下圖[1]Switch Box中,分為雙向(a)和單向(b),一般后者更常用。這些switch都是基于pass transistor[3]的,每個(gè)pass transistor可以獨(dú)立地進(jìn)行開(kāi)關(guān)配置。

圖片

  • 基于NAND Flash 的 FPGA 組件

同樣也有人提出基于NAND flash的FPGA,基于NAND flash相對(duì)基于SRAM,除了LUT、SB的配置形式需要重新設(shè)計(jì)外,NAND flash還具有NVM都有的非易失特點(diǎn),可以減少外置flash存儲(chǔ)的使用,在上電后不用重新配置。

但是當(dāng)今的主流FPGA技術(shù)還是SRAM,因?yàn)樗鸵话愕腃MOS集成電路技術(shù)分享技術(shù),可以得到集成度、速度和功耗上的不斷提升。

一般的,要用Flash替代SRAM作為配置位,需要將SRAM cell替換為FMC(flash memory cell),如下圖以2-LUT為例[2],每個(gè)FMC都由2個(gè)flash晶體管Fp和Fq組成。當(dāng)然論文[2]的作者也提出了針對(duì)NAND Flash的更高效替代方法。

圖片

1.3 IP核

FPGA的IP核(core)可以看做是軟件中的各種庫(kù),避免了編程或設(shè)計(jì)人員重復(fù)造輪子?,F(xiàn)代FPGA的可編程門(mén)陣列只占50%,其他大部分被硬IP核占據(jù)。

硬IP核是系統(tǒng)設(shè)計(jì)中一些常用的模塊,直接以模塊形式集成到FPGA的,比如memory block、calculating circuits,transceiver和protocol controller等,有些甚至加入了CPU、DSP等[6]。

2. 軟件流程

軟件流程也叫CAD(計(jì)算機(jī)輔助)流程,負(fù)責(zé)將人實(shí)現(xiàn)的上層應(yīng)用邏輯映射到FPGA可編程硬件邏輯上,這個(gè)映射對(duì)最終的性能影響很大,所以這也是人們研究的一個(gè)重點(diǎn)。

這個(gè)過(guò)程將人寫(xiě)的硬件描述語(yǔ)言HDL轉(zhuǎn)成可以最終編程到FPGA的比特流。這個(gè)過(guò)程大概分為5步: synthesis(綜合)、technology mapping, mapping, placement, routing。CAD 工具最后生成的就是bit流。軟件流程的框圖[1]如下:

圖片

  • Logic Synthesis 邏輯綜合 將VHDL/verilog這類(lèi)硬件描述編程語(yǔ)言轉(zhuǎn)成布爾門(mén)、flip-flops。

  • Technology Mapping 將上一步的邏輯門(mén)轉(zhuǎn)成k-bound的LUT (lookup-table)。

  • Clustering/Packing 將多個(gè)LB(即k-bound LUT + flip-flop對(duì),或稱(chēng)BLE) 組成logic block clusters。主要有三種方法,各有利弊:

    top-down:k路分割問(wèn)題的基本的cost function 是 net cut,即partition間的邊數(shù)。

    depth-optimal:用邏輯的重復(fù)換取更快的運(yùn)行

    bottom-up: FPGA CAD中用的比較多,因?yàn)檫\(yùn)行快

  • Placement 主要決定logic block 的放到FPGA哪個(gè)logic block 位置,以最小的wiring 為主(wire length-driven placement)?;蛘咂胶鈝iring 的密度(routability-driven placement);或者找到最快的電路速度(timing-driven placement)。常用partitioning或者模擬退火的方法

  • Routing 階段將網(wǎng)絡(luò)關(guān)聯(lián)到物理的routing網(wǎng)絡(luò),當(dāng)前state-of-the-art 算法是pathfinder。

在這些階段之后,還有時(shí)序分析階段和bitstream生成階段,最后的bitstream會(huì)真正的用于編程到SRAM存儲(chǔ)位來(lái)配置邏輯門(mén)。

3. Host FPGA管理系統(tǒng)的發(fā)展

[4] 提出了一種"FPGA操作系統(tǒng)", [5] 是對(duì)FPGA虛擬化的綜述。

[5]中的虛擬化其實(shí)是廣義的虛擬化,包括FPGA的 時(shí)分復(fù)用 、虛擬執(zhí)行虛擬機(jī)

  • 時(shí)分復(fù)用:任務(wù)大,單FPGA資源少(而非FPGA資源少、任務(wù)小而要一直進(jìn)行切換FPGA配置)。
  • 虛擬執(zhí)行:將任務(wù)切分為多個(gè)需要通信的子任務(wù)(Petri-Net model),用一種運(yùn)行時(shí)系統(tǒng)去管理它們。
  • 虛擬機(jī):有vFPGA支持的hypervisor,或者稱(chēng)為shell。

FPGA虛擬化的目標(biāo)和其他資源的虛擬化類(lèi)似:?jiǎn)卧O(shè)備多租戶、資源管理、靈活性、隔離性、擴(kuò)展性、虛擬化性能損失最小化、安全性、可靠性和易用性。

FPGA和CPU、GPU的根本區(qū)別是應(yīng)用是硬件電路而非 匯編指令 。這帶來(lái)了大得多的切換開(kāi)銷(xiāo),不僅時(shí)間復(fù)用,空間也要復(fù)用。

...

對(duì)于FPGA相關(guān)工作的分類(lèi)可以分為3種:resource level 、Node level 和 multi-node level。

3.1 Resource Level

分為可配置的(比如可以重新編程的邏輯陣列)和不可配置的(比如IP核)。

可配置overlays架構(gòu)部分 :

Overlays架構(gòu)的思路是將FPGA編譯(配置)階段分成兩部分,將CAD部分提前,只有硬件部分inline執(zhí)行,來(lái)減少整體的重新配置時(shí)間。overlays的管理粒度可大可小,從軟核的虛擬化,到向量處理器,再到自定義處理單元(PE)再到細(xì)粒度的LUT單元。比較高層次的軟核、向量處理器對(duì)一般的軟件工程師更友好,不需要很多的硬件優(yōu)化。而PE粒度(或稱(chēng)coarse-grained reconfigurable arrays, CGRAs)以一個(gè)代數(shù)運(yùn)算作為單元。又例如DRAGEN芯片專(zhuān)門(mén)針對(duì)DNA處理,overlay層允許生物領(lǐng)域?qū)<夷軌蛴肍PGA加速運(yùn)算。

overlay的二級(jí)制應(yīng)用之于configuration bit 類(lèi)似于 Java JVM的字節(jié)碼之于機(jī)器碼。所以像字節(jié)碼到原生機(jī)器碼的轉(zhuǎn)換一樣,overlay應(yīng)用可以直接轉(zhuǎn)為overlay的FPGA配置。

不可配置的IO虛擬化部分

通常用來(lái)管理多個(gè)應(yīng)用共享的IO資源,和其他虛擬化技術(shù)類(lèi)似,虛擬化層可以用來(lái)提升安全/隔離性、隱藏IO操作的復(fù)雜性、監(jiān)視資源占用和保證QoS,有時(shí)也可以提升性能(比如加buffer)等。從根本上,IO虛擬化的概念支持和CPU、軟件系統(tǒng)類(lèi)似,只是具體實(shí)現(xiàn)不同。對(duì)于FOGA而言,控制邏輯可以在軟件層,也可以是硬件模塊,軟件層次用來(lái)實(shí)現(xiàn)更靈活的配置、硬件部分加速IO訪問(wèn)和管理。

這里的總結(jié)主要指的是一些host的工作可以卸載到FPGA,比如FPGA輔助NIC[7]、輔助SSD[8],甚至用于加速memcached這種通用KV cache的網(wǎng)絡(luò)[9, 10]。

3.2 Node Level

一般類(lèi)似于虛擬機(jī)/多進(jìn)程中的設(shè)備虛擬化,分為多/單應(yīng)用組合上單/多FPGA四種[5]:

圖片

涉及到VMM、shell、調(diào)度等問(wèn)題。

VMM型 將FPGA當(dāng)成一種IO資源,像其他虛擬機(jī)一樣以CPU為主體,這種情況下FPGA就像GPU一樣用,對(duì)軟件開(kāi)發(fā)者更友好。

Shell型 以FPGA自身,給出與host通信、與其他IO設(shè)備通信、應(yīng)用管理等的設(shè)計(jì)。比如一種典型的設(shè)計(jì)是在FPGA的可配置部分,將管理部分和應(yīng)用部分分開(kāi),利用FPGA的partial reconfiguration特性主要重新配置FPGA的應(yīng)用部分,但這也會(huì)帶來(lái)很多開(kāi)銷(xiāo),包括讓長(zhǎng)連線增加等。而且為實(shí)現(xiàn)多租戶增加的partial resion的數(shù)量也會(huì)導(dǎo)致更慢的運(yùn)算速度,所以找到一個(gè)合適的partial regions 大小和數(shù)量很重要!

調(diào)度問(wèn)題 在FPGA上和CPU不太一樣,因?yàn)樯舷挛那袚Q和partial重配置需要占的時(shí)間很長(zhǎng),所以搶占式調(diào)度當(dāng)前不太現(xiàn)實(shí)?,F(xiàn)在大多數(shù)方案基于非搶占調(diào)度,并且主要著眼時(shí)間的優(yōu)化,最近也開(kāi)始有工作研究空間的優(yōu)化。

3.3 Multi-node Level

提供抽象,讓多個(gè)FPGA組合起來(lái)工作。大概架構(gòu)分為3種[5]:

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1645

    文章

    22036

    瀏覽量

    618112
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1392

    瀏覽量

    117446
  • 可編程
    +關(guān)注

    關(guān)注

    2

    文章

    1056

    瀏覽量

    40615
  • 數(shù)字電路
    +關(guān)注

    關(guān)注

    193

    文章

    1639

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    《C語(yǔ)言深度剖析》【超經(jīng)典書(shū)籍】

    本帖最后由 zgzzlt 于 2012-8-16 14:23 編輯 《C語(yǔ)言深度剖析》【超經(jīng)典書(shū)籍】
    發(fā)表于 08-02 08:59

    C語(yǔ)言深度剖析

    C語(yǔ)言深度剖析——一本關(guān)于C語(yǔ)言學(xué)習(xí)的教程,里面包含C語(yǔ)言編寫(xiě)規(guī)范,各種變量指針用法等。以含金量勇敢挑戰(zhàn)國(guó)內(nèi)外同類(lèi)書(shū)籍
    發(fā)表于 08-14 11:36

    c語(yǔ)言深度剖析

    c語(yǔ)言深度剖析
    發(fā)表于 04-02 09:12

    陳正沖《C語(yǔ)言深度剖析

    陳正沖編寫(xiě)的《C語(yǔ)言深度剖析》,挺經(jīng)典,剛來(lái)論壇,多多指教~~
    發(fā)表于 08-17 12:06

    linux內(nèi)核深度剖析,另附有光盤(pán)資料

    linux內(nèi)核深度剖析,對(duì)于想學(xué)linux內(nèi)核的人來(lái)說(shuō),絕對(duì)值得一看,另附有光盤(pán)資料。
    發(fā)表于 01-15 21:25

    STM32庫(kù)函數(shù)架構(gòu)剖析

    STM32庫(kù)函數(shù)架構(gòu)剖析
    發(fā)表于 06-20 17:08

    【資料分享】C語(yǔ)言深度剖析

    C語(yǔ)言深度剖析
    發(fā)表于 10-16 15:16

    資料共享:嵌入式網(wǎng)絡(luò)那些事LwIP協(xié)議深度剖析與實(shí)戰(zhàn)演練

    嵌入式網(wǎng)絡(luò)那些事LwIP協(xié)議深度剖析與實(shí)戰(zhàn)演練
    發(fā)表于 06-12 13:43

    C語(yǔ)言深度剖析

    C語(yǔ)言深度剖析
    發(fā)表于 08-25 09:08

    【詳解】FPGA深度學(xué)習(xí)的未來(lái)?

    FPGA)提供了另一個(gè)值得探究的解決方案。日漸流行的FPGA設(shè)計(jì)工具使其對(duì)深度學(xué)習(xí)領(lǐng)域經(jīng)常使用的上層軟件兼容性更強(qiáng),使得FPGA更容易為模型搭建和部署者所用。
    發(fā)表于 08-13 09:33

    C語(yǔ)言深度剖析

    C語(yǔ)言深度剖析[完整版].pdfC語(yǔ)言深度剖析[完整版].pdf (919.58 KB )
    發(fā)表于 03-19 05:11

    C語(yǔ)言深度剖析

    C語(yǔ)言深度剖析。
    發(fā)表于 05-05 17:40 ?7次下載

    C語(yǔ)言深度剖析

    C語(yǔ)言深度剖析
    發(fā)表于 12-20 22:50 ?0次下載

    C語(yǔ)言深度剖析.zip

    C語(yǔ)言深度剖析
    發(fā)表于 12-30 09:20 ?5次下載

    深度剖析 IGBT 柵極驅(qū)動(dòng)注意事項(xiàng)

    深度剖析 IGBT 柵極驅(qū)動(dòng)注意事項(xiàng)
    的頭像 發(fā)表于 11-24 14:48 ?1171次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>剖析</b> IGBT 柵極驅(qū)動(dòng)注意事項(xiàng)