摘要:多核/眾核處理器的發(fā)展與應用為計算機體系結(jié)構(gòu)課程教學帶來新的挑戰(zhàn),如何在課堂教學和實踐環(huán)節(jié)中引入面向體系結(jié)構(gòu)的軟件優(yōu)化內(nèi)容,是近年計算機體系結(jié)構(gòu)課程教學改革的一個重要議題。文章首先探討引入這部分內(nèi)容的必要性和可行性,然后分析適合計算機體系結(jié)構(gòu)課程的教學和實踐內(nèi)容,最后介紹國防科學技術(shù)大學計算機學院相關(guān)教學活動和經(jīng)驗。
關(guān)鍵詞:多核/眾核;計算機體系結(jié)構(gòu);軟件優(yōu)化;教學與實驗
文章編號:1672-5913(2013)18-0041-04
中圖分類號:G642
0 引言
計算機體系結(jié)構(gòu)是計算機科學與技術(shù)學科的重要二級學科,強調(diào)從總體結(jié)構(gòu)、系統(tǒng)分析的角度研究計算機系統(tǒng)。作為該二級學科的核心基礎(chǔ)課程,計算機體系結(jié)構(gòu)(以下簡稱體系結(jié)構(gòu))課程自然也特別強調(diào)從系統(tǒng)層次上學習和了解計算機。
經(jīng)典體系結(jié)構(gòu)課程教材如王志英等編著的《計算機體系結(jié)構(gòu)》講述計算機系統(tǒng)設(shè)計的技術(shù)、方法和理論,教學內(nèi)容一般包括計算機指令系統(tǒng)、計算機組成和計算機硬件實現(xiàn)3個方面,涵蓋處理器和多處理器、存儲器、輸入輸出系統(tǒng)、互連與通信等計算機系統(tǒng)設(shè)計的主要內(nèi)容,同時還涉及性能評價、編譯和操作系統(tǒng)技術(shù)。通過學習該課程,學生能夠把在計算機組成原理、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、匯編語言程序設(shè)計等課程中所學的軟、硬件知識有機結(jié)合起來,建立計算機系統(tǒng)的完整概念。
計算機硬件系列課程的不斷調(diào)整與改革,要求體系結(jié)構(gòu)課程不斷調(diào)整教學和實踐內(nèi)容。無論是國內(nèi)還是國外,很多高校教材都逐漸把計算機組成原理課程內(nèi)容和體系結(jié)構(gòu)課程內(nèi)容有機結(jié)合起來,甚至國外一些經(jīng)典教材還將密切相關(guān)的軟件設(shè)計內(nèi)容也融合到一起。這種方式可以加深讀者對計算機軟硬件系統(tǒng)的整體化理解,有效加強對學生計算機系統(tǒng)設(shè)計能力的培養(yǎng)。
多核/眾核處理器的成熟與發(fā)展也給當前體系結(jié)構(gòu)課程的課堂和實踐教學帶來了新的挑戰(zhàn),為此我們除了引入典型的多核/眾核體系結(jié)構(gòu)案例外,還增加面向多核/眾核體系結(jié)構(gòu)的軟件優(yōu)化方法等必不可少的教學內(nèi)容。以SIMD(SingleInstruction Multiple Data,單指令多數(shù)據(jù))為例,這一概念屬于知識點“Flynn分類法”,我們通常在教學單元“并行計算機體系結(jié)構(gòu)的分類’’中介紹,但隨著體系結(jié)構(gòu)技術(shù)的不斷下移,多核CPU、GPU、MIC、流處理器等典型的多核/眾核處理器中都集成了以SIMD方式工作的計算部件,并且衍生出SPMD(Single Process MultipleData,單進程多數(shù)據(jù)流)、STMD(Single ThreadMultiple Data,單線程多數(shù)據(jù)流)等新概念,而要用好SIMD計算部件,專門的軟件優(yōu)化方法不可或缺。
目前,體系結(jié)構(gòu)研究越來越強調(diào)軟硬件之間的協(xié)同,人們不僅關(guān)注多核/眾核處理器應集成哪些計算資源,還關(guān)心如何管理這些資源和用好這些資源。Intel、AMD、NVidia在推出性能強大的多核/眾核處理器的同時,也為用戶提供了配套的軟件工具和高性能庫,因此體系結(jié)構(gòu)教學也應與體系結(jié)構(gòu)的發(fā)展和變化保持一致。
1 教學內(nèi)容組織
1.1 體系結(jié)構(gòu)教學內(nèi)容剖析
現(xiàn)有體系結(jié)構(gòu)課程的教學內(nèi)容大致可分為單處理器計算機系統(tǒng)與多處理機系統(tǒng)兩個部分,前者一般包括指令系統(tǒng)、流水線、指令級并行、存儲和I/O,后者一般包括多處理機的存儲器體系結(jié)構(gòu)、互連網(wǎng)絡(luò)、同步機制以及集群計算機等內(nèi)容。當然,不同教材的內(nèi)容會有一定差異,如張晨曦等編著的《計算機系統(tǒng)結(jié)構(gòu)教程》就將指令級并行分為硬件技術(shù)和軟件技術(shù)兩章分別介紹,還增加了陣列處理機、數(shù)據(jù)流計算機等內(nèi)容。
這些教學內(nèi)容,特別是單處理器計算機系統(tǒng)的相關(guān)內(nèi)容,與計算機系統(tǒng)系列中的一些課程相互重疊。例如,計算機組成原理通常會從馮·諾依曼結(jié)構(gòu)的5個模塊、指令系統(tǒng)以及總線等方面介紹單處理器計算機系統(tǒng),其教學內(nèi)容與體系結(jié)構(gòu)課程有較多重疊。實踐教學也是如此,很多高校開設(shè)的計算機原理課程設(shè)計(有時也稱為綜合實驗)往往以實現(xiàn)一個16位或32位CPU為主要內(nèi)容。如果教師能夠系統(tǒng)梳理計算機系統(tǒng)系列課程的教學內(nèi)容,將一部分體系結(jié)構(gòu)課程的教學內(nèi)容安排在其他課程中,那么將有利于向體系結(jié)構(gòu)課程中引入新的教學內(nèi)容。
從目前國內(nèi)外高校的教學情況看,越來越多的高校開始將計算機系統(tǒng)的定量設(shè)計基礎(chǔ)、指令系統(tǒng)設(shè)計、流水線及相關(guān)問題、Cache基本知識及提高Cache性能的基本方法、外部存儲設(shè)備、I/O設(shè)備與CPU和存儲器的連接、RAID等內(nèi)容安排在計算機原理、計算機組成與結(jié)構(gòu)或其他類似課程中講授,體系結(jié)構(gòu)越來越趨向于一門專業(yè)性很強的課程。南京大學袁春風老師編著的《計算機組成與系統(tǒng)結(jié)構(gòu)》為合理安排計算機系統(tǒng)系列課程的教學內(nèi)容提供了有益參考。
強調(diào)系統(tǒng)結(jié)構(gòu)與編譯器、操作系統(tǒng)等軟件的聯(lián)系,一直是體系結(jié)構(gòu)課程教學關(guān)注的重要內(nèi)容。該課程在流水線、指令級并行、Cache(如預?。⒍嗵幚頇C等內(nèi)容方面,著重突出與編譯原理的關(guān)系;在虛存、I/O等內(nèi)容方面,主要突出與操作系統(tǒng)的關(guān)系。這也是教師在組織教學內(nèi)容時必須考慮的。
1.2 教學單元和知識點設(shè)計
這項工作可以通過不同的方式進行,如增加新的教學單元和知識點或修改已有教學知識點。顯然,多核/眾核體系結(jié)構(gòu)是首先需要補充的教學單元,一方面該單元通過當前流行的多核/眾核處理器產(chǎn)品介紹典型多核/眾核體系結(jié)構(gòu),如Intel/AMD的多核產(chǎn)品、NVidia GPU、Intel MIC等;另一方面,該單元還可以介紹新型體系結(jié)構(gòu)為應用程序設(shè)計與優(yōu)化帶來的挑戰(zhàn)以及它們的發(fā)展趨勢等。
功耗也是需要補充的教學單元。在當前處理器和計算機系統(tǒng)的設(shè)計中,功耗已經(jīng)成為一個越來越重要的問題。設(shè)計者從工藝、體系結(jié)構(gòu)、編譯器、操作系統(tǒng)、應用等多個不同層次進行功耗優(yōu)化。教師在教學時可以從體系結(jié)構(gòu)角度,介紹低功耗處理器體系結(jié)構(gòu)(如并行結(jié)構(gòu)、流水結(jié)構(gòu)、存儲分區(qū)訪問)、基于PCM(Performance Counter Monitor,性能計數(shù)監(jiān)視器)的功耗優(yōu)化等知識點。由于該單元的知識點與多個教學單元有關(guān),因此將其分布到相關(guān)單元中也是一種可行的方法。
數(shù)據(jù)級并行也是需要擴展的教學單元。目前,幾乎所有的通用處理器都支持SIMD擴展指令,Intel MMX/SSE就是其中的典型代表。這一教學單元可以涵蓋SIMD/SPMD/STMD工作方式、計算部件的結(jié)構(gòu)和關(guān)鍵設(shè)計問題、影響SIMD方式性能的控制流和存儲訪問問題以及相應的優(yōu)化策略等知識點。
性能評價、指令系統(tǒng)設(shè)計、Cache等都是需要修改的教學單元。對于性能評價,PCM已經(jīng)成為重要性能參數(shù)獲取手段,基于PCM測量結(jié)果的性能優(yōu)化方法已經(jīng)越來越成熟。在指令系統(tǒng)設(shè)計方面,不少教材中都介紹了“面向操作系統(tǒng)的優(yōu)化實現(xiàn)改進指令系統(tǒng)”知識點,但缺乏足夠詳細的實例。Intel公司為提高虛擬化系統(tǒng)效能設(shè)計的VMRESUME、VMLAUNCH等指令是非常合適的實例。在Cache方面,多線程/多進程對Cache的競爭使用以及由此引起的性能問題都值得介紹。
受篇幅所限,我們將不再討論另外一些可引入體系結(jié)構(gòu)課程的教學單元和知識點。
2 實驗設(shè)計
現(xiàn)有的體系結(jié)構(gòu)實踐主要圍繞CPU的設(shè)計進行。文獻[5]介紹了我們在體系結(jié)構(gòu)課程實踐教學方面的經(jīng)驗與思考,教材[6]就是根據(jù)這些經(jīng)驗總結(jié)而成,但面向體系結(jié)構(gòu)的軟件優(yōu)化部分的實驗與其所討論的內(nèi)容不同。首先,面向體系結(jié)構(gòu)的軟件優(yōu)化實驗只能采用純軟件的方式進行,雖然一些硬件設(shè)計可以改進軟件優(yōu)化方法的效果和效率,但將其安排在研究生課程中更加合適;其次,將一些實驗內(nèi)容安排在并行程序設(shè)計與優(yōu)化中可能更合適,如面向多核平臺的多線程程序設(shè)計與優(yōu)化、面向GPU或MIC的程序設(shè)計與優(yōu)化等。我們認為適合作為本科體系結(jié)構(gòu)課程的實踐教學有以下幾個模塊。
1)SIMD擴展指令的性能分析與優(yōu)化。
該模塊以Intel SSE、AVX指令為例,學生通過面向典型的基準程序(如矩陣乘、FFT等),分析這些SIMD指令帶來的性能提升以及產(chǎn)生的性能開銷,比較不同SSE/AVX指令生成方法(程序員手工生成、通過編譯器自動生成、使用Intel提供的高性能庫)的效果。
2)Cache相關(guān)實驗。
該模塊通過頁著色(Page Coloring)方法,將Last Level Cache(LLC,最后一級Cache)分配給不同的任務(wù),實現(xiàn)多任務(wù)共享LLC;分析Cache容量對任務(wù)性能的影響。需要注意的是,將任務(wù)調(diào)度到不同的處理器核上執(zhí)行,是消除Cache容量對任務(wù)性能影響的最有效方法,但由于將任務(wù)調(diào)度策略的實現(xiàn)與分析安排在操作系統(tǒng)實驗中最合適,因此該模塊沒有考慮如何消除Cache容量對任務(wù)性能的影響。
3)PCM和功耗相關(guān)實驗。
該模塊的內(nèi)容包括通過實驗了解PCM的工作原理和編程接口;分析PCM收集到的系統(tǒng)性能數(shù)據(jù),找出性能瓶頸;根據(jù)PCM收集到的功耗數(shù)據(jù),比較不同功耗優(yōu)化策略的優(yōu)劣等。
除了確定實踐教學內(nèi)容以外,采用合理的實踐方式也是必須考慮的一個重要問題。根據(jù)實驗的內(nèi)容和創(chuàng)新程度,我們將實驗分為驗證實驗(通過實驗檢驗某一結(jié)論的正確性)、設(shè)計實驗(完成某個功能模塊的設(shè)計,如在模擬器上實現(xiàn)分支目標緩沖)、綜合實驗(完成計算機中某個子系統(tǒng)的設(shè)計,如CPU設(shè)計實驗)以及創(chuàng)新實踐活動4個層次。
在以上所列舉的實驗內(nèi)容中,SIMD和Cache適合作為驗證實驗。學生通過這些實驗可以理解SIMD指令集在性能上的優(yōu)勢與不足、多任務(wù)競爭使用LLC會對系統(tǒng)性能產(chǎn)生什么影響、利用SIMD指令獲得性能提升的方法等。PCM和功耗則適合作為設(shè)計實驗,學生可以通過這些模塊了解PCM的使用方法,解決以功耗為代表的當前計算機系統(tǒng)設(shè)計熱點問題。需要注意的是,我們沒有設(shè)計綜合實驗模塊和創(chuàng)新實踐活動,因為前者被安排在并行程序設(shè)計與優(yōu)化等課程中更為合適,后者則一般由數(shù)名研究生結(jié)合課題研究完成。
3 課程建設(shè)實踐
針對體系結(jié)構(gòu)課程教學和實踐內(nèi)容的改革,國防科技大學計算機學院目前已經(jīng)進行的工作主要有以下幾個方面。
1)系統(tǒng)梳理計算機系統(tǒng)系列課程的教學內(nèi)容。
除了計算機原理、體系結(jié)構(gòu)、嵌入式系統(tǒng)、計算機系統(tǒng)性能評價、匯編語言等傳統(tǒng)硬件系列課程外,我們還將操作系統(tǒng)和編譯原理兩門課程歸于計算機系統(tǒng)系列,形成了一個包含5門國家級精品課的課程系列。相關(guān)課程的主講教師一起探討課程之間的接口及教學單元的分配,目的是讓學生通過計算機原理、編譯原理課程和實踐,掌握有關(guān)單處理器計算機系統(tǒng)的知識,通過體系結(jié)構(gòu)課程和實踐掌握計算機系統(tǒng)的性能評價和優(yōu)化方法,通過嵌入式系統(tǒng)、操作系統(tǒng)課程和實踐掌握計算機系統(tǒng)在嵌入式領(lǐng)域中的應用。
2)將本科生競賽等實踐活動作為調(diào)整和補充教學內(nèi)容的參考。
SCC(Student Cluster Competition,大學生超算競賽)是近年來國際高性能計算領(lǐng)域的熱門活動,每年在ISC(Intemational Supercomputing Conference)和SC(Supercomputing Conference)這兩個高性能計算領(lǐng)域最著名的國際會議上各舉辦一次。每個參賽隊由6名本科生組成,在1名指導教師的帶領(lǐng)下參賽。比賽要求各參賽隊搭建一個功耗不超過3KW的集群系統(tǒng),在規(guī)定時間內(nèi)完成指定應用(含算例)的執(zhí)行,完成時間越短,成績越好。國防科技大學計算機學院的本科生已在該競賽中取得了一系列好成績。該競賽活動全面地考查了本科生對集群計算系統(tǒng)的組成、來自特定領(lǐng)域的高性能應用、并行程序設(shè)計與優(yōu)化、面向集群系統(tǒng)的軟件優(yōu)化等知識的理解與掌握程度,競賽中的經(jīng)驗和教訓對我們調(diào)整體系結(jié)構(gòu)課程教學內(nèi)容有重要的參考作用。
3)將成熟的研究生實驗模塊調(diào)整到本科生教學活動中。
自2005年以來,國防科技大學計算機學院結(jié)合學校大力開展的實驗室建設(shè)活動,建立了計算機科學與技術(shù)研究生和本科生實驗中心,其中體系結(jié)構(gòu)實驗室是重要組成部分。在研究生高級計算機體系結(jié)構(gòu)課程的實踐教學中,我們開設(shè)了計算機體系結(jié)構(gòu)實驗和面向體系結(jié)構(gòu)的軟件優(yōu)化實驗兩門課程,分別從硬件和軟件兩個角度培養(yǎng)學生的實踐能力。經(jīng)過多年的建設(shè),這兩門實驗課程中的一些成熟實驗模塊已經(jīng)具備了下移到本科生教學中的條件。
4 結(jié)語
如何引入與多核/眾核體系結(jié)構(gòu)相關(guān)的教學與實踐內(nèi)容,是體系結(jié)構(gòu)課程教學改革的重要內(nèi)容。這與近年來國內(nèi)外高校在計算機系統(tǒng)或硬件系列課程中越來越強調(diào)培養(yǎng)學生的系統(tǒng)觀,使他們建立軟硬件兼通的計算機系統(tǒng)組成、結(jié)構(gòu)、工作原理等概念的教學改革理念一致。結(jié)合國防科技大學計算機學院的計算機系統(tǒng)系列課程建設(shè)及本科生高性能競賽等活動,我們探索如何進行這一改革并進行初步實踐。當然,根據(jù)教學側(cè)重點的不同,一些學校會選擇將這部分內(nèi)容安排在并行程序設(shè)計、多核體系結(jié)構(gòu)及編程等課程中,筆者所討論的問題、改革思路和實踐活動,也可為這些課程的建設(shè)提供參考。
參考文獻:
[1]王志英,張春元,沈立,等,計算機體系結(jié)構(gòu)[M],北京:清華大學出版社,2010
[2]袁春風,計算機組成與系統(tǒng)結(jié)構(gòu)[M],北京:清華大學出版社,2011
[3]Bryant R E,O'Hallaron D R.Computer systems:Aprogrammer's perspective[M],2版,Boston:Addison Wesley,2010:25-26
[4]張晨曦,王志英,沈立,等。計算機系統(tǒng)結(jié)構(gòu)教程[M],北京:清華大學出版社,2009
[5]沈立,張春元,王志英,“計算機體系結(jié)構(gòu)”課程實驗教學建設(shè)[J],計算機教育,2011(22):88-91
[6]沈立,肖儂,王志英,計算機體系結(jié)構(gòu)實驗[M]。北京:清華大學出版社,2010
(編輯:宋文婷)