• 沒有找到結果。

多核心系統上具多個平行選擇之即時任務排程演算法

N/A
N/A
Protected

Academic year: 2021

Share "多核心系統上具多個平行選擇之即時任務排程演算法"

Copied!
46
0
0

加載中.... (立即查看全文)

全文

(1)

國立高雄大學資訊工程學系研究所

碩士論文

多核心系統上具多個平行選擇之即時任務排程演算法

Schedule Algorithm for Real-Time Tasks with Multiple

Parallelization Options on Multicore Systems

研究生:林洪宇 撰

指導教授:郭錦福

(2)
(3)

多核心系統上具多個平行選擇之即時任務排程演算法

指導教授:郭錦福 博士 國立高雄大學資訊工程學系 學生:林洪宇 國立高雄大學資訊工程學系

摘要

依據摩爾定律以及節能的考量,在一個晶片中放置多個處理器已是一種趨勢。人們 在設計系統時,因為成本因素,捨棄使用裡面只有一個處理器,但是速度快卻高耗電性 的晶片,改用具有多處理器但每個處理器卻是設計較簡單且速度較低的晶片。單一處理 器的晶片雖然可以很快的把工作做完,但是成本與電耗都較高,在使用多處理器晶片 時,作業系統對於原先的任務需要做調整,才能以多處理器完成原任務。本論文中所要 探討的是多處理器系統中的可平行化任務處理機制,任務為可平行化與不可平行化片段 所組成,我們首先透過將週期分配給可平行化任務的不同片段的子任務,讓執行順序限 制轉換成執行區間限制,達到每個子任務間的獨立性。再藉由不同片段的子任務的執行 區間完全不重疊,在將子任務分配至處理器時,盡量能將不同片段的子任務分配給同一 處理器,減少處理器保留過多能力給多個同一任務之不同片段的子任務,因為在執行階 段當某個子任務執行時,同一任務之其他子任務是不會執行的,因此一個時間點只會使 用保留給同一個任務之子任務的部份能力,因此我們希望能在分配子任務時,將同一個 任務之不同片段的子任務的能力合併計算。最後,我們建置模擬程式,驗證我們所提的 子任務使用密度合併機制,並且結合不同的截限時間分配機制,以及(子)任務分配機 制,由於 Equal Flexibility (EQF) 讓同一個任務的每個子任務之使用密度一樣,合併時, 額外增加的使用密度最少,而 Best Fit (BF) 則是在分配(子)任務時,先將(子)任務分配 至可用之使用能力最低的處理器,因此 EQF 結合 Best Fit 有最佳的可排程率。

(4)

Schedule Algorithm for Real-Time Tasks with Multiple

Parallelization Options on Multicore Systems

Advisor: Dr. Chin-Fu Kuo

Department of Computer Science and Information Engineering National University of Kaohsiung

Student: Hung-Yu Lin

Department of Computer Science and Information Engineering National University of Kaohsiung

ABSTRACT

According to Moore's Law and energy-saving considerations, placing multiple processors in a single chip is a trend. Because of the cost factor, people almost adopt multi-processor platforms to design the system, instead of the chips only having one high-speed and high-power consumption processor . A single complex processor chip can quickly finish the work, but the cost and energy consumption are higher. When a multi-processor platform is used, the operating system must adjust the original task execution to fit the execution on the multi-processor platform. In this paper, we will propose a mechanism to deal with parallel tasks on multiprocessor systems. A parallel task is composed of parallel and sequential segments. For each parallel task, we allocate its period to the subtasks of its segments. Then, the execution order of the subtasks will be transformed into the timing constraints. If each subtask can meet its timing constraint, the original parallel task will achieve its real-time requirements. Besides, due to that the execution interval of subtasks for different segments of a parallel task do not have any overlap. If the subtasks for different segments can be assigned to the same processor, the capacity of the processor can be used for more tasks. When a subtask is executed, the other subtask of the same task is not executed. We want to combine the densities of the subtasks of the different subtasks of the same parallel task when allocating subtasks. Finally, we build the simulation program to verify our proposed mechanism. We combine the different deadline allocation mechanisms, such as Equal

(5)

mechanisms, such as Best Fit Decreasing (BFD), First Fit Decreasing (FFD), and Worst Fit Decreasing (WFD). Since EQF makes all the subtasks of a parallel task have the same densities, the additional density is the smallest, i.e., 0, when the subtasks are combined. BFD assigning a (sub)task to the processor with the lowest available capacity. Therefore, The Best-Fit Decreasing with the EQF has the highest schedulability ratio.

Keywords: Periodic Parallel Tasks, Deadline Assignment, Density Merging, Allocation Mechanisms

(6)

致謝

在國立高雄大學,念研究所的這兩年內,首先要感謝的人是我的指導教授郭錦福老 師,在我念研究所的求學路程上,對我細心的教導,且在不清楚的觀念上,耐心地講解。 一開始,我先學習了有關即時系統排程的課程,在過程中,我了解到電腦中,有很多任 務都是需要排程的機制去處理,也了解了許多相關的背景知識,而且老師也常說,真的 要弄懂,就是把程式寫出來及數學公式算出來。這裡也感謝老師在論文的撰寫上及寫程 式的過程中遇到的問題,皆提供了很大的協助,在過程中,我對程式的結構及模組化有 了更深刻的認識,以及程式旁的注釋的重要性,還有對於論文的撰寫,我也學到,在面 對一件事情,要如何發現問題,並在分析問題的過程中,找出解決問題的辦法。在論文 的架構方面,包括倒金字塔、Latex 排版及各章節的重點,老師也提出了很多細節重點, 也使我了解撰寫一篇論文是不能被別人提出的問題輕易擊倒的。最後,感謝我的家人, 在研究所的兩年中,對我的支持、體諒及包容,並且提供許多意見、人生觀和順利完成 學業,因此,這兩年的研究生涯給了我許多的體驗。

(7)

目錄

目錄 iv 圖目錄 v 1 導論 1 1.1 前言 . . . 1 1.2 全文架構 . . . 4 2 系統模式與問題定義 5 3 多處理器上具可平行化任務之任務集合分配機制 8 3.1 任務分配機制 . . . 8

3.2 執行順序限制 (execution order) 轉成時間約束限制 (timing constraint) 10

3.3 子任務使用密度合併 . . . 14 3.4 例子 . . . 20 4 效能評估 23 4.1 實驗環境設置 . . . 23 4.2 實驗結果 . . . 24 5 結論 35 Bibliography 37

(8)

圖目錄

2.1 可平行化任務三個片段間的執行關係 . . . 5 2.2 可平行化任務第二個片段在不同執行緒個數下所需之執行時間示意圖 . . 6 3.1 週期分割關係圖 . . . 11 4.1 當 Np = 1、α = 0.6 之任務集合可排程率 . . . 25 4.2 當 Np = 1、α = 0.5 之任務集合可排程率 . . . 26 4.3 當 Np = 2、α = 0.5 之任務集合可排程率 . . . 27 4.4 當 Np = 2、α = 0.6 之任務集合可排程率 . . . 27 4.5 當 Np = 1、γ = 0.6 之任務集合可排程率 . . . 28 4.6 當 Np = 2、γ = 0.6 之任務集合可排程率 . . . 29 4.7 當 Np = 1、γ = 0.7 之任務集合可排程率 . . . 29 4.8 當 Np = 2、γ = 0.7 之任務集合可排程率 . . . 30 4.9 當 γ = 0.7、α = 0.5 之任務集合可排程率 . . . . 31 4.10 當 γ = 0.7、α = 0.6 之任務集合可排程率 . . . . 32 4.11 當 γ = 0.8、α = 0.5 之任務集合可排程率 . . . . 32 4.12 當 γ = 0.8、α = 0.6 之任務集合可排程率 . . . . 33

(9)

第 一 章

導論

1.1

前言

電腦科技的進步非常的快,十幾年前的個人電腦或是伺服器都只使用單核心處理器 晶片,然而根據摩爾定律所引來的發展,在 2014 年之後,多核心處理器晶片已慢慢成 為主流。目前各種系統平台幾乎都是使用多核心平台,原因是製作一個高速的單核心 處理器晶片的成本與耗電性高過多核心處理器晶片。更由於單核心晶片遭遇到開發瓶 頸,傳統的晶片中只有一個處理器,無法滿足大量運算的需求,因此需要提高低效能 處理器的數量,集合多個低效能處理器的整合運算能力來因應系統所需。 但是選用效能較差的處理器,會因為處理器的執行速度較慢,而導致工作無法在截 限時間之前做完執行,雖然節省了電耗和購置成本,但是執行時間卻延長甚至可能無 法達到即時需求。因此如果能藉由可平行化任務的平行執行,讓可平行化任務的可平 行片段以同執行緒平行執行,將有助於任務減少所需之執行時間,以至於能在截限時 間之前完成執行。 系統為了能夠使用多個處理器執行可平行化任務,需要對任務執行作調整,因 為我們所提之機制微系統執行前所使用的離線機制,且會將可平行化任務的子任務 之執行順序轉換成時間限制,並將 (子) 任務分配至處理器。因此,相關文獻可分成 三類:任務平行化、子任務相對截限時間設定及如何分配 (子) 任務至處理器。首

(10)

先,為能夠在多核心系統上減少任務的所需的執行時間,任務的執行必須要平行 化,可以利用 OpenMP [2] 或是 OpenCL [1] 的函式庫達成,可以設定任務的可平行 化片段可由幾個執行緒來執行。在 [10] 中,作者將多核心中的任務模型分成了以 下種類:Gang Constrained、Order Constrained 和 Unconstrained,Order Constrained 任 務 模 型 可 再 分 為 Directed Acyclic Graph (DAG)、Sequential Synchronous Parallel 與 Fork-Join。此外,也將排程機制做分類,分成 Transformation based Scheduling 及 Non-Transformation based Scheduling,Transformation based Scheduling 可以再細分為 Task Decomposition 與 Task Partitioning, 而 Non-Transformation based Scheduling 則可 以再分為 Direct Scheduling 與 Hierarchical Scheduling。[5] 探討分散式系統的 fork-join 模式,任務在執行時,分成數個片段 (Segment),奇數為不可平行片段 (Sequential Segment),而偶數則為可平行化片段 (P/D Seg-ment),相鄰的 Segment 之間將會需 要利用 Bus 傳送訊息,且具有執行順序的限制。每個 P/D Segment 可以以不同數量 的執行緒在處理器上執行,因為是分散式系統,所以處理器之間需要有溝通的橋樑 (BUS),處理器上的執行為可搶先,而使用 Bus 傳送資料過程則為不可搶先,為不可 搶先。作者提出任務在處理器上執行時使用可搶先固定優先權之截限單調 (Deadline Monotonic:DM) 排程機制,而訊息部分則用不可搶先固定優先權之截限單調排程機 制。[6] 中所探討的任務模式與本篇論文相似,但是並沒有考量到同一個平行化任務的 不同片段之子任務的執行區間不重疊,因此每個子任務被視為各自獨立,所以當兩個 同一個平行化任務的不同片段之子任務分配在同一個處理器時,就需要保留這兩個子 任務的使用密度和的處理器能力,因此減少了任務集合可排程的機會。而 [12] 所探討 的問題與本論文相似,但是它是應用在雲端運算的商業模式中,作者提出了兩個實用 模型,第一個為設定每個任務一個實用價值,如果任務被排程,則系統獲得一定的利 益,如果未被排程,則系統沒有獲得利益;另一個則是每個任務的利益價值非固定值, 透過作者所提出之排程機制可以讓系統有最大的實用價值。 關於子任務截限時間設定方面,任務在平行化後,會有很多個子任務,以不同方式 設定子任務的截線時間,將會有不同效果。[9] 則提出一種任務轉換機制,將多核心系 統下的平行任務,轉換成和原本不同的形式,讓 Master 執行緒在執行時,所需要的執 行時間與截限時間一樣長,而可平行片段之子任務則給予一個新的相對截限時間,並

(11)

依據新的截限時間之大小,將可平行片段之子任務由大至小排序,然後以 First Fit 分 配機制將子任務分配至處理器中。[13] 提出另一種任務分割之模式,原本不一樣執行 時間的執行緒,以衍生新的區塊之方式,試著將每個執行緒的執行時間轉成相同,之 後提出以 Global ED 排程演算法或是 Partitioned DM 排程演算法排程。

最後則是分配 (子) 任務至處理器,由於分配任務到多處器是個 NP-hard 問題 [3], 過去的文獻已提出許多種分配方式,如 First Fit、Best Fit 和 Worst Fit[4],Worst Fit (WF) 方法是將任務分配給處理器中具有最大足夠能力者;Best Fit (BF) 方法則是將 任務分配給處理器中具有最小足夠能力者;First Fit (FF) 方法是將任務分配給處理 器中編號最小之足夠能力者。此外,還有另一種變形機制,是事先將任務依據使用 率,由大至小排序後,再開始進行分配動作,如 First Fit Decreasing (FFD)、Best Fit Decreasing (BFD) 和 Worst-Fit Decreasing (WFD)。

本論文將討論多處理器系統的任務集合的處理機制,任務集合中包含可平行化任務 與不可行化任務,可平行化任務為可平行化與不可平行化片段所組成,本論文中所探 討的可平行化任務的前後為不可平行化片段,而中間有一段可平行化片段。為了能夠 將子任務獨立分配至個處理器,我們將子任務的執行順序限制轉換成執行區間限制 (相 對截限時間),將週期分配給可平行化任務的不同片段的子任務,達到每個子任務間的 獨立性。在給予設定個子任務相對截限時間後,同一個平行化任務的不同片段子任務 執行區間將完全不重疊,因此在將子任務分配至處理器時,我們試圖將不同片段的子 任務分配給同一處理器,減少處理器保留過多能力給多個同一任務之不同片段的子任 務。由於同一個可平行化任務之不同片段的子任務,若分配到同一處理器中時,由於 各有自己的可執行區間,且完全不重疊,因此,若保留子任務之使用密度總和給這些 子任務將造成處理器的使用效率偏低,因此在本論文中,我們提出將這些子任務的使 用密度做合併,子任務使用密度合併所帶來的好處,所以無論是使用哪種截限時間設 定方法或是 (子) 任務分配機制,都比不合併的對照組的可排程率高出許多。

(12)

1.2

全文架構

本論文將在後續的各章中進行以下安排:第二章將定義系統模型與問題,第三章說 明我們所提出的機制包含任務分配機制、截限時間分配機制及合併機制,這裡會舉一 個例子說明。第章節呈現與討論方法的效能,包括實驗環境設定及實驗結果分析,而 最後於第章節進行總結。

(13)

第 二 章

系統模式與問題定義

本研究中,我們將探討的系統模式為系統中具有 M 個同質性處理器,且執行一 個具有 N 個即時週期性任務的集合。我們假設處理器集合為 Π = {P r1,P r2,…, P rM};而任務集合為 T = {τ1,τ2,…,τN},任務集合 T 的每個任務各自獨立。 T 可以依據其是否可平行的特性,分為兩個任務子集合:不可平行化 (Sequential) 週期性任務子集合 Ts 及可平行化 (Parallel) 週期性任務子集合 Tp。每個不可平行化週 期性任務 τi ∈ Ts,由於資料相依性,程式無法平行化,只有一個執行片段 (segment), 只能在一個處理器上執行。不可平行化任務 τi 具有以下時間特徵:週期 Pi、截限時間 Di、及執行時間 Ei,因此任務的使用率為 ui = Ei/Pi,我們假設 Pi = Di。 ✐ ✐ ❉ P

=

✐ ✐ ❉ P

=

✶ ✁✱ s ✷ ✁✱ s ✸ ✂✄ ☎ ✶ ✁✱ s ✷ ✁✱ s ✆ ✁✱ s ✝✝✝ 圖 2.1: 可平行化任務三個片段間的執行關係 每個平行化任務 τi ∈ Tp 依據其執行特性,可以被分成三個片段 (segment),我們以

si,1、si,2 和 si,3 表示,三者之前具有前後執行關係,si,1 執行結束後,si,2 才能開始執

行;而 si,2 執行結束後,si,3 才能開始執行,也就是執行順序為 si,1−→si,2−→si,3,如

圖 2.1所示。si,1 與 si,3 由於資料相依性,為不可平行的片段;而 si,2 為可平行化片塊,

(14)

✶ ✷ ✳ ✳ ✳ ✞ ✟✱ ✐✱ ❡ ❥ ✠✡ ☛✠ ☞ ✌ ✠✡ ☛✠ ☞ ✌ ✍ ✍ ✍ ✍ ✍ ✍ ✳ ✳ ✳ ▼ ✍ ✍ ✍ ✎ ✎✏ ✑✏ ✒ ✎ ✎✏ ✑✏ ✒ ✓✔ ✕✓ ✖ ✗ ✓✔ ✕✓ ✖ ✗ ✘✙ ✚✘ ✛ ✜ 圖 2.2: 可平行化任務第二個片段在不同執行緒個數下所需之執行時間示意圖

(15)

以下時間特徵:週期 Pi、截限時間 Di、及執行時間向量 Ei,我們假設 Pi = Di。而 Ei 為三個片段在單一處理器執行時,所需之最大的執行時間向量,包含在三個片段 之執行時間 ei,1

ei,2 和 ei,3。ei,1 和 ei,3 為任務 τi 的之第一片段 si,1 與第三片段 si,3

和之最大執行時間,而 ⇀ei,2 為任務 τi 的第二片段 si,2 之最大執行時間向量,由於系

統中具有 M 個處理器,所以 si,2 有 M 個平行化執行選擇。如圖 2.2所示,若是執行

si,2 時,以 j 個執行緒執行 (即平行度為 j),代表將會有 j 個子任務同時執行,每個

子任務之最大執行時間為 ei,2,j。τi 中的 si,1 與 si,3 片段在系統中將會各別對應的一個

子任務 τi,1 與 τi,3;而 si,2 的平行度如果為 x,則將會有 x 個子任務,我們以 τi,2,j

表其中的一個子任務。如果任務 τi 的 si,2 之平行度為 1 時,(ei,1+ ei,2,1 + ei,3)≤ Pi

代表此任務無須作任務切割,只需以一個完整任務的型態分配到某一個處理器即 可。然而,如果以單一執行緒執行時,由於可平行化任務之第二區塊執行時間很

長,執行時間總和 (ei,1 + ei,2,1 + ei,3) ≥ Pi,以一個完整任務分配至處理器時,任務

之使用率 ui =

ei,1+ei,2,1+ei,3

Pi > 1,將使被分配到的處理器上的任務之總使用率超過 1,造成處理器上任務無法排程的狀況,任務將可能無法在截限時間之前完成。由

於第二片段可以平行化,因此 si,2 能以較高的平行度 x 執行,將能讓所需之時間

(ei,1+ ei,2,x+ ei,3) < Pi。但由於平行化將導致 si,2 所需之執行時間總和增加,也就是說 x× ei,2,x < (x + 1)× ei,2,x+1,因此,選擇一個適當的平行度對於系統而言是非常重要, 因為額外增加的執行時間將造成系統上的任務不可排程。 Definition 2.0.1. 一個系統中任務集合之可排程的任務分配方式必須符合以下條件:系 統中的每個處理器所分配到的任務之使用率 (utilization) 與子任務之使用密度 (density) 之總和不可超過 1。 在本論文中,我們針對以上所描述的處理器模式與任務模式,定義出以下問題:針 對同質性多處理器環境中的即時可平行與不可平行任務集合,我們提出一個系統性的 機制,利用可平行化任務的平行特性,適當設定第二片段之平行化執行選擇 (即執行緒 個數),讓所有任務可以分配到處理器上,並讓每個處理器上的任務總使用率 (/使用密 度 (density)) 不超過 1。如果能符合以上條件,即代表任務集合在系統中執行時,必定 符合其即時要求。

(16)

第 三 章

多處理器上具可平行化任務之任務集合分

配機制

在本節中,我們將會詳細說明所提出的機制,此機制是應用在任務集合尚未開始在 系統執行前,我們希望以此機制將任務分配給處理器,並且讓任務在執行階段時能夠 符合即時需求。整個運作機制可分為以下步驟,首先說明分配任務到處理器的整體概 念,再解釋分配過程中會使用到的細節,如:(1) 為何將可平行化任務片段間的執行順 序限制轉成時間限制。(2) 同一任務之子任務如果分配給同一處理器時,為何可以在使 用密度的處理上做合併,以及如何合併。

3.1

任務分配機制

我們所提出的排程機制為離線方式,在系統執行前,先將系統中的負載分配至處理 器中,在系統執行時,每個處理器執行自己所分配到的 (子) 任務。本節將說明整個演 算法之架構,演算法所呼叫的函式將在爾後的章節中做詳細說明。 任務分配機制主演算法如 Algorithm 1所示,首先,第 2 行至第 4 行做相關參數的 初始化,初始化整個系統的 (子) 任務集合 Γ 空集合,它將在處理每個任務 τi ∈ T 的過 程中逐漸增加其 (子) 任務。也初始化每個處理器 P rj 所分配到的 (子) 任務集合 Aj

(17)

Algorithm 1 分配 (子) 任務到處理器的機制 函式Assign_T ask(T ) 2: 設定系統 (子) 任務集合 Γ 為空集合; 設定每個處理器 P rj (1≤ j ≤ M) 被分配到的 (子) 任務集合 Aj 為空集合。 4: 設定每個處理器 P rj (1≤ j ≤ M) 的使用密度 ∆j 為 0; for 每個 τi 在 T do 6: if τi 是不可平行化任務 then Γ← Γτi; 8: else Γi ← Derive_Subtask(τi); 10: if Γi = ϕ then return F ALSE; 12: else Γ← Γ∪Γi; 14: 將 Γ 中 (子) 任務依據使用密度大至小排序; for 每個 τi,j 在 Γ do

16: p∗ ← F ind_P roper_P rocessor(τi,k, A, ∆);

if p∗ = −1 then 18: 傳回 F ALSE; 分配子任務 τi,j 到處理器 p∗, i.e., Ap∗ ← Ap∗τi; 20: 傳回 T RU E; 函式結束

(18)

空集合與其對應之使用密度總和值 ∆j 為 0,這些變數將在做 (子) 任務分配時做修改。 針對每個任務 i ∈ T ,我們先判斷其屬性是不可平行化任務或是可平行化任務, 若是 i 為不可平行化任務,則無需做子任務切割,直接將此任務加入到 Γ 中。若 是為可平行化任務,將呼叫函式 Derive_Subtask(τi) 取得任務 τi 之所有子任務,函 式 Derive_Subtask(τi) 主要是分配週期給可平行化任務之片段,並將原任務轉化成 多個子任務。新的任務子集合將被加入到 Γ 中。之後,(子) 任務集合 Γ 中的所有 (子) 任務將被依據其使用密度做由大至小的排序。最後,再依據排序後之順序,呼

叫 F ind_P roper_P rocessor(τi,k, A, ∆)。之後協助每個 (子) 任務逐一取得適當的處理

器 p∗ 編號,再將 (子) 任務分配給處理器,更新處理器之 (子) 任務集合 Ap∗。函式 Derive_Subtask(τi) 與 F ind_P roper_P rocessor(τi,k, A, ∆) 的相關細節將在後續章節

中做說明,依據所要使用的 (子) 任務分配方式,如 Best Fit、First Fit 與 Worst Fit, 將會有不同的對應演算法。

3.2

執 行 順 序 限 制 (execution order) 轉 成 時 間 約 束 限 制

(timing constraint)

可平行化週期性任務 τi ∈Tp 的處理方式可以依據當其第二塊片段之平行度為 1 時,

執行時間總和與週期之關係,分成兩種不同的處理方式。如果 ei,1 + ei,2,1+ ei,3 ≤ Pi

以一個完整的任務分配至一個處理器。但若是 ei,1 + ei,2,1+ ei,3 > Pi,無法在工作抵達

後的 Pi 時間內完成三個片段之所有執行,因此需要將可平行化的第二區塊 s2 的平行

度提高,才有可能在 Pi 時間內完成執行。然而,並非平行度越高越好,因為平行度越

高,所造成的結果是讓整個任務在系統上所需的總執行時間長度增加。

由於任務的片段之間存在著執行順序的限制,為了能夠在做任務分配時,能暫時性

的忽略這個限制,我們將執行順序限制轉換成時間限制,將讓每個任務 τi 的某個片段

si,j 分配到一段執行時間區間 di,j,si,j 將在此時間區間的一開始時即準備好隨時可以執

行,且要能夠在這時間區間結束前完成片段 si,j 的執行。而每個片段也將在系統中衍

(19)

✷ ✐✱ ❞ P ✶ ✁✂ ✸ ✐✱ ❞ ✄ ☎✆ ✝ ✷ ✐✱ ❞ ✞ ✟✠ ✡ ✄ ☎✆ ✝ ☛ ☞ ✌ ✍✎ ✏ ☛ P ✑ ✒✓ ✔✓ ✕ ✖✗ ✘✗ ✙ ✚ ✚✛ ✜✛ ✢ ✢✣ ✤ ✣ ✥ ☛ P ✦ ✧★ ✩ ✪✫ ✬ ✭ ✮ ✛ ① ✜✛✚ ✣ ✯ ✤ ✣ ✥ ✢ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✳ ✲ 圖 3.1: 週期分割關係圖

(20)

即能夠達到即時要求。

我們將 Pi 分割成 di,1、di,2 及 di,3 分別給 si,1、si,2 和 si,3 使用,換句話說 Pi =

di,1 + di,2 + di,3。我們將片段 si,1(/si,3) 的執行時間區間 di,1(/di,3) 稱之為該片段的相

對子任務 τi,1(/τi,3) 之相對截限時間,因此,子任務 τi,1(/τi,3) 之密度 (density)δi,1 =

ei,1

di,1(/δi,3 =

ei,3

di,3)。

若 si,2 的平行度為 x,代表將會有 x 個子任務同時執行,所以 si,2 會有 x 個子任

務,我們以 τi,2,j 代表其中的一個子任務,而每個子任務之密度 δi,2,j = edi,2,x

i,2 。假如任務

τi 某個工作 τi,j 是在時間 t 抵達,τi,1 從時間 t 即可開始被執行,而它的絕對截限時間

為 t + di,1,而 si,2 之所有子任務 τi,2,j 的執行時間區間會是 (t + di,1, t + di,1+ di,2],τi,3

的執行時間區間會是 (t + di,1+ di,2, t + Pi],如圖 3.1所示。任務 τi 之所有子任務之總 密度為 ei,1 di,1+ x× ei,2,x di,2 + ei,3 di,3,由於平行化越高將導致任務的第二片段之執行時間總和增 加,因此 x× ei,2,x di,2 < (x + 1)× ei,2,x+1 di,2 ,我們可觀察到找到一個適當的平行度與分配適 當的相對截限時間給每個片段將重大影響是否能為系統中的任務集合求得一個可排程 的任務分配方式。 接下來我們將探討如何設定一個可平行化任務的平行度與其子任務之相對截限時 間,程式假碼如 Algorithm 2所示,此函式的輸入為一個可平行化任務 τi,而輸出為其 對應之子任務集合,我們初始化一個子任務集合 Γi 為空集合,接下來逐一此任務 τi

第二片段平行度 x 為多少時,能使判斷在哪個平行度下,能滿足 ei,1+ ei,2,x+ ei,3 ≤ Pi

的條件。若 x 為 1 時,即滿足該條件,則子任務集合 Γi 中僅存在此任務 τi,未來在

分配到處理器時,將視為一個完整未被切割的任務。否則,平行度 x 將逐漸提高,直 到 ei,1+ ei,2,x+ ei,3 ≤ Pi 被滿足為止,之後使用能夠將週期分配給三個片段的方法,如

Equal Slack (EQS)[11]、Equal Flexibility (EQF) [11]、或是 Boundary [7] 等方法設定每 個片段之對應子任務的相對截限時間,並求得所有子任務之使用密度,且將這些子任

務加入到子任務集合 Γi 中,並回傳。可使用之週期分配方式 Equal Slack (EQS)[11]、

Equal Flexibility (EQF)[11]、和 Boundary[7] 說明如下:

• EQS:分配原則為將 Pi− ei,1 − ei,2,x− ei,3 等分給各片段之子任務,不同片段之

相對截限時間如下:τi,1 的相對截限時間 di,1 = ei,1+ (Pi − ei,1 − ei,2,x− ei,3)/3、

(21)

Algorithm 2 取得一個可平行化任務之子任務集合

1: Function Derive_Subtask(τi)

2: 初始化 τi 之子任務集合 Γ 為空集合;

3: for x← 1 to M do

4: if (ei,1+ ei,2,x+ ei,3)≤ Pi then

5: if x = 1 then 6: 增加 (子) 任務物件 τ ,並將 τi 的任務編號、型態、週期、執行時間、與執 行密度 (ei Pi) 記錄到 τ ,最後將 τ 加入到 Γ 中; 7: else 8: 使用分配週期給三個片段之方法,取得子任務 τi,1 與 τi,3 之相對截限時間

di,1 與 di,3,以及 x 個 si,2 之子任務 τi,2 的相對截限時間 di,2;

9: 設定子任務 τi,1 所屬之 τi 的任務編號、相對截限時間 di,1、執行時間 ei,1

執行密度 δi,1 = edi,1 i,1; 10: 設定 x 個子任務 τi,2 所屬之 τi 的任務編號、相對截限時間 di,2、執行時間 ei,2,x 與執行密度 δi,2 = ei,2,x di,2 ;

11: 設定子任務 τi,3 所屬之 τi 的任務編號、相對截限時間 di,3、執行時間 ei,3

執行密度 δi,3 =

ei,3

di,3;

12: 在子任務集合 Γ 中,加入子任務 τi,1、τi,3 與 x 個 si,2 的對應子任務 τi,2

13: break;

14: return Γ;

(22)

間 di,3 = ei,3+ (Pi− ei,1− ei,2,x− ei,3)/3。

• EQF:分配原則為將 Pi 依據各片段執行時間長度等比例分配給各片段之子任

務,不同片段之相對截限時間如下:τi,1 的相對截限時間 di,1 = ei,1+ (Pi − ei,1−

ei,2,x− ei,3)×

ei,1

(ei,1+ei,2,x+ei,3)、τi,2 的相對截限時間 di,2,x = ei,2,x+ (Pi− ei,1− ei,2,x−

ei,3)×

ei,2,x

(ei,1+ei,2,x+ei,3) 而 τi,3 的相對截限時間 di,3 = ei,3+ (Pi− ei,1− ei,2,x− ei,3)×

ei,3

(ei,1+ei,2,x+ei,3)。

• Boundary: 平行度 x 代入以下兩式子:(1)f (ei,1, Pi− ei,1− ei,3) = eei,1

i,1 +

ei,3

ei,3 + x×

ei,2,x

Pi−ei,1−ei,3 和 (2)f ((Pi− ei,2,x)×

e

i,1

e

i,1+√ei,3, ei,2,x) =

(√ei,1+√ei,3)2

Pi−ei,2,x 。判斷哪個式子的

值較小,若前者較小,τi,1 的相對截限時間 di,1 = (Pi− ei,2,x)/2,τi,2 的相對截限

時間 di,2 = ei,2,x,而 τi,3 的相對截限時間 di,3 = (Pi− ei,2,x)/2;反之,τi,1 的相對

截限時間 di,1 = ei,1,τi,2 的相對截限時間 di,2 = Pi− ei,1 − ei,3,而 τi,3 的相對截

限時間 di,3 = ei,3

3.3

子任務使用密度合併

為能有效的將子任務分配到處理器中,我們提出一個合併子任務使用密度的機制, 由於可平行化任務的不同片段在被分配執行時間區間後,每個片段之子任務具有其允 許執行的時間限制,才不會影響後續片段之子任務。如圖 3.1所示,屬於相同任務之子 任務 τi,1 與 τi,2,在依據前一節的相對截限時間設定機制後,這兩個子任務在執行上完 全獨立,只要在執行上各自符合自己的時間限制即可,如果同一個任務之子任務皆能 遵守自己的時間限制,則該任務即可滿足即時需求。在做可排程測試,若這兩個獨立 之子任務 τi,1 與 τi,2 視為在執行時間上可能會重疊,將會使可平行化任務在被切割成 子任務後,其執行密度總和遽增,然而,實質上,不同片段的子任務的時間限制是不 重疊的,若能夠在分配時能考慮到這特性,對於任務的可排程性的提高有莫大的幫助。 以下整理了三個定理,這些定理在做任務分配時,被用來確認分配結果是否可排程, 與如何分配才能有更高的可排程機率。

(23)

Algorithm 3 Find Proper Processor based on BF

1: Function F ind_P roper_P rocessor_based_on_BF (τi,k, A, ∆)

2: 設定 dnsty ← 0; 3: 設定 p∗ ← −1,用來存放要放置目標處理器; 4: 設定 Belong_same_task ← F ALSE,用來表示處理器中是否先前已分配同一任 務之不同片段的子任務; 5: 設定 increment = 1,用來存放要放置目標處理器增加量最小的; 6: 設定 largeU = 0,用來存放要放置目標處理器的使用密度; 7: for j ← 1 to M do 8: dnsty = ∆j + δi,k; 9: if Aj 中有放置和 τi,k 所屬之可平行化任務之其它不同片段的之子任務 then 10: 令 τ′ 為先前已放置到 Aj 和 τi,k 屬於相同任務,且有最大使用密度之子任務; 11: dnsty ← dnsty - τ′ 的使用密度;

12: if dnsty ≤ 1 且 ( δi,k − τ′ 的使用密度)< increment then

13: Belong_same_task ← T RUE;

14: increment← δi,k− τ′ 的使用密度;

15: ∆j ← dnsty;

16: p∗ ← j;

17: if Belong_same_task = F ALSE 且 dnsty ≤ 1 且 dnsty > largeU then

18: largeU ← dnsty;

19: ∆j ← dnsty;

20: p∗ ← j;

21: return p∗;

(24)

Algorithm 4 Find Proper Processor based on FF

1: Function F ind_P roper_P rocessor_based_on_F F (τi,k, A, ∆)

2: 設定 dnsty ← 0; 3: 設定 p∗ ← −1,用來存放要放置目標處理器; 4: 設定 Belong_same_task ← F ALSE,用來表示處理器中是否先前已分配同一任 務之不同片段的子任務; 5: 設定 increment = 1,用來存放要放置目標處理器增加量最小的; 6: for j ← 1 to M do 7: dnsty = ∆j + δi,k; 8: if Aj 中有放置和 τi,k 所屬之可平行化任務之其它不同片段的之子任務 then 9: 令 τ′ 為先前已放置到 Aj 和 τi,k 屬於相同任務,且有最大使用密度之子任務; 10: dnsty ← dnsty - τ′ 的使用密度;

11: if dnsty ≤ 1 且 ( δi,k − τ′ 的使用密度)< increment then

12: Belong_same_task ← T RUE;

13: increment← δi,k− τ′ 的使用密度;

14: ∆j ← dnsty;

15: p∗ ← j;

16: if Belong_same_task = F ALSE 且 dnsty ≤ 1 then

17: Belong_same_task ← T RUE;

18: ∆j ← dnsty;

19: p∗ ← j;

20: return p∗;

(25)

Algorithm 5 Find Proper Processor based on WF

1: Function F ind_P roper_P rocessor_based_on_W F (τi,k, A, ∆)

2: 設定 dnsty ← 0; 3: 設定 p∗ ← −1,用來存放要放置目標處理器; 4: 設定 Belong_same_task ← F ALSE,用來表示處理器中是否先前已分配同一任 務之不同片段的子任務; 5: 設定 increment = 1,用來存放要放置目標處理器增加量最小的; 6: 設定 smallU = 最大值,用來存放要放置目標處理器的使用密度; 7: for j ← 1 to M do 8: dnsty = ∆j + δi,k; 9: if Aj 中有放置和 τi,k 所屬之可平行化任務之其它不同片段的之子任務 then 10: 令 τ′ 為先前已放置到 Aj 和 τi,k 屬於相同任務,且有最大使用密度之子任務; 11: dnsty ← dnsty - τ′ 的使用密度;

12: if dnsty ≤ 1 且 ( δi,k − τ′ 的使用密度)< increment then

13: Belong_same_task ← T RUE;

14: increment← δi,k− τ′ 的使用密度;

15: ∆j ← dnsty;

16: p∗ ← j;

17: if Belong_same_task = F ALSE 且 dnsty ≤ 1 且 dnsty < smallU then

18: smallU ← dnsty;

19: ∆j ← dnsty;

20: p∗ ← j;

21: return p∗;

(26)

Theorem 1. [11] 一個處理器所分配到的任務之使用率 (utilization) 與任務之使用密度 (density) 之總和不可超過 1,利用 EDF 排程任務,皆可滿足即時需求。 Theorem 2. [11] 一個任務若有多個片段,將原任務之截限時間分配給片段之子任務作 為截限時間,若每個子任務可以滿足自己的截限時間限制,則原任務即可原截限時間 限制。 Theorem 3. [11] 一個系統中任務集合若以事先分配方式將任務分配給系統中的處理器, 且每個處理器以 EDF 排程方式執行任務,系統的任務可排程分配方式必須符合以下條 件:系統中的每個處理器所分配到的任務之使用率 (utilization) 與子任務之使用密度 (density) 之總和不可超過 1。 Theorem 4. 當一個可平行化任務衍生成多個子任務後,依據第 3.2 節中的截限時間分 配方式,讓每個子任務的使用密度不超過 1,如果每個子任務分配給不同的處理器, 且每個處理器所分配到的 (子) 任務使用率與使用密度總和都不超過 1.0,則原任務可 以滿足即時需求。 Proof. 當可平行化任務分隔成多個子任務後,因為每個子任務已有截限時間限制, 且使用密度不超過 1.0,每個子任務可被視為各自獨立的任務,承續 Theorem 3,在執 行時,每個 (子) 任務都可以滿足在截限時間之前完成,故原任務可以滿足即時需求。  Theorem 5. 當一個可平行化任務衍生成多個子任務時,如果有兩個以上之子任務分配 給同一個處理器,且每個處理器所分配到的 (子) 任務使用率與使用密度總和都不超過 1。在執行時,每個 (子) 任務都可以滿足在截限時間之前完成。 Proof. 同 Theorem 4 證明。 Theorem 6. 同一個可平行化任務之不同片段的兩個子任務若分配到同一個處理器時, 系統保留給這些子任務之能力必須要大於或是等於這些不同片段子任務之中最大的使 用密度,才能確保子任務能夠在截限時間之前完成。 Proof. 當同一個可平行化任務之不同片段的子任務分配到同一個處理器時,由於子 任務有相同的週期,不同的相對截限時間,前面片段的子任務與後面片段的子任務的

(27)

執行時間區間完全沒有重疊,因此只須在該處理器上保留這兩個子任務之最大使用密 度之能力即可。 Theorem 7. 同一個可平行化任務之相同片段的子任務若分配到同一個處理器時,系統 保留給這些子任務之能力必須要大於或是等於這些相同片段子任務之使用密度總和, 才能確保子任務能夠在截限時間之前完成。 Proof. 當同一個可平行化任務之相同片段的子任務分配到同一個處理器時,由於子 任務有相同的週期和相同的相對截限時間,兩個子任務的執行時間區間完全重疊,因 此只須在該處理器上保留這兩個子任務使用密度和之能力。

在分配 (子) 任務時,有不同的分配機制可使用,如 Best Fit (BF)、First Fit (FF) 和 Worst Fit (WF) [4],我們分別提出基於這三種機制之 (子) 任務分配演算法,分別 列在 Algorithm 3、Algorithm 4、和 Algorithm 5。

由於上述的三個演算法許多部份近似,所以我們僅詳細描述 Algorithm 3,並在之 後作之間的差異說明。利用函式 Derive_Subtask(τi) 取得可平行化任務之子任務,並 且依據 (子) 任務使用率或是使用密度排序過後,最後須依據 Algorithm 3的機制來分配 (子) 任務至處理器,分配的過程中會使用子任務使用密度合併的概念。關於 Algorithm 3中的運作細節,首先,第 2 行至第 6 行分別初始化相關變數,第 1 行初始化 dnsty, 被用來暫時記錄每個處理器如果被給予傳入的 (子) 任務後使用密度之總和。第 2 行初 始化 p∗,它被用來記錄目前最可能被當作 (子) 任務要放置的目標處理器。第 4 行則是

初始化變數 Belongsametask,被用來判斷處理器中是否先前已分配同一任務之不同片

段的子任務。接著第 5 行初始化變數 increment,用來記錄在有不同的片段的子任務 在相同處理器中時,每個處理器判斷過後,處理器加上子任務的使用密度和最小的變 數。第 6 行初始化變數 largeU ,被用來放置處理器中的最大使用率 (密度) 總和。第 7 行至第 20 行則是針對每個處理器,討論如果再放被置入目前的 (子) 任務 τi,k 時的狀 況,第 9 行至 16 行判斷有沒有同一任務之不同片段的子任務在同一個處理器中。如果 有,代表處理器已有分配到同一任務之不同片段的子任務。若有多個處理器都有該任 務子其他片段之子任務,以合併後所增加的使用密度最小的處理器為分配對象。第 17 行至 20 行則是判斷如果所有處理器都未含同一任務之不同片段的子任務,則退化到一 般的分配機制 BF,BF 即是尋找目前處理器中所分配到的 (子) 任務使用率與使用密度

(28)

總和最高,且將新的子任務分配給它之後,使用率與使用密度總和仍然不超過 1.0 者, 即為目標處理器。第 20 行,在判斷完所有的處理器後,回傳找到的目標處理器。 Algorithm 4與 Algorithm 3不同之處在於判斷當沒有屬於同一個平行任務之不同片 段子任務在同一個處理器時,FF 分配機制依據處理器編號,依序尋找,當找到的第一 個處理器中所分配到的 (子) 任務與新子任務的使用率與使用密度總和不超過 1.0 者, 即為目標處理器。而 Algorithm 5則是在判斷沒有不同的片段在同一個處理器時,WF 分配機制則尋找目前處理器中所分配到的 (子) 任務使用率與使用密度總和最低且將新 的子任務分配給它之後,使用率與使用密度總和仍然不超過 1.0 者,即為目標處理器。 在時間複雜度分析方面,由於 Algorithm 1為整個任務分配的方法主體,執行過 程中需要呼叫 Algorithm 2處理每個任務,以及不同 (子) 任務分配機制 Algorithm 3、 Algorithm 4或是 Algorithm 5。在 Algorithm 1中,針對所輸入的有 N 個任務的集合

T,在第 5 行至第 13 行之間,需要對每個任務逐一處理,在最差情況下,所有的 任務可能都是可平行化任務,且第二片段的平行度都設定在 M ,加上第一片段與 第三片段的子任務,因此,最多會有可能衍生出 N × (M + 2) 個子任務,而此階段 的複雜度為 O(N )。而在第 14 行,需要依據使用密度大小對子任務做排序,複雜度 為 O((N × (M + 2))log(N × (M + 2)))。而在第 15 行至第 19 行之間,針對已排序的 N × (M + 2) 個子任務中的每一個子任務做分配至處理器的動作,由於最多會檢查所 有的處理器,因此複雜度為 O((N × (M + 2)) × M)。依據前面的討論內容,影響複雜 度的主要是後面兩個部分,因此整個機制的複雜度為 O(N M (M + logN M ))。

3.4

例子

在本節中,我們將舉一個例子來說明子任務使用密度合併機制對於可平行化任務分 配時,在可排程性上所帶來的好處。假設系統中具有四個處理器 P r1, P r2, P r3, P r4 和 一個任務集合為 T ={τ1, τ2, τ3, τ4, τ5, τ6},τ1 為可平行化任務,而其餘 5 個任務則為不 可平行化任務。任務之相關時間特性如表格 3.1和 3.2所示。 以下我們將採用第 3.2 節所提到的三種不同的週期分配給可平行化任務的不同片段 分配機制:EQS、EQF、與 Boundary,搭配 Best Fit (BF) 分配準則,測試子任務使

(29)

表 3.1: 平行化例子可平行任務 任務 週期 第一片段 平行度 第二片段 第三片段 執行時間長度 執行時間長度 執行時間長度 τ1 10 1 1 14 1 2 9 3 7 4 6 表 3.2: 平行化例子不可平行任務 任務 週期 執行時間 τ2 10 1 τ3 10 1 τ4 10 2 τ5 10 2 τ6 10 2 用密度不合併與合併對於任務可否成功分配到處理器所帶來的影響。由於當 τi 的平行

度 3 時,才能滿足 ei,1+ ei,2,3+ ei,3≤ P1,因此 EQS、EQF、與 Boundary 皆是在平行

度為 3 時,設定每個片段之子任務的相對截限時間。 當可平行化任務之週期的分配給不同片段是採用 EQS 時,平行度設定為 3,第 一、二、三片段的相對截限時間分別為 1.333、7.333、和 1.333,衍生出 5 個子任 務 τ1,1、τ1,2,1、τ1,2,2、τ1,2,3 和 τ1,3,而其使用密度分別為 0.75、0.955、0.955、0.955 和 0.75。τ2、τ3、τ4、τ5 和 τ6 為不可平行化任務,使用率分別為 0.1、0.1、0.2、0.2 和 0.2。之後,依據使用率 (/密度) 由大到小排序,順序為 τ1,2,1、τ1,2,2、τ1,2,3、τ1,1、τ1,3τ4、τ5、τ6、τ2、τ3。當不採用合併機制時,不可平行化任務之使用率與可平行化任務 之子任務使用密度之總和超過處理器個數 4,無法找到分配後所有處理器之 (子) 任務 使用率與使用密度總和皆不超過 1.0 的分配結果。但若採用同一平行化任務的不同片 段之子任務的使用密度可以合併之機制時,處理器 P r1 將被放置 τ1,2,1、τ1,1、τ1,3,處 理器 P r2 將被放置 τ1,2,2,處理器 P r3 將被放置 τ1,2,3,處理器 P r4 將被放置 τ4、τ5、 τ6、τ2、τ3,所有處理器上的 (子) 任務使用率與使用密度總和皆不超過 1.0,分配結果

(30)

為可排。 另外,當可平行化任務之週期的分配給不同片段是採用 EQF 時,平行度設定為 3, 第一、二、三片段的相對截限時間分別為 1.111、7.778、和 1.111,因此,τ1 衍生出 5 個子任務 τ1,1、τ1,2,1、τ1,2,2、τ1,2,3 和 τ1,3,子任務之使用密度皆為 0.9。之後,依據 使用率 (/密度) 由大到小排序,順序為 τ1,2,1、τ1,2,2、τ1,2,3、τ1,1、τ1,3、τ4、τ5、τ6、τ2、 τ3。當不採用合併機制時,不可平行化任務之使用率與可平行化任務之子任務使用密 度之總和超過處理器個數 4,因此,無法找到分配後所有處理器之 (子) 任務使用率 與使用密度總和皆不超過 1.0 的分配結果。但若採用同一平行化任務的不同片段之子 任務的使用密度可以合併之機制時,處理器 P r1 將被放置 τ1,2,1、τ1,1、與 τ1,3,處理 器 P r2 將被放置 τ1,2,2,處理器 P r3 將被放置 τ1,2,3,處理器 P r4 將被放置 τ2、τ3、τ4、 τ5、τ6,所有處理器上的 (子) 任務使用率與使用密度總和皆不超過 1.0,分配結果為可 排。 當週期的分配原則是採用 Boundary 時,平行度設定為 3,第一、二、三片段的相 對截限時間分別為 1.5、7、和 1.5,衍生成 5 個子任務 τ1,1、τ1,2,1、τ1,2,2、τ1,2,3 和 τ1,3而 5 個子任務的使用密度分別為 0.667、1.0、1.0、1.0 和 0.667。依據使用率 (/密度) 由大到小排序,順序為 τ1,2,1、τ1,2,2、τ1,2,3、τ1,1、τ1,3、τ4、τ5、τ6、τ2、τ3。當不採用 合併機制時,使用率與使用密度總和超過處理器個數 4,無法找到分配後所有處理器 之 (子) 任務使用率與使用密度總和皆不超過 1.0 的分配結果。但若採用同一平行化 任務的不同片段之子任務的使用密度可以合併之機制時,處理器 P r1 將被放置 τ1,2,1τ1,1、τ1,3,處理器 P r2 將被放置 τ1,2,2,處理器 P r3 將被放置 τ1,2,3,處理器 P r4 將被 放置 τ4、τ5、τ6、τ2、τ3,所有處理器上的 (子) 任務使用率與使用密度總和皆不超過 1.0,分配結果為可排。

(31)

第 四 章

效能評估

本節中我們將驗證所提出機制,首先要介紹相關的實驗參數,之後將討論實驗結 果。

4.1

實驗環境設置

我們建置一個實驗模型測試第三節中所提出的機制,本文章中主要貢獻是考量 到可平行化任務的不同片段之子任務,當各自有截限時間限制之後,不同片段之子 任務的可執行區間將不會重疊,因此提出子任務使用密度合併機制,讓子任務被分 配至處理器時,所造成的使用密度將可以以為同一個任務的不同片段之子任務使用 密度最大值為代表。方法的比較對象為傳統的子任務使用密度不合併,實驗中還包 含使用不同的截限時間設定方式,如 Equal Slack (EQS)、Equal Flexibility (EQF) 和 Boundary,以及不同 (子) 任務分配方式,由於 (子) 任務依據使用率/使用密度由大 至小排序後再做分配,效果比不排序佳,因此實驗結果將只呈現有排序的實驗結果, 而這些排序的機制為 Best Fit Decreasing (BFD)、First Fit Decreasing(FFD) 與 Worst Fit Decreasing(WFD)。

在實驗中,我們假設系統的處理器個數為 8 個,而我們以 γ 變數去控制系統中的 任務總使用率,γ 值介於 0.2 到 1.0 之間,所以任務總使用率為 1.6、2.4、3.2、4.0、

(32)

4.8、5.6、6.4、7.2、與 8.0,而在不同總使用率下的可平行化週期性任務個數被設定為 1 至 Np,Np 最大值為 ⌊U⌋。不可平行化任務的使用率為介於 0.01 至 0.2 之間的隨機 值,而可平行化任務的使用率為介於 1.01 至 1.2 之間的隨機值,任務之週期則為介於 100 至 3, 000 之間的隨機值。 設定可平行化任務之使用率和週期後,即可算出任務在平行度為 1 時的執行時間長 度,我們將第二段執行時間所占的比例設定在 95% 至 99% 之間的隨機值,剩餘則為 第一段和第三段的執行時間,我們假設第一段第與三段的執行時間長度一樣。 可平行化任務的平行度變大時,將會增加額外的執行成本,在實驗中,我們依據文 獻 [8] 中的概念,使用一個控制變數 α 值來設定不同平行度下的子任務之執行時間, 任務 τi 在平行度為 j 時,每個子任務的執行時間為 Ei,j = Ei,1 j + α(Ei,1− Ei,1 j ),α 的值 被設定在介於 0 到 1.0 之間,變化間格為 0.1。因為系統中有 8 個處理器,因此任務平 行度最大至 8。 實驗數據中的每個結果皆是由 100 組相同參數設定之下的實驗平均值,實驗的評估 準則為相同參數下之所有任務集合的可排程率,其計算方式為測試方法能找到可排程 結果之測試任務集合個數除以 100。

4.2

實驗結果

本節中所要說明的圖一共有 12 張,可以分成三個組群。首先要說明的第一組圖: 圖 4.1、4.2、4.3與 4.4是關於當 Np 與 α 值固定時,γ 變動之下對於可排程率造成的影 響。而第二組圖為圖 4.5、4.6、4.7與 4.8則是說明當 Np 與 γ 值固定時,α 變動之下對 於可排程率造成的影響。最後的第三組圖為圖 4.9、4.10、4.11與 4.12,則是要說明當 γ 與 α 值固定時,系統中有不同的可平行化任務個數 Np 時,對於可排程率造成的影 響。 圖 4.1 所呈現的是當 Np = 1、α = 0.6 時,所有比較機制在不同 γ 設定值的可排程 率。圖中的 X+Y+Z 所代表的意思是使用 X 截限時間設定方法、Y(子) 任務分配機制 和 Z 是否使用子任務使用密度合併機制。當 γ ≤ 0.5 時,所有比較的機制效果一樣, 由於系統總使用率 ≤ 4.0 且可平行化週期性任務只有一個,所有 (子) 任務的使用密度

(33)

✵ ✵✳✷ ✵✳✹ ✵✳✻ ✵✳✽ ✵✳✷ ✵✳ ✸ ✵✳✹ ✵✳✺ ✵✳✻ ✵✳✼ ✵✳✽ ✵✳✾ ✶ ✁ ✂ ✄ ☎ ❊◗ ❙ ✰ ❋ ❋❉✰✁ ✂✄☎ ❊◗ ❙ ✰❲❋❉✰✁ ✂✄☎ ❊◗ ❙ ✰❇❋❉✰✁ ✂✄☎ ❊◗❋✰ ❋ ❋❉✰✁ ✂✄☎ ❊◗❋✰❲❋❉✰✁ ✂✄☎ ❊◗❋✰❇❋❉✰✁ ✂✄☎ ❇♦ ✉♥❞ ❛r②✰❋❋❉✰✁ ✂✄☎ ❇♦ ✉♥❞ ❛r②✰❲❋❉✰✁ ✂✄☎ ❇♦ ✉♥❞ ❛r②✰❇❋❉✰✁ ✂✄☎ ❊◗ ❙ ✰ ❋ ❋❉✰✁ ✂✆✄☎ ❊◗ ❙ ✰❲❋❉✰✁ ✂✆✄☎ ❊◗ ❙ ✰❇❋❉✰✁ ✂✆✄☎ ❊◗❋✰ ❋ ❋❉✰✁ ✂✆✄☎ ❊◗❋✰❲❋❉✰✁ ✂✆✄☎ ❊◗❋✰❇❋❉✰✁ ✂✆✄☎ ❇♦ ✉♥❞ ❛r②✰❋❋❉✰✁ ✂✆✄☎ ❇♦ ✉♥❞ ❛r②✰❲❋❉✰✁ ✂✆✄☎ ❇♦ ✉♥❞ ❛r②✰❇❋❉✰✁ ✂✆✄☎ 圖 4.1: 當 Np = 1、α = 0.6 之任務集合可排程率 總和低,所以容易成功分配任務至處理器,都有 1.0 的可排程率。然而當 γ 逐漸變大 後,由於子任務使用密度合併所帶來的好處,所以無論是使用哪種截限時間設定方法 或是 (子) 任務分配機制,都比不合併的對照組優異很多,因為子任合併可以讓處理器 中的 (子) 任務總使用密度下降,讓測試任務集合更容易有可排程之結果。另外,在子 任務使用密度合併之下,無論是使用哪種 (子) 任務分配機制,截限時間設定機制以 EQF 最佳,而 Boundary 最差,原因是 EQF 將會讓三個片段之所有子任務的使用密 度一樣,如此一來,當不同片段之子任務使用密度合併時,將不會額外再增加使用密 度,而 Boundary 則是剛好相反,為了能夠讓單一平行化任務的子任務之使用密度總 和最小,Boundary 所造成的三個片段之所有子任務的使用密度大小差異最大,容易造 成不同片段之子任務使用密度合併後,合併之使用密度偏大。而如果子任務使用密度 不合併,截限時間的設定對於可排程率所造成的影響,優略順序為 Boundary、EQS、 EQF,這是因為 Boundary 機制所造成單一平行化任務的子任務之使用密度總和最小, 因此較容易分配成功;而 EQF 所造成的使用密度和最大,因此較容易分配失敗。此 外,如果無論是否採用子任務使用密度合併機制,在固定截限時間設定方式時,(子) 任務分配機制優劣順序為 BFD、FFD、WFD,原因是 BFD 分配機制會將依序將使用 密度 (/使用率) 最大之 (子) 任務分配給所有處理器中具有最小足夠能力者、FFD 則是 由處理器編號最小的開始測試,因為排序過,所以放置到處理器時,順序會跟 BFD 有 點類似,而 WFD 則是 (子) 任務分配時會被分配給處理器中具有最大足夠能力者,所

(34)

以容易導致之後 (子) 任務不易放置,所以效果較差。 ✵ ✵✳ ✷ ✵✳✹ ✵✳ ✻ ✵✳✽ ✶ ✵✳ ✷ ✵✳✸ ✵✳✹ ✵✳✺ ✵✳ ✻ ✵✳✼ ✵✳✽ ✵✳✾ ✶ ✁ ✂ ✄ ☎ ❊◗ ❙✰ ❋❋ ❉✰✁ ✂✄☎ ❊◗ ❙✰❲❋ ❉✰✁ ✂✄☎ ❊◗ ❙✰ ❇❋ ❉✰✁ ✂✄☎ ❊◗❋ ✰ ❋❋ ❉✰✁ ✂✄☎ ❊◗❋ ✰❲❋ ❉✰✁ ✂✄☎ ❊◗❋ ✰ ❇❋ ❉✰✁ ✂✄☎ ❇♦✉♥❞ ❛r②✰ ❋❋ ❉✰✁ ✂✄ ☎ ❇♦✉♥❞ ❛r②✰❲❋❉✰✁ ✂✄ ☎ ❇♦✉♥❞ ❛r②✰ ❇❋ ❉✰✁ ✂✄☎ ❊◗ ❙✰ ❋❋ ❉✰✁ ✂✆✄☎ ❊◗ ❙✰❲❋ ❉✰✁ ✂✆✄☎ ❊◗ ❙✰ ❇❋ ❉✰✁ ✂✆✄ ☎ ❊◗❋ ✰ ❋❋ ❉✰✁ ✂✆✄☎ ❊◗❋ ✰❲❋ ❉✰✁ ✂✆✄☎ ❊◗❋ ✰ ❇❋ ❉✰✁ ✂✆✄ ☎ ❇♦✉♥❞ ❛r②✰ ❋❋ ❉✰✁ ✂✆ ✄☎ ❇♦✉♥❞ ❛r②✰❲❋❉✰✁ ✂✆ ✄☎ ❇♦✉♥❞ ❛r②✰ ❇❋ ❉✰✁ ✂✆✄☎ 圖 4.2: 當 Np = 1、α = 0.5 之任務集合可排程率 圖 4.2 所呈現的是當 Np = 1、α = 0.5 時,所有比較機制在不同 γ 設定值之可排 程率。當 γ ≤ 0.6 時,由於系統總使用率 ≤ 4.8 且可平行化週期性任務只有一個,所 有 (子) 任務的使用密度總和低,所以容易成功分配任務至處理器,所有比較機制都有 1.0 的可排程率。實驗結果之趨勢與圖 4.1相似,而差異處在於,當其他參數設定一樣 時,由於 α 較小,所以平行化任務在使用較高平行度時,使用密度總和較低,因此會 有較高的可排程率。當 γ 逐漸變大後,由於子任務使用密度合併所帶來的好處,所以 無論是使用哪種截限時間設定方法或是 (子) 任務分配機制,都比不合併的對照組優異 很多,但不同比較截限時間設定方法或是 (子) 任務分配的效能差異的可辨識度較低直 到當 γ = 0.9 時,才出現差異,但還是和圖 4.1結果一致,EQF 最佳,而 Boundary 最 差,至於使用哪種 (子) 任務的分配機制效果似乎沒有差異了。而如果子任務使用密 度不合併,截限時間的設定對於可排程率所造成的影響,優略順序依舊為 Boundary、 EQS、EQF。 圖 4.3 所呈現的是當 Np = 2、α = 0.5 時,相關比較機制在不同 γ 設定值的可排程 率。因為 Np = 2 需要在任務的總使用率 > 2.0,所以圖中 γ 的開始值為 0.3,而此時 的任務總使用率為 2.4,Np 才能為 2( =⌊2.4⌋)。實驗結果之趨勢與圖 4.2相似,而差異 處在於,當其他參數設定一樣時,由於 Np 較大,所以平行化任務的使用密度總和較 高,因此會有較低的可排程率。子任務使用密度不合併下,EQF 在 γ = 0.4 時,就有

(35)

✵ ✵✳✷ ✵✳✹ ✵✳✻ ✵✳✽ ✵✳✸ ✵✳✹ ✵✳✺ ✵✳ ✻ ✵✳✼ ✵✳ ✽ ✵✳✾ ✶ ✁ ✂ ✄ ☎ ❊◗ ❙ ✰ ❋❋ ❉✰✁ ✂✄☎ ❊◗ ❙ ✰ ❲ ❋ ❉✰✁ ✂✄☎ ❊◗ ❙ ✰ ❇❋ ❉✰ ✁ ✂✄☎ ❊◗ ❋ ✰ ❋❋ ❉✰✁ ✂✄☎ ❊◗ ❋ ✰ ❲ ❋ ❉✰✁ ✂✄☎ ❊◗ ❋ ✰ ❇❋ ❉✰ ✁ ✂✄☎ ❇♦ ✉♥❞ ❛r②✰❋ ❋ ❉✰ ✁ ✂✄ ☎ ❇♦ ✉♥❞ ❛r②✰❲❋ ❉✰ ✁ ✂✄ ☎ ❇♦ ✉♥❞ ❛r②✰❇❋ ❉✰✁ ✂✄☎ ❊◗ ❙ ✰ ❋❋ ❉✰✁ ✂✆✄ ☎ ❊◗ ❙ ✰ ❲ ❋ ❉✰✁ ✂✆✄ ☎ ❊◗ ❙ ✰ ❇❋ ❉✰ ✁ ✂✆✄☎ ❊◗ ❋ ✰ ❋❋ ❉✰✁ ✂✆✄ ☎ ❊◗ ❋ ✰ ❲ ❋ ❉✰✁ ✂✆✄ ☎ ❊◗ ❋ ✰ ❇❋ ❉✰ ✁ ✂✆✄☎ ❇♦ ✉♥❞ ❛r②✰❋ ❋ ❉✰ ✁ ✂✆✄☎ ❇♦ ✉♥❞ ❛r②✰❲❋ ❉✰ ✁ ✂✆✄☎ ❇♦ ✉♥❞ ❛r②✰❇❋ ❉✰✁ ✂✆✄☎ 圖 4.3: 當 Np = 2、α = 0.5 之任務集合可排程率

極差的實驗結果,因為和 EQS 與 Boundary 相比,EQF 讓單一任務的子任務使用密度 總和較高。 ✵ ✵✳✷ ✵✳✹ ✵✳✻ ✵✳✽ ✶ ✵✳✸ ✵✳✹ ✵✳✺ ✵✳✻ ✵✳✼ ✵✳✽ ✵✳✾ ✶ ✁ ✂ ✄ ☎ ❊◗ ❙✰ ❋ ❋ ❉✰✁ ✂✄☎ ❊◗ ❙✰❲❋ ❉✰✁ ✂✄☎ ❊◗ ❙✰❇❋ ❉✰✁ ✂✄☎ ❊◗❋ ✰ ❋ ❋ ❉✰✁ ✂✄☎ ❊◗❋ ✰❲❋ ❉✰✁ ✂✄☎ ❊◗❋ ✰❇❋ ❉✰✁ ✂✄☎ ❇♦✉♥❞❛r②✰❋ ❋ ❉✰✁ ✂✄ ☎ ❇♦✉♥❞❛r②✰❲❋ ❉✰✁ ✂✄☎ ❇♦✉♥❞❛r②✰❇❋ ❉✰✁ ✂✄☎ ❊◗ ❙✰ ❋ ❋ ❉✰✁ ✂✆✄☎ ❊◗ ❙✰❲❋ ❉✰✁ ✂✆✄☎ ❊◗ ❙✰❇❋ ❉✰✁ ✂✆✄ ☎ ❊◗❋ ✰ ❋ ❋ ❉✰✁ ✂✆✄☎ ❊◗❋ ✰❲❋ ❉✰✁ ✂✆✄☎ ❊◗❋ ✰❇❋ ❉✰✁ ✂✆✄ ☎ ❇♦✉♥❞❛r②✰❋ ❋ ❉✰✁ ✂✆✄☎ ❇♦✉♥❞❛r②✰❲❋ ❉✰✁ ✂✆✄☎ ❇♦✉♥❞❛r②✰❇❋ ❉✰✁ ✂✆✄☎ 圖 4.4: 當 Np = 2、α = 0.6 之任務集合可排程率 圖 4.4 所呈現的是當 Np = 2、α = 0.6 時,所有比較機制在不同 γ 設定值的可排程 率。相較於圖 4.3,由於 α 變大,使得更不容易排程,所以可排程率較低。在子任務 使用密度合併機制下,不同的截限時間設定方法對於可排程率有顯著的影響,實驗結 果的可辨識度高,EQF 最佳,而 Boundary 最差。當截限時間設定方法固定時,不同 (子) 任務分配機制間仍然有著些微的差異,整體而言,BFD 和 FFD 的實驗結果相近,

(36)

且兩者都優於 WFD。 ✵ ✵ ✳✷ ✵ ✳✹ ✵ ✳✻ ✵ ✳✽ ✶ ✵ ✵ ✳✶ ✵ ✳✷ ✵ ✳✸ ✵ ✳✹ ✵ ✳✺ ✵ ✳✻ ✵ ✳✼ ✵ ✳✽ ✵ ✳✾ ✶ ✁ ✂ ✄ ☎ ❊◗ ❙ ✰ ❋ ❋❉✰ ✁ ✂✄☎ ❊◗ ❙ ✰ ❲❋❉✰✁ ✂✄☎ ❊◗ ❙ ✰❇❋❉✰✁ ✂✄☎ ❊◗ ❋ ✰ ❋ ❋❉✰ ✁ ✂✄☎ ❊◗ ❋ ✰ ❲❋❉✰✁ ✂✄☎ ❊◗ ❋ ✰❇❋❉✰✁ ✂✄☎ ❇♦✉♥❞❛r② ✰❋ ❋❉✰✁ ✂✄ ☎ ❇♦✉♥❞❛r② ✰❲ ❋❉ ✰ ✁ ✂ ✄☎ ❇♦✉♥❞❛r② ✰❇❋❉ ✰ ✁ ✂ ✄☎ ❊◗ ❙ ✰ ❋ ❋❉✰ ✁ ✂✆✄☎ ❊◗ ❙ ✰ ❲❋❉✰✁ ✂✆✄☎ ❊◗ ❙ ✰❇❋❉✰✁ ✂✆✄ ☎ ❊◗ ❋ ✰ ❋ ❋❉✰ ✁ ✂✆✄☎ ❊◗ ❋ ✰ ❲❋❉✰✁ ✂✆✄☎ ❊◗ ❋ ✰❇❋❉✰✁ ✂✆✄ ☎ ❇♦✉♥❞❛r② ✰❋ ❋❉✰✁ ✂✆✄☎ ❇♦✉♥❞❛r② ✰❲ ❋❉ ✰ ✁ ✂✆✄☎ ❇♦✉♥❞❛r② ✰❇❋❉ ✰ ✁ ✂✆✄☎ 圖 4.5: 當 Np = 1、γ = 0.6 之任務集合可排程率 圖 4.5 所呈現的是當 Np = 1、γ = 0.6 時,所有比較機制在不同 α 設定值的可排程 率。當 α ≤ 0.5 時,所有比較的機制效果一樣,這是因為系統總使用率 ≤ 4.8,且可 平行化週期性任務只有一個,所有 (子) 任務的使用密度總和低,所以容易成功分配任 務至處理器,都有 1.0 的可排程率。當 α 逐漸變大後,明顯分成四個群組。由於子任 務使用密度合併所帶來的好處,所以無論是使用哪種截限時間設定方法或是 (子) 任務 分配機制,其可排程率幾乎都是一樣的,而且都比不合併的對照組優異很多,這是因 為子任合併可以讓處理器中的 (子) 任務總使用密度下降,讓測試任務集合更容易有可 排程之結果。在子任務使用密度合併之下,無論是使用哪種 (子) 任務分配機制或是截 限時間設定機制,其效果都一樣,原因是合併所帶來的好處遠遠超過 (子) 任務分配 機制或是截限時間設定機制。而如果子任務使用密度不合併,截限時間的設定對於可 排程率所造成的影響,優略順序為 Boundary、EQS、EQF,這是因為 Boundary 機制 造成同一任務的子任務使用密度和小於其它兩者。此外,如果無論是否採用子任務使 用密度合併機制,在固定截限時間設定方式時,(子) 任務分配機制優劣順序為 BFD、 FFD、WFD,因為 BFD 分配機制是把 (子) 任務分配給處理器中具有最小足夠能力 者。當 α≥ 0.9,所有比較機制都已無法排程,因為平行化成本過高,額外增加的執行 時間使得子任務之使用密度加大。 圖 4.6 所呈現的是當 Np = 2、γ = 0.6 時,所有比較機制在不同 α 設定值的可排程

(37)

✵ ✵✳✷ ✵✳✹ ✵✳✻ ✵✳✽ ✵ ✵✳✶ ✵✳✷ ✵✳✸ ✵✳✹ ✵✳✺ ✵✳✻ ✵✳✼ ✵✳✽ ✵✳✾ ✶ ✁ ✂ ✄ ☎ ❊◗ ❙✰❲❋❉✰✁ ✂✄☎ ❊◗ ❙✰❇❋❉✰✁ ✂✄☎ ❊◗❋ ✰ ❋❋❉✰✁ ✂✄☎ ❊◗❋ ✰❲❋❉✰✁ ✂✄☎ ❊◗❋ ✰❇❋❉✰✁ ✂✄☎ ❇♦ ✉♥❞ ❛r②✰ ❋ ❋ ❉✰ ✁ ✂✄☎ ❇♦ ✉♥❞ ❛r②✰❲❋❉✰✁ ✂✄☎ ❇♦ ✉♥❞ ❛r②✰❇❋ ❉✰ ✁ ✂✄☎ ❊◗ ❙✰ ❋❋❉✰✁ ✂✆✄☎ ❊◗ ❙✰❲❋❉✰✁ ✂✆✄☎ ❊◗ ❙✰❇❋❉✰✁ ✂✆✄☎ ❊◗❋ ✰ ❋❋❉✰✁ ✂✆✄☎ ❊◗❋ ✰❲❋❉✰✁ ✂✆✄☎ ❊◗❋ ✰❇❋❉✰✁ ✂✆✄☎ ❇♦ ✉♥❞ ❛r②✰ ❋ ❋ ❉✰ ✁ ✂✆✄☎ ❇♦ ✉♥❞ ❛r②✰❲❋❉✰✁ ✂✆✄☎ ❇♦ ✉♥❞ ❛r②✰❇❋ ❉✰ ✁ ✂✆✄☎ 圖 4.6: 當 Np = 2、γ = 0.6 之任務集合可排程率 率。和圖 4.5相比,雖然 Np 值較大,但與圖 4.5所呈現結果趨勢相似,兩者之間的差 異在於,由於可平行化任務個數 Np = 2,因此當 α 值逐漸變大時,額外增加的使用密 度比在 Np = 1 時更多,子任務使用密度不合併將不容易把 (子) 任務成功分配至處理 器,因此變得更不容易排程,所以可排程率大幅下降。然而,採用子任務使用密度合 併機制,無論是使用哪種截限時間設定方式或是 (子) 任務分配機制,在 α ≤ 0.6 時, 都有 1.0 的可排程率。在 α≥ 0.7 之後,可排程率逐漸遞減。EQF 結合子任務使用密 度合併機制的實驗效果比 Boundary 或是 EQS 結合 (子) 任務使用密度合併效果些微較 佳,因為 EQF 機制,造成同一任務之子任務的使用密度和最小。 ✵ ✵ ✳✷ ✵ ✳✹ ✵ ✳✻ ✵ ✳✽ ✶ ✵ ✵ ✳✶ ✵✳✷ ✵✳✸ ✵✳✹ ✵✳✺ ✵ ✳✻ ✵✳✼ ✵ ✳✽ ✵✳✾ ✶ ✁ ✂ ✄ ☎ ❊◗ ❙ ✰ ❋❋ ❉✰ ✁ ✂✄☎ ❊◗ ❙ ✰❲❋❉✰✁ ✂✄☎ ❊◗ ❙ ✰❇❋ ❉✰✁ ✂✄☎ ❊◗ ❋ ✰ ❋❋ ❉✰ ✁ ✂✄☎ ❊◗ ❋ ✰❲❋❉✰ ✁ ✂✄☎ ❊◗ ❋ ✰❇❋ ❉✰✁ ✂✄☎ ❇♦ ✉♥❞ ❛r②✰ ❋ ❋❉✰✁ ✂✄☎ ❇♦ ✉♥❞ ❛r②✰❲❋❉✰ ✁ ✂✄☎ ❇♦ ✉♥❞ ❛r②✰❇❋ ❉✰ ✁ ✂✄ ☎ ❊◗ ❙ ✰ ❋❋ ❉✰✁ ✂✆✄ ☎ ❊◗ ❙ ✰❲❋❉✰ ✁ ✂✆✄ ☎ ❊◗ ❙ ✰❇❋ ❉✰ ✁ ✂✆✄ ☎ ❊◗ ❋ ✰ ❋❋ ❉✰✁ ✂✆✄ ☎ ❊◗ ❋ ✰❲❋❉✰✁ ✂✆✄ ☎ ❊◗ ❋ ✰❇❋ ❉✰ ✁ ✂✆✄ ☎ ❇♦ ✉♥❞ ❛r②✰ ❋ ❋❉✰ ✁ ✂✆✄☎ ❇♦ ✉♥❞ ❛r②✰❲❋❉✰✁ ✂✆✄☎ ❇♦ ✉♥❞ ❛r②✰❇❋ ❉✰ ✁ ✂✆✄☎ 圖 4.7: 當 Np = 1、γ = 0.7 之任務集合可排程率

(38)

圖 4.7 所呈現的是當 Np = 1、γ = 0.7 時,所有比較機制在不同 α 設定值的可排程 率。圖 4.5中的系統總負載為 4.8,圖 4.7中 γ 值較大,系統總負載為 5.6 ,總負載較 高。對照圖 4.6與 4.7,當 α 值相同時,由於圖 4.7中的總負載較高,因此可以發現將 造成每種比較機制的可排程率都下降,但趨勢依舊相同。 ✵ ✵✳✷ ✵✳✹ ✵✳✻ ✵✳✽ ✶ ✵ ✵✳✶ ✵✳✷ ✵✳✸ ✵✳✹ ✵✳✺ ✵✳✻ ✵✳✼ ✵✳ ✽ ✵✳✾ ✶ ✁ ✂ ✄ ☎ ❊◗ ❙ ✰ ❋ ❋❉✰ ✁ ✂✄☎ ❊◗ ❙ ✰❲❋❉✰ ✁ ✂ ✄☎ ❊◗ ❙ ✰ ❇❋❉✰ ✁ ✂ ✄☎ ❊◗❋✰ ❋ ❋❉✰ ✁ ✂✄☎ ❊◗❋✰❲❋❉✰ ✁ ✂ ✄☎ ❊◗❋✰ ❇❋❉✰ ✁ ✂ ✄☎ ❇♦ ✉♥❞ ❛r②✰ ❋ ❋❉✰ ✁ ✂ ✄☎ ❇♦ ✉♥❞ ❛r②✰❲❋❉✰ ✁ ✂ ✄☎ ❇♦ ✉♥❞ ❛r②✰ ❇❋❉✰ ✁ ✂ ✄☎ ❊◗ ❙ ✰ ❋ ❋❉✰ ✁ ✂✆✄☎ ❊◗ ❙ ✰❲❋❉✰ ✁ ✂✆✄☎ ❊◗ ❙ ✰ ❇❋❉✰ ✁ ✂✆✄☎ ❊◗❋✰ ❋ ❋❉✰ ✁ ✂✆✄☎ ❊◗❋✰❲❋❉✰ ✁ ✂✆✄☎ ❊◗❋✰ ❇❋❉✰ ✁ ✂✆✄☎ ❇♦ ✉♥❞ ❛r②✰ ❋ ❋❉✰ ✁ ✂✆✄☎ ❇♦ ✉♥❞ ❛r②✰❲❋❉✰ ✁ ✂✆✄☎ ❇♦ ✉♥❞ ❛r②✰ ❇❋❉✰ ✁ ✂✆✄☎ 圖 4.8: 當 Np = 2、γ = 0.7 之任務集合可排程率 圖 4.8 所呈現的是當 Np = 2、γ = 0.7 時,所有比較機制在不同 α 設定值的可排程 率。相較於圖 4.7,由於可平行化週期性任務有兩個,Np 較大,所以平行化任務的使 用密度總和較高,將造成可排程率下降。與圖 4.6比較,由於 γ 較大,所以系統任務總 使用率較高,將使得可排程率下降。而和圖 4.5相較之下,由於 Np 與 γ 都較大,因此 在相同 α 值時,可排程率低很多。當 α 逐漸變大後,由於子任務使用密度合併所帶來 的好處,所以無論是使用哪種截限時間設定方法或是 (子) 任務分配機制,都比不合併 的對照組優異很多。而 EQF 比 EQS 與 Boundary 佳,其原因是 EQF 會讓三個片段的 所有子任務的使用密度相同,不同片段子任務使用密度合併時,額外增加的使用密度 最小,在執行期間不會有處理器能力的浪費。如果子任務使用密度不合併,截限時間 設定方法 Boundary 與 EQS 比 EQF 效果佳,EQF 在 α = 0 時,三種 (子) 任務分配

方式的可排程率已經低於 0.1,原因是 Np 與 γ 較大,造成的子任務使用密度與任務使

用率總和高於 EQS 與 Boundary 許多。

圖 4.9 所呈現的是當 γ = 0.7、α = 0.5 時,所有比較機制在不同 Np 設定值的可排

數據

表 3.1: 平行化例子可平行任務 任務 週期 第一片段 平行度 第二片段 第三片段 執行時間長度 執行時間長度 執行時間長度 τ 1 10 1 1 1429 1 3 7 4 6 表 3.2: 平行化例子不可平行任務 任務 週期 執行時間 τ 2 10 1 τ 3 10 1 τ 4 10 2 τ 5 10 2 τ 6 10 2 用密度不合併與合併對於任務可否成功分配到處理器所帶來的影響。由於當 τ i 的平行 度 3 時,才能滿足 e i,1 + e i,2,3 + e i,3 ≤ P 1 ,因此 EQS、
圖 4.7 所呈現的是當 N p = 1、γ = 0.7 時,所有比較機制在不同 α 設定值的可排程 率。圖 4.5中的系統總負載為 4.8,圖 4.7中 γ 值較大,系統總負載為 5.6 ,總負載較 高。對照圖 4.6與 4.7,當 α 值相同時,由於圖 4.7中的總負載較高,因此可以發現將 造成每種比較機制的可排程率都下降,但趨勢依舊相同。 ✵✵✳✷✵✳✹✵✳✻✵✳✽✶ ✵ ✵✳✶ ✵✳✷ ✵✳✸ ✵✳✹ ✵✳✺ ✵✳✻ ✵✳✼ ✵✳ ✽ ✵✳✾ ✶✁✂✄☎ ❊◗ ❙ ✰ ❋ ❋❉✰ ✁ ✂✄☎❊◗ ❙

參考文獻

相關文件

有關 PHP 的敘述何者有誤?①可在 Apache、MS IIS 等 Web 伺服 器執行的 Script②只能在 Linux 或 Unix 作業系統上執行,無法於 Windows 或 Mac

回答: 1、臨櫃講習時雇主或代講習人員,需至公立就業服務機構參加。參 加講習人員可於聘前講習系統上先行預約,於預約時間至公立就

各縣市政府於提報自評資料時,下列四個考核項目權重為就業服務或就 業服務臺績效執行佔

各縣市政府於提報自評資料時,下列四個考核項目權重為就業服務或就 業服務臺績效執行佔

FPPA 是 Filed Programmable Processor Array 的縮寫,簡 單的說:它就是一個可以平行處理的多核心單晶片微控器。與一般 微控器如 8051、pic,…

(A)因為用 Terminal Services 可以不用安裝 ERP 的程式在 Client 端上可以減少 MIS 維護系 統的時間(B)沒有防毒軟體 (C)建置防火牆的系統 (D) APP-Server 與 DB

大略來說 , 以上兩者決定 dynamic programming a lgorithm 的執行時間. ( 之前說的 Subproblem graphs

大略來說 , 以上兩者決定 dynamic programming a lgorithm 的執行時間.. ( 之前說的 Subproblem graphs