A分項計畫:多核心系統軟體研發與設計

子項計畫1:多核心編譯器工具組

[1] 適用多媒體應用之SIMD函式庫
本計畫以多顆MPU搭配多顆DSP建構出嵌入式異質多核心平台。DSP擅長於資料密集的運算(Data Intensive Computation)。DSP通常透過SIMD(Single Instruction Multiple Data)指令及多叢集運算(Multiple Clusters)來增進對於多筆不具有資料相依性(Data dependence)的處理能力。本子項將為本多核心平台上的DSP處理器研發一套適用於多媒體應用的SIMD API,其內容將劃分為二部分:低階及高階SIMD API。首先,低階SIMD API的層級將對應到一至多道的DSP硬體指令,此層級的SIMD API將納入DSP編譯器做為編譯器內建函式(Intrinsic Functions),使用者在程式中使用到此層級的SIMD API,編譯器將會產生相對應的SIMD指令並將其導入編譯器最佳化的流程以得到編譯器既有的最佳化效果。然而低階的SIMD API仍無法使用到DSP多個叢集運算的特性,故我們將檢視多個多媒體應用,如H.264及Stereo Vision,以找出多媒體應用中普遍的SIMD特性,以設計一套高階SIMD API並利用DSP的SIMD指令及多個叢集來進行實作,以發揮DSP的最大效能。

[2] 多核心上之C++編譯器雛型
C++語言提供許多彈性,包含有與C幾乎相容的語法,並提供物件導向的多種語法。本子項的目標乃是完成適用於 PACDSP 上的 C++ 編譯器原型,提供基本的物件相關語法,包含類別(Class)、類別的繼承(Inheritance)、公開繼承(Public Inheritance)、保護繼承(Protected Inheritance)、私有繼承(Private Inheritance)、多型(Polymorphism);除此之外,另一個C++語言中強大的功能:樣版(Template)的支援亦將於本子項中一併完成。本子項的目標在完成基礎的C++編譯器架構,以提供第二年度在函式庫建構上一個穩定的編譯器基礎。

[3] 多核心整合開發環境設計與規劃
嵌入式系統處理器目前已經邁入多核心的時代,各式各樣的多核心應用軟體也會因應而生。然而,面對複雜的多核心應用軟體,過去較為單純的除錯器(Debugger)已經不敷使用。大量的硬體資訊與複雜的同步問題需要更強大的除錯器來支援,而部分的除錯功能則需要硬體的協助才能夠達成。本計畫的目的在於針對PAC Duo的架構以及多核心程式可能遭遇的問題,提出新的軟硬體架構與需求,使得GDB可以適用於新一代的多核心架構的除錯。其中的技術包括有: 多核心系統支援中斷點以及支援監視點所需的軟硬體架構,並在第一年度的計畫中規劃未來IDE整個的介面與操作。

 

子項計畫2:多核心架構上之元件式多媒體框架與RMS應用

[1] 多核心架構上之元件式多媒體框架設計之規劃與完整報告
本子項提出之多核心多媒體框架將分成兩層,上層將處理有關Media 相關之處理(如編解碼),下層則是負責處理硬體平台相關之運作(如分派computation-sensitive之行程到加速器或是DSP上面執行等)。因此,我們將藉由參考OpenMAX之架構,規劃出此多媒體框架的整體設計架構,以達到完成支援多核心系統的多媒體函式庫。

[2] 發展RMS應用系統並分析評估其計算效能
電腦若是可以對大量的資料建立數學模型,就可以在處理資料的同時,了解這些資料是什麼與其意義,這包含了三項步驟,第一是辨識(Recognition):辨識是機器學習的其中一種,在這裡代表電腦必須能夠檢測資料與影像,並且基於電腦所”看到”的建立一個數學模型。辨識代表著”What is”,他確認一群資料的組成並且建立成一個模型。當電腦對此資料建立模型之後,就可以在巨量的資料中尋找我們有興趣的事件或物件,這就是所謂的探掘(Mining),最簡單的方法便從網路或收集好的資料庫中搜尋相似的模型。因此探掘從一群資料中判斷是否屬於此模型,亦即”Is it”。合成(Synthesis)是進行”what if”的動作。若一個模型不存在的時候,電腦應該要能夠從大量的資料中建立出模型。RMS (Recognition, Mining and Synthesis)的應用涵蓋影像辨識、資料探掘、影像合成等技術,因為這類的應用所需要的電腦運算能力都很大,要在一般的嵌入式平台上實現並正常執行運作是一很大的挑戰。因此我們在此計畫中首先將在PC上發展一個以人臉影像為主的RMS系統,此系統將即時從影像中偵測人臉、辨識人臉表情並自動產生漫畫式人臉誇張化合成效果。這一個系統預計將包含人臉偵測、人臉表情辨識及人臉合成等部分,然後我們將分析與評估此系統之各部分在PC上執行的運算效能,並在之後的年度將其移植到嵌入式平台實現。

[3] 多核心嵌入式系統上人臉偵測元件之發展與實作
在此計畫中,我們將發展適合在多核心嵌入式系統上執行的高效能人臉偵測元件。人臉偵測長久以來一直都是一個困難、熱門且挑戰性頗高的研究課題,其中重要的人臉特徵,可以分為兩類,一類為不變的,如眼睛、鼻子、嘴巴、唇、瞳孔、耳朵;另一類為可能會變動的,如鬍鬚、眼鏡、人臉的表情等、另外影像的週遭條件亦會影響人臉偵測的正確度,如人臉周遭亮度的特性、對比度、影像的解析度等。過去已發展的人臉偵測演算法相當多,但大都是在PC的環境下實現,在嵌入式平台的環境下要達到及時的運算其限制會比在PC上嚴苛許多。在此計畫中,我們會以多核心嵌入式系統為主要考量,發展出適合在此嵌入式多核心平台架構下的人臉偵測演算法,並在我們的平台上實作,以期能達到最佳的運算效能與偵測準確度,希望可以達到即時的人臉影像偵測。

 

子項計畫3:多核心程式開發模型

[1] 多核心程式設計開發模型之規格
在第一年的上半年的計畫中,我們將針對多核心處理器架構所展現之平行處理環境,規劃一多核心程式開發模型。此模型將提供一在語言上之支援,並以不擴充既有之程式語言為原則,提出一可應用於各類多核心平台上之程式設計模型。而在此模型之中,除了提供一易於撰寫並維護之描述方法之外,針對多核心處理器架構上的網路拓樸,設計一有效之處理器之間的溝通機制,亦將會是另外一項重要之議題。我們預期此一設計模組將能完整實做數個多媒體應用程式(如H.264, MP3)之解碼器,並能通過NAS Benchmark並在四核心的平台上相對於無此設計開發之設計得到效能15%之提昇。

[2] 多核心程式設計開發模型之原型開發
在第一年的下半年的計畫中,我們將完成多核心程式開發模型之原型開發,包含:高階語言描述、執行期之系統支援以及搭配其他設計模型之介面設計。我們將針對處理器架構以及系統軟體(如作業系統、編譯器等)之支援作分析並針對不同應用程式提出一最佳化之執行期函式庫以支援此一原型模型之實做。此項目將整合作業系統子項之系統規劃,以及編譯器子項之最佳化技術以提供一高效能之程式開發模型。


子項計畫4:搭載異質多處理器核心之可程式化系統晶片平台

[1] Multi-core simulation environment (on ESL)
本計畫將在電子系統層級(electronic system-level;ESL)建構虛擬的(virtual)異質多處理器核心作業環境,並以其作為本研究的實驗平台。為避免投資重複的研究資源,此平台將會兼顧模擬效能與設計彈性,初步規畫可容納1~2 MPU、1~8 DSP,各處理器可設定獨立操作頻率,可設定不同的多處理器連結網路(包括基本的連結與可設定的arbitration),此虛擬平台可進行基本的軟體界面效能評估(如post或pend mailbox、semaphore或lock;dequeue、enqueue empty queue等)。

[2] 連結網路模擬器
單晶片多核心系統架構中主要包含數個處理器核心、記憶體模組和輸入輸出單元等元件。並且藉由一個晶片上的連結網路將上述各元件相互連結起來;通常連結網路的設計往往因應不同的應用需求或限制,所使用的架構也迥然不同。連結網路有許多不同的拓撲, 每種均有其特色及特性。 例如IBM的cell裡用的是四條Ring的架構。 Sun Micro在其T1/T2 (Niagara) 用的是 Cross Bar, 而 Intel 在其80 Cores 的prototype 用的是Mesh 架構。每個特性均不同。計畫一開始我們將設計出一個模擬器,用來了解每種架構的特性, 例如可達到之 latency, bandwidth, routing methods, deadlock, livelock, etc.。

 

子項計畫5:多核心PACDSP實驗環境

[1] 單MPU多DSP之虛擬平台
在本項目內工研院晶片設計中心將針對多核心PACDSP提供時脈準確的模擬處理器IP,以及提供MPU+PAC軟體開發平台之實作與測試。對於計畫內各分項軟體開發的過程,可以利用此IP快速架構多核心ESL虛擬平台及硬體平台,協助多核心軟體於開發過程中的驗證。

[2] 單MPU多DSP之硬體展示平台
除軟體虛擬平台外,晶片設計中心亦將提供與虛擬平台相同規格的實體展示平台。除了可藉此驗證各項晶片設計技術之可行性外,亦可透過實體展示之方式,推廣本計畫之各項技術。