首页 > 其他分享 >CPU的指令周期

CPU的指令周期

时间:2024-12-09 15:23:00浏览次数:3  
标签:周期 Instruction 指令 指令寄存器 CPU Cycle

本文分享自天翼云开发者社区《CPU的指令周期》,作者:冯****怡

指令周期(Instruction Cycle)

CPU中会有 存器、指令寄存器、控制器等多类单元。指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计时就规定了一系列与其他硬件电路相配合的指令系统。

如果我们仔细看一看,可以发现,计算机每执行一条指令的过程,可以分解成这样几个步骤。

1.Fetch(取得指令),也就是从 PC 寄存器里找到对应的指令地址,根据指令地址从内存里把具体的指令,加载到指令寄存器中,然后把 PC 寄存器自增,好在未来执行下一条指令。

2.Decode(指令译码),也就是根据指令寄存器里面的指令,解析成要进行什么样的操作,是 R、I、J 中的哪一种指令,具体要操作哪些寄存器、数据或者内存地址。

3.Execute(执行指令),也就是实际运行对应的 R、I、J 这些特定的指令,进行算术逻辑操作、数据传输或者直接的地址跳转。

4.重复进行 1~3 的步骤。这样的步骤,其实就是一个永不停歇的“Fetch - Decode - Execute”的循环,我们把这个循环称之为指令周期(Instruction Cycle)

 

指令周期(Instruction Cycle)在这个循环过程中,不同部分其实是由计算机中的不同组件完成的。

在取指令的阶段,我们的指令是放在存储器里的,实际上,通过 PC 寄存器指令寄存器取出指令的过程,是由控制器(Control Unit)操作的。指令的解码过程,也是由控制器进行的。一旦到了执行指令阶段,无论是进行算术操作、逻辑操作的 R 型指令,还是进行数据传输、条件分支的 I 型指令,都是由算术逻辑单元(ALU)操作的,也就是由运算器处理的。

除了 Instruction Cycle 这个指令周期,在 CPU 里面我们还会提到另外两个常见的 Cycle。一个叫 Machine Cycle,机器周期或者 CPU 周期。CPU 内部的操作速度很快,但是访问内存的速度却要慢很多。每一条指令都需要从内存里面加载而来,所以我们一般把从内存里面读取一条指令的最短时间,称为 CPU 周期。

还有一个是我们之前提过的 Clock Cycle,也就是时钟周期以及我们机器的主频。一个 CPU 周期,通常会由几个时钟周期累积起来。一个 CPU 周期的时间,就是这几个 Clock Cycle 的总和。

对于一个指令周期来说,我们取出一条指令,然后执行它,至少需要两个 CPU 周期。取出指令至少需要一个 CPU 周期,执行至少也需要一个 CPU 周期,复杂的指令则需要更多的 CPU 周期。 

 

所以,我们说一个指令周期,包含多个 CPU 周期,而一个 CPU 周期包含多个时钟周期。

标签:周期,Instruction,指令,指令寄存器,CPU,Cycle
From: https://www.cnblogs.com/developer-tianyiyun/p/18595008

相关文章

  • 【Linux探索学习】第三弹——Linux的基础指令
    前言:在前面我们已经讲了有十几个Linux的基础指令及相关的知识了,今天我们再补充几个重点的基础指令,给基础指令收个尾,为下面的内容做准备目录一、date指令时间显示设定时间时间戳二、cal指令三、find指令find指令which指令whereis指令四、grep指令五、zip/unzip指......
  • MySQL版CPU使用率高的原因排查和解决方法
    使用关系数据库MySQL版时,如果您的CPU使用率很高或接近100%,会导致数据读写处理缓慢、连接缓慢、删除出现报错等,从而影响业务正常运行。问题原因CPU使用率高由多种原因导致,最常见的几种原因如下:1.慢sql:执行时间较长的SQL查询可能会占用大量的CPU资源,尤其是当查询涉及复杂......
  • 找出java进程占用cpu高的元凶
    有时候、会查看到服务器负载比较低、应用启动后、会出现java进程占用CPU极高,这种现象比较常见、以下我们分析一下1、使用top -HP15057 查看进程中的线程占用资源情况 2、由此可以看到cpu是pid:15393 线程吃掉了、所以目标锁定在15393上、执行 printf"%x\n"15393......
  • PCIe扫盲——一个典型的PCI总线周期
    PCI总线是一种地址和数据复用的总线,即地址和数据占用同一组信号线AD。PCI总线的所有信号都与时钟信号同步,及所有的信号的变化都发生在时钟的上升沿,或者在时钟上升沿进行采样。如下图所示,除了时钟信号CLK和数据地址复用信号AD之外,PCI总线至少还应包括FRAME#(用于表示一次数据传输的......
  • 视频去除马赛克codeformer【本地部署文件】需要电脑显卡或者CPU 算力
    CodeFormer是一款强大的人工智能工具,专注于图像和视频的修复和优化。它利用深度学习方法,尤其是人脸复原模型,轻松解决面部图像的修复问题,提高照片和视频的视觉质量。这款工具的工作原理如下:首先,CodeFormer通过自动编码器实现人脸的变换,包括色彩化、清晰化和去马赛克修复等......
  • RTL:指令的处理
    在RTL里,由于我将指令的分析与处理拆成了两个单元,所以指令的拆解也被分到了两个元件。由于指令的opcode部分没有重叠,所以我直接在组合逻辑里用case来区分指令opcode,在内部再根据funct3funct7等值进行区分。nemu里的指令分析用到了正则匹配,但在这里我们不需要考虑。always(*)beg......
  • 大功率台式机CPU一体式混合冷却散热器结构热设计仿真分析案例实操与理论计算
     ......
  • 鸿蒙UI开发快速入门 —— part03: 组件的生命周期
    1. 什么是组件的生命周期组件的生命周期是我们开发一个组件必须要关注的内容,组件的生命周期,指的是组件的创建、渲染、销毁等过程。因为这个过程就类似于人从出生到离世的过程,从而称为:组件的生命周期。只有了解了组件的生命周期,我们才能开发出一个流畅的用户界面。2. 页面&......
  • Chromium CDP 开发(六):注册自己的指令(下)
    引言在这一章节中,我们将详细讲解如何将新定义的TimerSend指令和TimerLog事件添加到项目的inspector_protocol_config.json文件中,从而使这些功能能够在CDP(ChromeDevToolsProtocol)中被识别并正常使用。inspector_protocol_config.json是CDP的核心配置文件之一,......
  • vue生命周期
    vue生命周期为什么会产生vue生命周期?因为有newVue(),我们使用了vue,生命周期的作用:让开发者在vue实例创建,运行,销毁的时间节点插入自己的代码,特定的时间节点就是生命周期钩子。生命周期本质就是函数。挂载流程1.beforeCreate,此时,初始化生命周期,数据代理未开始。无法通过vm访......