存储器
- 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
sram将每个bit位的信息, 存储在 一个 (双稳态的) 存储单元里 (所谓: 双稳态, 可以理解为, 他很稳定) 一个存储单位, 由 6个 晶体管组成
只要有电, sram就可以 (稳定的) (持久的) 存储着数据
SRAM的速度要比DRAM快, 价格也更贵; CPU里的cache, 就是使用的SRAM
Cache
CPU芯片里, 使用了 大量的 基于SRAM的 高速缓存存储器Cache
Cache的产生, 是源于: 程序的局部性特点
程序的局部性
- (时间局部性): 访问某一内存单元后, 在不久未来, 还会继续访问他
- (空间局部性): 访问某一内存单元后,在不久未来, 还会继续访问 他附近的内存单元
DRAM
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种: (机械磁盘) 和 (固态硬盘)
机械磁盘
他是依靠 盘片来存储数据的, 盘片的表面 涂有 磁性的 可以存储信息的材料
盘片的上下两层都可以存储数据, 轴会带着 所有的盘片, 高速的旋转; 就和以前的光盘一样;
所以, 他命名为: (机械), 即, 他是有(机械运动)的, 因为要一直的旋转运动
固态硬盘
有多个 ==闪存芯片nand flash chip ==组成, nand: 与and 和 非not
由于nand 与非门的逻辑, 闪存芯片 初始状态都是1 ; 当我们写入数据后, 会变成0 ;
是(半导体)存储器, 速度要比 机械磁盘快, 价格也贵
|