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