CPU的功能和基本结构

CPU的功能和基本结构
CPU的功能
CPU的基本结构
指令控制
操作控制
时间控制
数据加工

CPU的功能

在这里插入图片描述

  1. 指令控制: 完成取指令、分析指令和执行指令的操作,即程序的顺序控制。
  2. 操作控制:一条指令的功能往往是由若干操作信号的组合来实现的。CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。
  3. 时间控制: 对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号。
  4. 数据加工: 对数据进行算术和逻辑运算。

CPU的基本结构

透明性
用户可见的寄存器 (对用户不透明,用户可编程) : PSW.ACC,Ri.PC
用户不可见的寄存器 (对用户透明,用户不可编程) : SR,T,MAR,MDR,IR

控制信号
在这里插入图片描述

使用多路选择器根据控制信号选择一路输出
在这里插入图片描述

使用三态门可以控制每一路是否输出

运算器
在这里插入图片描述

  1. 算术逻辑单元ALU: 主要功能是进行算术/逻辑运算。
  2. 通用寄存器组Ri: 用于存放操作数 (包括源操作数、目的操作数及中间结果) 和各种地址信息等。SP 是堆栈指针,用于指示栈顶的地址。
  3. 暂存寄存器T。用于暂存从主存读来的数据,该数据不能存放在通用寄存器中,否则会破坏其原有内容。暂存寄存器对应用程序员是透明的
  4. 累加寄存器ACC。它是一个通用寄存器,用于暂时存放 ALU运算的结果信息,可以作为加法运算的一个输入端
  5. 程序状态字寄存器PSW。保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标志 (OF) 、符号标志 (SF) 、零标志 (ZF) 、进位标志 (CF) 等。PSW中的这些位参与并决定微操作的形成。
  6. 移位器SR。对操作数或运算结果进行移位运算。
  7. 计数器。控制乘除运算的操作步数

在这里插入图片描述

  1. 程序计数器: 用于指出下一条指令在主存中的存放地址。CPU 根据 PC 的内容去主存中取指令。因程序中指令(通常)是顺序执行的,所以PC 有自增功能
  2. 指令寄存器: 用于保存当前正在执行的那条指令

在这里插入图片描述

  1. 程序计数器: 用于指出下一条指令在主存中的存放地址。CPU 根据 PC 的内容去主存中取指令。因程序中指令(通常)是顺序执行的,所以PC 有自增功能。
  2. 指令寄存器: 用于保存当前正在执行的那条指令
  3. 指令译码器:仅对操作码字段进行译码,向控制器提供特定的操作信号
  4. 时序系统: 用于产生各种时序信号,它们都由统一时钟(CLOCK) 分频得到
  5. 微操作信号发生器: 根据IR的内容 (指令) 、PSW的内容 (状态信息) 及时序信号,产生控制整个计算机系统所需的各种控制信号,其结构有组合逻辑型和存储逻辑型两种,
  6. 存储器地址寄存器: 用于存放要访问的主存单元的地址
  7. 存储器数据寄存器:用于存放向主存写入的信息或从主存读出的信息。

在这里插入图片描述

指令执行过程

指令执行过程
指令周期的概念
指令执行方案
数据流
指令周期
时钟周期
机器周期

指令周期概念

关于周期
时钟周期: (节拍,T周期,CPU时钟周期)
机器周期:(CPU周期)
指令周期: CPU 从主存中取出并执行一条指令的时间称为指令周期,不同指令的指令周期可能不同
在这里插入图片描述

指令的不确定性
时钟周期数不同,每个机器周期内的节拍数也可能不同
常见类型的指令
在这里插入图片描述

指令执行方案

单指令周期
每个指令时间可能不同,但是在单指令周期下,所有指令选用相同的执行时间,指令间串行
在这里插入图片描述

优点: 结构、设计简单
缺点:对于原本很短时间的指令,要在较长的时间来完成,显然会降低整个系统的运行速度

多指令周期
不同类型指令选用不同的执行步骤,指令间串行
在这里插入图片描述

优点: 不再要求所有的指令占用相同的执行时间
缺点: 执行指令的设计更加复杂

流水线方案
隔一段时间启动一条指令,多条指令位于不同阶段,同时运行
在这里插入图片描述

优点: 不再要求所有的指令占用相同的执行时间
缺点: 执行指令的设计更加复杂

指令数据流

取周期数据流

在这里插入图片描述

  1. PC 1 MAR 2 地址总线3主存
  2. CU发出控制信号 4 控制总线 5 主存
  3. 主存 6 固数据总线 7 MDR 8 IR (存放指令)
  4. CU 发出读命令 9 PC 内容加1。
析指周期数据流

在这里插入图片描述

  1. Ad(IR)(或MDR) 1 MAR 2 地址总线 3 主存
  2. CU 发出读命令 4 控制总线 5 主存
  3. 主存 6 数据总线 7 MDR (存放有效地址)其中,Ad(IR)表示取出IR中存放的指令字的地址字段
执行周期数据流

各条指令的执行周期不同

中断周期数据流

在这里插入图片描述

  1. CU控制将 SP减 1 ,SPDMAR 2 地址总线 3 主存
  2. CU发出写命令 4 控制总线 5 主存
  3. PC 6 MDR 7 数据总线 8 主存 (程序断点存入主存)
  4. CU (中断服务程序的入口地址) 9 PC

数据通路的功能和基本结构

数据通路的功能和基本结构
数据通路的功能
数据通路的结构
单总线
三总线
专用数据通路

数据通路的功能

数据通路
数据在功能部件之间传送的路径称为数据通路
路径上的部件称为数据通路部件,如 ALU、通用寄存器、状态寄存器、异常和中断处理逻辑等
数据通路中专门进行数据运算的部件称为执行部件或功能部件。
数据通路功能
数据通路的功能是实现CPU内部的运算器与寄存器及寄存器之间的数据交换。
在这里插入图片描述

数据通路的结构

单总线

CPU内部单总线方式
将所有寄存器的输入端和输出端都连接到一条公共通路上,这种结构比较简单,但数据传输存在较多的冲突现象性能较低。连接各部件的总线只有一条时,称为单总线结构:CPU中有两条或更多的总线时,构成双总线结构或多总线结构
在这里插入图片描述

专用数据通路方式
根据指令执行过程中的数据和地址的流动方向安排连接线路,避免使用共享的总线,性能较高,但硬件量大。
在这里插入图片描述

内部总线
同一部件,如 CPU 内部连接各寄存器及运算部件之间的总线
系统总线
系统总线是指同一台计算机系统的各部件,如CPU、内存、通道和各类 /O接口间互相连接的总线
外部总线
外部总线是指各台计算机之间相互通信的总线

寄存器之间的数据传送
把PC 内容送至 MAR,实现传送操作的流程及控制信号为
(PC)->Bus   PCout 有效,PC 内容送总线

Bus->MAR   MARin 看效,总线内容送 MAR
主存与 CPU 之间的数据传送
CPU从主存读取指令为例说明数据在数据通路中的传送过程

(PC)->Bus->MAR   PCout 和 MARin 有效,现行指令地址->MAR
1->R   CU发读命令
MEM(MAR)->MDR  
(MDR)->Bus->IR   MDRout 和 IRin有效,现行指令->IR

执行算术运算和逻辑运算
Ad(IR)->Bus->MAR   MDRout 和 MARin 有效
1->R   CU 发读命令
MEM(MAR)->数据线->MDR   操作数从存储器->数据线->MDR
MDR->Bus->Y   MDRout 和 Yin 有效,操作数->Y
(ACC)+(Y)->Z   ACCout和ALUin有效,CU发出加命令结果->Z
Z->ACC   Zout和ACCin有效,结果ACC
在这里插入图片描述

相关文章

使用Go Validator在Go应用中有效验证数据

Go Validator是一个开源的包,为Go结构体提供强大且易于使用的数据验证功能。该库允许开发者为其数据结构定义自定义验证规则,并确保传入的数据满足指定的条件。Go Validator支持内置验证器、自定义验证器,甚至允许您链式多个验证规则以满足更复杂的数据验证需求。如果内置验证器无法满足您的需求,您可以通过定义自己的验证函数来创建自定义验证器。这个功能允许您实现特定于应用程序需求的验证逻辑。

Kafka常见生产问题详解

比如,在原有Topic下,可以调整Producer的分区策略,让Producer将后续的消息更多的发送到新增的Partition里,这样可以让各个Partition上的消息能够趋于平衡。思路是可行的,但是重试的次数,发送消息的数量等都是需要考虑的问题。PageCache缓存中的消息是断电即丢失的。因为如果业务逻辑异步进行,而消费者已经同步提交了Offset,那么如果业务逻辑执行过程中出现了异常,失败了,那么Broker端已经接收到了消费者的应答,后续就不会再重新推送消息,这样就造成了业务层面的消息丢失。

Zookeeper分布式队列实战

ZooKeeper实现队列步骤1.创建队列根节点:在Zookeeper中创建一个持久节点,用作队列的根节点。所有队列元素的节点将放在这个根节点下。2.实现入队操作:当需要将一个元素添加到队列时,可以在队列的根节点下创建一个临时有序节点。节点的数据可以包含队列元素的信息。3.实现出队操作:当需要从队列中取出一个元素时,先获取根节点下的所有子节点。再找到具有最小序号的子节点,获取该节点的数据,删除该节点,然后返回节点的数据。

Web 安全之点击劫持(Clickjacking)攻击详解

点击劫持(Clickjacking)攻击,又称为界面伪装攻击,是一种利用视觉欺骗手段进行攻击的方式。攻击者通过技术手段欺骗用户点击本没有打算点击的位置,当用户在被攻击者攻击的页面上进行操作时,实际点击结果被劫持,从而被攻击者利用。这种攻击方式利用了用户对网站的信任,通过覆盖层(通常是透明的iframe)覆盖在另一个网页之上,使受害者无法察觉。

SpringBoot:详解Bean生命周期和作用域

前面我们讲诉了将Bean正确地装配到IoC容器,却未讲诉IoC如何装配和销毁Bean。本篇文章主要讲诉一下Bean的生命周期和作用域。以上就是Bean生命周期和作用域的讲解。

为什么ChatGPT选择了SSE,而不是WebSocket?

WebSocket是一种网络通信协议,它最早被提出来是为了解决HTTP连接的一大限制:HTTP协议中,一个客户端发送给服务端的请求必须由服务端返回一个响应,这使得服务端无法主动向客户端推送数据。客户端通过发送一个特殊的HTTP请求向服务器请求建立WebSocket连接。这个请求类似于:GET /chat HTTP/1.1 Upgrade: websocket Connection: Upgrade服务器响应这个请求,确认建立WebSocket连接。

【AI】人工智能复兴的推进器之神经网络

神经网络是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。神经网络由大量节点(或神经元)相互关联构成,每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这可以看作人工神经元的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。此外,根据网络的结构和运行方式,神经网络可以分为前馈神经网络和反馈神经网络。

正向代理与反向代理的区别

正向代理(Forward Proxy)和反向代理(Reverse Proxy)都是代理服务器的两种形式,它们在网络中扮演着不同的角色,并具有不同的应用场景。

RPC简介和grpc的使用

调用客户端句柄,执行传递参数。调用本地系统内核发送网络消息。消息传递到远程主机,就是被调用的服务端。服务端句柄得到消息并解析消息。服务端执行被调用方法,并将执行完毕的结果返回给服务器句柄。服务器句柄返回结果,并调用远程系统内核。消息经过网络传递给客户端。客户端接受数据。

【Java 基础篇】Java TCP通信详解

本文介绍了Java中如何使用TCP协议进行网络通信,包括TCP的基础知识、TCP编程的基本步骤、创建TCP服务器和客户端、数据传输等内容。通过学习本文,您可以开始使用TCP协议来构建自己的网络应用程序,实现可靠的数据传输。希望本文能够帮助您更好地理解和应用Java中的TCP通信。

【Java 基础篇】Java网络编程:实现远程文件访问与管理

通过本文,我们深入探讨了如何使用Java实现远程文件访问与管理。我们讨论了建立与远程服务器的连接、文件上传与下载、列出远程目录、文件管理操作以及异常处理等关键方面。这些知识对于构建网络文件系统、文件共享应用程序以及需要进行远程文件操作的应用程序非常重要。希望本文对您理解和应用Java网络编程提供了有价值的信息。通过继续学习和实践,您可以更深入地探索这个领域,从而构建出更加复杂和功能丰富的网络应用程序。祝您编程愉快!

【Java 基础篇】Java网络编程:实现文件断点续传功能

断点续传是一种文件下载技术,允许用户在下载文件时,如果下载中断或失败,可以从上次中断的地方继续下载,而无需重新开始下载整个文件。这提高了下载效率,节省了时间和带宽。实现断点续传的核心思想是将文件分成多个块,然后在下载时只请求未下载的块,最后将这些块合并成完整的文件。文件断点续传是一个有用的功能,可以提高文件下载的效率并节省时间。通过合理设置Range头部请求,您可以轻松实现断点续传功能。在实际应用中,可以将这些代码封装成一个可重用的工具类,以便在多个项目中使用。

【MyBatis】:PageHelper分页插件与特殊字符处理

PageHelper插件的优点:1. 物理分页:支持常见的 12 种数据库Oracle,MySql,MariaDB,SQLite,DB2,PostgreSQL,SqlServer 等...2. 支持多种分页方式:支持常见的RowBounds(PageRowBounds),PageHelper.startPage 方法调用,Mapper 接口参数调用。3. 使用 QueryInterceptor 规范,开发插件更轻松。

【MyBatis】自定义resultMap三种映射关系

一对一关系使用associationid:id:表示自定义映射的唯一标识 type:查询的数据要映射的实体类的类型 result:设置普通字段的映射关系association设置多对一的映射关系collection property:设置映射关系中实体类中的属性名column:设置映射关系中表中的字段名最后,编写一个查询方法来使用这个 resultMap:

【SpringMVC】工作流程及入门案例

Spring MVC(Model-View-Controller)是一个基于Java的Web应用程序框架,它是Spring框架的一部分。Spring MVC提供了一个简单、灵活且强大的模型,用于构建Web应用程序,它遵循MVC设计模式。这个模式有助于将应用程序的表示层、业务逻辑层和数据访问层分离,使得开发更加模块化和易于维护。

【SpringMVC】RESTful风格CRUD实现

根据REST风格对资源进行访问称为RESTful。后期我们在进行开发的过程中,大多是都是遵从REST风格来访问我们的后台服务,所以可以说以后都是基于RESTful来进行开发的。

【SpringMVC】JSR 303与拦截器注释使用

本文介绍了JSR 303以及JSR 303配置校验后前端与后台结合使用示例。拦截器介绍以及应用场景工作流程和入门操作,最后使用拦截器完成简单的登录操作。

SpringMVC 的三种异常处理方式详解

异常处理在开发中的重要性不言而喻。通过全局异常处理,可以提高系统的可维护性、容错性和安全性,改善用户体验,方便系统监控和问题排查。在Spring MVC中,合理分类和处理应用程序异常和系统异常,使用自定义异常类和全局异常处理器,可以实现精细化的异常处理。配置SimpleMappingExceptionResolver处理器和实现HandlerExceptionResolver接口是常见的实现方式。此外,响应封装类的使用可以统一响应数据格式,简化客户端处理逻辑,提供异常处理和多语言支持,增强应用程序的可维护性

【SpringMVC】自定义注解与AOP结合使用

注解(Annotation)是Java语言的一种元数据(metadata)机制,它提供了一种在代码中添加额外信息的方式。注解可以用于标记代码的特定元素,如类、方法、字段、参数等,以便在编译时、运行时或者通过工具进行处理。注解相关类都包含在包中。自定义注解是开发者根据自己的需求创建的注解。通过自定义注解,开发者可以为代码添加特定的元数据信息,并定义相应的处理逻辑。
返回
顶部