胡珊
(福建師范大學計算機與網(wǎng)絡空間安全學院 福建省福州市 350108)
《計算機組成原理》是高校計算機相關專業(yè)(包括計算機科學與技術、電子信息科學與技術、軟件工程、網(wǎng)絡工程與管理及新興的物聯(lián)網(wǎng)等專業(yè))的硬件基礎課程,在計算機硬件課程體系中處于核心環(huán)節(jié)[1-2],同時也是計算機類碩士入學考試的必考專業(yè)課之一,其實驗教學作為該課程理論教學的重要環(huán)節(jié),有著重要作用。該課程實驗的載體——計算機硬件實驗箱(清華大學科教儀器廠生產(chǎn)),使用人員復雜多變,實驗過程中使用人員帶電拔插連接導線和元器件,焊點氧化,靜電影響等等,致使硬件實驗箱的故障與維護相當繁雜[3-4],維護工作量大。而目前開發(fā)的部分虛擬實驗環(huán)境并不能完全取代真正的硬件實驗環(huán)境。由于硬件實驗箱不像實驗機房主機有開機還原或定期還原系統(tǒng),也沒有開機檢測功能,維護時實驗管理人員只能每臺開箱通電測試,做計算機組成實驗各個項目,然后憑經(jīng)驗來判斷,碰上芯座等損壞就得寄廠維修。不僅耗費時間,而且還嚴重影響設備完好率,不利于實驗教學的正常開展,因此,鮮少有人愿意主動承擔計算機硬件實驗室的管理與維護。
硬件實驗箱的維護如同微型計算機一樣有硬件與軟件的維護。遵循從簡單的事情入手,先外后內(nèi),抓主要問題。即先檢查實驗箱的各種控制開關是否處于正確的位置,不同的位置,功能不同。比如右上角控制轉(zhuǎn)換開關是“獨立”還是“微程序”,若在微程序位置,則電平控制信號開關的高、低電平送不進寄存器控制端(如RD0、RD1、RS0、RS1等),被鉗制住了,開關數(shù)據(jù)也送不進數(shù)據(jù)線上(D0到D7亮、滅不正確);其次,用邏輯筆等工具檢查外部連線、開關等是否正常,以保證各控制端控制電平有效;若以上兩項正常,則根據(jù)故障現(xiàn)象、實驗電路圖及實驗接線表綜合判斷故障所在的大致位置,然后檢查問題區(qū)域的芯片是否有問題或其底座是否有問題。這屬于硬件的檢查及維護,這里不再贅述。本文主要從軟件維護的層面(即重置控存代碼)來闡述計算機硬件實驗箱的診斷與維護。
(1)學生實驗過程中反映E2PROM代碼有問題。是否真有問題,那就選取一種操作模式(比如令SWCSWBSWA=101運算器組成),結(jié)合該硬件實驗箱采用的控存代碼表(見表1)和微指令格式[5](圖1)。微指令長40位,順序字段11 位(判別字段P4~P0,后繼微地址NμA5~NμA0),控制字段29 位,0~7位對應CM0,8~15位對應CM1,16~23位對應CM2,24~31位對應CM3,32~39位對應CM4??卮娲a表以16進制顯示,若要對應指示燈,則需轉(zhuǎn)換成二進制,1(高電平)對應的燈亮,0(低電平)對應的燈滅。
表1:部分控存代碼表
圖1:微指令格式
按CLR系統(tǒng)復位,當前微地址uA5~uA0為00H,此時CM4和CM0對應0CH和41H,其余為00H(參見控存代碼表第二行),轉(zhuǎn)換成二進制則為00001100B和01000001B,對照微指令格式,燈SEL1、SEL0、P0、NuA0亮;按QD第一次,由于該硬件試驗系統(tǒng)運算器組成試驗微程序下入口地址為0BH ,即uA5~uA0為0BH(對應二進制為00001011),處于計算機硬件實驗箱面板上微程序控制器區(qū)域下端的燈uA3、uA1、uA0亮,對照控存代碼表,CM4為44H(01000100B),燈SELCTL、SEL0亮,CM3為10H(00010000B),燈SBUS亮,CM2為02H(00000010B),燈STOP亮,CM1為08H(00001000B),燈DRW亮,CM1為15H(00010101B),燈NuA4、NuA2、NuA0亮,NμA5~NμA0代表下一微地址,此時為15H(見CM0的后六位);按QD第二次,當前微地址uA5~uA0為15H(00010101B,由上一次按下QD后顯示的后繼微地址NμA5~NμA0決定),燈uA4、uA2、uA0亮,此時CM4為50H(01010000B),燈SELCTL、SEL2亮,CM3為10H(00010000B),燈SBUS亮,CM2為02H(00000010B),燈STOP亮,CM1為08H(00001000B),燈DRW亮,CM1為16H(00010110B),燈NuA4、NuA2、NuA1亮;類似操作,到第七次按QD,恢復到按CLR時狀態(tài)。在這一循環(huán)過程中(見表1,微地址按00、0B、15、16、17、18、19、00循環(huán)),若有指示燈的亮、滅狀態(tài)與代碼表不符,則控存代碼確有問題,需重置控存代碼。事實上,一般在按復位鍵及兩次QD后,就能看出控存代碼是否出了問題。
(2)一般維護實驗箱時首先檢查的就是在微程序狀態(tài)下,按CRL及QD,控制轉(zhuǎn)換框內(nèi)及微程序控制器框內(nèi)的指示燈有亮有滅,若不按正常的規(guī)律亮滅,那就需要重置CM4~CM0的控存代碼;有時復位正常,但按QD亂碼;有時按復位及QD,指示燈亮滅均不正常等,這些狀況都是先進行硬件試驗箱的軟件維護,即重置控存代碼,給試驗箱來個軟件復位。
總之,在進行硬件實驗箱維護時,微程序狀態(tài)下選定某種操作模式,按控存代碼表(或微程序流程圖)走一遍,根據(jù)實驗箱指示燈亮滅狀態(tài)即可判斷實驗箱是否正常,是軟件故障還是硬件故障,軟件故障的話重置控存代碼即可,類似于微型計算機的軟件還原;是硬件故障的話,也可判斷在哪個區(qū)域或最可能的故障芯片。以上的故障有可能一種,也有可能多種故障并存,需要管理人員多方分析,逐個排查。
斷開硬件實驗箱電源,串口編程電纜將實驗箱與微型計算機的串口連接好,硬件實驗箱的編程開關上撥到“編程位”,取下DZ1短路片(注意這里不要按實驗箱面板標注的中、右短路);電腦主機開機,點開對應的控存代碼寫入軟件(這里是TEC-8COMDOWN),波特率改為2400,勾選文件CM0……CM4,點“打開”按鈕,選擇電腦主機中控存代碼下的常規(guī)微程序控制器CM0-4 (EEPROM),文件類型選擇所有文件,雙擊CM0,則打開了CM0,依次類似可以打開CM1、CM2、CM3、CM4。開啟實驗箱電源,重置前先按下實驗箱面板編程開關右側(cè)的復位鍵(否則下載不成功,一直顯示寫入超時),再點計算機寫入軟件的“編程”按鈕,進行控存代碼重置。重置過程中,觀測實驗箱微指令燈是否閃爍,若軟件顯示成功,并伴隨硬件實驗箱微指令燈閃爍,則實驗箱軟件基本恢復正常。
關閉實驗箱電源,取下編程電纜,編程開關“正?!保刂妻D(zhuǎn)換“微程序”,DZ1端子左、中兩腳短接,單拍上撥為1,實驗箱接通電源,按復位按鈕CLR,即表示置當前微地址uA5~uA0為00H,后繼微地址NuA5~NuA0為01H,參見該實驗箱對應的控存代碼表,此時SEL1、SEL0、P0、NuA0燈亮,其余燈滅,表示實驗箱基本正常。
更深入的測試則可以結(jié)合學生反映的具體問題來選擇某種操作模式。比如學生反映寄存器讀不出來或B7~B0顯示出問題,那可以先寫寄存器(微程序下令SWCSWBSWA=100,微程序入口地址為09H),分別將1、2、3、4寫入寄存器R0~R3。寫入的過程中如下:將SD7到SD0撥成00000001,燈D7~D0即刻對應顯示即將寫入的數(shù)據(jù)1,第一次按QD,當前微地址09H(uA3和uA0亮),各指示燈的亮滅狀態(tài)應該符合控存代碼表(SELCTL、SEL0、SBUS、STOP、DRW、NuA3亮),同時微程序給控制寄存器數(shù)據(jù)寫入的控制端發(fā)送控制信號RD1RD0(00,由SEL3、SEL2決定);第二次按QD時,1寫入寄存器R0,此時B0亮,當前微地址08H由上次操作后給出的后繼微地址決定,uA3亮,SELCTL、SEL2、SBUS、STOP、DRW、NuA3、NuA1亮,將SD7到SD0撥成00000010,指示燈D7到D0顯示數(shù)據(jù)2準備好,因SEL3SEL2為01,故寄存器控制端RD1RD0為01;第三次按QD,數(shù)據(jù)2寫入寄存器R1,B1燈亮,當前微地址跳轉(zhuǎn)成0AH,uA3、uA1亮,SELCTL、SEL3、SEL0、SBUS、STOP、DRW、NuA3、NuA2亮,寄存器控制端RD1RD0為10(寄存器R2準備接受數(shù)據(jù)寫入),SD7到SD0撥成00000011,數(shù)據(jù)指示燈D1、D0亮(顯示3);第四次按下QD,3寫入R2,B1、B0亮,微地址轉(zhuǎn)變成0CH,uA3、uA2亮,SELCTL、SEL3、SEL2、SEL1、SBUS、STOP、DRW亮,后繼微地址NuA5~NuA0=00,因SEL3SEL2=11,此時選擇的寫入寄存器為R3,SD7到SD0撥成00000100,數(shù)據(jù)燈D2亮,表示數(shù)據(jù)4準備好;第五次按下QD,數(shù)據(jù)4寫入R3。寫寄存器時微地址按00、09、08、0A、0C、00循環(huán);然后再讀寄存器(令SWCSWBSWA=100,微程序入口地址為07H),讀寄存器過程如下:微程序狀態(tài),第一次按QD,當前微地址07H,即uA2、uA1、uA0亮,SELCTL、SEL0、STOP、NuA2、NuA1亮,SEL3SEL2=00和SEL1SEL0=01分別連接寄存器控制端RD1RD0、RS1RS0,所以A7~A0顯示寄存器R0的內(nèi)容1(A0亮),B7~B0顯示R1的內(nèi)容2(B1亮);第二次按QD,當前微地址06H,uA2、uA1亮,SELCTL、SEL3、SEL1、SEL0、STOP亮,SEL3SEL2等 于10,SEL1SEL0等于11,故A7~A0顯示寄存器R2的內(nèi)容3(A1A0亮),B7~B0顯示R3的內(nèi)容4(B2亮),此時微地址按00、07、06、00循環(huán)。
計算機組成硬件實驗箱是高校計算機相關專業(yè)實踐教學的必備設備,能鍛煉學生的實踐能力,培養(yǎng)學生學習興趣,激發(fā)創(chuàng)新精神,不過卻一直沒有一套標準的維護方案。本文結(jié)合硬件實驗箱采用的控存代碼和微指令格式,在微程序狀態(tài)下單拍跟蹤每條微指令的執(zhí)行情況,各指示燈的亮滅狀態(tài),從而快速確認實驗箱是軟件損壞還是硬件損壞,軟件方面就先在編程狀態(tài)下重置控存代碼,然后,實驗箱再在正常的微程序下按流程走一遍,這里所選的流程可以結(jié)合學生反映的問題來選擇,一方面能判斷重置代碼是否成功,另也可以輔助判斷硬件故障的大致區(qū)域??傊?,熟悉控存代碼的重置和應用,極大提高了維護人員的工作效率和設備完好率,保障實驗教學正常進行。