計算機組成原理參考論文(2)
計算機組成原理參考論文
計算機組成原理參考論文篇二
《計算機組成原理實驗教學(xué)方法改進》
摘要:目前的高校計算機課程教學(xué)正越來越偏重學(xué)生實踐能力的培養(yǎng),不少高校都設(shè)計了各類的實驗教學(xué)課程來提高學(xué)生們對于計算機課程的理解。文章介紹了一項自主開展的基于FPGA開發(fā)板的CPU設(shè)計實驗課程??偨Y(jié)了在課程的開展過程中所遇到的多項問題。并通過為學(xué)生提供更多的課程輔助工具及平臺,使得課程的開展更加高效且符合學(xué)生們的需求,提高了學(xué)生們在此項課程中的學(xué)習(xí)效率。
關(guān)鍵詞:MIPS;計算機組成原理;CPU實驗;教學(xué)改革;FPGA
1 概述
計算機學(xué)科是一門與實踐結(jié)合非常緊密的課程,純理論化的教學(xué)已經(jīng)無法滿足學(xué)生掌握計算機知識以及培養(yǎng)實踐能力的需求了。因此,計算機實驗課程在現(xiàn)有的計算機教學(xué)體系中所占的比例越來越高。該文針對所關(guān)注的計算機組成原理課程的教學(xué)方法,結(jié)合我們自己所開設(shè)的組成原理實踐課程,針對目前教學(xué)中所存在的一些問題,對組成原理的實驗課程方法作進一步的改進,使其更符合現(xiàn)在國內(nèi)教學(xué)現(xiàn)狀的需求,提高學(xué)生的實驗效率。
2 CPU實驗課程簡介
我們的CPU實驗課程主要目標(biāo)為:指導(dǎo)學(xué)生設(shè)計出一個符合MIPS標(biāo)準(zhǔn)的CPU。從設(shè)計初級的數(shù)字邏輯器件出發(fā),到實現(xiàn)一個完整的CPU,然后學(xué)生們可以圍繞自己設(shè)計的CPU編寫匯編器、高級語言編譯器甚至簡單的操作系統(tǒng)[1,2]。讓學(xué)生可以完整地了解計算機的運行原理。
參與本課程的學(xué)生所要實現(xiàn)的CPU使用如表1所示的31條指令,可以覆蓋大部分簡單程序的需求,其具體功能可以參考MIPS指令手冊[3-5]。
前兩個實驗比較簡單,主要為了讓學(xué)生能夠熟悉整個的開發(fā)環(huán)境與流程,而且譯碼器和選擇器也是將來在其他實驗中所需要使用到的部件。從第三個實驗開始,學(xué)生們將從簡到難地一步步實現(xiàn)CPU中的各個部件的設(shè)計,并在第七個實驗中最終完成一個完整的CPU。
3 實驗教學(xué)存在的問題
3.1 testbench用例不完善
我們的CPU實驗課程主要是對于硬件的設(shè)計,在硬件設(shè)計的過程中,testbench的編寫占有著舉足輕重的地位。而參與我們課程的學(xué)生絕大多數(shù)都是第一次接觸硬件的設(shè)計,并且對于CPU的各個部件并沒有一個良好的認識。所以對于這些參與到我們課程的學(xué)生來說,有相當(dāng)一部分學(xué)生沒有編寫完備的testbench的能力與意識。在遇到相對復(fù)雜的模塊時,學(xué)生們可能無法發(fā)現(xiàn)自己設(shè)計中的缺陷,這為以后的設(shè)計留下了一定的隱患。而且隨著工程越來越大時,初期的錯誤就越來越難被發(fā)現(xiàn)。
3.2 學(xué)生開發(fā)機器運行緩慢
我們這門實驗課是“口袋實驗室”,參與到我們這項課程的同學(xué)都會將實驗板帶回宿舍作實驗,由于,學(xué)生各自的計算機性能并不能完全滿足CPU實驗的設(shè)計需求。特別是隨著工程的增大,在生成CPU后仿真的模型以及生成開發(fā)板所需的電路文件時,往往需要相當(dāng)長的時間,并且這個過程在CPU的開發(fā)過程中往往需要執(zhí)行很多次。而在此期間,學(xué)生往往只能等待而無法進行課程的學(xué)習(xí),這會造成極大的時間浪費,降低學(xué)習(xí)效率的同時也很有可能增加學(xué)生的挫敗感。
3.3 應(yīng)用開發(fā)效率低下
CPU要執(zhí)行有一定功能的程序才會顯得有意義,我們的課程會鼓勵學(xué)生在自己設(shè)計的CPU上開發(fā)一些小應(yīng)用來顯示CPU的實用性。我們目前的課程只提供了基于我們課程所涉及指令的匯編器,但對于參加我們課程的學(xué)生而言,使用匯編程序編寫應(yīng)用所需要的技巧與經(jīng)驗往往他們都不具備,這增加了小應(yīng)用程序開發(fā)的難度,不利于學(xué)生們創(chuàng)意與想法的拓展。在我們的課程實踐中,學(xué)生們往往都會選擇開發(fā)一些類似的容易實現(xiàn)的應(yīng)用程序,造成了應(yīng)用程序的同質(zhì)化。
3.4 沒有統(tǒng)一的評分體系
任何課程都要面臨的一個考核的問題。如何能夠公平客觀的評價學(xué)生在整個課程中的表現(xiàn)不僅對于參與課程的學(xué)生,對于此課程未來的發(fā)展都至關(guān)重要。目前我們的課程主要依賴學(xué)生的自行演示以及助教的手工查看。此方法不僅效率低下,每周都要花大量的時間在實驗結(jié)果的檢查上,而且由于參與檢查的人數(shù)較多不容易保持評價標(biāo)準(zhǔn)的一致性。
目前我們的課程仍處于試驗性階段,參與的學(xué)生人數(shù)較少,若未來將此課程推廣,手工檢查的方式將無法滿足課程的需求。
4 針對目前教學(xué)中的問題的解決方法
4.1 統(tǒng)一的部件接口和測試平臺
通過給學(xué)生提供統(tǒng)一的部件接口,我們可以為學(xué)生提供統(tǒng)一的測試平臺。在完成每個部件的編寫后,學(xué)生們首先可以使用自己編寫的testbench來驗證自己設(shè)計的正確性,隨后再由統(tǒng)一的測試平臺來進一步確認部件的設(shè)計。這樣就可以有效地避免由于testbench的不完善而造成的部件設(shè)計缺陷,提高了每次部件實驗結(jié)果的可靠性,從而為接下來的實驗進程打下良好的基礎(chǔ)。
4.2 實驗結(jié)果驗證平臺
統(tǒng)一的部件接口使得自動化測試以及自動評分成為了可能。學(xué)生們可以將自己編寫的代碼提交到我們的測試平臺,運行統(tǒng)一的testbench,通過對比學(xué)生代碼的運行結(jié)果和標(biāo)準(zhǔn)的測試結(jié)果就可以為學(xué)生們編寫的部件提供一個客觀合理的評價。
我們可以根據(jù)學(xué)生每次提交的正確率以及最終通過測試所用的提交次數(shù)來作為學(xué)生每次實驗的評價參考。通過這種方法,我們可以不再逐個檢查學(xué)生的實驗結(jié)果,不僅可以免去每次人工檢查實驗結(jié)果的時間,也大大提高了每次實驗評價的客觀性。
4.3 CPU模擬器
我們的課程設(shè)計了一個基于部分MIPS指令集CPU的模擬器,其輸入可以為自行編寫的匯編程序,模擬器的運行的結(jié)果可以作為我們CPU運行結(jié)果的參照。同時我們課程中還擁有一個31條指令的匯編器,其輸入同樣為學(xué)生自行編寫的匯編程序,而輸出是二進制或十六進制的機器碼文件,該文件可以導(dǎo)入到學(xué)生自己的CPU中運行。然后學(xué)生可以通過對比Modelsim的仿真結(jié)果與模擬器的運行結(jié)果來驗證自己所設(shè)計的CPU的正確性。我們的課程也提供了一些小程序來幫助學(xué)生進行CPU的驗證。
4.4 綜合任務(wù)服務(wù)器
大多數(shù)情況下,學(xué)生們所使用的PC的性能進行完整的綜合與布線任務(wù)時往往都會花費很長的時間。我們可以為他們提供一個專門進行繁重計算任務(wù)的服務(wù)器。
學(xué)生們可以提交自己的設(shè)計到服務(wù)器上,通過服務(wù)器來生成所需的電路文件,將此文件下載到本地后載入FPGA,完成下板工作。鑒于服務(wù)器相對學(xué)生PC有著更出色的性能以及統(tǒng)一的工作環(huán)境,可以大大節(jié)省學(xué)生們完成一次設(shè)計修改的時間,提高學(xué)生們的開發(fā)效率。
4.5 合理使用C語言開發(fā)環(huán)境
高級語言可以大大降低程序的開發(fā)難度,而且通過完善的IDE(集成開發(fā)環(huán)境)可以更方便的確保程序的正確性。目前大部分學(xué)生所編寫的小程序都不會超出我們課程所使用的指令集。GCC編譯器在默認的配置下其編譯出的MIPS指令集不會超出MIPS-I中的所有指令。經(jīng)過多次測試,在多數(shù)情況下編譯出的指令多并不會超出我們目前所使用的31條指令。對于那些不在我們31條指令集范圍內(nèi)的MIPS-I指令,其中有相當(dāng)一部分指令是可以使用現(xiàn)有的指令組合來完成其功能的,我們僅需對GCC所編譯出的匯編程序進行一定的修改即可使用。這為我們使用C語言編寫開發(fā)板程序提供了很好的前提。
學(xué)生們可以首先使用C語言在現(xiàn)有的成熟IDE上進行編程,在驗證了程序的正確性后使用GCC將C語言編譯為MIPS-I的匯編程序,在對編譯完成的匯編程序進行一些修改后可以使用我們課程提供的匯編器生成機器碼來運行在學(xué)生自己設(shè)計的CPU上。
由于學(xué)生們對于C語言的熟悉程度要遠高于MIPS的匯編指令,通過合理使用C語言進行編程,可以大大降低學(xué)生們編寫應(yīng)用程序的難度。
5 總結(jié)
對實驗進行了諸多改進后,學(xué)生們在課程實驗中的開發(fā)效率得到了明顯的提升,這也使得學(xué)生們更有興趣將精力投入到實驗課程中。同時,在線平臺的引入也減小了開展試驗課程的人力投入,打下了推廣該實驗的基礎(chǔ)。該文結(jié)合了我們現(xiàn)有CPU實驗課程開展情況,針對實驗課程中所出現(xiàn)的問題,提出了針對性的解決方案。這一系列的改進方案將學(xué)生從一些不必要的負擔(dān)中解放出來,從而使得學(xué)生能夠?qū)⒏嗟木ν度氲接嬎銠C組成原理的學(xué)習(xí)中。這些方案的引入將會使得我們現(xiàn)有的課程變得更加具有可持續(xù)性,有利于將來此課程的進一步拓展。
參考文獻:
[1] 王力生,黃仁智. 面向計算機專業(yè)的遞進式綜合實驗教學(xué)方案[J]. 計算機教育,2013 (12):15-18.
[2] Lu S,Li G,Wang Y. CPU Design for Computer Integrated Experiment[J]. FECS12,2012(8):594-600.
[3] MIPS Technologies,MIPS32TM Architecture for Programmers Volume I: Introduction to the MIPS32TM Architecture [Z].Revision 1.00,2002.
[4] MIPS Technologies,MIPS32TM Architecture for Programmers Volume II:The MIPS32TM Instruction Set [Z], Revision 1.00,2002.
[5] MIPS Technologies,MIPS32TM Architecture for Programmers Volume III:The MIPS32TM Privileged Resource Architecture [Z].Revision 1.00,2002.
計算機組成原理參考論文相關(guān)文章: