一種基於存儲的乘法器查找表的近似優化方法

2021-01-08 電子產品世界

  萬晨雨,賀雅娟

本文引用地址:http://www.eepw.com.cn/article/201907/402135.htm

  (電子科技大學電子科學與工程學院,成都 610054)

  摘要:本文提出了一種近似高輸入結果存儲(approximate-most-significant-multiple-storage, AMMS)的查找表(LUT)優化方法。該方法利用移位操作來替代部分存儲,並將存儲內容進行截位使存儲位寬縮減,對基於存儲的乘法器中的查找表進行了優化。該方法在一個mm位的乘法器中,可以將查找表的規模縮減至傳統存儲方法的1/4,並明顯改善乘法器的面積延遲積(ADP),不過與此同時,該方法也因截位而產生了相對誤差,該誤差最大不超過2 -m 。此外,該方法會比傳統存儲方法多消耗一些額外的硬體,如多路復用器,移位邏輯以及編碼模塊。

  0 引言

  基於存儲的乘法器的工作原理是利用乘法係數(乘數)固定的特性,將所有輸入(被乘數)會產生的可能乘法結果預存儲在LUT中。如此,乘法運算過程轉換為了從LUT中讀取數據的過程,因此基於存儲的乘法器無論在運算速度還是動態功耗上相較於傳統的乘法器都有著顯著的優勢。雖然該類乘法器已被廣泛使用於移動無線通信等對電路工作速度與功耗均有一定要求的應用中,不過它也有著缺陷,即用於預存儲乘法結果的LUT所佔用的面積資源過大,當輸入具有m比特時,該乘法器使用傳統存儲方式需要存儲的所有可能的乘法結果為2 m 種,所以當m較大時,乘法器所佔用的LUT規模過大。

  為了降低基於存儲結構中LUT的規模,前人已經做了不少研究。例如文獻[1]使用了(offset binarycoding) OBC的編碼方法,用簡單的加減操作來代替部分存儲數據,將分布式算法中需要在LUT中存儲的內積數量縮減至傳統存儲方式的1/2;文獻[2]採用了(antisymmetric product coding) APC的存儲方法,思想與文獻[1]類似,但是應用在了乘法器中,該方法同樣利用了額外的簡單加減運算來降低需要預存儲在LUT中的乘法結果數量,且也能夠將存儲數量降至傳統存儲方式的1/2;該作者還在文獻[3]中提出了(odd-multiple-storage) OMS存儲方法,該方法只需存儲奇數輸入所產生的乘法結果,並通過將存儲結果移位的方式來恢復所有可能產生的乘法結果。

  該方法同樣能夠將LUT中的存儲數量降至傳統存儲方式的1/2;文獻[4]則更進一步地將OMS與APC存儲方法進行了修改與結合,使得LUT中的存儲數量更少,不過這樣雖然可以縮減LUT規模,可帶來了很多的額外硬體開銷。以上前人的各種優化方法都是著重於減少在LUT中的預存儲數量,更適用於精確的乘法計算,然而在一些不需要精確結果的實際應用中,其實可以利用近似存儲的方式來更進一步降低LUT規模,因為LUT規模不僅取決於其存儲數量,也取決於其存儲位寬。因此,本文採用近似截位存儲文獻[5-6]與移位替代部分存儲結合的方式重新優化LUT,不僅能夠將LUT的存儲數量降至傳統存儲方法的1/2,同時也能夠將LUT的存儲位寬縮減。相較於前人的存儲方法,該方式在更進一步縮減LUT的規模時,並不會帶來過多的硬體消耗。

  本文提出了一種名為近似高輸入結果存儲方法,下文都將稱其為AMMS方法。該方法能夠同時在LUT的存儲數量與存儲位寬上進行優化。在一個m×m比特的乘法器中,該方法能夠有效的將LUT規模縮減至傳統存儲方法的1/4,同時顯著的降低整體設計的ADP,且在乘法器的輸入位寬較大時,該方法能夠降低關鍵路徑延遲。由於方法本身引入了近似截位,因此該方法得到的近似計算結果相對正確結果而言會有一個不超過2 -m 的相對誤差。

  1 AMMS方法的實現原理

  1.1 AMMS方法的存儲方式

  表1用輸入位寬為4比特的基於存儲的乘法器展示了AMMS方法的存儲方式,其中B為輸入,A為固定係數。該方法對於能夠由移位來相互得到的所有乘法結果,只存儲其中的最大值,例如A,2A,4A和8A都能夠由8A通過分別右移3,2,1位來得,因此只有8A才會被存儲到LUT中。基於這種存儲方式,在除了0之外所有的乘法結果中,只會有一半的數量會被存儲到LUT中,這些被存儲的乘法結果也正是當輸入最高位為1時,較大的一半乘法結果。AMMS方法的其他乘法結果都是通過這些存儲結果右移來恢復的,因此該方法需要記錄恢復正確乘法結果所需要的具體右移比特數。表1中的取地址表示用來將LUT中存儲結果讀出的編碼地址,每個取地址都唯一對應一個存儲在LUT中的數,但是每個取地址可以對應多個輸入,不同輸入之間以恢復正確結果需要的右移數來區分。

  1.2 AMMS方法的截位存儲策略與截位所帶來相對誤差的理論推導

  設輸入B有m比特,固定係數A有n比特,則需要存儲的乘法結果數量為2 m-1 個,位寬為m+n比特。AMMS方法採取對乘法結果的低m位截斷的方處理式,只存儲高n位。在計算最終結果時,AMMS方法會對已截斷的低m位利用固定值進行補償。

  設截位之前的某個正確乘法結果為Z i ,表達式如式(1)所示,需要存儲的內容為Xi,1 ≤ i ≤ 2 m-1 ,為n比特,被截位的部分為Y i ,為m比特。AMMS方法計算最終結果時採用的補償方式為:用所有被截斷的低m位的平均值來固定取代最終結果的低m位,的表達式如式(2)所示。該方法計算得到的近似結果Z i 』的表達式如式(3)所示。截位誤差error的表達式如式(4)所示。

  由於在最壞情況時,絕對誤差|Y i -'ˆ2 mi iZ X Y = ⋅ + |的最大值不會超過2 m-1 ,而依據AMMS的較大半數存儲方式,Z i 的最小值不會小於2 n+m-1 ,因此根據式(4),理論上的最大相對誤差不會大於2 -n ,且當乘法的固定係數的位寬很大時,該截位存儲策略所帶來的相對誤差會很小。

  2 AMMS方法在乘法器上的實現結構

  圖1使用了輸入位寬為4比特的基於存儲的乘法器來展示AMMS方法的實現結構,其中固定係數為A為n比特。

  在該結構中,輸入B被分為兩部分,第一部分為最高位,主要作為部分模塊的判斷條件。第二部分為剩下的低3位,為各模塊的主要輸入。當最高位為1時,多路復用器會使用低3位直接作為取地址,反之,低3位將會進入編碼模塊來產生取地址。取地址經過地址解碼模塊後可以將LUT中的存儲結果讀出,這些被讀出的結果會經過右移模塊處理來得到正確對應輸入的乘法結果。

  移位控制模塊利用低3位來產生移位碼並以此控制右移模塊進行正確的右移操作。當最高位為1時,LUT中讀取的結果不需要移位,因此移位重置模塊會將移位碼置0。由於右移模塊輸出的結果為截位結果,因此還需要用'ˆ2 mi iZ X Y = ⋅ + 來固定補償被截去的低4位,並形成最終的計算結果。最後還需要判斷輸入B是否為全0,如果低三位為0,編碼模塊會產生一個低有效的清零信號傳遞至或非門,若這時最高位也為0,或非門將會產生一個高有效的信號,表示輸入為全0,該信號會傳遞到輸出重置模塊,並將最終結果清零。下面將詳細介紹部分模塊的工作原理與具體電路結構。

  編碼模塊的具體電路結構如圖2所示,輸入B的低3位進入該模塊後會按照表1所示的編碼規則進行編碼輸出,該模塊具體的工作原理為:當輸入的最高位為0時,需要將輸入左移,直至新的最高位為1,此時得到左移後數據的新低3位即為編碼模塊的輸出,該模塊會將此輸出與原始輸入的低3位一一映射與進行邏輯優化,最後產生具體的電路結構。由於編碼過程的前提條件為輸入B的最高位為0,因此編碼是輸入必將左移至少一位,所以產生的新低3位的最低位必為0,即取地址第0位為0。

  移位控制模塊的具體電路結構圖如圖3所示,移位碼由輸入B的低3位產生。移位控制模塊需要根據當前輸入的位寬來決定移位碼的位寬,因此,當輸入位寬為m比特時,移位碼需要[log 2 m] 比特的位寬來覆蓋表示所有可能移位的比特數。該模塊的工作原理為:當輸入最高位為0並在編碼模塊進行左移編碼時,會產生具體的左移比特數,這些比特數即作為移位碼為該模塊的輸出,該模塊會將移位碼與原始輸入低3位一一映射並進行邏輯優化,最終得到具體的硬體電路。

  3 實驗結果與對比

  本文將AMMS方法與傳統存儲方法以及OMS存儲方法分別應用於88比特和1616比特的乘法器中進行實驗,並根據實驗結果對比了這些乘法器的ADP。乘法器代碼由Verilog編寫使用了Design Compiler綜合,綜合過程中使用了0.18mm標準CMOS工藝庫,所得實驗結果如表2所示。

  從表2中不難看出,本文所提出的AMMS方法相較於其他方法來說可以更進一步地縮減乘法器中的LUT規模並顯著地降低乘法器的ADP。當輸入位寬較小時,該方法由於引入了額外的硬體電路,因此在最大延遲上的對比上不如傳統的存儲方式,但隨著輸入位寬的增大,該方法的最大延遲特性會逐漸比傳統存儲方法更好。一方面是由於LUT規模的增大會導致額外硬體電路所產生的延遲的比重下降,另一方面是截位策略所帶來的延遲縮減會隨著LUT規模的增加而增加,足以抵消並超過額外硬體電路所產生的延遲。

  4 結論

  本文提出了一種新的AMMS方法來對基於存儲的乘法器中的LUT進行優化,該方法可以同時在LUT存儲數量與存儲位寬上進行優化,因此適用於不需要精確計算結果的應用。該方法在一個m×m比特的乘法器中,能夠將LUT規模縮減至傳統存儲方法的1/4,OMS存儲方法的1/2,並能夠顯著的降低整體設計的ADP。該方法相比於傳統的存儲方法會引入一些額外的硬體電路,並且帶來一定的截位相對誤差,不過該相對誤差不會超過2 -m ,且會隨著乘法固定係數位寬的增加而減小。

  作者簡介:

  萬晨雨 (1994-),男,碩士研究生,研究方向:低功耗數字集成電路設計賀雅娟 (1978-),女,副教授,研究方向:專用集成電路與系統、超低壓超低功耗數字集成電路設計等

  本文來源於科技期刊《電子產品世界》2019年第7期第44頁,歡迎您寫論文時引用,並註明出處

相關焦點

  • 應用於CNN中卷積運算的LUT乘法器設計
    現在乘法只有K*di,由於bit位寬較小,這部分可以用LUT查找表的形式來。預先將0K到(2^q-1)K的數據存儲到LUT中,然後通過di來選擇對應的數據。如果是負數乘法,那麼數據使用補碼表示,那麼LUT中存儲的數據是從-2^(q-1)K到(2^(q-1)-1)K。針對以上介紹的ultrascale器件的LUT6,q可以選擇為5。
  • ADSP TigerSHARC中利用查找表快速計算三角函數
    在這種情況下,利用查找表的方法來得到三角函數的值就成為一種可行,並能獲得很高實時性的計算方法。本文給出了一種在TS101中利用查找來實現三角函數計算的方法,並對這種算法的誤差和運算量進行了分析,從結論可以看出,文中提出的通過查找表計算三角函數的方法有效而且運行效率比較高。
  • vlookup函數的使用方法,含查找多值、以某字開頭的值與近似匹配
    以下將先介紹vlookup函數的作用和函數表示,再列舉vlookup函數的使用方法,最後再分享它的幾個擴展應用實例,包含查找以某字或詞組開頭或結尾值、查找包含某個字或詞組的值,近似匹配和查找指定類下的所有產品價格。實例操作所用版本均為 Excel 2016。
  • SAX: 時間序列符號聚合近似方法
    圖 | 三種距離1. 兩個時間序列之間的歐幾裡得距離可以表示為每對相應點的平方差之和的平方根。2.PAA近似定義的距離度量可以看作是每對相應的PAA係數之間的平方差之和乘以壓縮率的平方根的平方根。3. 時間序列的兩個SAX表示之間的距離需要查找每對符號之間的距離,將它們平方,求和,取平方根,最後乘以壓縮率的平方根。通過嚴謹的證明得到:歐氏大於PAA
  • 基於Spartan-3 FPGA的DSP功能實現方案
    1 針對DSP而優化  賽靈思公司的Spartan-3器件採用90nm工藝技術以及300mm晶圓,大大降低了FPGA的成本。與此同時,這些器件還包括諸如嵌入式18×18位乘法器、大塊存儲器(18kb)、分布式RAM以及移位寄存器等關鍵DSP資源。這些高級特性意味著採用Spartan-3 FPGA,能以比其它競爭FPGA低得多的價位實現DSP算法。
  • 一種基於A*算法的用於道路場景的軌跡規劃方法
    一種基於A*算法的用於道路場景的軌跡規劃方法 李倩 發表於 2018-10-19 11:17:54 本文提出了一種基於A*算法的用於道路場景的軌跡規劃方法,該方法中
  • 基於FPGA的高速流水線浮點乘法器設計與實現
    作為衡量微處理器 性能的主要標準,主頻和乘法器運行一次乘法的周期息息相關。因此,為了進一步提高微處 理器性能,開發高速高精度的乘法器勢在必行。同時由於基於IEEE754 標準的浮點運算具 有動態範圍大,可實現高精度,運算規律較定點運算更為簡捷等特點,浮點運算單元的設計 研究已獲得廣泛的重視。
  • 使用verilogHDL實現乘法器
    1 引言 Verilog HDL是當今最為流行的一種硬體描述語言,完整的Verilog HDL足以對最複雜的晶片和完整的電子系統進行描述[1]。本文採用Verilog HDL語言來設計實現4-2和5-2混合壓縮器構成的乘法器的設計,並與另外實現的兩種乘法器從速度,面積和硬體資源佔用率等方面進行了性能比較,得出用這種改進壓縮器要比兩位陣列乘法器和傳統的4-2壓縮器構成的乘法器速度提高了10%,硬體資源佔用減少了2%。 2 兩位陣列乘法器 陣 列乘法器基於移位與求和算法。
  • 基於可編程邏輯器件實現多電平正交幅度調製系統的設計
    因此,MQAM是一種高效的調製方式,被廣泛應用於中、大容量數字微波通信系統、有線電視網絡高數據傳輸、衛星通信等領域。本文首先介紹了MQAM調製解調的基本原理,然後以64QAM為例,介紹了一種全數字實現的調製系統結構方案,並給出了解調器的具體FPGA實現方法及關鍵技術。
  • 30種SQL語句優化方法
    SQL優化,下面總結一些方法,供大家參考。 01 對查詢進行優化,應儘量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。 02 應儘量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃描。
  • 基於FPGA IP核的線性調頻信號脈衝壓縮-電子發燒友網
    其中,利用IP核設計FPGA數字系統成為一種趨勢,這些智慧財產權核可以大大簡化FPGA的設計,加快設計速度,縮短研發周期,而且經過不斷的優化,IP核具有了更好的精度和更快的運算速度,實際的工程應用效果很好。   本文以此為出發點,對線性調頻信號的脈衝壓縮進行了研究,仿真,並提出了一種採用IP核設計脈衝壓縮的方法。
  • 一篇文章搞懂 數據結構中的 線性表存儲方式(順序表 與 鍊表)
    線性表線性表是線性結構的基本表現。線性表有兩種存儲方式:順序表鍊表。下面分別來看這兩種存儲方式:順序表順序表 是 開闢連續的空間(如一維數組),順次把每一個元素存進來。鍊表鍊表就是 每一個數據存儲單元有兩部分 一是存數據的地方,另一個是存指針的地方。
  • 基於FPGA的FFT算法優化及其在磁共振譜儀中的應用
    摘要:提出了一種基於FPGA的依據核磁共振譜儀雙通道頻譜圖對其信號增益和相位差不平衡進行調節的設計方案,詳細闡述了FFT算法在FPGA
  • 基於MSP430系列微控制器的FFT算法實現
    該系列晶片內部充足的數據存儲器滿足快速傅立葉變換算法過程中的數據存儲,晶片內部大量的代碼存儲器存儲相位因子的計算結果和所需要的三角函數數值,採用查表的方法以提高分析速度;採用晶片內部硬體乘法器模塊可以進一步提高分析速度。
  • 以色列科學家優化DNA存儲技術
    以色列科學家優化DNA存儲技術 作者:小柯機器人 發布時間:2019/9/10 15:01:51 以色列理工學院Zohar Yakhini和Leon Anavy研究組,利用複合的DNA鹼基通過減少合成周期
  • 基於FPGA的移位寄存器流水線結構FFT處理器設計與實現
    從上面的算法結構分析中知道,由於後級的DFT運算點數是前一級的一半,所以後一級的開關轉換周期也是前一級的一半,基於這種關係,可以使用一個8位計數器的每一位狀態來對各級開關進行控制。最高位控制第一級,同時由於上一級數據進入下一級需要一個時鐘,所以下一級的開關轉換時刻要比上一級延遲一個時鐘周期。
  • DSP48E2 Slice 上優化 INT8 深度學習運算分析
    表 1 列出了精調網絡以及卷積層和完全相連層的動態定點參數及輸出。括號內的數字代表未精調的準確性。 表 1 :帶定點精度的 CNN 模型 其他廠商提供的 FPGA 在單個 DSP 模塊中只提供 18x19 乘法器,DSP 乘法器與INT8 MACC 之比僅為 1:1。 可擴展的 INT8 優化 目標是找到一種能夠對輸入 a、b 和 c 進行高效編碼的方法,這樣 a、b 和 c 之間的相乘結果可以容易地分解為 a x c 和 b x c。
  • 基於射頻識別技術的智能電能表的設計
    射頻識別技術是一種非接觸式自動識別技術,是通過射頻信號來白動識別門標對象並獲取相關數據。基本的RFID系統是由電子標答(射頻卡)、閱讀器及應用支撐軟硬體二部分組成。RFTD標籤由晶片和天線組成,何個標籤都具有唯一的電子編碼。根據發送射頻信號的方式不同。標籤又分為主動式和被動式兩種口主動式標籤由內置電池供電主動向讀寫器發送射頻信號。
  • 基於FPGA的高速流水線FFT算法實現
    內部結構包括2個1 k×16 bits的實部和虛部雙口RAM存儲單元、蝶形運算單元、旋轉因子生成模塊(包括正弦因子查詢表、餘弦因子查詢表和象限轉換模塊)、RAM和ROM存儲器地址控制單元、倒序模塊以及時序總控制單元。
  • 基於BF533和FPGA的雷達信號模擬器設計實現
    可採用編程的方法設置所需的模擬雷達信號的各種參數,使模擬器能實現多種信號類型。本文論述的信號模擬器主要針對某雷達對抗設備提出,按照實際要求,產生多通道且相互獨立的雷達信號,可提供給雷達對抗設備趨於真實的雷達環境。