張振宇 李國金 劉英哲
摘要: 為不了解硬件的學(xué)生講授CPU體系架構(gòu)是一件很困難的事情,以往的教學(xué)方式是基于仿真與紙上練習(xí)的,但是效果非常有限,因?yàn)樵谡n堂上講解電子系統(tǒng)設(shè)計(jì)是非常復(fù)雜的。在過去的兩年中,我們開發(fā)了一套運(yùn)行于FPGA的實(shí)用實(shí)驗(yàn)。要求學(xué)生從零開始在60個(gè)學(xué)時(shí)內(nèi)獨(dú)立開發(fā)處理器,并在處理器上采用匯編語言運(yùn)行一些小程序。通過設(shè)計(jì)處理器的不同模塊使得學(xué)生一步步的理解體系架構(gòu),所有的模塊像堆積木一樣構(gòu)成整個(gè)處理器。兩年的運(yùn)行實(shí)踐證明這種基于項(xiàng)目學(xué)習(xí)的教學(xué)方法是非常有效的,一些學(xué)生對(duì)CPU體系架構(gòu)產(chǎn)生了濃厚興趣,并攻讀了碩士學(xué)位。
關(guān)鍵詞:CPU體系架構(gòu);FPGA;基于項(xiàng)目學(xué)習(xí)
中圖分類號(hào):G64 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)18-0157-02
1 簡介
處理器體系架構(gòu)是遼寧工程技術(shù)大學(xué)電子系開設(shè)的專業(yè)核心課,然而傳統(tǒng)的教學(xué)方法偏重于理論并采用仿真方法驗(yàn)證[1,2]。學(xué)生沒有機(jī)會(huì)在硬件平臺(tái)上實(shí)現(xiàn)處理器模塊,多年的教學(xué)實(shí)踐表明該方法是低效的,無法鍛煉動(dòng)手能力和提升想象力。 Cifredo等對(duì)處理器體系結(jié)構(gòu)教學(xué)做了有益的嘗試[3],大多數(shù)嘗試取得的進(jìn)展非常有限,無法滿足課程要求。
基于項(xiàng)目的學(xué)習(xí)是一種以學(xué)生為中心的教學(xué)模式,學(xué)生在教師或?qū)<业闹笇?dǎo)下提出問題,并探究這些問題的答案。Martinez等曾采用該教學(xué)模式提升CPU體系架構(gòu)的教學(xué)效果[4],但是學(xué)生并沒有真正掌握設(shè)計(jì)一款可運(yùn)行處理器的技巧。
FPGA能以較低成本短周期內(nèi)設(shè)計(jì)更為復(fù)雜的高性能系統(tǒng), 使得學(xué)生對(duì)體系架構(gòu)有更深入的理解,可用于計(jì)算機(jī)體系架構(gòu)課程教學(xué)中。本文將采用基于項(xiàng)目的教學(xué)方法在Nexys FPGA平臺(tái)上完成實(shí)現(xiàn)一種處理器,并以項(xiàng)目的完成狀況作為主要考核依據(jù)。
2 課程計(jì)劃
基于項(xiàng)目的學(xué)習(xí)被分為幾個(gè)復(fù)雜環(huán)節(jié),全部學(xué)生被分為若干小組,每個(gè)小組兩人。每個(gè)小組不僅要完成處理器的已有功能,而且能夠在處理器上開發(fā)他們所希望的新功能?;陧?xiàng)目的學(xué)習(xí)過程包含了各種活動(dòng)使得學(xué)生能夠一開始就學(xué)習(xí)到處理器所需的各種功能。每一個(gè)環(huán)節(jié)都要為處理器增加新功能,學(xué)生要獨(dú)立完成各項(xiàng)功能。小組成員間要互相討論設(shè)計(jì)中遇到的難題。課程結(jié)束時(shí),每個(gè)小組要實(shí)現(xiàn)真正處理器,該處理器能夠采用匯編語言運(yùn)行實(shí)際算法。
全部課程為十二周,每周學(xué)生都要完成以下工作:
u 講座,主要介紹新模塊,一個(gè)半小時(shí)。
u 動(dòng)手訓(xùn)練環(huán)節(jié),每30個(gè)學(xué)生一組,為在FPGA上實(shí)現(xiàn)上述模塊做準(zhǔn)備,一個(gè)半小時(shí)。
u 在FPGA上實(shí)現(xiàn)模塊,兩個(gè)小時(shí)。
課程內(nèi)容主要包括:
u 熟悉FPGA平臺(tái),并進(jìn)行一些簡單的操作。
u 采用邏輯門建立原理圖,并仿真電路的功能。
u 四位加法器,熟悉可重用概念,采用更高級(jí)的仿真方法設(shè)計(jì)更復(fù)雜電路。
u 熟悉十六位顯示原理,理解時(shí)序電路原理。
u 理解有限狀態(tài)機(jī)原理,掌握基本的編程方法,熟悉控制通路概念。
u 掌握寄存器和總線概念,連接接寄存器到總線。
u 掌握算術(shù)邏輯單元的設(shè)計(jì)技巧,并能為其添加功能。
u 熟悉數(shù)據(jù)存儲(chǔ)器和堆棧等概念,并掌握設(shè)計(jì)技巧。
經(jīng)過一段時(shí)間學(xué)習(xí)學(xué)生已經(jīng)獲得了關(guān)于處理器功能和架構(gòu)足夠知識(shí),也掌握了記憶、理解、應(yīng)用、分析和創(chuàng)造能力,可以著手設(shè)計(jì)處理器。目標(biāo)處理器架構(gòu)如圖1所示,該處理器為十六位,每個(gè)時(shí)鐘周期執(zhí)行一個(gè)指令,流水線采用延遲分支避免流水線停止。處理器包含通用寄存器R1-R5、接口寄存器Rsw、Rled、R7seg、數(shù)據(jù)寄存器Ram和Rdm和算術(shù)邏輯單元寄存器。
圖1 處理器架構(gòu)
3 教學(xué)效果
學(xué)期結(jié)束后,學(xué)生已經(jīng)掌握了獨(dú)立設(shè)計(jì)處理器的全部細(xì)節(jié),并能夠從零開始構(gòu)建強(qiáng)大的處理器。學(xué)生設(shè)計(jì)的處理器可被用作實(shí)際處理器來使用,并能在處理器上運(yùn)行自己編寫的程序。
同時(shí)學(xué)生也能夠獨(dú)立的為算術(shù)邏輯單元增加新功能。另外學(xué)生也掌握了如何在FPGA開發(fā)板上實(shí)現(xiàn)處理器的技術(shù),諸如IP核和硬件重用等高端數(shù)字設(shè)計(jì)技術(shù)也被涵蓋在課程中。
表1列出了課程的學(xué)習(xí)下過及這些效果是如何達(dá)到的。最終成績小測(cè)驗(yàn)、期末考試和項(xiàng)目完成效果構(gòu)成。超過百分之七十五設(shè)計(jì)出能夠?qū)嶋H運(yùn)行的處理器,其中百分之十五以上學(xué)生完成得非常好。
4 總結(jié)
本文提出了一種基于項(xiàng)目的處理器體系架構(gòu)教學(xué)方法,該方法要求學(xué)生從零開始構(gòu)建處理器。通過設(shè)計(jì)學(xué)生能夠掌握應(yīng)用FPGA設(shè)計(jì)處理器架構(gòu)和當(dāng)代數(shù)字設(shè)計(jì)的基本知識(shí),整個(gè)學(xué)期中學(xué)生能夠構(gòu)建簡單的邏輯模塊并把他們整合成為更復(fù)雜的模塊。學(xué)習(xí)成績由小測(cè)驗(yàn)、期末考試和項(xiàng)目完成效果構(gòu)成?;陧?xiàng)目的學(xué)習(xí)方法非常受學(xué)生歡迎,學(xué)生的自主性和創(chuàng)造力得到極大程度的發(fā)揮。
參考文獻(xiàn):
[1] Grunbacher, Herbert, and Maziar Khosravipour, “Teaching computer Architecture”.
[2] Shine V. J., and P. K. Sathish, “Teaching computer Architecture using Simulation Tools”, International Joural of Computer Science & Information Technologies 5.2 (2014).
[3] Cifredo-Chacon, M., Angel Quiros-Olozabal, and Jose Maria, “Computer Architecture and FPGA: A learning-by-doing Methodology for digital-native Students,” Computer Applications in Engineering Educations, 2015.
[4] Marlinez-Mones, Alejamdra, E. Gomez-Sanchez, Y. A. Dimitriadis, “Multiple case studies to enhance project-based learning in computer architecture course,” IEEE Transactions on education, 48.3, 2005: 482-489.