高 珍,黃 杰,馮巾松,張冬冬,尹學(xué)鋒
(1.同濟大學(xué) 軟件學(xué)院,上海 201804;2.同濟大學(xué) 電子與信息工程學(xué)院,上海 201804)
在計算機學(xué)科中,計算機組成原理一直作為核心基礎(chǔ)課程而備受重視,但是課程對硬件知識的高要求使它被公認為枯燥難學(xué)的課程,為了加深學(xué)生對理論知識的理解,需要輔助實踐環(huán)節(jié)增強學(xué)生掌握課程內(nèi)容。國內(nèi)外大學(xué)紛紛開展計算機組成原理的課程設(shè)計,比如美國斯坦福大學(xué)要求學(xué)生獨立使用VHDL 語言實現(xiàn)CPU 或VGA顯示控制模塊等,并最終在FPGA 中完成軟硬件調(diào)試。
同濟大學(xué)采用“口袋”式實驗平臺Xilinx Nexys4 DDR 開發(fā)板,學(xué)生人手一塊,要求每位學(xué)生獨立完成基本邏輯部件、運算部件、指令系統(tǒng)、中央處理器、三級存儲結(jié)構(gòu)及綜合應(yīng)用實驗,但是,目前國內(nèi)外的實驗多數(shù)還是以驗證性的插箱實驗為主,學(xué)生只能從抽象層面理解各部分知識點,知其然而不知其所以然,且當(dāng)前的實驗設(shè)計與改革探索多數(shù)集中在中央處理器CPU上[1],因硬件支撐困難等原因,鮮有存儲管理與輸入輸出通道管理的完整實驗,使實驗教學(xué)內(nèi)容不完整,學(xué)生無法從系統(tǒng)層面對計算機的組成原理有深入的理解和掌握。
1964年IBM公司推出了System/360 計算機,盡管在過去幾十年中計算機的發(fā)展速度令人吃驚,但System/360 包含的基本技術(shù)概念仍是通用計算機行業(yè)骨干的組成部分,System/360 的誕生標(biāo)志著現(xiàn)代計算時代的來臨,計算機組成原理與計算機系統(tǒng)結(jié)構(gòu)的很多基礎(chǔ)性知識依然是從System/360 而來。
至今,大型主機在全球依然發(fā)揮著重要作用,在銀行、金融、醫(yī)療、保險、公用事業(yè)、政府機關(guān)和大量的其他公有及私有企業(yè)中,主機繼續(xù)構(gòu)成現(xiàn)代商務(wù)的基礎(chǔ),也因其極高的可用性、可靠性及可維護性,大型主機廣泛應(yīng)用在我國銀行業(yè)。
為了建立大型主機的生態(tài)系統(tǒng),2005 年IBM 公司向國內(nèi)高校捐贈5 臺IBM z900 主機,與國內(nèi)高校攜手共建主機課程,同濟大學(xué)作為華東地區(qū)唯一一所高校加入IBM 大型主機系統(tǒng)教育合作計劃,同濟大學(xué)“主機系統(tǒng)教育中心”面向軟件工程學(xué)科開設(shè)大型主機系列課程,至今已經(jīng)有14 屆學(xué)生選修[2];2014 年IBM 與同濟大學(xué)等6 所高等院校再次合作建設(shè)6 個“新一代主機中心”,對大型主機進行了更新?lián)Q代;2019 年同濟大學(xué)首次在IBM 公司的支持下采用開源技術(shù)建設(shè)了大型主機虛擬仿真實驗平臺,主機教學(xué)不再受制于高昂的硬件采購及維護費用,基于虛擬主機平臺進行計算機課程的日常教學(xué)成為可能。
在計算機組成原理傳統(tǒng)的教學(xué)方法[3-4]中,授課教師以理論講述為主,實驗以驗證性的插箱實驗為主,學(xué)生只能從抽象層面理解各部分知識點,知其然而不知其所以然,更無法從系統(tǒng)層面對計算機的組成原理有深入的理解和掌握[5-6]。為了打破這種局面,可以設(shè)計從芯片到大型主機的虛實聯(lián)動計算機組成原理系統(tǒng)實驗,本著“能實不虛”的原則,實的部分要求學(xué)生基于FPGA開發(fā)板自底向上從CPU 部件做起,直至實現(xiàn)自己的單周期/多周期、非流水線/流水線CPU,并完成三級存儲結(jié)構(gòu)、設(shè)計基于IO 接口的計算機綜合應(yīng)用實驗,理論和實踐有效結(jié)合以提高學(xué)生對于CPU 原理的理解,提升學(xué)生的動手能力和實踐能力。虛的部分對于計算機的存儲系統(tǒng)和輸入輸出系統(tǒng)的組織和管理等不能做實的實驗內(nèi)容,基于IBM 大型機的虛擬仿真平臺設(shè)計存儲管理及I/O 通道管理虛擬實驗,涉及的內(nèi)容見圖1,以加深學(xué)生對理論知識的消化和理解,從而使學(xué)生從芯片到大型主機對計算機組成原理有更全面深入的掌握。
圖1 實驗教改范圍
大型主機有兩類虛擬機,一類是IBM 公司提供的zPDT 平臺,一類是開源Hercules 平臺,考慮到實驗平臺的可擴展性,采用Hercules 構(gòu)建仿真平臺,在虛擬機上部署IBM 公司為高校人才培養(yǎng)提供的主機操作系統(tǒng)ADCD(Application Developers Controlled Distributions)版本,基于主機虛擬機,采用Spring Cloud 的微服務(wù)技術(shù),調(diào)用主機z/OS MF (Management Facility)提供的RESTful API 編程接口,開發(fā)建設(shè)大型主機虛擬仿真實驗平臺,對外提供網(wǎng)絡(luò)服務(wù)。
計算機使用兩種類型的物理存儲,包括中央存儲器(又稱內(nèi)存)和輔存實現(xiàn)虛擬存儲。虛擬存儲的使用是現(xiàn)代操作系統(tǒng)的一大特征,使計算機在處理大量工作負載的同時并發(fā)地和大量用戶交互。以大型主機為例,z/OS 操作系統(tǒng)支持64位地址,這允許一個程序?qū)ぶ犯哌_16EX 的存儲空間。在實際中,主機一般會裝配比這個小得多的中央存儲器。為了使每個用戶執(zhí)行時感覺計算機系統(tǒng)中好像真有這大的存儲空間,z/OS 只把每個程序的活動部分存放于中央存儲器中,而把其余的代碼和數(shù)據(jù)保存在輔助存儲器的頁數(shù)據(jù)集(Page Data Sets)文件中,PDS 文件就位于硬盤輔存上。
對虛擬存儲的訪問使用虛擬地址,以主機為例,地址空間(Address Space,即操作系統(tǒng)分配給用戶或獨立運行程序的虛擬地址范圍)被劃分成4KB 大小的虛擬存儲單元,稱為“頁”;地址空間被劃分成1MB 大小的單元,稱為“段”。一個段是連續(xù)的跨越兆字節(jié)的虛擬地址塊,它從1MB 的邊界處開始。譬如,一個2GB 的地址空間由2 048 個段組成。地址空間被劃分成2~8GB大小的單元,稱為“區(qū)域”。一個區(qū)域由跨越2~8GB 的連續(xù)虛擬地址塊組成,它從2GB 的邊界開始,一個2TB 的地址空間由2 048 個區(qū)域組成。因此,64 位的虛擬地址被劃分為4 個主要區(qū)域,0~32 位為區(qū)域索引(RX),33~43 位為段索引(SX),44~51 位為頁索引(PX),52~63 位為字節(jié)索引(BX),結(jié)構(gòu)見圖2。
圖2 虛擬地址劃分
操作系統(tǒng)可以使用查表確定一個頁是在實存還是在輔存中,并確定其在存儲器中的位置。在查找程序的一個頁時,系統(tǒng)得到該頁的虛擬地址,根據(jù)需要將該頁調(diào)入中央存儲器或者調(diào)出輔存中。在輔存和實存之間的頁面移動稱為頁面調(diào)度。頁面調(diào)度是理解虛擬存儲的關(guān)鍵。
大型主機依賴實存管理器、輔存管理器以及虛存管理器對存儲系統(tǒng)有效監(jiān)管。實存管理器主要負責(zé)頁面調(diào)度活動;輔存管理器主要用于跟蹤輔存的使用情況;虛存管理器響應(yīng)獲得或釋放虛存的請求。頁面在內(nèi)存、虛存和輔存中對應(yīng)的名字分別為頁框、頁面和頁槽。
為了讓學(xué)生更深入地了解虛擬存儲的運作機制,可以設(shè)計虛擬存儲管理實驗,見表1。學(xué)生需要:①監(jiān)控內(nèi)存使用率,通過查看UIC(Unreferenced Interval Count)等指數(shù)判斷內(nèi)存大小是否夠用;②配置輔存大小并監(jiān)控,如果長期維持在30%以上,則需要增加輔存空間。眼見為實,通過這些實驗練習(xí),虛存調(diào)度不再是書本上的抽象算法,學(xué)生對虛存的運作機制有了更直觀的認識和更深入的理解。不僅如此,學(xué)生更掌握了如何查看監(jiān)控、分析原因、通過修改輔存配置等方法切實提升虛存的使用性能。
表1 存儲管理實驗設(shè)計
對于輸入輸出設(shè)備,控制其正常工作需要依賴通道子系統(tǒng)(Channel SubSystem,CSS)。通道子系統(tǒng)一般只在大型計算機系統(tǒng)中才有,在大型計算機系統(tǒng)中,外圍設(shè)備的臺數(shù)一般比較多,設(shè)備的種類、工作方式和工作速度的差別也比較大。為了把對外圍設(shè)備的管理工作從CPU 中分離出來,從IBM 360 系列機開始,普遍采用通道處理機技術(shù)。通道技術(shù)能夠使CPU 擺脫繁重的輸入輸出負擔(dān)和共享I/O 接口,通道處理機能夠負擔(dān)外圍設(shè)備的大部分I/O 工作,通道處理機雖然不是一臺具有完整指令系統(tǒng)的處理機,但是可以把它看作一臺能夠執(zhí)行有限I/O 指令,并能被多臺外圍設(shè)備共享的小型專用處理機。在一臺大型計算機系統(tǒng)中可以有多個通道,一個通道可以連接多個設(shè)備控制器,而一個設(shè)備控制器又可以管理一臺或多臺外圍設(shè)備,這樣就形成了一個非常典型的I/O 系統(tǒng)多級層次結(jié)構(gòu)。以大型主機為例,I/O 系統(tǒng)包括6 層。
(1)邏輯分區(qū)(Logical Partition,LPAR),是一種虛擬機,在每個邏輯分區(qū)上都可以運行一個單獨的操作系統(tǒng)。通過LPAR 技術(shù)可以將一臺主機劃分為多個邏輯上獨立的機器,每一個LPAR 所占的內(nèi)存是相互獨立的,但是CPU、通道等是共享的。
(2)通道子系統(tǒng)(Channel Subsystem,CSS),主要由兩部分構(gòu)成:SAP 和Channel。SAP(System Assist Processor) 稱為系統(tǒng)輔助處理器,與中央處理器CP(Central Processor)唯一的不同之處在于兩者擁有不同的指令集,這主要取決于兩者的職責(zé)不同。SAP 的主要功能是為即將執(zhí)行的I/O 操作尋找可用的通道(Channel)和控制單元(Control Unit)。
(3)通道(Channel),負責(zé)I/O 操作,即在內(nèi)存和外設(shè)之間進行數(shù)據(jù)傳輸。
(4)交換機(Switch),是一種將通道和控制單元連接起來的中間設(shè)備,包含多個端口,這些端口在物理上是兩兩相連的,可以實現(xiàn)一個通道與多個設(shè)備連接,從而增加了通路,提高了并發(fā)性和可用性。
(5)控制單元(Control Unit,CU),是通道與I/O 設(shè)備之間的接口,它接收通道命令,控制I/O 設(shè)備工作。
(6)I/O 設(shè)備(Device),也稱輸入輸出設(shè)備,包括打印機、打孔機、磁帶、磁盤、控制臺等。
I/O 系統(tǒng)多級層次結(jié)構(gòu)示意圖見圖3。
圖3 大型主機I/O 系統(tǒng)多級層次結(jié)構(gòu)
為了讓學(xué)生深入了解通道控制及輸入輸出系統(tǒng),基于大型主機的HCD 設(shè)計一組硬件管理的實驗如下。HCD(Hardware Configuration Definition)是主機操作系統(tǒng)z/OS 的一個重要組件,它提供ISPF 交互界面定義硬件資源,包括服務(wù)器、邏輯通道子系統(tǒng)、邏輯分區(qū)、通道、交換機、控制單元、設(shè)備等。實驗?zāi)康臑檎莆誌/O系統(tǒng)中各層級軟硬件的定義、配置和控制。具體的實驗設(shè)計見表2。
HCD 可以按照任何順序配置定義硬件,但如果隨意定義硬件配置,很可能導(dǎo)致邏輯混亂,影響硬件配置定義的工作。因此,要有一個邏輯上的順序作為參考,推薦的硬件配置邏輯關(guān)系見圖4。
通過I/O 通道管理實驗,學(xué)生學(xué)習(xí)到I/O 系統(tǒng)中各層級軟硬件的定義、配置和控制方法,加深理解了I/O 通道的運行機制,并且掌握了大型主機I/O 設(shè)備配置管理的實際技能。
計算機組成原理是計算機專業(yè)及軟件工程專業(yè)本科生的重要必修專業(yè)基礎(chǔ)課程。它涵蓋計算機的基本邏輯部件、運算部件、指令系統(tǒng)、中央處理器、存儲系統(tǒng)、輸入輸出系統(tǒng)的基本原理。同濟大學(xué)計算機與信息技術(shù)國家實驗教學(xué)示范中心整合了教育部IBM 精品課程大型主機系統(tǒng)管理與計算機組成原理傳統(tǒng)教學(xué),在2019 年建設(shè)完成的大型主機虛擬仿真實驗平臺上,為計算機組成原理課程開發(fā)了存儲管理實驗與I/O 通道管理實驗,對原有CPU 綜合實驗進行了有效補充,使學(xué)生能夠全面掌握并深入理解計算機的運算部件、指令系統(tǒng)、中央處理器、存儲系統(tǒng)、輸入輸出系統(tǒng)的基本原理。經(jīng)統(tǒng)計,計算機組成原理實踐環(huán)節(jié)的年級平均成績比改革之前提升了30%,取得了理想的教學(xué)效果。
表2 I/O 通道管理實驗設(shè)計
圖4 硬件配置管理邏輯關(guān)系