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