高品質訓練課程供應者

作者:Owen Ou
日期:

在Android產品的設計上,單核心的時代即將結束,2012年將全面進入多核心的時代。在11月3日由由仕橙3G教室與MagicLego團隊共同主講的「多核心Android+ARM軟硬體」研討課程中,從淺入深地清楚介紹了兩大議題:1. 轉換至多核心ARM平臺,軟體如何設計? 2. 轉換至多核心ARM平臺,硬體設計有何差異?

這場課程的最大特色之一,就是它不像一般死板板的課程安排,而是採用研討會的形式,結合了多位專家,從多核心軟硬體開發的「電腦概論」說明開始,帶到多核心開發平台的系統最佳化經驗分享,接著進入多核心Multi-thread入門教學,以及平行處理的開發指南。此一課程形式有助於業者快速了解多核心的技術本質,做為進入多核心產品開發的起點。

Multi-Core軟體技術概論:從應用程式到作業系統

仕橙研策科技技術總監,也是仕橙3G教室講師的Jollen開宗明義的指出,沒有良好的軟體設計,就無法發揮多核心處理器的效能。至於多核心軟體涉及的範圍,從應用程式開始,一直往底層,直到作業系統及驅動程式,都與多核心嵌入式開發密切相關。

Jollen強調,軟體如何支援多核心處理器,最大的關鍵在於「任務切割與指派」,而任務切割的目的,在於將應用程式裡的計算工作,切割後指派至另一個處理器核心;讓應用程式,能真正使用多核心的計算能力。這就是為什麼多核心軟體的設計,決定了多核心系統效能,而且從應用程式的層面,就要考慮多核心的設計。

如何將一個計算工作切割出來,並指派至另一個處理器核心?方式就是使用multi-thread。在Android的多核心產品開發上,其應用程式使用Java語言撰寫,所產生的thread稱為Java thread;在Linux作業系統層,則是使用一個稱為pthread的程式庫,透過pthread所產生的thread稱之為native thread。兩者之間的關係是由JVM的Thread model來決定。

Jollen指出:「Android的Bionic目前不支援read/write memory barriers,因此對Multi-core的支援仍不完全。這部分的欠缺是否會在Android 4.0中改善,我們會在源碼公佈後馬上分析觀察。」

Cortex-A8/A9充分支援多核心架構

事實上,多處理器平行運算的發展已有一段時間了,針對常見的多核心(Multi-Core)、對稱式多處理器(SMP)及Hyper-Threading(HT)等技術名詞及架構,Jollen分析表示,由於Multi-Core是在同一顆晶片中放入多個CPU核心,可以減少資料同步的成本,加上共用Cache的架構,執行效率能達到最高,因此會是未來的主流。

業界長期以來一直有個迷思,那就是CPU頻率的增加能提升處理效能,Jollen對此提出他的看法:「在多核心架構的運作中,CPU頻率提升反而讓指令平行化處理的難度提高,因此,頻率太高不見得是好事。把軟體做好才是重點。」

在多核心軟體運作的架構上,ARM已做了很多事情。ARM從指令集的設計下手,讓ARMv7、ARMv8指令的平行化處理能更順暢;此外,要提升Multi-Core的效能,發展CPU Cache技術會是關鍵,而ARM的Cortex-A8/A9兩核心系統皆支援CPU Cache的優化處理,因此是目前多核心平台的最佳選擇。

最後,Jollen介紹了Multi-Core軟體框架的發展。他指出目前兩大主流技術分別是OpenMP和OpenCL,前者是發展已久的開源計畫,支援同質性多核心處理器架構;OpenCL則是由三星與南韓首爾大學共同研發、支援異質性多核心處理器架構。由於目前多媒體處理往往需要DSP或GPU,因此支援異質性架構的OpenCL將會是Multi-Core軟體發展的主流。

MagicLEGO多核心平台開發經驗分享

接著MagicLEGO團隊登場。Brian Chen表示,MagicLEGO的團隊原本是零件代理商的FAE,在那裏的工作中,軟體只是配件罷了。然而,現在隨著軟體地位的提升,他們決定轉型改做軟體服務,先打造一個好用的產品開發平台,即MagicLEGO,未來將透過系統整合服務與軟體授權來開創新的經營模式。

Brian介紹指出,MagicLEGO不只是一個板子,而是一個專注於產品創新的系統工程社群,希望結合有興趣的人共同來利用這個平台。MagicLEGO開發團隊則致力於為此平台提供最佳化及便利使用的環境,讓產品開發應用者能順利跨過費時、費力的系統整合階段,將更多心力投入於產品的定位與應用發展之上。

Brian表示:「台灣有一個現象,就是IT業的創意不足,而非IT業的創意很多,但又跨不進IT產業。」他認為這和IT 廠商花太多時間在產品功能的開發上有關,而一個好的發展平台能將這部分的能量釋放出來,品牌廠商甚至不用再請一堆高學歷的軟體高手到公司這類的事,讓軟體人更以去從事更高價值的創新工作。

由於長期投入系統整合的工作,Brian指出,系統工程是一件需跨領域合作的事,而且必須全面性的觀照一個專案整個生命週期中的各個環節。以一個Android專案來說,其開發期就可能長達5 – 10個月。他認為大家都將心力重覆放在這樣的開發工作上,實在沒有必要,事實上可以交由專業的團隊來幫忙完成。

以MagicLEGO來說,其MagicLEGO4210開發套件上,已具備完整且強大的硬體配置。該團隊Wallace Wu指出,其處理器採用三星Exynos4210處理器,這是和知名手機Galaxy SII相同的處理器,具備ARM Cortex-A9雙核心搭配NEON的架構,頻率達1GHz;在多媒體處理上,則配置了Mali400 MP的GPU,支援2D及3D的加速功能。其LPDDRII達1GB,介面方面則支援HDMI、MIPI-DSI和MIPI-CSI等。

當然,只有硬體規格強是不夠的,該團隊更針對Android系統I/O的效能做了一番最佳化的調校功夫。Brian強調:「要做到這點,必須先全面了解系統I/O的各個特點,以及研究記憶體元件的特性;接著需進行一堆測試,並找出所需要的表現特性。然後根據測試數據的分析,不斷調校出最佳化的結果。」

他指出,需調校的面向至少包括開機時間、CPU Governor、DB/File System I/O、Net、Graphics、電源管理,以及軟體升級、Toolchain等其他項目。此外,Kernel升級、SQLite升級、Android升級也需不斷進行,因此,系統效能的調校可以說是永無止境且專業的一個領域。

值得一提的是,MagicLEGO4210平台的調校已有極佳的成果展現,該團隊Anthony Shen指出,在Quadrant Advanced的實測數據中,該平台的表現已能與Galaxy SII相提並論了。此次課程的後段,則由台北科技大學資訊系梁文耀教授及AECL的Frank Chen分別介紹多核心嵌入式軟體設計及Pthread和Android Java thread於多核心平臺上的設計要點,以及GPGPU的平行運算技術。

小結

這堂課可以說是台灣唯一多核心ARM+Android課程,而且課程內容並不是如坊間其他課程將開發板規格提升至多核心開發板,而是切入多核心本身的技術做介紹。此課程開創了研討課程的新上課模式,採活潑的研討會模式來達成由淺入深的教學目標,學習成效更為顯著。

此外,結合MagicLEGO 團隊在多核心平台開發經驗的分享,讓學員能更清楚掌握到系統整合開發上的要領。Moko365 與 MagicLEGO 團隊,也打算將即將開源的 Ice Cream Sandwich 移植到 MagicLEGO 平臺。在完成移植工作後,也會依循這次的課程模式,透過研討課程方式,分享第一手技術心得。