揭秘 CPU 是如何执行计算机指令的

news2024/12/23 18:55:57

1 CPU 内部逻辑结构

之前的文章《揭秘代码是如何变成机器码的》,其中说到,如果从软件的角度来讲,CPU 就是一个执行各种计算机指令(Instruction Code)的逻辑机器

那么这个逻辑机器内部是什么样的?又是如何执行指令的呢?逻辑上,我们可以认为,CPU 其实就是由一堆寄存器组成的。如果要和硬件电路做一下对应,CPU 是一个庞大而复杂的电路,寄存器就是由多个触发器(Flip-Flop)或者锁存器(Latches)组成的简单电路。

请添加图片描述

2 寄存器

一个 CPU 里面会有很多种不同功能的寄存器,例如通用寄存器、PC 寄存器、指令寄存器、标志寄存器和其他寄存器等。。

  • 通用寄存器:所谓通用,即这些寄存器 CPU 没有特殊的用途,交给应用程序“随意”使用。通用寄存器既可以存放数据,也可以存放地址。
  • PC寄存器:也叫指令地址寄存器,用来存放下一条需要执行的计算机指令的内存地址。
  • 指令寄存器:存放当前正在执行的指令。
  • 标志寄存器:用来记录了CPU执行指令过程中的一系列状态,例如ZF是零标志,CF是进位标志。
  • 其他寄存器:比如整数寄存器、浮点数寄存器、向量寄存器和地址寄存器等

请添加图片描述

3 计算机指令执行过程

当了解了寄存器之后,你也大概能猜到 CPU 到底是如何执行计算机指令的,下面寄存器视角的计算机指令执行流程:

  1. 取指;从 PC 寄存器里找到对应的指令地址,根据指令地址从内存里把具体的指令,加载到指令寄存器中,然后把 PC 寄存器自增,以便继续执行下一条指令。
  2. 译码;识别指令的类型,对取回来的指令进行拆分和解释,识别出不同的指令类别和各种获取操作数的方法,得到具体要操作哪些寄存器、数据或者内存地址。
  3. 执行;将数据送给计算单元或者控制单元进行具体的计算和跳转。
  4. 访存;有些指令可能需要从主存加载数据。例如有些需要得到操作数在主存中的地址,并从主存中读取操作数用于计算。
  5. 写回;有些指令对寄存器或者主存状态有影响,需要将结果写入这些受影响的寄存器或者主存。

请添加图片描述

CPU 执行指令,其实是由计算机的不同组件协作完成的。

取指令的过程,是控制器通过 PC 寄存器和指令寄存器将指令从存储器中取出来的。

指令的解码过程,也是由控制器进行的。

执行指令阶段,无论是进行算术操作,还是进行数据传输,都是由运算器处理的。不过,如果只是一个简单的无条件地址跳转,这个过程是在控制器里面完成,不需要用到运算器。

访存和写回操作,都是由控制器控制完成的。

请添加图片描述

4 时钟周期、指令周期、CPU 周期

前面我们了解到 CPU 其实是由寄存器和锁存器组成,执行计算机指令的过程是“取指、译码、执行、访存、写回”,那么这个执行过程是如何做到“自动”运行的呢?这个过程中有时需要保存中间状态,这个中间状态又是怎么样保持的呢?这其中的时序协调问题又是怎么做到的呢?

其实这是依靠时序逻辑电路实现的。这个属于数字电路方面的知识,虽然学过,但是早已经还给老师了。作为计算机方面的入门,我们最需要关心的是的三种周期,对于后续了解流水线原理是有帮助的。

时钟周期是处理器执行动作的最小时间单位。谈到 CPU,我们经常会提到主频,主频越高,速度越快。CPU 主频通常以 GHz 为单位,表示的是 CPU 中计时单元每秒震荡的次数,时钟周期就是每次震荡消耗的时间,所以有时也称为震荡周期。例如,如果计算机的时钟频率为 1 GHz(1,000,000,000 次/秒),那么每个时钟周期的持续时间就是 1 纳秒(1/1,000,000,000 秒)。

指令周期是计算机处理器执行一条指令的全过程,包括从内存中读取指令、解码指令、执行指令等几个步骤。一个指令周期通常由几个机器周期组成,具体取决于指令的复杂性和处理器的设计。

CPU 内部的操作速度很快,但是访问内存的速度却要慢很多。每一条指令都需要从内存里面加载而来,所以我们一般把从内存里面读取一条指令的最短时间,称为 CPU 周期(机器周期)。
请添加图片描述

5 建立数据通路

当知道了计算机指令执行过程,也知道了时钟信号如何实现的,时钟信号其实是实现了“自动”执行,现在来看整个过程中各个部件是如何协同工作的。

  1. 程序计数器(PC 寄存器)指向指令所在的存储单元 。

  2. 其后连接一个译码器,译码器连着 D 触发器组成的内存。

  3. 自动计数器会随着时钟主频不断自增,从译码器当中,找到对应的计数器所表示的内存地址,然后读取出里面的 CPU 指令。

  4. 读取出来的 CPU 指令会通过 CPU 时钟的控制,写入到一个由 D 触发器组成的寄存器,也就是指令寄存器当中。

  5. 指令寄存器后面再跟一个译码器,用来把指令解析成操作码和对应的操作数。

  6. 当拿到对应的操作码和操作数,对应的输出线路就要连接 ALU,开始进行各种算术和逻辑运算。对应的计算结果,则会再写回到 D 触发器组成的寄存器或者内存当中。

请添加图片描述

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

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

相关文章

寥寥数笔,动画自成!阿里Tora: 首个轨迹引导的DiT创新实现精确运动控制视频生成

论文链接:https://arxiv.org/pdf/2407.21705 项目链接:https://ali-videoai.github.io/tora_video/ 亮点直击 本文引入了Tora,这是第一个轨迹导向的DiT用于视频生成。如下图2所示,Tora无缝整合了广泛的视觉和轨迹指令,…

数据挖掘实战-基于Prophet时间序列模型预测阿里巴巴股票价格趋势(文末送书)

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

【系统架构设计师】二十三、通信系统架构设计理论与实践①

目录 一、通信系统网络架构 1.1 局域网网络架构 1.1.1 单核心架构 1.1.2 双核心架构 1.1.3 环型架构 1.1.4 层次型架构 1.2 广域网网络架构 1.2.1 单核心广域网 1.2.2 双核心广域网 1.2.3 环型广域网 1.2.4 半冗余广域网 1.2.5 对等子域广域网 1.2.6 层次子域架构…

文献阅读:基于拓扑结构模型构建ICI收益诊断模型

介绍 Custom scoring based on ecological topology of gut microbiota associated with cancer immunotherapy outcome是来自法国Gustave Roussy Cancer Campus的Laurence Zitvogel实验室最近发表在cell的关于使用肠道微生物拓扑结构预测免疫治疗疗效的文章。 该研究提供基于…

html+css 实现左平移背景按钮

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 文…

【Android Studio】gradle文件、配置、版本下载、国内源(gradle版本以及gradle-plugin版本)

文章目录 AS查看gradle-plugin版本及gradle版本(图形)查看gradle-plugin版本及gradle版本(配置文件)配置文件分析解决gradle下载失败、版本错乱等问题。 AS查看gradle-plugin版本及gradle版本(图形) 查看gr…

金航标萨科微总经理宋仕强介绍金航标热售产品

金航标萨科微slkor总经理宋仕强介绍说,金航标kinghelm热售产品型号有,金航标胶壳(线对板/线对线)连接器KH-VH-2P-ZK、KH-VH-5P-ZK、KH-VH-4P-ZK、KH-A2557-2X07Y,金航标kinghelm(www.kinghelm.com.cn)的弹簧片/弹片有K…

“田野八式”与人类学的田野研究方法

作 者:赵旭东 来 源:《民族学刊》 [摘要] 笔者根据自己多年来的田野工作经验,将人类学田野研究方法总结为: 心存异趣、扎实描记、留心古旧、知微知彰、知柔知刚、神游冥想、克己宽容以及文字天下八个方面&#xff0c…

3百题英语四级听力考试练习题ACCESS\EXCEL数据库

其实一直都想搞一搞英语听力题相关的数据,但是一直都没有遇到过或者遇到过但是没办法弄下来,今天有幸遇到一个英语四级听力考试练习题,听力MP3文件包含96个,题目包含300题,具体请查看截图,截图包含了所有字…

笔记小结:《利用Python进行数据分析》之读取数据

目录 读取文本格式的数据 基本操作 指定分隔符 指定标题行 层次化索引 使用正则表达式分隔 跳过某些行 缺失值处理 逐块读取文本文件 设置显示的最大行数 只读取几行 逐块读取文件 将数据写出到文本格式 基本操作 使用其它分隔符 使用其它标记符标记空白字符串 禁…

IoTDB 入门教程 企业篇①——IoTDB企业版(TimechoDB)快速上手

文章目录 一、前文二、试用三、解压四、激活五、启动六、连接七、停止八、IoTDB-Workbench 一、前文 IoTDB入门教程——导读 二、试用 通过天谋科技官网,联系天谋科技的商务。请求免费试用TimechoDB企业版,获得试用软件包 三、解压 iotdb-enterprise…

舞蹈症宝贝的专属锻炼秘籍来啦~✨

嘿宝贝们!👋 是不是有时候觉得身体里的“小舞蹈家”总想出来蹦跶两下,但又怕锻炼不当反而“跳”出问题?别怕,今天就给你种草一套超萌又超有效的舞蹈症患者锻炼大法!🎉 🌟【热身小妖精…

《Milvus Cloud向量数据库指南》——音频数据如何选择合适的 Embedding 模型?

音频数据:PANNs与音频搜索的深度探索 在数字化时代,音频数据作为信息传递的重要载体,其处理与分析技术日益受到关注。与图像搜索领域的“以图搜图”相类似,音频搜索技术也逐步成熟,允许用户基于输入的音频片段快速定位到相似或相关的音频内容。这一技术的实现,离不开强大…

苹果已明确允许 iPhone 和 iPad 上使用 PC 模拟器

苹果公司更新了其应用程序审核指南,允许 PC 模拟器提供 游戏下载,此举可能会改善应用程序商店中模拟器的状况。自苹果公司修订《应用程序审核指南》,允许模拟器进入 App Store 以来已经过去了三个月。虽然已经有很多模拟器被引入商店&#xf…

Python接口自动化测试数据提取分析:Jmespath

1、引言 在处理JSON数据时,我们常常需要提取、筛选或者变换数据。手动编写这些操作的代码不仅繁琐,而且容易出错。Python作为一个功能强大的编程语言,拥有丰富的库和工具来处理这些数据。今天,将介绍一个实用的Python库——JMESP…

SqlLite性能问题

sqlLite性能 最近使用sqlLite做了一些项目工具,对sqlLite的性能大概有了一个比较浅显的了解,在这里分析一下,希望能作为大家做技术选型的参考。 首先是写能力,sqlLite是一个单文件数据库,再加上锁问题,sqlL…

Postman:API开发与测试的强大伴侣

在当今的数字化时代,API(应用程序编程接口)已成为不同软件系统之间通信的桥梁,它们如同数字世界的“翻译官”,使得数据和服务能够在不同的平台和应用程序之间无缝流动。然而,API的开发、测试和维护并非易事…

大数据-62 Kafka 高级特性 主题 kafka-topics相关操作参数 KafkaAdminClient 偏移量管理

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

内网穿透的应用-Windows系统如何ssh连接群晖nas使用docker安装内网穿透软件

文章目录 前言1. 检查安装Container Manager2. 检查开启群晖SSH连接3. Windows SSH 连接群晖4. 下载Cpolar 镜像5. 群晖Docker安装Cpolar 前言 在某些群晖NAS型号版本,无法使用套件安装的时候,我们可以采用Docker的方式进行安装cpolar内网穿透工具&…