• 沒有找到結果。

可平行化任務衍生子任務與處理器計算能力共享

多核心系統上具多個可平行化片段任務之 排程機制

3.2 可平行化任務衍生子任務與處理器計算能力共享

本節將描述如何處理可平行化任務以提高可排程率,當可平行化任務不做任何平行 化時,也就是以單一執行緒,所有片段平行度皆為1,所需之最短執行時間𝐸̂𝑖(1, … ,1)不 超過其週期𝑃𝑖,亦即𝐸̂𝑖(1, … ,1) ≤ 𝑃𝑖,代表該可平行化任務𝜏𝑖無須進行平行化,亦不會衍 生其子任務,可將此任務直接分配至某個處理器任務可執直接進行分配給處理器。

當𝐸̂𝑖(1, … ,1) ≤ 𝑃𝑖條件不滿足時,則代表須將此任務進行平行化,針對該任務的某 些可平行化片段提高其平行度,求得適當平行度組合〈1, 𝑥̅𝑖,2, … , 𝑥̅𝑖,𝐾𝑖−1, 1〉,藉此降低所需 之 最 短 執 行 時 間 的 長 度 , 滿 足 最 短 執 行 時 間 的 長 度 不 超 過 週 期 , 亦 即 𝐸̂𝑖(1, 𝑥𝑖,2, … , 𝑥𝑖,𝐾𝑖−1, 1) ≤ 𝑃𝑖

然而,漫無目的的提高平行度將有可能增加產生整體多餘的執行時間,反而降低可 排程率。本節中將會提出提高可平行化片段平行度時的考量方向,說明如何從眾多可能 的平行度組合中,挑選一組適當的平行度組合,衍生子任務之過程。

可平行化任務的每個片段之間存在著執行順序(Precedence Constraint)關係:一個片 段執行完成才可以開始進行下一個片段,如圖 2.1 所示。若某個片段因為優先權關係,

被其他任務影響,導致無法盡快執行,拖了很長時間才執行完成,則會影響到之後片段 的執行,嚴重可能導致無法如期在截限時間前完成。因此,為了避免上述狀況的發生,

且方便未來進行任務分配,我們將使得片段的執行順序限轉換成每個片段的時間限制 (Timing Constraint),也就是給予每個片段自己的可開始執行時間與絕對截限時間,而這 段時間區間稱之為可執行區間(Active Interval)=(可開始執行時間, 絕對截限時間],可執 行區間是為了限制片段的子任務執行必須在此時間內開始執行與執行完畢。當可平行化 任務的每個片段對應之子任務若都能在自己的可執行區間內完成執行,也就代表著該可 平行化任務能在截限時間前完成。

16 定理1. 一個可平行化任務𝜏𝑖最多可以衍生出𝐾𝑖+1

2 + (𝐾𝑖−1

2 × 𝑀)個子任務。

證明:可平行化任務𝜏𝑖的片段個數為𝐾𝑖,其中循序片段則有𝐾𝑖+1

2 個,其平行度固定 為1 只會衍生一個子任務,故所有循序片段最多可衍生𝐾𝑖+1

2 個子任務;而可平行化片段 有𝐾𝑖−1

2 個,其平行度最高可為𝑀,故所有可平行化片段最多可衍生𝐾𝑖−1

2 × 𝑀個子任務。因 此可平行化任務𝜏𝑖最多可以衍生出𝐾𝑖+1

2 + (𝐾𝑖−1

2 × 𝑀)個子任務。□

接下來我們將說明如何設定可平行化任務𝜏𝑖的片段之子任務的可執行區間,之後子 任務能根據新的執行時間限制執行而忽略片段間既有的執行順序限制。如圖 3.1 所示,

我們將會分配給任務𝜏𝑖的每個片段之子任務各自的相對截限時間,片段𝑠𝑖,𝑘的子任務所 分配到的相對截限時間以𝑑𝑖,𝑘表示,並且屬於同一個片段之所有子任務的相對截限時間 皆相同。每個片段的子任務之相對截限時間是從任務𝜏𝑖之週期𝑃𝑖所分割出來的,為了讓 子 任 務 有 適 當 的 相 對 截 限 時 間 , 任 務 之 週 期 應 完 全 分 配 給 所 有 子 任 務 , 所 以

𝐾𝑘=1𝑖 𝑑𝑖,𝑘 =𝑃𝑖。子任務獲得相對截限時間後,可以接著推算出可開始執行的時間及絕對 截限時間,片段𝑠𝑖,𝑘的子任務之絕對截限時間即為片段𝑠𝑖,𝑘+1的子任務之開始執行時間,

而第一片段𝑠𝑖,1的子任務開始執行時間即為任務𝜏𝑖的開始執行時間。

定理 2. 可平行化任務𝜏𝑖的每個片段之子任務的相對截限時間總和在等於任務週期𝑃𝑖, 也就是∑𝐾𝑘=1𝑖 𝑑𝑖,𝑘 =𝑃𝑖時,子任務會有較小的使用密度。

證明:假設每個片段之子任務的相對截限時間總和大於週期𝑃𝑖,∑𝐾𝑘=1𝑖 𝑑𝑖,𝑘 >𝑃𝑖,則 可能發生時間已抵達任務𝜏𝑖的截限時間,但其片段之子任務仍在執行當中,造成𝜏𝑖無法 在截限時間前完成;若是∑𝐾𝑘=1𝑖 𝑑𝑖,𝑘 <𝑃𝑖,則代表每個片段之子任務的相對截限時間𝑑𝑖,𝑘皆 會降低,將會造成子任務的使用密度上升。□

17

我們以任務𝜏𝑖的第 k 個片段所衍生的第 x 個子任務子𝜏𝑖,𝑘,𝑥說明,假設任務𝜏𝑖的抵達 時間為t,則子任務𝜏𝑖,𝑘,𝑥的可開始執行時間為𝑡 + ∑𝑘−1𝑙=1 𝑑𝑖,𝑙,而其相對截限時間為𝑑𝑖,𝑘,執 行時間區間則為(𝑡 + ∑𝑘−1𝑙=1 𝑑𝑖,𝑙, 𝑡 + ∑𝑘𝑙=1𝑑𝑖,𝑙],當子任務𝜏𝑖,𝑘,𝑥可開始執行後,必須在此時 間區間內執行完𝑒𝑖,𝑘,𝑥𝑖,𝑘執行時間。我們以𝜎𝑖,𝑘將代表子任務𝜏𝑖,𝑘,𝑥的使用密度(Density),

𝜎𝑖,𝑘 =𝑒𝑖,𝑘,𝑥𝑖,𝑘

𝑑𝑖,𝑘 ,由於一個片段所衍生之子任務執行時間、相對截限時間皆相同,故屬於同 個片段的子任務之密度也會相同。系統必須在一個處理器上保留與子任務之使用密度值 相同的處理器能力,才能確保該子任務能符合即時要求。

圖 3.1:將任務片段之子任務的執行順序限制轉換成執行時間限制示意圖

當 可 平 行 化 任 務 𝜏𝑖 在 平 行 度 組 合 〈1, 𝑥𝑖,2, … , 𝑥𝑖,𝐾𝑖−1, 1〉 之 下 , 若 𝐸̂𝑖(1, 𝑥𝑖,2, … , 𝑥𝑖,𝐾𝑖−1, 1) ≤ 𝑃𝑖條件被滿足後,接下來我們將討論如何設定可平行化任務之 片段的子任務相對截限時間。設定可平行化任務之片段的子任務相對截限時間方面,有 兩種分配方法可以使用,分別是Equal Slack(EQS)[14]與 Equal Flexibility(EQF)[14],其 方法說明如下:

18

1. Equal Slack(EQS) : 將 可 平 行 化 任 務 𝜏𝑖的 週 期 𝑃𝑖 減 去 目 前 的 執 行 時 間 𝐸̂𝑖(1, 𝑥𝑖,2, … , 𝑥𝑖,𝐾𝑖−1, 1),所剩餘的時間區間𝑃𝑖− 𝐸̂𝑖(1, 𝑥𝑖,2, … , 𝑥𝑖,𝐾𝑖−1, 1)平均分配 給每個片段之子任務,所得的平均值𝑃𝑖−𝐸̂𝑖(1,𝑥𝑖,2,…,𝑥𝑖,𝐾𝑖−1,1)

𝐾𝑖 相加於子任務的執行時 間後,即為子任務的相對截限時間,因此如果片段𝑠𝑖,𝑘之子任務的執行時間為 𝑒𝑖,𝑘,𝑥𝑖,𝑘 , 則 片 段 𝑠𝑖,𝑘 之 子 任 務 的 相 對 截 限 時 間 為 𝑑𝑖,𝑘 = 𝑒𝑖,𝑘,𝑥𝑖,𝑘+

𝑃𝑖−𝐸̂𝑖(1,𝑥𝑖,2,…,𝑥𝑖,𝐾𝑖−1,1)

𝐾𝑖

2. Equal Flexibility(EQF) :將可平行 化任務 𝜏𝑖的 週 期 𝑃𝑖減 去 目 前 的 執 行 時 間 𝐸̂𝑖(1, 𝑥𝑖,2, … , 𝑥𝑖,𝐾𝑖−1, 1),所剩餘的時間區間𝑃𝑖− 𝐸̂𝑖(1, 𝑥𝑖,2, … , 𝑥𝑖,𝐾𝑖−1, 1)依照各個 片段之執行時間於𝐸̂𝑖(1, 𝑥𝑖,2, … , 𝑥𝑖,𝐾𝑖−1, 1)中所佔的比例分配給每個片段,其比 例所得出的值相加於子任務的執行時間後,即為子任務的相對截限時間,因此 如果片段𝑠𝑖,𝑘之子任務的執行時間為𝑒𝑖,𝑘,𝑥𝑖,𝑘,則相對截限時間為𝑑𝑖,𝑘 = 𝑒𝑖,𝑘,𝑥𝑖,𝑘+ (𝑃𝑖 − 𝐸̂𝑖(1, 𝑥𝑖,2, … , 𝑥𝑖,𝐾𝑖−1, 1)) × 𝑒𝑖,𝑘,𝑥𝑖,𝑘

𝐸̂𝑖(1,𝑥𝑖,2,…,𝑥𝑖,𝐾𝑖−1,1)= 𝑃𝑖× 𝑒𝑖,𝑘,𝑥𝑖,𝑘

𝐸̂𝑖(1,𝑥𝑖,2,…,𝑥𝑖,𝐾𝑖−1,1)。 至於EQF 與 EQS 哪一個會較適合,我們將在以下做討論。一個可平行化任務的不 同片段之子任務的執行時間不一定相同。當使用 EQS 方法時,是將週期與任務所需之 最短執行時間的差值平均分配給每個片段,其子任務所分配到的值加上自己的執行時間 即為該子任務的相對截限時間。以 EQS 設定子任務之截限時間後,所計算出得子任務 之使用密度有以下特性。

定理3. 可平行化任務𝜏𝑖,當使用EQS 方法設定子任務之相對截限時間時,子任務使用 密度之值會隨著子任務執行時間越大,則使用密度將越大。

證明:假設𝜏𝑖有 n 個片段,在某個平行度組合時,所需之最短執行時間為𝐸,假設 某個子任務所需的執行時間為𝑒。在使用 EQS 方法之下,將週期與最短執行時間差值 𝑆𝐿𝐾 = 𝑃𝑖 − 𝐸平均分配給每個片段之值以𝑆𝐸𝑄𝑆 = 𝑆𝐿𝐾

𝑛 表示,子任務的使用密度為 𝑒

𝑆𝐸𝑄𝑆+𝑒, 此函式為開口向下,隨著𝑒值變大函式值逐漸增加且逼近 1,換言之,子任務的執行時間

19

20

片段的執行時間,而可平行化任務的最短執行時間𝐸也會減少,因此週期與最短執行時 間之差值𝑆𝐿𝐾將會增加。在 EQS 的方面,當𝑆𝐿𝐾增加時,分配給每個片段之值𝑆𝐸𝑄𝑆 = 𝑆𝐿𝐾

𝑛

也會增加,而𝑆𝐸𝑄𝑆相加於子任務的執行時間即為相對截限時間,因此相對截限時間將增 加,並且可以知道平行度提高的片段之子任務執行時間減少,而其他片段之子任務的執 行時間不變,因此所有片段原有的每個子任務之使用密度將降低;在 EQF 的方面,可 以從 EQF 的特性,每個子任務的使用密度等於任務所需之最短執行時間除以週期,當 提高某個可平行化片段的平行度將使所需之最短執行時間減少,使用密度之值也會減少,

因此所有片段中原有的每一個子任務之使用密度也將降低。□

當所有可平行化任務皆已完成平行化,並衍生其子任務後,任務集合的處理也隨即 完成,接下來將進行(子)任務排程。而在排程的過程中,所有的循序任務以及由可平行 化任務衍生而成的子任務皆視為相互獨立,每個(子)任務只需要在自己的截限時間前完 成即可。當排程時,在分配給處理器後,計算處理器上負載時,可以將每個(子)任務的 使用密度加總計算。然而,對於屬於同一個任務之不同片段的子任務之間,其實存在著 一個特殊的關係,藉由這層關係,將可提升系統的可排程率,下面將做說明。

實際上,我們給予了每個子任務自己的執行時間區間後,一個片段之子任務的絕對 截限時間等於下一個片段之子任務的可開始執行時間,如圖3.1 所示,可以從此關係得 知每個片段之子任務在執行時並不會占用到其他片段之子任務的時間。因此,我們在排 程任務時,其實當同一個可平行化任務之不同片段的子任務被分配到同一處理器時,這 些子任務可以共享處理器的計算能力,我們將此處理器上的該任務之子任務集合稱為共 享集合。而一個子任務只能屬於一個共享集合,不可能同時存在於兩個集合中。

定理 6. 由於不同片段的子任務使用處理器的時間並不重疊,因此保留共享集合中子任 務所需的最大計算能力(使用密度)給予共享,將能保證集合中的所有子任務可以滿足自 己的即時需求,也就是在截限時間之前完成。

21

證明:只要給予的計算能力足夠共享集合中最大使用密度的子任務滿足即時需求,

則該計算能力對於其他使用密度需求較低子任務而言已是足夠的,因此同一共享集合中 所有子任務都可以滿足即時需求。□

定理 7. 一個處理器可能被分配到來自不同可平行化任務或是同一個可平行化任務之多 個共享集合。

證明:只要一個處理器中的所有循序任務與各個共享集合中之最大使用密度總和不 超過1,則代表該處理器可負荷這些任務與共享集合。□

定理8. 採用共享機制分配一個可平行化任務之子任務時,其片段中最大的平行度之值,

即為共享集合的個數。

證明:由於不同片段之子任務才能共享處理器能力,若屬於同一片段所衍生的子任

證明:由於不同片段之子任務才能共享處理器能力,若屬於同一片段所衍生的子任

相關文件