- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE
PAGE 7
Abstract
在本文中,我們提出Thread Flux (TFlux),一個完整的系統,支援資料驅動多執行緒(Data-Driven Multithreading)(DDM)的執行模型。TFlux虛擬化底層系統的任何細節,因此可以提供與架構無關的相同程式撰寫模型。為了實現這一目標,TFlux在有runtime support建立在商品作業系統上。執行緒的排程(Scheduling of Threads)是由執行緒同步單元(Thread Synchronization Unit)(TSU)來執行,他可以使用硬體或軟體模組來實現。此外,TFlux包含一個預處理器(preprocessor),以及一組簡單的雜指令(pragma directives),允許使用者可以很容易地開發DDM程式。然後預處理器會自動產生TFlux的程式碼,其可以被任何商品編譯器編譯,因此得以自動生成任何ISA的程式碼。
1 Introduction
資料驅動多執行緒(DDM)[5]是一個平行執行模型,起源於動態資料流(Dynamic Dataflow)[1]的計算模型。利用動態資料流的技術以其最大可用的並行性做為優勢。DDM遵循資料流的執行模型,即指令會被排程直到它們的輸入資料皆被產生後才執行。然而在指令級層級應用資料流排程需要大量的硬體資源[4],DDM克服了這一限制,藉由應用在指令序列層級的策略,命名為資料驅動執行緒(Data-Driven Threads)(DThreads)。DThread指令如同控制流的方式被執行,利用任何執行處理器所提供的優化。
除了潛在的效能優勢外,DDM模型還提供了一個可編程的優點,對於大多數程式來說,它比較容易識別DThreads的程式碼和其中的資料相依。DDM模型只需要DThread的程式碼和其相依性,這能夠隱含地處理資料傳輸和同步。
在這項研究中,我們提出了TFlux,執行緒TFlux系統。TFlux最相關的貢獻是提供了使用者層級的DDM模型,並同時提供了一個底層系統的虛擬化,因此不同硬體配置可以支援DDM執行模型,這對於程式設計師而言是透明的。此外,TFlux是一個完整的系統實現,包含硬體到程式撰寫工具。
為了實現這一目標,TFlux針對不同層次進行虛擬化。第一,TFlux的DThread排程單元TSU是通過函式庫的高階呼叫流程來存取。這間接允許TSU單元可以用硬體或軟體來實現。第二,TFlux的運行時系統是在使用者層級實現,因此允許任何應用程序可以在商品作業系統上運行。這允許系統可以同時執行DDM和非DDM的應用程式。第三,DThreads程式碼和識別DThreads的相依性是透過擴充高階程式碼的雜指令。
TFlux提供了一個預處理器,透過添加適當的指令到一般的C程式碼,來使應用程序可以很容易地移植到TFlux上。預處理器所生成的程式碼,包含在運行時系統的所有必要呼叫。由於這些呼叫是由高層級的商品編譯器來產生程式碼。因此,它有可能產生的任何ISA的二進制檔案。
2 Data-Driven Multithreading
資料驅動多執行緒是一個執行模型,透過類似資料流的排程,來實現高效率的並行執行。DDM程式是由非重疊且任意尺寸的程式碼(稱為資料驅動執行緒DThreads)所組成。DThreads之間存在著生產者/消費者的關係。在DDM程式中,DThreads間的相依關係是由同步圖(Synchronization Graph)來表示,其節點對應於該程式的DThreads,而邊代表在它們之間的資料相依。
DThread的執行,是以資料驅動的方式動態地在運行時進行排程,即只有當所有生產者皆完成其執行時。DThread內的指令執行,是藉由CPU以控制流的順序來執行,和利用運行時CPU或靜態編譯器的任何優化方式。資料驅動的DThread排程是經由執行緒同步單元(TSU)的協助來實現。在任何DThread執行之前,程式的同步圖會被加載到TSU。對於每個DThread,TSU管理其消費者DThreads的列表和其Ready Count,一個用來指示其生產者DThreads的數值。當DThread完成其執行,他會通知TSU,TSU會遞減其消費者的Ready Count數值。當DThread的Ready Count到達零時,將被視為可執行。當一個CPU變為可用時,DThread的執行將會被初始化。當CPU尋找下一個DThread執行時,它會查詢TSU,TSU會回傳其中之一的就緒DThreads標識符。如果沒有就緒的DThread存在,TSU將強制使CPU等待。
為了允許有著任意大小同步圖的程式,而不需要相等大小的TSU,DDM程式可以分割成DDM區塊(DDM Blocks)。每個DDM區塊包
文档评论(0)