计算机组成原理 — CPU 的结构和功能

CPU 的结构和功能

  • CPU 的结构和功能
    • CPU 概述
      • 控制器概述
      • CPU 框架图
      • CPU 寄存器
      • 控制单元 CU
    • 指令周期
      • 概述
      • 指令周期的数据流
    • 指令流水
      • 概述
      • 指令流水的原理
      • 影响流水线性能的因素
      • 流水线的性能
      • 流水线的多发技术
      • 流水线结构
    • 中断系统
      • 概述
      • 中断请求标记和中断判优逻辑
        • 中断请求标记 INTR
        • 中断判优逻辑
      • 中断服务程序入口地址查询
        • 硬件向量法
        • 软件查询法
      • 中断响应
          • 响应中断的条件
      • 保护现场和恢复现场
      • 多重中断
        • 概述
        • 实现多重中断的条件
        • 屏蔽技术和屏蔽字
        • 多重中断的断点保护


大家好呀!我是小笙,本章我主要分享计算机组成原理的 CPU 的结构和功能知识,希望内容对你有所帮助!

CPU 的结构和功能

CPU 概述

CPU实质包括运算器和控制器两大部分(运算器的功能上述已经介绍:实现算术运算以及逻辑运算),以控制器的功能为重点来讲述

控制器概述

控制器负责协调并控制计算机各部件执行过程的指令序列,其基本功能是取指令、分析指令和执行指令

  • 取指令
  • 分析指令
  • 执行指令。发出各种操作命令
  • 控制程序输入以及结果的输出
  • 总线管理
  • 处理异常情况和特殊情况

CPU 框架图

  • 寄存器用于存储当前指令的地址
  • 控制器 CU 用于控制指令(获取分析以及执行)
  • 运算器 ALU 用于完成算术运算以及逻辑运算
  • 中断系统主要用于处理异常的情况以及特殊的请求

CPU 寄存器

用户可见寄存器(通常CPU执行机器语言访问的寄存器为用户可见寄存器)

  • 通用寄存器

    通用寄存器可由程序设计者指定许多功能,可用于存放操作数,也可作为满足某种寻址方式所需的寄存器

  • 数据寄存器

    存放操作数(满足各种数据类型)

  • 地址寄存器

    存放地址,也可以用于特殊的寻址方式 段取值 栈指针

  • 条件码寄存器

    存放条件码,可作程序分支的依据 如:正、负、零、溢出以及进位等

控制和状态寄存器(一类寄存器用于控制CPU的操作或运算)

  • 控制寄存器

    PC -> MAR -> M -> MDR -> IR (除 PC 外,其他用户均不可见)

  • 状态寄存器

    PSW 寄存器 (存放程序状态字)

控制单元 CU

CU 产生全部指令的微操作命令序列

  • 组合逻辑设计方法,为硬连线逻辑
  • 微程序设计方法,为存储逻辑

指令周期

概述

指令周期:CPU 取出并执行一条指令所需要的全部时间

完成一条指令普遍需要:

  • 取指、分析(取指周期)
  • 执行 (执行周期)

每条指令的指令周期不同

image-20240114165421391

带有中断周期的指令周期(复杂)

指令周期流程:取值 -> 间接 -> 执行 -> 中断

image-20240114165642282

CPU的工作周期包括四个周期,分别是取值周期 - 间址周期 - 执行周期 - 中断周期,为了区别它们,在CPU内可设置4个标志触发器(状态 1 表示有效)

指令周期的数据流

  1. 取指周期数据流

    image-20240114225644256
  2. 间址周期数据流

    前提:取指周期结束,CU 便检查 IR 中的内容,以确定其是否有间址操作,如果需要间址操作,则 MDR 中指示形式地址的右 N 位将被送到 MAR

    image-20240114225828240
  3. 执行周期数据流

    差异较多,下面章节详解

  4. 中断周期数据流

    CPU 进入中断周期要完成一系列操作,其中 PC 当前的内容必须保存起来,以待执行完中断服务程序后可以准确返回到该程序的间断处

    image-20240114230108919

指令流水

概述

如何提高机器速度?

  • 提高访存速度 (高速芯片、Cache等)
  • 提高 I/O 和主机之间的传送速度(中断、DMA、通道、I/O处理机等)
  • 提高运算器速度(高速芯片、改进算法、快速进位链等)
  • 提高整机处理能力(高速器件、改进系统结构,开发系统的并行性等) 本章重点

系统的并行性概念

  • 并发:两个或两个以上的事件在同一时间段发生
  • 同时:两个或两个以上的事件在同一时刻发生(流水线方式)

并行性的等级

  • 过程级(程序、进程) 粗粒度 软件实现
  • 指令级(指令之间、指令内部) 细粒度 硬件实现

指令流水的原理

指令的串行执行

取指令 取指令部件 ;执行指令 执行指令部件

image-20240120110314920

指令的二级流水

取指和执行阶段事件上完全重叠,指令周期减半,速度提高一倍

image-20240120111244761

影响指令流水效率加倍的因素

  • 执行时间 > 取指时间

    取指令部件 ——> 指令部件缓冲区 ——> 执行指令部件

  • 条件转移指令对指令流水的影响

    必须等上条指令执行结束,才能确定下条指令的地址造成时间的损失

指令的六级流水

image-20240120112103810

影响流水线性能的因素

  • 结构相关 不同指令争用同一功能部件产生资源冲突

    解决方法:停顿、指令存储器和数据存储器分开、指令预取技术(适用于访存周期短的情况)

  • 数据相关 不同指令因重叠操作,可能改变操作数的读/写 访问顺序

    解决办法:后推法(类似停顿)、采用旁路技术(不需要等待计算结果并写入到寄存器再读取,可以等计算出结果则可以读取该数据)

    • 写后读相关(RAW)

      需要读取到写之后的寄存器里的数据

      image-20240120114140091
    • 读后写相关(WAR)

      需要读取到写之前的寄存器的数据

    • 写后写相关(WAW)

  • 控制相关 有指令转移引起(类似于条件判断)

    image-20240120115326662

流水线的性能

  • 吞吐率

    单位时间内流水线所完成指令或者输出结果的数量

    对于m段的指令流水线而言,若各段的时间均为 △t 的情况

    • 最大吞吐率

    • 实际吞吐率

      连续处理 n 条指令的吞吐率

      image-20240120115723738
  • 加速比 Sp

    m 段的流水线的速度与等功能的非流水线的速度之比

    • 设流水线隔断时间为 △t ,完成 n 条指令在 m 段流水线共需时间

      image-20240120120043130

    • 完成 n 条指令在等效的非流水线上的共需要时间

      T = nm* △t

    • 因此加速度比 Sp 求得如下

      image-20240120120107104
  • 效率

    流水线中各功能段的利用率

    效率 = 流水线各段处于工作时间的时空区 / 流水段中各段总的时空区

    image-20240120120721200 image-20240120120520171

流水线的多发技术

image-20240120121412826
  • 超标量技术

    • 每个时钟周期内可 并发多条独立指令:配置多个功能部件
    • 不能调整指令的执行顺序:通过编译优化技术,把可并行执行的指令搭配起来
  • 超流水线技术

    在同一个时钟周期内再分段,但是依旧不能调整指令的执行顺序

  • 超长指令字技术

    由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字(可达几百位)

流水线结构

  • 指令流水线结构

    完成一条指令分成6段,每段需要一个时钟周期,并且每个段之间需要加上锁存(用于保存前面流水段的操作结果以及为下面的流水提供操作数据等功能)

  • 运算流水线

    完成浮点加减法运算可分为 对阶、尾数求和、规格化三段

    image-20240120122421698

中断系统

概述

引起中断的各种因素

  • 人为设置的各种因素,如:转管指令(通常出现在流水线处理器的上下文中,它们是用来控制流水线操作的一组指令)

    image-20240127110222536
  • 程序性事故,如溢出、操作码等由于程序设计不周导致的

  • 硬件故障,如电源掉电

  • I/O设备(I/O设备被启动以后,一旦准备就绪,便向CPU发出中断请求)

  • 外部事件,如键盘中断现行程序


中断请求标记和中断判优逻辑

中断请求标记 INTR

各中断源如何向 CPU 提出请求?

一个请求源对应一个中断请求标志触发器,如果有多个中断请求标记,将会组成中断请求标记寄存器,如下图

中断请求标记触发器有的是集中在 CPU 的中断系统内,也有的是分散在各个中断源的接口电路中

image-20240127112302902

中断请求触发器越多,说明计算机处理中断的能力越强


中断判优逻辑

各中断源如果同时向 CPU 提出请求怎么办?

  • 硬件实现(排队器)

    • 分散在各个中断源的接口电路中 (链式排队器)

    • 集中在 CPU 内部

      image-20240127113328565
  • 软件实现 (程序查询)

    编写代码实现查询中断服务程序

    image-20240127113850201

中断服务程序入口地址查询

如何寻找中断服务执行入口地址?

通常有两种方法寻找入口地址:硬件向量法和软件查询法

硬件向量法
  1. 输入:排队器的输出 ;输出:中断向量地址

    image-20240127114327506

  2. 通过输出的向量地址,再如下的中断向量地址表里去查询中断服务程序入口地址

    image-20240127114442285
软件查询法
  • 用软件寻找中断服务程序入口地址的方法称为软件查询法,框图类似中断判优逻辑的软件实现
  • 相比于硬件向量法,软件查询查询时间长,但是方便用户使用更加灵活

中断响应

CPU 在什么情况下以各种方式来响应中断?

响应中断的条件
  • 响应中断条件:允许中断触发器 EINT = 1

  • 响应中断的时间:指令执行周期结束时刻由 CPU 发出查询条件

    image-20240127115908258
  • 中断隐指令

    所谓中断隐指令,即在机器指令系统中没有的指令,它是CPU在中断周期内由硬件自动完成的一条指令

    • 保存程序断点:断点存于特定地址内 ; 断点进栈

    • 寻找服务程序入口地址(如上)

    • 硬件关中断(防止其他优先级低的中断请求打断当前的中断)

      image-20240128114828345

保护现场和恢复现场

保护现场和恢复现场是CPU在中断处理过程中采取的操作,通常用于单片机和嵌入式系统

如何保护现场?

  • 保护断点: 中断隐指令完成如上
  • 保护CPU内部各寄存器内容: 中断服务程序完成

中断服务程序的四个步骤

  • 保护现场 PUSH (保存在堆栈中)
  • 其他服务程序 视不同请求源而定
  • 恢复现场 POP
  • 中断返回 IRET

如何恢复现场?

恢复现场是指在中断返回前,必须将寄存器的内容恢复到中断处理前的状态,这部分工作也由中断服务程序完成如上


多重中断

概述

当CPU正在执行某个中断服务程序时,另一个中断源又提出了新的中断请求,而CPU又响应了这个新的请求,暂时停止正在运行的服务程序,转去执行新的中断服务程序,这称为多重中断,又称中断嵌套

image-20240128120130034

实现多重中断的条件
  • 提前设置开中断指令

  • 优先级别高的中断源有权中断优先级别低的中断源

    image-20240128120734528
屏蔽技术和屏蔽字

屏蔽技术

作用:使某个中断源无法向 CPU 提出中断请求,也不能参加中断优先级排队器

触发器 D、中断请求触发器 INTR、 屏蔽触发器 MASK

如果排队器集中设在 CPU 内,加上屏蔽条件,就可组成具有屏蔽功能的排队器如下图

image-20240128122848111

屏蔽字

对应每个中断请求触发器就有一个屏蔽触发器,将所有屏蔽触发器组合在一起,便构成一个屏蔽寄存器,屏蔽寄存器的内容称为屏蔽字

image-20240128150151276

屏蔽技术可以改变改变处理优先级等级

优先级包含响应优先级和处理优先级

  • 响应优先级是指 CPU 响应各中断源请求的优先次序,这种次序往往是硬件线路已设置好的,不便于改动
  • 处理优先级是指 CPU 实际对各中断源请求的处理优先次序(如果不采用屏蔽技术,响应的优先次序就是处理的优先次序)

修改屏蔽字前后的变化

image-20240128150903024

image-20240128150748209 image-20240128150810479

新屏蔽字的设置

image-20240128151421638
多重中断的断点保护

多重中断时,每次中断出现的断点都必须保存起来

  • 断点可以保存在堆栈中,由于堆栈先进后出的特点,实现对断点的保存和恢复
  • 断点也可保存在特定的存储单元内,在中断服务程序中的开中断指令之前,必须先将 0地址单元的内容转存至其他地址单元中,才能真正保存每一个断点

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

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

相关文章

Mysql底层原理五:如何设计、用好索引

1.索引的代价 空间上的代价 时间上的代价 每次对表中的数据进⾏增、删、改操作时,都需要去修改各个B树索引。⽽且我们讲过,B树每层节点都是按照索引列的值从⼩到⼤的顺序排序⽽组成了双 向链表。不论是叶⼦节点中的记录,还是内节点中的记录&a…

设计模式实践

一、工厂模式 这里只讲简单工厂模式,详细的可以参考Java工厂模式(随笔)-CSDN博客。工厂类会根据不同的参数或条件来决定创建哪种对象,这样客户端只需要知道自己需要什么对象,而不需要关心对象的创建过程! …

Golang 开发实战day06 - Boolean Conditional

🏆个人专栏 🤺 leetcode 🧗 Leetcode Prime 🏇 Golang20天教程 🚴‍♂️ Java问题收集园地 🌴 成长感悟 欢迎大家观看,不执着于追求顶峰,只享受探索过程 Golang 教程06 - Boolean &a…

分布式锁的原子性问题

4.6 分布式锁的原子性问题 更为极端的误删逻辑说明: 线程1现在持有锁之后,在执行业务逻辑过程中,他正准备删除锁,而且已经走到了条件判断的过程中,比如他已经拿到了当前这把锁确实是属于他自己的,正准备删…

如何在CentOS安装Nexus容器无公网IP远程管理本地仓库

文章目录 1. Docker安装Nexus2. 本地访问Nexus3. Linux安装Cpolar4. 配置Nexus界面公网地址5. 远程访问 Nexus界面6. 固定Nexus公网地址7. 固定地址访问Nexus Nexus是一个仓库管理工具,用于管理和组织软件构建过程中的依赖项和构件。它与Maven密切相关,可…

数据通讯平台解决方案(Word原件获取)

1.数据通讯平台方案 1.1.系统概述 1.2.需求分析 1.3.重难点分析 1.4.重难点解决措施 2.系统架构设计 2.1.系统架构图 系统机构图 2.2.业务架构设计 (1) MQ消息服务 (2) TCP通讯服务 (3) CoAP通讯服务 (4) MQTT通讯服务 (5) 资源管理服务 2.3.主流技术架构分析 纵向设计方案 2.4…

QGraphics框架场景中图元的移除与析构

1.场景里面使用removeItem函数,这个函数官方给出如下解释 注意这个词remove只是移除,并不是delete掉,所以只是场景中(显示出来的图元)没有了,空间还是存在。 举个代码例子: void MyGraphicsV…

USACO 2024 Open Bronze铜组题解

迟到了一个月的题解...... Logical Moos: 啊这题放在铜组T1雀食有点BT...... 首先,我们关注l前第一和r最后那两组。如果这俩有一个是true,那答案肯定也是true。 否则,在l和r外边的都是false。那我们就只用仔细看l和r中间的玩意儿。对于l和…

三月以来的黄金暴涨 ,华尔街都看不懂

本轮黄金大幅上涨无法按照美联储政策逻辑解释,央行的购金需求也无法合理化金价的历史新高,而金价的大涨也与黄金ETF流出相背,推动反弹的“神秘力量”令分析师困惑不已。 黄金上涨的情况往往会出现在美联储开启降息周期后,如果市场…

Linux 之 定时任务调度器-crond(crontab)服务

Linux系列文章: Windows本地如何添加域名映射?(修改hosts文件)_本机域名映射-CSDN博客 Linux安装mysq 8.0服务端和客户端(亲测保成功)_linux安装mysql客户端-CSDN博客 linux-man命令的使用及练习_man命令执行后无法…

微服务架构下,如何通过弱依赖原则保障系统高可用?

前言 当我初次接触高可用这个概念的时候,对高可用的【少依赖原则】和【弱依赖原则】的边界感模糊,甚至有些“傻傻分不清楚”。这两个原则都关注降低模块之间的依赖关系,但它们之间的确存在某些差异。 那么,「少依赖原则」和「弱…

Windows深度学习环境----Cuda version 10.2 pytorch3d version 0.3.0

Requirements Python version 3.8.5Pytorch version: pytorch1.6.0 torchvision0.8.2 torchaudio0.7.0 cudatoolkit10.2.89pytorch3d version 0.3.0Cuda version 10.2 感觉readme文件里的不适配,跟pytorch官网不同 以前的 PyTorch 版本 |PyTorch的 # CUDA 10.2 c…

面板数据回归模型(二)房价的影响因素分析

1.数据来源 本文选择我国出一线城市房价均值、新一线城市房价均值、二线城市房价均值、货币供应量和利率。选取2002-2018年的数据,共17组数据,由于数据的自然对数变换不改变原有的协整关系,并能使其趋势线性化,消除时间序列中存在的异方差现象,所以对所有数据取其自然对数…

程序员简历程序员简历.pdf

你们在制作简历时,是不是基本只关注两件事:简历模板,还有基本信息的填写。 当你再次坐下来更新你的简历时,可能会发现自己不自觉地选择了那个“看起来最好看的模板”,填写基本信息,却没有深入思考如何使简历…

聊一下Redis实现分布式锁的8大坑

前两篇文章都在讲 Redis 的 5 大常用数据类型,以及典型的 10 大应用场景。 那么今天就来看看 Redis 实现分布式锁。 聊一聊Redis实现分布式锁的8大坑 Redis中5大常见数据类型用法 工作中Redis用的最多的10种场景 在分布式系统中,保证资源的互斥访问是…

新火种AI|拳打百度,脚踢阿里...令国产大模型危机感爆棚的kimi强势上线!

作者:小岩 编辑:冰冰 Sora大火后,生成式AI的高光时候终于轮到了国产大模型。2024年3月,Kimi智能助手在市场上掀起了一股狂热的热潮。 Kimi是由时下大火的AI初创公司——北京月之暗面科技有限公司所推出的一款智能助手&#xff…

自动化测试框架 - Unittest 学习笔记速查

文章目录 UnitTest 简介UnitTest 核心UnitTest 原理UnitTest 断言函数TestCase(用例)基本用法执行结果 TestFixture(夹具)方法级夹具类级夹具模块级夹具 TestSuite(套件)TestLoader(加载器&…

文件/目录的权限和归属

一.文件/目录的权限和归属的简要分析与概括 1.程序访问文件时的权限,取决于此程序的发起者 * 进程的发起者,同文件的属主:则应用文件属主权限 *进程的发起者,属于文件属组;则应用文件属组权限 *应用文件“其它”权…

【云贝教育】Oracle 19c OCP 083题库解析(71)

本文为云贝教育郭一军(微信:guoyJoe)原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。 71、Which two are true about an Oracle gold image-based installation in Oracle…

指尖论文靠谱不 #学习方法#媒体#职场发展

指尖论文是当前市场上一款非常实用的论文写作、查重、降重工具。许多学生、研究人员和教师都已经开始使用它,因为它相当靠谱、方便、易用且高效。 首先,指尖论文的查重功能非常强大,能够及时准确地检测出文本中的相似内容,帮助用户…