亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于編程的計算機(jī)組成原理實驗教學(xué)

        2020-02-22 03:58:10吳元斌
        電腦知識與技術(shù) 2020年36期
        關(guān)鍵詞:計算機(jī)組成原理編程實驗

        吳元斌

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

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

        中圖分類號:G642? ? ? ? 文獻(xiàn)標(biāo)識碼:A

        文章編號:1009-3044(2020)36-0110-03

        Abstract:the experimental teaching method of computer composition principle based on programming are analyzed in this paper. the byte ordering and data alignment, the memory hierarchy and the principle of locality, the machine representation and operation of integers, the representation and operation of floating-point numbers, debug and machine instructions, and machine level representation of C language programs are introduced. Practice shows that the experimental teaching method based on programming is very effective for students to learn and master the principles of computer organization.

        Key words:the principles of computer organization; experiment; teaching; programming; the c language

        1 引言

        計算機(jī)組成原理課程的主要目標(biāo)是:(1)理解單處理器計算機(jī)系統(tǒng)中各部件的內(nèi)部工作原理、組成結(jié)構(gòu)以及相互連接方式,具有完整的計算機(jī)系統(tǒng)的整機(jī)概念。(2)理解計算機(jī)系統(tǒng)層次化結(jié)構(gòu)概念,熟悉硬件與軟件之間的界面,掌握指令集體系結(jié)構(gòu)的基本知識和基本實現(xiàn)方法。(3)能夠綜合運用計算機(jī)組成的基本原理和基本方法,對有關(guān)計算機(jī)硬件系統(tǒng)中的理論和實際問題進(jìn)行計算、分析,對一些基本部件進(jìn)行簡單設(shè)計;并能對高級程序設(shè)計語言(如C語言)中的相關(guān)問題進(jìn)行分析[1]。該課程實驗教學(xué)是課程不可缺少的組成部分和重要環(huán)節(jié),通過理論聯(lián)系實際,可以加深理解和掌握計算機(jī)的組成原理,為計算機(jī)組成原理的具體應(yīng)用打下基礎(chǔ),實驗課與理論課相互作用才能實現(xiàn)課程的總體目標(biāo)。

        5年多以前,我們采用一些專門的實驗教學(xué)系統(tǒng)(實驗箱)進(jìn)行計算機(jī)組成原理實驗,如:EL-JY-Ⅱ計算機(jī)組成原理實驗系統(tǒng)。利用實驗教學(xué)系統(tǒng)開設(shè)了運算器、移位運算、存儲器讀寫和總線控制、總線控制、微程序控制器原理、微程序設(shè)計、簡單模型機(jī)組成原理等實驗,對計算機(jī)組成原理的理論教學(xué)具有一定的幫助,但也存在不少問題,主要有:

        (1) 通過插拔連線、撥動開關(guān)、編制微程序等操作步驟與實驗系統(tǒng)進(jìn)行交互完成驗證性實驗,學(xué)生普遍對操作過程有興趣,但不少學(xué)生只關(guān)注操作過程,不注意學(xué)習(xí)背后的原理,不能很好地起到鞏固理論教學(xué)內(nèi)容的作用。

        (2) 對于簡單的實驗,學(xué)生基本上能夠順利完成,但比較復(fù)雜的實驗(如:簡單模型機(jī)組成原理實驗)卻很少成功,打擊了不少學(xué)生的學(xué)習(xí)積極性。沒有Cache、浮點數(shù)的表示與運算等實驗內(nèi)容。

        (3) 實驗箱數(shù)量相對較少,學(xué)生人數(shù)較多,只能分成多個小組進(jìn)行實驗教學(xué),而且實驗箱有時會因故障得不到及時維修,給實驗教學(xué)帶來很大影響。

        (4) 實驗箱教學(xué)系統(tǒng)與學(xué)生應(yīng)用開發(fā)的環(huán)境差距很大,學(xué)生很難感受到計算機(jī)組成原理課程對實際計算機(jī)應(yīng)用開發(fā)的作用。

        為了解決傳統(tǒng)實驗教學(xué)存在的問題,為了適應(yīng)新時代的教學(xué)需要,激發(fā)學(xué)生的學(xué)習(xí)興趣,從2015年起開始我們對計算機(jī)組成原理的實驗內(nèi)容和實驗方式進(jìn)行了改革,緊扣經(jīng)典教材[2],結(jié)合我們的實際情況,進(jìn)行了基于編程的實驗教學(xué)探索,基本思想是通過程序員的視角[3,4,5]來學(xué)習(xí)、理解、掌握計算機(jī)組成原理,在這幾年的實踐中對實驗教學(xué)內(nèi)容進(jìn)行了不斷修改、補充和完善。實踐表明,基于編程的實驗教學(xué)具有較好的教學(xué)效果,受到學(xué)生的肯定。下文將簡要介紹基于編程的實驗教學(xué)改革的最新內(nèi)容。

        2 基于編程的實驗教學(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ù)存放方式的驗證可以通過調(diào)用圖1中右圖的C語言函數(shù)[3,6]來實現(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ù)邊界對齊的驗證可以通過調(diào)用圖1中右圖的C語言函數(shù)來實現(xià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ù)大小的正確計算方法(相鄰成員之間地址不一定是連續(xù)的),從而加深對理論教材相關(guān)內(nèi)容的理解,同時也可以對C語言相關(guān)內(nèi)容的溫習(xí)與深化。

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

        現(xiàn)代計算機(jī)存儲器采用金字塔層次結(jié)構(gòu)。高速緩存(Cache)至關(guān)重要,可以利用Windows 10任務(wù)管理器的性能選項卡(或CPU-Z軟件)查看系統(tǒng)的緩存結(jié)構(gòu),如圖2所示,如:L1緩存、L2緩存、L3緩存容量及特性,如:一級數(shù)據(jù)緩存(大?。?2KBytes×2,8-way set associative,64-byte line size)等。實驗要求學(xué)生理解這些參數(shù)的含義,并分析L1緩存分為L1指令緩存和L1數(shù)據(jù)緩存的原因。這些問題在理論教材[2,3,8]中都有詳細(xì)介紹(特別是Cache的工作原理)或說明。

        通過實際編程理解程序訪問的局部性(時間和空間局部性)原理對系統(tǒng)性能的影響是本實驗的主要任務(wù),通過大小可變的二維數(shù)組的不同訪問順序(按行、按列)的C語言程序段[2]與Java程序段的執(zhí)行時間來分析Cache的影響和作用。圖3中左邊是C語言程序段,右邊是Java程序段。二維數(shù)組按行訪問較按列訪問具有良好的空間局部性,Cache命中率更高,按行訪問性能更高,C程序與Java程序運行得出的結(jié)論相同。

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

        理論課介紹了機(jī)器數(shù)的定點整數(shù)表示及其算術(shù)運算(如移位、加、減、乘、除等),C語言中整數(shù)類型(char、short、int、long)在計算機(jī)內(nèi)是定點整數(shù)表示,帶符號數(shù)采用補碼表示,無符號(unsigned)整數(shù)則沒有符號位。這部分實驗要求學(xué)生掌握C語言整數(shù)類型在計算機(jī)內(nèi)的表示方法與算術(shù)運算方法,還應(yīng)注意無符號數(shù)整數(shù)類型和帶符號整數(shù)類型之間運算的特殊性,以及機(jī)器整數(shù)運算與數(shù)學(xué)中整數(shù)運算的差別,如C語言表達(dá)式200 * 300 * 400 * 500的值會溢出,若作為數(shù)學(xué)表達(dá)式則沒有溢出的概念。

        為了使C語言整數(shù)的表示與運算結(jié)果以二進(jìn)制形式輸出,我們設(shè)計了如圖4所示的兩個C語言函數(shù)show_bits和show_bytes,它們的功能分別是將一個顯示一個字節(jié)的二進(jìn)制代碼(每4位二進(jìn)制加一個空格,以便閱讀)、從高位字節(jié)到低位字節(jié)調(diào)用show_bits顯示整數(shù)對象(也可以是其他類型的對象)的二進(jìn)制表示。

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

        理論課還介紹了機(jī)器數(shù)的浮點表示及其算術(shù)運算,在現(xiàn)代計算機(jī)中,浮點數(shù)的表示則是采用IEEE 754標(biāo)準(zhǔn),它是20世紀(jì)80年代以來最廣泛使用的浮點數(shù)運算標(biāo)準(zhǔn),便于計算機(jī)之間進(jìn)行數(shù)據(jù)交換與協(xié)同工作。標(biāo)準(zhǔn)規(guī)定了4種表示浮點數(shù)值的方式,常用的是單精確度(32位)、雙精確度(64位)。

        C語言的float、double類型通常分別指IEEE單精確度、雙精確度浮點數(shù),本實驗主要是掌握float、double浮點數(shù)在機(jī)器中的二進(jìn)制表示方法、運算方法和運算過程。為了使C語言浮點數(shù)的表示及運算結(jié)果以二進(jìn)制形式輸出依然調(diào)用圖4中的兩個C語言函數(shù)來實現(xiàn)。同時應(yīng)理解IEEE 754 浮點數(shù)一些特殊值的表示,如:零、非零、1、-1、正無窮、負(fù)無窮的表示等。還要注意理解浮點數(shù)與整數(shù)運算、數(shù)學(xué)運算的區(qū)別,如C語言表達(dá)式3.14 + 1e20 > 1e20的值等于0(為假),但在數(shù)學(xué)上該表達(dá)式的值一定為真。

        2.5 DEBUG與機(jī)器指令

        為了使學(xué)生深入理解理論教材[2]第7章“指令系統(tǒng)”以及第8章“CPU的結(jié)構(gòu)和功能”中“CPU的寄存器”部分的內(nèi)容,我們采用DEBUG(DOS、Windows實模式下的調(diào)試工具)命令使學(xué)生快速學(xué)習(xí)、理解現(xiàn)代計算機(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ù)平均值程序的具體實現(xiàn)。通過快速的學(xué)習(xí)和使用DEDUG程序,學(xué)生普遍反映學(xué)會了利用DEBUG編寫、運行匯編程序,還獲得意外收獲:“…還可以手工檢查計算機(jī)病毒,學(xué)習(xí)到了新的技能!”。

        2.6 C語言程序的機(jī)器級表示

        理論教材[2]第1章中給出了求一元二次多項式a * x * x + b * x + c的機(jī)器語言程序(表1.2),為了理解x86指令集體系結(jié)構(gòu)如何實現(xiàn)對應(yīng)功能以及C語言程序與實際機(jī)器語言的對應(yīng)關(guān)系,圖6中給出實現(xiàn)該功能的兩個C語言函數(shù)intSum和floatSum,并在Eclipse + MinGW GCC調(diào)試環(huán)境中利用Windows → Show View → Disassembly,打開反匯編視圖給出對應(yīng)的反匯編代碼(為了便于分析,圖6對實際截圖進(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é)合上一個實驗,并參考文獻(xiàn)資料進(jìn)行對照分析。

        3 結(jié)論

        上述基于編程的實驗教學(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é)期的情況,由于受到疫情影響,理論課在線上完成,實驗課則在線下分組完成??梢钥闯?,教學(xué)質(zhì)量總體上在逐步提高,這種教學(xué)改革實踐也受到學(xué)生的肯定:“課堂內(nèi)容充實,簡單明了,使學(xué)生能夠輕輕松松掌握知識”。

        我們的實驗教學(xué)改革還在不斷探索過程中,還存在不少問題,如如何更好地讓學(xué)生自己動手編寫、調(diào)試、運行程序,充分體會到計算機(jī)組成原理課程的重要意義及對從事計算機(jī)應(yīng)用開發(fā)的重要作用等。我們將不斷總結(jié)經(jīng)驗,學(xué)習(xí)國內(nèi)外該課程實驗教學(xué)改革最新成果,進(jìn)一步提高課程的教學(xué)質(zhì)量。

        參考文獻(xiàn):

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

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

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

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

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

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

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

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

        【通聯(lián)編輯:王力】

        猜你喜歡
        計算機(jī)組成原理編程實驗
        我家有只編程貓
        我家有只編程貓
        我家有只編程貓
        我家有只編程貓
        記一次有趣的實驗
        做個怪怪長實驗
        《計算機(jī)組成原理》綜合教學(xué)輔助平臺的設(shè)計與實現(xiàn)
        面向計算機(jī)系統(tǒng)能力培養(yǎng)的計算機(jī)組成原理實驗教學(xué)
        NO與NO2相互轉(zhuǎn)化實驗的改進(jìn)
        用“工程思維”引領(lǐng)《計算機(jī)組成原理》課程教學(xué)
        考試周刊(2016年63期)2016-08-15 22:38:55
        精品亚洲一区二区三区四| 在线看亚洲十八禁网站| 亚洲精品一区二区三区日韩| 自拍偷自拍亚洲精品第按摩 | 亚洲国产精品自产拍久久蜜AV| 亚洲影院在线观看av| 日本高清一级二级三级 | 亚洲国产区男人本色| 亚洲人成网站www| 人妻少妇精品视中文字幕免费| 亚洲a∨无码一区二区三区| 最近高清中文在线字幕观看| 蜜臀av中文人妻系列| 给我看免费播放的视频在线观看| 欧美一区二区三区视频在线观看 | 亚洲精品一区国产欧美| 精品国产一区二区三区AV小说| 日本在线一区二区三区四区| 图片小说视频一区二区| 国产精品久久毛片av大全日韩| 69av视频在线| 香港三级日本三韩级人妇久久| 久久久久久久综合综合狠狠| 欧美亚洲日韩国产区| 国产精品99久久精品女同| 国产毛片av最新视频| 亚洲成a∨人片在无码2023| 久久久久久久综合日本| 国内自拍视频一区二区三区| 国产亚洲一本大道中文在线| 99视频在线国产| 精品国产一区二区av麻豆不卡| 粉嫩av国产一区二区三区| 少妇精品久久久一区二区三区| 欧美亚洲另类国产18p| 色久悠悠婷婷综合在线| 日韩精品无码中文字幕电影| 2021国内精品久久久久精免费| 国产免费人成视频在线观看播放播 | 国产亚洲成年网址在线观看| 亚洲不卡高清av网站|