999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程教法研究

2015-05-30 12:05:34陳智勇唐成華張瑞霞秦董洪
計(jì)算機(jī)教育 2015年10期
關(guān)鍵詞:教學(xué)方法

陳智勇 唐成華 張瑞霞 秦董洪

摘要:針對(duì)計(jì)算機(jī)專業(yè)學(xué)生對(duì)程序設(shè)計(jì)感興趣的特點(diǎn),從程序設(shè)計(jì)與問題求解課程中的某些知識(shí)點(diǎn)入手,闡述在計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程教學(xué)過程中采用的基于程序設(shè)計(jì)的啟發(fā)式教學(xué)方法。

關(guān)鍵詞:計(jì)算機(jī)系統(tǒng)結(jié)構(gòu);教學(xué)方法;程序設(shè)計(jì)

0、引言

計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)本科生的一門專業(yè)基礎(chǔ)必修課,它主要圍繞計(jì)算機(jī)系統(tǒng)的軟硬件功能分配及各功能部件的優(yōu)化技術(shù)和量化分析方法,將計(jì)算機(jī)組成原理、操作系統(tǒng)、編譯原理、程序設(shè)計(jì)與問題求解等課程所學(xué)的軟硬件知識(shí)有機(jī)地結(jié)合起來,從而建立計(jì)算機(jī)系統(tǒng)的完整概念。學(xué)習(xí)本課程旨在使學(xué)生從總體結(jié)構(gòu)、系統(tǒng)分析的角度來理解和研究計(jì)算機(jī)系統(tǒng),學(xué)習(xí)如何根據(jù)各種實(shí)際應(yīng)用的需要,綜合考慮軟硬件功能分配,設(shè)計(jì)和構(gòu)建合理的計(jì)算機(jī)系統(tǒng),以及在一個(gè)已知的計(jì)算機(jī)系統(tǒng)上開發(fā)出高效的應(yīng)用程序、編譯器或操作系統(tǒng),對(duì)于培養(yǎng)學(xué)生系統(tǒng)分析和解決問題的能力、抽象思維能力都有非常重要的作用。

1、啟發(fā)式教學(xué)方法

啟發(fā)式教學(xué)是指教師在教學(xué)過程中,根據(jù)教學(xué)任務(wù)和學(xué)習(xí)的客觀規(guī)律,從學(xué)生的實(shí)際出發(fā),采用多種方式,以啟發(fā)學(xué)生的思維為核心,調(diào)動(dòng)其學(xué)習(xí)主動(dòng)性和積極性的一種教學(xué)方式。

在計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程的教學(xué)過程中,教師先給學(xué)生設(shè)置懸念,比如針對(duì)某一計(jì)算機(jī)技術(shù)的理論分析和量化研究,得出的結(jié)論與現(xiàn)代計(jì)算機(jī)采用的先進(jìn)技術(shù)不一致,然后再討論需要講解的內(nèi)容,從而提高學(xué)生的學(xué)習(xí)興趣。

比如,計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程中,教師在講授超標(biāo)量超流水線時(shí),若假設(shè)基準(zhǔn)流水線的級(jí)數(shù)為k,超標(biāo)量發(fā)射度為m,超流水處理器為n倍頻,在不發(fā)生任何數(shù)據(jù)相關(guān)、控制相關(guān)和資源相關(guān)的前提下,共解釋N條指令,當(dāng)N趨于無窮大時(shí),超標(biāo)量超流水線相對(duì)于基準(zhǔn)流水線的加速比為Sn=m.n。即微處理器的超標(biāo)量發(fā)射度m越大,則加速比越大,流水線的級(jí)數(shù)越多,則加速比越大。我們的提問是:①以前從Pentium Pro到P4微處理器的超標(biāo)量發(fā)射度一直為3,個(gè)人計(jì)算機(jī)使用的Core微處理器的超標(biāo)量發(fā)射度也只為4,為什么個(gè)人計(jì)算機(jī)的超標(biāo)量發(fā)射度沒有設(shè)計(jì)為8或16呢?②以前Pentium微處理器的指令流水線為5級(jí),到P4時(shí)達(dá)到20級(jí)(實(shí)際可能會(huì)大于20級(jí)),而個(gè)人計(jì)算機(jī)使用的Core微處理器的有效流水線級(jí)數(shù)為什么卻只有14級(jí)呢?學(xué)生通過查閱參考書和網(wǎng)上資料,從硬件的復(fù)雜性、利用率、時(shí)鐘技術(shù)、功耗和實(shí)現(xiàn)成本,應(yīng)用程序的指令級(jí)并行性和編譯技術(shù)的實(shí)現(xiàn)難度等多個(gè)方面,對(duì)理淪分析的結(jié)果與現(xiàn)代微處理器設(shè)計(jì)采用技術(shù)的不一致性進(jìn)行解釋。

2、基于程序設(shè)計(jì)的啟發(fā)式教學(xué)方法

基于程序設(shè)計(jì)的啟發(fā)式教學(xué)方法是以學(xué)生熟悉的程序設(shè)計(jì)算法為例,先從計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的角度指出“本科低年級(jí)程序設(shè)計(jì)算法中存在的不足,然后再討論面向不同的計(jì)算機(jī)系統(tǒng)如何去解決問題;在解決問題的過程中,將涉及的知識(shí)逐步展開,討論與計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)相關(guān)的理論知識(shí)。

2.1累加求和算法

在學(xué)習(xí)程序設(shè)計(jì)與問題求解課程時(shí),若計(jì)算 s=∑A[i],其c語(yǔ)言描述的核心代碼如程序1所示。

【程序1】s=0;

for(i=l;i=256;i++)

s=s十A[i];

學(xué)過計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程后,我們會(huì)知道程序1的循環(huán)體內(nèi)存在關(guān)于變量s的先寫后讀數(shù)據(jù)相關(guān)。由于現(xiàn)代微處理器設(shè)計(jì)采用了超流水線技術(shù),程序l的編程方法會(huì)大大降低流水線解釋的效率。要改進(jìn)程序l,必須學(xué)習(xí)計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程的以下知識(shí):什么叫數(shù)據(jù)相關(guān),什么叫超流水線,為什么先寫后讀數(shù)據(jù)相關(guān)會(huì)影響流水解釋的速度,在計(jì)算機(jī)系統(tǒng)硬件設(shè)計(jì)和軟件設(shè)計(jì)過程中如何消除數(shù)據(jù)相關(guān)?在提出問題后,教師逐一講解相應(yīng)的理論知識(shí),然后從學(xué)生感興趣的程序設(shè)計(jì)的角度介紹程序1的改進(jìn)方法,這里采用了遞歸折疊技術(shù),如程序2所示。

【程序2】len=128;

for(i=1;i<=8;i++)

{

for(j=l;j<=len:j++)

A[j]=A[j]+A[j+len];

len=len/2;

}

s=A[1];

有同學(xué)說程序1的時(shí)間復(fù)雜度為O(n),程序2的時(shí)間復(fù)雜度為O(n2),那是針對(duì)傳統(tǒng)馮.諾依曼計(jì)算機(jī)而言的,我們學(xué)習(xí)計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程的目的就是讓學(xué)生逐步轉(zhuǎn)變觀念,學(xué)會(huì)面向計(jì)算機(jī)體系結(jié)構(gòu)的編程方法j在程序l中,循環(huán)體串行執(zhí)行了256次,由于現(xiàn)代微處理器采用了超流水線技術(shù),且運(yùn)算器設(shè)計(jì)采用了相關(guān)專用通路,流水解釋指令時(shí)在時(shí)間上各指令之間盡管有部分重疊,即并非絕對(duì)地串行,但由于連續(xù)兩次迭代間存在關(guān)于s的先寫后讀數(shù)據(jù)相關(guān),會(huì)造成流水線性能的下降。在程序2中的內(nèi)循環(huán)中,由于連續(xù)兩次迭代間不存在關(guān)于A[i]的先寫后讀數(shù)據(jù)相關(guān),故可連續(xù)地流水解釋指令,只有外循環(huán)對(duì)應(yīng)的循環(huán)體串行執(zhí)行了8次(在流水解釋指令時(shí)也并非絕對(duì)地串行)。數(shù)組分量的個(gè)數(shù)越多,程序2執(zhí)行的時(shí)間就越短。

2.2計(jì)算點(diǎn)積算法

在學(xué)習(xí)程序設(shè)計(jì)與問題求解課程時(shí),若計(jì)算s=∑A[i]*B[i],其c語(yǔ)言描述的核心代碼如程序3所示。

【程序3】s=0;

for(i=l;i=256;i++)

s=s+A[i]*B[i];

由程序1和程序2可知,程序3的連續(xù)兩次迭代間存在關(guān)于s的先寫后讀數(shù)據(jù)相關(guān),同時(shí)在計(jì)算s=s+A[i]*B[i]時(shí),若A[i]*B[i]的結(jié)果不生成,則無法進(jìn)行加法運(yùn)算。因?yàn)楝F(xiàn)代微處理器采用超流水線技術(shù),乘法指令的執(zhí)行需要多個(gè)時(shí)鐘周期,在執(zhí)行循環(huán)體時(shí),會(huì)頻繁地進(jìn)行乘法和加法的功能切換,按程序3編程,會(huì)大大降低指令流水解釋的速度。要改進(jìn)程序3,必須學(xué)習(xí)計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程的以下知識(shí):什么叫多功能流水線,什么叫先寫后讀數(shù)據(jù)相關(guān),為什么頻繁的功能切換會(huì)影響流水解釋的速度,在計(jì)算機(jī)系統(tǒng)硬件設(shè)計(jì)和軟件設(shè)計(jì)過程中如何消除數(shù)據(jù)相關(guān),用戶編程時(shí)如何考慮應(yīng)用程序的并行性?在提出問題后,逐一講解相應(yīng)的理論知識(shí),然后從學(xué)生感興趣的程序設(shè)計(jì)的角度介紹程序3的改進(jìn)方法。解決方法是先將程序變?yōu)榭上蛄炕糠趾蜌w約求和部分,再將歸約求和部分采用程序2所示的遞歸折疊技術(shù),來加速求和操作,如程序4所示。

【程序4】for(i=l;i=256;j++)/可向量化部分/

C[i]=A[i]*B[i];

len=128;/歸約求和部分/

for(i=l;i<=8;i++)

{

for(j=l;j<=len:j++)

C[j]=C[j]+C[j+len];

len=len/2;

}

s=C[1];

若微處理器為單核單發(fā)射超流水微處理器,由于可向量化部分的每條乘法指令之間不存在數(shù)據(jù)相關(guān),盡管處理器在每個(gè)時(shí)鐘周期只發(fā)射一條乘法指令,但在一個(gè)指令周期內(nèi)可并發(fā)解釋多條指令;若微處理器為單核多發(fā)射超標(biāo)量超流水處理器,則按程序4的編程方法,處理器可在每個(gè)時(shí)鐘周期同時(shí)發(fā)射多條指令,即在一個(gè)指令周期內(nèi)并發(fā)解釋的指令數(shù)可成倍增加。對(duì)于現(xiàn)代微處理器,均采用了超標(biāo)量超流水技術(shù),程序4的編程方法將大大提高程序的執(zhí)行速度。

若微處理器為共享L3 Cache的同構(gòu)多核處理器,如Core i7,同時(shí)采用多個(gè)計(jì)算引擎進(jìn)行并行處理,用戶在編程時(shí)需根據(jù)計(jì)算機(jī)的系統(tǒng)結(jié)構(gòu),考慮如何用顯式的語(yǔ)句說明程序的并行性特征,以便編譯器對(duì)應(yīng)用程序編譯后,能生成在特定計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)中運(yùn)行的高效的目標(biāo)代碼;若用戶用順序的程序設(shè)計(jì)語(yǔ)言編程,作為編譯器設(shè)計(jì)者還需考慮如何將順序代碼轉(zhuǎn)換成面向計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的并行代碼;為提高程序的執(zhí)行速度,操作系統(tǒng)還需進(jìn)一步考慮如何進(jìn)行任務(wù)調(diào)度和負(fù)載平衡等。若一個(gè)大型任務(wù)在分布式共享主存的多機(jī)系統(tǒng)中運(yùn)行,任務(wù)調(diào)度和負(fù)載平衡需綜合考慮計(jì)算時(shí)間、并行性開銷、交互開銷,以及多機(jī)系統(tǒng)采用的互聯(lián)網(wǎng)絡(luò)、時(shí)延容忍技術(shù)等多個(gè)方面,情況會(huì)更加復(fù)雜。

從這個(gè)例子可以看出,作為計(jì)算機(jī)專業(yè)的學(xué)生,不僅要學(xué)會(huì)編寫應(yīng)用程序,而且還需要了解計(jì)算機(jī)系統(tǒng)結(jié)構(gòu),使編寫出來的應(yīng)用程序能在特定的計(jì)算機(jī)系統(tǒng)上高效運(yùn)行,同時(shí)還需掌握并行編程、并行算法、編譯技術(shù)、操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)等多方面的知識(shí)。

2.3矩陣乘算法

在學(xué)習(xí)程序設(shè)計(jì)與問題求解課程時(shí),若計(jì)算兩個(gè)n×n的矩陣相乘,即C=AxB,其C語(yǔ)言描述的核心代碼如程序5所示。

【程序5】for(i_l;i<=n;i++)

fr(j=l;j<=n;j++)

for(k=l;k<=n;k++)

C[iJ]=C[ij]+A[i,k]*B[kj];

因?yàn)榫仃囋卦诖鎯?chǔ)空間的存放順序是按行主順序排列,按照程序5所示的矩陣乘算法,內(nèi)循環(huán)中的A[i,k]具有空間局部性,而B[k,j]不具有空間局部性。也就是說,當(dāng)n的值較大時(shí),對(duì)B[k,j]的訪問每次都會(huì)出現(xiàn)Cache不命中,從而降低程序的執(zhí)行速度,因此我們?cè)诰帉懢仃嚦怂惴〞r(shí),要考慮的第一個(gè)問題是:如何修改程序,才能提高程序執(zhí)行過程中CPU訪問Cache的命中率?要解決這個(gè)問題必須學(xué)習(xí)計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程的以下知識(shí):什么叫程序的局部性、什么叫Cache的命中率、存儲(chǔ)體系的結(jié)構(gòu),增強(qiáng)程序的局部性為什么可以提高Cache的命中率,用戶編程時(shí)和操作系統(tǒng)調(diào)度時(shí)如何考慮程序的局部性等。

在程序5中,由于語(yǔ)句“C[i,j]=C[i,j]]+A[i,k]*B[k,j];"編譯后會(huì)生成兩條目標(biāo)代碼,相當(dāng)于“x-A[i,k]*B[k,j];”和“C[i,j]=C[i,j]+x;”,這兩條語(yǔ)句之間存在關(guān)于x的先寫后讀數(shù)據(jù)相關(guān)。在第三層循環(huán)迭代中還會(huì)頻繁出現(xiàn)關(guān)于C[i,j]的先寫后讀數(shù)據(jù)相關(guān),由于現(xiàn)代微處理器設(shè)計(jì)時(shí)均采用了超流水線技術(shù),存在的數(shù)據(jù)相關(guān)會(huì)大大降低流水線的效率,因此要考慮的第二個(gè)問題是:如何修改程序,才能消除程序中的數(shù)據(jù)相關(guān)?

如果用戶編程時(shí)采用熟悉的通用算法進(jìn)行矩陣乘的應(yīng)用程序設(shè)計(jì),如程序5,那么對(duì)于編譯器而言,如何解決上述兩個(gè)問題?

復(fù)習(xí)C語(yǔ)言程序設(shè)計(jì)課程中二維數(shù)組的定義、計(jì)算機(jī)組成原理和匯編語(yǔ)言程序設(shè)計(jì)課程中數(shù)組在Cache和主存空間的存放位置,在展開介紹了計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程中有關(guān)Cache地址和主存地址格式設(shè)計(jì)、Cache的地址映像與變換、替換算法、調(diào)度算法等知識(shí)后,那么如何從程序設(shè)計(jì)者的角度解決第一個(gè)問題?具體方法是將程序5中的語(yǔ)句“fOr(j=1;j<=n;j++)”與“for(k=1;k<=n;k++)”位置對(duì)調(diào),對(duì)調(diào)后程序執(zhí)行過程中的數(shù)據(jù)訪問和Cache命中率的提高留給學(xué)生自己分析;解決第二個(gè)問題的方法可參考程序4進(jìn)行編程。

從這個(gè)例子可以看出,作為一個(gè)計(jì)算機(jī)專業(yè)的學(xué)生,進(jìn)行一個(gè)簡(jiǎn)單的程序設(shè)計(jì),不僅要懂得程序設(shè)計(jì)的知識(shí),還要掌握匯編語(yǔ)言程序設(shè)計(jì)、計(jì)算機(jī)組成原理、計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)、編譯原理等課程的相關(guān)知識(shí),才能真正設(shè)計(jì)或編譯出一個(gè)面向計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的能高效執(zhí)行的高級(jí)語(yǔ)言源程序或目標(biāo)程序。

3、結(jié)語(yǔ)

計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程涉及的專業(yè)知識(shí)面廣、內(nèi)容抽象,但我們通過采用啟發(fā)式教學(xué)方法,特別是采用基于程序設(shè)計(jì)的啟發(fā)式教學(xué)方法,從學(xué)生感興趣的程序設(shè)計(jì)與問題求解入手,以舉例的方式,引導(dǎo)學(xué)生從面向傳統(tǒng)馮·諾依曼體系結(jié)構(gòu)計(jì)算機(jī)的編程思想,逐步過渡到面向現(xiàn)代計(jì)算機(jī)體系結(jié)構(gòu)的編程思想。在解決問題的過程中,教師將涉及的知識(shí)逐步展開,討論與計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程相關(guān)的理論知識(shí),以及該課程與計(jì)算機(jī)專業(yè)其他專業(yè)基礎(chǔ)課程之間的關(guān)系;讓學(xué)生知道只有學(xué)好計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)這門課程,才能編寫出更加高效的應(yīng)用程序和系統(tǒng)軟件實(shí)踐證明,該教學(xué)方法的應(yīng)用,不僅激發(fā)了學(xué)生的學(xué)習(xí)興趣,也讓學(xué)生認(rèn)識(shí)到了學(xué)習(xí)專業(yè)基礎(chǔ)課程的重要性。

猜你喜歡
教學(xué)方法
初中英語(yǔ)寫作教學(xué)方法初探
甘肅教育(2020年2期)2020-09-11 08:01:42
教學(xué)方法與知識(shí)類型的適宜
數(shù)學(xué)復(fù)習(xí)教學(xué)方法
高中體育教學(xué)方法初探
淺談高等數(shù)學(xué)中教學(xué)方法的創(chuàng)新
實(shí)用型中醫(yī)人才培養(yǎng)中慕課教學(xué)方法的探討
文言文教學(xué)方法實(shí)踐初探
高中文言文教學(xué)方法之我見
初中數(shù)學(xué)教師不可忽視的幾種教學(xué)方法
散文百家(2014年11期)2014-08-21 07:17:18
語(yǔ)文閱讀教學(xué)方法略談
主站蜘蛛池模板: 伊人久久精品亚洲午夜| 国产性生大片免费观看性欧美| 中文字幕精品一区二区三区视频 | 亚洲国产无码有码| 在线综合亚洲欧美网站| 精品视频91| 久久黄色影院| 2020国产免费久久精品99| 欧美一区二区福利视频| vvvv98国产成人综合青青| 亚洲色图综合在线| 国产91特黄特色A级毛片| 久久久久人妻精品一区三寸蜜桃| 国产精品第三页在线看| 九色在线视频导航91| 欧美一级高清免费a| 全免费a级毛片免费看不卡| 国产一区亚洲一区| 久久青草视频| 激情成人综合网| 色综合天天娱乐综合网| 日韩免费中文字幕| 91精品啪在线观看国产91| 黄片在线永久| 嫩草国产在线| 国产成人精品一区二区三区| 国产成年女人特黄特色大片免费| 婷婷在线网站| 国产免费怡红院视频| 日韩精品专区免费无码aⅴ| 亚洲福利网址| 精品少妇人妻av无码久久| 美女扒开下面流白浆在线试听| 无码精品一区二区久久久| 成人综合在线观看| 欧美精品色视频| 国产免费福利网站| 亚洲日韩欧美在线观看| 国产一级视频在线观看网站| 日本免费一级视频| 久久精品电影| 一级毛片在线直接观看| 农村乱人伦一区二区| 午夜精品久久久久久久无码软件| 露脸国产精品自产在线播| 狠狠做深爱婷婷久久一区| 福利视频99| 性激烈欧美三级在线播放| 国产精品无码AⅤ在线观看播放| 亚洲精品爱草草视频在线| 九一九色国产| 国产精品久久国产精麻豆99网站| 亚洲狠狠婷婷综合久久久久| 国产亚卅精品无码| 77777亚洲午夜久久多人| 亚洲成人一区二区三区| 久久无码av三级| 99草精品视频| 在线不卡免费视频| 视频二区国产精品职场同事| 97se亚洲综合在线天天| 欧美在线免费| 日韩 欧美 国产 精品 综合| 久久免费视频播放| 91精品国产91久久久久久三级| 亚洲欧美成aⅴ人在线观看| 欧美色综合网站| 国产亚洲精品91| 国产精品不卡永久免费| 毛片免费观看视频| 五月天丁香婷婷综合久久| 久久国产精品夜色| 在线免费亚洲无码视频| 福利一区三区| 精品国产成人三级在线观看| 欧美在线国产| 亚洲日本韩在线观看| 欧美在线国产| 99这里只有精品免费视频| 亚洲AV无码乱码在线观看代蜜桃| 亚洲国产精品成人久久综合影院| 内射人妻无套中出无码|