DianNao運算單元與體系結構分析

2021-09-21 06:04:05 字數 1864 閱讀 4037

首發於個人部落格

名稱

引數資料輸入位寬

bit權值輸入位寬

bit資料輸出位寬

bit功能

矩陣乘法、最大值池化、平均值池化

乘法器數量

加法器數量

nfu的整體結構如上所示,該部分分為三個部分,分別是nfu-1、nfu-2和nfu-3三個部分,分別是乘法器陣列,加法或最大值樹和非線性函式部分。nfu-1由一些乘法器陣列構成,如下圖所示。乙個單元具有乙個輸入資料和個輸入權值,乙個單元中共有個乘法器,分別計算的值,具有個輸出。

個輸入資料和輸入權值經過nfu-1處理後,變為個部分積,第i個乘法器單元的第j個輸出為。所有部分積經過route分配給nfu-2單元,分配規則如下所示,第i個nfu-2單元的輸入是所有nfu-1單元的第i個輸出。

nfu-2單元為加法/平均值(加法樹前新增位移單元)/最大值(加法樹的加法器可配置為取最大值)樹,用於計算個輸入的和/平均值或最大值,如下所示:

nfu-2單元的輸出為乙個資料,整個nfu-2部分輸出為個部分運算元據。該輸出可以流向nfu-3部分作為nfu-2的輸出,也可以流向d-reg作為部分和臨時儲存以節約頻寬。nfu-3為乙個加法器和乙個非線性單元。非線性單元使用分段線性逼近非線性函式,分段線性逼近引數儲存在ram中,可通過更改該引數使該單元實現任意非線性函式。

對映以下矩陣乘法:

有以下配置:

對映以下最大值操作:

有以下配置:

對於x的維度小於時,推測可以將權值部分設定為1部分設定為0作為掩碼,同時計算多個最大值/平均值操作

系統結構如上所述,各部分:

系統使用指令控制,每條指令可以實現一次矩陣-向量乘法運算,每個指令的四個部分被解耦後傳送給四個部分,因此儲存器的load指令不需要等待nfu運算完成,對於三個快取,執行完當前步驟後立刻執行下乙個指令中對應部分的指令,可以實現資料的預取,但是考慮計算正確性,nfu必須等待運算所需要的資料預存完成後才能執行。

對於乙個矩陣乘法:

首先進行矩陣分塊,引數矩陣w分塊為的矩陣,輸入向量x分塊為,再進行計算,如下圖所示:

分塊後,原**給出的加速器引數為,計算需要的權值矩陣有,資料向量有,快取載入的規則為:

對映乙個矩陣乘法,步驟為:

nbin載入前四個邏輯塊d1,d2,~,d64。sb載入與前四個輸入邏輯塊運算相關的64個資料塊w11、w12、w13~w64,1(分塊後w的前4列,前16行的塊)。nfu計算對應乘法(例如,,...,),並將部分和儲存在nbout中

nbin載入第二塊輸入資料,包括d65~d128,sb繼續載入與d1~d64運算相關的權值塊w2,1~w2,64。nfu繼續計算d1~d64對應乘法。直到將d1~d64相關的乘法計算完成以後,才進行d65~d128相關的乘法。

...當某個輸出的計算完成後,nbout將其輸出到外部快取中

體系 體系結構與架構

體系,泛指部分組合而成的整體,是不同系統組成的系統。體系強調部分與整體的關係 系統體系結構是乙個綜合模型,系統體系結構是由許多結構要素及各種檢視 或觀點 view 所組成的 所以,系統體系結構是乙個綜合各種觀點的模型,用來完整描述整個系統。軟體體系結構是具有一定形式的結構化元素,即構件的集合,包括處...

ARM體系結構與程式設計

arm處理器的7中執行模式 usr fiq irq svc abt und sys。arm處理器共37個暫存器 31個通用暫存器 未備份暫存器r0 r7,在全部模式下指的都是同乙個物理暫存器 備份暫存器r8 r12,每乙個暫存器相應兩個不同的物理暫存器。對於r13 sp 和r14 lr 來說,每乙個...

ARM體系結構與程式設計 1

arm處理器的7中執行模式 usr fiq irq svc abt und sys。arm處理器共37個暫存器 31個通用暫存器 未備份暫存器r0 r7,在所有模式下指的都是同乙個物理暫存器 備份暫存器r8 r12,每個暫存器對應兩個不同的物理暫存器。對於r13 sp 和r14 lr 來說,每個暫存...