孫 輝
(安徽大學 計算機科學與技術學院,安徽 合肥230039)
“計算機系統結構”課程是計算機科學與技術專業中非常重要的課程之一。該課程是一門集理論和實踐為一體的專業基礎課,它要求學生能夠在已經掌握的計算機硬件和軟件等相關知識基礎上,理解和掌握計算機整機系統中軟、硬件組成及相互之間的關系,能夠從系統的、全面的角度而非單一硬件或軟件的角度來解決問題。隨著信息產業的發展,“計算機系統結構”教學在保證基本結構和框架等知識點的同時,兼顧信息領域產業化的發展特點。
數據驅動時代下,數據密集型應用是大多數據處理的主要應用之一,比如滴滴打車信息處理、社交網絡數據分析、大規模視頻數據關聯信息的挖掘等應用,已成為大數據時代數據處理的基本核心。以數據驅動為特征的大數據時代(也可以稱之為數據驅動時代),數據密集型應用的處理和分析是計算機系統結構領域所面臨的新應用,同時,計算機系統結構又面臨新的問題。計算機系統結構教學需要結合當前信息化特征,在學習基礎知識點的同時,加深對課堂教學內容的理解和掌握。本實驗課程的教學目的是培養學生全面理解計算機系統各大部件的基本結構、基本原理、基本工作過程,掌握計算機系統量化研究方法及設計方法,同時在實踐過程中培養學生利用計算機系統在不同信息處理模式下解決問題的能力。培養學生實事求是、嚴謹的科學作風,提高學生分析問題、解決問題的能力和動手能力。
從科研角度來看,“計算機系統結構”(Computer Architecture and System)是一門研究計算機系統發展及計算機軟、硬件系統設計的綜合性較強的課程。從教學角度講,計算機系統結構的教學是一門集多種基礎課程為一體的、計算機專業學生必須要重點掌握的、綜合性教學課程。計算機系統結構課程主要闡述計算機系統結構的基本原理、計算機系統量化分析方法和設計原則、計算機系統結構性能評價、以及在新型應用背景下的技術實現。在教學內容上,計算機系統結構是綜合性比較強的一門課程,除了要掌握計算機編程知識、數據結構等基本課程外,還需要掌握模擬電路、數字邏輯、計算機組成原理、計算機操作系統、編譯原理、匯編語言等計算機科學與技術專業課程。
計算機系統結構課程重點培養計算機科學與技術專業本科生的系統思考問題的能力、抽象思維能力、自頂向下、自底向上、從中間到兩端的系統設計、性能分析能力和解決問題的能力。這門課程是計算機科學與技術專業非常重要的課程,國家985、211等重點高等院校和普通高校在培養目標和教學課程計劃上都開設了這門課程,計算機系統結構課程教學研究相關工作也非常豐富。
有人根據教學經驗提出了高等計算機系統結構課程研究型教學方法,結合最前沿的計算機系統結構特點和實踐,這在教學水平和學生的接受能力上要求較高,也能更好培養學生在研究和學習方面的系統能力,從而加深對計算機系統結構更全面的理解[1]。有人從面向計算機專業學生系統能力培養的角度分析了計算機系統能力的內涵,結合教學現狀,從系統的角度出發,探索和研究計算機專業學生的系統能力培養方法,以期解決當前計算機專業學生在系統能力培養方面存在的問題,建立以計算機組成原理為核心的硬件課程群[2]。有人提出了計算機系統結構課程群建設的教學方法,構建計算機系統結構課程教學體系[3]。合理地關聯《計算機組成原理》、《計算機系統結構》和《高性能計算機系統結構》等面向計算機系統結構的三門核心課程,通過系統規劃,加強建設,理順了課程之間橫向、縱向的關系,形成了重點突出、銜接較為合理的課程體系。
除了計算機系統方面的教學研究之外,計算機系統結構課程的知識點方面的研究也卓有成效。有人重點闡述了在計算機系統結構課程中的流水線技術教學內容和方法,其提出在教學過程中增加和突出微機上常用的新的系統結構和流水線技術,引入DLX虛擬處理器實驗來開展流水線的設計與實現,系統化介紹流水線技術從而提高流水線技術的教學效果[4]。有人針對計算機系統設計中程序局部性原理在計算機系統結構課程教學中的特點,提出如何在教學中針對時間局部性和空間局部性來講解計算機系統結構課程中的內容,有效提高計算機系統在存儲系統和流水線技術方面的功能性[5]。有人分析了計算機系統結構課程在多核時代的發展變化,針對多核技術知識點在課程中的設計安排,探討課程的教學內容與教學模式,闡述多核時代計算機系統結構課程的特色[6]。
通過對計算機系統結構課程教研工作的調研,發現計算機系統結構在教學內容和教學思路上都有很大的提高,包括計算機系統結構方面的教學工作和計算機系統結構各個細節方面的研究工作。教學方面結合現有信息技術發展特點,調整計算機系統結構課程內容也是教學的要求。針對現有的數據驅動下的應用特征,開展計算機系統結構的教學工作顯得尤為重要。
數據驅動下的計算機系統結構教學不是脫離原有計算機系統結構原課程基礎而開設的新的教學體系,而是結合現有數據驅動下的負載特征,在現有教學基礎上增加相關的教學內容,可在闡述計算機系統基礎時,增加兩個方面的分析。首先,對數據驅動下的應用特征的獨特性,舉例加深理解當前計算機系統結構所需要面臨的問題,典型的例子就是大數據處理下的海量數據的存儲和計算、人工智能下對大數據內容和規律的挖掘等。這些內容在一定程度上為問題的提出做好鋪墊。其次從計算機系統的CPU計算能力、存儲能力、輸入/輸出交互能力等多個方面展開。面向數據驅動的課程教學內容設計為:第一,計算機系統結構概論,包括計算機系統結構的發展、計算機系統解決應用性能問題的分類以及并行性等知識點。第二,指令系統、數據表示、尋址技術,并給出指令執行的量化研究方法和性能參數。第三,流水線技術、并行和并發執行:結合數據驅動的特點,闡述并發流水線、并行性以及重疊機制的應用。第四,指令級并行特征及局限性案例。第五,存儲系統:cache-內存系統、數據密集型存儲管理機制、數據密集型負載評測指標、內存性能參數及命中率表示。第六,內存-外存結構:外存儲系統特征及類型、外存儲系統性能評測指標、基于數據密集型負載的內外存儲系統協同優化機制。第七,輸入輸出系統及量化研究參數。第八,并行化技術及其在計算機系統中的應用,數據級并行、線程級并行、功能級并行等相關系統結構的軟硬件發展及其類型。
這樣在保證計算機系統結構基本原理的基礎上,增加了針對數據驅動應用特征,計算機系統結構應該具有哪些特殊的內容及其系統特征,這些新增加內容分布在每個章節上,在教學內容和教學安排上突出了不同應用下計算機系統結構在軟硬件結構上的優化方法,緊扣信息技術和計算機科學的發展趨勢,有效支持在新型數據驅動環境下,計算機系統的教學和科研工作。
具體到教學環節上,需要授課教師指導學生搜集最新與課程相關的計算機系統結構研究資料和成果,為了緊跟最前沿研究,建議采用國外經典計算機系統結構參考書《Computer Architecture:A Quantitative Approach 5th Edition》[7]。
計算機系統結構是綜合性要求較高的理論和實踐相結合的一門課程,課程的實踐部分主要通過兩個方面的實驗學習來完成。
第一部分采用 Gem5模擬器軟件[8]。Gem5模擬器是一個周期級全系統訪問軟件,其提供了4個不同的CPU模型,兩個不同的系統模型以及兩個不同的內存系統模型,并且支持多種指令集(ARM、ALPHA、MIPS、Power、SPARC 和 x86),其中可以在 ARM、ALPHA和x86三種架構上運行Linux操作系統。Gem5的許可證是基于BSD的,這為工業界和學術界的合作搭建了一座非常好的橋梁。雖然開發一套全系統模擬器很復雜,但Gem5正在借助開源的強大合作力 (如 mailing lists,wiki,web-based patch reviews,a publicly accessible source repository等)不斷完善自身功能。通過在模擬器上運行則試程序,讓學生認識和理解計算機系統內部CPU結構、內存結構及其管理、總線結構、指令系統等進行功能和性能分析,從而掌握計算機系統結構CPU、內存、指令系統等工作原理,認識數據訪問、數據相關、指令并行處理等概念。
第二部分采用FPGA上試驗具體的一些功能,授課教師指導學生學習開源RISC-V指令集架構[9],并將該開源工程在XILINX開發板上進行計算機系統結構基本組成部件的試驗,在掌握基本原理和設計方法后,以小學期試驗課題的形式,讓學生在FPGA開發板上實現針對數據驅動下的計算機系統中CPU、內存、指令、外存等關鍵部分的設計和實現,進一步加深對計算機系統結構這門課的認識。有助于將所學到的教學內容轉換成實際的工程實踐的工作。這非常有助于學生更深入的理解計算機系統結構及其在數據驅動應用下的設計理論和實踐方法。
計算機系統結構課程教學涉及內容之廣,從底層體系結構到底層操作系統的設計和實現,綜合運用了模擬電路及數字電路基礎、計算機組成原理、匯編語言、編譯原理、計算機操作系統等多學科知識,是一門綜合型的教學科目。在教學內容和教學方式上與其他教學有所不同,一方面在教學中保證學生能理解基本概念和原理,另一方面要結合當下信息領域內的應用特征,計算機系統結構的學習如果能與應用實踐相結合,以期能解決數據驅動下的新型計算機系統結構所面臨的問題。
信息技術的更新日新月異,除了基本的課本知識的講解之外,還需要時刻把握國內外重點科研院校和研究機構對計算機系統結構的研究成果和進展,及時更新計算機系統結構課程中的相關教學內容,針對本學科領域應用的不同案例,設計和實現計算機系統結構相關改進技術,提高計算機系統結構課程的教學質量和水平,確保計算機系統結構領域知識的與時俱進以及人才培養的實效性,提高學生從系統結構解決實際問題的能力。