趙小剛,丁 玲
(1.武漢大學(xué) 國際軟件學(xué)院軟件工程系,湖北 武漢 430072;2.湖北科技學(xué)院 計算機科學(xué)與技術(shù)學(xué)院,湖北 咸寧 437100)
基于FPGA的計算機體系結(jié)構(gòu)課程教學(xué)改革研究
趙小剛1,丁 玲2
(1.武漢大學(xué) 國際軟件學(xué)院軟件工程系,湖北 武漢 430072;2.湖北科技學(xué)院 計算機科學(xué)與技術(shù)學(xué)院,湖北 咸寧 437100)
傳統(tǒng)計算機體系結(jié)構(gòu)教學(xué)實驗中缺乏對核心計算機組件CPU的設(shè)計分析,本課程改革提出采用先進FPGA實驗平臺來設(shè)計CPU,增強學(xué)生對CPU功能及原理的理解。結(jié)合計算機體系結(jié)構(gòu)最新發(fā)展趨勢的新內(nèi)容的引入,以及微信課堂的新型MOOC教學(xué)方式,課程改革取得了滿意的效果。
FPGA;CPU;微信課堂;MOOC
計算機硬件的發(fā)展日新月異,強大的硬件技術(shù)的進步為軟件的性能提升帶來巨大的便利。因此了解和掌握計算機內(nèi)部的硬件組成、硬件工作機制等,能夠更加清晰的理解底層硬件為上層軟件提供的支持,也能夠優(yōu)化軟件的使用,更大程度發(fā)揮底層硬件的性能。所以對軟件工程系的學(xué)生來講,多接觸底層硬件,熟練掌握相關(guān)知識是成為一個優(yōu)秀軟件工程專業(yè)人才的必要條件。
計算機系統(tǒng)結(jié)構(gòu)是軟件工程專業(yè)的核心必修課程,是數(shù)字邏輯、組成原理、操作系統(tǒng)、編譯原理和計算機接口技術(shù)等專業(yè)課程的后續(xù)課程。該課程是一門綜合了上述多門基礎(chǔ)專業(yè)課程知識,其重要性決定了學(xué)生必須對它進行熟練掌握。但是在我院進行計算機體系結(jié)構(gòu)的教學(xué)過程中發(fā)現(xiàn),計算機體系結(jié)構(gòu)講述的內(nèi)容比較抽象,主要是關(guān)于計算機內(nèi)部各硬件的工作原理和運行機制,這些東西學(xué)生往往又沒有直觀的認(rèn)識。計算機體系結(jié)構(gòu)是一個涉及硬軟件等多方面知識的課程,一個知識點往往涉及到很多其他課程內(nèi)容,講解起來很費力,學(xué)生理解難度大;計算機體系結(jié)構(gòu)發(fā)展較快,現(xiàn)有書本內(nèi)容無法保持快速更新;學(xué)生也缺乏對這些新熱點問題進行思考和實驗的平臺,無法進行創(chuàng)新性工作。
針對這些問題,需要對體系結(jié)構(gòu)課程進行教學(xué)改革:及時更新教學(xué)內(nèi)容,鼓勵學(xué)生多思考體系結(jié)構(gòu)前沿問題;為學(xué)生提供良好的硬件實驗平臺,讓學(xué)生對計算機核心組件有直觀感受,同時該硬件平臺應(yīng)該有足夠能力滿足學(xué)生創(chuàng)新型實驗。下面對這些教改內(nèi)容進行描述。
課程內(nèi)容緊跟國內(nèi)外計算機體系結(jié)構(gòu)的發(fā)展,增加了以下內(nèi)容:
(1)指令系統(tǒng)中增加了MIPS指令集;
(2)流水線技術(shù)中增加了ARM流水線詳細(xì)梳理過程;
(3)存儲系統(tǒng)中增加了NVRAM,SSD以及PCRAM等新型存儲器件的介紹;
(4)在互聯(lián)網(wǎng)絡(luò)中增加了集群互聯(lián)的消息傳遞機制和詳細(xì)示例如Hadoop的使用;
(5)增加了MIPS體系結(jié)構(gòu)一章,介紹MIPS發(fā)展歷程、體系結(jié)構(gòu)和主流MIPS系統(tǒng)代表Altera FPGA的介紹;
(6)多核技術(shù)中增加了虛擬化技術(shù),GPU技術(shù)等;
(7)增加對人工智能等特定上層應(yīng)用的支持的指令系統(tǒng)、CPU新架構(gòu)的介紹。
通過增加業(yè)界和學(xué)術(shù)界流行的新的體系結(jié)構(gòu)發(fā)展熱點內(nèi)容,探討一些新的研究方向,有助于學(xué)生了解體系結(jié)構(gòu)的前沿知識,激發(fā)他們的創(chuàng)新意識,為他們以后的科學(xué)生涯打下基礎(chǔ)。
實驗內(nèi)容上也做較大更新,我們增加了很多新的實驗:
(1)簡易CPU設(shè)計;
(2)基于MIPS架構(gòu)的匯編程序和C程序設(shè)計;
(3)多核CPU交互;
(4)FPGA支持的機器學(xué)習(xí)算法加速。
本課程在教學(xué)方式中,綜合采用多種方式來激發(fā)學(xué)生學(xué)習(xí)的積極性,加入更多的實踐環(huán)節(jié)強化理論知識點的掌握程度。具體如下。
1.采用多媒體教學(xué)方式
計算機系統(tǒng)結(jié)構(gòu)具有較多的有關(guān)硬件工作原理的抽象理論,這些理論往往由于其他學(xué)科如操作系統(tǒng)、編譯原理和數(shù)字邏輯相關(guān),學(xué)生理解較困難??梢砸肼曇?、圖像和視頻等多種形式的多媒體素材,增強課堂教學(xué)中的理論知識的形象化描述,使教學(xué)媒體多樣化。我們將體系結(jié)構(gòu)中較難理解的Cache-主存映射機制,流水線的控制相關(guān)消除機制等進行了動畫展示,這樣不僅可以加深學(xué)生對抽象理論的理解,而且提高了學(xué)生學(xué)習(xí)興趣。
2.引入微信課程公眾號及微信課堂
隨著智能手機的普及,學(xué)生越來越喜歡通過這種社交工具進行交流和溝通。移動設(shè)備的好處是可以有效的利用碎片化的時間,隨時隨地就可以通過手機獲取信息和相互交互。而微信是學(xué)生利用的最多的手機應(yīng)用。因此可以將微信作為一個新的MOOC平臺。我們?yōu)橄到y(tǒng)結(jié)構(gòu)教學(xué)專門建立了一個課程公眾號,共有三大核心應(yīng)用:包括課程資料、在線評測和互助答疑等。
課程資料包括課程介紹、課程大綱、課程教案、課程特色和參考資料等,學(xué)生可以通過該板塊學(xué)習(xí)課程主要內(nèi)容;在線評測板塊主要是各章節(jié)核心知識點的一些考試題目,學(xué)生可以學(xué)完相應(yīng)章節(jié)后做些自我評測、檢測和鞏固自己的學(xué)習(xí)效果;互助答疑是一個學(xué)生之間、學(xué)生和教師之間進行就系統(tǒng)結(jié)構(gòu)相關(guān)難點進行交互討論的地方,提供給大家一個交流溝通的好場所。
互助答疑還有一個十分重要的小板塊,就是微信課堂或微信課程群。這是微信的一個強大的在線學(xué)習(xí)的功能。微信課堂是針對某一知識點(重點、難點或考點等)進行闡述的、短小精辟的教學(xué)視頻,它適合于智能手機、平板電腦等互聯(lián)網(wǎng)終端結(jié)合,支持翻轉(zhuǎn)課堂學(xué)習(xí)、移動學(xué)習(xí)以及碎片化學(xué)習(xí)等形式的在線教學(xué)應(yīng)用。我們使用手機錄制了Cache-主存映射機制講解視頻,CPU流水線工作原理等視頻,放在微信課堂上讓學(xué)生隨時觀看;此外通過在微信課堂上放置一些核心知識點的PPT,配合一些語音講解,使學(xué)生隨時隨地可以參加微課堂的學(xué)習(xí),進一步強化學(xué)生的認(rèn)知;學(xué)生對相關(guān)知識點有疑問,可以通過微信進行在線溝通。
3.新的實驗平臺的引入
(1)原有平臺功能受限
目前體系結(jié)構(gòu)實驗主要采用軟件模擬的方式來展示體系結(jié)構(gòu)中關(guān)鍵知識點的內(nèi)容,包括流水線工作原理和特性,Cache存儲器工作原理和優(yōu)點等。主要采用的軟件包括WinDLX和SimpleScalar。WinDLX能夠以圖形方式演示DLX流水線的工作原理。通過改變流水線的段數(shù)、緩沖器延時大小、每段花費時間等控制參數(shù),獲得不同流水線配置下的流水線加速比等。SimpleScalar模擬器是基于單處理器架構(gòu)模擬器,同時包含眾多的工具集。通過工具集可以模擬許多不同體系結(jié)構(gòu)的CPU,是研究人員使用軟件手段模擬和研究CPU架構(gòu)的方法。
這兩種模擬器的使用方法主要是先進行相關(guān)體系結(jié)構(gòu)參數(shù)設(shè)定,然后運行測試程序,最后根據(jù)程序運行結(jié)果驗證設(shè)計思路的,其實驗對象全部是驗證型實驗。對于學(xué)生而言,所做的工作僅僅只是系統(tǒng)結(jié)構(gòu)技術(shù)參數(shù)的給定和測試程序的運行,最后從一堆運行出來的數(shù)據(jù)中得到實驗結(jié)論。
使用軟件模擬的方式適合研究工作者進行學(xué)術(shù)研究和理論驗證,將對體系結(jié)構(gòu)中的新思想體現(xiàn)在相應(yīng)結(jié)構(gòu)參數(shù)中,通過輸出結(jié)果進行學(xué)術(shù)論證的常用方法,但是對于理論知識不夠完善成熟的本科學(xué)生而言,此種實驗形式過于枯燥。學(xué)生做完實驗后,對整個實驗過程缺乏感性認(rèn)識,更談不上進行進一步的創(chuàng)新工作,實驗做到最后流于形式。因此迫切需要一種對設(shè)計型實驗進行實踐操作的實驗方法,同時對驗證型實驗也有直觀的驗證。
(2)可以支持CPU設(shè)計的FPGA平臺
計算機體系結(jié)構(gòu)中十分重要的一個內(nèi)容就是處理器的特性和工作機制。目前的體系結(jié)構(gòu)教學(xué)課程中只有處理器結(jié)構(gòu)描述,功能介紹,學(xué)生聽起來很抽象,沒有直觀的認(rèn)識,最好的辦法是能夠讓學(xué)生動手設(shè)計一個CPU,將書本上的理論知識完全融入到實踐中。
對于CPU設(shè)計來說,目前有兩種方式:一種為軟件方式,如SimpleScale等只是實現(xiàn)對CPU功能的模擬,不能對CPU內(nèi)部工作流程進行控制,指令集的定制等;第二種為采用單片機形式來驗證CPU功能,如驗證CPU對存儲器的訪問功能,對總線的訪問等,將CPU當(dāng)作黑盒,根本的原因是單片機的功能固定,不能定制化。
塊狀潰瘍:黃色塊狀1 mm2記1分,黑色塊狀1 mm2記2分(塊狀面積計算方法S=長徑/2×短徑/2×π)。
合理的方式是采用硬件方式來設(shè)計CPU,主流的方法是采用FPGA。FPGA為可編程陣列,通過硬件描述語言可以對FPGA芯片編程,定義不同的功能部件和內(nèi)部連接方式,包括運算功能的定義,指令集的支持,存儲部件的連接等。定義好相關(guān)功能后,可以直接在上位機上進行模擬仿真,驗證設(shè)計方案;也可以方便的下載到FPGA上,通過硬件運行來輸出結(jié)果。我們在實驗課程中采用的是國際通用的Altera DE2教育平臺,該平臺功能十分強大,除了核心FPGA外,還連接有內(nèi)存接口,外設(shè)接口等,這些接口可以用來與設(shè)計好的CPU進行交互。
DE2-115開發(fā)板除了可以支持CPU設(shè)計外,還可以支持很多的體系結(jié)構(gòu)實驗,包括CPU-存儲器訪問實驗,CPU-外設(shè)訪問實驗,總線通訊實驗和支持流水線功能的復(fù)雜CPU設(shè)計,多核CPU等。由于FPGA可以方便的進行硬件編程,它可以支持不同指令集,不同體系結(jié)構(gòu)的CPU設(shè)計,也可以支持由簡到繁、逐步提升的設(shè)計模式。
(3)支持高級課程實驗開發(fā)
DE2開發(fā)板與眾不同的地方在于它除了可以支持CPU設(shè)計之外,在它的FPGA芯片中還包含一個Nios軟核,該軟核主頻在200MHz左右,基于MIPS架構(gòu)。加上FPGA上集成的外設(shè)接口,存儲器接口,整個母版形成了一個完整的專用MIPS指令集的計算機系統(tǒng)。使用該系統(tǒng)可以支持MIPS模式的匯編程序設(shè)計,高級語言C語言的程序開發(fā)。
由于基于Nios架構(gòu)的專用處理器不同于常用的通用Intel處理器模式,加上其指令集可以定制,因此可以將它適用于專用場合,用來加速某些特定的數(shù)據(jù)的處理過程,加速某些特定算法的運算過程,如數(shù)字信號處理、機器學(xué)習(xí)等領(lǐng)域。對于學(xué)有余力或希望進行創(chuàng)新實驗的學(xué)生來說,可以用該平臺進行定制化開發(fā)工作,參與電子設(shè)計大賽。
總體來說,本課程改革的特色如下。
1.引入了體系結(jié)構(gòu)熱點前沿知識,鼓勵學(xué)生自主學(xué)習(xí)和討論
隨著計算機硬件水平發(fā)展速度的不斷提升,計算機體系結(jié)構(gòu)方向的新技術(shù)也不斷涌現(xiàn)。AlphaGo就采用了GPU技術(shù)來加快神經(jīng)網(wǎng)絡(luò)算法的求解速度,智能手機上采用的不同架構(gòu)的多核技術(shù)等。本課程改革會與時俱進,不斷將新的知識點引入課堂,提高學(xué)生的眼界;引導(dǎo)學(xué)生主動查閱最新文獻(xiàn),討論學(xué)科發(fā)展前沿知識。
為了將計算機體系結(jié)構(gòu)的較抽象的硬件知識點講透徹,我們采用了較多的多媒體手段來制作課件,使用聲音、圖像和動畫來演示復(fù)雜的硬件工作機制;為了讓學(xué)生在講課之前對所講內(nèi)容有較好的認(rèn)識,在課后能夠檢驗學(xué)習(xí)效果,我們采用了微信這種能夠隨時隨地學(xué)習(xí)和溝通的工具,建立了體系結(jié)構(gòu)課程公眾號,學(xué)生可以通過公眾號方便地進行課程學(xué)習(xí),自我評測和疑難點討論。
3.采用先進的FPGA硬件實驗平臺,豐富和完善體系結(jié)構(gòu)實驗環(huán)境
CPU是計算機的核心,也是體系結(jié)構(gòu)中需要重點講述的計算機組件。一直以來,由于不能對CPU內(nèi)部展開,學(xué)生無法準(zhǔn)確理解CPU工作原理。而傳統(tǒng)的CPU實驗只是將CPU當(dāng)作黑盒,驗證其功能。本課程改革引入了最新的FPGA硬件平臺,該平臺可以支持電路設(shè)計和硬件編程,學(xué)生可以根據(jù)需要進行定制化的CPU設(shè)計,加入不同的指令集來加速不同的上層應(yīng)用包括機器學(xué)習(xí)程序的運行。學(xué)生可以使用該FPGA設(shè)計不同的嵌入式程序來驅(qū)動不同的外部設(shè)備,進行創(chuàng)新型實驗。
自從我院從2014年開展計算機體系結(jié)構(gòu)課程改革以來,學(xué)生的學(xué)習(xí)熱情得到了極大提高,通過新的FPGA實驗平臺開展了較多的課程實驗,體系結(jié)構(gòu)中的眾多重難點知識學(xué)生理解難度大大降低。對比2015年體系結(jié)構(gòu)期末考試結(jié)果來看,在知識點覆蓋相似的條件下,不及格率從12%下降到8%,而優(yōu)秀率提高了3個百分點。
本文對我院引入FPGA實驗平臺進行計算機體系結(jié)構(gòu)課程教學(xué)改革進行了詳細(xì)分析和介紹。通過一系列新內(nèi)容和新教學(xué)方法的引入,學(xué)生不僅對計算機體系結(jié)構(gòu)的基礎(chǔ)知識點認(rèn)識更加深入,而且對目前體系結(jié)構(gòu)發(fā)展的熱點問題有了濃厚的興趣;新的FPGA實驗平臺更使得學(xué)生可以將體系結(jié)構(gòu)的理論知識轉(zhuǎn)化為實際的實驗過程,大大強化其感性認(rèn)知,抽象知識點就可以得到深刻理解;強大的硬件平臺更可以支持學(xué)生進行創(chuàng)新創(chuàng)業(yè)活動。
隨著計算機體系結(jié)構(gòu)技術(shù)的不斷進步,社會上對既掌握熟練的軟件編程技術(shù),又對計算機硬軟件系統(tǒng)的工作原理有深刻了解的軟件工程人才需求越來越大。我們的課程改革也要不斷引入新的知識點,采用新的教學(xué)方法來不斷改進教學(xué)質(zhì)量,努力培養(yǎng)具備現(xiàn)代計算機系統(tǒng)結(jié)構(gòu)視角的軟件工程人才。
[1] 方娟.計算機系統(tǒng)結(jié)構(gòu)課程教學(xué)改革與實踐[C]. 全國計算機新科技與計算機教育學(xué)術(shù)大會,2010.1 136~1 140.
[2] 黃彩霞, 徐惠. 基于Learning-by-doing的計算機系統(tǒng)結(jié)構(gòu)課程改革[J].計算機教育, 2011, (18):23~26.
[3] 黃彩霞, 楊鳳年. “計算機系統(tǒng)結(jié)構(gòu)”實驗課程改革和實踐[J]. 計算機教育, 2008,(14):156~159.
[4] 王華, 徐潔, 王雁東, 等. “計算機系統(tǒng)結(jié)構(gòu)”課程改革與探索[J]. 計算機教育, 2009, (10).
[5] 端文宗. 基于FPGA的計算機體系結(jié)構(gòu)實驗教學(xué)硬件平臺的設(shè)計與實現(xiàn)[J]. 中國電子商情(通信市場), 2012,(5):76~82.
2095-4654(2016)12-0064-04
2016-04-22 基金項目:湖北省自然基金項目(201FFB04505)資助
TP303-4
A