黃沛杰,徐東風
(華南農業大學信息學院,廣州 510642)
計算機硬件教學中關注點分離思維的培養實踐
黃沛杰,徐東風
(華南農業大學信息學院,廣州 510642)
分析計算思維中的關注點分離思維,并從功能劃分和逐步細化兩個方面討論其實現方式。進而結合計算機硬件教學里中央處理器(CPU)的教學實踐,探討關注點分離思維的培養方案。實踐表明,該方案對培養學生的關注點思維有良好效果。
關注點分離;計算機硬件課程;教學實踐;計算思維
在2010年出版的《高等學校計算機科學與技術專業人才專業能力構成與培養》中,計算思維被列為計算機專業基本能力之一[1]。計算機軟硬件相關科目的理論與實驗教學中,計算思維的培養越來越受到重視[2~3]。
然而,要將計算思維培養落實到具體課程內容與教學過程中,也即是解決計算思維培養如何“落地”的問題,還需要做大量細致的研究和實踐工作[3]。本文以計算機硬件系列課程中的中央處理器(CPU)及相關知識點為例,探討計算機硬件教學中計算思維之關注點分離思維的培養實踐。
卡內基·梅隆大學的周以真教授將計算思維定義為“運用計算機科學的基礎概念去求解問題、設計系統和理解人類的行為。它涵蓋計算機科學之廣度的一系列思維活動”[4],并將計算思維進一步更細致描述為“計算思維是通過約簡、嵌入、轉化和仿真等方法,把一個看來困難的問題重新闡釋成一個我們知道怎樣解決的問題;是一種遞歸思維,是并行處理;是基于關注點分離的方法;是按照預防、保護及通過冗余、容錯、糾錯的方式,并從最壞情況進行系統恢復的一種思維方法;是在不確定情況下的規劃、學習和調度的思維方法;是權衡和折中的思維方法”。其中的關注點分離(Separation of Concerns,SoC)方法指的是采用抽象和分解來迎戰龐雜的任務或者設計巨大復雜的系統[4]。關注點分離作為一種普適的處理復雜問題的系統思維方法和原則,在計算機軟硬件設計與實現的許多方面都有體現。其價值在于系統中的一部分需要發生改變時,能夠清晰地識別出哪些部分(如子系統或者組件)需要改變,不會影響其他部分。同時,如果系統需要擴展,影響將會最小化,已經可以工作的每個部分都保持繼續可用。
實踐上,可以從功能劃分和逐步細化兩個方面的關注點分離來實現子系統或者組件的獨立性,如圖1所示,在實際工作中可以綜合運用這兩方面。

圖1 關注點分離
(1)通過功能劃分來分離關注點。系統由一系列功能部件組成的“協作體系”組成,當不同功能被合理分離之后,為了實現新的系統設計只需構造新的“協作體系”,而需求變更也往往只影響到少數功能模塊的定義和實現。無論是組件還是子系統,它們所承擔的功能都應該具有高度獨立性。
(2)通過逐步細化來分離關注點。逐步將系統細化為粒度不同的子系統,例如先考慮大粒度的子系統,而暫時忽略子系統是如何通過更小粒度的模塊組成的。在實現上,可以將系統劃分為一系列子系統,或者一系列組件(模塊),并為子系統(組件)定義明確的接口,其中的細節可以相對獨立地實現。
作為計算機硬件系統中的重要部件,CPU的教學一直是硬件教學的重點。CPU及內部細分功能組件如算術邏輯單元(ALU)、操作控制器、時序產生器和通用寄存器組等的工作原理在《計算機組成原理》課程講授,細化到全加器、觸發器以及門電路則在《數字電路》課程講授。
一方面,關注點分離思維的培養要注重CPU內部各功能組件通過時間及空間協作形成整機基礎上的功能劃分。首先,一般先根據功能需求設計CPU的數據通路圖;其次,分析各功能部件的功能及輸入輸出信號,將各個功能部件連接起來形成一個整體。在這個基礎上的各功能模塊的設計與實現則具有高度獨立性,在實踐上可以選擇不同的設計方案。
另一方面,關注點分離思維的形成要注重層次化、模塊化的設計理念和自頂向下(top-down)的設計思想的培養[5]。根據自頂向下的設計思想,一般先進行系統描述,將系統劃分為若干子系統或功能模塊,負責各模塊的接口定義,并編寫子系統或模塊模型;經過仿真驗證后,再把這些子系統或模塊分配給下一層的設計者,由他們完成子系統或模塊的具體設計。在整機模型和各功能部件的設計中,都可以采用自頂向下的層次化、模塊化設計方法。在CPU模型中,在ALU和通用寄存器組的部件級設計上,都可以進一步細化為低一層的全加器、寄存器和多路選擇開關,甚至更低層次的門電路等模塊進行構建。
本節以硬件核心部件CPU的教學設計和實施為例,從功能劃分和逐步細化兩個方面,介紹關注點分離思維的培養實踐,采用了理論教學和實驗實踐相結合的方式。
3.1 實驗環境
在電子設計自動化(EDA)技術和可編程邏輯器件(PLD)的支持下,目前主流的硬件系列實驗已經從接插式箱式實驗臺的“驗證”型實驗向“驗證-設計-創新”結合型方向轉變,為計算思維的培養提供了條件。
實驗環境包括Altera公司的可編程邏輯設計環境的軟件平臺Quartus II和清華大學科教儀器廠研制生產的硬件平臺TEC-CA開放式CPU實驗平臺[5]。Quartus II可以完成設計輸入、編輯、編譯、仿真、封裝到下載的全過程。而通過TEC-CA平臺上的設備和接口可以檢測設計結果的正確性。
3.2 關注點分離之功能劃分
CPU從功能劃分角度,可以進一步分成控制器和運算器。如果從實驗模塊角度,還可以細分為算術邏輯單元(ALU)、操作控制器、時序產生器、通用寄存器組等功能塊,以及一些零散的專用寄存器(主要包括程序計數器PC、指令寄存器IR、數據緩沖寄存器DR和地址寄存器AR等,這些專用寄存器主要負責取指令以及存取操作數),如圖2所示。
這些主要功能部件通過時空配合實現CPU的主要功能。這些功能模塊都具有獨立性,功能部件的內部設計的改變,對其他模塊影響不大,例如改變算術邏輯單元或者操作控制器的內部實現方式。這使得在實驗設計上可以讓學生專注于單一功能模塊上的設計與實現,有利于分工開展。在功能部件的基礎上才是整個實驗小組在CPU系統層次上的集成。

圖2 CPU功能劃分
3.3 關注點分離之逐步細化
CPU的各功能部件,在一些功能模塊內部的設計上,又可以通過層次化和模塊化逐步細化的方式來實現。例如ALU功能部件中的核心部件加法器可以分解為多個全加器,而全加器又可以進一步細分為更低層的門電路組件來實現。加法器的逐步細化示例如圖3所示。
圖3中的加法器采用的是行波進位加法器[6]。加法器及全加器的內部實現細節相對獨立,可以更換而不影響更高層次的模塊的功能。

圖3 加法器逐步細化
本文探討了計算思維中的關注點分離思維,并以硬件核心部件CPU為例,介紹以關注點分離方法為導向的計算機硬件教學方案及具體實施細節。經過教學實踐發現,本文的方案對學生關注點分離思維的培養具有良好的效果。下一步,我們將在計算機硬件教學中探索更多計算思維能力的培養方案。
[1] 教育部高等學校計算機科學與技術教學指導委員會.高等學校計算機科學與技術專業人才專業能力構成與培養[M].北京:機械工業出版社,2010
[2] 陳國良,董榮勝.計算思維與大學計算機基礎教育[J].中國大學教學,2011(1):7~11
[3] 馮博琴.對于計算思維能力培養“落地”問題的探討[J].中國大學教學,2012(9):6~9
[4] Wing J.M.Computational Thinking[J].Communications of the ACM,2006,49(3):33~35
[5] 黃沛杰,徐東風,殷建軍.計算機組成原理實驗教學中的計算思維培養[J].計算機教育,2012(16):103~106
[6] 白中英.計算機組成原理[M].第5版.北京:科學出版社,2013
Training and Practice of Separation of Concerns in Computer Hardware Teaching
HUANG Pei-jie XU Dong-feng
(College of Informatics,South China Agricultural University,Guangzhou 510642)
Analyses the separation of concerns method of computational thinking,and discusses its realization methods from two aspects of function division and gradual refinement.Combined with the teaching practice of the central processing unit in computer hardware courses,discusses the cultivation scheme of separation of concerns thinking.Experiment shows that the scheme receives good effect.
Separation of Concerns(SoC);Computer Hardware Courses;Teaching Practice;Computational Thinking
1007-1423(2015)04-0022-04
10.3969/j.issn.1007-1423.2015.04.006
黃沛杰(1980-),男,廣東潮州人,博士,副教授,研究方向為計算機系統結構、人工智能
徐東風(1962-),男,山西臨汾人,副教授,研究方向為虛擬現實與仿真
2014-12-09
2015-01-06
華南農業大學教育教學與改革項目(No.JG12046、No.JG14011)、廣東省高等教育教學改革(No.GDJG20142092)、中華農業科教基金會項目(No.NKJ201202013)