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