摘要:計算機系統結構課程通常是使用WinDLX、DLXView、SimpleScalar等模擬器仿真的方式來進行實驗教學,但此方式呆板枯燥且流于形式,我院改革了實驗項目,采用”實驗機箱+PC機+模擬器”的方式,真正實現從呆板的\"驗證為主\"到創新的\"設計為主\"的飛躍。本文介紹了我院的實踐經驗。
關鍵詞:SimpleScalar;CMPP;模擬器;實驗機箱;驗證;設計創新
中圖分類號:G642文獻標識碼:B
1引言
“計算機系統結構”課程是計算機科學與技術專業中重要的專業課程,是一門從組織和結構角度上學習、總體把握和領會計算機系統的課程。因為其理論性較強,知識結構較為復雜,它的實驗課設置一直是一個空白。但是,作為一門針對本科高年級學生的計算機綜合設計課程,沒有相應實驗課對學生理解能力的提高和創新能力的培養,所謂的綜合設計課程也成了一句空談,為此,我們使用WinDLX、DLXView、SimpleScalar模擬器(安裝在微機上)來仿真計算機,讓學生在這個虛擬計算機上設置各種不同高端計算機系統結構技術,然后通過統計數據得到不同計算機系統結構技術對計算機性能的不同影響,最后給出統計結論。
但在實際教學過程中,我們發現,此種“PC機+模擬器”的實驗方式形式過于單一,所有的實驗都是先在模擬器中給出計算機系統結構技術參數設定,然后運行測試程序,最后根據程序運行結果給出實驗結論。對學生而言,所做的工作只是系統結構參數的給定,然后面對一堆運行出來的枯燥數據給出實驗結論。由于這些實驗全是驗證型實驗,使得學生沒有真正的實驗體會,感覺也比較抽象,一個學期下來,整個實驗課程沒有收到它應有的效果,同時也沒能激發出學生的創新性。
為了讓學生更加有硬件實驗體會,并發揮學生的創新性思維,我們在原有的“PC機+模擬器”模式下增加一個實驗機箱,變成 “實驗機箱+PC機+模擬器”模式,經過一個學期的實踐,計算機系統結構實驗課程有了突破性的進展,取得了較好的效果。
本文其他部分內容如下:第二節介紹原有的“PC機+模擬器”實驗模式的具體細節及其弊端;第三節闡明“實驗機箱+PC機+模擬器”新模式的由來;第四節說明新模式具體的實驗項目改革;最后給出本實驗課程教改的特色與創新之處,并作出結論。
2“PC機+模擬器”模式
“計算機系統結構”課程中的實驗課程在以往的教學中一直是一個空白。為響應微軟亞洲研究院的大力倡導,本課程初期引入由卡內基·梅隆大學提出的“Learning by doing”這一適用于工程教學的行之有效的先進教學理念,對“計算機系統結構”實驗課程建設進行初步嘗試。
由于這門課程的實驗是從無到有的一個過程,因此,在建設初期,我們首先采用的是一個生搬照學的方法。為此,我們找到張晨曦教授在同濟大學使用的“計算機系統結構”實驗教學資料,然后根據本校學生具體情況對實驗內容進行部分篩選,總結出“PC機+模擬器”模式,然后運用到實際教學中。
PC機是我們計算機系統結構實驗課程開展的硬件平臺,軟件平臺即我們的Windows操作系統以及安裝在其上的各種模擬器,包括WinDLX、DLXView、SimpleScalar模擬器。實驗過程中,學生在這些模擬器中設置各種不同參數而獲得不同虛擬處理器,然后通過測試程序檢測不同系統結構技術對處理器性能的影響。
WinDLX是一個基于Windows的模擬器。它能夠以圖的方式演示DLX流水線是如何工作的。學生通過改變流水線的結構和時間要求、存儲器大小和其他幾個控制模擬的參數,獲得不同流水線的性能。實驗一的流水線相關實驗,實驗二的循環展開及指令調度實驗都是使用此模擬器。
DLXview是一個圖形化、交互式的DLX流水線模擬器。該模擬器能夠實現對基本流水線、記分牌算法和Tomasulo算法的模擬。通過對內存訪問延遲、功能部件的數目、功能部件的延遲的配置,實現不同流水線的模擬。實驗三的記分牌和Tomasulo算法實驗使用的是此模擬器。
而SimpleScalar模擬器是目前學術界最為流行的體系結構模擬器,是一個單處理器架構的性能模擬器工具集。其工具集包含了非常豐富的工具,可以配置成許多不同體系結構的模擬器。同時,其源代碼公開,具有良好可移植性和可擴展性,是開發微處理器芯片前期進行系統結構驗證的重要工具。也是使用軟件手段模擬和研究CPU系統結構的主要手段。實驗四的Cache性能分析中和實驗五的虛擬Cache與偽相聯Cache使用的是此模擬器。
以上所述實驗都是使用模擬器進行計算機系統結構技術參數設定,然后運行測試程序,最后根據程序運行結果給出實驗結論,其實驗屬性全部是驗證型實驗。對于學生而言,所做的工作僅僅只是系統結構技術參數的給定,和測試程序的運行,最后從一堆運行出來的數據中得到實驗結論。
這種軟件模擬的方式適合研究生程度以上的學生進行學術研究和理論驗證,這也是這些學生對于新思想新理論進行學術論證的常用方法與手段,但是對于發展目標為應用型的本科學生而言,此種實驗形式與方法都過于枯燥與單一,整個實驗做下來,學生感覺比較抽象,收不到實際效果,更談不上激發學生創新意識,實驗做到最后便流于一種形式,一種走過場。
3新模式的引入
基于計算機系統結構實驗課程建設初期所遇到的問題,我們決定重新規劃系統結構實驗內容。
計算機系統結構實驗課程是一門綜合實驗課程,既然是綜合課程,即說它是一個軟硬件結合體。在“PC機+模擬器”模式實驗中,模擬器的引入可以很好的體現其軟的方面,而硬的方面我們則選用學生在前期課程計算機組成原理中使用的教學設備(TND-CM++唐都教學儀器實驗箱)入手,以達到事半功倍的學習效果。
計算機組成原理課程是專業必修課程,其教學與實驗方面已經形成一個完整而成熟的體系。這是一門在整個計算機科學與技術專業課程中份量很重的課程,也是一門非常重視實驗課的課程,除開課程本身的70學時中包括20學時的實驗課程,學生還有專門2周的課程設計工作需要完成。這些大量的前期學習與實驗實踐,為學生熟練掌握和使用實驗設備以及對計算機是軟硬件綜合體的理解打下堅實基礎。而計算機系統結構課程本身就是計算機組成原理的后續和提高課程,利用前期的基礎作進一步的理論提高和實驗提高成了順理成章的事情。
因此,“實驗機箱+PC機+模擬器”模式引入到計算機系統結構實驗教學中。在以前的教學中,“實驗機箱+PC機”和“模擬器+PC機器”模式是分開使用的,因此PC機分別與兩者的結合不是問題,但是當這三者(實驗機箱、PC機和模擬器三者)結合在一起時,則需要對它們進行重新分工組合,以達到理想的實驗效果,這將在文章的第4節的具體實驗項目中詳細敘述。
4“實驗機箱+PC機+模擬器”模式
4.1“實驗機箱+PC機+模擬器”模式簡介
“實驗機箱+PC機+模擬器”模式是“PC機+模擬器”和“實驗機箱+PC機”兩者的結合,但這種結合不是簡單機械的結合,而是一種有機的結合。在以前的教學中,“PC機+模擬器”方式用于計算機系統結構初期實驗課程,“實驗機箱+PC機”方式用于計算機組成原理實驗課程。但是,由于前一節“PC機+模擬器”方式所提到的弊端,即數據的枯燥性和理解的抽象性問題,我們把具有硬件動手優勢的“實驗機箱+PC機”方式中的計算機實驗機箱引入到此課程實驗中。
實驗條件準備如下:首先在PC機器中安裝Windows操作系統,然后在此操作系統中安裝WinDLX、DLXView、SimpleScalar模擬器,同時安裝CMPP模擬器(實驗設備廠家隨實驗設備匹配提供)。然后通過RS-232串口與PC微機聯機,這樣,利用PC機上具有的這些模擬器我們可以在PC 機上編程、向實驗機箱系統裝載實驗程序、然后在圖形界面下進行動態調試及運行。另外,系統具有的兩路邏輯信號測量平臺,使得可在PC機上看到信號測量波形。
我們實驗的中心思想是:以計算機硬件為基礎,通過軟件配置擴充功能,形成一個可能是相當復雜的有機組合的計算機系統。最后通過模擬器中測試數據的統計獲得此系統性能的結論數據。
其中的硬件是指我們通過實驗機箱把計算機系統中的基礎模塊通過總線(數據總線、地址總線和控制總線)連接好;而配置軟件是指通過CMPP、SimpleScalar模擬軟件來進行一些高級配置的擴充,從而形成我們需要的系統結構;最后,通過(WinDLX、DLXView、SimpleScalar)模擬器跑動測試程序以獲得此系統結構的性能參數及結論數據。
4.2模式的可行性論證
“實驗機箱+PC機+模擬器”模式的可行性論證主要討論如下問題(其中系統指實驗系統,即實驗設備):
(1)PC機與系統的關聯:
實驗系統安裝有一個標準的DB型9針RS-232C 串口插座,使用配套的串行通訊電纜分別插在實驗系統及PC 微機的串口,即可實現系統與PC 的聯機操作。系統通訊電纜連接方式如圖1:

(2)CMPP與系統的關聯
系統配套的集成操作軟件CMPP具有專為聯機操而開發的圖形方式操作界面,其操作簡便、直觀且具有動態調試功能,可完全根據實驗系統的數據通路圖來實時、動態的顯示用戶設計的實驗數據流的流向、數據值、控制線和各單元的內容。CMPP軟件界面如圖2:

本系統軟件CMPP通過PC 機串行口向實驗系統上的單片機控制單元發送指令,由實驗系統的單片機直接對程序存儲器、微程序控制器進行讀寫,控制單拍或單步微程序、單步機器指令和程序連續運行等操作,實時監測各數據流和控制流的情況,從而實現實時動態圖形方式下的系統跟蹤調式和運行。
(3)SimpleScalar模擬器與系統的關聯
SimpleScalar工具集是一個用于構建各種模擬程序的系統軟件框架,可用于構建各種體系結構模擬器.它提供了一套參考模擬器,包括快速的功能模擬器,用于分支預測評估的模擬器,用于Cache層次評估的模擬器以及一個詳細的、動態調度的、多級存儲層次的微體系結構模擬器.SimpleScalar還包含一個機器定義框架,允許絕大部分體系結構細節和模擬器的具體實現分離.除了模擬器,SimpleScalar工具集還提供統計分析、調試、驗證和可視化支持.SimpleScalar工具集被廣泛用于計算機體系結構的研究和教學.例如在2000年,頂級體系結構會議上超過三分之一的文章是使用SimpleScalar來評價設計。
由于Simplescalar的使用廣泛性和完整性,我們把它引入我們的實驗課程中,但由于這個模擬器與我們的實驗系統是各自獨立的個體,因此當把這兩者融合在一起時就存在一個有機組合問題。Simplescalar模擬器是一個原代碼公開的軟件,具有良好的可移植性和可擴展性,因此我們希望通過代碼的更改,獲得SimpleScalar模擬器與實驗設備的有機整合。雖然這部分工作我們已經展開,但是工作做得還很不夠,這也是我們下一步要繼續進行的重點工作之一。
4.3存在的問題
(1) 實驗延續性的問題
通常,計算機組成原理課程會開在第五學期,計算機系統結構課程開在第七學期,因此,這兩門課程之間有一個學期的間隔,由于這兩門實驗課程的順延性較強,因此在計算機系統結構實驗課程的設計中,初始實驗應先重復計算機組成原理實驗課程中綜合性強,并在后續系統結構實驗課程中需要應用到的實驗內容。
(2) 課時偏少而實驗內容偏多的問題
計算機系統結構實驗課時偏少,一般是8個課時(4個學時)。但是由于其實驗內容綜合性強,復雜度大,因此很難在一個學時(2個課時)完成一個實驗。這就要求老師和學生在實驗課之前要做較多的工作,包括老師在實驗課之前詳細的講解,學生在課前完成實驗預習工作,這樣,才能充分利用一個學時的時間完成一次的實驗。
(3)SimpleScalar與實驗系統的整合問題
前面說過,我們利用SimpleScalar模擬器的開放性代碼把SimpleScalar模擬器和實驗系統整合在一起,這個工作還需要繼續完善。這個工作也是整個計算機系統結構實驗課程改革的一個重要的步驟。它是一個需要長期驗證、修改和調試以及完善的工作,不是短時間就能完成的工作。
4.4實驗項目的設計
(1)CISC(復雜指令集計算機)實驗
此實驗要求先按照實驗連接圖把計算機的主要模塊通過總線連接起來(這個操作在實驗機箱內進行),然后為這個模型計算機設計包括16條機器指令(包括算術邏輯指令、I/O指令、訪問及轉移指令和停機指令)的指令集,編寫相應的微程序,通過PC機中CMPP模擬器裝載和調試程序,以使同學們通過這個過程掌握整機概念,并能綜合運用所學計算機原理知識,設計并實現較為完整的計算機。
此實驗是在前計算機組成原理實驗課程中掌握部件單元電路實驗的基礎上,進一步將其組成系統。同時也是對以前所學知識的溫習。
(2)RISC(精簡指令集計算機)實驗
RISC是針對CISC結構存在的問題所提出的思想。它選取使用頻率最高,以及很有用但不復雜的指令,這些指令大部分能在一個時鐘周期內完成,并且只有Load和store兩條指令訪存等思想設計的計算機,在此實驗中,我們選取使用頻度比較高的五條基本指令:MOV、ADD、STORE、LOAD、JMP。然后尋址方式采用寄存器尋址及直接尋址兩種方式來設計這個RISC計算機(依照前一實驗方法,也是由CMPP模擬器進行調試)。
然后,我們通過在SimpleScalar模擬器中設置參數來比較RISC計算機和CISC計算機,這是通過跑同一測試程序來完成的。結論是:RISC機器執行的速度和效率大大提高。如對于此實驗中設計的機器指令在RISC處理器中執行完需9個機器周期,而在復雜模型機實驗中,需34個機器周期才能完成。
這樣的實驗程序的設計,可以讓同學們深刻體會到兩種不同處理器的運行效率,同時讓同學們體會到實驗直觀性。
(3) 重疊實驗
此實驗是在RISC模型機實驗的基礎上,進一步將其構成一臺具有重疊功能的模型機。
一條指令的執行包括“取指”和“分析執行”兩個階段,而重疊技術是指把前條指令的“分析和執行”與后條指令的“取指”重疊在一起執行。
在此實驗中,計算機“執行部件”數據通路的控制由微程序控制器來完成,而“指令預取”部件的數據通路由一片CPLD 來模擬。以原基本模型機的五條機器指令為例,編寫相應的微程序,然后具體上機調試掌握重疊概念。
然后,在SimpleScalar模擬器中設置參數比較RISC計算機和重疊計算機。結論是:重疊計算機執行的速度和效率明顯提高。如前所述的同段機器指令在重疊處理器中執行完需要20個機器周期,而在RISC模型機的實驗中,需要27個機器周期。
(4) 流水實驗
流水可以看作是重疊的引申,一次重疊是一種簡單的指令流水線。在流水計算機中,一條指令的執行包括“取指令”、“指令譯碼”、“取操作數”、“執行”四個子過程(前三階段由指令分析部件完成,而第四階段由指令執行部件完成),而每個子過程可以與其他子過程同時進行,這叫并行性中的并發性。
這種并行性大大提高了計算機的處理效率。本實驗除“指令執行部件”為板上的“ALU UNIT”和“REG UNIT”電路構成外,其余全部由CM++板上的一片CPLD 芯片設計,輸入設備、輸出設備、RAM 及時序仍由板上輸入單元、輸出顯示單元、存儲器單元及時序單元電路給出。
實驗過程類似于前述實驗。
5實驗特色與創新
新設計的“實驗機箱+PC機+模擬器”實驗模式有如下功能特點。
(1) 結構清晰的單元式實驗電路,可構造出不同結構及復雜程度的原理性計算機。系統采用部件單元式結構,包括運算器及數據通路、存儲器、控制器、信號及時序控制、內總線、外總線、外圍接口及輸入輸出設備、大規模可編程邏輯器件等計算機部件的單元電路,可使用排線連接方式(實驗機箱)或計算機電子自動邏輯設計方式(SimpleScalar等模擬器),根據自己所設計的模型計算機結構方案,來構造出不同結構及復雜程度的原理性計算機,使學生能夠對計算機組成結構有清楚的認識和理解。
(2) 對實驗設計具有完全的開放性,增強學生綜合設計能力。系統所具有的軟硬件結構(實驗機箱和模擬器)對實驗設計具有完全的開放性,其數據線、地址線、控制線都由學生來操作連接,系統中的運算器結構、控制器結構及微程序指令的格式及定義均可根據教學需要來做靈活改變或重新設計。這對于自行設計各種結構及不同復雜程度的模型計算機提供了強大的軟硬件操作平臺,從而避免了單純驗證性的實驗模式,極大提高了學生計算機系統的綜合設計能力。
(3) 通用邏輯器件和大規模可編程邏輯器件相結合,可面向不同層次的學生。系統采用通用邏輯器件和大規模可編程邏輯器件并用的方式,既能給熟練掌握復雜邏輯系統設計的學生提供高檔的實驗平臺,又能對不熟悉這些內容的學生提供易操作的實驗平臺。符合循序漸進、先基礎后提高的教學原則。
(4) 具有實時調試功能的圖形方式操作界面,也可用于多媒體輔助教學。系統具有與PC微機聯機實時調試的功能,提供了圖形方式的調試界面(CMPP模擬器),在調試過程中可動態實時顯示模型計算機各部件之間的數據傳送以及各部件和總線上的所有信息。這種圖形調試界面也可用于多媒體輔助教學,從而獲得極佳的教學效果。
(5) 多種輸入輸出方式及邏輯信號測量功能,實驗操作及觀察更容易。系統提供多種輸入輸出方式。通過RS-232 串口與PC 微機聯機,可在PC 機上進行編程并向系統裝載實驗程序,在圖形界面下進行動態調試及運行。另外還具有兩路邏輯信號測量平臺,可在PC 機上看到信號測量波形;如單獨使用本系統,則可通過開關及LED以二進制碼形式進行編程、顯示及調試運行。
(6) 實驗電路的實時在線檢測功能,便于檢查接線錯誤。系統具有實驗電路檢測功能,通過人機交互方式可實時在線檢測各實驗單元電路的好壞以及模型機實驗線路連接是否正確。
(7) 測試功能的完備性。SimpleScalar工具集所自帶的SimpleScalar Spec2000測試程序使得學生可以及時對自己設計出來的計算機系統結構方案進行測試,然后根據測試結果對所設計計算機結構進行及時調整,以提高學生的實驗直觀性。
6小結
實踐證明,此模式把計算機系統結構實驗設計成一門軟硬件結合的綜合實驗課程,并真正實現從呆板的“驗證為主”到創新的“設計為主”的飛躍。試用一年以來獲得較好效果。
參考文獻:
[1] 張福新,章隆兵. 基于SimpleScalar的龍芯CPU模擬器Sim-Godson[J]. 計算機學報,2007,30(1).
[2] 張晨曦. “計算機系統結構”第四版[M]. 北京:高等教育出版社,2006.
[3] 陳劍龍. SimpleScalar模擬器內核分析及應用[J]. 哈爾濱工業大學學報,2004,(5).