计算机存储结构分析(寄存器,内存,缓存,硬盘)

https://blog.csdn.net/bemodesty/article/details/81476906

前言

一个计算机包含多种存储器比如:寄存器、高速缓存、内存、硬盘、光盘等,为啥有这么多种存储方式,对于不太了解的人,总是觉得云里雾里的,搞不明白原因。

计算机主要的功能就是运算(cpu),但是要完成一个任务,就要读取运算指令,并将结果输出给用户;因此,指令的存储、运算过程中中间状态的存储、结果的保存等都需要存储器。

第一代计算机,接收指令是通过读取穿孔卡片来实现的,这个穿孔卡片就可以理解为最老的用来存储命令的存储器。

理想状态下,存储器的执行速度应该快过计算机的运算速度,这样才可以最大化的利用cpu的计算能力。比如:cpu的运算速度是每秒100条指令,但是如果存储器的速度是每秒最多能读取10条指令,那么cpu就有90%的时间是等待指令; 这样的存储器是有的,那就是寄存器,寄存器是和cpu同样材质制作的,速度和cpu一样快,当然价格也就和cpu一样了。

但是如果一台计算机,存储器都是寄存器的话,那造出来的计算机,肯定就是天价了,普通人都买不起。计算机的设计着综合:读写速度,空间大小,产品价格等因素采用了分层结构来实现,取了一个性价比最好的方案。

分层结构

如下所示,顶层的存储器(寄存器)读写速度较高,但是空间较小。底层的读写(比如硬盘)速度较低,但是空间较大。

寄存器和cpu速度相当,空间比较小在kb级别。

高速缓存比寄存器要慢1倍左右,但是空间可以达到MB级别。

内存比缓存要慢10倍左右,但是空间可以达到GB级别,当前个人电脑一般都不小于4G

硬盘这个速度更慢,比内存要慢上万被,千万被级别,但是价格也比较偏移,空间也很大。

其他存储光盘,软盘,usb外接的其他存储器,作为硬盘的一个补充,有便于携带的优点

总结:计算机的存储设计的这么复杂,并不是设计者故意要搞得麻烦,而是要兼顾性能和价格综合考量的一个因素,如果未来有一个存储产品,能达到当前寄存器的读取性能,而又可以做的空间极大,并且价格和硬盘一样,或者说比硬盘还便宜,且数据是掉电不丢失的话,那么计算机的存储结构肯定就被简化了,直接就只有一个存储器。

小贴士:现在买电脑时,存储器上,大家主要关注在了 内存大小和硬盘大小,但是从分层结构图上,可以看出缓存大小更加重要,(当然如果厂商公布寄存器大小的话,这个也要关注)。

寄存器

寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果,寄存器虽然也能存储数据,但同内存等存储器相比,寄存器又有自己独有的用途:其主要是CPU对内存中的数据进行处理时,往往先把数据取到寄存器中,而后再作处理,加快直接同内存读取指令和读写数据的速度。

高速缓存

高速缓冲存储器是存在于内存与CPU之间的存储器,容量比较小但速度比内存高得多, 接近于CPU的速度。高速缓存是是加速读取速度的一个桥梁(工具)。CPU向内存读取数据时,首先查询缓存区是否有对应数据,如果有则直接读取,没有再从内存中读取。高速缓存中存储的都是内存中的数据,这部分数据是cpu访问比较频繁的部分。

系统也会动态管理缓存中的数据,如果有数据访问频率降低到一定值,就从缓存中移除,而将内存中访问更加频发的数据替换进去。(高速缓存可以不只一级,可以有多级缓存区)

内存

这个才是计算机运行过程中的存储主力,用于存储 指令(编译好的代码段),运行中的各个静态,动态,临时变量,外部文件的指针等等。

前面提到的寄存器和高速缓存只是加速存储速度的中间部件,原始运行文件肯定都是先加入到内存中的,因此内存的大小决定了一个可运行程序的最大大小。

举例:如果内存大小是4G,一个程序装入内存需要大于4G空间的话,改程序是无法运行的,当然实际是还要去掉操作系统占用的内存,因此连4G都无法满足的。(当然现在有了虚拟内存,也就是将硬盘的一部分映射为内存空间,将不经常访问的指令放到虚拟内存中,这样其实是支持大于4G的程序的,这里只是在假设没有虚拟内存的情况下的举例说明)。

硬盘

硬盘这个东西,大家应该都比较熟悉,其优点是空间大,价格便宜,并且掉电数据不丢失。常常用来存储需要永久存储的文件。

相关推荐
见山是山-见水是水2 小时前
拆解网络缓存策略设计:原生鸿蒙页面的实现路径与调试方法
http·缓存·华为·harmonyos
T01156183 小时前
艺培场馆课时预约小程序用户端 & 后台联动踩坑上篇(预约、课时、缓存、消息、学员端自身问题)
java·缓存·小程序·bug·全栈项目实战手记·艺培课时系统‘’
北漂燕郊杨哥4 小时前
npm 缓存占满 C 盘?三步把它迁到 D 盘(附验证与避坑)
缓存·npm·node
克里斯蒂亚诺更新4 小时前
win下如何将redis自启动
数据库·redis·缓存
晓晓_za89866820 小时前
Geo 优化服务 CI/CD 流水线搭建:源码自动构建、测试与灰度发布
运维·服务器·tcp/ip·spring·缓存·ci/cd
nvd111 天前
LiteLLM 与 Redis 响应缓存机制:从精确哈希匹配到模型底层 KV-Cache 边界
redis·缓存·哈希算法
名字还没想好☜1 天前
Next.js 用 cookies()/headers() 读请求信息:动态渲染触发、缓存失效与在 Server Action 里读写 cookie
前端·javascript·缓存·react·next.js·app router
lv__pf1 天前
redis缓存数据库进阶
数据库·redis·缓存
草莓熊Lotso1 天前
【Redis 初阶】Hash 类型深度解析:结构化数据存储的最优解
linux·网络·数据库·redis·tcp/ip·缓存·哈希算法