對數轉換單元大致分為三大類方法,即資料遞迴、查表、移位及加法。使用資 料遞迴的方式[1-3]具有低面積高精確度的優點,但是延遲時間比起其他兩種方法要 來得長。而查表的方式[4-9]則是在速度上有很好的表現,但在硬體面積上必須花費 較多成本。移位及加法的方式[10-15]兼容了面積、速度與精確度,是以一些簡單的 方程式對小數部分進行近似值的修正。而本篇論文所提出的方法,以及所用來比較 的其他方法皆是歸類於移位及加法中,此章將介紹前人提出的方法以供後續數據之 比較。
3.1 Mitchell 的一區段近似方法
最早於1962 年,Mitchell 提出了一種介於 2 的次方的線性內插近似方法[10],
此方法的最大優點是簡單易於計算。
令一數值 N 可表示成式子(3.1)的形式,其中 2k≤N<2k+1,0≤x<1。
N = 2k(1+x) ... ... ... ... ... (3. 1) 例如,N = 3.25,以二進制表示為 011.012,最高位的非零值為010.02,因此它 的二的次方項 k 為 1。接著將最高位的非零位元以下的值(1.012)移位至小數點之後,
這個調整後的小數位之值即為 x。因此,N 可以表示為 3.5 = 21(12+0.1012)。
若將套入式子(3.1)的輸入值 N 做以二為底的對數運算,可以得到式子(3.2)。
log2(N) = k + log2(1+x) ... ... ... ... ... (3. 2) Mitchell 的方法就是將複雜的 log2(1+x)直接以 x 來近似,省去了所有繁雜的計 算,僅以 k 與 x 這兩個容易取得的數來做對數的近似,如式子(3.4)。在原式(3.2)中,
log2(3.25) = 12 + log2(12+0.1012),而以 Mitchell 的方法轉換則會得到 log2(3.25) ’ = 12 + 0.1012的近似值。
log (12 +x) '= ... x ... ... ... ... (3. 3)
2 2
log ( ) 'N = +k log (1+x) '= + x k ... ... ... ... ... (3. 4) 要取得對應於N的k與x這兩個數值,只需要用到移位與計數而已,這種方法易 於理解而且在硬體上也能簡單的實現。但由於這個方法僅是單純的將輸入值N調整 後的小數位x加上k,因此從式子(3.4)可以輕易的看出對數轉換的結果與N呈線性關 係,如圖3- 1。
圖3- 1:Mitchell 的對數近似值與真實對數值之比較(N=2 to 4)
利用式子(3.5)可以計算 N 的真實對數與近似值的誤差 Error(N),再將此誤差除 以真實的對數值並乘上100%即為誤差百分比 Percent Error(N)。從式子(3.2)及(3.4) 可以得知 k 的值並不影響誤差,真正影響誤差的部份為 log2(1+x)’。又因為 x 會被調 整為0≤x<1,如 N=11.02與 N=110.02兩者的 x 是相同的,皆為 0.102,在 x 相同的情 況下當 N 愈大時,得到的誤差百分比會愈小,因此我們將 N 的範圍指定在 2≤N<4,
以避免較大的分母使誤差相對變小。
2 2 2
Error( ) log ( ) log ( ) ' log (1N = N − N = +x)− x ... ... ... (3. 5)
2 2
2 2
log ( ) log ( )' Error( )
Percent Error( ) 100% 100%
log ( ) log ( )
N N
N N
N N
= × = − × …... ... ... (3. 6)
透過MATLAB 的模擬,Mitchell 的近似方法在 x=0.442 的時候會產生最大正誤 差0.086,當 x=0.359 時產生最大的誤差百分比 5.791%,同時式子(3.3)也反映出 Mitchell 的方法求得的近似值永遠小於等於真實對數值。這個方法雖然簡單且易於
圖3- 2:Combet 的對數近似值與真實對數值之比較(N=2 to 4)
3.3 SanGregory 的二區段近似方法
SanGregory 於 1999 年提出了一個以 Mitchell 的方法為基礎的二區段近似方法 [12],將 N=2k到 N=2k+1之間的數均等的分成兩半,並且各自以不同的修正值進行額 外修正。
在Mitchell的方法中,當N的值為 2k和2k+1時,產生的近似誤差為0,而當N的 值離這兩點愈遠時,誤差值也會隨之增加。在章節3.1 中提到,當x為 0.442 的時候 會產生最大的正誤差0.086,也就是說,修正值的範圍必須介於 0.125 (0.0012)與 0.0625(0.00012)才是最合理的。將圖 3- 1以N=3 (k=1, x=0.5)為中點分成 2≤N<3 與 3≤N<4 兩部分來觀察,可以發現第一段的誤差大致上與N呈正向關係,在第一段的 最後N=2.999 時,誤差為 0.085,而第二段的誤差則是呈現反向關係,當N=3.0 的時 候誤差為0.085,隨著N的增加誤差會逐漸降低。
為了進一步修正Mitchell 的方法所造成的誤差,SanGregory 以隨著 N 改變而變 動的 x 做為額外修正的依據,並將 x 分為兩個區段進行修正。第一區段 0≤x<0.5 中,
由於修正值必須小於0.125 (0.0012),因此必須先將 x 右移 2 位元。而在第二區段
使用SanGregory的方法修正後,得到的近似值與真實對數值的比較如圖 3- 3,
使誤差百分比區間從5.791%降至 4.207%。雖然精確度提升了,但從比較圖可以看
出近似的結果產生了負的誤差,而原本Mitchell的方法是不會產生負誤差的。也因為 進行了額外的修正使得近似值更為精確,因此必須付出額外的硬體成本來實現這種 架構。
3.4 Abed 的二區段及六區段近似方法
Abed 在 2003 年,提出了二區段及六區段的近似方法[13]來改良 Mitchell 的方 法。其中,二區段的方法是以面積為考量,而六區段的方法則是以精確度為考量。
在二區段的近似方法中,大致上與SanGregory的方法相同,唯一的差別在於額 外修正的x尾數減少了 1 bit,如式子(3.9)。由於尾數的使用數比起SanGregory的方法 要少1 bit,因此在面積方面可以有更好的表現,但也因為尾數取的較少,因此誤差
而在六區段的近似方法中,是以提升精確度為主要目的,因此不再是均等的將
3.5 Juang 的二區段近似方法