catalog
存储器
- L0: register寄存器
如果程序需要的数据, 存储在寄存器中, 那么执行就可以直接访问到数据 - L1-3: cache缓存
sram: static random access memory
需要(4 - 75)个时钟周期
cache缓存, 位于: cpu处理器的内部 - L4: 内存
dram: dynamic ram
需要 几百个 时钟周期 - L5: 本地磁盘
local secondary storage
- L6: 远程(分布式文件系统, 网络服务器)
RAM
random access memory
随机访问存储器, 分为2种: (sram静态) (dram动态)
无论是 SRAM, 还是 DRAM, 都需要在 有电的前提下, 才可以存储数据; (只不过, SRAM存储数据稳定, DRAM不稳定)
SRAM
s: static
, 就通俗理解为: 稳定的
sram将每个bit位的信息, 存储在 一个 (双稳态的) 存储单元里 (所谓: 双稳态, 可以理解为, 他很稳定)
一个存储单位, 由 6个 晶体管组成
只要有电, sram就可以 (稳定的) (持久的) 存储着数据
SRAM的速度要比DRAM快, 价格也更贵; CPU里的cache, 就是使用的SRAM
Cache
CPU芯片里, 使用了 大量的 基于SRAM的 高速缓存存储器Cache
Cache的产生, 是源于: 程序的局部性特点
程序的局部性
- (时间局部性): 访问某一内存单元后, 在不久未来, 还会继续访问他
- (空间局部性): 访问某一内存单元后,在不久未来, 还会继续访问 他附近的内存单元
DRAM
d: dynamic
, 就通俗理解为: 不稳定的, 易变的
DRAM存储数据的原理是: 电容充电; 一个存储单元, 由 (一个电容) 和 (一个晶体管) 组成
与SRAM不同, DRAM对干扰 非常敏感, 当电容的电压 被影响后, 就无法恢复到正常的状态
DRAM会 不停的(100ms内) 漏电, 因此, 内存系统 需要不断的 读出内存的数据, 然后, 重新写入, 来刷新内存的每一个bit位
只有通过 不断的刷新(数据读出, 再写入), 才能保持数据
不过, 因为CPU的时钟周期, 是以 ns纳秒
为单位的; 所以, 相对于ms, 时间还是很充分的
内存, 使用的是: DRAM
物理结构
DRAM是一个 二维阵列, 比如他有16个单元, 即一个4 * 4
的阵列;
然后, 每一个单元, 有y个bit位; 即这是一个(16 * y)的 DRAM
;
然后, DRAM还有 一个长度为4
的 一维数组cache
(即4个单元), 一会说他的作用.
内存控制器memory controller
, 有x个地址引脚 指向DRAM; (x = log2( 4)
即x个bit, 可以表示 4(行=列数))
DRAM有y个 数据引脚 指向了 内存控制器;
一个引脚, 即一个bit位
当内存控制器, 要取 (2行, 1列)
的单元:
- x个地址引脚, 值设置为
2
; 然后 DRAM的第2行的4
个单元, 就放到了 (上面讲的 cache一维数组里) - 然后x个地址引脚, 值设置为
1
; 然后 cache里的 第1列的1
个单元, 就输出到y
个 数据引脚里.
比如, 一个(16 * 8)的DRAM
, 为什么设置为 二维, 而不是1维呢?
- 二维: (4 * 4)的阵列; 则, 地址引脚 使用2
log2( 4)
个, 就可以了;
但, 由于需要cache
, 时间确实有损耗 - 一维: (16)的数组, 则, 地址引脚 需要使用 4
log2( 16)
个
Disk
磁盘, 有2种: (机械磁盘) 和 (固态硬盘)
机械磁盘
他是依靠 盘片来存储数据的, 盘片的表面 涂有 磁性的 可以存储信息的材料
盘片的上下两层都可以存储数据, 轴会带着 所有的盘片, 高速的旋转; 就和以前的光盘一样;
所以, 他命名为: