本發明涉及并行前綴加法器設計領域,尤其涉及一種基于overlap的并行前綴加法器設計方法、裝置和存儲介質。
背景技術:
1、現代數字系統中一些基本的設計模塊,例如加法器、優先級編碼器、遞增遞減復數器和格雷碼到二進制碼轉換器,可以簡化為前綴和計算并實現為并行前綴電路,并行前綴電路是實現二進制加法的最有效電路。進位傳播生成理論是一種用于設計并行前綴加法器的理論,它提出了一種新的并行前綴加法器結構,該結構可以在較低的電路復雜度下實現較高的計算速度。核心思想是將并行前綴加法器劃分為若干個模塊,每個模塊只負責處理一位的進位產生和傳遞,這些模塊可以并行地工作,從而大大提高計算速度。
2、美國發明專利(公開號:us8527920b1)公開了一種自動合成高性能二操作數二進制并行前綴加法器,其公開了如下內容:參考圖1,遞歸樹展示了窮舉搜索算法的自下而上方法。2位的前綴圖由單個索引序列表示(圓圈1)提供。前綴圖結構是以歸納方式為更高位構造的,即給定所有可能的對于n位的前綴圖(gn),所有可能的n+1位前綴圖(gn+1)被構建。通過在適當的位置插入n,從gn的元素生成n+1比特的這種圖的過程是遞歸過程。在這個遞歸過程(rp)的開始,我們有一個序列“12”,圓圈上有一個箭頭1。垂直箭頭指向可以插入3的索引。在任何階段(帶圓圈的數字1-8),有兩種選擇,要么插入3然后調用遞歸過程(rp),要么將箭頭移動到合適的位置再調用rp。通過向前迭代列表/序列直到找到searchindex從而找到該位置(即合適的位置),其中searchindex=lowerbound(lastnode(3))-1。左子樹表示第一個選項,右子樹表示第二個選項。因此,該過程要么在“12”的開頭插入“3”并向左移動,要么通過將箭頭移動到適當的位置來向右子樹移動。我們可以看到,對于這種情況,searchindex=lowerbound(lastnode(3))-1=3-1=2。類似地,此過程在序列“312”的“1”之后插入“3”或移動指針,因為searchindex已變為2-1=1。遍歷是按預先順序完成的,并且此遞歸一直持續到lowerbound(lastnode(3))變為“0”,或者構造一個4位前綴圖。其中,節點n的最低有效位(lsb)由lowerbound(n)指示。
3、然而在該現有技術中,searchindex的取值僅為“lowerbound(lastnode(3))-1”,即節點n的最低有效位“lsb-1”,從而使得在右子樹移動的過程只有一種情況,大大減少了能夠遞歸構造出的n+1位的并行前綴加法器的數量,并進一步減少后續并行前綴加法器的邏輯綜合分析的可選性,限制了在前綴空間中探索更好性能的加法器設計。
技術實現思路
1、本發明的目的在于克服現有技術的不足,提供一種基于overlap的并行前綴加法器設計方法、裝置和存儲介質。
2、本發明的目的是通過以下技術方案來實現的:
3、本發明的第一方面,提供一種基于overlap的并行前綴加法器設計方法,用于在給定位寬為n的并行前綴加法器的情況下生成位寬為n+1的并行前綴加法器,所述并行前綴加法器使用并向前綴圖表示;所述設計方法包括以下步驟:
4、獲取所述位寬為n的并行前綴加法器的并向前綴圖所對應的并行前綴序列sn,其中并行前綴序列sn基于拓撲排序和高位優先;
5、將所述并行前綴序列sn構造合法的n+1位的并行前綴序列sn+1;所述構造采用左子樹和右子樹遞歸構造的方式,左子樹構造為直接插入最新插入節點recentnode,右子樹構造為根據搜索索引searchindex的取值移動移動指針迭代器iter后插入最新插入節點recentnode;其中,搜索索引searchindex的取值為lsb(recentnode)-1,lsb(recentnode)表示最新插入節點recentnode的非平凡扇入節點的最高有效位;
6、將并行前綴序列sn+1轉換為位寬為n+1的并行前綴加法器的并向前綴圖,即得到位寬為n+1的并行前綴加法器;
7、所述將所述并行前綴序列sn構造合法的n+1位的并行前綴序列sn+1基于overlap邏輯,所述overlap邏輯即搜索索引searchindex的取值為lsb(recentnode)-1、lsb(recentnode和lsb(recentnode)+1。
8、進一步地,基于overlap邏輯的將所述并行前綴序列sn構造合法的n+1位的并行前綴序列sn+1,包括以下子步驟:
9、初始化:并行前綴序列sn的指針迭代器iter指向并行前綴序列sn的最左側,并定義最新插入節點recentnode;
10、合法性檢測:每次插入新的最新插入節點recentnode后,需要檢查前綴節點的lsb(recentnode)是否為0,若是則結束,否則進行搜索索引更新;
11、搜索索引更新:在每次構造新的當前節點后,根據最新插入節點recentnode的最低有效位lsb更新當前節點對應的搜索索引searchindex,其中搜索索引searchindex可以取值為lsb(recentnode)-1、lsb(recentnode)和lsb(recentnode)+1;搜索索引searchindex表示最新插入節點recentnode的非平凡扇入節點的最高有效位,用于確定最新插入節點recentnode可能插入的位置;lsb(recentnode)和lsb(recentnode)+1對應于overlap邏輯;
12、左子樹和右子樹遞歸構造:搜索索引更新之后,依次嘗試在當前前綴序列對應的當前節點的指針迭代器iter左側和指針迭代器iter右側插入最新插入節點recentnode,遞歸調用自身以構建更大的當前前綴序列也就對應于新的當前節點;其中,在左子樹的構造過程中,直接插入最新插入節點recentnode,而在右子樹構造過程中,需要遍歷搜索索引searchindex中的所有值,用于更新插入節點的位置即所述指針迭代器iter位置;
13、條件判斷和更新:在每次成功插入最新插入節點recentnode后,更新最大邏輯級數和最大扇出,并判斷是否滿足繼續構建的條件,若是則回到合法性檢測;若在當前前綴序列的左子樹構造過程中找到了有效的對應于所述n+1位的并行前綴圖的當前節點,則不會遍歷當前前綴序列的右子樹;
14、并行前綴序列獲取:得到所有有效的對應于所述n+1位的并行前綴圖的當前節點,即n+1位的并行前綴序列sn+1。
15、進一步地,基于overlap邏輯的將所述并行前綴序列sn構造合法的n+1位的并行前綴序列sn+1,還包括以下子步驟:
16、重復性檢查:在合法性檢測同時,利用哈希函數檢查當前構造的前綴序列是否已經存在于解集,若是則結束否則進入搜索索引更新。
17、進一步地,所述在右子樹構造過程中,需要遍歷搜索索引searchindex中的所有值,用于更新插入節點的位置即所述指針位置,包括以下子步驟:
18、初始化檢查:檢查搜索索引searchindex是否非空,并且當前指針迭代器iter否沒有到達當前前綴序列的末尾;只有當這兩個條件都滿足時,后續步驟才會繼續;
19、在前綴序列中查找候選元素:使用do-while循環,在當前前綴序列中逐個遍歷元素,對于當前指針迭代器iter指向的元素,獲取其索引值nodeindex;將當前指針迭代器iter向前移動到當前前綴序列的下一個元素;循環繼續的條件是:索引值nodeindex不在搜索索引searchindex中,并且當前指針迭代器iter還沒有到達當前前綴序列的末尾;
20、檢查是否找到候選元素:當do-while循環結束后,檢查索引值nodeindex是否存在于搜索索引searchindex中,如果索引值nodeindex存在于搜索索引searchindex中,說明找到了一個候選元素;
21、處理找到的候選元素:調用左子樹和右子樹構造,傳入當前前綴序列列表、當前指針迭代器iter,從搜索索引searchindex中移除已經找到的候選元素即對應的索引值nodeindex。
22、循環結束:如果搜索索引searchindex為空,或者當前指針迭代器iter已經到達當前前綴序列列表的末尾,那么整個while循環將結束。
23、進一步地,在條件判斷和更新中,所述判斷是否滿足繼續構建的條件,包括:
24、并行前綴序列中的節點不具有連續性,即并行前綴序列中連續兩個節點的數字不相同。
25、本發明的第二方面,提供一種電子設備,包括存儲單元和處理單元,所述存儲單元上存儲有可在所述處理單元上運行的計算機指令,所述處理單元運行所述計算機指令時執行第一方面所述的一種基于overlap的并行前綴加法器設計方法的步驟。
26、本發明的第三方面,提供一種存儲介質,其上存儲有計算機指令,所述計算機指令運行時執行如第一方面所述的一種基于overlap的并行前綴加法器設計方法的步驟。
27、本發明的有益效果是:
28、在本發明的一示例性實施例中,通過overlap的方式增加搜索索引searchindex的取值數量(從一個增加為三個),進一步增加了右子樹以及右子樹的子樹構造,最終進一步增加了n+1位并行前綴加法器的數量,使得增加后續在對邏輯綜合分析(面積、延遲、功耗)的可選性,大大解放了在前綴空間中探索更好性能的加法器設計的可能性。