行政院國家科學委員會補助專題研究計畫成果報告
嵌入式晶片系統資料路徑設計之算術功能單元產生器
(3/3)
計畫類別:■ 個別型計畫
□整合型計畫
計畫編號:NSC
9
6
-2
22
1
-E
-1
10-08
0
執行期間:
9
6 年
8 月
1 日至
9
7 年
7 月
3
1 日
計畫主持人:國立中山大學資訊工程系 蕭勝夫
計畫參與人員:
陳坤志、程彥鈞、黃冠潣、林耿賢
成果報告類型(
依經費核定清單規定繳交)
:□精簡報告
■完整報告
本成果報告包括以下應繳交之附件:
□赴國外出差或研習心得報告一份
□赴大陸地區出差或研習心得報告一份
□出席國際學術會議心得報告及發表之論文各一份
□國際合作研究計畫國外研究報告書一份
處理方式:除產學合作研究計畫、提升產業技術及人才培育研究計畫、
列管計畫及下列情形者外,得立即公開查詢
□涉及專利或其他智慧財產權,□一年□二年後可公開查詢
執行單位:國立中山大學 資訊工程系
中英文摘要
中文摘要︰
本計畫所開發的資料路徑產生系統,主要包括五大部分:(1) 捨棄式乘法(truncated
multipliers)相關單元、(2) multi-partite 函數計算單元、(3) 以多階 piecewise 查表逼近之函
數計算單元、(4) 基本浮點格式算術運算單元、(5) 定點和浮點浮點格式之整合型 CORDIC 運算單元。本產生系統可自動化產生任意精確度之相關算術運算單元之 portable RTL 程 式碼。本計畫成果包括許多不同精確度下,各種不同設計方式資料路徑運算單元之合成 結果比較,提供使用者選擇最合適的硬體架構。
Abstract︰
We developed a datapath generation system that produces hardware of five major datapath arithmetic function units: (1) truncated multipliers, (2) multi-partitite function units, (3) high-order piecewise table-look-up function units, (4) basic floating-point arithmetic units, and (5) fixe-point and floating-point CORDIC function units. This system generates technology-independent RTL codes for various arithmetic function units based on designers’ requirement including target accuracy, preferred methods, and delay/area constraints. The results contain extensive comparison of datapath synthesis results using various implementation methods. Designers can select the most suitable approaches.
關鍵詞 (keywords):
計算機算術(computer arithmetic), 函數求值(function evaluation), piecewise table-look-up,
目錄
一、 研究目的
二、 文獻探討
三、 研究方法、結果與討論
(1) Multipartite Function Evaluator
(2) Piecewise Function Evaluator
(3) Truncated Multipliers
(4) Basic Floating-Point Arithmetic
(5) Fixed-point and Floating-Point CORDIC Function Unit
四、 參考文獻
五、 計畫結果自評
一、 研究目的
隨著內嵌式 SOC 的普及以及多媒體與網路相關應用的需求,現在資料路徑的功能越 來越複雜,通常包括多個可變位元精確度之算術運算模組以及函數產生器之特殊硬體 等,如數位通訊調變應用上所需的正弦/餘弦函數產生器,微處理器中計算一些超越函 數,如開根號、三角函數/指數/對數等運算的算術運算單元,如果這些函數算術運算 功能單元,都是由使用者自行設計的話,將會花費相當多的時間。此外﹐許多 EDA 工具 目前提供的算術運算模組並不足以應付如 3D 電腦繪圖等高效能需求的應用設計需求,因 此本計劃發展的算數單元產生器﹐將能為使用者產生符合需要的函數產生器計算單元。二、 文獻探討
查表法(Table-based Method)是常被使用的特殊函式的計算方法,它的好處是計算速度 快而且很適合做管線化設計,所以很適合使用在高效能需求的應用上,查表法可以分為 直接查表法和間接查表法,間接查表法常見的方法有 Bipartite 和 Multi-partite [1-3],Piecewise Table Lookup Method[4-8];Bipartite 和 Multi-partite 方法只需要查表與加法(不
須乘法)的硬體,但是需要的表格面積也隨位元精確度呈指數增加;間接查表法方法利 用近似方程式(approximate function)搭配表格(Lookup Table),將查出的方程式﹐以乘法和 加法做內插計算出最後的方程式近似解,方程式內插法所使用的近似方程式 degree 會影 響設計上之精確度及計算複雜度,隨者 degree 增加,運算結果的精確度會提高,但運算 電路將更複雜而使的計算速度減低。雖然先前的研究已經個別探討此兩種 Table-based 函 數計算,但是尚欠缺針對此兩種不同設計方法,在不同精確度和不同階數下之詳細比較。 此外,目前 cell-based 設計流程中邏輯合成所用到 Synopsys Designware library,並無支 援上述兩種設計,因此無法根據使用者的需求,自動合成最合適的函數計算硬體。本計 畫開發此兩種函數計算之自動合成器,並詳盡的比較在不同參數下之硬體面積和速度。
有關捨棄式乘法器之相關研究,已經散見於相關文獻[9-11],雖然它可有效降低乘法 相關運算單元的複雜度,但是目前的 Synopsys Designware library 並不支援合成此種捨棄 式乘法器硬體,造成許多常見的乘法相關的計算單元(如向量內積計算)之設計,非常 沒有效率,因此本計畫也實現此種捨棄式乘法器之自動合成,讓使用者可在 cell-based 設 計流程使用。
目前大部分的資料路徑運算單元均採用定點格式(fixed-point),但是在一些要求大數值 範圍之應用,如電腦繪圖,往往需要浮點乘法和加法器[12][13],但是目前台灣學術界所 使用的 Synopsys Designware library 並不支援浮點運算單元之合成,因此本計畫也開發浮 點基本算術單元。
CORDIC 運算單元是資料路徑中一個重要的運算單元,它可實現許多超越函數之算術
計算,大部分 CORDIC 相關研究均以定點格式(fixed-point)為主,而且僅針對 CORDIC 兩 種運算模式 (vectoring mode 和 rotation mode)中之 rotation mode [14-15],本計畫同時考 量兩種運算模式,設計出高 throughput 之 fully-pipelined 定點格式整合型 CORDIC 處理 器。此外,本計畫最後也設計出浮點格式之 mixed-CORDIC 處理器,可應用在三維電腦 繪圖等須大量浮點運算之相關硬體設計 [12]。
三、 研究方法,結果與討論
(1) Multipartite Method
multipartite 的一個特例,主要是由兩個表格和一個加法器組成,如圖一(a)所示,其近似 方程式為
)
,
(
)
,
(
)
(
)
(
x
f
x
0x
1x
2a
0x
0x
1a
1x
0x
2f
其中 x = x0+ x1+ x2,x 的位元長度為 n = n0+ n1+ n2,根據上面的近似方程式,將 a0(x0, x1)和 a1(x0, x2)兩個係數記錄在表格上,兩個表格的項目數分別為 2no+n1和 2no+n2。Multipartite
則是由多個表格和一個多輸入元加法器組成,如圖一(b),乃將 x 切割成更多區段 x = x1 + x2 + x3 + … +xm,形成 m 個小表格。Multipartite 運算的最長路徑只有加法器和 ROM,因 此運算速度會比在最長路徑上有乘法器的 piecewise table lookup 方法要快。簡言之,
multipartite 是使用表格面積去換取原本以方程式近似時需要的乘法器。
(a) (b)
圖一: (a) Bipartite 和 (b) multipartite 架構圖 。
表一是本計畫所設計的 multipartite 自動合成器,在各種不同參數環境下之實驗數據。 (本報告之所有實驗數據採用 TSMC 0.18um Artisan standard cell library,但是本計畫之資 料路徑運算單元產生器所產生的 RTL codes 是 technology-independent),對於每一種精確 度要求下的 2-partite、3-partite 和 4-partite 架構硬體,各產生 5 組合成數據,其中編號 1 的合成數據為 Synopsys Design Compiler 最小面積的合成結果,編號 5 的合成數據為最小 電路延遲的合成結果,編號 2 到 4 則為面積和電路延遲介於編號 1 和 5 中間的合成結果;。 Multipartite 參數包括表格個數(二到四)和位元精確度(8 位元到 24 位元),由於 multipartite 的表格面積隨精確度呈指數成長,因此在超過 24 位元之更高位元精確度下,表格面積已 經太大,而無實際用途。圖二是速度和面積之比較圖。由延遲資訊可以得知,由於 2-part 架構使用的是最簡單的 2 個數的加法器,所以延遲最小,3-part 和 4-part 架構使用的數, 多個數的加法器,所以延遲較大,相同精確度下,切割的 part 數越多,速度越慢。由面 積資訊可以得知,較低的低精確度下(8-bit~16-bit),切割成較多的 part 數反而會增加面積 消耗,20-bit 以上的精確度時,切割越多的 part 數能有效的降低面積消耗。 表二和圖三為面積和延遲乘積之比較。其中圖四(a)是在低精確度(8 位元到 16 位元) 下之比較,而圖四(b)是在中精確度(20 位元到 24 位元)下之比較。由 Area*Delay 資訊 可以發現,在低精確度下(8-bit~16-bit),2-part 的表現較佳,20-bit 以上則是 4-part 有較好 的表現,因為能大幅降低面積的消耗。
表一: 各種 Multipartite 不同切割數的合成數據比較
2-part Results 8-bit 12-bit 16-bit 20-bit 24-bit 1 3.2 9.1 21.5 71.8 572.2 2 3.3 9.1 21.5 71.8 572.3 3 3.3 9.1 21.5 71.8 572.3 4 3.4 9.2 21.6 71.9 572.4 Area gate count (K) 5 3.6 9.3 21.8 72.1 573.0 1 7.1 7.4 9.3 11.3 13.9 2 6.0 6.5 8.0 9.6 11.8 3 4.7 5.5 6.7 8.0 9.7 4 3.5 4.5 5.4 6.2 7.6 Delay (ns) 5 2.3 3.5 4.0 4.5 5.5
3-part Results 8-bit 12-bit 16-bit 20-bit 24-bit 1 2.6 12.0 21.7 56.4 247.6 2 2.7 12.0 21.8 56.5 247.7 3 2.8 12.1 22.0 56.6 247.8 4 2.8 12.4 22.1 56.8 247.9 Area gate count (K) 5 3.0 12.6 22.5 57.2 248.6 1 7.6 10.4 11.6 13.4 14.9 2 6.3 8.7 9.8 11.3 12.7 3 5.0 7.0 8.0 9.2 10.5 4 3.8 5.4 6.2 7.0 8.2 Delay (ns) 5 2.5 3.8 4.3 4.9 5.9
4-part Results 8-bit 12-bit 16-bit 20-bit 24-bit 1 2.4 16.0 24.4 56.9 197.4 2 2.4 16.1 24.6 57.0 197.6 3 2.4 16.2 24.8 57.2 197.9 4 2.5 16.3 25.1 57.6 198.2 Area gate count (K) 5 2.7 17.0 25.7 58.2 199.0 1 7.8 10.7 11.9 13.8 15.2 2 6.6 9.0 10.0 11.7 13.0 3 5.3 7.4 8.2 9.5 10.8 4 4.0 5.8 6.4 7.3 8.5 Delay (ns) 5 2.8 4.1 4.6 5.2 6.3
圖二: 各精確度下 2-part、3-part 和 4-part 架構的(a) 延遲和(b) 面積之比較
Delay (ns)
表二: 各種 Multipartite 不同切割數的面積和延遲乘積之比較
2-part Results 8-bit 12-bit 16-bit 20-bit 24-bit 1 22.7 67.3 200 811 7954 2 19.8 59.2 172 689 6753 3 15.5 50.1 144 574 5551 4 11.9 41.4 117 446 4350 Score (Area*Delay) 5 8.3 32.6 87 324 3152
3-part Results 8-bit 12-bit 16-bit 20-bit 24-bit 1 19.8 124.8 252 756 3689 2 17.0 104.4 214 638 3146 3 14.0 84.7 176 521 2602 4 10.6 67.0 137 398 2033 Score (Area*Delay) 5 7.5 47.9 97 280 1467
4-part Results 8-bit 12-bit 16-bit 20-bit 24-bit 1 18.7 171.2 290 785 3000 2 15.8 144.9 246 667 2569 3 12.7 119.9 203 543 2137 4 10.0 94.5 161 420 1685 Score (Area*Delay) 5 7.6 69.7 118 303 1254
(a) 8-bit ~ 16-bit (b) 20-bit ~ 24-bit
圖三:面積和延遲乘積之比較,(a) 8 位元到 16 位元;(b) 20 位元到 24 位元。 (
2) Piecewise Method
此方法將目標函式的輸入值域切割成許多較小的輸入值域,再針對每一個輸入小值域 做方程式近似(內插)的計算,此時需要記錄每一個切割點上的函式數值作為近似方程式逼 近時的係數,目標函式輸入值域的大小會影響到方程式逼近的精確度,對同樣的近似方 程式(內插方程式),目標輸入值域越小,計算求得的結果越精確,但是輸入值域越小(義 同將原本的輸入切割成越多的子值域),需要記錄的切割點上的函式數值越多,會增加表 格的儲存大小。以下先針對產生器中 degree=1 以及 degree=2 兩種架構和 multipartite 結果 做比較。圖四為 degree=1 和 degree=2 之 piecewise 方法架構圖。圖五為本計畫 piecewiseArea x Delay
方法產生函數產生器的流程圖。資料路徑上需要使用到乘法,實作上使用 Partial Product
Multiplier 來減少電路延遲和面積,最後的加總則使用多輸入元加法器(multi-operands adder)來實現以節省延遲和面積。
(a) degree=1 (b) degree=2
圖四: Piecewise方法函數產生器架構圖。
下表三和表四使用 piecewise 方法與 Multipartite 方法在不同精確度要求下的
Pre-layout 合成數據,並與 Synopsys 的 DesignWare Library 提供的運算單元做比較。表三
比較的函式是倒數的計算;表四為平方根倒數的計算,其中 DW 代表 DesignWare Library,
deg-1 和 deg-2 為 Piecewise 方法,2-partite、3-partite 和 4-partite 為 Multipartite 方法,調
整精確度要求由 12-bit 到 32-bit 下使用 TSMC 0.18um 製程,使用 slow library,表格中(-) 號的部分代表面積成長過於龐大,無法順利合成。觀察表三和表四的 delay 數據,可以發 現,相同精確度下,各方法的延遲表現是:2-part < 3-part < 4-part < Deg-1 < Deg-2 < DW, 如圖六(a)所示,雖然 multipartite 方法的 table 面積較大也有著較大的 ROM 電路延遲,但 是 piecewise 方法必須使用乘法器,而乘法器的電路延遲比 ROM 要大很多,因此整體而 言 multipartite 都比 piecewise 有較快速度表現,而 DW 的方法則有著速度過慢的缺點; 圖六(b)為面積的表現,單純以方法做比較,DW < piecewise < multipartite,跟速度表現呈 現相反的趨勢。 圖七為圖六(b)之局部放大圖。
表三: 倒數函式下各種方法的面積和速度比較
Reci Method12-bit16-bit 20-bit 24-bit 28-bit 32-bit DW 4.55k 7.39k 10.66k 13k 19.31k 25.1k Deg-1 3.02k 6.45k 15.1k 50.1k 181k -Deg-2 6.5k 8.5k 12.2k 16.5k 22.7k 39k 2-part 9.3k 21.8k 72.1k 573k - -3-part 12.7k 22.7k 57.5k 249k - -Area (gate count) 4-part 17.1k 25.9k 58.5k 199k - -DW 12.9 17.3 21.8 28 31.2 35.6 Deg-1 6 7 8 10 10.5 -Deg-2 8 9 10 11 11.5 12 2-part 3.5 4 4.5 5.5 - -3-part 4.5 5 5.6 6.8 - -Delay (ns) 4-part 4.8 5.2 5.9 7 - -表四: 平方根倒數函式下各種方法的面積和速度比較
RSQ Method 12-bit 16-bit 20-bit 24-bit 28-bit 32-bit DW 14.05k25.91k35.67k 53.85k 74.07k -Deg-1 3.58k 7.99k 30.9k 104.62k - -Deg-2 7.03k 10.99k16.65k 18.83k 27.88k66.68k 2-part 9.3k 21.8k 72.1k 573k - -3-part 12.7k 22.7k 57.5k 249k - -Area (gate count) 4-part 17.1k 25.9k 58.5k 199k - -DW 24.9 35.2 50 60 71 -Deg-1 7 8 9 11 - -Deg-2 7.7 8.5 9.5 11.5 12 13.2 2-part 3.5 4 4.5 5.5 - -3-part 4.5 5 5.6 6.8 - -Delay (ns) 4-part 4.8 5.2 5.9 7 -
(a) delay (ns) (b) 面積
圖六:倒數函式在不同精確度下各種方法的(a)延遲和(b)面積之比較。
圖七:圖六(b)之的局部放大圖
以 multipartite 而言,2-part 的實現在 16-bit 以下的精確度面積小,但是超過 16-bit 的精確 度時則是 3-part 和 4-part 的面積較小,類似的情形在 piecewise 方法上也有出現,精確度 小於 18-bit 以下時使用 Deg-1 的面積消耗較小,但是超過 18-bit 以上時,則是使用 Deg-2 可以有較小的面積,主要的原因是來自於 ROM 面積的成長,在相同的精確度下,ROM 表格面積是 Deg-1 > Deg-2,但是內插電路面積則是 Deg-2 > Deg-1,當精確度提高後 ROM 面積成長的速度超過內插電路面積之後整體面積變成 Deg-2 比較小了。
類似的結果也出現在其他函式上,如次方運算和對數運算,因此當設計這些特殊函 式計算硬體時,在做速度和面積的取捨時除了不同方法的考量之外,該方法在不同精確 度下也應該選擇不同的實現架構,而這個精確度選擇的分界點發生在 16-bit 至 20-bit 之 間,如圖七。
有關 piecewise 方法之研究論文,大部分採用 degree-2 或是更低階之多項式做內 插,本計畫更增加 degree-4 之自動合成,其所需硬體如圖八。其中表格用來儲存係數值, 冪次方產生器用來計算 2, 3, 4 l l l x x x ,接著將查出來的係數值與 x 的冪次方相乘,最後把每 一項相乘後的值,送到多輸入加法器加總。表五針對開平方根之函式,比較 degree-1,
degree-2, degree-4 和 Synopsys Designware 之合成數據。
圖八:Degree-4piecewise架構。
表五:degree-1, 2, 4 piecewise 和 Synpsys Designware 之比較。(函數:SQRT)
DW
8-bit
16-bit
24-bit
32-bit
48-bit
Area gate count (K) 0.4 1.4 3.1 5.3 11.3 Delay (ns) 40 109.4 209 307 582.5 Area*Delay 16 153 648 1627 6582
Degree-1
8-bit
16-bit
24-bit
32-bit
48-bit
Area gate count (K) 0.9 3.0 25.2 - -Delay (ns) 13.7 21 32.7 -
-Area*Delay 12 63 824 -
-Degree-2
8-bit
16-bit
24-bit
32-bit
48-bit
Area gate count (K) 3.1 6.3 12.5 33 -Delay (ns) 17.6 26.3 36.4 48.6 -Area*Delay 55 166 455 1604
-Degree-4
8-bit
16-bit
24-bit
32-bit
48-bit
Area gate count (K) 3.8 10.7 18.3 28.4 70.3 Delay (ns) 24.9 40.2 52.0 65.0 88.3 Area*Delay 95 430 952 1846 6208
(3) Truncated Multiplier
傳統的乘法器單元為輸入(m 位元 * n 位元)則輸出(m+n 位元)的乘法計算結果,但是 資料路徑的設計中並不是一定都會完整的使用 m+n 位元寬度的計算結果,例如當某個資 料路徑其內部運算數值需要維持在 32-bit (S15.16,此表示法中 S 為符號位元,小數點以 前代表整數部分,以後代表小數份)的情況下,則傳統乘法器產生出的 64-bit(S31.32) 需要轉換成 32-bit(S15.16),所以必須將乘法器產生的數值去掉前 16 個位元以及後 16 個位元,而這些每次都必須去掉的位元是可以不需要運算的,所以考量將這些多餘的計 算硬體刪除,即為 Truncated Multiplier。圖九是一個 truncated array multiplier 之架構圖。圖九:Truncated array multiplier。
本 合 成 系 統 中 提 供 的 可 刪 除 掉 前 面 位 元 與 後 面 位 元 的 計 算 硬 體 的 truncated
multiplier,本乘法器在刪除前面位元的部份在刪除不須計算的硬體後,由於需要調整兩
個輸入值的位元,這將會造成些許誤差,所以也必須加上額外的修正電路以避免誤差擴 大,最後只需再加入 LZA(Leading Zero/One Anticipation)以及 shifter 和一個加法器的 硬體就可以實現刪除掉前面不需要位元的乘法器,而刪除後面位元的部份在將不需要的 計算硬體刪除後,用少許的修電路差代替以降低誤差,表六為 64-bit truncate to 32-bit(刪 除前 16 位元與後 16 位元)的乘法器與傳統樹結構乘法器的比較,顯示能有效節省約一半 面積。
表六:Array 與 Tree 結構 Truncated Multiplier 與傳統乘法器 area/time 比較。
Truncated Multiplier Area (gate count) Time (ns)
Array 4332 14.02
Tree 6395 5
No truncate 8820 5
圖十為 8x6-bit 捨棄式乘法器,其中有兩個參數 t 與 k。t 代表捨棄掉部分乘積位元
(partial product bits)的行數,即實體電路中沒有真正產生的部份,如圖中三角形所圍的地
參數 k 為實體電路中有產生,但最後輸出結果時,把它捨棄掉的位元數。k 存在的目的有 點類似保留位元(guard bit)的功能,主要是用來降低誤差,使精確度達到預期的要求。
x1y6 x2y6 x3y6 x4y6 x5y6 x6y6 x7y6 x8y6
x1y5 x2y5 x3y5 x4y5 x5y5 x6y5 x7y5 x8y5
x1y4 x2y4 x3y4 x4y4 x5y4 x6y4 x7y4 x8y4
x1y3 x2y3 x3y3 x4y3 x5y3 x6y3 x7y3 x8y3
x1y2 x2y2 x3y2 x4y2 x5y2 x6y2 x7y2 x8y2 x1y1 x2y1 x3y1 x4y1 x5y1 x6y1 x7y1 x8y1
z1 z2 z3 z4 z5 z6 z7 z8 z9 z10 z11 z12 z13 z14 圖十:8x6-bit 捨棄式乘法器部分乘積示意圖, k = 2, t = 4 若要進一步降低捨棄式乘法器的誤差,常見的作法是加入額外的誤差修正電路,或 稱為誤差補償電路。主要有兩種誤差修正的方法,一種是常數修正(Constant Correction), 另一種為變數修正(Variable Correction)。常數修正就是在產生部分乘積時,多加一列常數 修正值如圖十一,而常數修正值可以取最大誤差的一半,來降低絕對誤差。變數修正則 是將原本不被產生的部份乘積位元中,取其權重最大的那一行,把它挪移到參數 k 值的 最小權重那行下面,過程如圖十二所示。表七列出捨棄式乘法器的合成資訊,從1616、 24 24 到3232的輸入位元寬度,表中捨棄約 1/3 的乘法器輸出位元數,平均可減少大 約 15% ~ 25%左右的面積。由此可見,如果當一個系統中需要很多乘法運算時,採用捨 棄式乘法器可以省下不少面積。
x1y6 x2y6 x3y6 x4y6 x5y6 x6y6 x7y6 x8y6
x1y5 x2y5 x3y5 x4y5 x5y5 x6y5 x7y5 x8y5
x1y4 x2y4 x3y4 x4y4 x5y4 x6y4 x7y4 x8y4
x1y3 x2y3 x3y3 x4y3 x5y3 x6y3 x7y3 x8y3
x1y2 x2y2 x3y2 x4y2 x5y2 x6y2 x7y2 x8y2 x1y1 x2y1 x3y1 x4y1 x5y1 x6y1 x7y1 x8y1
z1 z2 z3 z4 z5 z6 z7 z8 z9 z10 z 11 z12 z13 z14 圖十一:常數修正(Constant Correction)。 k t 不產生 保留 (最後輸出值) k t 不產生 保留 (最後輸出值) 捨棄 加入一列
x1y6 x2y6 x3y6 x4y6 x5y6 x6y6 x7y6 x8y6
x1y5 x2y5 x3y5 x4y5 x5y5 x6y5 x7y5 x8y5
x1y4 x2y4 x3y4 x4y4 x5y4 x6y4 x7y4 x8y4
x1y3 x2y3 x3y3 x4y3 x5y3 x6y3 x7y3 x8y3
x1y2 x2y2 x3y2 x4y2 x5y2 x6y2 x7y2 x8y2 x1y1 x2y1 x3y1 x4y1 x5y1 x6y1 x7y1 x8y1 x5y6 x6y5 x7y4 x8y3 z1 z2 z3 z4 z5 z6 z7 z8 z9 z10 z11 z12 z13 z14 圖十二:變數修正(VariableCorrection) 表七:捨棄式乘法器的合成資訊 Parameters n m -bit truncated multiplier k T Area gate count (k) Delay (ns) Normalized Max Error (ulps) Area Reduction Ratio 0 0 3.65 4.725 - -0 10 2.67 5.00 9 26.85% 1 9 3.00 4.612 4.000 17.81% 2 8 3.10 4.593 1.751 15.07% 16x16 3 7 3.18 4.700 0.751 12.88% 0 0 8.37 5.288 - -0 16 6.37 5.29 15 23.90% 1 15 6.53 5.280 7.000 21.98% 2 14 6.80 5.246 3.250 18.76% 24x24 3 13 6.93 5.335 1.5000 17.20% 0 0 14.64 5.826 - -0 20 11.62 5.77 19 20.63% 1 19 12.10 5.760 9.000 17.35% 2 18 12.31 5.778 4.250 15.92% 32x32 3 17 12.53 5.687 2.000 14.41% k t 不產生 保留 (最後輸出值) 捨棄 變數修正值
(4) Basic Floating-Point Arithmetic
傳統的浮點加法器和乘法器單元由於需要處理指數的運算,所以需要先有前置處理來 對齊小數點,緊接著進行完定點數運算後,必須做正規化和小數點進位捨去判斷來調整 指數,這些為後置處理,乘加或是乘累加運算在許多應用中經常被大量使用,當使用獨 立的浮點乘法器和浮點加法器來做乘加運算時需要經過如圖十三中紅色虛線所經過的處 理,為了加速這樣的計算流程,本計畫有關基本的浮點算術單元,設計浮點的乘加單元 和浮點的向量內積單元。浮點乘加單元(圖十四)和向量內積單元(圖十五)架構中,除了可 以避免多餘的前置處理和後置處理之外,也使用如部分積乘法器,LZA(Leading Zero/OneAnticipation)和 Carry-Save Adder 來加速計算速度,浮點乘加單元可以提供比單獨的乘法
和單獨的加法單元更快速的乘加運算,而面積消耗也更小,獨立的乘法與加法器在計算 浮點的向量內積時必須要重複多次的加法和乘法運算,使用提出的架構能在計算上更有 效率。表八是浮點加法器之合成資訊,表九是浮點乘法器之合成資訊,表十列出各種浮 點算術運算單元(包括加法、乘法、乘法累加和四維向量之向量內積)之合成結果。
圖十四: 浮點數乘加單元架構
表八:浮點數加法器面積與速度
Floating-point Adder (Ordered by Critical Path of FP-Adder) Parts Area (gate count) Delay (ns) Unpack, Exponent
compare and swap 768.58 1.71 Right shifter 1014.71 1.13
Adder 793.03 1.4
LOD 696.27 0.85
Exponent update 737.35 0.94 Special case 1246.57 1.71
Other parts don’t appear on the critical path
Round 297.72 0.98 Left shifter 1042.88 1.07 Summary Pre-processing 2927.64 2.99 Adder 793.03 1.4 Post-processing 3561.47 3.51 Others 938.37 -Total 8.22K 7.9 表九: 浮點乘法器面積與速度
Floating-point Multiplier(Ordered by Critical Path)
Parts Area (gate count) Delay (ns) Unpack + Pre-processing 686+381.23 0.13
Multiplier 9.15K 3.59
Round 313 1.19
Exponent update and Pack 242.39+686.43 1.07
Total 10.97K 5.98
表十:浮點算術單元的合成結果
Architecture Delay(ns) Area(gate-count) FP-Adder 7.9 8.22k FP-Multiplier 5.98 10.97k FP-MAC 10.99 16.55k FP-Dot4 15.29 51.39k
(5) CORDIC-based Function Units
本計畫開發定點格式(fixed-point)和浮點格式(floating-point)之 CORDIC 處理器單元, 其中定點格式 CORDIC 採用 fully-pipelined 架構,因此所需的加法器個數會隨位元精確度 而線性增加,但是不需要移位器。表十一為 fully-ipelined CORDIC 於不同位元寬度下所 需 pipeline 深度與 pre-Layout Synthesis 結果資訊。例如﹐一個 32 位元精確度﹐工作頻率 為 100MHz 之 pipelined CORDIC 約須 30K gates。
表十一:定點 fully pipelined CORDIC 之合成數據。(TSMC 0.13um slow )
accuracy 16 bits 24 bits 32 bits Pipeline stage number
Normal iteration 17 26 34 Scaling iteration 11 15 20
Total 28 41 54
Clock cycle Area (um2/ gate count) 10 ns 398075 / 79616 870217 / 174044 1489069 / 297814 5 ns 457556 / 91512 893991 / 178799 1498721 / 299745 本計劃也已經設計出 IEEE-754 單精準度浮點格式之 mixed-CORDIC 的計算單元,它 整合兩種 CORDIC 運算模式 (vectoring mode 和 rotation mode),如圖十六。除了前置和
後置處理單元之外,它的核心分成兩大部分(粗調級和微調級),第一部份(粗調級)採
用 pipelined CORDIC 架構,第二部份(微調級)則採用乘法加法硬體,配合查表 ROM 來實現。前置處理(包括兩個 pipelined stages)主要是將輸入值轉換成 CORDIC 能處理 的收斂範圍內。粗調級的 13 pipelined stages 執行 CORDIC 運算的前半部份(向量旋轉的 角度精確度在小數 N/2 位元內),微調級的 6pipelinedstages,在 rotationmode執 行向量旋轉,在 vectoringmode則是計算向量和 x軸的夾角以及向量的長度。此架構共 用 vectoringmode和 rotationmode之硬體,並將向量長度之修正動作,提前到前 N/4
pipelined CORDIC stages 完成,因此可降低計算的時間。
表十二是在 TSMC 0.13um standard cell library 下合成的結果(cycle time:4ns)。可以看 到合成後的總面積為 112.7K gate count,其中以粗調級的 CORDIC stage 佔全部面積的 48% 為最大,而微調級部分僅佔 15%左右。在 cycle time 方面,浮點 Mix-CORDIC 最快可以 壓至 4ns,cycle time 最長是在後置處理及旋轉部分,因此所實現的架構其 throughput 每 秒可以產生 250M 的旋轉運算。表十三為浮點 Mix-CORDIC 和 fully-pipelined 浮點
CORDIC 在 area、cycle time 與 latency 的比較,浮點 Mix-CORDIC 架構在同樣 cycle time
情況下的面積比 fully-pipelined 浮點 CORDIC 節省約 34%,其 cycle 數目也從 49 個減為
Kq Pipelined CORDIC MUL (b*ct) MUL (b*ct) MUL (b*b) + MUL (N/2+1)*b Piecewise (Degree 1) N/2+1 mux mux 0 mux mux mux mux mux mux Shifter Shifter -MUL (N/2)*(N/2) mux + mux mux mux Kq Shifter Shifter Shifter N/2+1 mux 0 0 mux Kq (N/2+1 stages) MUL (b*ct) MUL (b*ct) MUL (b*b) + MUL N/2+1 N/4+3 stages mux mux 0 mux mux mux mux mux mux Shifter Shifter MUL mux + mux mux mux Kq Shifter Shifter Shifter N/2+1 mux 0 0 mux 後置處理及旋轉單元 前置處理及旋轉單元 2 stages 13 stages 6 stages 2 stages
圖十六:浮點 Mixed-CORDIC 架構(包括 vectoring mode 和 rotation mode)。 表十二:浮點 mixed-CORDIC 之合成面積資訊 名稱 面積(gate count) 所佔比例(%) 前置處理&旋轉 4.5K 4% 粗調級(CORDIC stage) 54K 48% 倒數 3.1K 3% 修正長度 20.5K 18% Middle shifter 3.9K 3% 微調級 16.7K 15% 後置處理&旋轉 10K 9% 總面積 112.7K 100%
表十三:浮點 Mix-CORDIC 和浮點 fully-pipelined CORDIC 的比較 面積 (gate count) Cycle time (ns) Latency (cycle) 傳統浮點 CORDIC 錯誤! 找不到參照來源。 170.5K 4 49 浮點 Mix-CORDIC 112.7K 4 25
降低比例 34% - 49%
四、 參考文獻
[1] M. J. Schulte, J. E. Stine, “Approximating Elementary Functions with Symmetric Bipartite Tables”, IEEE Trans on Computers, Vol.48, No. 8, pp. 842 – 847, 8 Aug.1999.
[2] F. de Dinechin and A. Tisserand, “Some Improvements on Multipartite Table Methods”,
Proc. 15th IEEE Symp. on Computer Arithmetic, pp.128 – 135, June 2001.
[3] F. de Dinechin and A. Tisserand, “Multipartite Table Methods”, IEEE Trans on Computers, Vol.54, No. 3, pp. 319 – 330, March 2005.
[4] Cao, J., et al., “High-Performance Architectures for Elementary Function Generation”, Proc.
15th IEEE Symp. on Computer Arithmetic, pp. 136 – 144, June 2001.
[5] E. G. III Walters, M. J. Schulte, “Efficient Function Approximation Using Truncated Multipliers and Squarers”, Proc. 17th IEEE Symp. on Computer Arithmetic, pp. 232 – 239, June 2005.
[6] J.-A. Pineino, et al., “High-speed Function Approximation Using a Minimax Quadratic Interpolator”, IEEE Trans. Computers, Vol. 54, No. 3, pp. 304-318, Mar. 2005.
[7] T. Sasao, et al., “Numerical Function Generators Using LUT Cascades”, IEEE Trans
Computers, Vol. 56, No. 6, pp. 826-838, June 2007.
[8] D.-U. Lee, et al., “Hardware Implementation Trade-Offs of Polynomial Approximations
and Interpolations”, IEEE Trans Computers, Vol. 57, No. 5, pp. 686-701, May 2008.
[9] M. J. Schulte and E. E. Swartzlander, Jr., “Truncated Multiplication with Correction
Constant,” VLSI Signal Processing,VI, New York: IEEE Press, pp. 388-396, 1993.
[10] J. E. Stine and O. M. Duverne, “Variations on Truncated Multiplications”, Proc.
Euromicro Symp. On Digital System Design, 2003.
[11] L-D Van and C-C. Yang, “Generalized Low-Error Area-Efficient Fixed-Width Multipliers,” IEEE Trans on Circuits and Systems-I, Vol. 52, pp. 1608-1619, 2005.
[12] T. Lang and E. Antelo, “High-Throughput CORDIC-Based Geometry Operations for 3D
Computer Graphics,” IEEE Transactions on Computers, vol. 54, no. 3, pp.347-361, Mar.
2005.
[13] T. Lang and J. D. Bruguera, “Floating-Point Multiply-Add- Fused with Reduced Latency,”
IEEE Trans. On Computers, Vol. 53, No. 8, pp. 988-1003, Aug. 2004.
[14] T.-B. Juang, S.-F. Hsiao, and M.-Y. Tsai, “Para-CORDIC: Parallel CORDIC Rotation Algorithm”, IEEE Trans. Circuits and Systems, I: Regular Papers, Vol. 51, No. 8, pp. 1515-1524, Aug. 2004.
[15] E. Antelo, J. Villalba, and El L. Zapata, “Low-Latency Pipelined 2D and 3D CORDIC Processors”, IEEE Trans. Computers, Vol. 57, No. 3, pp. 404-416, Mar. 2008.
五、 計畫結果自評
本計畫主要是彌補目前 cell-based design flow 中,Synopsys Design Compiler 無法合成(或 是無法有效率合成)的資料路徑運算單元,讓 SoC 設計者可針對不同的應用需求,更有 彈性的選擇合適的算術運算單元,已經發展出之算術運算單元產生系統,能夠產生提供 給數位訊號處理器及多媒體系統使用的函數產生器,本系統產生之各種特殊函式運算, 如指數、對數和平方根倒數等也很適合使用在三維電腦繪圖之硬體加速器之設計上,在 嵌入式 SOC 晶片設計越來越普遍的趨勢下,本算術運算單元產生系統可以用來縮減設計 資料路徑所需的時間、滿足使用者多方面的需求(Speed/Area/Power)和降低設計成本。 部份的學術研究成果已經發表於 IEEE International Conferences on Circuits and Systems
(ISCAS), IEEE Asia-Pacific Conference on Circuits and Systems (APCCAS),目前也整理投