• 沒有找到結果。

由下而上的 ADB 設定完成時脈差異最小化…

在文檔中 中 華 大 學 (頁 38-49)

第四章 限制最大延遲時間條件下的 ADB 設定

4.1 由下而上的 ADB 設定完成時脈差異最小化…

在緩衝器時脈樹中,緩衝器(buffer)設定於樹型的各分支(branch)上。給定緩衝器,

B

i,在 Bi為根(root)的子樹中,首先將最小延遲時間(lower latency),li,的正反器,及 最大延遲時間(upper latency),ui,的正反器,分別定義為 Bi的最小延遲時間和最大延 遲時間。此外在 Bi中,定義延遲時間區間(latency range),[li

, u

i],為從最小延遲時間,

l

i,到最大延遲時間,ui,之間的區間。因此 Bi的延遲差值(latency skew)即定義為 Bi

的最大延遲時間和最小延遲時間之間的絕對差值,ui-l。若 Bi i位於時脈樹的根節點(最 高節點)上,則 Bi的延遲差值即為時脈差異(clock skew)。

在 Bi為根的子樹中,有兩種可能的樹型結構。如圖 4-2(a)所示,若 Bi的分支只 連接 p 個正反器(flip-flop),其延遲時間(latency)分別為 d1, d2,.., dp,於 Bi為根的子樹 中無法找到緩衝器的位置替換成 ADB,因此無法降低 Bi的延遲差值,而 Bi的延遲時 間區間為[Min{d1 ,.., dp} , Max{d1 ,.., dp}]。另一方面,如圖 4-2(b)所示,若 Bi連接 p 個 正反器和 q 個緩衝器,B1, B2,.., Bq,其延遲時間分別為 d1, d2 ,.., dp,且緩衝器,B1, B2 ,..,

B

q,的延遲時間區間分別為[l1 , u1], [l2 , u2] ,.., [lq , uq],則可將部分的緩衝器替換成 ADB,並指定 ADB 適當的延遲數值(delay values)以降低 Bi的延遲差值。

B

i

d

1

d

p

[l

i

, u

i

]

Bi

d1 dp

[li, ui]

B1 Bq

[lq, uq] [l1, u1]

(a) (b)

圖 4-2 緩衝器,Bi,可能的樹型結構及各緩衝器的延遲時間區間

30

在演算法的步驟上,首先將與緩衝器,Bi,連接的 p 個正反器(延遲時間分別為

d

1, d2,.., dp)視為虛擬緩衝器(dummy buffer),並將其命名為 B0,而 B0的延遲時間區間 為[l0 , u0],其中 l0=Min{d1 ,.., dp},u0=Max{d1 ,.., dp}。接下來將與 Bi連接的 q 個緩 衝器,B1, B2,.., Bq,(延遲時間區間分別為[l1 , u1],[l2 , u2] ,..,[lq , uq])的延遲時間區間依 照最小延遲時間的大小以由小到大的順序進行排序,並儲存在區間列表(interval list) 中。藉由在 Bi為根的子樹中的 q 個分支緩衝器(branch buffer)內找到適當的位置並將 緩衝器替換成 ADB,以降低 Bi的延遲差值。為了有效率地設定 ADB 及計算 Bi為根 的子樹在插入 ADB 後的延遲時間區間,演算法的步驟如下所述:

在緩衝器,Bi的分支中,如圖 4-3(a)所示,給定兩個已排序的緩衝器,Bj及 Bk其延遲時間區間分別為[lj , uj]和[lk , uk],其中 lj

l

k。如圖 4-3(b)所示,[lk , uk]不能被 完全地包含在[lj , uj]中。若滿足以上條件,則執行區間合併運算(Interval-Merging Operation),藉由將[lj , uj]向右平移,使[lj , uj]及[lk , uk]的交集達到最大化,使 Bj和 Bk 的延遲時間區間合併,進而使 Bi的延遲差值達到最小化。透過將緩衝器,Bj,替換成

ADB

j,並指定延遲數值於 ADBj上,進而將左邊的延遲時間區間向右平移。

Bj

Bk

lj uj

lk uk

Bj

Bk

lj uj

lk uk

lj uj

lk

B

k uk

B

j

(a) 可執行區間合併運算的情形 (b) 不需執行區間合併運算的情形 圖 4-3 Bi及 Bk延遲時間區間可能分佈情形

在區間合併運算的過程中,任意子樹的正反器之延遲時間不能超過時脈樹的最大 延遲時間,LATmax。由於時脈樹的最大延遲時間改變可能會影響平均的延遲時間,而 使時脈週期發生變化,因此時脈樹所有正反器,FF1, FF2,.., FFn,之延遲時間必須小

31

於或等於 LATmax才能滿足延遲時間的限制條件。已知 ADB 可指定的延遲數值為不連 續的延遲數值,假設 ADB 可調的延遲數值範圍(tuning range)共有 p 種,分別為延遲 數值,D1, D2 ,.., Dp,在指定 ADB 延遲數值的過程中必須找到適當的延遲數值指定於 ADB 上。

|R

L

| R

L

R

R

|R

R

|

lL uL

lR uR

圖 4-4 區間,RL和 RR

如圖 4-4 所示,給定兩個區間,RL及 RR,其延遲時間區間分別為[lL, uL]及[lR, uR],

而延遲差值分別以|RL|和|RR|表示。透過區間合併運算,將左邊的區間,RL向右平移,

使區間,RL,與右邊的區間,RR,合併,進而使合併的區間(merging latency range)之 延遲差值最小。在區間合併運算的過程中,根據延遲差值,|RL|和|RR|的大小不同,可 能會有下面兩種情況:

情況 1:|RL|

|RR| 及 情況 2:|RL|>|RR| 下面對情況 1 及情況 2 作詳細的說明。

若為情況 1,則延遲差值,|RL|,小於或等於延遲差值,|RR|,如圖 4-5 所示,在 ADB 可調的延遲數值範圍,D1, D2 ,.., Dx,中指定適當的延遲數值於 RL上,將 RL右平移,使 RL被完全地包含在 RR中,透過這樣的方式使 RL及 RR的交集最多,使合 併的區間之延遲差值最小。透過下面定義決定 Dmin之值:

} 1 ,

|

min

Min

{

D l l D u u i p

D

i R

L

i

R

L

 

藉由在差值,lR

-l

L,到差值,uR

-u

L,的範圍中找到所有符合的延遲數值,Di,透 過指定最小的延遲數值,Dmin,使 ADB 指定的延遲數值最小化。但是若{Di | lR-lL

D

i

u

R-uL, 1

ip}為空集合時,代表在 ADB 可調的延遲數值範圍中找不到適當

32

+Di

lL uL

|RL|

|RR|

lR uR

|RL|

|RR|

圖 4-5 藉由指定延遲數值,Di,使區間,RL,被完全地包含在區間,RR,中

的延遲數值,使 RL被包含在 RR中。若處於此情況,則有兩種可能的情形,如圖 4-6(a) 所示,RL的下限在 RR下限左邊的位置,以及如圖 4-6(b)所示,RL的上限在 RR上限右 邊的位置。比較這兩張圖,必須指定一最小的延遲數值,使圖中斜線陰影處長度最短,

代表合併的區間之延遲差值越小。透過下面兩個定義,決定 DL,max及 DR,min之值:

DL,max=Max{ Di |

l

R

(

l

L

D

i)

0 , 1

ip},及

DR,min=Min{ Di | (uLDi)uR

0 , (uL+Di)

LAT

max , 1

ip}。

如圖 4-6(a)、(b)所示,延遲數值,DL,max,代表使區間差值,

l

R

(

l

L

D

i),最小化 之最大延遲數值,而延遲數值,DR,min,代表使區間差值,(uLDi)uR,最小化之最 小延遲數值。此外必須限制平移後的區間,RL,其區間之延遲時間的上限不超過時脈 樹的最大延遲時間,LATmax,換言之(uLDi)LATmax

lL+Di

+Di

|RL|

|RR|

lR

uL+Di

+Di

|RL|

|RR| uR (a) RL在 RR偏左位置 (b) RL在 RR偏右位置

圖 4-6 情況 1 時 RL及 RR可能合併情形

經過指定延遲數值,DL,max和 DR,min,的步驟後,再判斷區間差值,lR-(lL+DL,max),

和區間差值,(uL+DR,min)-uR,何者最小,指定最小的區間代表合併的區間之延遲差 值最小,透過下面定義,決定指定 DL,max

或 D

R,min之值:

33

指定延遲數值,DL,max,當

l

R

(

l

L

D

L,max)

(

u

L

D

R,min)

u

R條件滿足時;

指定延遲數值,DR,min,當

l

R

(

l

L

D

L,max)

(

u

L

D

R,min)

u

R條件滿足時。

若區間差值,lR-(lL+DL,max),小於或等於區間差值,(uL+DR,min)-uR,時,則 指定延遲數值,DL,max;若區間差值,lR-(lL+DL,max),大於區間差值,(uL+DR,min)-

u

R,時,則指定延遲數值,DR,min

另一方面,若為情況 2,則延遲差值,|RL|,大於延遲差值,|RR|,如圖 4-7 所示,

在 ADB 可調的延遲數值範圍中指定適當的延遲數值於 RL上,使 RL向右平移,使 RL

完全地含括整個區間,RR,透過這樣的方式使 RL及 RR交集最多,使合併的區間之延 遲差值最小。透過下面定義決定 Dmin之值:

Dmin=Min{ Di | uR

-u

L

D

i

l

R

-l

L , (uL+Di)

LAT

max , 1

ip}。

+Di

|RL| |RL|

|RR|

|RR|

lL uL

lR uR

圖 4-7 藉由指定延遲數值,Di,使區間,RL,將區間,RR,包含在其中

藉由在差值,uR

-u

L,到差值,lR

-l

L,的範圍中找到所有符合的延遲數值,Di,透 過指定最小的延遲數值,Dmin,使 ADB 指定的延遲數值最小化,且平移後的區間,

R

L,之延遲時間的上限,(uL+Di),不超過時脈樹的最大延遲時間,LATmax,換言之 ) max

(uLDiLAT 。但是若{Di | uR-uL

D

i

l

R

-l

L , (uL+Di)

LAT

max , 1

ip}為空集合

時,代表在 ADB 可調的延遲數值範圍中找不到適當的延遲數值,使 RL完全地含括整 個區間,RR。若處於此情況,則有兩種可能的情形,如圖 4-8(a)所示,RL 的上限在

R

R上限左邊的位置,及如圖 4-8(b)所示,RL的下限在 RR下限右邊的位置。比較這兩 張圖,必須指定一最小的延遲數值,使圖中斜線陰影處長度最短,代表合併的區間之

34

延遲差值越小。透過下面兩個定義,決定 DL,max及 DR,min之值:

DL,max=Max{ Di |

u

R

(

u

L

D

i)

0 , 1

ip},及

DR,min=Min{ Di | (lLDi)lR

0 , (uL+Di)

LAT

max , 1

ip}。

如圖 4-8(a)、(b)所示,延遲數值,DL,max,代表使區間差值,

u

R

(

u

L

D

i),最小 化之最大延遲數值,而延遲數值,DR,min,代表使區間差值,(lLDi)lR,最小化之最 小延遲數值。此外必須限制平移後的區間,RL,其區間之延遲時間的上限不超過時脈 樹的最大延遲時間,LATmax,換言之(uL+Di)

LAT

max

+Di

uL+Di

|RL|

|RR| uR

+Di

lL+Di

|RL|

|RR|

lR

(a) RL在 RR偏左位置 (b) RL在 RR偏右位置 圖 4-8 情況 2 時 RL及 RR可能合併情形

經過指定延遲數值,DL,max和 DR,min,的步驟後,再判斷區間差值,uR-(uL+DL,max),

和區間差值,(lL+DR,min)-lR,何者最小,指定最小的區間代表合併的區間之延遲差 值最小,透過下面定義,決定指定 DL,max

或 D

R,min之值:

指定延遲數值,DL,max,當

u

R

 ( u

L

D

L,max

)  ( l

L

D

R,min

)  l

R條件滿足時;

指定延遲數值,DR,min,當

u

R

 ( u

L

D

L,max

)  ( l

L

D

R,min

)  l

R條件滿足時。

若區間差值,uR-(uL+DL,max),小於或等於區間差值,(lL+DR,min)-lR,時,則 指定延遲數值,DL,max,若區間差值,uR-(uL+DL,max),大於區間差值,(lL+DR,min)

-lR,時,則指定延遲數值,DR,min

透過情況 1 和情況 2,判斷指定何種延遲數值於 ADBj上,以改善 Bi為根的子樹 之延遲差值。此外再將延遲時間區間,[lj , uj]和[lk

, u

k] ,從區間列表中移除,並新增

35

合併的延遲時間區間,[Min{lj

+D

i, lk} , Max{uj

+D

i, uk}],至區間列表中,其中延遲數 值,Di,為 ADBj指定的延遲數值,且 Di為 ADB 可調的延遲數值範圍中的延遲數值。

接下來再將合併的延遲時間區間,[Min{lj

+D

i, lk} , Max{uj

+D

i, uk}],與區間列表中下 個延遲時間區間作區間合併運算。經過最多(q-1)次的區間合併運算後,最佳化的合併 的延遲時間區間為[lopt , uopt]。如圖 4-9(a)所示,透過前面情況 1 和 2 的判斷,計算出 各合併的區間上指定的延遲數值,d1, d2 ,.., dq-1,而所有的延遲數值,d1, d2 ,.., dq-1,皆 是 ADB 可調的延遲數值範圍中的不連續的延遲數值。然而這些延遲數值是指定於各 合併區間上,而不是指定於各緩衝器,B1 ,.., Bq-1,上,因此必須再對各緩衝器作延遲 數值的分佈運算(Delay distribution)。如圖 4-9(b)所示,藉由將各合併區間指定的延遲 數值分佈至相對的緩衝器上,計算出緩衝器,B1 ,.., Bq-2,指定的延遲數值,

α

1

,.., α

q-2由於這些組合的數值(combined value),α1

,.., α

q-2,為不連續的延遲數值所累加而成,

可能不符合 ADB 可調的延遲數值範圍中的延遲數值,因此必須對這些延遲數值作進 一步更新。接下來,再將這些緩衝器上指定的組合延遲數值,α1 ,.., αq-2,作延遲數值 的更新運算(Delay refinement)。

[l

x , ux

]

B1 B2

[l

y , uy

]

B3

[l

opt , uopt

]

Bq

+d1

+d2

+d3

+dq-1

[l

x , ux

]

B1 B2

[l

y , uy

]

B3

[l

opt , uopt

]

Bq q-2 = dq-2 + dq-1

1 = d1+ …+dq-1

2 = d2+ …+dq-1

3 = d3+ …+dq-1

Bq-2

(a)各合併區間上的指定延遲數值 (b)各緩衝器上的指定延遲數值之分佈 圖 4-9 區間合併運算

在延遲數值的更新運算過程中,給定 Bi 為根的子樹,經過重複地區間合併運算 後,最佳化的合併的延遲時間區間為[lopt , uopt],此區間之延遲差值為 uopt-lopt。此外

36

在 Bi為根的子樹中的各分支緩衝器,B1 ,.., Bq-2,上,其指定的延遲數值為

α

1

,.., α

q-2。 由於延遲數值,α1

,.., α

q-2,為組合的延遲數值,因此必須將其更新為不連續的延遲數 值。給定分支緩衝器,Bj (1 j q-2),其指定的延遲數值為

α

j,延遲數值,αj,介於兩個 不連續的延遲數值,Dj,i和 Dj,i+1(1 i p),之間,即 Dj,i

α

j

D

j,i+1,且延遲數值,Dj,i

和 Dj,i+1,為 ADB 可調的延遲數值範圍中的不連續的延遲數值。假設指定延遲數值,

D

j,i,於緩衝器,Bj,上後,所產生的延遲差值之變異為

ΔS

j,i,而指定延遲數值,Dj,i+1於 Bj後,所產生的延遲差值之變異為

ΔS

j,i+1

由於在指定延遲數值,Dj,i和 Dj,i+1,的過程中,必須盡量不改變延遲差值,uopt

-lopt,的大小,因此透過判斷差異,ΔSj,i,和差異,ΔSj,i+1,不同大小的情況,藉由下 面的設定方式,決定指定延遲數值,Dj,i或 Dj,i+1:若

ΔS

j,i =0 則指定延遲數值,Dj,i; 若

ΔS

j,i ≠0 且 ΔSj,i =0 則指定延遲數值,Dj,i+1

另一方面,若是指定延遲數值,Dj,i或 Dj,i+1,的過程中,延遲差值,uopt-lopt,的 大小改變,透過判斷差異,ΔSj,i,和差異,ΔSj,i+1,不同大小的情況,藉由下面的設定 方式,決定指定延遲數值,Dj,i或 Dj,i+1:若

ΔS

j,i

ΔS

j,i+1時則指定延遲數值,Dj,i,若

ΔS

j,i

>ΔSj,i+1且 uopt+ΔSj,i+1

LAT

max 時則指定延遲數值,Dj,i+1

經過延遲數值的更新運算後,藉由將一般緩衝器替換成 ADB 並指定適當的延遲 數值於 ADB 上,Bi為根的子樹中所有的分支緩衝器之延遲時間區間將被合併為一新 的延遲時間區間。此外虛擬緩衝器,B0,無法被替換成 ADB,所以無法加上延遲數 值。

給定緩衝器時脈樹,TB,其中有 m 個一般緩衝器及 n 個正反器,根據 TB的資訊 定義緩衝器連結圖(buffer-connection graph),GB(VB , EB),其建構方法如下所述:在

V

B中各端點(vertex),vi,代表在時脈樹中的緩衝器,而在 EB中的各個邊(edge),ei, 代表時脈樹中介於兩個連接的緩衝器之間的連接關係(connection relation)。為了於時 脈樹上合理地設定 ADB,首先在緩衝器連接圖上執行拓樸排序(topological sorting),

可得排列時脈樹所有緩衝器的列表。透過由下而上的流程設定 ADB,藉由合併各緩

37

衝器的延遲時間區間,以完成各緩衝器延遲差值之最小化,最後完成各緩衝器的延遲 時間區間之建構。時脈樹中部分的一般緩衝器被替換成 ADB,且指定 ADB 適當的延 遲數值,並得到最小化的時脈差異。藉由下列的 ADB 設定(ADB_Assignment)的演算 法來完成 ADB 的設定:

以下舉例說明 ADB 設定演算法的流程,以模式 1 而言,如圖 4-10 所示,一開始 將所有緩衝器作拓樸排序,得到已排列的列表為 B1, B2, B3, B5, B7, B4, B8, B6, B9, B10根據正反器,FF1、FF2、FF5 ,.., FF12,的延遲時間,可直覺地得到 B4、B8、B6、B9

B

10的延遲時間區間分別為[3 , 6]、[8 , 11]、[10 , 14]、[6 , 7]和[8 , 9]。此外 B5和 B7延遲時間區間可根據 FF3和 FF4的延遲時間,及 B8、B9和 B10的延遲時間區間,可得 延遲時間區間為[6 , 11]和[6 , 9]。經過設定 ADB 於 B5及 B7為根的子樹的步驟後,B9

被替換成 ADB4,並指定延遲數值,1.5,於 ADB4上,得到更新後 B5和 B7的延遲時 間區間為[6 , 11]和[7.5 , 9]。接下來,B2和 B3的延遲時間區間可根據 B4、B5、B6、B7

ADB 設定演算法

輸入:緩衝器時脈樹,TB,其中共有 m 個緩衝器和 n 個正反器,及各正反器的初 始遲時間;

{ 根據 TB建構緩衝器連接圖,GB;

將 TB中所有緩衝器以拓樸排序的方式儲存在 GB中;

for (以由下而上的方式處理所有的緩衝器) { 選擇一個已排列的緩衝器子樹;

1. 將分支緩衝器的延遲時間區間依最小延遲時間以遞增的方式排列到 區間列表中;

2. 將區間列表中所有延遲時間區間作區間合併運算;

3. 將組合的延遲數值分佈至各分支緩衝器中;

4. 將分支緩衝器的指定延遲數值更新成 ADB 可調的延遲數值範圍中不 連續的延遲數值;

}

輸出 ADB 設定後的緩衝器時脈樹,TADB,並最小化時脈差異;

}

38

的延遲時間區間,得到延遲時間區間為[3 , 11]和[7.5 , 14]。經過設定 ADB 於 B2及 B3

為根的子樹的步驟後,B4和 B7分別被替換成 ADB2及 ADB3,並指定延遲數值,3.5 和 2.5,於 ADB2及 ADB3上,得到更新後 B2和 B3的延遲時間區間分別為[6 , 11]和[10 , 14]。最後 B1的延遲時間區間可根據 B2及 B3的延遲時間區間,得到延遲時間區間為 [6 , 14]。經過設定 ADB 於 B1為根的子樹的步驟後,B2被替換成 ADB1,並指定延遲 數值,2.5,於 ADB1上,得到更新後 B1的延遲時間區間為[8.5 , 14]。由於 B1為根的 子樹即為整體的時脈樹,因此 B1的延遲差值即為時脈樹的時脈差異,最後可得模式 1 下的時脈差異為 5.5。

同樣地再以 ADB 設定演算法對模式 2 作運算,如圖 4-11 所示,首先 B4、B8

B

6、B9、B10的延遲時間區間分別為[7 , 9]、[6 , 10]、[10 , 15]、[6 , 9]和[4 , 6],而 B5 和 B7的延遲時間區間分別為[6 , 10]和[4 , 9]。經過設定 ADB 於 B5及 B7為根的子樹的 步驟後,B10被替換成 ADB3,並指定延遲數值,2.5,於 ADB3上,得到更新後 B5

B

7的延遲時間區間為[6 , 10]和[6 , 9]。接下來,B2和 B3的延遲時間區間為[6 , 10]和[6 , 15],經過設定 ADB 於 B2及 B3為根的子樹的步驟後,B7被替換成 ADB2,並指定延 遲數值,3.5,於 ADB2上,得到更新後 B2和 B3的延遲時間區間分別為[6 , 11]和[9.5 , 15]。最後 B1的延遲時間區間為[6 , 15],經過設定 ADB 於 B1為根的子樹的步驟後,

B

2被替換成 ADB1,並指定延遲數值,3.5,於 ADB1上,得到更新後 B1的延遲時間區 間為[9.5 , 15]。最後可得模式 2 下的時脈差異為 5.5。

39

FF5 FF6 FF4

FF3 FF2

FF1 FF7 FF8 FF9 FF10 FF11 FF12

B1

B2

B3

B4 B5 B6 B7

B8 B9 B10

最後延遲時間 9 12 8.5 10.5 10.5 13.5 10 14 10 11 10.5 11.5 ADB1=+2.5

ADB2=+3.5

ADB3=+2.5

ADB4=+1.5

[8.5 , 14]

功率模式 1

初始延遲時間 3 6 6 8 8 11 10 14 6 7 8 9 ADB 可調的延遲數值範圍:

延遲 = +1.5 延遲 = +2.5 延遲 = +3.5 延遲= 0

圖 4-10 模式 1 下 ADB 的設定及各正反器的延遲時間

FF5 FF6 FF4

FF3 FF2

FF1 FF7 FF8 FF9 FF10 FF11 FF12

B1

B2

B3

B4 B5 B6 B7

B8 B9 B10

最後延遲時間 10.5 12.5 11.5 12.5 9.5 13.5 10 15 9.5 12.5 10 12 ADB1=+3.5

ADB2=+3.5

ADB3=+2.5 [9.5 , 15]

初始延遲時間 7 9 8 9 6 10 10 15 6 9 4 6 ADB 可調的延遲數值範圍:

延遲 = +1.5 延遲 = +2.5 延遲 = +3.5 延遲= 0

功率模式 2

圖 4-11 模式 2 下 ADB 的設定及各正反器的延遲時間

40

在文檔中 中 華 大 學 (頁 38-49)

相關文件