張前賢+莫毓昌+潘竹生



摘要:已有的計算機體系結構教學模擬器主要是面向馮諾依曼體系結構。針對缺乏面向哈佛體系結構模擬器這一問題,本文提出并設計了基于開源軟件包Multimedia Logic(MML)[1]哈佛體系結構模擬器。該模擬器不僅具有軟件的易動態運行、易修改、易二次開發的優點,同時還實現了硬件結構的邏輯門級映射[2],從而在課程教學和實驗設計方面對哈佛體系結構教學提供了很好的支持。
關鍵詞:模擬器;哈佛體系結構;MML
在計算機體系結構課程教學過程中,馮諾依曼體系結構和哈佛體系結構是重點教授的兩種體系結構類型。[3]馮諾依曼結構,又稱為普林斯頓結構,是一種經典的體系結構,由CPU,存儲設備,I/O設備組成。[4]這種體系結構采用指令與數據合并存儲的方式,程序指令寬度與數據寬度一樣。隨著CPU設計技術的發展,片內數據傳輸路徑的增加,指令和數據的互斥讀取很大程度上影響了CPU運行效率。為此,哈佛大學提出一種新的體系結構,在這種結構中數據存儲器與程序代碼存儲器分開,各自有自己的數據總線與地址總線,實現指令和數據的并行讀取。由于哈佛結構需要CPU提供大量的數據線,因而很少作為CPU外部構架來使用。但是對于CPU內部,通過使用不同的數據和指令緩存,可以有效地提高指令執行的效率,因而目前大部分計算機體系結構都是CPU內部的哈佛結構和CPU外部的馮諾依曼結構并存。
在馮諾依曼體系結構教學方面,許多大學已經開始研發各種基于軟件和硬件模擬器來輔助課程教學和實驗教學。[5]但在哈佛體系結構教學方面仍然缺乏有效的模擬器。[6]針對這一問題,本文介紹了我們基于開源軟件包Multimedia Logic(MML)所開發的用于哈佛體系結構教學的模擬器。
● 模擬器結構和指令
1.總體結構
哈佛體系結構具有程序與數據物理上分開存儲的特點,從而提供了較大的數據存儲器帶寬。哈佛體系結構的工作原理是:CPU控制器首先到程序指令存儲器中讀取程序指令內容,根據指令中操作數的地址,再到相應的數據存儲器中讀取數據,并進行下一步的運算。
圖1給出了我們所開發的哈佛體系結構模擬器框圖。其中M1(DataMem)作為數據存儲器,其主要功能是用于存放執行的中間結果和過程數據。M2(ProgramMem)作為程序存儲器,其主要功能是用于存儲程序指令。M3(OpDecode)作為指令譯碼器,其主要功能是將操作碼信號翻譯成機器能夠識別的控制信號。M4(RI)作為輸入寄存器,其主要功能是用于暫時存放數據存儲器輸出的數據。M5(RO)作為輸出寄存器,其主要功能是用于暫時存放運算結果。M6(PC)作為程序計數器,其主要功能是用于存放下一條指令所在單元的地址。ALU1和ALU2是算術邏輯單元,其功能分別是控制程序計數器的地址和執行相關的邏輯運算。Display作為顯示器,其主要功能是輸出相關的結果。
2.指令系統
在哈佛體系結構模擬器設計中涉及的指令有5條[7],分別是加法指令、跳轉指令、加載指令、存儲指令和輸出指令。這些指令的具體說明詳見下頁表1。在這些指令中,涉及尋址方式有立即尋址和直接尋址。
● 模擬器設計
1.數據寄存器設計
在哈佛體系結構模擬器設計中涉及的數據寄存器有輸入寄存器M4和輸出寄存器M5。
其中輸入寄存器M4的數據輸入端與數據存儲器的輸出端相連;地址輸入端與低電平相連;將控制信號DC1和時鐘信號作為與門的兩個輸入端,再與輸入寄存器的讀寫控制端相連;將輸入寄存器的輸出端與ALU2的其中一個輸入端相連。圖2給出了輸入寄存器的設計圖。[8]
輸出寄存器M5的數據輸入端與ALU2的輸出端相連;地址輸入端與低電平相連;將控制信號DC2和時鐘信號作為與門的兩個輸入端,再與輸入寄存器的讀寫控制端相連;將輸出寄存器的輸出端通過信號I-Mem與數據存儲器的輸入端相連。圖3給出了輸出寄存器的設計圖。
2.存儲器設計
在哈佛體系結構模擬器設計中涉及的存儲器有數據存儲器M1和程序存儲器M2。
圖4給出了數據存儲器的設計圖。數據存儲器M1的數據輸入端通過信號I-Mem與輸出寄存器的輸出端相連;地址輸入端通過信號Imm與程序存儲器的指令地址碼(由于程序存儲器M2輸出的地址碼Imm只有五位,故在其高位補零使其成為八位Imm)相連;將控制信號DC5和時鐘信號作為與門的兩個輸入端,再與數據存儲器的讀寫控制端相連;將數據存儲器的輸出端通過信號Mem與輸入寄存器的輸入端相連。
圖5給出了程序存儲器的設計圖。程序存儲器的數據輸入端與低電平相連;地址輸入端與程序計數器的輸出端相連;將讀寫控制端直接與低電平相連;將程序存儲器輸出端的高三位作為指令譯碼器的操作碼與指令譯碼器相連,低五位作為地址碼與數據存儲器的地址輸入端相連。
3.指令設計
哈佛體系結構模擬器采用的指令格式為:每條指令長度為11位,其中操作碼長度為三位,地址碼長度為八位。三位操作碼在經過指令譯碼器之后,可以形成8個八位的控制信號DC0~DC7。由于程序存儲器M2的高位輸出端有三位操作碼,低位輸出端的地址碼只有五位,故在其高位補零使其成為八位地址碼。表2給出各條指令的操作碼和控制碼分配方案。
● 應用
我們以計算y=x+1為例說明模擬器應用操作過程。在應用操作過程中,程序存儲器中存儲的內容既和程序的操作碼有關,同時與地址碼也有一定關系,所以在設計程序存儲器相關程序時,要考慮到操作碼和地址碼兩部分。在設計程序存儲器時,需要注意一點:由于程序存儲器輸出端只有3位操作碼,故在設置時,當程序指令為“0*”時,操作碼指向指令譯碼器的第0位;當程序指令為“2*”時,操作碼指向指令譯碼器的第1位;當程序指令為“4*”時,操作碼指向指令譯碼器的第2位;當程序指令為“6*”時,操作碼指向指令譯碼器的第3位;余下幾位,以此類推。以上所用“*”表示指令的地址碼。endprint
在設計數據存儲器時,需要事先在數據存儲器的地址端存入十六進制數“79,3D,78,2B,31,0D,78,3D,34,0D,79,3D”,其所對應的ASCII值為“y=x+1_x=4_y=”,其中“_”代表回車。這樣的數據安排,能夠使指令順序執行,使顯示器依次輸出想要的結果。十六進制數“34”所對應的ASCII碼值為4,其值可以修改為30~38中的任意值,最終的輸出結果也會隨之改變。
在整個程序的執行過程中,前12個周期是按照指令存儲的順序依次執行,其功能是為了實現“y=x+1_x=4_y=”,其中“_”表示回車。第13個周期是一條跳轉指令,其功能是將第9條指令輸出的數據取來,也就是輸出“4”;第14個周期是一條跳轉指令,其功能是將第4條指令輸出的數據取來,也就是輸出“+”;第15個周期是采用立即尋址的方式,通過指針PC指向程序存儲器所在的位置,使信號Imm成為00000001,并通過信號Bin傳輸到ALU的輸入端,最終使顯示器輸出“1”;第16個周期是一條跳轉指令,其功能是將第2條指令輸出的數據取來,也就是輸出“=”;接下來的幾個周期,使DC6為低電平,使顯示器無法輸出,將信號RIO中的內容與信號Bin中的內容相加,并在經過兩個周期后,傳輸至信號Mem,此時再將DC6設為高電平,使下一個時鐘信號由低電平變為高電平時,將信號Mem中的內容輸出至顯示器。
● 結論
面向本科生“計算機體系結構”課程教學的模擬器有很多,但由于MML一方面具有軟件的易動態運行、易修改、易二次開發的優點,同時實現了硬件結構的邏輯門級映射,彌補了其他計算機組成結構模擬器的不足之處,因而,本文推薦使用MML模擬器來進行教學活動。同時,計算機體系結構主要有兩類:馮諾依曼體系結構和哈佛體系結構。由于筆者近期已經提出了基于開源軟件包Multimedia Logic (MML)·馮諾依曼模擬器ARCH,因而,筆者在本文中提出了另一種想法——用于計算機體系結構教學的哈佛體系結構模擬器。這樣就彌補了MML模擬器在哈佛體系結構教學方面的不足,從而使MML模擬器能夠更好地用于計算機體系結構的教學工作。
通過本文設計的用于計算機體系結構教學的哈佛體系結構模擬器,學生能夠更加輕松且深刻地理解哈佛體系結構,從而為以后步入社會打下堅實的基礎。
參考文獻:
[1]Multimedia Logic(Version 1.4)Emulator Program. http://www.softronix.comllogic.html.
[2]莫毓昌,張前賢,陳榮根.ARCH:用于計算機組成與結構課程教學的模擬器[J].計算機教育,2013(10):56-61.
[3]W.Stallings.Computer Organization and Architecture[M].5th edition NJ: Prentice Hall, 2000:1-98.
[4]A. Tanenbaum. Structured Computer Organization[M].4th edition, NJ: Prentice Hall, 1999:1-320.
[5]C Yehezkel, W. Yurcik, M. Pearson, and D. Armstrong. Three Simulator Tools For Teaching Computer Architecture: EasyCPU, Little Man Computer, and RTLSim [J]. Journal on Educational Resources in Computing, 2001,1(4):60-80.
[6]D.Colton, G.Embrey, L.Fife, S.Mikolyski, D.Prigmore, and T.D.Stanley. From Architecture to Architecture: Undergraduate Students Design and Implement Computers Using the Multimedia Logic Emulator [J].Computer Science Education, 2007, 17(2):141-152.
[7]H.Oztekin, F.Temurtas1, A.Gulbag. BZK.SAU Implementing a Hardware and Software-based Computer Architecture Simulator for Educational Purpose [C].Proceedings of the 201O International Conference On Computer Design And Appliations (ICCDA 2010), 2010:90-97.
[8]T.D.Stanley, T.Q.Xuan, L.Fife, D.Colton, Simple Eight Bit, Emulated Computers for IllustratingComputer Architecture Concepts and Providing a Starting Point for Student Designs [R].Ballarat, Victoria, Australia, January 2007.endprint