文章編號:1672-5913(2009)10-0072-02
摘要:長期以來,國內(nèi)流行的某些計算機(jī)組成原理方面的教材存在兩個錯誤,其一是相聯(lián)存儲器不按地址尋址的問題,其二是多模塊交叉編址存儲器帶寬的計算問題。本文對這兩個錯誤進(jìn)行分析和探討。指出了(1)按地址尋址是相聯(lián)存儲器不可缺少的功能;(2)交叉存儲器的帶寬約為順序存儲器帶寬的m倍,m為模塊數(shù)。
關(guān)鍵詞:錯誤;相聯(lián)存儲器;尋址;交叉編址;帶寬
中圖分類號:G642
文獻(xiàn)標(biāo)識碼:A
長期以來,由著名出版社出版、發(fā)行量大、多次再版印刷且獲得過省部級以上獎項的計算機(jī)組成原理方面的優(yōu)秀教材對我國高校的計算機(jī)教育具有重要的貢獻(xiàn)。但是這些優(yōu)秀教材也難免出現(xiàn)一點(diǎn)錯誤,其錯誤哪怕是很小的也會誤導(dǎo)讀者,這樣的錯誤還被其它書籍引用或在一些考試中出現(xiàn)。下面對出現(xiàn)在這些優(yōu)秀教材中的兩個錯誤進(jìn)行分析和探討。
1相聯(lián)存儲器不按地址尋址的問題
文獻(xiàn)[1]對相聯(lián)存儲器的描述是:“相聯(lián)存儲器不按地址訪問存儲器,而按所存數(shù)據(jù)字的全部內(nèi)容或部分內(nèi)容進(jìn)行查找(或檢索)”。有書籍一字不差地引用這個描述。文獻(xiàn)[2]有這樣的描述:“相聯(lián)存儲器又稱聯(lián)想存儲器。它不是根據(jù)地址而是根據(jù)所存信息的全部特征或部分特征進(jìn)行存取的,即一種按內(nèi)容尋址的存儲器。”
在一些考試中也有關(guān)于相聯(lián)存儲器尋址的試題,例如2006年11月系統(tǒng)分析師試題(國家軟考辦)和2008年12月西南大學(xué)網(wǎng)絡(luò)教育學(xué)院計算機(jī)組成原理試題:
單項選擇題:關(guān)于相聯(lián)存儲器,下面的論述中,錯誤的是(A) 。
(17) A.相聯(lián)存儲器按地址進(jìn)行并行訪問
B.相聯(lián)存儲器的每個存儲單元都具有信息處理能力
C.相聯(lián)存儲器能并行進(jìn)行各種比較操作
D.在知識庫中應(yīng)用相聯(lián)存儲器實(shí)現(xiàn)按關(guān)鍵詞檢索
單項選擇題:相聯(lián)存儲器是按(③)進(jìn)行尋址的存儲器。
①地址指定方式 ②堆棧存取方式 ③內(nèi)容指定方式 ④地址指定與堆棧存取方式結(jié)合
上述觀點(diǎn)一致認(rèn)為相聯(lián)存儲器不按地址尋址,但是相聯(lián)存儲器是可以按地址尋址的。文獻(xiàn)[3]從電路原理給予了分析,即當(dāng)相聯(lián)存儲器的屏蔽寄存器置全1時輸出一個標(biāo)志信號,該信號選擇地址譯碼器,并禁止匹配寄存器輸出,此時按地址訪問相聯(lián)存儲器中的存儲字。文獻(xiàn)[4]中有這樣的描述:“相聯(lián)存儲器既可按地址尋址,又可按內(nèi)容(通常是某些字段)尋址,……,相聯(lián)存儲器有三種基本操作:讀、寫、檢索(比較)。讀、寫操作與傳統(tǒng)存儲器相同,檢索只能按內(nèi)容進(jìn)行”。
2按地址尋址是相聯(lián)存儲器不可缺少的功能
相聯(lián)存儲器可按地址尋址的前提是相聯(lián)存儲器中設(shè)置了地址譯碼器。我們知道相聯(lián)存儲器是一種隨機(jī)讀寫式的半導(dǎo)體存儲器,這樣的存儲器在加電的初始時刻其每個存儲位取相同的初態(tài)(0或1)。設(shè)相聯(lián)存儲器的存儲空間為n×k位,即每個字有k位共有n個存儲字?,F(xiàn)有含m(<n)個字的數(shù)據(jù)塊要寫入相聯(lián)存儲器中該如何寫入呢?如果相聯(lián)存儲器中沒有地址譯碼器就只能采用隨機(jī)寫入法或匹配寫入法。隨機(jī)寫入法不能保證該數(shù)據(jù)塊所含的m個字一個不少地寫入相聯(lián)存儲器,因?yàn)楫?dāng)?shù)谝蛔謱懭胂嗦?lián)存儲器后,第二字寫入時存在1/n的概率覆蓋第一字,同理第三字寫入時存在2/n的概率覆蓋已寫入的字,……。匹配寫入法也是不可取的,設(shè)數(shù)據(jù)塊中的m個字有l(wèi)(<k)位關(guān)鍵詞段key完全相同,key非全0亦非全1。但是加電的初始時刻相聯(lián)存儲器的存儲空間一片空白,依靠什么進(jìn)行匹配寫入呢?即使第一個字已寫入,由于第二字與第一字因key而匹配,則第二字寫入一定覆蓋第一字。如果按key不匹配來寫入,設(shè)數(shù)據(jù)塊中m個字的key完全不相同,則存在后寫入的字覆蓋已寫入字的可能性,這樣寫入與隨機(jī)寫入法等價。還有一種寫入法那就是順序?qū)懭?,順序?qū)懭敕偟靡粋€計數(shù)器來指示要寫入的存儲位置吧,那么其本質(zhì)就是按地址尋址了。
如果相聯(lián)存儲器中沒有地址譯碼器,設(shè)數(shù)據(jù)塊已寫入,要將新的若干個字添加到相聯(lián)存儲器中又如何操作呢?若按匹配寫入則原數(shù)據(jù)塊中的字將被覆蓋,如果按不匹配寫入則不能尋址,那只能隨機(jī)寫入,隨機(jī)寫入又可能產(chǎn)生覆蓋,所以相聯(lián)存儲器中必需地址譯碼器。由于相聯(lián)存儲器中有地址譯碼器,可以用編程來解決這個問題。將屏蔽寄存器置全1,用通用寄存器A存放已寫入數(shù)據(jù)塊的關(guān)鍵詞段key,用通用寄存器B作為地址計數(shù)器,使其從0開始計數(shù),并通過地址總線送相聯(lián)存儲器的地址譯碼器,讀取對應(yīng)位置的存儲字。若取出存儲字的對應(yīng)字段與key相同,則B加1讀取下一個存儲字,否則將一個新的字寫入B所指示的存儲位置。
地址譯碼器是一種簡單的組合邏輯電路,因該電路半導(dǎo)體存儲器很方便地實(shí)現(xiàn)按地址尋址。難道相聯(lián)存儲器的開發(fā)設(shè)計者會放棄這一功能模塊,那么設(shè)計者采用什么電路來解決上述一系列問題?一種說法是相聯(lián)存儲器的“各個存儲單元除了有存儲信息的功能外,還應(yīng)有信息處理的能力,也就是說每個存儲單元必須有一個處理單元”。姑且不論這樣的電路具體是如何實(shí)現(xiàn)的,但是可以肯定這將以大量的硬件開銷為代價。即使如此,也不必排斥在相聯(lián)存儲器中集成地址譯碼電路而實(shí)現(xiàn)按地址尋址。
3關(guān)于多模塊交叉編址存儲器帶寬的計算
文獻(xiàn)[5]第102頁有一道計算存儲器帶寬的例題如下,文獻(xiàn)[6,7]]也有類似解法的例題或習(xí)題解答。
[例4]設(shè)存儲器容量為32字,字長64位,模塊數(shù)m= 4,分別用順序方式和交叉方式進(jìn)行組織。存儲周期T= 200ns,數(shù)據(jù)總線寬度為64位,總線周期τ= 50ns。問順序存儲器和交叉存儲器的帶寬各是多少?
解:順序存儲器和交叉存儲器連續(xù)讀出m= 4個字的信息總量都是:q=64位×4=256位
順序存儲器和交叉存儲器連續(xù)讀出4個字所需時間分別是:t2= mT = 4×200ns= 8×10-7s ,
t1= T+(m-1)τ = 200ns+3×50ns= 3.5×10-7s 。
順序存儲器和交叉存儲器的帶寬分別是:W2=q/t2= 256÷(8×10-7)= 32×107[位/s] ,
W1= q / t1= 256÷(3.5×10-7)=73×107[位/s] 。
如果順序存儲器和交叉存儲器連續(xù)讀出8個字,根據(jù)例4的計算方法求得順序存儲器的帶寬W2不變,而交叉存儲器的帶寬變?yōu)?3×107位/s 。如果交叉存儲器連續(xù)讀出16個字,則其帶寬變?yōu)?08×107位/s ,如果交叉存儲器連續(xù)讀出32個字,則其帶寬變?yōu)?17×107位/s 。交叉存儲器的帶寬隨連續(xù)讀出字?jǐn)?shù)的多少而變說明例4的計算方法是錯誤的,因?yàn)榇鎯ζ鞯膸捠欠从炒鎯ζ魈匦缘囊粋€物理量,與存儲器是否傳送數(shù)據(jù)或傳送數(shù)據(jù)的多少無關(guān)。
設(shè)多模塊交叉編址存儲器的每個模塊的存儲周期為T,總線傳送周期為τ,交叉模塊數(shù)為m(m為2的整冪),且T= mτ,則這樣組織的存儲器是一種按流水方式訪問的存儲器。若要連續(xù)傳送n個字,則第一個存儲周期T傳送第一個字,以后每經(jīng)過一個總線周期τ傳送一個字。于是順序存儲器和交叉存儲器連續(xù)傳送n個字所需時間分別是:t2= nT = nmτ,t1= T+(n-1)τ = mτ +(n-1)τ。
t2/ t1= nmτ / [mτ +(n-1)τ] = m / [1 +(m-1)/ n]
當(dāng)n >>m時,t2/ t1≈m ,說明順序存儲器所需時間約為交叉存儲器所需時間的m倍,即交叉存儲器的帶寬約為順序存儲器帶寬的m倍??梢哉f交叉存儲器的帶寬是指連續(xù)不斷訪問時的數(shù)據(jù)傳輸率。所以例4中的交叉存儲器的帶寬約為128×107位/s 。
參考文獻(xiàn):
[1] 王愛英. 計算機(jī)組成與結(jié)構(gòu)[M]. 4版. 北京:清華大學(xué)出版社,2007:257.
[2] 羅克露,單立平,劉輝,等. 計算機(jī)組成原理[M]. 北京:電子工業(yè)出版社,2004:244.
[3] 蔣萬君. 相聯(lián)存儲器的邏輯機(jī)理[J]. 高師理科學(xué)刊,2008(4):34-36.
[4] 唐朔飛. 計算機(jī)組成原理[M]. 北京:高等教育出版社,2000:148,149.
[5] 白中英. 計算機(jī)組成原理[M]. 3版.北京:科學(xué)出版社,2001:102.
[6] 文德雄,李向饒,王石.計算機(jī)組成原理習(xí)題與解析[M]. 3版.北京:清華大學(xué)出版社,2006:128,187.
[7] 陳書開,王毅,成云,等.計算機(jī)組成與系統(tǒng)結(jié)構(gòu)[M]. 武漢:武漢大學(xué)出版社,2005:386.
Two Misconceptions in Domestic Text Books on the Principles of Computer Organization
JIANG Wan-jun
(Department of Computer Science, Chongqing Three Gorges College, Wanzhou 404000, China)
Abstract: Too long-term misconceptions have been introduced by some popular domestic text books on the principles of computer organization. One is that the associative memory is not addressed via address, another concerns the calculation of the bandwidth of multi-module cross addressing memory. This article attempts to initiate discussions on these two misconceptions by verifying two points: 1) being addressable via address is an indispensable function of the associative memory, and 2) the bandwidth of multi-module cross addressing memory is m times larger than that of sequential memory, in which m is the number of the modules.
Key words: misconception; associative memory; addressability; cross addressing; bandwidth