雙端口RAM
提高存儲器訪存速度一些措施。
存取周期
進行一次存取之后,是不能立即進入下一次存取的,存儲器要進行一次恢復。
存取周期=存取時間+恢復時間
- 對不同時間進行不同存取操作,雙端RAM
- 流水線的方式,多模塊存儲器
雙端口RAM
置一個忙信號。
多模塊存儲器
CPU的速度比存儲器要快的,如果從存儲器中同時存取n個字。可以提高cpu使用資源
補充:可以並行工作,如總線寬度為mW時,可以同時取出長度為mW的數據。
普通存儲器
每行為1個存儲單元
單體多字存儲器
每個存儲單元存儲m個字,總線寬度也為m個字,一行並行讀出m個字。
增加了存儲器的帶寬。
缺點:指令和數據在主存內必須連續存放。
多體並行的存儲器
每個模塊都有相同的容量和存取速度,各個模塊都有獨立的讀寫控制電路、地址寄存器和數據寄存器
編制方式:
高位交叉編址的多體存儲器
高位是體號,低位是體內地址
假如有8個存儲單元
相當於說,先確定是哪一個(存儲體),然后在在那一個里面找相對應的一塊。
低位交叉編址的多提存儲器
低位是體號,高位是體內地址
假如有8個存儲單元
先找到具體的位置,在看哪一個存儲體。
為什么要這么弄?
假如每個存儲體的存儲周期為T
連續訪問:
00000
00001
00010
00011
00100
高位
其實就是在M0里一直訪問
時空圖:
如果連續訪問這個5個地址,需要花費5t個時間。並沒有帶來什么好處。
高位交叉編址相當於擴容,每個其實還是相當於獨立的,並沒有帶來時間優勢。
采用高位交叉編址,連續取n個存儲字,耗時nT
低位
先訪問M0的0號單元,接下來00001,是M1的0號單元,只需要間隔一小段時間。然后就是M2,M3.都是用一小段時間。可以相當於是同時訪問。大大減少了存取時間。
時空圖:
時間如何計算?
假設啟動完M0后啟動M1的時間間隔是τ,啟動完M1在啟動M2的時間間隔是τ、啟動完M2在啟動M3的時間間隔是τ,接下來啟動完M3在啟動M0的時間間隔也是τ
所以就有總時間T+4τ
假如連續存取n個存儲字,采用低位交叉編址,耗時:T+(n-1)τ
流水線(考試常考)
微觀(計算題)
有m個存儲體,存儲周期是T,字長W,每隔r時間啟動下一個存儲體,連續存放n個字,求存儲器的存取速率。
如果m<T/r
還需要在等多一個r
如果m>T/r
所以:
如果n較大時,帶寬->W/r
對比單個存儲體的帶寬:W/T
宏觀(概念題)
一個存儲周期內,交叉存儲器可以提供的數據量為單個模塊的m倍。
回顧
提出這樣的存儲器是為了提高CPU的訪存速度