半導(dǎo)體技術(shù)的進(jìn)步使單芯片多處理器成為現(xiàn)實(shí)并推動(dòng)著多核計(jì)算技術(shù)的不斷進(jìn)步。浙江大學(xué)從2006年開設(shè)單獨(dú)的多核課程,并聯(lián)合國內(nèi)五所重點(diǎn)高校設(shè)計(jì)編寫了《多核程序設(shè)計(jì)》作為該課程的教材,對多核計(jì)算技術(shù)進(jìn)行了全面深入的講解,以期由此完善學(xué)生的知識(shí)結(jié)構(gòu)。
1多核計(jì)算技術(shù)的概述
隨著新材料的應(yīng)用和新技術(shù)的發(fā)展,VLSI技術(shù)取得長足進(jìn)步,在單個(gè)芯片上集成多個(gè)處理器核心構(gòu)成多核處理器已經(jīng)成為處理器技術(shù)的主流。按計(jì)算內(nèi)核的對等與否,CMP可分為同構(gòu)多核和異構(gòu)多核。計(jì)算內(nèi)核相同,地位對等的稱為同構(gòu)多核。然而,一般認(rèn)為處理器通用核的數(shù)目在超過16個(gè)后,再增加通用處理核的數(shù)目就難以帶來更大的性能提升。于是出現(xiàn)了一些為特別任務(wù)專門定制的專用處理核,包括面向科學(xué)計(jì)算等的“領(lǐng)域?qū)S煤恕?、圖形圖像處理和數(shù)字信號(hào)處理(DSP)等“行業(yè)專用核”。這些專用核的體系結(jié)構(gòu)利用特定應(yīng)用的特征進(jìn)行定制,從而達(dá)到定制應(yīng)用的高性能和高效率。
從2005年出現(xiàn)的英特爾與AMD的雙核處理器、2006年推出的4核處理器到2007年2月英特爾公司展示的80核處理器,處理器中集成核的數(shù)目呈現(xiàn)迅速增多的趨勢。除此之外,具有更多核和不同功能核的處理器也在研發(fā),例如整合了1025個(gè)簡單處理器的芯片Kilocore,包括1024個(gè)8位處理器和1個(gè)Power PC核。
伴隨著多核處理器的發(fā)展尤其是處理器核數(shù)目的增加與處理器核功能的變化,在體系結(jié)構(gòu)、軟件、功耗和安全性設(shè)計(jì)等方面,巨大的挑戰(zhàn)也隨之而來。處理器的發(fā)展使得原有面向單核或者多處理器的軟件架構(gòu)不適于在單芯片多處理器的硬件結(jié)構(gòu)上充分利用多計(jì)算核心的能力,需要相應(yīng)的軟件層面的共同發(fā)展。為此,軟件結(jié)構(gòu)的變化尤其是針對多核硬件體系結(jié)構(gòu)的程序設(shè)計(jì)成為有效發(fā)揮多核計(jì)算能力的重要方面。
為了適應(yīng)技術(shù)的發(fā)展,為社會(huì)培養(yǎng)合格的計(jì)算機(jī)人才,在大學(xué)計(jì)算機(jī)教學(xué)中開設(shè)相應(yīng)的多核計(jì)算課程勢在必行。計(jì)算機(jī)方向課程的開設(shè)尤其是教材的設(shè)計(jì),不僅要注意到滿足完善學(xué)生知識(shí)結(jié)構(gòu),適應(yīng)計(jì)算機(jī)技術(shù)迅速發(fā)展的情況,同時(shí)也需注意到社會(huì)對于多核計(jì)算技術(shù)方面人才的需求,通過合理的設(shè)計(jì),滿足知識(shí)更新與就業(yè)兩方面的要求。
2多核課程設(shè)計(jì)
多核計(jì)算技術(shù)的發(fā)展使得計(jì)算機(jī)教學(xué)發(fā)生了變化,這種變化主要來自于多核計(jì)算技術(shù)所帶來的新的知識(shí)點(diǎn)。這些新的知識(shí)點(diǎn)主要包括:多核SOC芯片技術(shù);多核芯片與傳統(tǒng)單核微處理器、SMP的區(qū)別;多核下的各種硬件設(shè)計(jì)技術(shù)(Cache與存儲(chǔ)一致性、網(wǎng)絡(luò)互連、IO管理);并行體系與多核體系結(jié)構(gòu);典型多核芯片介紹;嵌入式多核芯片技術(shù);多核平臺(tái)結(jié)構(gòu)與芯片組支持技術(shù)(包括固件技術(shù));多核操作系統(tǒng);多核系統(tǒng)軟件對并行編程的支持;多線程編程對多核的支持;多核多線程編程技術(shù)(主要是關(guān)于Windows與Linux操作系統(tǒng));OpenMP對多核的支持;多核平臺(tái)上的編譯工具與編譯優(yōu)化技術(shù);多核API優(yōu)化函數(shù)庫;多核多線程程序的性能評測工具與方法。
這些新知識(shí)點(diǎn)的出現(xiàn),使得越來越多的高校開設(shè)多核課程以適應(yīng)技術(shù)的發(fā)展與多核時(shí)代對高校計(jì)算機(jī)人才培養(yǎng)的新需求。例如,美國計(jì)算機(jī)專業(yè)最好的CMU、MIT、Backley、Harvard和Stanford五所高校,均通過增加新的課程或者在原有課程內(nèi)容中增加多核內(nèi)容的方式,以適應(yīng)多核計(jì)算機(jī)的出現(xiàn)與發(fā)展。
因此,綜合考慮上述因素,并參考國外高校的課程開設(shè)方式,浙江大學(xué)開設(shè)了自己的多核課程。浙江大學(xué)以學(xué)校計(jì)算機(jī)教學(xué)的實(shí)際情況為基本出發(fā)點(diǎn),讓學(xué)生了解當(dāng)前計(jì)算機(jī)芯片設(shè)計(jì)領(lǐng)域中新興多核體系設(shè)計(jì)的基本原理、技術(shù)難點(diǎn)、目前發(fā)展?fàn)顩r,以及對計(jì)算機(jī)領(lǐng)域帶來的相關(guān)影響等,以通過建立體系經(jīng)典理論研究和實(shí)際的發(fā)展方向之間的橋梁,為將來從事體系結(jié)構(gòu)領(lǐng)域、系統(tǒng)軟件領(lǐng)域以及相關(guān)領(lǐng)域的高水平研究打好扎實(shí)的基礎(chǔ)。這是浙江大學(xué)多核計(jì)算課程設(shè)計(jì)的目標(biāo),也是我們教材設(shè)計(jì)的主要目的。
通過分析多核的知識(shí)點(diǎn),浙江大學(xué)將多核計(jì)算課程分成了兩個(gè)層次:以編程訓(xùn)練為主的本科多核計(jì)算課程和以編程為基礎(chǔ)以多核理論與發(fā)展為主要內(nèi)容的研究生課程。本科課程的名稱為并行計(jì)算與多核編程,作為專業(yè)選修課程。多核的本科課程完全以編程訓(xùn)練為主,結(jié)合多核編程工具,通過編程作業(yè)鍛煉學(xué)生對多核編程能力的培養(yǎng)。對于研究生課程,名稱為多核計(jì)算,主要著眼于當(dāng)前多核技術(shù)的研究熱點(diǎn)和多核技術(shù)的高級課題,在研究生的體系結(jié)構(gòu)課程和超大規(guī)模集成電路基礎(chǔ)上作進(jìn)一步提高,結(jié)合操作系統(tǒng)、編譯原理、編程方法等交叉學(xué)科,介紹在體系結(jié)構(gòu)上的多核理論與相關(guān)學(xué)科對此的相應(yīng)發(fā)展。
3多核課程教材設(shè)計(jì)
3.1概況
由于多核計(jì)算技術(shù)相對較新且仍在不斷發(fā)展,目前國內(nèi)外多核計(jì)算方向的著作以科學(xué)論文為主,偏向于研究與探索,浙江大學(xué)結(jié)合科研的實(shí)際情況,由任課教師采用科學(xué)論文作為研究生課程的主要教學(xué)材料。
而對于基礎(chǔ)教材而言,由于多核計(jì)算方面的書籍還是剛剛起步,因此可供選擇的余地較少。此外,由于多核計(jì)算是一門動(dòng)手能力和理論要求都很強(qiáng)的課程,需要更加重視實(shí)踐環(huán)節(jié),為學(xué)生設(shè)計(jì)實(shí)踐訓(xùn)練,同時(shí),目前多核底層調(diào)優(yōu)軟件是由英特爾公司推出,能實(shí)現(xiàn)多核的編譯、運(yùn)行庫、性能測試、多線程檢測與優(yōu)化,對多核教學(xué)幫助極大。因此,浙江大學(xué)采用了基于英特爾的軟硬件,作為實(shí)踐的基礎(chǔ)培訓(xùn)。有鑒于此,目前浙江大學(xué)的多核課程2006年使用的教材是由英特爾公司的(孟加拉)Shameem Akhter與(美)Jason Roberts撰寫、Intel出版的《Multi-core Programming: Increasing Performance through Software Multi- threading》,2007年3月電子工業(yè)出版社推出了由李寶峰、富弘毅、李韜三位博士翻譯的中文版,我們參與了該書的審稿工作。該書是國內(nèi)第一本全面講解多核程序設(shè)計(jì)的書,同時(shí),由于它介紹了基于Intel多核平臺(tái)的性能評測和調(diào)優(yōu)工具,相對適合于目前的教學(xué)。
由于該書的作者是英特爾的平臺(tái)結(jié)構(gòu)師與軟件工程師,盡管參與了多核處理器的架構(gòu)與軟件設(shè)計(jì),對多核計(jì)算技術(shù)了解非常深入,但是其寫作目的與風(fēng)格均是工程師寫給工程師的書,并不適用于大學(xué)教材。與此同時(shí),由于多核計(jì)算技術(shù)畢竟是正在發(fā)展當(dāng)中,目前國內(nèi)外的確缺乏多核編程的教材。
3.2《多核程序設(shè)計(jì)》
為了適應(yīng)多核計(jì)算技術(shù)的發(fā)展,促進(jìn)國內(nèi)多核課程的建設(shè),浙江大學(xué)、清華大學(xué)、北京大學(xué)、復(fù)旦大學(xué)、上海交通大學(xué)合作編寫了《多核程序設(shè)計(jì)》教材,將于2007年7月由清華大學(xué)出版社出版。清華大學(xué)、北京大學(xué)、上海交通大學(xué)、復(fù)旦大學(xué)分別在2006年秋冬學(xué)期,開始開展多核方向的教學(xué)。
本書的主要目的是作為多核計(jì)算課程的教材使用,而從對多核技術(shù)知識(shí)點(diǎn)的分析可以發(fā)現(xiàn),適合作為教材編寫的主要是多核體系結(jié)構(gòu)程序設(shè)計(jì)的相關(guān)內(nèi)容,因此本書在編寫時(shí)以多核計(jì)算技術(shù)的基礎(chǔ)知識(shí)概論為基礎(chǔ),以多核程序設(shè)計(jì)方法為骨干,主要包括基礎(chǔ)并行程序設(shè)計(jì)方法、多線程基礎(chǔ)、利用線程API進(jìn)行程序設(shè)計(jì)、OpenMP與MPI,以及多線程應(yīng)用程序的調(diào)試和測試工具的使用等,以幫助大學(xué)生學(xué)習(xí)編寫多核體系結(jié)構(gòu)下高性能程序代碼。
本書共分為八章,以多核技術(shù)導(dǎo)論為始,以多核軟件工具介紹為終,分別覆蓋了基本的多核體系基礎(chǔ)、并行計(jì)算基礎(chǔ)、多核體系下線程理論、Windows與Linux多線程編程與調(diào)優(yōu)、OpenMP多線程編程與調(diào)優(yōu)、MPI多線程編程與調(diào)優(yōu)和多核軟件工具的使用。從結(jié)構(gòu)上看,本書的內(nèi)容主要包括三個(gè)方面:
(1) 多核理論。這部分內(nèi)容包括了本書前三章的內(nèi)容。第一章為多核技術(shù)導(dǎo)論,簡要介紹微處理器發(fā)展史、并行計(jì)算機(jī)、超大規(guī)模集成電路與系統(tǒng)芯片發(fā)展、片上多核處理器架構(gòu)與典型多核芯片架構(gòu)、芯片組對多核的支持,以及操作系統(tǒng)對多核處理器的支持方法。第二章是并行計(jì)算基礎(chǔ),介紹并行計(jì)算機(jī)體系結(jié)構(gòu)、并行計(jì)算模型、進(jìn)程與線程、并行編程環(huán)境、并行編程語言與編譯器、并行計(jì)算性能評測,并介紹常用并行數(shù)值算法,例如并行矩陣乘法、線性代數(shù)方程組并行求解方法、快速傅立葉變換。最后介紹并行編譯器。第三章詳細(xì)介紹線程的基本概念,包括多線程的概念,用戶級線程和內(nèi)核級線程,多線程的映射模型,線程的生命周期,多線程環(huán)境下的進(jìn)程控制語義,以及線程的同步,包括互斥量(mutex)、信號(hào)量、條件變量、鎖的粒度與死鎖。
(2) 多核編程與調(diào)優(yōu)。包括了本書第四至七章的內(nèi)容,分別講述了不同操作系統(tǒng)與不同多線程編程技術(shù)下,怎樣進(jìn)行多線程編程和調(diào)優(yōu)來充分利用多核處理器的效率。其中第四章是教學(xué)生如何在Windows下通過多線程方法進(jìn)行多核編程及調(diào)優(yōu),首先介紹了Windows線程庫,然后通過例子介紹了使用win32線程API進(jìn)行線程創(chuàng)建、管理、終結(jié),并介紹線程執(zhí)行和資源存取方法,以及多線程調(diào)試與優(yōu)化技術(shù),包括調(diào)試、跟蹤、線程命名等。第五章介紹了在Linux下使用多線程進(jìn)行多核編程及調(diào)優(yōu)的方法,與前一章類似,首先介紹POSIX線程庫Pthreads,然后是結(jié)合例子介紹基本線程的操作與線程的屬性,最后是使用GDB 調(diào)試線程以及線程的調(diào)優(yōu)。第六章介紹OpenMP編程及性能優(yōu)化方法,結(jié)合使用Microsoft Visual Studio.Net 2005教育學(xué)生如何編寫OpenMP程序,并教育學(xué)生使用OpenMP編寫多線程應(yīng)用程序的技巧,包括循環(huán)并行化、并行區(qū)域編程、線程同步,最后分析OpenMP多線程應(yīng)用程序的性能。第七章是MPI編程及性能優(yōu)化,介紹了最常用和穩(wěn)定的MPICH安裝和配置過程,并詳細(xì)介紹了MPI編程基礎(chǔ)知識(shí)與MPI群集通信、MPI程序排錯(cuò)方法與性能分析優(yōu)化方法。最后簡要介紹了MPI-2。
(3) 多核軟件工具。包括了本書第八章。由于目前的多核軟件工具基本上是由英特爾公司開發(fā)并提供教學(xué)使用,因此本章的工具介紹基本上以英特爾的各種調(diào)優(yōu)與性能分析工具為主,這既符合目前的實(shí)際教學(xué)狀況,也符合社會(huì)需求。第八章所介紹的多核軟件工具包括編譯器對多核的支持、VTune性能分析器、MKL數(shù)學(xué)核心函數(shù)庫、Thread Checker線程檢查器、Thread Profiler線程檔案器的使用與實(shí)驗(yàn)。
由于多核課程是對動(dòng)手實(shí)踐能力要求高的一門課程,在進(jìn)行教材設(shè)計(jì)時(shí),除了上述的書面教材之外,還需要設(shè)計(jì)配套的實(shí)驗(yàn)教案等實(shí)踐教學(xué)內(nèi)容。因此,本書在編寫時(shí)也設(shè)計(jì)并實(shí)現(xiàn)了完整的教案、實(shí)驗(yàn)代碼與實(shí)驗(yàn)環(huán)境,以便多核教學(xué)的正常進(jìn)行。
《多核程序設(shè)計(jì)》一書體現(xiàn)了在本文第二節(jié)多核課程設(shè)計(jì)提出的多核課程教學(xué)的目標(biāo),結(jié)合了五所大學(xué)進(jìn)行多核課程教學(xué)的教師們的經(jīng)驗(yàn)。我們將對《多核程序設(shè)計(jì)》一書的設(shè)計(jì)思想與結(jié)構(gòu)展現(xiàn)在此,希望能夠起到拋磚引玉的作用,為國內(nèi)高校的多核課程建設(shè)提供一個(gè)完整的教學(xué)過程示范,推動(dòng)大學(xué)開展多核程序設(shè)計(jì)課程。
4總結(jié)與展望
本文提出了浙江大學(xué)多核課程教材的設(shè)計(jì)方法作為一種探索,希望為計(jì)算機(jī)教學(xué)課程體系在多核技術(shù)上的變化提供經(jīng)驗(yàn)。多核計(jì)算技術(shù)方興未艾,大學(xué)計(jì)算機(jī)課程教學(xué)需要適應(yīng)多核計(jì)算機(jī)的發(fā)展與變化,不斷地更新多核課程的設(shè)計(jì)與內(nèi)容??梢灶A(yù)見,未來對多核課程的設(shè)計(jì)必將推陳出新,同時(shí),多核教材的設(shè)計(jì)也必然會(huì)受到影響,出現(xiàn)新的設(shè)計(jì)理念。