存储系统
计算机存储系统层次及存储介质
op1=>operation: 寄存器组
op2=>operation: cache
op3=>operation: 主存
op4=>operation: 辅存
op1->op2->op3->op4
op11=>operation: 电路(组合逻辑电路)
op22=>operation: SRAM
op33=>operation: DRAM
op44=>operation: 磁表面存储
op11->op22->op33->op44
结论:容量由小到大,速度由高到低,单位存储价格由高到低
cache篇
为什么会提出cache?
- 避免 CPU “空等” 现象
- CPU 和主存(DRAM)的速度差异
利用原理
- 程序访问的局部性原理
重要概念
地址映像:信息从主存装入cache时,主存地址要按一定规则映像为cache地址。
地址转换:程序根据用户提供的主存地址访问cache中对应内容时,要完成主存地址转换为cache地址。
地址映像方式
直接映像
主存字块标记 | cache字块地址 | 字块内地址 |
---|---|---|
t位 | c位 | b位 |
全相联映像
主存字块标记 | 字块内地址 |
---|---|
m=t+c位 | b位 |
组相联映像
主存字块标记 | 组地址 | 块内地址 |
---|---|---|
t+r位 | c位 | b位 |
例题
一个组相联映象Cache由64个存储块构成,每组包含4个存储块,主存包含4096个存储块,每块由此128字组成,访存地址为字地址。
写出主存地址的位数和地址格式?
初始CACHE为空,在直接映像方式下若CPU依次访问主存块0,1,2,…,63,循环执行10次,问命中率多少?
解:由题可知为四路组相联
(1)因为主存包含2^{12}(4096)个存储块,每块由2^{7}(128)个字组成,可得主存容量为2^{12}*2^{7}=2^{19},所以主存地址位数为19,块内地址为7位。
又组数为2^{6}/2^{2}=2^{4},则组号为4位,则可得标记需8位。
主存字块标记(8位) | 组号(4位) | 块内地址(7位) |
---|---|---|
A18----A11 | A10----A7 | A6----A0 |
(2)因为由题可得,刚开始cache无内容,则第一轮全部不命中,之后九次命中,则命中率:9/10=90%
辅存篇
重要概念
存储密度 :
定义:单位长度或单位面积磁层表面磁层所存储的二进制信息量
道密度 :
沿磁盘半径方向单位长度的磁道数称为道密度,单位为道/英寸tpi或道/毫米tpmm
位密度或线密度:
单位长度磁道所能记录二进制信息的位数叫位密度或线密度,单位为位/英寸bpi或位/毫米bpmm
存储容量 :
C = n × k × s
寻址时间:
平均寻址时间Ta=平均找道时间Ts+平均等待时间Tw
例题:
假设某磁盘存储器的平均找道时间为Ts,转速为每分钟r转,每磁道容量为N个字,每信息块为n个字。试推导读写一个信息块所需要总时间Tb的计算公式:
Tb=平均寻址时间+传送时间
平均寻道时间=寻道时间+等待时间
=Ts+转一圈的时间/2
=Ts+(60S/r)/2
=Ts+30/r
令传送n个字所需的传送时间为X,则由数据传输率可得:
N*(r/60)=n/X
计算可得,X=\frac{60n}{rN}
则Tb=Ts+\frac{30}{r}+\frac{60n}{rN}
假设磁盘组有11个盘面,每片有两个记录面;存储区域内直径2.36in,外直径5.00in;道密度为1250tpi,内层位密度为52400bpi,转速为2400rpm。问:
共有多少个存储面可用?
由题可得,共有11个盘片,但最上面及最下面将用于封装,无法用于存储,故共有20个存储面。共有多少柱面?
每个盘面上的磁道侧面即为柱面,故磁道数即为柱面数。
而磁道数=道密度((存储区域外直径-内直径)/2)
=1250tpi((5-2.36)/2)
=1650个每道存储多少字节?盘组总存储容量是多少?
(3)已知,各磁道上道容量相等,故:
内层道容量=道容量=(内层位密度л内直径)
=(52400bpiл2.36)bit
=(52400bpiл2.36)/8B
=48538B=48.538KB
盘组总存储容量=存储面数磁道数磁道容量
=20165048.538KB
=1.6GB数据传送率是多少?
数据传输率Dr=磁道容量转速
=48.538(2400rpm/60)rps
=1941520B/S=1.9MB/S每扇区存储2KB数据,在寻址命令中如何表示磁盘地址?
已知确定磁盘地址,需确认存储面号、磁道号及扇区号,故磁盘地址需分成三部分。
存储面:因有20个存储面,故需至少5位用于表示
磁道号:因有1650个磁道,故至少需11位用于表示
扇区:因有磁道容量/扇区容量=48538/2048=24个扇区,故至少需5位用于表示
即可得:
| 存储面(磁头)号 |磁道号 |扇区号 |
|:--------|--------:|:-----|
| 5位 | 11位 | 5位 |如果某文件长度超过了一个磁道的容量,应将它记录在同一个存储面上,还是记录在同一个柱面上?
柱面上
因为如果记录在一个存储面上,则需要重新寻道,而直接记录在同一个柱面上就不用,则可以节约寻道时间。