文章編號:1672-5913(2009)10-0072-02
摘要:長期以來,國內流行的某些計算機組成原理方面的教材存在兩個錯誤,其一是相聯存儲器不按地址尋址的問題,其二是多模塊交叉編址存儲器帶寬的計算問題。本文對這兩個錯誤進行分析和探討。指出了(1)按地址尋址是相聯存儲器不可缺少的功能;(2)交叉存儲器的帶寬約為順序存儲器帶寬的m倍,m為模塊數。
關鍵詞:錯誤;相聯存儲器;尋址;交叉編址;帶寬
中圖分類號:G642
文獻標識碼:A
長期以來,由著名出版社出版、發行量大、多次再版印刷且獲得過省部級以上獎項的計算機組成原理方面的優秀教材對我國高校的計算機教育具有重要的貢獻。但是這些優秀教材也難免出現一點錯誤,其錯誤哪怕是很小的也會誤導讀者,這樣的錯誤還被其它書籍引用或在一些考試中出現。下面對出現在這些優秀教材中的兩個錯誤進行分析和探討。
1相聯存儲器不按地址尋址的問題
文獻[1]對相聯存儲器的描述是:“相聯存儲器不按地址訪問存儲器,而按所存數據字的全部內容或部分內容進行查找(或檢索)”。有書籍一字不差地引用這個描述。文獻[2]有這樣的描述:“相聯存儲器又稱聯想存儲器。它不是根據地址而是根據所存信息的全部特征或部分特征進行存取的,即一種按內容尋址的存儲器?!?/p>
在一些考試中也有關于相聯存儲器尋址的試題,例如2006年11月系統分析師試題(國家軟考辦)和2008年12月西南大學網絡教育學院計算機組成原理試題:
單項選擇題:關于相聯存儲器,下面的論述中,錯誤的是(A) 。
(17) A.相聯存儲器按地址進行并行訪問
B.相聯存儲器的每個存儲單元都具有信息處理能力
C.相聯存儲器能并行進行各種比較操作
D.在知識庫中應用相聯存儲器實現按關鍵詞檢索
單項選擇題:相聯存儲器是按(③)進行尋址的存儲器。
①地址指定方式 ②堆棧存取方式 ③內容指定方式 ④地址指定與堆棧存取方式結合
上述觀點一致認為相聯存儲器不按地址尋址,但是相聯存儲器是可以按地址尋址的。文獻[3]從電路原理給予了分析,即當相聯存儲器的屏蔽寄存器置全1時輸出一個標志信號,該信號選擇地址譯碼器,并禁止匹配寄存器輸出,此時按地址訪問相聯存儲器中的存儲字。文獻[4]中有這樣的描述:“相聯存儲器既可按地址尋址,又可按內容(通常是某些字段)尋址,……,相聯存儲器有三種基本操作:讀、寫、檢索(比較)。讀、寫操作與傳統存儲器相同,檢索只能按內容進行”。
2按地址尋址是相聯存儲器不可缺少的功能
相聯存儲器可按地址尋址的前提是相聯存儲器中設置了地址譯碼器。我們知道相聯存儲器是一種隨機讀寫式的半導體存儲器,這樣的存儲器在加電的初始時刻其每個存儲位取相同的初態(0或1)。設相聯存儲器的存儲空間為n×k位,即每個字有k位共有n個存儲字。現有含m(<n)個字的數據塊要寫入相聯存儲器中該如何寫入呢?如果相聯存儲器中沒有地址譯碼器就只能采用隨機寫入法或匹配寫入法。隨機寫入法不能保證該數據塊所含的m個字一個不少地寫入相聯存儲器,因為當第一字寫入相聯存儲器后,第二字寫入時存在1/n的概率覆蓋第一字,同理第三字寫入時存在2/n的概率覆蓋已寫入的字,……。匹配寫入法也是不可取的,設數據塊中的m個字有l(<k)位關鍵詞段key完全相同,key非全0亦非全1。但是加電的初始時刻相聯存儲器的存儲空間一片空白,依靠什么進行匹配寫入呢?即使第一個字已寫入,由于第二字與第一字因key而匹配,則第二字寫入一定覆蓋第一字。如果按key不匹配來寫入,設數據塊中m個字的key完全不相同,則存在后寫入的字覆蓋已寫入字的可能性,這樣寫入與隨機寫入法等價。還有一種寫入法那就是順序寫入,順序寫入法總得要一個計數器來指示要寫入的存儲位置吧,那么其本質就是按地址尋址了。
如果相聯存儲器中沒有地址譯碼器,設數據塊已寫入,要將新的若干個字添加到相聯存儲器中又如何操作呢?若按匹配寫入則原數據塊中的字將被覆蓋,如果按不匹配寫入則不能尋址,那只能隨機寫入,隨機寫入又可能產生覆蓋,所以相聯存儲器中必需地址譯碼器。由于相聯存儲器中有地址譯碼器,可以用編程來解決這個問題。將屏蔽寄存器置全1,用通用寄存器A存放已寫入數據塊的關鍵詞段key,用通用寄存器B作為地址計數器,使其從0開始計數,并通過地址總線送相聯存儲器的地址譯碼器,讀取對應位置的存儲字。若取出存儲字的對應字段與key相同,則B加1讀取下一個存儲字,否則將一個新的字寫入B所指示的存儲位置。
地址譯碼器是一種簡單的組合邏輯電路,因該電路半導體存儲器很方便地實現按地址尋址。難道相聯存儲器的開發設計者會放棄這一功能模塊,那么設計者采用什么電路來解決上述一系列問題?一種說法是相聯存儲器的“各個存儲單元除了有存儲信息的功能外,還應有信息處理的能力,也就是說每個存儲單元必須有一個處理單元”。姑且不論這樣的電路具體是如何實現的,但是可以肯定這將以大量的硬件開銷為代價。即使如此,也不必排斥在相聯存儲器中集成地址譯碼電路而實現按地址尋址。
3關于多模塊交叉編址存儲器帶寬的計算
文獻[5]第102頁有一道計算存儲器帶寬的例題如下,文獻[6,7]]也有類似解法的例題或習題解答。
[例4]設存儲器容量為32字,字長64位,模塊數m= 4,分別用順序方式和交叉方式進行組織。存儲周期T= 200ns,數據總線寬度為64位,總線周期τ= 50ns。問順序存儲器和交叉存儲器的帶寬各是多少?
解:順序存儲器和交叉存儲器連續讀出m= 4個字的信息總量都是:q=64位×4=256位
順序存儲器和交叉存儲器連續讀出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] 。
如果順序存儲器和交叉存儲器連續讀出8個字,根據例4的計算方法求得順序存儲器的帶寬W2不變,而交叉存儲器的帶寬變為93×107位/s 。如果交叉存儲器連續讀出16個字,則其帶寬變為108×107位/s ,如果交叉存儲器連續讀出32個字,則其帶寬變為117×107位/s 。交叉存儲器的帶寬隨連續讀出字數的多少而變說明例4的計算方法是錯誤的,因為存儲器的帶寬是反映存儲器特性的一個物理量,與存儲器是否傳送數據或傳送數據的多少無關。
設多模塊交叉編址存儲器的每個模塊的存儲周期為T,總線傳送周期為τ,交叉模塊數為m(m為2的整冪),且T= mτ,則這樣組織的存儲器是一種按流水方式訪問的存儲器。若要連續傳送n個字,則第一個存儲周期T傳送第一個字,以后每經過一個總線周期τ傳送一個字。于是順序存儲器和交叉存儲器連續傳送n個字所需時間分別是:t2= nT = nmτ,t1= T+(n-1)τ = mτ +(n-1)τ。
t2/ t1= nmτ / [mτ +(n-1)τ] = m / [1 +(m-1)/ n]
當n >>m時,t2/ t1≈m ,說明順序存儲器所需時間約為交叉存儲器所需時間的m倍,即交叉存儲器的帶寬約為順序存儲器帶寬的m倍??梢哉f交叉存儲器的帶寬是指連續不斷訪問時的數據傳輸率。所以例4中的交叉存儲器的帶寬約為128×107位/s 。
參考文獻:
[1] 王愛英. 計算機組成與結構[M]. 4版. 北京:清華大學出版社,2007:257.
[2] 羅克露,單立平,劉輝,等. 計算機組成原理[M]. 北京:電子工業出版社,2004:244.
[3] 蔣萬君. 相聯存儲器的邏輯機理[J]. 高師理科學刊,2008(4):34-36.
[4] 唐朔飛. 計算機組成原理[M]. 北京:高等教育出版社,2000:148,149.
[5] 白中英. 計算機組成原理[M]. 3版.北京:科學出版社,2001:102.
[6] 文德雄,李向饒,王石.計算機組成原理習題與解析[M]. 3版.北京:清華大學出版社,2006:128,187.
[7] 陳書開,王毅,成云,等.計算機組成與系統結構[M]. 武漢:武漢大學出版社,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