郭煒 張鋼
文章編號:1672-5913(2015)03-0090-04
中圖分類號:G642
摘 要:針對計算機(jī)設(shè)計與調(diào)試課程教學(xué)內(nèi)容落后于計算機(jī)系統(tǒng)發(fā)展的情況,介紹在CDIO理念指導(dǎo)下重新構(gòu)建計算機(jī)設(shè)計與調(diào)試課程的教學(xué)內(nèi)容和實踐過程,提出以設(shè)計PowerPC擴(kuò)展指令協(xié)處理器中的VSFX指令作為教學(xué)內(nèi)容的課程改革方案,并在教學(xué)過程中進(jìn)行實踐。
關(guān)鍵詞:CDIO;計算機(jī)設(shè)計與調(diào)試;課程改革;向量協(xié)處理器;AltiVec技術(shù)
1 背景
CDIO工程教育模式是近年來國際工程教育改革的重要成果。CDIO代表構(gòu)思(conceive)、設(shè)計(design)、實現(xiàn)(implement)和運行(operate)。CDIO模式以產(chǎn)品研發(fā)到產(chǎn)品運行的生命周期為載體,使學(xué)生以主動的、實踐的、課程之間有機(jī)聯(lián)系的方式學(xué)習(xí)工科課程。CDIO模式教學(xué)以項目開發(fā)為主線展開,整個教學(xué)過程是一種由教師發(fā)起并維持的、在教師指導(dǎo)下以學(xué)生為主體的協(xié)作、交流過程。
以前,計算機(jī)設(shè)計與調(diào)試課程的任務(wù)是讓學(xué)生用常規(guī)集成電路在面板上通過接線的方式,設(shè)計實現(xiàn)一個有十幾條基本指令的微程序控制器。若干年前,讓學(xué)生用常規(guī)集成電路設(shè)計實現(xiàn)一個微程序控制器,無論是從設(shè)計的綜合性方面、從硬件系列課程內(nèi)容的貫通性方面,還是從設(shè)計實現(xiàn)的工作量方面都是比較合適的,而且計算機(jī)設(shè)計與調(diào)試課程的教學(xué)效果也不錯。但是,計算機(jī)系統(tǒng)快速發(fā)展,不論是在微處理器架構(gòu)方面,還是在計算機(jī)系統(tǒng)設(shè)計與實現(xiàn)方法方面都發(fā)生了巨大的變化,比如在設(shè)計過程中,硬件設(shè)計語言已經(jīng)被廣泛采用,并且在計算機(jī)系統(tǒng)設(shè)計中FPGA已經(jīng)成為基本的手段,計算機(jī)輔助硬件設(shè)計和仿真平臺已經(jīng)成為基本設(shè)計工具,精簡指令系統(tǒng)RISC架構(gòu)在大量的微處理器中被廣泛使用,而微程序設(shè)計技術(shù)已經(jīng)很少在CPU中使用了。顯然,以前計算機(jī)設(shè)計與調(diào)試課程的內(nèi)容和方法已經(jīng)不再適合今天的現(xiàn)實情況了。
我們希望計算機(jī)設(shè)計與調(diào)試課程能夠跟上計算機(jī)技術(shù)的發(fā)展,使學(xué)生通過課程學(xué)習(xí),掌握當(dāng)前主流設(shè)計方法和設(shè)計主流處理器系統(tǒng)架構(gòu),從而有效提高計算機(jī)系統(tǒng)的設(shè)計能力。在教學(xué)方法上,我們借鑒CDIO教學(xué)理念,在整個教學(xué)過程中突出實踐動手和自主學(xué)習(xí)的特點。
2 PowerPC AltiVec 技術(shù)介紹
PowerPC是一種RISC架構(gòu)的CPU。PowerPC處理器有廣泛的應(yīng)用,是目前市面上主流的處理器。AltNec技術(shù)是摩托羅拉PowerPC RISC處理器體系結(jié)構(gòu)的向量并行處理技術(shù),是現(xiàn)有PowerPC體系結(jié)構(gòu)的延伸,它帶有128位向量處理裝置,可以同時處理整數(shù)和浮點數(shù)據(jù),AltiVec的頂層架構(gòu)如圖1所示。AltiVec技術(shù)的操作是單指令多重數(shù)據(jù)并行處理,是一種短向量并行體系結(jié)構(gòu)。根據(jù)數(shù)據(jù)大小不同,向量分別具有4、8或16元素長度,和以前巨型計算機(jī)的長向量體系結(jié)構(gòu)明顯不同。AltiVec技術(shù)可以應(yīng)用于通信業(yè)、多媒體等注重性能的應(yīng)用方案中,達(dá)到提高性能的目的。
3 課程內(nèi)容改革
3.1 課程內(nèi)容
計算機(jī)設(shè)計與調(diào)試課程是天津大學(xué)汁算機(jī)科學(xué)與技術(shù)專業(yè)計算機(jī)T程方向的一門課程設(shè)計類課程,于大三下學(xué)期開設(shè),2學(xué)分,共40學(xué)時計算機(jī)設(shè)計與調(diào)試課程以PowerPC RISC處理器的指令系統(tǒng)為參考,通過設(shè)計一個PowerPC擴(kuò)展指令協(xié)處理器AltiVec模塊L|i的VSFX指令部分,將計算機(jī)組成原理、計算機(jī)系統(tǒng)結(jié)構(gòu)、匯編語言、VLSI系統(tǒng)設(shè)計這幾門課程所學(xué)的知識結(jié)合起來,由學(xué)生自己設(shè)計一個簡單的“計算機(jī)”,進(jìn)而加深對相關(guān)課程的理解,掌握設(shè)計方法,熟悉相關(guān)設(shè)計工具。課程中涉及到的主要內(nèi)容包括:PowerPC405核、加速處理單元控制器(APUController)和協(xié)處理器之間的接口和處理流程、設(shè)計流程與功能驗證、PowerPC AltiVec指令集、Power ISA中向量加法指令(vadduhm)實例、陽量簡單定點單元(VSFX)、AltiVec硬件設(shè)計頂層架構(gòu)和VSFX模塊與頂層的連接信號等
該課程使用System Verilog語言構(gòu)建功能驗證平臺。隨著集成電路芯片設(shè)汁的規(guī)模不斷增大,芯片驗證工作成了制約芯片設(shè)計水平的關(guān)鍵性因素。傳統(tǒng)的驗證方法主要依靠人工進(jìn)行驗證,效率較低。System Verilog語言是一種專門用來搭建測試環(huán)境的語言。System Verilog語言將硬件描述語言同高級驗證語言相結(jié)合,提供隨機(jī)約束、功能覆蓋率、斷言和面向?qū)ο蟮刃录夹g(shù)。課程要求學(xué)生學(xué)習(xí)并使用System Vcrilog語言建立一個可以自動生成測試向量的測試環(huán)境,用這個測試環(huán)境檢查學(xué)生設(shè)計的系統(tǒng)和功能一
選擇協(xié)處理器AltiVec模塊作為課程的設(shè)計內(nèi)容,有以下幾個方面的考慮:由于向量計算在功耗和并行度等方面的優(yōu)勢,使其在現(xiàn)代微處理器設(shè)計中的作用正在被重新認(rèn)識;向量計算的內(nèi)容是目前計算機(jī)組成原理和計算機(jī)系統(tǒng)結(jié)構(gòu)等課程中比較薄弱的地方,計算機(jī)設(shè)計與調(diào)試課程恰好可以對此加以彌補(bǔ);設(shè)計向量協(xié)處理器可以避免與計算機(jī)組成原理、計算機(jī)系統(tǒng)結(jié)構(gòu)、VLSI系統(tǒng)設(shè)計等課程的設(shè)計型實驗內(nèi)容相沖突;設(shè)計向量協(xié)處理器可以使學(xué)生學(xué)會使用從行為級建模到用硬件描述語言設(shè)計、從仿真到開發(fā)板上的驗證等全過程的設(shè)計軟件和設(shè)計環(huán)境。
3.2 課程設(shè)計任務(wù)及教學(xué)組織形式
3.2.1 課程設(shè)計任務(wù)
課程設(shè)計任務(wù)包括4部分內(nèi)容。
(1)模塊設(shè)計:采用Verilog HDL,設(shè)計PowerPC協(xié)處理器AltiVec模塊中部分VSFX指令。
(2)頂層模塊集成:將設(shè)計的VSFX指令模塊與其他模塊集成,了解模塊與模塊之間的關(guān)系。
(3)仿真驗證:用AltiVec匯編指令編寫測試程序,通過匯編編譯器生成機(jī)器代碼。在集成環(huán)境下,仿真驗證設(shè)計的正確性。
(4) FPGA開發(fā)版上的驗證:將所設(shè)計的RTL代碼放置到FPGA開發(fā)板上,驗證所設(shè)計的硬件實現(xiàn)的正確性。使學(xué)生進(jìn)一步掌握開發(fā)板上的接口電路在調(diào)試過程中的作用等。
為了使課程設(shè)計的設(shè)計工作循序漸進(jìn),參考CDIO教學(xué)模式,把整個設(shè)計任務(wù)分為8個相互聯(lián)系、難度逐步增加的子任務(wù)。
子任務(wù)一:閱讀指令定義文檔,對小組選定的5條不同類型的指令給予特別關(guān)注。
子任務(wù)二:以小組為單位,講解和展示小組將要實現(xiàn)的5條不同類型指令的功能。
子任務(wù)三:用C語言實現(xiàn)所要設(shè)計的5條不同類型指令的功能,并設(shè)計功能測試程序,以C語言實現(xiàn)的功能測試的輸入和輸出結(jié)果為“標(biāo)準(zhǔn)測試程序”,作為下一步硬件設(shè)計的測試向量。
子任務(wù)四:學(xué)習(xí)AltNec硬件架構(gòu)設(shè)計;看懂AltiVec中除VSFX模塊外的所有RTL代碼(Register-Transfer-Level code);畫出AltiVec toplevel的硬件架構(gòu)圖。
子任務(wù)五:定義所要設(shè)計的VSFX模塊的架構(gòu)、子模塊;要求畫出模塊的框圖,標(biāo)注寄存器及多路選擇器的位置,明確下一步RTL代碼的關(guān)鍵內(nèi)容。
子任務(wù)六:進(jìn)行VSFX模塊的RTL代碼設(shè)計及仿真驗證;完成二級譯碼電路設(shè)計;完成功能模塊設(shè)計。
子任務(wù)七:進(jìn)行頂層設(shè)計及仿真驗證。將所設(shè)計的VSFX模塊與top連接,形成完整的AltiVec模塊;進(jìn)行AltiVec層次的驗證;輸入所設(shè)計的5條指令的匯編指令,采用VSFX模塊級的數(shù)據(jù),結(jié)果與之前的VSFX模塊級仿真數(shù)據(jù)對比。在基本功能測試完成后,將進(jìn)一步在SystemVerilog語言建立的自動生成測試向量的測試環(huán)境中,通過運行生成的100組隨機(jī)向量,檢查學(xué)生設(shè)計的系統(tǒng)和功能的正確性,保證測試覆蓋率。
子任務(wù)八:進(jìn)行FPGA開發(fā)板上的驗證。RTL級的仿真驗證僅僅能保證所設(shè)計的硬件的邏輯功能正確性。通過將所設(shè)計的RTL代碼放置到FPGA開發(fā)板上才能夠驗證所設(shè)計的硬件實現(xiàn)的時序正確性及工作速度是否達(dá)到設(shè)計要求。最后針對FPGA開發(fā)板的邏輯綜合與靜態(tài)時序分析,驗證設(shè)計的時序的正確性以及所設(shè)計的電路可以在什么時鐘頻率下工作等。
3.2.2教學(xué)組織形式
在課程設(shè)計開始時,教師要求學(xué)生自愿組合,每組2人,每組學(xué)生從70條VSFX指令中選出5條不同類型的指令,作為準(zhǔn)備由硬件實現(xiàn)的指令,這就是小組的設(shè)計任務(wù)。盡管每個小組都要完成同樣的8個子任務(wù),但是由于每組學(xué)生所選擇的5條指令并不相同,所以每個小組實際完成的任務(wù)并不一樣。通過布置任務(wù)、教師引導(dǎo)、分組討論、學(xué)生實踐、擴(kuò)展閱讀、溝通交流、實現(xiàn)設(shè)計、完成測試等一系列教學(xué)環(huán)節(jié),讓學(xué)生完成一個現(xiàn)代處理器PowerPC擴(kuò)展指令協(xié)處理器AltiVec模塊中VSFX指令部分的設(shè)計。
在整個課程設(shè)計過程中,教師講得很少,主要靠學(xué)生自學(xué)、討論和實踐。在每個實驗的關(guān)鍵節(jié)點上,教師都會安排學(xué)生做課堂匯報。在學(xué)牛進(jìn)行匯報過程中,教師及時糾正學(xué)生的錯誤,正確引導(dǎo)學(xué)生一步一步完成任務(wù)。教師給學(xué)生準(zhǔn)備了必要的參考閱讀資料,包括1 300多頁的IBM Power處理器設(shè)計文檔“Book-IChapter 6.Vector Facility”、260多頁的飛思卡爾公司技術(shù)手冊“AltiVec Technology ProgrammingInterface Manual”、IBM公司和摩托羅拉公司發(fā)表在國際會議上的對PowerPC做向量擴(kuò)展的文章“A Low-power, High-speed Implementation of aPowerPC Microprocessor Vector Extension”和VSFX指令第一級譯碼器文檔等。另外,教師要搭建AltiVec模塊的集成與驗證平臺。
4 結(jié)語
在2011級計算機(jī)工程專業(yè)方向本科生的汁算機(jī)設(shè)計與調(diào)試課程中,我們按照上述新的教學(xué)內(nèi)容和教學(xué)組織形式進(jìn)行了嘗試。學(xué)生經(jīng)歷r一個完整的系統(tǒng)設(shè)計過程,所有學(xué)生的設(shè)計都通過了仿真檢測和在FPGA開發(fā)板上的測試。實踐表明,教學(xué)內(nèi)容和教學(xué)組織形式的改革調(diào)動了學(xué)生學(xué)習(xí)的積極性和主動性,取得了非常好的教學(xué)效果。