指令流水 一个时钟周期 出一个结果_以SM3算法为例,构建一个软硬协作算法加速器:性能分析与优化...
衡量一款 ASIC 芯片可以從 PPA 三個角度進行。
PPA 指的是: Power/Performance/Area,功耗 / 性能 / 面積。
衡量 FPGA 設(shè)計同樣可以參照 PPA,但又有所不同。
除非是專門針對功耗的優(yōu)化,一般設(shè)計優(yōu)化主要考慮的是 LUT / FF 等芯片資源使用情況(面積)以及應(yīng)用的工作頻率以及延遲(性能)。
就加速器而言,還會有一項指標(biāo):加速比。加速比參考對象一般是使用馮諾依曼架構(gòu)的通用 CPU 或者 GPU。
SM3 性能指標(biāo)
具體到 SM3 加速器的性能指標(biāo),我們可以將指標(biāo)設(shè)定為消息吞吐量,消息處理延遲以及相比于通用處理器運行高效 SM3 軟件算法時的加速比。
消息吞吐量 = 消息比特長度 / 消息處理時間 (bit/s 或 bps)消息處理延遲 = T 消息完成時間 - T 消息開始處理時間加速比 = T 加速器上消息運算時間 / T 處理器軟件消息運算時間以本系列上一篇文章中提及的設(shè)計為例,假設(shè)其工作在 125 Mhz 的時鐘下,假設(shè)處理一個消息的時鐘周期為 64 個,那么系統(tǒng)的吞吐為
512b / (8ns * 64) = 1000Mbps減少消息處理延遲
實際上基于 FPGA 的 SM3 設(shè)計本身就有低延遲的優(yōu)勢。相較于 CPU 或者 GPU 架構(gòu),基于指令集以及緩存機制的馮諾依曼架構(gòu),無指令的 FPGA 可以直接對輸入消息進行處理并輸出,系統(tǒng)的延時只會用于處理消息而不是用于指令或者緩存系統(tǒng)。FPGA 處理一個消息塊的延遲可以低于 us 級別。
在設(shè)計中可以在延遲,吞吐,面積之間權(quán)衡。
比如在上一篇的開源實現(xiàn)中,消息填充模塊以 512b 消息塊為單位,在填充完成后,再將整個消息塊輸出。這樣做減少了處理的復(fù)雜度,減少了邏輯面積。但在緩存塊的過程中,會使系統(tǒng)增加 512/32 = 16 個周期延遲。
我們會在后續(xù)的文章中進一步討論延遲相關(guān)的設(shè)計。
提升消息吞吐量
吞吐量是處理系統(tǒng)的關(guān)鍵指標(biāo),具體到 SM3 算法中,提高吞吐量有兩種主要的途徑
- 優(yōu)化算法硬件實現(xiàn)架構(gòu)
我們可以根據(jù)算法的特點,通過優(yōu)化實現(xiàn)架構(gòu)來提高算法加速器的吞吐。一般架構(gòu)的更改提高吞吐量是以增大面積作為代價。有以下兩種主流的方法
1.實現(xiàn)流水線結(jié)構(gòu)
部署 64 個實現(xiàn)單元,每個周期輸入一個消息塊。每個時鐘周期, 64 個處理單元都處于工作狀態(tài)。并能在每個周期輸出一個消息塊的哈希雜湊值,這樣一來吞吐量會到一個大得恐怖的量級,那么代價是什么呢?電路的面積會非常大,其實功耗也會非常高。
2.邏輯展開
標(biāo)準(zhǔn)中,每一個消息塊需要進行 64 輪迭代,每輪迭代處理一組輸入。相鄰輪迭代的輸入之間沒有依賴關(guān)系。所以可以通過復(fù)制一組處理邏輯,在每輪迭代中處理兩組輸入,將一個消息塊的迭代周期降到 32 個,從而提升吞吐量。
理論上也可以把 64 輪邏輯全部展開到一個周期.... -_-||
- 提高系統(tǒng)工作頻率
想要提高系統(tǒng)的工作頻率,關(guān)鍵在于找出設(shè)計中的關(guān)鍵路徑,并想辦法縮短。關(guān)鍵路徑指的是設(shè)計中兩個觸發(fā)器之間最長的組合邏輯路徑。關(guān)鍵路徑的長度決定了系統(tǒng)的工作頻率。系統(tǒng)的工作周期不能小于關(guān)鍵路徑。
優(yōu)化關(guān)鍵路徑的方法有幾種:
通過寄存器進行調(diào)整,比如插入寄存器到組合邏輯之間,打斷組合邏輯;比如平衡多個寄存器之間組合邏輯路徑,減少關(guān)鍵路徑長度等。
但這些方法的使用在 SM3 這樣的周期迭代應(yīng)用中受限。SM3 需要進行 64 輪迭代,每個周期迭代一次。如果在其中插入寄存器,會使處理周期增加。增加延遲的同時,增加的處理周期可能會抵消降低關(guān)鍵路徑長度帶來的吞吐提升。
調(diào)整綜合和布局布線策略,優(yōu)先對關(guān)鍵路徑進行優(yōu)化;這類和工具相關(guān)的優(yōu)化作者也有使用,但對其中的原理和竅門還不太了解,將在后續(xù)的文章中討論。
對關(guān)鍵路徑上的組合進行優(yōu)化,比如針對 SM3 算法的計算特點,優(yōu)化算法運算微架構(gòu),如使用 CSA 替換路徑中的加法器,減少一級加法器從而縮短路徑;常量 Tj 在每輪迭代時循環(huán)移位,可以用 ROM 存儲常量 Tj 每輪循環(huán)移位后的值,每輪迭代時使用查表法更新常量,減少循環(huán)移位帶來的延遲,
結(jié)語
本文討論了 SM3 加速器的性能指標(biāo)以及提升吞吐等性能的策略。
后續(xù)文章中將詳細(xì)討論如何通過優(yōu)化算法實現(xiàn)架構(gòu)和提高工作頻率等方法來提升吞吐。在下一篇文章中將討論如何使用 CSA 加法器降低關(guān)鍵路徑延遲,從而提升頻率和吞吐。
總結(jié)
以上是生活随笔為你收集整理的指令流水 一个时钟周期 出一个结果_以SM3算法为例,构建一个软硬协作算法加速器:性能分析与优化...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qq分享 设备未授权报错解决方案_金融行
- 下一篇: jenkins 下载插件 一直失败_Je