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

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 小时前
中间件开发与生命周期管理
缓存·中间件·生命周期·日志·扩展·codecapsule
RoboWizard6 小时前
双接口移动固态硬盘兼容性怎么样?
人工智能·缓存·智能手机·电脑·金士顿
honortech10 小时前
外部连接 redis-server 相关配置
数据库·redis·缓存
不会写程序的未来程序员10 小时前
Redis 的内存回收机制详解
数据库·redis·缓存
不会写程序的未来程序员10 小时前
Redis 主从同步原理详解
数据库·redis·缓存
嘻哈baby10 小时前
Redis突然变慢,排查发现是BigKey惹的祸
数据库·redis·缓存
TDengine (老段)11 小时前
TDengine 数据缓存架构及使用详解
大数据·物联网·缓存·架构·时序数据库·tdengine·涛思数据
键来大师11 小时前
Android16 RK3576 系统清理缓存
android·缓存·framework·rk3588·android15
Ghost Face...11 小时前
深入解析dd命令:缓存与磁盘速度之谜
linux·缓存
我要精通C++12 小时前
从源码看nginx的缓存功能
运维·nginx·缓存