多體並行:高位/低位交叉編址

(1)圖是適合於並行工作的高位交叉編址的多體存儲器結構示意圖,圖中程序因按體內地址順序存放(一個體存滿後,再存入下一個體),故又有順序存儲之稱。高位地址可表示體號,低位地址爲體內地址。按這種編址方式,只要合理調動,使不同的請求源同時訪問不同的體,便可實現並行工作。例如,當一個體正與CPU交換信息時,另一個體可同時與外部設備進行直接存儲器訪問,實現兩個體並行工作。這種編址方式由於一個體內的地址是連續的,有利於存儲器的擴充。


(2)圖是低位交叉編址的多體模塊結構示意圖。由於程序連續存放在相鄰體中,故又有交叉存儲之稱。低位地址用來表示體號,高位地址爲體內地址。這種編址方式又稱爲模M編址(M等於模塊數),一般模塊數取2的方冪,使硬件電路比較簡單。有的機器爲了減少存儲器衝突,採取質數個模塊。

以實際數據爲例,這樣比較容易理解,比如說某個存儲體的有2個存儲芯片,每個芯片的存儲週期爲100ns,如果你去讀數據,如果你的數據按照這種放置方法,先放第一個芯片,放滿後再放第2個芯片(順序方式)。那麼你讀數據的過程就是這樣:

讀0位置數據,等100ns,讀1位置數據,等100ns讀2位置數據。很容易理解。

但如果你換個方式來放,比如說我0位置是1號芯片起始,1位置是2號芯片起始位置,2位置是1號芯片第2個單元,3位置是2號芯片的第2個單元這樣交叉來編址。再回憶存儲週期的概念:其實從芯片中把數據讀到緩衝區,再從緩衝區讀到CPU,這個讀的過程非常短,僅僅是個脈衝就可以解決的問題,但由於芯片的物理屬性,你讀一個芯片後,必須間隔一段時間才能去讀。採用交叉編址後,你的讀過程就像這樣:

讀0位置數據到緩衝區,40ns後,CPU取走了數據。這時1號芯片的100ns的週期還沒過,不能去讀,但幸運的是我們讀的不是1號芯片,而是2號芯片,這樣,我們就把2號芯片的數據讀到緩衝區。過了40ns後,CPU取走數據,此時過去了80ns,我們只需再等20ns就可以繼續去讀3號位置數據,這樣速度就比以前快了很多。

低位交叉編址又稱爲橫向編址,連續的地址分佈在相鄰的存儲體中,而同一存儲體內的地址都是不連續的。存儲器地址寄存器的低位部分經過譯碼選擇不同的存儲體,而高位部分則指向存儲體內的存儲字。如果採用分時啓動的方法,可以在不改變每個存儲體存取週期的前提下,提高整個主存的速度。


1、一個4體並行低位交叉存儲器,每個模塊的容量是64K×32位,存取週期爲200ns,在以下說法中,( )是正確的。
A. 在200ns內,存儲器能向CPU提供256位二進制信息
B. 在200ns內,存儲器能向CPU提供128位二進制信息
C. 在50ns內,每個模塊能向CPU提供32位二進制信息
D. 都不對
解:對CPU來說,它可以在一個存取週期內連續訪問4個模塊,32位×4=128位。本題答案爲B。

2、以下敘述中正確的是( )。
Ⅰ.雙端口存儲器可以同時訪問同一區間、同一單元
Ⅱ.當兩個端口的地址碼相同時,雙端口存儲器必然會發生衝突
Ⅲ.高位多體交叉存儲器的設計依據是程序的局部性原理
Ⅳ.高位四體交叉存儲器可能在一個存儲週期內連續訪問4個模塊
A. 僅Ⅰ、Ⅲ    B. 僅Ⅱ、Ⅲ    C. 僅Ⅰ、Ⅳ     D. 僅Ⅰ
解:雙端口存儲器有兩組相互獨立的地址線、數據線和讀寫控制線,因此可以同時訪問同一區間。當兩個端口的地址碼相同時,雙端口存儲器的讀操作不會發生衝突,寫操作會發生衝突。由於高位多體交叉存儲器中單個存儲器中的字是連續存放的,不能保證程序的局部性原理,而由於低位多體交叉存儲器交叉存放,因此滿足程序的局部性原理。高位四體交叉存儲器仍可能一次連續讀出彼此地址相差一個存儲體容量的4個字,但這樣讀的概率較小。本題答案爲C。

3、採用4體並行低位交叉存儲器,每個模塊的容量是32K×16位,存取週期爲400ns,在以下說法中,      是正確的。
A. 在0.1µs內,存儲器能向CPU提供26位二進制信息
B. 在0.1µs內,存儲器能向CPU提供16位二進制信息
C. 在0.4µs內,存儲器能向CPU提供26位二進制信息
D. 都不對
解:400ns=0.4µs,16位×4=64位=26位。本題答案爲C。

4、多體並行方式有兩種,其中高位交叉編址的多體存儲器中,程序  ① 存放,而低位交叉編址的多體存儲器中,程序  ② 

解:本題答案爲:① 按體內地址順序 ② 連續存放在相鄰體中。

採用多體交叉存儲器時,主要由地址的低位部分來選擇各個存儲體。

採用多體交叉存儲器時,當連續訪問的存儲單元位於不同的存儲體時可獲得較高的存取速度。

有M個存儲體的低位交叉編址的多體存儲器是採用模M編址方式。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章