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

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的程序的,这里只是在假设没有虚拟内存的情况下的举例说明)。

硬盘

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/208572.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java-两个列表进行比较,判断那些是需要新增的、删除的、和更新的

文章目录 前言两个列表进行比较,判断那些是需要新增的、删除的、和更新的 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实…

SpringIOC之@Configuration

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

Django的logging-日志模块的简单使用方法

扩展阅读: Python-Django的“日志功能-日志模块(logging模块)-日志输出”的功能详解 现在有下面的Python代码: # -*- coding: utf-8 -*-def log_out_test(content_out):print(content_out)content1 "i love you01" log_out_test(content1)现…

云服务器Centos中安装Docker

云服务器Centos中安装Docker 1 简介DockerCentosCentos和Ubuntu区别 2 安装3 测试hello-world的镜像测试 1 简介 Docker Docker是一个开源的应用容器引擎,利用操作系统本身已有的机制和特性,可以实现远超传统虚拟机的轻量级虚拟化。它支持将软件编译成…

Hive 浅析

Hive是一个简单的LUA沙盒,除了基本的LUA解释器的功能以外,还提供了诸如热加载等功能。 了解HIVE的工作原理有利于了解Lua虚拟机的底层实现机理。 本文从是什么-怎么用-为什么三个维度介绍HIVE。 Hive Hive是什么 hive是一个简单的LUA应用框架,目前基于…

Mybatis Plus详解【一】

一、简介 MybatisPlus可以节省大量时间,所有的CRUD代码都可以自动化完成。MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 特性: 无侵入:只做增强不做改变&…

Windows 12 和 AI 计算机

据商业时报消息 ,微软计划于 2024 年 6 月发布Windows 12。 新版本的操作系统将伴随集成人工智能。 该数据基于广达首席执行官林百里和宏基陈杰森在中国台北医疗科技展上的发言。 虽然这篇文章没有直接引用微软高管的话,但它是根据他们的评论得出的结…

IDEA 社区版 add GitLab Account

问题 IntelliJ IDEA Community Edition 2023.3(社区版)在使用GitLab连接时,使用个人访问令牌出现报错,代码: GraphQL error:[No such type ProjectMember,so it cant be a fraggment condition,Field id doesnt exis…

2023年最新prometheus + grafana搭建和使用

一、安装prometheus 1.1 安装 prometheus官网下载地址 sudo -i mkdir -p /opt/prometheus #移动解压后的文件名到/opt/,并改名prometheus mv prometheus-2.45 /opt/prometheus/ #创建一个专门的prometheus用户: -M 不创建家目录, -s 不让登录 useradd…

Navicat 技术指引 | 适用于 GaussDB 分布式的数据迁移工具

Navicat Premium(16.3.3 Windows 版或以上)正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结…

单例模式---饿汉式、懒汉式

一、什么是单例模式 单例模式,指的是一个类中的对象只能有一个,它在内存中只会创建一次对象的设计模式。 二、饿汉式 public class SingleTon {// 私有的构造方法private SingleTon() {};// 1. 饿汉式private static SingleTon instance new SingleTon…

整数以及浮点数在内存中的存储

一.整数在内存当中的存储 数据在内存中是以十六进制补码的形式进行存储的。 原码表示法简单易懂,适用于乘法,但用原码表示的数进行加减运算比较复杂,当两数相加时,如果同号则数值相加,但是进行减法时要先比较绝对值的…

认知觉醒(六)

认知觉醒(六) 第二节 感性:顶级的成长竟然是“凭感觉” 人类生存于世,比拼的是脑力思维,但极少有人知道,我们的身体里还有一个更高级的系统,若能善用,成就非凡。 1941年,德军对英国本土进行…

Neo4j介绍

1、Neo4j介绍 Neo4j 是一个图数据库管理系统,它专注于存储和处理图形结构的数据。图数据库是一类特殊的数据库,用于有效地管理图形数据模型,其中数据以节点、关系和属性的形式存储。 2、Neo4j特点 图数据库: Neo4j 是一种 NoSQ…

目标检测器技术演进简史

引言 目标检测算法的发展已经取得了长足的进步,从早期的计算机视觉方法开始,通过深度学习达到了很高的准确度。在这篇博文中,我们将一起回顾一下这些算法的发展阶段以及现代目标检测系统中使用的主要方法。 我们首先回顾早期传统的目标检测…

大数据技术3:数据仓库的ETL和分层模型

前言:我们先了解一下数据仓库架构的演变过程。 1 、数据仓库定义 数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time…

电商系统架构演进

聊聊电商系统架构演进 具体以电子商务网站为例, 展示web应用的架构演变过程。 1.0时代 这个时候是一个web项目里包含了所有的模块,一个数据库里包含了所需要的所有表,这时候网站访问量增加时,首先遇到瓶颈的是应用服务器连接数&a…

深入体验:山海鲸可视化软件的独特魅力

山海鲸可视化软件是一款功能强大的数据可视化工具,作为该软件的资深用户,我深感其独特的魅力和优势。下面,我将从软件特点、操作体验、数据交互和实际应用场景等方面,为大家详细介绍山海鲸可视化软件。 首先,山海鲸可视…

解决Eslint和Prettier关于三元运算符的冲突问题

三元运算符Prettier的格式化 三元运算符Eslint的格式要求 解决办法 // eslint加入配置,屏蔽标红报错indent: [error, 2, { ignoredNodes: [ConditionalExpression] }]效果

Nginx按指定格式记录访问日志

今天突然想起来一个日志的一个东西,因为拉项目无意中看到了日志文件的一些东西,现在不经常做后端了,加上其他的一些原因吧.有时候有些问题也没想太多,马马虎虎就过了,后来想想还是要记录一下这方面的处理过程吧: 一般我们作为开发人员关注的日志只是在应用程序层面的,我们称它…