建立数据通路(一)

指令周期(Instruction Cycle)
指令种类
    1. Fetch(取得指令)
    • 也就是从PC寄存器里找到对应的指令地址,根据指令地址从内存里把具体的指令,加载到指令寄存器中
    • 然后把PC寄存器自增,好在未来执行下一条指令
    1. Decode(指令译码)
    • 也就是根据指令寄存器里面的指令,解析成要进行什么样的操作,是R、I、J中哪一种指令
    • 具体要操作哪些寄存器、数据或者内存地址
    1. Execute(执行指令)
    • 也就是实际运行对应的R、I、J这些特定的指令,进行算术逻辑操作、数据传输或者直接的地址跳转
    1. 重复进行 1 ~ 3的步骤
  • 这样的步骤,其实就是一个永不停歇的"Fetch - Decode - Execute"的循环,我们把这个循环称之为指令周期(Instruction Cycle)
    • 在这里插入图片描述
指令的布署
  • 在这里插入图片描述

  • 在上图的指令循环过程中,不同部分其实是由计算机中的不同组建完成的

  • 在取指令(Fetch)的阶段,指令是放在存储器里的

  • 实际上,通过PC寄存器和指令寄存器取出指令的过程,是由控制器(Control Unit) 操作的,指令的解码过程,也是由控制器进行的

  • 一旦到了执行指令阶段,无论是进行算术操作、逻辑操作的R型指令,还是进行数据传输、条件分支I型指令,都是由算术逻辑单元(ALU)操作,也就是由运算器处理的

  • 不过,如果是一个简单的无条件跳转,那么我们可以直接在控制器里面完成,不需要用到运算器

周期类型
  • Machine Cycle(机器周期、CPU周期)
    • CPU内部的操作速度很快,但是访问内存的速度却要慢很多
    • 每一条指令都需要从内存里面加载出来,所以一般把内存里面读取一条指令的最短时间,称为CPU周期
  • Clock Cycle(时钟周期、机器主频)
    • 一个CPU周期,通常会由几个时钟周期累积起来的
    • 一个CPU周期的时间,就是这几个Clock Cycle的总和
指令周期、机器周期、时钟周期的关系
  • 在这里插入图片描述

  • 对于一个指令周期来说,取出一条指令,然后执行它,至少需要两个CPU周期

  • 取出指令至少需要一个CPU周期,执行至少也需要CPU周期,复杂的指令则需要更多的CPU周期

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

建立数据通路
数据通路的组成(处理器单元)
  • 操作元件
    • 组合逻辑元件(Combinational Element),其实就是我们的ALU
    • 在前面讲ALU的过程中可以看到,它们的功能就是在特定的输入下,根据下面的组合电路的逻辑,生成特定的输出
  • 存储元件
    • 也叫状态元件(State Element)
    • 比如我们在计算过程中需要用到的寄存器,无论是通用寄存器还是状态寄存器,其实都是存储元件
  • 通过数据总线的方式,把它们连接起来,就可以完成数据的存储、处理和传输了,这就是所谓的建立数据通路
控制器
  • 它的逻辑就没那么复杂,可以把他看成只是机械地重复"Fetch - Decode - Execute" 循环中的前两个步骤,然后把最后一个步骤,通过控制器产生的控制信号,交给ALU去处理
  • 具体逻辑
    • 在这里插入图片描述

    • 一方面,所有CPU支持的指令,都会在控制器里面,被解析成不同的输出信号

    • 之前说过,现在的Intel CPU 支持 2000 个以上的指令,意味着,控制器输出的控制信号,至少有2000种不同的组合

    • 运算器里的ALU和各种组合逻辑电路,可以认为是一个固定功能的电路

    • 控制器"翻译"出来的,就是不同的控制信号,这些控制信号,告诉ALU去做不同的计算

    • 可以说正是控制器的存在,让我们可以“编程”来实现功能,能让我们的“存储程序型计算机”名副其实

CPU所需要的硬件电路
  • 首先,自然是之前已经讲解过的ALU了,它实际就是一个没有状态,根据输入计算输出结果的第一个电路
  • 第二,需要有一个能够进行状态读写的电路元件,也就是寄存器
    • 需要有一个电路,能够存储到上一次的计算结果
    • 这个计算结果并不一定要立刻拿到电路的下游去使用,但是可以在需要的时候拿出来用
    • 常见的能够进行状态读写的电路,就有锁存器(Latch),以及D触发器(Data / Delay Flip-flop)电路
  • 第三,需要有一个"自动"的电路,按照固定的周期,不停实现PC寄存器自增,自动地去执行"Fetch - Decode - Execute"
    • 程序执行,并不是靠人去拨动开关执行指令,希望有一个"自动"的电路,不停去一条条执行指令
    • 看似写了各种复杂的高级程序进行各种函数调用、条件跳转,其实只是修改PC寄存器里面的地址
      • PC寄存器里面的地址一修改,计算机就可以加载一条指令新指令,往下运行
      • 实际上,PC寄存器还有一个名字,就叫做程序计数器,顾名思义,就是随着时间变化,不断去数数
      • 数的数字变大了,就去执行一条新指令
      • 所以,需要的就是一个自动数数的电路
  • 第四, 需要有一个"译码"的电路
    • 无论是对于指令进行decode,还是对于拿到内存地址去获取对应的数据或者指令
    • 都需要通过一个电路找到对应的数据,这个对应的自然就是"译码器"的电路

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Apache Seata新特性支持 -- undo_log压缩

本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 Apache Seata新特性支持 – undo_log压缩 Seata新特性支持 – undo_log压缩 现状 & 痛点…

类与对像(1)

好几个月没有写了,差了好多,这些天补回来吧。 接下来,让我们正式步入C与C语言开始不同的地方。 我对类的理解:类是对于具有相同或相似属性的数据集合。 类的关键词:class,public,protected&a…

2024年加密货币市场展望:L1、L2、LSD、Web3 和 GameFi 板块的全面分析与预测

随着区块链技术的快速发展,加密货币市场在2024年继续展现出蓬勃的生机和创新的潜力。本文将深入分析L1、L2、LSD、Web3和GameFi这五大板块的发展趋势和预测,帮助投资者和爱好者更好地理解和把握市场机遇。 一、L1:基础层协议的持续进化 L1&a…

python自动化办公之cryptography加密解密

目录 用到的库 实现效果 代码部分 1、加密2024.txt文件 2、解密2024.txt文件 用到的库 cryptography 实现效果 加密文件和解密文件 代码部分 1、加密2024.txt文件 # 加密 from cryptography.fernet import Fernet # 生成加密密钥 keyFernet.generate_key() cipher_s…

K8S 部署 EFK

安装说明 系统版本为 Centos7.9 内核版本为 6.3.5-1.el7 K8S版本为 v1.26.14 ES官网 开始安装 本次安装使用官方ECK方式部署 EFK,部署的是当前的最新版本。 在 Kubernetes 集群中部署 ECK 安装自定义资源 如果能打开这个网址的话直接用这个命令安装,打不开的话…

创建一个不带框架的javaweb工程

点击新建 选择Maven,然后在Archetype里面选择 webapp选项(注意这里需要配置好Maven的环境 如果没配好Maven引入依赖的时候会引不进来) 如果Maven配置之后就会显示配置成功 然后我们要配置tomacat的依赖 jde选择默认 然后点击部署 选择工件&a…

高阶算法班从入门到精通之路课程

本课程旨在帮助学员深入理解算法与数据结构的核心概念,从而掌握高级算法设计与分析技能。每集课程内容精心设计,涵盖了常用数据结构、经典算法及其应用场景等方面的深度讲解,同时通过大量实例演练,帮助学员提升解决实际编程难题的…

2000-2022年地级市数字经济指数(含控制变量)

2000-2022年地级市数字经济指数(含控制变量) 目录 数字经济对区域经济发展的影响实证研究 一、引言 二、文献综述 三、数据来源与变量说明 四、实证模型 五、程序代码与运行结果 数字经济对区域经济发展的影响实证研究 摘要: 本文旨在…

【分布式计算框架 MapReduce】高级编程—搜索日志数据分析

目录 一、对于 sogou_500w_utf 数据,使用 MapReduce 编程模型完成对以下数据的分析任务 1. 统计 2011-12-30 日搜索记录,每个时间段的搜索次数 (1)运行截图 (2) 源代码 2. 统计 2011-12-30 日 3 点至 …

C++类与对象

1. stack声明与定义 引入构造器实现 自定义 栈大小 // constructor构造器 // 1. 与类名相同,无返回值,被系统生成对象时自动调用,用于初始化 // 2. 可以有参数,构造器的重载,默认参数,重载和默认参数不同…

2024阿里国际春招笔试

第一题 0 解题思路: 数据范围很大,肯定得找规律。 当n1时,0,1,结果为0 当n2时,00,01,10,11,结果为1 当n3时,000,001,010&a…

38 IO流

目录 C语言的输入和输出流是什么CIO流stringstream的简单介绍 1. C语言的输入与输出 C语言中我们用到的最频繁的输出方式是scanf和printf,scanf:从标准输入设备(键盘)读取数据,并将值存在变量中。printf:…

Linux 系统管理4——账号管理

一、用户账号管理 1、用户账号概述 &#xff08;1&#xff09;用户账号的常见分类&#xff1a; 1>超级用户&#xff1a;root uid0 gid0 权限最大。 2>普通用户&#xff1a;uid>500 做一般权限的系统管理&#xff0c;权限有限。 3>程序用户&#xff1a;1<uid&l…

昇思25天学习打卡营第12天 | LLM原理和实践:MindNLP ChatGLM-6B StreamChat

1. MindNLP ChatGLM-6B StreamChat 本案例基于MindNLP和ChatGLM-6B实现一个聊天应用。 ChatGLM-6B应该是国内第一个发布的可以在消费级显卡上进行推理部署的国产开源大模型&#xff0c;2023年3月就发布了。我在23年6月份的时候就在自己的笔记本电脑上部署测试过&#xff0c;当…

2024年江苏省研究生数学建模科研创新实践大赛C题气象数据高精度融合技术研究论文和代码分析

经过不懈的努力&#xff0c; 2024年江苏省研究生数学建模科研创新实践大赛C题气象数据高精度融合技术研究论文和代码已完成&#xff0c;代码为C题全部问题的代码&#xff0c;论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解&#xff08;问题1模型的建…

绝区壹--LLM的构建模块

前言 语言是人类交流的本质&#xff0c;大型语言模型 (LLM) 凭借其出色的理解和生成类似人类的文本的能力&#xff0c;彻底改变了我们与语言互动和利用语言的方式。深入研究 LLM 的构建块&#xff08;向量、标记和嵌入&#xff09;&#xff0c;揭示了使这些模型能够以前所未有…

Qt(MSVC)下报“语法错误缺少“}““语法错误缺少“常数“ 的解决办法

1.现象 目前我在工程中试图使用QHttpServer时&#xff0c;一编译&#xff0c;就报了一堆奇奇怪怪的错误&#xff1a; D:\Qt\httpServer\Qt5.15.2\include\QtHttpServer\qhttpserverrequest.h:75: error: C2143: 语法错误: 缺少“}”(在“(”的前面) D:\Qt\httpServer\Qt5.15.…

Xilinx FPGA:vivado关于fifo的一些零碎知识

一、FIFO概念 先进先出&#xff0c;是一种组织和操作数据结构的方法。在硬件应用中&#xff0c;FIFO一般由一些读写指针&#xff0c;存储和控制的逻辑组成。 二、xilinx中生成的FIFO的存储类型 &#xff08;1&#xff09;shift register FIFO : 移位寄存器FIFO&#xff0c;这…

第6章 选课学习:需求分析,添加选课,支付,支付通知,在线学习

1 模块需求分析 1.1 模块介绍 本模块实现了学生选课、下单支付、学习的整体流程。 网站的课程有免费和收费两种&#xff0c;对于免费课程学生选课后可直接学习&#xff0c;对于收费课程学生需要下单且支付成功方可选课、学习。 选课&#xff1a;是将课程加入我的课程表的过…

以黑盒与白盒的角度分析和通关xss-labs(XSS漏洞类型与总结)

目录 目录 前言 XSS漏洞的总结和梳理 1.第一关(基础palyload) 黑盒测试 白盒测试 2.第二关(闭合) 黑盒测试 白盒测试 3.第三关(字符转义) 黑盒测试 白盒测试 4.第四关(字符过滤或替换) 黑盒测试 白盒测试 5.第五关(关键词替换) 黑盒测试 白盒测试 6.第六关(…