邵雄凱 楊習(xí)偉
摘要:在分析現(xiàn)有《計(jì)算機(jī)組成原理》實(shí)驗(yàn)教學(xué)現(xiàn)狀的基礎(chǔ)上,針對(duì)軟件類專業(yè)學(xué)生硬件基礎(chǔ)知識(shí)薄弱、一般地方高校硬件設(shè)備不足等實(shí)際情況,提出基于Logisim平臺(tái)的《計(jì)算機(jī)組成原理》實(shí)驗(yàn)教學(xué)方法。采用該方法能夠降低學(xué)生實(shí)驗(yàn)難度、消除軟件類專業(yè)學(xué)生對(duì)硬件實(shí)驗(yàn)的畏懼心理,提高實(shí)驗(yàn)效率,讓學(xué)生更好掌握CPU設(shè)計(jì)方法和過(guò)程。具體闡述了采用Logisim平臺(tái)開(kāi)展實(shí)驗(yàn)教學(xué)的優(yōu)點(diǎn)、實(shí)驗(yàn)教學(xué)內(nèi)容設(shè)計(jì)、教學(xué)和管理方式等,可為其它高校開(kāi)展《計(jì)算機(jī)組成原理》實(shí)驗(yàn)教學(xué)提供參考。
關(guān)鍵詞:計(jì)算機(jī)專業(yè);實(shí)驗(yàn)教學(xué);Logisim平臺(tái)
DOI:10.11907/rjdk.191110
中圖分類號(hào):G434 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2019)012-0208-03
0引言
實(shí)驗(yàn)教學(xué)在計(jì)算機(jī)類專業(yè)教學(xué)中一直占有重要地位,其作用不可替代。《計(jì)算機(jī)組成原理》是計(jì)算機(jī)專業(yè)的一門(mén)核心課程,在整個(gè)培養(yǎng)體系中起著承上啟下的作用。王志英教授等提出計(jì)算機(jī)類專業(yè)學(xué)生重在計(jì)算機(jī)系統(tǒng)能力培養(yǎng),要建立計(jì)算機(jī)系統(tǒng)的整機(jī)概念和系統(tǒng)觀,通過(guò)《計(jì)算機(jī)組成原理》課程實(shí)驗(yàn)教學(xué),讓學(xué)生從計(jì)算機(jī)最底層建立整機(jī)概念;袁春風(fēng)教授等從2008年開(kāi)始采用EDA技術(shù)在FPGA上完成《計(jì)算機(jī)組成原理》課程CPU設(shè)計(jì)實(shí)驗(yàn),采用先部件級(jí)實(shí)驗(yàn),如存儲(chǔ)器實(shí)驗(yàn)、寄存器組實(shí)驗(yàn)和ALU實(shí)驗(yàn)等,再到簡(jiǎn)單的CPU設(shè)計(jì)、復(fù)雜的流水線CPU設(shè)計(jì),最后完成20~50條MIPS指令的五段流水線CPU設(shè)計(jì),且?guī)в挟惓L幚砗椭袛喙δ?高小鵬教授提出《計(jì)算機(jī)組成原理》實(shí)驗(yàn)教學(xué)要以數(shù)字邏輯課程實(shí)驗(yàn)所開(kāi)發(fā)的功能部件為基礎(chǔ),以MIPS CPU設(shè)計(jì)為主線展開(kāi),并提出了CPU工程化綜合方法;劉衛(wèi)東教授等采用支持50余條MIPS指令的計(jì)算機(jī)系統(tǒng)作為硬件開(kāi)發(fā)平臺(tái),并完成了指令系統(tǒng)模擬器、編譯器等一系列軟件系統(tǒng)開(kāi)發(fā),支撐硬件實(shí)驗(yàn)教學(xué)平臺(tái)運(yùn)行。以上方法雖好,但需要學(xué)生有良好的硬件知識(shí)基礎(chǔ),對(duì)于地方普通高校而言,開(kāi)展實(shí)驗(yàn)難度較大?!队?jì)算機(jī)組成原理》課程實(shí)驗(yàn)可以選用軟件模擬或者仿真系統(tǒng)加以實(shí)現(xiàn)。
1實(shí)驗(yàn)教學(xué)現(xiàn)狀
《計(jì)算機(jī)組成原理》是一門(mén)偏硬件的課程,課程知識(shí)點(diǎn)多且面廣、概念抽象、繁雜難懂,學(xué)生學(xué)習(xí)該課程的積極性普遍不高。學(xué)生覺(jué)得“難學(xué)”,教師認(rèn)為“難教”。
當(dāng)前,《計(jì)算機(jī)組成原理》實(shí)驗(yàn)平臺(tái)基本上采用硬件平臺(tái),主要有兩種方式。第一種是采用固定傳統(tǒng)試驗(yàn)箱,試驗(yàn)箱帶有必需的實(shí)驗(yàn)電路模塊,通過(guò)導(dǎo)線連接、撥動(dòng)開(kāi)關(guān)和編寫(xiě)微程序達(dá)到實(shí)驗(yàn)要求,這種實(shí)驗(yàn)形式難以讓學(xué)生直觀地看到電路原理圖和部件的硬件結(jié)構(gòu),因而無(wú)法讓學(xué)生真正深入理解計(jì)算機(jī)各部件工作原理、控制信號(hào)如何產(chǎn)生和數(shù)據(jù)如何流動(dòng),難以建立計(jì)算機(jī)系統(tǒng)的整機(jī)概念;第二種是利用EDA技術(shù)在FPGA上完成實(shí)驗(yàn),所有實(shí)驗(yàn)電路都可以自己設(shè)計(jì),用某種硬件描述語(yǔ)言描述電路,仿真實(shí)驗(yàn)結(jié)果下載到FPGA實(shí)驗(yàn)版,再驗(yàn)證結(jié)果。這也是當(dāng)前通用的實(shí)驗(yàn)方法。
無(wú)論哪一種方式,對(duì)學(xué)生硬件知識(shí)要求都較高。學(xué)生由于硬件知識(shí)基礎(chǔ)薄弱,動(dòng)手能力不強(qiáng),因此對(duì)于這門(mén)課程的實(shí)驗(yàn)普遍抱有畏難情緒。學(xué)生要么搭同組“便車”、要么照抄、要么干脆逃避,難以達(dá)到理想實(shí)驗(yàn)效果。
要順利完成實(shí)驗(yàn)任務(wù),學(xué)生除熟悉數(shù)字邏輯和《計(jì)算機(jī)組成原理》相關(guān)知識(shí)外,還需掌握一種硬件描述語(yǔ)言(如Verilog或VHDL)和一種EDA仿真平臺(tái)(如Vivado或QuartusⅡ)。實(shí)驗(yàn)過(guò)程繁瑣,學(xué)生需選擇電路模式、設(shè)置芯片參數(shù)、鎖定引腳、連接USB、下載配置文件等,這一系列過(guò)程既繁瑣且容易出錯(cuò),最大問(wèn)題是與實(shí)驗(yàn)?zāi)繕?biāo)任務(wù)關(guān)系不密切,浪費(fèi)很多時(shí)間,降低了實(shí)驗(yàn)效果。
計(jì)算機(jī)類偏硬件專業(yè)的學(xué)生一定要克服這些困難,熟練掌握相關(guān)知識(shí)和技能。但偏軟件類專業(yè),比如軟件工程、信息安全、大數(shù)據(jù)、數(shù)字媒體等,要求學(xué)生短時(shí)間內(nèi)較好掌握硬件描述語(yǔ)言、熟悉軟硬件開(kāi)發(fā)平臺(tái)以及繁瑣的實(shí)驗(yàn)過(guò)程實(shí)屬不易,學(xué)生畏難情緒嚴(yán)重。同時(shí)對(duì)師資水平要求也較高,并且抽象的硬件描述語(yǔ)言難以使學(xué)生建立設(shè)計(jì)與電路的具體對(duì)應(yīng)關(guān)系。因此,如果過(guò)分強(qiáng)調(diào)硬件上的實(shí)現(xiàn),可能難以達(dá)到《計(jì)算機(jī)組成原理》課程實(shí)驗(yàn)和掌握CPU設(shè)計(jì)方法的初衷。
2實(shí)驗(yàn)平臺(tái)選擇與使用
2.1Logisim平臺(tái)選擇
對(duì)于偏軟件類專業(yè),《計(jì)算機(jī)組成原理》課程及實(shí)驗(yàn)的目標(biāo)是讓學(xué)生掌握計(jì)算機(jī)各大部件工作原理,熟悉CPU設(shè)計(jì)方法,建立計(jì)算機(jī)系統(tǒng)整機(jī)概念,從而熟悉程序在計(jì)算機(jī)中執(zhí)行的過(guò)程,并能夠編寫(xiě)出高效率的程序,正確分析和解決程序執(zhí)行過(guò)程中出現(xiàn)的各種問(wèn)題。因此,應(yīng)將實(shí)驗(yàn)重點(diǎn)集中在對(duì)各部件原理的深入理解和CPU設(shè)計(jì)方法的掌握上,盡量減少繁瑣的硬件實(shí)驗(yàn)過(guò)程,這樣更有利于提升實(shí)驗(yàn)效果。
湖北工業(yè)大學(xué)偏軟件類專業(yè)實(shí)驗(yàn)平臺(tái)采用Logisim仿真軟件,它是基于Java開(kāi)發(fā)的應(yīng)用程序,可支持任何Java環(huán)境的平臺(tái),由于是免費(fèi)開(kāi)源軟件,因此也不需要商業(yè)軟件授權(quán),不產(chǎn)生支付費(fèi)用問(wèn)題,對(duì)于經(jīng)費(fèi)緊張的普通高校更加適合。Logisim采用圖行化界面,便于學(xué)習(xí)、易于上手,電路圖設(shè)計(jì)和仿真非常方便高效,完全可以脫離硬件仿真環(huán)境運(yùn)行。Logisim軟件占用計(jì)算機(jī)資源很小,便于學(xué)生在自己電腦上安裝和使用,實(shí)驗(yàn)靈活性強(qiáng),不受時(shí)間和空間限制,教師對(duì)實(shí)驗(yàn)結(jié)果的檢查和驗(yàn)收十分便捷。
2.2Logisim平臺(tái)使用
圖1是Logisim基本操作界面,界面簡(jiǎn)潔、使用方便。為了讓學(xué)生盡快上手實(shí)驗(yàn),可在實(shí)驗(yàn)之前講解一個(gè)完整的實(shí)驗(yàn)案例,對(duì)基本操作方法、常用器件、子電路創(chuàng)建和使用、電路仿真測(cè)試、庫(kù)文件加載、容易出現(xiàn)的問(wèn)題等進(jìn)行詳細(xì)講解。
3實(shí)驗(yàn)內(nèi)容設(shè)計(jì)與組織
3.1實(shí)驗(yàn)內(nèi)容
為了讓學(xué)生加深對(duì)計(jì)算機(jī)各大組成部件工作原理的理解,建立計(jì)算機(jī)系統(tǒng)整機(jī)概念,實(shí)驗(yàn)要求學(xué)生基于Logi-sim設(shè)計(jì)一個(gè)支持一定數(shù)量MIPS指令的CPU。實(shí)驗(yàn)分為單元實(shí)驗(yàn)和CPU設(shè)計(jì)。單元實(shí)驗(yàn)項(xiàng)目有:運(yùn)算器實(shí)驗(yàn)、寄存器堆設(shè)計(jì)實(shí)驗(yàn)、ALU設(shè)計(jì)實(shí)驗(yàn)。在各部件實(shí)驗(yàn)基礎(chǔ)上設(shè)計(jì)至少10條以上MIPS指令的CPU。由于學(xué)時(shí)原因,學(xué)生在實(shí)驗(yàn)課學(xué)時(shí)內(nèi)難以完成實(shí)驗(yàn)任務(wù),需要花費(fèi)很多課外時(shí)間才能很好完成。
3.2運(yùn)算器實(shí)驗(yàn)
運(yùn)算器實(shí)驗(yàn)要求學(xué)生完成一個(gè)32位串行加法器,同時(shí)要產(chǎn)生各種運(yùn)算結(jié)果的標(biāo)志位符號(hào):溢出(oF)、進(jìn)位(cF)、符號(hào)位(sF)、零符號(hào)位(zero)。能力強(qiáng)的學(xué)生可完成先行進(jìn)位加法器。
3.3ALU設(shè)計(jì)實(shí)驗(yàn)
該實(shí)驗(yàn)要求學(xué)生利用上文設(shè)計(jì)的32位加法器、Logi-sim中自帶的一些組件如多路選擇器等,完成一個(gè)算術(shù)邏輯運(yùn)算單元ALU。為了服務(wù)于后面的CPU設(shè)計(jì),該ALU需要完成“加法”、“減法”、“按位或”、“帶符號(hào)比較小于置1”和“無(wú)符號(hào)比較小于置1”等運(yùn)算。Result是ALU運(yùn)算結(jié)果的輸出端,ALU還需要輸出零標(biāo)志ZF和溢出標(biāo)志OF。ALU的輸入端是兩個(gè)32位的操作數(shù)和ALUctr信號(hào),ALUctr信號(hào)是ALU操作控制信號(hào)生成部件的輸入信號(hào)。
ALU設(shè)計(jì)實(shí)驗(yàn)可提示學(xué)生如下幾點(diǎn):
(1)可控加減法器實(shí)現(xiàn),可以利用異或門(mén)的特點(diǎn),減法運(yùn)算是利用加法器的“變反加一”實(shí)現(xiàn)。
(2)輸出Result的多路選擇器只有3個(gè)輸入端,分別是加減運(yùn)算結(jié)果、或運(yùn)算結(jié)果和比較小于置l的結(jié)果。如果需要擴(kuò)展其它指令,如與(and)、異或(Xor)、或非(nor)、取反(not)、取負(fù)(neg)等,都可以直接調(diào)用Logisim庫(kù)中的器件構(gòu)成邏輯電路,添加到圖2的ALU中,這些運(yùn)算結(jié)果可以同時(shí)產(chǎn)生,只需要增加結(jié)果輸出多路選擇器的輸入端,同時(shí)增加控制信號(hào)OPctr的位數(shù)和ALUctr位數(shù)。
(3)ALU操作控制信號(hào)生成部件ALU-CTR的實(shí)現(xiàn)是實(shí)驗(yàn)重點(diǎn)。首先分析add、sub、subu、slt、sltu、ori、addiu、1w、sw、beq、j指令功能,需要產(chǎn)生4個(gè)控制信號(hào),分別是加減控制信號(hào)SUBctr、運(yùn)算結(jié)果選擇控制信號(hào)OPctr、是否進(jìn)行溢出判斷信號(hào)OVctr、ALU是進(jìn)行有符號(hào)還是無(wú)符號(hào)比較的控制信號(hào)SIGctr,再分析不同操作類型的取值,最后將輸人信號(hào)ALUctr和4種控制信號(hào)一起編碼,寫(xiě)出真值表,在Logisim中按照真值表就可以自動(dòng)生成控制部件ALU-CTR。
3.4MIPS寄存器堆實(shí)驗(yàn)
該實(shí)驗(yàn)主要是讓學(xué)生構(gòu)建一個(gè)MIPS寄存器組,內(nèi)部包含32個(gè)32位寄存器,具有一個(gè)寫(xiě)入端口和兩個(gè)讀出端口。每個(gè)寄存器的內(nèi)容可通過(guò)對(duì)應(yīng)的寄存器編號(hào)進(jìn)行訪問(wèn),類似于一個(gè)具有多個(gè)地址端口和多個(gè)數(shù)據(jù)端口的高速存儲(chǔ)器。
3.5MIPS單周期CPU設(shè)計(jì)實(shí)驗(yàn)
MIPS單周期CPU設(shè)計(jì)實(shí)驗(yàn),讓學(xué)生完成10條以上MIPS指令的單周期CPU設(shè)計(jì)并通過(guò)測(cè)試程序測(cè)試。CPU設(shè)計(jì)實(shí)驗(yàn)在前面實(shí)驗(yàn)基礎(chǔ)上,要添加指令譯碼器、主控制器、地址產(chǎn)生和轉(zhuǎn)移邏輯、位擴(kuò)展等部件??刂破髦饕捎媒M合邏輯控制器??梢越o學(xué)生提供圖3的單周期CPU設(shè)計(jì)框架,但具體部件設(shè)計(jì)需要學(xué)生自己實(shí)現(xiàn)。①指令譯碼器:本質(zhì)上就是分線器,將32位的指令信息按照指令格式分出OP、Rs、Rt、Rd、shamt、funct、immediatel6、immedi-ate26信息,傳送到后面的寄存器、控制器等部件;②主控制器:按照OP和funct信號(hào),產(chǎn)生每條指令執(zhí)行時(shí)需要的控制信號(hào),需要分析和寫(xiě)出各類操作需要產(chǎn)生控制信號(hào)的真值表,再在Logisim中生成邏輯電路;③地址產(chǎn)生和轉(zhuǎn)移邏輯:提示學(xué)生要實(shí)現(xiàn)順序執(zhí)行、轉(zhuǎn)移執(zhí)行和無(wú)條件轉(zhuǎn)移執(zhí)行3種跳轉(zhuǎn)方式及跳轉(zhuǎn)地址的產(chǎn)生。
設(shè)計(jì)基本過(guò)程如下:
(1)數(shù)據(jù)通路設(shè)計(jì)。通路設(shè)計(jì)不能急于求成,要進(jìn)行逐條指令的分析和設(shè)計(jì)。首先,設(shè)計(jì)R-type中add、sub、subu、slt、sltu等的通路,需注意是否要判斷溢出;在此基礎(chǔ)上,分析I-type帶立即數(shù)運(yùn)算指令的數(shù)據(jù)通路,分析需要添加哪些部件,再分析sw、1w指令的數(shù)據(jù)通路、分支指令的數(shù)據(jù)通路、無(wú)條件跳轉(zhuǎn)指令的數(shù)據(jù)通路;通過(guò)逐步添加部件,最后逐步實(shí)現(xiàn)完整的數(shù)據(jù)通路。其實(shí)添加新部件的過(guò)程,就是不斷添加多路選擇器的過(guò)程。
(2)控制器設(shè)計(jì)。數(shù)據(jù)通路設(shè)計(jì)完成后,就知道需要的所有控制信號(hào)。按照控制信號(hào)產(chǎn)生的條件,可以寫(xiě)出真值表,生成控制器邏輯電路。其實(shí)控制器的設(shè)計(jì)過(guò)程,就是寫(xiě)真值表的過(guò)程。
愿意深入學(xué)習(xí)的學(xué)生,可以繼續(xù)選修該課程的“課程設(shè)計(jì)”,在Logisim仿真平臺(tái)上完成從多周期CPU依次到理想流水線、轉(zhuǎn)發(fā)流水線、氣泡流水線,再到分支流水線CPU的設(shè)計(jì)。
3.6實(shí)驗(yàn)測(cè)試
為了驗(yàn)證CPU設(shè)計(jì)的正確性,可以使用自己設(shè)計(jì)的MIPS指令編寫(xiě)測(cè)試程序。使用Mars軟件,用Edit編輯匯編源代碼,用Run菜單中的Assemble進(jìn)行匯編,得到機(jī)器代碼。程序匯編后可以利用File菜單中的Dump Memory功能將代碼段和數(shù)據(jù)段導(dǎo)出,采用十六進(jìn)制文本方式導(dǎo)出文件,然后在文件第一行加入“v2.0raw”即可在Logisim中加載到指令存儲(chǔ)器,執(zhí)行測(cè)試程序,查看運(yùn)行結(jié)果,驗(yàn)證程序運(yùn)行是否正確。
4實(shí)驗(yàn)過(guò)程管理
學(xué)生在教學(xué)計(jì)劃學(xué)時(shí)內(nèi)難以完成上述實(shí)驗(yàn)項(xiàng)目,需要課外安排時(shí)間。Logisim平臺(tái)使用靈活,學(xué)生能夠方便地通過(guò)課外時(shí)間繼續(xù)完成實(shí)驗(yàn)任務(wù),但需加強(qiáng)監(jiān)督管理和課外輔導(dǎo)。實(shí)驗(yàn)采用小班上課形式,教師現(xiàn)場(chǎng)講解和指導(dǎo),課外通過(guò)線上和線下混合式進(jìn)行輔導(dǎo)答疑。雖然沒(méi)有嚴(yán)格的考勤,但設(shè)置有幾個(gè)關(guān)鍵模塊的完成時(shí)間和檢查點(diǎn),并對(duì)進(jìn)度落后的學(xué)生給予幫助。對(duì)每位學(xué)生的實(shí)驗(yàn)要驗(yàn)收實(shí)驗(yàn)結(jié)果并答辯提問(wèn),而不僅僅只是批閱實(shí)驗(yàn)報(bào)告。
5結(jié)語(yǔ)
在軟件仿真平臺(tái)上完成實(shí)驗(yàn),優(yōu)點(diǎn)是能夠培養(yǎng)學(xué)生設(shè)計(jì)處理器的能力,加深對(duì)計(jì)算機(jī)的理解,建立整機(jī)系統(tǒng)概念,同時(shí)降低學(xué)生完成實(shí)驗(yàn)任務(wù)的難度,提高實(shí)驗(yàn)成功率;不足之處在于難以提高學(xué)生硬件系統(tǒng)設(shè)計(jì)和調(diào)試能力。部分有興趣的學(xué)生,可通過(guò)選修“課程設(shè)計(jì)”提高硬件設(shè)計(jì)和調(diào)試能力。