1 課程背景
2006年是有計算機歷史以來處理器更新?lián)Q代最快的一年,以Intel與AMD為代表的處理器廠商在年初發(fā)布了雙核處理器,之后發(fā)布了多款雙核處理器,在2006年底又發(fā)布了四核處理器,2007年1月10日,英特爾展示了配置兩個四核處理器的八核計算機,多核處理器開始全線進入市場,計算機多核時代真正來臨。到2006年底,多核處理器出貨量已經(jīng)達到處理器總出貨量的90%以上。在未來幾年里,處理核的數(shù)目將會越來越多,根據(jù)Intel公司的處理器發(fā)展路線圖,Intel在2010年的主流處理器將是128核到144核。除此之外,其他的一些芯片廠商也在研發(fā)更多核的處理器,其中美國硅谷一家創(chuàng)業(yè)公司Rapport宣布,計劃開發(fā)整合了1000個簡單處理器的芯片。多核時代的到來無疑揭開了計算機發(fā)展歷史的新篇章。
相對于多核處理器如雨后春筍般不斷推出的發(fā)展速度,軟件業(yè)對多核時代的到來并沒有做好充分的準備。正如微軟公司軟件架構(gòu)師Herb Sutter在2005年In-Stat/MDR秋季處理器論壇會議上所指出的,處理器廠商未能確切了解多核的設(shè)計為軟件行業(yè)帶來多少額外工作,客戶端應(yīng)用程序開發(fā)者多年來一直停留在單線程世界,生產(chǎn)所謂的“順序軟件”,但是多核時代到來的結(jié)果是軟件開發(fā)者必須找出新的開發(fā)軟件的方法。這對于軟件廠商和學(xué)術(shù)界來說都是一個巨大的挑戰(zhàn)。
對于作為計算機人才培養(yǎng)主要基地的高等院校來說,如何調(diào)整計算機教育課程以適應(yīng)多核時代的到來也是一個新的挑戰(zhàn)。隨著多核技術(shù)的發(fā)展,可以預(yù)見目前以及未來大多數(shù)的軟件開發(fā)都將以多核芯片為基礎(chǔ)硬件平臺。從2005年起,計算機知識體系與教學(xué)體系就應(yīng)該根據(jù)硬件發(fā)展走勢作相應(yīng)的變化,例如從編程語言到軟件工程,從計算機組成到芯片設(shè)計,都可以引入多核技術(shù)。未來的編程語言、數(shù)據(jù)結(jié)構(gòu)、算法理論、軟件工程等都將隨著多核的出現(xiàn)而進行修訂,計算機硬件方向的課程變化則更大。
但是,大部分相關(guān)專業(yè),包括計算機專業(yè)、電子工程、自動化等專業(yè)方向的課程沒有進行相應(yīng)的修改,尤其是計算機專業(yè),目前培養(yǎng)畢業(yè)的學(xué)生還不具備在主流計算機硬件上做開發(fā)的能力。究其原因是多核的發(fā)展振聾發(fā)聵,產(chǎn)業(yè)界與教育界都還來不及建立相應(yīng)的課程體系。
我們在過去的一年中對大學(xué)生與工程師做多核培訓(xùn)過程中,對多核以及多線程技術(shù)的需求進行了調(diào)查。目前企業(yè)對有能力利用多核硬件的人才需求很旺盛,但是如何界定多核人才是模糊的。有25%的工程師當(dāng)前正在使用多核與多線程相關(guān)的技術(shù);有35%的工程師認為在未來的一年(即2007年)將會在工作中使用多核以及多線程技術(shù),其余65%的工程師都認為多核以及多線程技術(shù)將會有利于普及。90%以上的大學(xué)生認為需要在大型課程中學(xué)習(xí)在實際中會遇到的多核以及多線程技術(shù)。
在這樣的背景下,為了適應(yīng)多核時代對計算機人才的需要,浙江大學(xué)計算機學(xué)院計算機體系結(jié)構(gòu)及支撐環(huán)境課程小組從2005年開始進行多次研討,決定在多核時代到來之初就開始探索計算機相關(guān)課程的革新。在計算機技術(shù)應(yīng)用方面,設(shè)置本科生多核編程課程,培養(yǎng)熟悉多核硬件架構(gòu)、面向多核硬件進行軟件開發(fā)的人才;在計算機科學(xué)研究方面,設(shè)置研究生多核課程,培養(yǎng)了解國際計算機研究前沿、能勝任計算機體系架構(gòu)研究即基于多核的硬件和系統(tǒng)軟件設(shè)計的研究型人才。同時,通過課程的開設(shè),有助于企業(yè)明晰什么樣的人才,是掌握多核以及多線程技術(shù)的人才。
2 參考課程設(shè)計
浙江大學(xué)計算機學(xué)院在設(shè)計自己的多核課程時,查閱了大量的相關(guān)文獻資料,了解了國外著名高校相關(guān)課程對多核技術(shù)的適應(yīng)性改造。
CC2005與CCCE2004是計算相關(guān)課程設(shè)計提供的指導(dǎo)性建議。CC2005中涉及目前的多核部分包括了Hardware and devices領(lǐng)域中的Design a chip與Program a chip兩部分。在CCCE2004中,涉及多核的有:10課時的CE-CAO6(Processor systems design)、3課時的CE-CAO9(Distributed system models)、12課時的CE-DIG6(Digital systems design)、選修的CE-ESY8(Embedded multiprocessors)。
顯然在這兩份權(quán)威的報告里面缺少了多核技術(shù)相關(guān)課程的建議,無論是多核體系結(jié)構(gòu),還是多核軟件開發(fā),都未涉及。究其原因是這兩個報告推出于多核處理器推出之前,這讓我們在設(shè)計課程時無法從中獲取有效的信息。
是等待美國計算機學(xué)會(ACM)、美國信息系統(tǒng)協(xié)會(AIS)和電氣和電子工程師協(xié)會計算機社區(qū)(IEEE-CS)推出下一個版本的計算機課程,還是走在技術(shù)發(fā)展的前沿去開發(fā)適應(yīng)多核時代的課程,是否有能力開發(fā)相關(guān)的課程,是擺在我們面前的問題。
表1羅列了CMU、MIT、Backley、Harvard,Stanford這五個國際一流大學(xué)課程計劃中與多核技術(shù)相關(guān)的課程。這些課程主要包括了分布式系統(tǒng)、并行計算與性能優(yōu)化方向的課程,還都是從傳統(tǒng)計算機角度設(shè)置課程,有沒有針對多核的課程,能否提供我們參考。世界上一些高校已經(jīng)開始作了很多嘗試。2006年5月10~11日,在美國俄勒岡州(Oregon)的Tigard召開了全球多核課程會議,包括清華、北大、上交、復(fù)旦、浙大、香港科大等來自34個國家51所高校的教師研討了多核技術(shù)在大學(xué)課程設(shè)置與教學(xué)方法的相關(guān)問題。這些世界上著名的高校都開始或者有計劃在相關(guān)專業(yè)開設(shè)計算機多核課程。
麻省理工學(xué)院(MIT)與喬治亞理工學(xué)院(GIT)最早啟動多核課程。MIT從2003年起開始在Theory of Parallel Systems課程中講授Cilk語言(一種多線程C語言),2006年開始逐步在該課程中增加Cilk多核編程的內(nèi)容,并且在硬件平臺方面從UltraSPARC,Origin2000,AlphaServer,Intel SMP擴展到Intel的多核平臺上。
GIT的電子和計算機工程學(xué)院在多核課程方面走得更為大膽,他們在2006年春開設(shè)新的多核課程,面向高年級本科生和研究生,內(nèi)容涉及到系統(tǒng)和體系、編譯和編程語言、高性能計算和應(yīng)用、企業(yè)計算和信息綜合以及嵌入式應(yīng)用程序接口等。GIT還將改造一系列課程以適應(yīng)多核技術(shù),包括操作系統(tǒng)設(shè)計、高級操作系統(tǒng)、計算機組成、分布式計算、計算機體系和高性能通訊等13門課。
香港科技大學(xué)也將在2007年春開始新的多核編程課程,并且改造程序設(shè)計、計算機體系、微處理器體系、嵌入式系統(tǒng)等課程。
都柏林大學(xué)圣三一學(xué)院改造了他們的并行計算課程以適應(yīng)多核技術(shù),他們改造了并行編程模型、線程同步和通訊、進程/線程調(diào)度、測試和調(diào)試策略、并行體系結(jié)構(gòu)、Cache和內(nèi)存管理、Cache-aware軟件開發(fā)等內(nèi)容,并增加了線程池、投機多線程、決定論和超線程等新內(nèi)容。
這些課程的實踐與嘗試,給了我們很好的參考,我們通過研討多核技術(shù)本身與對其他技術(shù)的影響,分析了多核方面的課程設(shè)置方案。
3 多核技術(shù)的知識點分析
我們認為多核技術(shù)涉及的知識點如圖1所示。這些多核技術(shù)相關(guān)的知識點都需要在多核課程中涉及,包括:
* 多核SOC芯片技術(shù)
* 多核芯片與傳統(tǒng)單核微處理器、SMP的區(qū)別
* 多核下的各種硬件設(shè)計技術(shù)(Cache與存儲一致性、網(wǎng)絡(luò)互連、IO管理)
* 并行體系與多核體系結(jié)構(gòu)
* 典型多核芯片:Cell、OpenSparc、Intel雙核芯片、AMD雙核芯片
* 嵌入式多核芯片技術(shù)
* 多核平臺結(jié)構(gòu)與芯片組支持技術(shù)(包括固件技術(shù))
* 多核操作系統(tǒng)
* 多核系統(tǒng)軟件對并行編程的支持
* 多線程編程對多核的支持
* Windows多核多線程編程技術(shù)
* Linux多核多線程編程技術(shù)
* OpenMP對多核的支持
* 多核平臺上的編譯優(yōu)化技術(shù)
* 多核平臺上編譯工具
* 多核API優(yōu)化函數(shù)庫
* 多核多線程程序的性能評測方法
* 多核多線程程序的性能評測工具
所有這些多核技術(shù)相關(guān)的知識點中,一部分屬于多核編程技術(shù)與技巧,可以結(jié)合多核編程工具與性能調(diào)優(yōu)工具,通過編程實踐鍛煉學(xué)生對多核編程能力的培養(yǎng)。另一部分屬于并行計算機與數(shù)字芯片技術(shù)方向的最前沿,可以作為研究生的課程,擴大學(xué)生們的知識面,了解計算機體系結(jié)構(gòu),并行計算和芯片設(shè)計技術(shù)等領(lǐng)域的最新熱點。
4 浙江大學(xué)的多核課程設(shè)計
綜合上述高校的多核課程以及我們對多核技術(shù)涉及的知識點分析,我們設(shè)計了浙江大學(xué)的多核課程體系。是集中這些知識于獨立課程,還是分布到各相關(guān)課程中,是第一個問題??紤]到目前多核技術(shù)推出不久,集中力量把這些內(nèi)容介紹清楚,我們認為是合適合理的。
獨立的多核課程,其教學(xué)目的是讓學(xué)生了解當(dāng)前計算機芯片設(shè)計領(lǐng)域中新興多核體系設(shè)計的基本原理、技術(shù)難點、目前發(fā)展狀況以及對計算機領(lǐng)域帶來的相關(guān)影響等,通過建立體系經(jīng)典理論研究和實際的發(fā)展方向之間的橋梁,為將來從事體系結(jié)構(gòu)領(lǐng)域、系統(tǒng)軟件領(lǐng)域以及相關(guān)領(lǐng)域的高水平研究打好扎實的基礎(chǔ)。
多核課程面向的對象可以包括計算機專業(yè)以及相關(guān)專業(yè)。從事高性能計算的學(xué)生,可以從這門課程學(xué)習(xí)到如何將并行計算與現(xiàn)代多核處理器結(jié)合起來;從事應(yīng)用軟件開發(fā)的學(xué)生,可以學(xué)習(xí)到如何發(fā)揮現(xiàn)有硬件的性能。
學(xué)習(xí)該課程的基本目標是通過本課程的學(xué)習(xí),使學(xué)生掌握多核體系的基本原理、典型設(shè)計策略、操作系統(tǒng)和編譯器的相應(yīng)設(shè)計、編程方式的變化方向等,并通過查閱這些領(lǐng)域的最新文獻來不斷更新知識。
考慮到多核課程涉及面很廣,包括了把多核技術(shù)應(yīng)用在計算機技術(shù)上,以及多核體系、優(yōu)化等不同層次的兩個方面,我們將多核課程分為兩個部分,分別面向計算機學(xué)院高年級本科生和研究生。
由于多核技術(shù)很大程度上是由產(chǎn)品推動教學(xué),我們更加重視實踐環(huán)節(jié),為本科生和研究生設(shè)計了三部分的實踐訓(xùn)練,包括實驗、project和相關(guān)研究項目。其中實驗、project包括在課程之中,學(xué)生可以借助FPGA開發(fā)板、多核計算機、多核軟件等實驗設(shè)備學(xué)習(xí)多核技術(shù)。研究項目是針對對多核研究有興趣的學(xué)生,可以加入多核技術(shù)實驗室的研究小組。
4.1 本科生“并行計算與多核編程”課程
我們設(shè)計的本科生課程,名稱為并行計算與多核編程,作為專業(yè)選修課程,使用的教材暫定為Intel Press的《Multicore programming》,以后會使用我們與清華、北大、復(fù)旦、上海交大合作編寫的多核編程教材,該教材將于2007年9月啟用。
本科課程完全以編程訓(xùn)練為主,結(jié)合多核編程工具,通過編程作業(yè)鍛煉學(xué)生多核編程能力。希望學(xué)生在了解多核體系結(jié)構(gòu)和系統(tǒng)軟件設(shè)計的基礎(chǔ)上,學(xué)習(xí)多核平臺上的并行編程設(shè)計,學(xué)到多核硬件與單核在編程技巧上的差異性,以及多核程序評測和調(diào)優(yōu)工具的使用以及優(yōu)化技巧。課程共2學(xué)分32學(xué)時。其簡要大綱如下:
(1)多核系統(tǒng)概述。介紹并行體系與多核體系結(jié)構(gòu)的起源和特點,典型多核芯片Cell、Intel雙核芯片體系分析,多核系統(tǒng)軟件對并行編程的支持,共計4學(xué)時。
(2)并行編程技術(shù),介紹多線程編程技術(shù)、Windows多線程技術(shù)、Unix下Pthread編程優(yōu)化、OpenMP、MPI,共計14學(xué)時。
(3)多核編譯優(yōu)化。介紹多核平臺上的編譯優(yōu)化技術(shù),學(xué)習(xí)使用多核平臺上編譯工具、多線程優(yōu)化策略、多核優(yōu)化函數(shù)庫使用,共計8學(xué)時。
(4)性能評測。介紹硬件性能評測工具、多線程程序的性能評測方法與評測優(yōu)化工具使用,共計6學(xué)時。
該課程的實驗,是基于英特爾多核硬件平臺的。英特爾公司與浙江大學(xué)于2006年4月成立了多核技術(shù)實驗室,我們開始開展了多核課程建設(shè)。之后浙江大學(xué)自己投資于2006年7月建成了擁有80臺多核計算機的學(xué)生機房,英特爾贈送了100套多核軟件(IntelC++ Compiler for Windows;IntelC++ Compiler for Linux;IntelVisual Fortran, Standard Edition, for Windows;IntelFortran Compiler for Linux;IntelMath Kernel Library (MKL) for Windows;IntelMath Kernel Library (MKL) for Linux;IntelIntegrated Performance Primitives (IPP) for Windows;IntelIntegrated Performance Primitives (IPP) for Linux;IntelVTuneTM Performance Analyzer for Windows;IntelVTuneTM Performance Analyzer for Linux;IntelThread Checker for Windows;IntelThread Profiler for Windows;IntelMPI Library for Linux)。這些軟件可以運行在英特爾的多核處理器上,實現(xiàn)多核的編譯、運行庫、性能測試、多線程檢測與優(yōu)化,對多核教學(xué)幫助極大。
基于這些軟硬件,學(xué)生們學(xué)習(xí)編程技巧,其效果立竿見影,優(yōu)化過程可以圖形顯示,有很好的教學(xué)效果。為此在共性的多核并行程序之外,我們還介紹了Intel多核平臺上的性能評測和調(diào)優(yōu)工具,以保證在程序的正確性的基礎(chǔ)上提高多核程序的運行性能。
該課程與其他課程有一定的聯(lián)系。由于多核平臺下編程與編譯的緊密關(guān)系,所以該課程介紹部分多核編譯的知識,以通過編譯充分發(fā)揮并行程序的優(yōu)勢。同時,并行程序受到操作系統(tǒng)與其他軟件的影響,要寫出一個能發(fā)揮硬件性能的多核并行程序,不能孤立于操作系統(tǒng)之外,所以本科生課程需要介紹操作系統(tǒng)對多核的支持。
除了開設(shè)獨立多核編程課程以外,還需要對相關(guān)課程進行改革。計算機體系結(jié)構(gòu)課程可以增加多核芯片與傳統(tǒng)單核微處理器、SMP的區(qū)別,典型多核芯片等知識;操作系統(tǒng)課程可以增加多核操作系統(tǒng);編譯原理課程可介紹支持多核的編譯技術(shù)。
4.2 研究生課程
多核計算技術(shù)是計算機科學(xué)與技術(shù)的最新發(fā)展前沿,是計算機體系結(jié)構(gòu)、芯片集成制造技術(shù)近年來最為重大的發(fā)展。多核課程的研究生部分以理論培養(yǎng)為主,兼顧多核編程的原理。通過本課程的開設(shè),可以使學(xué)生對多核計算技術(shù)與應(yīng)用有一個全面深入的認識,完善學(xué)生的知識結(jié)構(gòu),以更好適應(yīng)未來的計算機技術(shù)及其應(yīng)用的發(fā)展與革新。
我們設(shè)計的研究生課程,稱為“多核計算”,主要著眼于當(dāng)前多核技術(shù)的研究熱點和多核技術(shù)的高級課題,在研究生的體系結(jié)構(gòu)課程和超大規(guī)模集成電路基礎(chǔ)上進一步提高,結(jié)合操作系統(tǒng)、編譯原理、編程方法等交叉學(xué)科,介紹在體系結(jié)構(gòu)上的多核理論與相關(guān)學(xué)科對此的相應(yīng)發(fā)展。課程以多核體系結(jié)構(gòu)、多核芯片現(xiàn)狀、多核系統(tǒng)軟件、多核編譯優(yōu)化為主線,闡述當(dāng)今多核體系的基本理論、思想和方法,力求使研究生了解世界前沿的體系結(jié)構(gòu)技術(shù),為從事高水平研究打好基礎(chǔ)。課程2學(xué)分32學(xué)時。簡要大綱如下:
(1)SOC技術(shù),2學(xué)時。
(2)多核芯片架構(gòu)。介紹多核SOC芯片的發(fā)展、多核芯片與傳統(tǒng)處理器的區(qū)別、多核體系結(jié)構(gòu)設(shè)計技術(shù),共計6學(xué)時。
(3)多核芯片案例分析。分析Cell芯片、Open-Sparc芯片、Intel與AMD多核芯片體系結(jié)構(gòu),共計6學(xué)時
(4)多核系統(tǒng)平臺。介紹多核平臺結(jié)構(gòu)與芯片組,共計2學(xué)時。
(5)多核系統(tǒng)軟件。介紹多核平臺的啟動與中斷、調(diào)度、存儲管理,共計4學(xué)時。
(6)多核編譯優(yōu)化。介紹多核編譯、編譯優(yōu)化的重點與難點、多線程化策略,共計8學(xué)時。
(7)多核編程模式。分析現(xiàn)有多核編程技術(shù)(MPI、線程、OpenMP)的差異,共計4學(xué)時。
該課程與研究生其他課程能有機的結(jié)合一起,并對相關(guān)課程進行相應(yīng)改造?!案呒壊僮飨到y(tǒng)”課程,可以增加多核系統(tǒng)軟件對并行軟件的支持,并介紹操作系統(tǒng)對SMP和現(xiàn)在的多核提供的支持?!案呒夡w系結(jié)構(gòu)”偏重存儲訪問優(yōu)化、亂序發(fā)射,超長流水,超標量、超流水,可以適當(dāng)增加介紹多核芯片與多處理器的差異。研究生課程“嵌入式系統(tǒng)”偏重實時理論、節(jié)能軟件、IP設(shè)計軟硬件協(xié)同設(shè)計等,針對多核介紹了嵌入式系統(tǒng)中使用多核架構(gòu),如ARM+DSP,這是目前嵌入式系統(tǒng)的熱點之一?!安⑿杏嬎銠C結(jié)構(gòu)和程序設(shè)計”偏重并行計算理論、并行計算機系統(tǒng)結(jié)構(gòu)(PVP、SMP、MPP、DSM、COW)、并行計算機存儲器訪問模型、并行算法的常用設(shè)計方法,劃出片上多處理器及相關(guān)內(nèi)容給“多核計算”。
5 教學(xué)與實踐經(jīng)驗
到目前為止,我們已經(jīng)在多核技術(shù)教學(xué)和推廣中積累了相當(dāng)?shù)慕?jīng)驗,浙江大學(xué)-英特爾多核技術(shù)實驗室是英特爾多核技術(shù)大學(xué)計劃中五個多核技術(shù)實驗室之一。這個計劃中,英特爾與本地大學(xué)合作,進行開發(fā)多核課程,聯(lián)合實驗室建設(shè)和師資培訓(xùn)。
在2006年秋冬學(xué)期,我們設(shè)計了多核研究生課程,并補充了相關(guān)課程的內(nèi)容,甚至在浙江大學(xué)遠程教育學(xué)院計算機本科中進行了多核編程的授課。此外,我們還與教育部合作開發(fā)多核編程精品課程,與其他四所高校合作的多核編程教材也在編寫過程之中。
在2006年9月,我們建設(shè)的英特爾多核技術(shù)大學(xué)合作網(wǎng)站(http://multicore.zju.edu.cn, http://multicore.net.cn)正式開通。這個Intel國內(nèi)唯一面向高校的多核在線平臺可以讓學(xué)生和老師們在線學(xué)習(xí)和討論多核技術(shù),提供了五所高校相關(guān)多核的課件、多核培訓(xùn)錄像、在線學(xué)習(xí)、在線測試。
我們設(shè)計多核課程是在多核技術(shù)教育方面進行的一次嘗試,尤其是將多核課程分為本科生部分和研究生部分,更是一次探索。通過這個系列課程,對于本科生,希望他們能了解流行的多核硬件平臺,掌握多核編程和程序評測、調(diào)優(yōu)技能,具有扎實的動手實踐能力;對于研究生,希望讓學(xué)生了解當(dāng)前多核計算機體系和多核芯片設(shè)計的基本原理、技術(shù)難點、目前發(fā)展狀況以及對計算機領(lǐng)域帶來的相關(guān)影響等,通過建立體系經(jīng)典理論研究和實際的發(fā)展方向之間的橋梁,為將來從事體系結(jié)構(gòu)領(lǐng)域、系統(tǒng)軟件領(lǐng)域以及相關(guān)領(lǐng)域的高水平研究打好扎實的基礎(chǔ)。