女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

1.1 Overview

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

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

空間布局上,可以簡單理解為下圖[1]:

圖片

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

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

基于SRAM的FPGA是斷電易失的,所以需要在開機(startup)時通過JTAG編程,或者通過內(nèi)置/外置的非易失存儲進行編程。

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

1.2 組成單元

  • Look-Up Table (SRAM based)

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

圖片

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

  • Switch Box (SRAM based)

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

圖片

  • 基于NAND Flash 的 FPGA 組件

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

但是當今的主流FPGA技術(shù)還是SRAM,因為它和一般的CMOS集成電路技術(shù)分享技術(shù),可以得到集成度、速度和功耗上的不斷提升。

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

圖片

1.3 IP核

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

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

2. 軟件流程

軟件流程也叫CAD(計算機輔助)流程,負責將人實現(xiàn)的上層應用邏輯映射到FPGA可編程硬件邏輯上,這個映射對最終的性能影響很大,所以這也是人們研究的一個重點。

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

圖片

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

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

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

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

    depth-optimal:用邏輯的重復換取更快的運行

    bottom-up: FPGA CAD中用的比較多,因為運行快

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

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

在這些階段之后,還有時序分析階段和bitstream生成階段,最后的bitstream會真正的用于編程到SRAM存儲位來配置邏輯門。

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

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

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

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

FPGA虛擬化的目標和其他資源的虛擬化類似:單設(shè)備多租戶、資源管理、靈活性、隔離性、擴展性、虛擬化性能損失最小化、安全性、可靠性和易用性。

FPGA和CPU、GPU的根本區(qū)別是應用是硬件電路而非 匯編指令 。這帶來了大得多的切換開銷,不僅時間復用,空間也要復用。

...

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

3.1 Resource Level

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

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

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

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

不可配置的IO虛擬化部分

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

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

3.2 Node Level

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

圖片

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

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

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

調(diào)度問題 在FPGA上和CPU不太一樣,因為上下文切換和partial重配置需要占的時間很長,所以搶占式調(diào)度當前不太現(xiàn)實。現(xiàn)在大多數(shù)方案基于非搶占調(diào)度,并且主要著眼時間的優(yōu)化,最近也開始有工作研究空間的優(yōu)化。

3.3 Multi-node Level

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

圖片

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

    關(guān)注

    1645

    文章

    22019

    瀏覽量

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

    關(guān)注

    8

    文章

    1391

    瀏覽量

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

    關(guān)注

    2

    文章

    1055

    瀏覽量

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

    關(guān)注

    193

    文章

    1639

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

    C語言深度剖析

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

    c語言深度剖析

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

    陳正沖《C語言深度剖析

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

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

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

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

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

    【資料分享】C語言深度剖析

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

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

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

    C語言深度剖析

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

    【詳解】FPGA深度學習的未來?

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

    C語言深度剖析

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

    C語言深度剖析

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

    C語言深度剖析

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

    C語言深度剖析.zip

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

    深度剖析 IGBT 柵極驅(qū)動注意事項

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