鮑培明,吉根林
(南京師范大學計算機與電子信息學院,江蘇南京 210046)
基于國家戰略發展要求,企業對處理器、系統軟件、大數據應用系統等方面核心技術人才需求日益迫切。為推動新工科建設,教育部計算機類專業教學指導委員會專門開展了“新工科計算機類專業系統能力培養改革與實踐”研究項目,指導國內高校加強新工科計算機類專業系統能力培養,提高學生適應新經濟發展的整體素質和能力。委員會將清華大學、南京大學、北京航空航天大學等高校列為系統能力培養的示范單位,同時建立了系統能力培養試點單位,推動各高校新工科計算機類專業系統能力培養方式、培養方案、新知識框架及內容研究發展,提高計算機類專業人才培養質量和學科建設水平[1-4]。
眾多高校計算機院校已開展系統能力培養課程,在計算機組成等硬件課程教學改革中注重更新實驗教學內容。如文獻[5]通過虛擬仿真技術將計算機硬件課程群(數字邏輯、計算機組成原理、計算機體系結構、微機接口)實驗貫通銜接,提出一種“軟硬一體化”的創新實驗箱設計;文獻[6]圍繞龍芯開源實驗平臺介紹CPU 設計實驗,探討新一代實驗平臺在教學中的利弊及改進方向;文獻[7]介紹了流水線CPU 功能設計,并展示了功能仿真界面。上述現有研究側重于敘述CPU 結構設計,而如何引導學生從簡到難逐步獲得復雜的CPU 結構認知成為研究重點。
南京師范大學在系統能力培養教學改革過程中,新規劃了理論教學內容和實踐課程體系,提出了“知行合一、知識落地”的教學理念,將教學內容與實驗內容有機統一。首先,深化實驗教學內容,創新地設計了一些高級語言程序,讓學生在機器級代碼的調試執行中關聯高級語言程序內涵和計算機底層工作原理,實現軟硬知識貫通;其次,基于教材CPU 設計內容,分析CPU 設計難點,圍繞時空維度,創新性提出單周期CPU 與流水線CPU 實現步驟,引導學生由簡到難逐層、逐模塊地實現CPU。“知行合一、知識落地”的教學理念注重知識系統化、理論和實踐相互影響、解決復雜問題的能力培養,以進一步提升學生持續學習的能力。
系統能力包含系統知識和工程實踐能力[1],核心是在掌握計算系統基本原理的基礎上,進一步開發構建以計算技術為核心的各類系統。這需要學生深刻理解計算系統內部各軟件/硬件部分的關聯關系與邏輯層次,了解計算系統呈現的外部特性以及與人和物理世界的交互模式。系統能力培養體現出典型的工程教育特征,系統能力培養貫穿于復雜工程問題解決過程之中。
為培養具備綜合素質和國際競爭力的高素質復合型人才,新工科建設聚焦于學生實踐能力和創新能力。在新工科背景下,計算機專業人才培養強調系統觀,該專業人員應能在計算機系統層面進行分析、設計、調優與檢錯,站在系統高度解決應用問題。系統能力培養體現3 個方面的特性:①程序的執行結果不僅取決于算法、編程、編程語言,還取決于語言處理系統、操作系統、指令集體系結構及微體系結構,從原先的“程序性開發能力”轉向為“系統性設計能力”;②強化計算機整機概念,全面理解計算機系統的層次結構,能夠進行軟硬件協同設計的貫通能力;③通過軟硬件協同實現開發方案最優化,以強大的底層技術保證工程目標的實現能力。
從計算機教學的角度,可將計算機系統分為3 個層次[1]:①運用數學和物理原理,設計和開發計算機運行系統,包括中央處理器(Central Processing Unit,CPU)、操作系統及編譯系統,這些是計算機基礎系統;②運用計算機基礎系統原理,設計和開發計算機領域專門系統,如數據庫管理系統、網絡系統等,稱為計算機領域系統;③運用計算機領域系統,設計和開發各種應用系統,例如電子商務系統、APP 應用開發等,稱為計算機應用系統。
計算機專業課程設置完全覆蓋這3 個層次。但20 世紀80 年代初,在PC 時代背景下我國放棄了處理器、操作系統、編譯系統自主研發[2],計算機專業主要以培養各類應用軟件開發人才為目標,這直接影響教學導向。目前教學存在的問題體現在多個方面。
(1)以CPU 設計和操作系統開發為核心的計算機基礎系統課程設置存在內容弱化、概述性內容多、實踐環節不足等問題。
(2)計算機專業課程內容和實踐教學缺乏從計算機基礎系統到計算機領域系統、最后到應用系統的貫通。雖然每門課程內容詳實,但課程知識之間缺乏連接,教學中知識點彼此孤立,缺少系統觀,缺乏綜合能力。
(3)硬件類課程教學內容與實際運用場合和環境存在脫節。學生不了解原理的實際運用,尤其缺少感性認識,面臨大量機械記憶負擔,喪失了學習的興趣。
(4)以上問題在在教材和青年教師教學中繼續延伸,積累的效應是學生不喜歡計算機基礎系統課程,僅熱衷于學習軟硬件系統平臺之上的程序開發。
這些教學問題導致我國IT 人才結構失衡,例如,國內JAVA 程序員眾多,但鮮有具備JAVA 虛擬機研發技能的專業人才;網站開發人員雖多,但大多不熟悉瀏覽器底層引擎的研發技能。人才結構失衡制約著我國計算機核心技術的發展,致使我國在處理器、操作系統等最核心的技術方面長期依賴國外。
教育部計算機類專業教學指導委員會推動的國內高校計算機系統能力培養改革有效改變了教學現狀,建立了系統能力培養的課程體系,加強了計算機組成原理等計算機基礎系統課程教學內容和實踐內容,提出了軟硬件課程之間知識貫通的教學方案。
計算機系統能力培養是一個包含“聞-見-知-行”的過程,“知之”是課堂教學,“行之”是實踐教學,知行合一,知識付諸實踐所學才能轉換為能力。
計算機系統層次結構如圖1 所示[8],計算機組成與結構課程內容位于軟件和硬件結合處,以指令集體系結構為界面,向上涉及程序設計、操作系統、編譯程序、匯編程序,向下涉及計算機硬件,如處理器、存儲器、I/O 訪問等。所以本門課程應從程序設計的視角出發,闡述指令執行過程,指令執行中的數據運算、存儲訪問、I/O 訪問、數據通路、控制信號、異常和中斷,以CPU 設計為核心培養學生現代計算機系統設計能力。
按照教學大綱內容要求,構建課程知識框架體系,并闡述相關概念之間的聯系。實驗教學是課堂教學的補充和拓展,承擔著課堂教學知識落地的任務。
計算機組成與結構課程同時采用驗證型與設計型兩種實驗方式。驗證型實驗借助Linux+GCC+C 或Windows+VC+C 平臺,讓學生在實驗中體會計算機系統內部軟件/硬件部分關聯關系與邏輯層次;設計型實驗借助Verilog+Quartus 或Verilog+Vivado 平臺,設計和實現課堂講述的CPU 模型機包括單周期CPU 和流水線CPU,設計型實驗貫穿于復雜工程問題的解決過程。課堂教學和實驗教學實現有機融合,可減輕學生機械記憶負擔,促使知識向能力更快轉換。
在“運算方法和運算部件”章節,基本內容是兩個補碼表示的n 位定點整數的運算公式與補碼加減運算部件,如圖2 所示[9]。常規教學以定點整數加減法運算為例進行說明。
結合程序說明驗證型實驗,如圖3(a)所示。圖3(a)程序反匯編代碼如圖3(b)所示,從反匯編代碼可以看出,“x<y”的比較是通過“x-y”實現,圖2 是“x-y”的實現電路,電路輸出的ZF、SF 和OF 值作為“x<y”的判斷依據。圖3(c)顯示了圖3(b)指令的單步跟蹤數據,可以看到程序執行過程中x、y、z 的補碼表示,以及圖2 電路運算“x-y”后設置的ZF、SF和OF 值。教學基于“高級語言程序—匯編語言程序—機器指令序列—運算方法—部件”路線,讓學生真正動手從編程設計、編譯、反匯編、單步跟蹤執行指令,觀察寄存器和存儲器內容的變化,看到數據在計算機中的表示、存儲和運算結果,有助于理解運算部件生成狀態位的作用,實現軟/硬件知識貫通理解。
驗證型實驗讓書本知識轉換為可“觸摸”的、落地的知識,使學生不僅理解知識點,也增強了運用知識的能力。
計算機組成與結構課程的重要內容之一是CPU 設計,設計型實驗是基于MIPS(Microprocessor without Interlocked Piped Stages)指令集實現單周期CPU 和流水線CPU。單周期CPU 實現的是指令串行執行,流水線CPU 實現的是多條指令的并行執行。
課堂講述了單周期CPU 模型,如圖4 所示,單周期CPU設計實驗采用圖4 模型[9]。組合邏輯電路與時序邏輯電路是數字電路設計的基礎,基本部件設計與單條指令執行流程是單周期CPU 設計難點。
把單周期CPU 實驗分為6 步實現,如表1 所示。前5 步基于“機器指令—電路—現場可編程邏輯門陣列(Field Programmable Gate Array,FPGA)”的路線,從組合邏輯電路到時序邏輯電路,從簡單的小部件逐步過渡到復雜部件,最后組裝成一個完整的單周期CPU。測試單條指令是否正確執行,掌握單條指令執行流程。
最后一步基于“程序—匯編指令—機器指令—電路—FPGA”的路線,在單周期CPU 上測試程序執行正確性。為培養學生系統觀,要求學生將高級語言程序轉換為匯編指令的表示,再翻譯轉換為機器指令序列,裝入CPU 中執行。從高級語言語句到機器級指令,掌握程序執行流程。

圖4 單周期CPU 模型

表1 教材章節內容與實驗對應關系
每階段實驗均與教學內容緊密結合,要求課堂中知識點在實驗中實現,知行合一,知識落地。單周期CPU 實驗基本貫穿于本課程在計算機系統層次結構中的教學,也有助于理解指令集體系結構在硬件和軟件之間的作用。
課程結束后有1 周的課程設計時間,用于實現帶轉發功能的流水線CPU。流水線CPU 采用5 段流水線框圖結構,如圖5 所示[9]。
流水線CPU 中的部件與單周期CPU 部件基本一樣,所以流水線CPU 部件設計難度不大,而時空結構是學生理解和設計流水線CPU 的難點。為了引導學生建立時空觀,流水線CPU 設計采用分層次設計方法,如表2 所示。

圖5 流水線CPU 模型
層次劃分提供了流水線CPU 設計步驟,層次1-3 引導學生從1 條指令開始,建立時間維度;逐步增加指令,建立空間維度。在理想狀態下,每條指令獨立執行,并行執行的指令之間不考慮數據信號或控制信號傳遞;層次4-5 是從理想狀態到非理想狀態轉換,并行執行的指令之間可能有數據信號或控制信號傳遞,時空結構復雜。層次設計方法引導學生逐步建立時空結構,實現流水線CPU。
層次劃分的另一個好處是考慮學生能力差異,由淺入深的教學內容安排可減輕部分學生心理負擔。對學生的成績評定不是按其完成的指令數,而是按完成到達的層次實現。層次劃分和成績評定如表2 所示。

表2 層次劃分和成績評定
CPU 設計和實現過程貫穿于解決復雜工程問題的全過程,注重理論和實踐之間的相互影響,以期培養學生綜合素質,增強學生持續學習的能力。
“知行合一,知識落地”的教學理念具有普適性,特別適用于難度較大的專業課程,通過精心設計的實驗使教學知識在實踐中得以應用,提高了學生知識理解和知識運用能力。本文提出的CPU 實現方案具有通用性,對實驗平臺不作要求。分層劃分的流水線CPU 實現方案適用于不同學習能力的學生,由淺入深地指導學生設計和實現1 個復雜系統。CPU 實現方案具有易操作性,流水線CPU 課程設計中15%的同學成績優秀,層次劃分步驟易于引導學生逐步達成預定目標。
實踐教學證明,教學改革后教師教學理念發生了改變,教學內容安排更清晰合理,教學質量逐漸提升。在探索教學和實驗方案的過程中,老師自身知識結構也得以完善。改革前學生平均評教分數為85 分左右。教學改革后,學生平均評價分數提升至94 分左右,2019 年秋季流水線CPU 課程設計平均評教分達到96 分以上。