23
在在 在在在在在在在在在在在在在在在在在在在在 1 Dept. of Electrical Engineering National Cheng Kung University Tainan, Taiwan, R.O.C 2012.11.19

在硬體中的作業系統及在 眾核 晶片中的動態資源管理

Embed Size (px)

DESCRIPTION

在硬體中的作業系統及在 眾核 晶片中的動態資源管理. 黃 翔 Dept. of Electrical Engineering National Cheng Kung University Tainan, Taiwan, R.O.C 2012.11.19. 摘要. 本文探索在 OS 問題上的討論支援當實行並行控制時設計給多核或眾核晶片處理器的指令集層級。 這裡介紹了 SVP 模型以及它在 DRISC 處理器中的成果。 本文的議題包含了工作排程、動態資源管理、記憶體保護與安全防護。 結論是在一個處理器的指令集中去作並行控制的成果是相當分裂的 (disrupt) 。. - PowerPoint PPT Presentation

Citation preview

Page 1: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

1

在硬體中的作業系統及在眾核晶片中的動態資源管理

黃 翔 Dept. of Electrical Engineering

National Cheng Kung University

Tainan, Taiwan, R.O.C

2012.11.19

Page 2: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

2

摘要本文探索在 OS 問題上的討論支援當實行並行控制時設計

給多核或眾核晶片處理器的指令集層級。這裡介紹了 SVP 模型以及它在 DRISC 處理器中的成果。

本文的議題包含了工作排程、動態資源管理、記憶體保護與安全防護。

結論是在一個處理器的指令集中去作並行控制的成果是相當分裂的 (disrupt) 。

Page 3: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

3

引言 - 技術與架構我們需要的是一個有系統的方法,它可以捕獲並行性作為

一個抽象過程 ( 程式設計 ) 以及在它的處理器成果上能表現出映射與排程性 ( 並行性工程 ) 。

並行性需要去確認、捕獲、分配、同步以及規劃。這是一個循環的問題,由於當需要再程式化時,底層的參數就要

改變 ( 例如 : 處理器的數量、記憶體組織的形式、通訊的延遲率及並行性等等 ) 。

Page 4: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

4

引言 - 可程式性針對這項工作的協會在這提出了在嶄新計算機架構上的研

究。主要的觀念是從通訊中分離指令的執行 ( 包含從記憶體存取資

料 ) ,因為這能從必須靜態的規劃每一個運算中去減輕程式設計者或是編譯器的工作。

在 1996 年中所提出的一個嶄新的處理器架構 DRISC 可以實現這個目標。DRISC 的第一個模型相當受限,但是已經從一個處理器的

模型到一個基於微執行緒的抽象程式化模型中精製 (refine)出來。這個模型已經在 AETHER 計畫中被採用作為 SANE 虛擬處理器

(SVP) , SANE 從 Self-Adaptive Network Entity 取得。SVP 模型標註議題像是並行程式的安全構成、死鎖的避免

以及使通訊與局部性曝露在一個抽象的方法中去由編譯器所管理。在限制通訊部分上使得問題變得靜態,甚至是在動態地排程並行

性的時候。

Page 5: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

5

引言 - 分裂 vs. 漸進主義實現在一個指令集層級上的計算模型是分裂的,並且在系

統層上呈現出許多難處。其中一個最大的議題是如何程式化眾核系統。

並行性選取,是一個相當好的研究範圍,並且,語言的編譯像是 C 到 SVP 逐漸成為一個事實,它抽象了並行性且針對有效的分析提供了一個在局部的管理(handle) 。

Page 6: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

6

在處理器 ISA 中的並行性 -微執行緒或是 SVP 模型 -SVP 中的組成 (1/4)

SVP 模型藉由捕捉在動態的並行創造 (creation) 上的反映來擴展微執行緒的模型。SVP 捕捉並行性遍及在計算機系統中的所有級別,即 OS 、可程

式化的模型、執行模式下的微結構模型。藉由一個 create 動作來構成。

有鑑於在序向模型中我們有多個迴圈及多個函式呼叫,在 SVP 中它們藉由創造一個或是多個使用了一個這個動作的執行緒來完成。

這些執行緒與創造的執行緒一起並行執行並且會捕捉及重視在他們之間的資料相依。

這個在 SVP 中的構成是並行且動態的。在模型中的一個程式可以看成是一個動態展開的並行樹,如圖

1 。

Page 7: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

7

在處理器 ISA 中的並行性 -微執行緒或是 SVP 模型 -SVP 中的組成 (2/4)

Fig. 1. 在 SVP 中,多個程式的並行構成,節點代表執行緒,分支代表並行構成。

Page 8: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

8

在處理器 ISA 中的並行性 -微執行緒或是 SVP 模型 -SVP 中的組成 (3/4)

Create 動作建立在一個單執行緒的定義上,並且它的事件被說明在圖二中。創造的執行緒 A 執行一個 create 動作,這個動作非同步的創造一

個有次序的執行緒集合, B0 到 Bn ,並且受到資源的限制,即不是所有的執行緒會同時創造。

在創造的執行緒 A 中的第二個事件是當所有在家族中的執行緒已經終止,以及它們已經更新的分散式記憶體被明確定義。

這藉由一個 sync 動作來捕獲。執行緒 A 與任何它所創造的家族並行且非同步的執行,但是 A 在

使用任何家族在記憶體中產生的結果之前,必須等待與它所創造的家族相關聯的多個 sync 的動作。

未受限的家族代表著動態的迴圈將執行一個 break 動作,它會終止在任何被創造的執行緒中。

Page 9: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

9

在處理器 ISA 中的並行性 -微執行緒或是 SVP 模型 -SVP 中的組成 (4/4)

Fig. 2. 數個事件的說明,他們發生在創造一個家族的多個執行緒中, 其中波浪線代表多個指令的一個執行緒的順序。

Page 10: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

10

在處理器 ISA 中的並行性 -微執行緒或是 SVP 模型 -SVP 中的通訊 (1/2)

執行緒是等待的 (blocking) 且參與在使用一個等待讀取的同步通訊中。這個在執行緒之間的細粒度通訊會謹慎地限制,以致於通訊被局

部化且會曝露 (expose) 給編譯器。通訊被限制在一個家族的索引順序中接續的執行緒之間。

創造的執行緒 A ,在圖二中,可能只寫入資料到家族中第一個被創造的執行緒 B0 ,這執行緒將會去等待在第一個需要那筆資料的動作上。

執行緒 B0 可以依次寫入到下一個在索引順序中的執行緒等等,以至於每一個執行緒寫入到在索引順序中的下一個直到我們到達 Bn 。

Page 11: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

11

在處理器 ISA 中的並行性 -微執行緒或是 SVP 模型 -SVP 中的通訊 (2/2)

在一個多核的 SVP 模型的實現中,最後一個通訊的形式是壓縮在 create 中的實現,這是發生在一個計算和多個它所用的處理器之間的一個結合。create 確定性地 (deterministically) 分配多個執行緒到一組處理器在

一個 place 上。兩個特別的 place 被定義在 SVP 中,

Default place ,在一個 DRISC 眾核晶片中,它分配多個執行緒到相同的處理器集合,作為創造的家族執行緒,然後

Local place ,它放置所有被創造在相同處理器上的執行緒作為創造的執行緒。最後 SVP 支援 named place ,它由 place伺服器設置,隨後會使用

在一個 create 的動作中,它分派家族執行緒執行到一組新的處理器。named place透過一個資源管理系統的呼叫動態地設置,即在一個使用這分派機

制的多核 DRISC 處理器中的處理器 (和記憶體 ) 資源的管理。

Page 12: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

12

在處理器 ISA 中的並行性 -微執行緒或是 SVP 模型 - 並行性的反映 (1/3)

為了在 SVP 模型中提供一個並行構成的終止,對於在反映( 觀察及控制 ) 上需要一些形式的並行管理。這必須去實現從計算到資源的動態結合。

create, sync和 break 動作已經被描述。除了這些,另外再加入兩個動作到執行緒的家族中,命名為 kill和 squeeze 。kill終止一個遺失它的狀態的家族執行緒,以及 squeeze 藉由確認及捕獲一個中間的狀態來終止一個家族,以至於家族可以從那個點去重新執行在不同的資源上。

這兩個動作執行在一個獨立且非同步的控制執行緒,它監控一些計算的方面或著它的環境 (見圖 3) 。家族在 SVP 中需要確認這些動作,並且對於這我們定義一個家族的確認器。

Page 13: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

13

在處理器 ISA 中的並行性 -微執行緒或是 SVP 模型 - 並行性的反映 (2/3)

Fig. 3. 使用了 named 多個家族的多個執行緒以及並行性控制的反映。

Page 14: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

14

在處理器 ISA 中的並行性 -微執行緒或是 SVP 模型 - 並行性的反映 (3/3)

管理非同步的並行也需要觀察到這些動作。舉例 : root 在圖 3 中需要去知道 work 是否由 control 被 squeeze 或

者它是否執行到結束,以至於如果需要它時可以從它的 squeeze狀態重新創造工作來完成。

在 SVP 中,這藉由定義一個回傳碼來完成,並且有時候一個回傳的值會經由 sync 動作給創造的執行緒。

回傳值確認家族是如何終止 (normal, break, kill, squeeze) 以及一個回傳的值由 break和 squeeze 設定。

在前者,接替在 break 執行後的執行緒設置”回傳”值 ( 執行緒為這競爭 ) 以及在 squeeze ,它捕捉一個在索引順序中獨特的點,這順序的計算會適當的終止。

在一個傳統的處理器中,這些動作將由使用者在 OS 中控制,但在一個 DRISC 處理器中,這些動作被實現在它的ISA 中作為多個指令,這表示安全的議題必須也處理在一個 ISA 中的指令層級之上。

Page 15: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

15

針對 Microgrids 基於 SVP 的 OS-一般原則

一個 OS 去支援軟體在非同步並行系統中的方法 :核心將正常支援工作的提交 /終止、同步和通訊,並且它可能也支

援多任務的排程以提供在通訊及同步中長潛伏期的容忍。我們考慮實現在一個 DRISC 處理器的 SVP 模型。

SVP 的實現也提供給任務的排程,在這模型中一個排程( 或是我們所稱作的 unit of work) 是一個 create 動作的結果。

在 SVP 的 DRISC 實現中,潛伏期容忍在指令層級,由於等待在一個通訊或記憶體讀取上的任何指令將阻塞 (block)並導致它的執行緒中止直到資料是可用的。

公平性建立在指令集中,因為沒有執行緒可以獨佔它正在執行的處理器。

在一個實現 SVP 的 DRISC 處理器中,工作優先權的概念可以藉由映射程式碼到一個數量的處理器上來完成在一個Microgrid 中。

Page 16: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

16

針對 Microgrids 基於 SVP 的 OS-資源管理 (1/4)

一個 SVP 的創造採取它的主要參數當作一個執行緒定義。家族的範圍定義三個參數為一組 {啟動,極限,步驟 } ,這定義了

執行緒的數量以及每一個索引的值,以及最後,一個區塊的大小限制了分配至一個處理器的執行緒數量在任意的一個時間上。

此外, create 有一個參數,它回傳一個家族的確認器去確認它以及一個 place定義的家族將在哪執行。

於 μTC 語言的例子,創建一個家族的 100 個執行緒 (index=0…99 by1) 在 default place 與不超過每個處理器 10個執行緒一起。

family f1; ... create(f1; ; ; 0; 99; 1;10) thread_def(...);

為了去討論資源管理,相互排斥的 SVP 的實現必須去定義。在 SVP 中,互斥的實現遍及在多個位置。一個互斥位元在一個

place 的變數中,當設置時,保證不超過一個工作單位在一個時間上可以創造在 exclusive 的位置。

Page 17: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

17

針對 Microgrids 基於 SVP 的 OS-資源管理 (2/4)

我們假設一個系統環境位置 (SEP) ,是一個互斥的位置,這 place 處理器使用的模型被維持與更新透過來自並行的執行緒的串接請求。

接下來的例子說明了一個執行緒如何取得一個新的 place並且分派一個工作單位到那 place 。

family f1, f2; place new_place; int num_proc=8;

create (f1; SEP;; 0; 0;1;1) SEP_allocate(new_place, num_proc);

sync (f1);

if (num_proc >0 ){

create (f2; new_place; ; 0; 99; 1; 10) thread_def(...);

...

sync (f2);

create (f1; SEP; ; 0; 0;1;1) SEP_release(new_place);

}

else ...;

Page 18: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

18

針對 Microgrids 基於 SVP 的 OS-資源管理 (3/4)

以下我們說明對於任意的執行緒從一個最初的 SEP 取得的pool 去設置一個新的 SEP 來配置資源是如何簡單。

在這例子中,創造一個新的 SEP 去控制處理器的配置在一些程式的子樹中。去做這另外的非計算上的類型,使用了 pool ,以及一個請求被產生給使用了 SEP_partition 的處理器的一個 pool 配置,這配置了一組未組態的處理器。

一個新的 SEP之後使用這 pool 去初始化。

Page 19: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

19

針對 Microgrids 基於 SVP 的 OS-資源管理 (4/4)

family f1, f2; place new_place; pool new_pool; int num_proc=64;

/*allocate pool of processors*/

create (f1; SEP;; 0;0;1;1) SEP_partition(new_pool, num_proc);

sync (f1);

if (num_proc >0 ){

/*initialise new SEP using that pool and redefine the SEP*/

create (f2;local;0;0; 1;1) SEP_init(new_place, new_pool);

SEP = new_place;

...

num_proc=8;

create (f1; SEP; ; 0; 0) SEP_allocate_local(new_place, num_proc);

sync (f1);

if (num_proc >0 ){

create (f2; new_place; ; 0; 99; 1; 10) thread_def(...);

...

sync (f2);

create (f1; SEP; ; 0; 0;1;1) SEP_release(new_place);

}

else ...;

}

Page 20: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

20

針對 Microgrids 基於 SVP 的 OS-記憶體保護 (1/2)

要使得並行系統成為主流,一些保護的形式是極重要的,因為我們將確定有多位使用者並行地執行工作在相同的晶片上,甚至他們可能執行在不同的處理器上。在 SVP 中共用的記憶體模型將仍然允許他們去相互干涉。

一個給虛擬記憶體以及符合位址的轉譯的替代方法是一個單位址空間的概念。一個單位址空間 OS(SASOS) 管理一個全系統的位址空間。這方法預測在一個事實上,位址搜索 (addressing) 及記憶體保護是兩個不同的議題,他們可以藉由分開的機制去解決。

在一個 SASOS 中,記憶體保護會從位址搜索中分離。在許多的 SASOS 系統中,程序運行在一個保護區域中 (PD) 。因此,即使一個程序能夠尋址任何的資料項目遍及整個系統, OS也能夠去檢查是否一個記憶體的存取應該被允許,並且在一個無效存取的事件中,豎起一個保護的例外。

這方法的優點是使得安全性容易達成在程序間資料的共用,而這些程序互相不完全的信任。

Page 21: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

21

針對 Microgrids 基於 SVP 的 OS-記憶體保護 (2/2)

在 SVP 的 DRISC 成果中,我們研究 SASOS 方法。我們定義了記憶體 islands 作為使用了 base-rage pairs 的記憶體鄰近

的範圍,它們的存取權已經被設定 ( 例如 :讀、讀 /寫、摧毀等等 ) 。

一個記憶體保護 domain之後定義為一個 islands 的清單,一個工作單位被允許存取的 islands 。

每一個家族關聯至一個保護區域,並且這個資訊使用在任意的指令上,這些在錯失了 L1快取後會去存取保護的表單。

我們也使用一個小的快取在這表單上類似於一個傳統的 TLB ,它快取至保護表單上的項目。

Page 22: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

22

針對 Microgrids 基於 SVP 的 OS-安全性

在 SVP 中,我們所採取的方法建立在一個能力的概念上。一個能力可以比作一把鑰匙,它必須被提出以為了獲得存取一個

主要的目標、伺服器或是設備。當一個家族被創造,創造了這家族的執行緒回傳一個家族

的確認器, Fid 。這個確認器必須呈現兩個功能。第一個是去確認在它的情境中的家族。

這歸併至一個處理器的確認器中, Pid ,並且把那處理器的家族表編進索引中,FTi 。因此 Fid 包含變數值組 :{Pid, FTi} 。

第二個在 Fid 上需要的是提供一把鑰匙去分辨在相同的處理器上相同家族表的項目的不同情況。

在完成的 kill和 squeeze 動作中,我們標記需要再使用的家族表單的項目,因為 Fti 並非一直是唯一的。

由於這些動作是非同步的,一些額外的確認需要去防護這些運算。所以在執行一個 create 動作時,硬體隨機產生一把鑰匙, Cap ,儲存著其他在家族表中的資訊。 Fid 現在變成變數值組 {Pid, FTi, Cap}

一個執行緒必須呈現完整的確認器,他們從哪一個 Cap 被選取以及與儲存在家族表中的項目相對應。

Page 23: 在硬體中的作業系統及在 眾核 晶片中的動態資源管理

23

結論在本文中,我們已經歸納出我們所用的方法在發展的

DRISC 微處理器中,它們支援了並行控制指令在它的 ISA層級上。這些處理器被明確的設計去提供一個一致性的硬體基礎架構給多

個甚至眾核晶片。由於我們繼續進行這些處理器的實現,我們已感到意外在

於這些方法已經是如此的分裂了。