计算机 采用 分级存储结构 , 主要目的是 为了 解决 容量 / 价格 / 速度 之间的矛盾 ;
一、层次化存储结构
1、层次化存储结构
计算机 存储器 按照存储速度 由快到慢 进行排序 :
- CPU 寄存器 : 在 CPU 内部 , 速度最快 , 每秒可操作几十亿次 , 其容量只有 几个字节到几十个字节不等 , 其访问速度 1 个 CPU 周期 ;
- CPU 周期 : 指的是 CPU 的运算一次花费的事件 , 2.4GHz 频率的 CPU 1 秒钟运算 24 亿次 , 其周期就是 24 亿分之一秒 ;
- 寄存器大小 : 32 位 CPU 寄存器有 8位、16位、32位 , 64 位 CPU 寄存器有 8位、16位、32位、64位 ;
- 高速缓存 Cache : 位于 CPU 与 内存 RAM 之间 , 速度较快 , 用于暂时存放 频繁使用的 指令和数据 , 可根据速度又分为 L1、L2、L3 多级高速缓存 , 大小在几百 KB 到 几 MB 之间 , 访问速度在 1 ~ 30 个 CPU 周期 ;
- 内存 : 又称为 " 主存储器 / RAM " , 插在计算机的主板上 , 速度慢 , 访问速度在 50 ~ 200 个 CPU 周期 , 一般家用电脑的 内存条 有 4 ~ 32GB 大小 ;
- RAM 全称 Random Access Memory 是 随机存取存储器 , 一旦掉电数据全部刷掉 ;
- DRAM 全称 Dynamic Random Access Memory 是 动态随机存取存储器 , 一个电容 存储 1 比特信息 , 速度慢 , 成本低 , 性能低于 SRAM ;
- SRAM 全称Static Random Access Memory 是 静态随机存取存储器 , 六个晶体管 存储 1 比特 信息 , 速度快 , 成本高 ;
- ROM 全称 Read-Only Memory 是 只读存储器 , 掉电后数据不会丢失 , 一般 BIOS / 看门狗 都写在 ROM 中 , 其读写速度与 RAM 相当 ;
- RAM 全称 Random Access Memory 是 随机存取存储器 , 一旦掉电数据全部刷掉 ;
- 外存 : 又称为 " 辅助存储器 " , 挂接在计算机外部的 硬盘 / 固态硬盘 / U 盘 , 容量很大可达到几 TB , 访问速度很慢 磁盘需要几千万个 CPU 周期 / 固态硬盘需要几十万个 CPU 周期 ;
- 外存 断电后仍然可以存储数据 , 寄存器 / 高速缓存 / 内存 断电后数据消失 ;
- 这里的 访问速度 指的是 建立连接所需时间 , 访问后吞吐量每秒几百 MB ;
2、层次化存储结构 - 示例说明
安装软件 , 是将 软件的程序包 存储到 外存 ( 磁盘 ) 中 ,
运行软件时 , 将要运行的 数据 加载到 内存 中运行 , 运行时 不会将整个软件包加载到内存中 , 用什么资源 , 就将对应的资源加载到内存中 , 如显示图片 , 就将图片加载到内存中 , 显示完毕后 , 马上释放该图片占用的内存资源 ,
如果需要进行 CPU 计算 , 程序指令调用 , 将 内存中的数据 加载到 高速缓存 Cache 中 ,
正在执行的指令 , 加载到 CPU 内部的 寄存器 中 ;
3、程序员可操作的部分
程序员 开发软件 , 可以操作 寄存器 / 外存 / 内存 , 高级缓存 Cache 对开发者透明 ;
- 高级语言只能操作 内存 和 外存 ,
- 只有 汇编语言可以操作寄存器 ;
操作 外存 就是 文件管理 ;
操作 内存 就是 定义变量 和 函数 , 运行过程中涉及的操作 栈内存 和 堆内存 ;
- C 语言可以直接手动操作 堆内存 ;
- Java / Python 等高级语言 由系统管理 堆内存 ;