4。计算机组成原理(4)CPU

news2024/7/4 6:02:51

嵌入式软件开发,非科班专业必须掌握的基本计算机知识
核心知识点:数据表示和运算、存储系统、指令系统、总线系统、中央处理器、输入输出系统

CPU(中央处理器)是计算机的核心部件,它主要负责执行计算机指令,控制和协调计算机各部件的工作,是计算机的大脑。CPU通常由运算器、控制器和寄存器组成。

  1. 运算器:负责执行各种算术运算和逻辑运算。它包括ALU(算术逻辑单元)、累加器和数据缓冲器等。

  2. 控制器:负责控制指令的执行顺序,从程序计数器(PC)读取指令,并将其解码为操作码和地址码,然后发出控制信号控制计算机各部件的工作,并把执行结果写入寄存器或在内存中保存。

  3. 寄存器:是CPU内部用来暂存数据的高速存储器,包括通用寄存器、标志寄存器、程序计数器等。它们可以快速地存取和修改数据,优化了计算机的工作效率。

        在计算机系统中,CPU是最关键的组件之一,它的性能直接影响到计算机的运行速度和计算能力。同时,针对不同的应用场景和需求,也出现了许多不同类型和架构的CPU,如x86、ARM、MIPS等,它们在指令集、工作模式、功耗和性能等方面都有所不同,用户可以根据自己的需求进行选择。

一 CPU功能和结构

 CPU的功能

指令控制

控制指令的执行,即完成取指令,分析指令,执行指令的操作

操作控制

根据指令生成操作信号,并将其送入相应的部件,进而操作这些部件进行相应的动作

时间控制

对各种操作的发生加以时间上的控制

数据加工

对数据进行算数逻辑运算

中断处理

对计算机运行过程中的异常情况和特殊请求的处理

 CPU的结构组成

CU(控制器)和ALU(算术逻辑单元,运算器)的功能 

CU是Control Unit(控制器)的缩写,它是计算机系统中的指令控制器,主要负责指令的解码和执行控制。CU从存储器中读取指令,对指令进行分析和解码,并控制CPU对指令进行操作。CU利用时序信号来协调各个子系统的运行,例如ALU、寄存器组、数据通路等,以完成计算机程序的运行。

而ALU则是Arithmetic Logic Unit(算术逻辑单元)的缩写,它是计算机系统中的核心部件,主要负责数值计算和逻辑运算。ALU可以对两个二进制数进行加、减、乘、除、与、或、异或等运算,以及比较、移位、求反等逻辑运算。所有的计算机数据处理都需要经过ALU,因此它被称为计算机的“心脏”。

CU的功能

1.取出指令,并指出下一条指令在主存中的位置

2.对指令译码,产生相应的操作信号进而控制部件进行相应的动作

3.指挥并控制CPU,主存和输入输出设备之间的数据流向

ALU的功能

执行算数和逻辑运算,并执行逻辑测试

CPU中的寄存器

二 指令执行过程

指令周期,包括无条件转移指令,加法指令,乘法指令,不同的指令有不同的指令周期

 要注意,不是所有的都是直接寻址,要考虑到间接寻址的情况

——取指周期——有间接寻址吗?——N,执行周期——有中断吗?

指令周期的数据流

1)取值周期的数据流

数据流步骤

1.当前指令地址送至存储器地址寄存器,记作(PC)->MAR;

2.向主存发送读命令,启动主存做读操作,记作:1->R;

3.将MAR所指主存单元中的内容经过数据总线送入MDR,记作:M(MAR)->MDR;

4.将MDR中的指令送入IR记作:(MDR)->IR

5.形成下一条指令地址(由CU发出信号控制),记作(PC)+1->PC

2)间指周期的数据流(间指周期与PC无关)

1.将指令的地址码送入MAR,记作:Ad(IR)->MAR;

2.向主存发送读命令,启动主存做读操作,记作:1->R;

3.将MAR所指主存单元中的内容经过数据总线送入MDR,记作:M(MAR)->MDR;

4.将有效地址送至指令的地址码字段,记作:MDR->Ad(IR);

3)执行周期的数据流

不同指令执行周期操作不同,数据流多种多样,因此没有统一的数据流表示法

4)中断周期的数据流(没有指令寄存器IR),中断当前的任务,指向新的任务,完成新任务后再回来

1.将特定地址a送至MAR(假设将程序断点存入主存地址a处),记作:a->MAR;

2.向主存发送写命令,启动主存做写操作,记作:1->W;

3.将断点(PC内容)送入MDR,记作:PC->MDR;

4.将MDR的内容通过数据总线写入MAR所指示的存储单元内,记作:MDR->M(MAR);

5.将向量地址形成部件的输出送至PC,为下一条指令的取指周期做准备,记作:向量地址->PC;

三 控制器

控制器的输入输出都有哪些?

四 控制信号与数据通路(包括每个命令的运行时间和空间“从哪到哪”)

1)CPU内部采用总线方式的控制信号与数据通路(运行空间)

在计算机组成原理中,CU、IR、PC、MAR、MDR、ACC、ALU分别代表以下概念:

  1. CU(Control Unit,控制单元):控制器,负责指令的解码和执行控制。
  2. IR(Instruction Register,指令寄存器):存放当前正在执行的指令。
  3. PC(Program Counter,程序计数器):存放下一条指令的地址。
  4. MAR(Memory Address Register,内存地址寄存器):存放要访问的内存地址。
  5. MDR(Memory Data Register,内存数据寄存器):存放从内存中读取或写入的数据。
  6. ACC(Accumulator,累加器):用于存储 ALU 运算的结果,并且也可以用于存储数据。
  7. ALU(Arithmetic Logic Unit,算术逻辑单元):用于进行算术运算和逻辑运算的组件。

以上这些组件都是计算机中的重要组成部分,它们协同工作,以完成计算机程序的执行。其中,CU 通过控制时序信号来协调各个子系统的工作,IR 存储当前正在执行的指令,PC 存储下一条指令的地址,MAR 存储要访问的内存地址,MDR 存储从内存中读取或写入的数据,ACC 用于存储 ALU 运算的结果并可以存储数据,ALU 则是计算机中的核心部件,主要负责数值计算和逻辑运算。

取指周期

1.PC0与MARi有效,完成(PC)->Bus->MAR.

2.通过总线控制向主存发送读信号 1->Bus->R.

3.MDRi有效,存储器通过数据总线,完成M(MAR)->Bus->MDR.

4.MDR0和IRi有效,完成(MDR)->Bus->IR.

5.(PC)+1->PC

 

间指周期

1.MDR0和MARi有效,将形式地址送往MAR,即完成Ad(MDR)->Bus->MAR.

2.通过总线控制向主存发送读信号 1->Bus->R.

3.MDRi有效,存储器通过数据总线,完成M(MAR)->Bus->MDR.

执行周期

1.MDR0和MARi有效,将有效地址经内部总线送入MAR,即完成:(MDR)->Bus->MAR.

2.通过总线控制向主存发送读信号 1->Bus->R.

3.MDRi有效,存储器通过数据总线,完成M(MAR)->Bus->MDR.

4.MDR0和Yi有效,将操作数送至Y,即(MDR)->Bus->Y.

5.ACC0和ALUi同时有效,同时CU向ALU发"ADD"加控制信号,使ACC的内容和Y的内容相加结果送寄存器Z,即(ACC)+(Y)->Z.

6.Z0和ACCi有效,将结果存入ACC,即(Z)->Bus->ACC.

 

2)CPU内部不采用总线方式的控制信号与数据通路(运行空间)

取指周期

1.C0有效,完成(PC)->MAR.

2.C1有效,打开MAR送往地址总线的输出门。

3.通过总线控制向主存发送读命令1->R.

4.C2有效,打开数据总线送至MDR的输入门,即M(MAR)->MDR.

5.C3有效,打开MDR和IR之间的控制门,实现(MDR)->IR

6.C4有效,打开指令操作码送至CU的输出门,即:Op(IR)->CU。

7.(PC)+1->PC.

多级时序系统(运行空间)

时钟周期是最小的,而一般把访问一次存储器的时间作为机器周期,一个指令周期包括多个机器周期

组合逻辑(硬布线)控制

取指周期操作节拍安排

1.(PC)->MAR,1->R

2.  M(MAR)->MDR

3. (MDR)->IR,OP(IR)->CU,(PC)+1->PC

间指周期操作节拍安排(把指令的形式地址先取出来放到MAR中)

1.Ad(IR)->MAR,1->R

2.  M(MAR)->MDR

3. (MDR)->Ad(IR)

执行周期操作节拍安排(以加法为例)

1.Ad(IR)->MAR,1->R

2.  M(MAR)->MDR

3. (ACC)+(MDR)->ACC

中断周期操作节拍安排

1.a->MAR,1->W

2.(PC)->MDR 获取指令地址的数据

3.(MDR)->M(MAR),向量地址->PC

微程序控制

微程序控制是一种计算机指令执行方式,它将指令集的控制逻辑用一组微小的指令(称之为“微指令”)来表示,通过这些微指令来控制计算机中各个部件的运行。相比于硬连线控制电路,微程序控制具有更灵活、易于设计、易于修改和维护等优点。

在微程序控制中,CPU通过执行微指令来控制各个部件的操作。每个指令都包含了一些微操作,如存储器读取、算术运算、逻辑运算等,这些微操作被称为微命令。微程序控制器会根据指令的不同生成对应的微指令序列,并将其发送给CPU中的控制线路,以控制各个部件的操作。

使用微程序控制,可以将控制逻辑与处理器的其他部分分离开来,使处理器的设计更加模块化、易于维护和扩展。同时,由于微指令可以被编写成高级语言,并由编译器进行转换,因此微程序控制也能提高设计效率。

取指周期(注意:微指令>微操作(微命令))

1.取指周期微程序首址送入CMAR:M->CMAR

2.取微指令:CM(CMAR)->CMDR

3.产生微操作命令:第一条微指令操作控制字段中为1的各位发出控制信号,如(PC)->MAR,1->R;

4.形成下一条微指令地址:由此条微指令的顺序控制字段指出下一条微指令地址为M+1,送至CMAR,即Ad(CMDR)->CMAR.

执行周期

微指令的编码方式

直接编码方式、字段直接编码方式、字段间接编码方式、混合编码方式

不论哪种编码方式,都要留出一种状态表示不发控制信号(微命令)

微指令的编码方式通常采用二进制编码,即将微指令中的每个操作和控制信号均用二进制位来表示。这些二进制编码可以使用硬布线的方式实现,也可以存储在控制存储器(Control Memory)中。

对于一个典型的微程序控制器而言,其微指令长度通常在10~100位不等,具体长度取决于CPU所支持的操作种类和性能要求。为了节省存储空间,一些压缩编码方式可以被应用到微指令中,例如通过状态码压缩等技术来减少微指令长度。

在编写微指令时,需要定义每个微操作的二进制编码方式,以及指令格式、操作数和寻址方式等信息。这些信息可以通过微指令编写工具来进行描述和生成,例如 Microprogram Editor(微程序编辑器)等工具。此外,也可以使用高级语言来编写微指令,然后通过编译器进行转换为机器码。

微指令序列地址形成 

微指令序格式

 

五 指令流水线

指令流水线是一种通过分阶段、并行执行指令来提高计算机处理器效率的技术。在指令流水线中,每个指令被划分成多个阶段,不同阶段的指令可以并行执行,从而提高了处理器的吞吐量。指令流水线通常包含以下几个阶段:

  1. 取指阶段(IF):从存储器中读取指令,并将其送到指令译码器中进行解析。

  2. 指令译码阶段(ID):对指令进行译码,并从寄存器中读取操作数。如果有数据冒险或控制冒险,此阶段会等待前一条指令的结果。

  3. 执行阶段(EX):根据指令类型执行相应的操作,例如算术、逻辑运算等。

  4. 访存阶段(MEM):如果指令需要访问内存,则在此阶段进行读写操作。

  5. 写回阶段(WB):将执行结果保存回寄存器。

每个阶段都由专门的电路设备来完成,并且采用流水线技术实现并行处理。在指令流水线中,当一条指令进入下一个阶段时,上一条指令则进入下下一个阶段,依次类推,直到最后所有阶段都完成时,一条指令才被执行完成。

指令流水线的优点是可以提高处理器的吞吐量和运行效率,缺点是可能会因为数据冒险或其他原因导致流水线暂停或出错,并且在进行分支跳转操作时需要额外的处理。因此,设计复杂、高效的指令流水线需要考虑多种因素,并合理选择阶段数、指令设计和控制机制等参数。

含有三个功能段的指令流水线时空图

影响指令流水线效率的因素包括以下几个方面:

  1. 数据相关:指令中的操作数依赖于另一条指令未完成的结果,导致后续指令需要等待前一条指令的结果才能执行。这种情况称为数据相关,可能会导致流水线暂停、降低效率。

  2. 控制相关:指令之间存在分支、跳转等控制转移操作,需要等待条件满足后才能继续执行。这种情况称为控制相关,也可能会导致流水线暂停、降低效率。

  3. 结构相关:指令流水线的硬件结构限制了某些指令的并行度,例如浮点运算指令需要占用特定的功能部件,可能会导致其他指令无法同时执行。

  4. 数据通路延迟:不同功能部件的处理速度不同,可能会导致某些指令需要等待前一阶段的指令完成后才能被执行。

在设计指令流水线时,需要合理考虑这些因素,采用一些优化策略来提高流水线的效率。例如使用多级缓存、预测分支跳转、重排列指令流等技术来减少数据相关和控制相关的影响;使用多功能部件、流水线冒险处理等技术来减少结构相关和数据通路延迟的影响。另外,还需要合理选择流水线阶段数和指令设计等参数,以达到最佳的性能和效率。

 

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

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

相关文章

万字超详细的Java图书管理系统

💕”生命中的每个人都是一个故事,而每个故事都值得被讲述“💕 🎆作者:不能再留遗憾了🎆 🐼专栏:Java学习🐼 🚗该文章主要内容:用Java实现简单的图…

三、PEMFC基础之组件间热传导

三、PEMFC基础之组件间热传导 一、理论基础二、编程实践 一、理论基础 热传导主要基于傅里叶热传导定律。在燃料电池中,除了各组件内部的热传导外,还有冷却流体与双极板的对流换热。公式略。 燃料电池内部稳态导热: d 2 T d x 2 q i n t k…

iMazing2软件最新版本功能技术参数详细介绍

这里有iMazing 的产品概述、功能特性、技术参数等详细介绍, 可以帮助您快速入门,了解iMazing的功能。不管是 iPhone、iPad 或 iPod Touch 设备,只要使用 USB 电缆将设备连接到计算机,就可以处理不同类型的数据。 自动备份 iMazi…

【Linux】基础IO——文件描述符

目录 什么是文件描述符标准输入、输出、错误的返回值类型FILE*的理解进程中文件描述符的分配规则重定向的原理重定向的实际使用方法dup2 如何理解缓冲区 什么是文件描述符 在基础IO的上一篇博客里有提到过,系统调用open与close的返回值问题: 成功返回文…

PyQGIS中一次性加载多个shp文件

目录 遍历添加多个图层 打印图层列表清单 打开QGIS Desktop 3.22.16,点击菜单栏 【设置】——>【Python控制台】 在Python控制台中点击【显示编辑器】按钮,打开Python编辑器 点击Python编辑器的第一个按钮 【打开脚本文件】,选择加载遍历…

2023年继续使用WordPress的6个最重要原因

为什么要使用 WordPress?我的网站不够好吗?为什么我需要从另一个平台切换到 WordPress? 在本文中,我们将分享您应该使用 WordPress 的最重要原因。我们还将涵盖您可以使用 WordPress 创建的所有不同类型的网站,并展示…

c高级(常用命令及软件安装与下载)

初始工作路径不在家目录下,在不切换路径的情况下,在家目录下创建一个subdir目录,在subdir这个目录下,创建subdir1和subdir2,并且把/etc/passwd拷贝到subdir1中,把/etc/group文件拷贝到subdir2中&#xff0c…

开源趣事~ 记给 OpenHarmony 提 PR 的那些事

大家好哇,许久不见,也感谢大家这么久一直以来的关注,也感谢在短视频盛行的今天,你们还能静下心来坚守文字的阵地。 说到这次的主题,参加鸿蒙项目的开源,也是小编第一次拥抱开源,就像是别人有困…

vue脚手架+elementUI,实现登录用户时的Loading...窗口

文章目录 App.vuevuex全局变量登陆成功Login组件使用AboutMe组件中关闭 登录失败情况login组件中关闭 改为aop思想的请求拦截器 App.vue 为了全局通用控制此标签&#xff0c;所以我建议把他放到App.vue文件中 <!--全局加载ing&#xff0c;保证不会在转换组件时被销毁-->…

Day965.从持续集成到持续部署 -遗留系统现代化实战

从持续集成到持续部署 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于从持续集成到持续部署的内容。 只有做好任务分解和小步提交&#xff0c;才能放心大胆地 PUSH 代码&#xff0c;触发持续构建&#xff1b; 只有通过质量门禁&#xff0c;才能得到一个有信心的制…

【Spring MVC】Spring MVC的执行流程以及运行原理

文章目录 一、 什么是MVC&#xff1f;二、什么是SpringMVC&#xff1f;三、SpringMVC中的核心组件四、SpringMVC的执行流程五、关于DispatcherServlet的配置说明六、关于SpringMVC的配置文件以及常用部分注解解释七、参考资料 一、 什么是MVC&#xff1f; MVC 是 Model、View …

软件工程的基础

软件危机软件工程软件工程是将系统化的&#xff0c;严格约束的&#xff0c;可量化的方法应用于软件的开发&#xff0c;运行和维护&#xff0c;将工程应用于软件。 软件工程的三个要素&#xff1a;方法&#xff0c;工具&#xff0c;过程软件的生命周期&#xff0c;是指从从软…

Vue列表展示【第二篇】

&#x1f331; 1、vue列表展示案例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>vueDemo02列表展示</title> </head> <body> <div id"xy"><!--原始展示方式…

深入篇【C++】类与对象:运算符重载详解 -(下)+日期类的实现

[TOC](深入篇【C】类与对象&#xff1a;运算符重载详解-(下&#xff09;日期类的实现&#x1f4af;干货满满&#xff01;) ⏰一.运算符重载 内置类型(int /double…… )是可以之间进行运算符之间的比较的&#xff0c;因为编译器知道它们之间的比较规则&#xff0c;可以之间转…

Linux下C/C++(端口扫描技术)

随着互联网使用的不断增加&#xff0c;网络攻击也在增加。互联网本质上已经成为现代。因此&#xff0c;了解互联网和使用互联网是非常重要的。网络技术的安全性在当今时代是非常重要和必要的。 在本文中&#xff0c;我们将讨论一个非常重要的主题&#xff0c;即可能破坏计算机…

es 7.x 通过DSL的常用查询语句

一 模拟造数 1.1 模拟数据 添加数据修改数据的请求方式为post http://localhost:9200/student/_doc/101 { "name":"zhangsan", "nickname":"zhangsan","sex":"男","age":30,"createTime":…

InnoDB线程模型

新版本结构演变 MySQL 5.7 版本 将 Undo日志表空间从共享表空间 ibdata 文件中分离出来&#xff0c;可以在安装 MySQL 时由用户自行指定文件大小和数量增加了 temporary 临时表空间&#xff0c;里面存储着临时表或临时查询结果集的数据Buffer Pool 大小可以动态修改&#xff0…

2.3 利用NumPy进行统计分析

2.3 利用NumPy进行统计分析 2.3.1 读/写文件1、二进制的文件读写2、读取文本格式的数据 2.3.2 使用数组进行简单统计分析1、排序2、去重与重复数据3、常用的统计函数 2.3.1 读/写文件 NumPy文件读写主要有二进制的文件读写和文件列表形式的数据读写两种形式 1、二进制的文件读…

代码随想录算法训练营第三十六天 | 重叠区间

435. 无重叠区间 文档讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;贪心算法&#xff0c;依然是判断重叠区间 | LeetCode&#xff1a;435.无重叠区间_哔哩哔哩_bilibili 状态&#xff1a;能做出来&#xff0c;用的“补充(1)”的左边界排序&#xff0c…

SpringCloud —— eureka

目录 1.认识微服务 1.0.学习目标 1.1.单体架构 1.2.分布式架构 1.3.微服务 1.4.SpringCloud 1.5.总结 2.服务拆分和远程调用 2.1.服务拆分原则 2.2.服务拆分示例 2.2.1.导入Sql语句 2.2.2.导入demo工程 2.3.实现远程调用案例 2.3.1.案例需求&#xff1a; 2.3.2.注…