寄存器:计算机中的小而强大的存储器件

news2024/11/27 12:47:55

目录

什么是寄存器?

寄存器的作用

提高计算机的性能

存储处理器需要快速访问的数据

存储函数调用时的参数和返回值

存储中间计算结果

寄存器的种类

程序计数器

指令寄存器

状态寄存器

通用寄存器

寄存器的进化过程


寄存器:计算机中的小而强大的存储器件

在计算机中,寄存器是一种小型而快速的存储器件,用于存储处理器需要快速访问的数据。它们是计算机体系结构中的关键组成部分,对于计算机的性能和功能至关重要。

什么是寄存器?

寄存器是计算机中的一种小型存储器件,用于存储处理器需要快速访问的数据。它们是计算机体系结构中的一部分,通常被集成在处理器芯片中。寄存器是计算机中最快的存储器件之一,它们的访问速度比主存储器和辅助存储器要快得多。

寄存器通常被用于存储处理器需要快速访问的数据,如程序计数器、指令寄存器、状态寄存器、通用寄存器等。它们还可以用于存储函数调用时的参数和返回值,以及存储中间计算结果等。

寄存器的作用

寄存器在计算机中有许多重要的作用。以下是其中的一些:

提高计算机的性能

寄存器是计算机中最快的存储器件之一,它们的访问速度比主存储器和辅助存储器要快得多。因此,将需要快速访问的数据存储在寄存器中可以大大提高计算机的性能。

存储处理器需要快速访问的数据

处理器需要快速访问的数据通常存储在寄存器中,如程序计数器、指令寄存器、状态寄存器、通用寄存器等。这些数据对于处理器的运行至关重要,因此它们需要快速访问。

存储函数调用时的参数和返回值

在函数调用时,参数和返回值通常存储在寄存器中。这是因为寄存器的访问速度比主存储器要快得多,可以提高函数调用的效率。

存储中间计算结果

在计算机中,一些中间计算结果需要被存储下来以便后续使用。这些中间计算结果通常存储在寄存器中,因为寄存器的访问速度比主存储器要快得多。

寄存器的种类

在计算机中,有许多不同种类的寄存器。以下是其中的一些:

程序计数器

程序计数器是一种特殊的寄存器,用于存储正在执行的程序的地址。当处理器执行程序时,它会不断地从程序计数器中读取指令并执行它们。

指令寄存器

指令寄存器是一种特殊的寄存器,用于存储当前正在执行的指令。处理器从指令寄存器中读取指令并执行它们。

状态寄存器

状态寄存器是一种特殊的寄存器,用于存储处理器的状态信息。状态寄存器中的位表示了处理器的不同状态,如进位标志、零标志、负数标志等。

通用寄存器

通用寄存器是一种通用的寄存器,用于存储处理器需要快速访问的数据。它们可以用于存储函数调用时的参数和返回值,以及存储中间计算结果等。

寄存器的进化过程

寄存器这个部件以前并不属于CPU,是从8086开始,这个部件才融入CPU之中的。

由于在64位的竞争之中,Intel输给了AMD,

所以大家会发现64位CPU寄存器和32位CPU的寄存器差异巨大。

有多大呢,有图有真相

这个是16位CPU的寄存器

 

这个是32位CPU的寄存器

 

下面是64位CPU的寄存器

 

我们可以很清晰的看到,从16位到32位,寄存器几乎只是单纯的把位宽升了一级

但是从32位到64位,几乎就是换了一个系统一样

不仅仅多了很多mmx和fpr寄存器,还有xmm寄存器

同时通用寄存器数量也多了一倍

从原来的八个,直接变成16个

完全是换了一个CPU

不仅如此,对应的编译器也需要更换。

在计算机编译的时候,32位之前的,使用的是同一个编译器

64位的,则是使用的另一个新的编译器

为什么64位x86的CPU会多出来这么多寄存器

这个就不得不提到CPU里面崛起的另一种CPU:ARM

这是一个arm的寄存器示例图

 

我们明显可以看出来,x64的寄存器和arm的寄存器非常的神似。

在32位时代,通过测试表明,同样频率的芯片,arm架构的计算效率要远高于Intel的x86架构,同时ARM能耗还更低。

为什么呢?这就要从程序执行的一个特点讲起了

程序代码之中,存在大量的函数调用;而有函数调用,往往伴随着参数的传递。

传统的x86传递参数,是通过栈来传递的。

这个在当时没有什么问题。

当时栈是在内存的,而数据从内存到CPU是需要消耗比较多的时间的

虽然现在的CPU有了多级缓存,但是缓存大小还是非常小的

函数调用比较多,且比较频繁的时候,这点就不可避免的影响到CPU的执行效率了

而arm这种CPU,有16个寄存器,哪怕有一些是专用的,其寄存器数量也远超x86

它可以让四个参数以下的函数,无需栈,直接使用寄存器就可以传递。

而这种函数往往也是函数当中的大多数寄存器传递参数的好处就在于,CPU在计算的时候,没有必要等待内存,直接就在寄存器里面整,而且从一定程度上减少了压栈的操作,极大的提高了函数调用的效率

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

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

相关文章

Linux操作基础(文件系统和日志分析)

文章目录一、inode与block1.1inode和block概述1.2 inode包含文件的元信息1.3 linux文件系统的三个时间戳1.4 inode的号码1.5 inode的大小1.6 inode号的特点1.7软连接与硬链接二 、文件恢复2.1 xfsdump恢复2.2 opic恢复方式三 、日志文件3.1 日志文件的分类3.2 日志的格式3.3 常…

大数据分析案例-基于决策树算法构建信用卡违约预测模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

定制你的专属大模型 Finetuner+体验开启!

如 ChatGPT、GPT4 这样的大型语言模型就像是你为公司请的一个牛人顾问,他在 OpenAI、Google 等大公司被预训练了不少的行业内专业知识,所以加入你的公司后,你只需要输入 Prompt 给他, 介绍一些业务上的背景知识,他就能…

Flink学习:Flink如何打印窗口的开始时间和结束时间

Window一、简介二、代码实现三、测试一、简介 大家知道,Flink用水位线和窗口机制配合来处理乱序事件,保证窗口计算数据的正确性,当水位线超过窗口结束时间的时候,就会触发窗口计算 水位线是动态生成的,根据进入窗口的最大事件时间-允许延迟时间 那么窗口的开始时间和结束时间…

力扣70爬楼梯:思路分析+优化思路+代码实现+补充思考

文章目录第一部分:题目描述第二部分:思路分析2.1 初步分析2.2 问题描述2.3 优化思路第三部分:代码实现第四部分:补充思考第一部分:题目描述 🏠 链接:70. 爬楼梯 - 力扣(LeetCode&am…

“衰老标志物”重磅综述:细胞衰老、器官衰老、衰老时钟及其应用

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 随着人口老龄化程度不断加深,实现“健康老龄化(healthy aging)”已成为我国乃至世界迫切需要解决的重大社会和科学问题。据测算,我国60岁及…

LVGL界面开发之模拟器环境搭建

前言 通常我们在使用 LVGL 进行界面开发时,会先在PC上搭建模拟器环境,而不是直接烧录到硬件板子上,使用模拟器是百利而无一害的,而且它是跨平台的,任何Windows,Linux或macOS系统都可以运行PC模拟器。每当界…

网上投票系统的设计与实现(论文+源码)_kaic

摘要 随着全球Internet的迅猛发展和计算机应用的普及,特别是近几年无线网络的广阔覆盖以及无线终端设备的爆炸式增长,使得人们能够随时随地的访问网络,以获取最新信息、参与网络活动、和他人在线互动。为了能及时地了解民情民意,把…

【高项】项目风险管理与采购管理(十大管理)

【高项】项目风险管理与采购管理(十大管理) 文章目录1、风险管理1.1 什么是风险管理?1.2 规划风险管理 & 识别风险(规划)1.3 实施定性风险分析(规划)1.4 实施定量风险分析(规划&…

分布式缓存之Redis(持久化、主从、哨兵、分片集群)

更多内容请参考官网:https://redis.io/Redis持久化Redis有两种持久化方案:RDB持久化和AOF持久化。RDB持久化RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有…

HTML5 表单属性

文章目录HTML5 表单属性HTML5 新的表单属性\<form> / \<input> autocomplete 属性\<form> novalidate 属性\<input> autofocus 属性\<input> form 属性\<input> formaction 属性\<input> formenctype 属性\<input> formmethod…

批量给TXT文档插入带标题合成图片-Chatgpt生成TXT文档配图神器

1、我们用《Chatgpt 3.5-turbo软件》批量生成txt文档&#xff0c;但是这样txt文档里不带图片&#xff0c;直接发布到网站上&#xff0c;光有文字没有图片&#xff0c;效果也不是很理想&#xff0c;就需要一款配图软件。 2、提高文章的可读性和吸引力&#xff1a;插入图片可以丰…

Mybatis(四):自定义映射resultMap

自定义映射resultMap前言一、处理字段和属性的映射关系问题&#xff1a;方案一&#xff1a;使用别名方案二&#xff1a;在mybatis-config.xml中设置mapUnderscoreToCamelCase方案三&#xff1a;在映射文件中设置redultMap二、多对一映射处理问题&#xff1a;方案一&#xff1a;…

Windows10系统安装Redis教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、下载Redis二、安装或解压三、基本配置设置四、启动四、Redis详细配置前言 由于工作中的项目需要用到Redis&#xff0c;那么记录一下Windows11系统安装Redis…

微服务学习-SpringCloud -Nacos (服务注册源码学习)

文章目录源码版本及下载服务注册核心流程图&#xff08;看不清请双击打开大图&#xff09;源码详解客户端注册源码服务端注册源码源码版本及下载 此次源码版本为1.4.1&#xff0c;2.x版本在服务请求时使用了grpc的方式&#xff0c;所以先以1.4.1版本学习&#xff0c;后续再看2…

uni-app--》如何实现网上购物小程序(中上)?

&#x1f3cd;️作者简介&#xff1a;大家好&#xff0c;我是亦世凡华、渴望知识储备自己的一名在校大学生 &#x1f6f5;个人主页&#xff1a;亦世凡华、 &#x1f6fa;系列专栏&#xff1a;uni-app &#x1f6b2;座右铭&#xff1a;人生亦可燃烧&#xff0c;亦可腐败&#xf…

Jenkins终极部署详细版

&#xff08;一&#xff09;首先你需要配置好虚拟机的JDK环境和Maven环境 1、配置JDK环境 &#xff08;1&#xff09;上传安装包&#xff0c;然后解压 &#xff08;2&#xff09;修改Linux环境变量 具体参考&#xff1a; https://blog.csdn.net/u010227042/article/details/1…

腾讯云轻量应用服务器可以修改镜像,但有限制!

腾讯云轻量应用服务器镜像可以更换或修改吗&#xff1f;可以&#xff01;镜像可以修改&#xff0c;镜像是指轻量服务器的预装操作系统&#xff0c;轻量服务器创建成功后镜像也是可以更换的&#xff0c;如下图&#xff1a; 腾讯云轻量应用服务器镜像可以修改 目录 轻量服务器修…

自适应模糊PID控制算法

一、自适应模糊PID控制 自适应模糊PID控制将模糊控制与传统PID控制相结合&#xff0c;将两种控制方式进行结合&#xff0c;取长补短&#xff0c;对传统的算法进行优化&#xff0c;形成一种新的控制算法&#xff0c;自适应模糊PID控制可以用于很多场景&#xff0c;比如温度控制&…

stm32下载代码到单片机上需要调节BOOT为什么模式

一、BOOT模式选择图解 二、BOOT模式介绍 所谓启动&#xff0c;一般来说就是指下好程序后&#xff0c;重启芯片时&#xff0c;SYSCLK的第4个上升沿&#xff0c;BOOT引脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态&#xff0c;来选择在复位后的启动模式。 A. Mai…