• <input id="zdukh"></input>
  • <b id="zdukh"><bdo id="zdukh"></bdo></b>
      <b id="zdukh"><bdo id="zdukh"></bdo></b>
    1. <i id="zdukh"><bdo id="zdukh"></bdo></i>

      <wbr id="zdukh"><table id="zdukh"></table></wbr>

      1. <input id="zdukh"></input>
        <wbr id="zdukh"><ins id="zdukh"></ins></wbr>
        <sub id="zdukh"></sub>
        公務(wù)員期刊網(wǎng) 論文中心 正文

        編程下的計(jì)算機(jī)組成原理實(shí)驗(yàn)教學(xué)

        前言:想要寫出一篇引人入勝的文章?我們特意為您整理了編程下的計(jì)算機(jī)組成原理實(shí)驗(yàn)教學(xué)范文,希望能給你帶來靈感和參考,敬請閱讀。

        編程下的計(jì)算機(jī)組成原理實(shí)驗(yàn)教學(xué)

        摘要:該文分析了基于編程計(jì)算機(jī)組成原理實(shí)驗(yàn)教學(xué)方法,介紹了字節(jié)順序和數(shù)據(jù)對齊、存儲器層次結(jié)構(gòu)與局部性原理、整數(shù)的機(jī)器表示與運(yùn)算、浮點(diǎn)數(shù)的表示與運(yùn)算、DEBUG與機(jī)器指令、C語言程序的機(jī)器級表示等實(shí)驗(yàn)教學(xué)內(nèi)容。實(shí)踐表明,基于編程的實(shí)驗(yàn)教學(xué)對學(xué)生學(xué)習(xí)和掌握計(jì)算機(jī)組成原理十分有效。

        關(guān)鍵詞:計(jì)算機(jī)組成原理;實(shí)驗(yàn);教學(xué);編程;C語言

        1引言

        計(jì)算機(jī)組成原理課程的主要目標(biāo)是:(1)理解單處理器計(jì)算機(jī)系統(tǒng)中各部件的內(nèi)部工作原理、組成結(jié)構(gòu)以及相互連接方式,具有完整的計(jì)算機(jī)系統(tǒng)的整機(jī)概念。(2)理解計(jì)算機(jī)系統(tǒng)層次化結(jié)構(gòu)概念,熟悉硬件與軟件之間的界面,掌握指令集體系結(jié)構(gòu)的基本知識和基本實(shí)現(xiàn)方法。(3)能夠綜合運(yùn)用計(jì)算機(jī)組成的基本原理和基本方法,對有關(guān)計(jì)算機(jī)硬件系統(tǒng)中的理論和實(shí)際問題進(jìn)行計(jì)算、分析,對一些基本部件進(jìn)行簡單設(shè)計(jì);并能對高級程序設(shè)計(jì)語言(如C語言)中的相關(guān)問題進(jìn)行分析[1]。該課程實(shí)驗(yàn)教學(xué)是課程不可缺少的組成部分和重要環(huán)節(jié),通過理論聯(lián)系實(shí)際,可以加深理解和掌握計(jì)算機(jī)的組成原理,為計(jì)算機(jī)組成原理的具體應(yīng)用打下基礎(chǔ),實(shí)驗(yàn)課與理論課相互作用才能實(shí)現(xiàn)課程的總體目標(biāo)。5年多以前,我們采用一些專門的實(shí)驗(yàn)教學(xué)系統(tǒng)(實(shí)驗(yàn)箱)進(jìn)行計(jì)算機(jī)組成原理實(shí)驗(yàn),如:EL-JY-Ⅱ計(jì)算機(jī)組成原理實(shí)驗(yàn)系統(tǒng)。利用實(shí)驗(yàn)教學(xué)系統(tǒng)開設(shè)了運(yùn)算器、移位運(yùn)算、存儲器讀寫和總線控制、總線控制、微程序控制器原理、微程序設(shè)計(jì)、簡單模型機(jī)組成原理等實(shí)驗(yàn),對計(jì)算機(jī)組成原理的理論教學(xué)具有一定的幫助,但也存在不少問題,主要有:(1)通過插拔連線、撥動開關(guān)、編制微程序等操作步驟與實(shí)驗(yàn)系統(tǒng)進(jìn)行交互完成驗(yàn)證性實(shí)驗(yàn),學(xué)生普遍對操作過程有興趣,但不少學(xué)生只關(guān)注操作過程,不注意學(xué)習(xí)背后的原理,不能很好地起到鞏固理論教學(xué)內(nèi)容的作用。(2)對于簡單的實(shí)驗(yàn),學(xué)生基本上能夠順利完成,但比較復(fù)雜的實(shí)驗(yàn)(如:簡單模型機(jī)組成原理實(shí)驗(yàn))卻很少成功,打擊了不少學(xué)生的學(xué)習(xí)積極性。沒有Cache、浮點(diǎn)數(shù)的表示與運(yùn)算等實(shí)驗(yàn)內(nèi)容。(3)實(shí)驗(yàn)箱數(shù)量相對較少,學(xué)生人數(shù)較多,只能分成多個小組進(jìn)行實(shí)驗(yàn)教學(xué),而且實(shí)驗(yàn)箱有時會因故障得不到及時維修,給實(shí)驗(yàn)教學(xué)帶來很大影響。(4)實(shí)驗(yàn)箱教學(xué)系統(tǒng)與學(xué)生應(yīng)用開發(fā)的環(huán)境差距很大,學(xué)生很難感受到計(jì)算機(jī)組成原理課程對實(shí)際計(jì)算機(jī)應(yīng)用開發(fā)的作用。為了解決傳統(tǒng)實(shí)驗(yàn)教學(xué)存在的問題,為了適應(yīng)新時代的教學(xué)需要,激發(fā)學(xué)生的學(xué)習(xí)興趣,從2015年起開始我們對計(jì)算機(jī)組成原理的實(shí)驗(yàn)內(nèi)容和實(shí)驗(yàn)方式進(jìn)行了改革,緊扣經(jīng)典教材[2],結(jié)合我們的實(shí)際情況,進(jìn)行了基于編程的實(shí)驗(yàn)教學(xué)探索,基本思想是通過程序員的視角[3,4,5]來學(xué)習(xí)、理解、掌握計(jì)算機(jī)組成原理,在這幾年的實(shí)踐中對實(shí)驗(yàn)教學(xué)內(nèi)容進(jìn)行了不斷修改、補(bǔ)充和完善。實(shí)踐表明,基于編程的實(shí)驗(yàn)教學(xué)具有較好的教學(xué)效果,受到學(xué)生的肯定。下文將簡要介紹基于編程的實(shí)驗(yàn)教學(xué)改革的最新內(nèi)容。

        2基于編程的實(shí)驗(yàn)教學(xué)內(nèi)容

        2.1字節(jié)順序和數(shù)據(jù)對齊

        數(shù)據(jù)在內(nèi)存中的字節(jié)順序一般包括兩種:大端方式和小端方式[2,3]。大端方式是指數(shù)據(jù)的高字節(jié)存放在低地址,低字節(jié)存放高地址,也就是數(shù)據(jù)在內(nèi)存中從高位字節(jié)開始存放。而小端方式則相反,數(shù)據(jù)的低字節(jié)存放在低地址,高字節(jié)存放在高地址,也就是數(shù)據(jù)在內(nèi)存中從低位字節(jié)開始存放。數(shù)據(jù)的大端、小端方式存放順序如圖1中左圖所示。內(nèi)存中數(shù)據(jù)存放方式的驗(yàn)證可以通過調(diào)用圖1中右圖的C語言函數(shù)[3,6]來實(shí)現(xiàn),將輸出從地址start開始的len個字節(jié)的地址及該地址存放字節(jié)的十六進(jìn)制值。數(shù)據(jù)對齊是指系統(tǒng)要求數(shù)據(jù)在內(nèi)存中的起始地址值(邊界)能被該數(shù)據(jù)所占字節(jié)數(shù)整除,如C語言中的short類型數(shù)據(jù)占2字節(jié),要求其起始地址能被2整除,int類型數(shù)據(jù)占4字節(jié)要求其起始地址能被4整除,等等。正是由于這個原因,當(dāng)C語言結(jié)構(gòu)類型數(shù)據(jù)中包含不同類型數(shù)據(jù)成員時,相鄰成員之間地址不一定是連續(xù)的,可能存在“空隙”。數(shù)據(jù)邊界對齊的驗(yàn)證可以通過調(diào)用圖1中右圖的C語言函數(shù)來實(shí)現(xiàn)。該實(shí)驗(yàn)通過編寫、運(yùn)行、調(diào)試C語言程序,幫助學(xué)生理解各種數(shù)據(jù)類型的數(shù)據(jù)在內(nèi)存中的字節(jié)順序(大端還是小端),理解各種數(shù)據(jù)類型的數(shù)據(jù)在內(nèi)存中的邊界對齊方式,并掌握結(jié)構(gòu)數(shù)據(jù)內(nèi)各成員在內(nèi)存中地址之間的關(guān)系以及結(jié)構(gòu)數(shù)據(jù)大小的正確計(jì)算方法(相鄰成員之間地址不一定是連續(xù)的),從而加深對理論教材相關(guān)內(nèi)容的理解,同時也可以對C語言相關(guān)內(nèi)容的溫習(xí)與深化。

        2.2存儲器層次結(jié)構(gòu)與局部性原理

        現(xiàn)代計(jì)算機(jī)存儲器采用金字塔層次結(jié)構(gòu)。高速緩存(Cache)至關(guān)重要,可以利用Windows10任務(wù)管理器的性能選項(xiàng)卡(或CPU-Z軟件)查看系統(tǒng)的緩存結(jié)構(gòu),如圖2所示,如:L緩存、L2緩存、L3緩存容量及特性,如:一級數(shù)據(jù)緩存(大小32KBytes×2,8-waysetassociative,64-bytelinesize)等。實(shí)驗(yàn)要求學(xué)生理解這些參數(shù)的含義,并分析L1緩存分為L1指令緩存和L1數(shù)據(jù)緩存的原因。這些問題在理論教材[2,3,8]中都有詳細(xì)介紹(特別是Cache的工作原理)或說明。通過實(shí)際編程理解程序訪問的局部性(時間和空間局部性)原理對系統(tǒng)性能的影響是本實(shí)驗(yàn)的主要任務(wù),通過大小可變的二維數(shù)組的不同訪問順序(按行、按列)的C語言程序段[2]與Java程序段的執(zhí)行時間來分析Cache的影響和作用。圖3中左邊是C語言程序段,右邊是Java程序段。二維數(shù)組按行訪問較按列訪問具有良好的空間局部性,Cache命中率更高,按行訪問性能更高,C程序與Java程序運(yùn)行得出的結(jié)論相同。

        2.3整數(shù)的機(jī)器表示與運(yùn)算

        理論課介紹了機(jī)器數(shù)的定點(diǎn)整數(shù)表示及其算術(shù)運(yùn)算(如移位、加、減、乘、除等),C語言中整數(shù)類型(char、short、int、long)在計(jì)算機(jī)內(nèi)是定點(diǎn)整數(shù)表示,帶符號數(shù)采用補(bǔ)碼表示,無符號(unsigned)整數(shù)則沒有符號位。這部分實(shí)驗(yàn)要求學(xué)生掌握C語言整數(shù)類型在計(jì)算機(jī)內(nèi)的表示方法與算術(shù)運(yùn)算方法,還應(yīng)注意無符號數(shù)整數(shù)類型和帶符號整數(shù)類型之間運(yùn)算的特殊性,以及機(jī)器整數(shù)運(yùn)算與數(shù)學(xué)中整數(shù)運(yùn)算的差別,如C語言表達(dá)式200*300*400*500的值會溢出,若作為數(shù)學(xué)表達(dá)式則沒有溢出的概念。為了使C語言整數(shù)的表示與運(yùn)算結(jié)果以二進(jìn)制形式輸出,我們設(shè)計(jì)了如圖4所示的兩個C語言函數(shù)show_bits和show_bytes,它們的功能分別是將一個顯示一個字節(jié)的二進(jìn)制代碼(每4位二進(jìn)制加一個空格,以便閱讀)、從高位字節(jié)到低位字節(jié)調(diào)用show_bits顯示整數(shù)對象(也可以是其他類型的對象)的二進(jìn)制表示。

        2.4浮點(diǎn)數(shù)的機(jī)器表示與運(yùn)算

        理論課還介紹了機(jī)器數(shù)的浮點(diǎn)表示及其算術(shù)運(yùn)算,在現(xiàn)代計(jì)算機(jī)中,浮點(diǎn)數(shù)的表示則是采用IEEE754標(biāo)準(zhǔn),它是20世紀(jì)80年代以來最廣泛使用的浮點(diǎn)數(shù)運(yùn)算標(biāo)準(zhǔn),便于計(jì)算機(jī)之間進(jìn)行數(shù)據(jù)交換與協(xié)同工作。標(biāo)準(zhǔn)規(guī)定了4種表示浮點(diǎn)數(shù)值的方式,常用的是單精確度(32位)、雙精確度(64位)。C語言的float、double類型通常分別指IEEE單精確度、雙精確度浮點(diǎn)數(shù),本實(shí)驗(yàn)主要是掌握float、double浮點(diǎn)數(shù)在機(jī)器中的二進(jìn)制表示方法、運(yùn)算方法和運(yùn)算過程。為了使C語言浮點(diǎn)數(shù)的表示及運(yùn)算結(jié)果以二進(jìn)制形式輸出依然調(diào)用圖4中的兩個C語言函數(shù)來實(shí)現(xiàn)。同時應(yīng)理解IEEE754浮點(diǎn)數(shù)一些特殊值的表示,如:零、非零、1、-1、正無窮、負(fù)無窮的表示等。還要注意理解浮點(diǎn)數(shù)與整數(shù)運(yùn)算、數(shù)學(xué)運(yùn)算的區(qū)別,如C語言表達(dá)式3.14+1e20>1e20的值等于0(為假),但在數(shù)學(xué)上該表達(dá)式的值一定為真。2.5DEBUG與機(jī)器指令為了使學(xué)生深入理解理論教材[2]第7章“指令系統(tǒng)”以及第8章“CPU的結(jié)構(gòu)和功能”中“CPU的寄存器”部分的內(nèi)容,我們采用DEBUG(DOS、Windows實(shí)模式下的調(diào)試工具)命令使學(xué)生快速學(xué)習(xí)、理解現(xiàn)代計(jì)算機(jī)中CPU寄存器、機(jī)器指令、尋址方式、堆棧操作、子程序調(diào)用、中斷調(diào)用、I/O端口操作等基本概念,理解機(jī)器語言與匯編語言的對應(yīng)關(guān)系。圖5左圖是利用DEBUG學(xué)習(xí)機(jī)器指令的尋址方式,輸入、保存、調(diào)試程序的過程,右圖為教材表7.2求N個數(shù)平均值程序的具體實(shí)現(xiàn)。通過快速的學(xué)習(xí)和使用DEDUG程序,學(xué)生普遍反映學(xué)會了利用DEBUG編寫、運(yùn)行匯編程序,還獲得意外收獲:“…還可以手工檢查計(jì)算機(jī)病毒,學(xué)習(xí)到了新的技能!”。2.6C語言程序的機(jī)器級表示理論教材[2]第1章中給出了求一元二次多項(xiàng)式a*x*x+b*x+c的機(jī)器語言程序(表1.2),為了理解x86指令集體系結(jié)構(gòu)如何實(shí)現(xiàn)對應(yīng)功能以及C語言程序與實(shí)際機(jī)器語言的對應(yīng)關(guān)系,圖6中給出實(shí)現(xiàn)該功能的兩個C語言函數(shù)intSum和float⁃Sum,并在Eclipse+MinGWGCC調(diào)試環(huán)境中利用Windows→ShowView→Disassembly,打開反匯編視圖給出對應(yīng)的反匯編代碼(為了便于分析,圖6對實(shí)際截圖進(jìn)行重排:上面是C語言函數(shù),下面是對應(yīng)的匯編語言程序)。通過圖6可以看出,兩個函數(shù)中C語言表達(dá)式并沒有優(yōu)化為((a+0)*x+b)*x+c,但在對應(yīng)的匯編語言程序中對表達(dá)式的求值進(jìn)行了優(yōu)化處理,而且由于兩個函數(shù)中變量的數(shù)據(jù)類型不同(int、float),對應(yīng)的機(jī)器指令也不同,如mov、flds、imul、fmuls等。要真正理解這兩段匯編語言程序要結(jié)合上一個實(shí)驗(yàn),并參考文獻(xiàn)資料進(jìn)行對照分析。

        3結(jié)論

        上述基于編程的實(shí)驗(yàn)教學(xué)改革,緊扣教材和教學(xué)總體目標(biāo),對理論教學(xué)內(nèi)容進(jìn)行了具體化和深化,使學(xué)生能夠在高級語言程序(如C語言)、匯編語言程序、機(jī)器指令代碼和機(jī)器結(jié)構(gòu)之間建立相互的對應(yīng)關(guān)系,使一些抽象的概念變成看得見的具體數(shù)據(jù)。最近幾學(xué)期(從前往后)學(xué)生學(xué)期平均成績、及格率依次為:63.545、72.235%;65.915、77.405%;76.37、98.39%;71.5、83.83%。最后一組數(shù)據(jù)是本學(xué)期的情況,由于受到疫情影響,理論課在線上完成,實(shí)驗(yàn)課則在線下分組完成。可以看出,教學(xué)質(zhì)量總體上在逐步提高,這種教學(xué)改革實(shí)踐也受到學(xué)生的肯定:“課堂內(nèi)容充實(shí),簡單明了,使學(xué)生能夠輕輕松松掌握知識”。我們的實(shí)驗(yàn)教學(xué)改革還在不斷探索過程中,還存在不少問題,如如何更好地讓學(xué)生自己動手編寫、調(diào)試、運(yùn)行程序,充分體會到計(jì)算機(jī)組成原理課程的重要意義及對從事計(jì)算機(jī)應(yīng)用開發(fā)的重要作用等。我們將不斷總結(jié)經(jīng)驗(yàn),學(xué)習(xí)國內(nèi)外該課程實(shí)驗(yàn)教學(xué)改革最新成果,進(jìn)一步提高課程的教學(xué)質(zhì)量。

        參考文獻(xiàn):

        [1]教育部考試中心.2020年全國碩士研究生招生考試計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科聯(lián)考計(jì)算機(jī)學(xué)科專業(yè)基礎(chǔ)綜合考試大綱[M].北京:高等教育業(yè)出版社,2019.

        [2]唐朔飛.計(jì)算機(jī)組成原理[M].2版.北京:高等教育業(yè)出版社,2008.

        [3](美)RandalE.Bryant,DavidR.O’Halloran.深入理解計(jì)算機(jī)系統(tǒng)[M].2版.龔奕利,雷迎春,譯.北京:機(jī)械工業(yè)出版社,2010.

        [4]袁春風(fēng),張澤生,蔡曉燕,楊若瑜,王帥.計(jì)算機(jī)組成原理課程實(shí)踐教學(xué)探索[J].計(jì)算機(jī)教育,2011(17):110-114.

        [5]袁春風(fēng).計(jì)算機(jī)系統(tǒng)基礎(chǔ)[M].北京:機(jī)械工業(yè)出版社,2014.

        [6](美)BrianW.Kernighan,DennisM.Ritchie.C程序設(shè)計(jì)語言[M].2版.徐寶文,李志,譯.北京:機(jī)械工業(yè)出版社,2004.

        [7]王帥,袁春風(fēng).美國一流大學(xué)計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)實(shí)驗(yàn)課程研究[J].計(jì)算機(jī)教育,2011(17):115-118.

        [8](美)WilliamStallings.計(jì)算機(jī)組成與體系結(jié)構(gòu):性能設(shè)計(jì)[M].10版.北京:機(jī)械工業(yè)出版社,2019.

        作者:吳元斌 單位:重慶三峽學(xué)院 計(jì)算機(jī)科學(xué)與工程學(xué)院

        无码人妻一二三区久久免费_亚洲一区二区国产?变态?另类_国产精品一区免视频播放_日韩乱码人妻无码中文视频
      2. <input id="zdukh"></input>
      3. <b id="zdukh"><bdo id="zdukh"></bdo></b>
          <b id="zdukh"><bdo id="zdukh"></bdo></b>
        1. <i id="zdukh"><bdo id="zdukh"></bdo></i>

          <wbr id="zdukh"><table id="zdukh"></table></wbr>

          1. <input id="zdukh"></input>
            <wbr id="zdukh"><ins id="zdukh"></ins></wbr>
            <sub id="zdukh"></sub>
            中山市| 阿克苏市| 托克逊县| 射洪县| 蓝山县| 凤冈县| 遵化市| 盐源县| 公安县| 嘉义市| 通城县| 会同县| 阿城市| 红河县| 喀喇沁旗| 屏南县| 肇东市| 博湖县| 吴堡县| 漯河市| 文化| 枣阳市| 潞城市| 奉节县| 天水市| 洪雅县| 闵行区| 永和县| 永仁县| 改则县| 奇台县| 新丰县| 沂南县| 宣武区| 望城县| 浪卡子县| 长海县| 高州市| 长葛市| 林芝县| 剑阁县| http://444 http://444 http://444