摘要:《計算機組成原理》是計算機學科學生的一門必修課程,針對在教學過程中,學生不易理解或易混淆的幾個基本概念進行分析,以期學生能加深對這些概念的理解,為后續課程的學習以及今后的工程實踐中運用相關知識解決問題有所幫助。
關鍵詞:計算機組成原理;教學改革;基本概念
中圖分類號:G642 文獻標志碼:A 文章編號:1674-9324(2013)38-0075-03
《計算機組成原理》是所有計算機學科學生的專業基礎課,是構成學生終生知識體系的重要組成部分,在整個計算機科學與技術專業的課程中起著承上啟下的關鍵作用,是計算機學科的研究生入學考試必考科目之一。從事該課程教學的教師們已進行了不少探索,包括教材的選擇、教學內容設計,以及對教學模式、教學方法和實驗教學等方面研究,為該課程的教學提供了有益的經驗。《計算機組成原理》這門課有一定的理論深度,其實踐要求也高,涉及較多的前期知識和相關領域,課程的橫向跨度大。隨著計算機硬件水平發展迅速,集成化程度不斷提高,CPU由單核、雙核發展到四核、多核;目前學生自己配置的計算機中筆記本已占大多數,學生很難直接了解計算機的內部結構,在課程學習中普遍感到概念抽象而難以感性化、內容多、難度大,他們認為《計算機組成原理》是一門比較難掌握的課程。不少學生在完成該課程的學習后仍感到并未真正理解和掌握其中的基本原理。為此,筆者介紹在近年來從事《計算機組成原理》教學過程中對幾個基本概念的把握。
一、定點小數的補碼表示范圍
定點小數在用補碼表示時,負數最小時為-1,而-1本不屬于小數范圍,但是定點小數中[-1]的補碼卻存在,另外,整數的-1和小數的-1的表示也不一樣,如機器字長為8時,整數的[-1]補=11111111和小數的[-1]補=1.0000000。對此,學生難以理解和接受,進而影響浮點數表示范圍的理解。定點小數的原碼定義在(-1,1)之間,其定義式為:[x]原=x, 1>x≥01-x,0≥x>-1,屬于純小數,定義域中沒有-1。但是定點小數的補碼定義為:
[x]原=x, 1>x≥01-x,0≥x>-1(mod2),在定義式中-1被包含在定義域內。對此筆者認為可從以下三個方面進行說明。其一,用數軸進行說明,為了便于說明,先以機器字長為n=3(包括一個符號位)為例。字長為3,那么應該有23=8種編碼,正負方向各4個編碼,包括0在內,原碼示意如圖1所示,為區別起見,圖中將正數與負數分別用小圓圈和小三角形表示,因為有-0的存在,故負數的最小值為1.11,這樣正負方向的數值是對稱的。而定點小數的補碼表示中,負方向上因為沒有-0,故其第一個刻度為1.11,為1.01的補碼,從數軸上,可以看到,同樣是4個編碼,補碼在負方向的編碼到最小時為1.00,即為-1。
圖3為字長n=4時的定點小數的補碼表示,從數軸示意圖可以看出,定點小數的補碼負數最小也為-1,只是-1的表示從n=3時的1.00變為了1.000,以此類推,當n=8時,-1的補碼即為1.0000000。從數軸示意圖還可以看出,n=3時,一個刻度為0.01,n=4時,一個刻度為0.001,而當n=8時,為0.0000001,為n位時,即為2-n,這也為用表達式說明補碼的表示范圍做一個鋪墊。對于數軸的說明進一步可以加大數值位進行分析,得出結論,無論小數的位數是多少,在用補碼表示時,絕對值最大的負數均為-1(1.00…0)。
其二,用列表的形式進行說明。可以將數值位取得少些,這里還是以字長n=3為例,將定點整數與定點小數以列表的形式進行說明。如表1和表2所示,其中表1為定點整數,表2為定點小數。很明顯,定點小數的補碼表示時,負方向最小值為1.00,即為-1。
其三,用表達式進行說明。當機器字長為n時,定點整數的原碼表示范圍為-(2n-1)~2n-1,去括號后為:-2n+1~2n-1,而補碼表示范圍為-2n~2n-1,比較兩個表示范圍,可以發現,在負方向上,補碼的表示范圍在數值上比原碼少1或者說補碼在數軸上比原碼在負的方向上多走一個刻度;同理,對于定點小數,其原碼的表示范圍-(2-n-1)~1-2n=-1+2n~1-2-n,那么與定點整數類似,定點小數在用補碼表示時,負方向要再走一個刻度2-n,即為-1~1-2-n。由此看出,定點小數用補碼表示時,最小的負數為-1。
二、CPU與存儲器連接的相關問題
在存儲器與CPU連接時一般要考慮CPU總線的負載能力、CPU與存儲器速度的配合問題、存儲器的地址空間分配、讀/寫控制信號的連接、數據線的連接、地址線的連接與存儲芯片片選信號的產生等幾個方面。在組成原理這門課中,對負載能力及時序配合要求相對少些,因而重點關注是三類信號線的連接:地址信號、數據信號和控制信號,而存儲器與CPU連接在微機接口技術和單片機原理等課程仍有應用。在一般情況下,單個芯片的存儲容量有限,需要多個芯片組合構成系統所需的較大容量的存儲器,這即是所謂的存儲器容量擴展。擴展方式通常有位擴展、字擴展和字位同時擴展三種,位擴展如8片4K×1位的芯片構成4K×8位的存儲器時,系統與芯片的讀寫信號對應相連,存儲器的地址線與芯片的地址線一樣多,因此地址線A0~A11分別對應相連即可,數據線D0~D7中每一條分別與芯片唯一的一位數據對應相連,而8個芯片的片選則都接到一起即可。在字擴展時,如8片4K×8位的芯片構成32K×8位的存儲器,同樣,讀寫信號對應相連,但此時,存儲器的數據線與芯片的數據線的數目相同,只需對應相連即可,而地址線的數目不一致,先將存儲器的低位地址線與芯片地址線對應相連,多出的地址線則用于形成片選信號線。對于片選信號的形成,在由淺入深的講解過程中,一方面,需要先對譯碼器和一些可能用上的門路進行復習,另一方面,系統存儲器由多片存儲芯片構成,而構成存儲器的這些芯片勢必就有編號,片選信號從某種程度上講,與芯片編號相對應,此時與譯碼器的關系就順理成章地聯系起來。例如,由16KB的RAM芯片構成一個64KB的存儲器,需要4片RAM芯片,若用二進制對其進行編號即為:00、01、10、11,再從存儲器的角度出發分析其地址線、數據線和控制線,有16條地址線,可寫成A15~A0,數據線為8條,寫成D7~D0,控制信號線為WR和MREQ。芯片的信號線有14條地址線,可寫成A13~A0,數據線為8條,寫成D7~D0,控制信號線為WR和CS。將16條地址線的狀態變化情況寫出,對比芯片的地址線狀態變化情況,發現多出來的地址線有2條信號線A14、A15,它們有4種狀態:00、01、10、11(二進制形式),可以與4片RAM芯片的編號00、01、10、11(二進制形式)對應。這樣,A14、A15可以接2-4譯碼器的兩個輸入端,而2-4譯碼器的四個輸出端Y0、Y1、Y2、Y3分別接四個芯片的片選端。但是在實際工程或考試中,往往是給出地址范圍或芯片所在的地址空間后來確定片選邏輯,這時的思考思路與前面的例子類似,寫出地址的二進制形式,確定芯片所要接的地址信號線后,從剩下的地址中找出可以接入譯碼器輸入端的信號,讓學生自己觀察,他們便能確定出來。與這里的片選邏輯類似的地方,還有此章的CACHE與主存的地址映射中主存地址格式的設計問題。CACHE與主存的地址映射方式有三種:直接映射、全相聯映射和組相聯映射,其中直接映射最為簡單,學生需要對此概念吃透,這樣對于理解組相聯映射方式就相對容易些。在直接映射方式中,直接給出主存塊映j射到CACHE塊i的公式(1),學生比較難理解。i=j modC(1)其中C為CACHE的塊數,C=2c,指數c為CACHE的字塊位數。
由公式中的C表示CACHE的塊數可知,在直接映射方式下主存與CACHE之間存在的關系是:主存可分為若干個CACHE大小的區,對所有的區進行編號,此時區的編號(與之前的芯片編號類似)即是主存地址中的字塊標記字段,而主存地址中除去區號外的低位地址與CACHE的地址完全相同。而每個區與CACHE也完全相同,那么任一區中每個字塊與CACHE的每個字塊一一對應,于是學生自己就可以得出這樣的結論:主存中多個區中相同位置的字塊與CACHE的某一字塊映射,即主存字塊與CACHE字塊是多對一的關系,而且主存字塊只能映射到CACHE的固定位置。而映射關系表達式的推導,可由下面的一個具體例子得出。
如圖4所示,設主存容量為1KB,CACHE容量為128B,字塊大小為32B,因而CACHE有4塊,即C=4,塊的編號分別為0、1、2、3,主存有32塊,其編號分別為0、1、…31。任取主存塊號j=28,那么它被映射到CACHE中的位置由i=jmodC,得28mod4=0;同理,當j=31時,得31mod 4=3,即第31塊將被映射到CACHE中的第3塊所在位置。故已知主存塊號j后,映射到CACHE中的位置關系表達式為:i=jmodC。此外,對于組相聯的地址映射關系的推導學生就可水到渠成地寫出來了。
《計算機組成原理》的教學內容和方法的研究是計算機科學與技術學科課程改革中的重要部分,本文對在教學過程中學生容易產生混淆的幾個基本概念進行分析,旨在使學生能加深對這些概念的理解和運用以及加深這幾個概念之間聯系的理解,以期對其今后的工程實踐及后續課程的學習有所幫助。
參考文獻:
[1]白中英.數字邏輯.計算機組成原理兩門課的銜接性[J],計算機教育,2011,10(19):36.
[2]王丁磊.統考下的《計算機組成原理》教學方法探討[J].計算機教育,2010,8.
[3]紀祿平,羅克露.計算機組成原理創新型教學方法設計》[J].計算機教育,2011,4(7):85-91.
[4]唐朔飛.計算機組成原理[M](第2版),高等教育出版社,2010:295.
基金項目:中央高校基本科研業務費專項項目(11NZYQN29)和(11NZYTH06)資助
作者簡介:李濤,女,西南民族大學計算機科學與技術學院副教授,研究方向:計算機圖形圖像處理、模式識別等。