2024王道考研计算机组成原理——中央处理器

 

CPU的运算器其实就是进行固定的数据处理,后面讲的CPU主要侧重的是它的控制器功能

 

运算器的基本结构

左右两边都是16位,因为寄存器可能位于左右两端的一边(源/目的操作数) 

A、B两端都要接一堆线

通用寄存器 + ALU都在运算器当中

从主存来的数据直接放到暂存寄存器就OK了

需要等待信号稳定了再送入/送出ALU

采用这种大家都接入总线的方式,就使得A、B两端的接线大大减少了,只有32根数据线就好了

每个通用寄存器都有输入线和输出线,用以控制数据的流入/流出

控制器的组成

小结:

 

指令的译码比取指令要快得多,因为它不需要访存是在CPU内部实现的,因此一个指令周期至少要由取指周期和执行周期2部分组成,一个指令周期又由多个时钟周期组成(参考CPU的主频),一个微操作对应的就是一个时钟周期

执行指令有可能需要访存也可能不访存

指令周期》机器周期(CPU周期)》时钟周期

间接寻址就是指针

使用触发器来保存当前CPU处于什么阶段!!!

这样使用统一的时钟部件,CPU知道自己处于指令执行的哪个阶段了,就会由于电信号1的作用去自动地做这个阶段应该做的事情

同理:我们的系统总线也通过总线控制器发出统一的时钟,这样各个设备就都知道自己当前处于什么阶段了(也就是说设备内部的电路可以选择执行相应的操作了),如果没有准备好相应的工作,就给总线控制器发送一个WAIT信号,这样CLK就会被锁存在上一个周期了,可以等你一会

指令流水线:在指令执行的不同阶段,所需要使用的部件(寄存器/内存等) 是不一样的,因此多条指令可以并行执行(把取指令、取有效地址、执行指令分开执行)

数据流向:主存《》寄存器  寄存器《》寄存器  ALU《》寄存器

图中所有的in和out控制信号都和微操作发生器有连线

采用单总线结构同时只允许2个部件之间进行数据交换 

专用数据通路:在两个寄存器之间单独建立一个通路

PCin IRout这些信号都是由CU发出的

地址信息准备完成之后应当撤销刚刚的2个控制信号让总线空闲

PC+"1"可以单独设置一个加法器啊😎,这样不就是自动+"1"吗???

专用数据通路练习题: 

2) (PC) -> MAR    M(MAR) -> MDR   MDR -> IR

专用数据通路意味着可能有多个输入/输出信号到达,所以需要使用多路选择器MUX或者三态门来控制放行哪一路信号(根据信号控制器的信号来决定)

5.4.1 硬布线控制器的设计

一条微指令(T0)又有可能由一个/几个微命令组成,每发出一个微命令就执行一个微操作

如果控制单元EU采用硬布线方式来设计,这种控制器就叫做硬布线控制器

根据FE、IND、EX、INT来判断此时处于指令周期的哪个机器周期

节拍发生器其实就是一个循环,它从0数到N你这个机器周期就结束了,他也不知道是哪个机器周期也无须知道!!!

一旦你FE信号接通之后,CLK就开始打节拍,FE+T0就会控制电路执行第一个微操作

其实就和你做眼保健操一样的,广播先喊第几节,比如:第一节按揉耳垂眼穴,脚趾抓地,你就知道该做第一节了,然后它再喊12345678 22345678...每个节拍你就会执行这一节的相关动作了!!

PSW标志位等信息可能会影响到接下来的微操作序列的执行流

5.4.2 微程序控制器的设计

每条指令对应一段微程序,它由一系列微指令组成

操作控制:这条微指令对应哪几种微操作(比如:1->R 1->W PCout MDRin) 

顺序控制:下一条微指令所在地址

顺序逻辑:指令不一定都是顺序执行的,如果有中断发生,微指令执行的顺序会发生变化

微指令是最小的执序行列,一次执行不能被打断,只有执行下一条微指令的时候才会检查中断

只有执行周期的微程序是不一样的 

这里跟大家重点分析一下:一开始的取指周期不需要操作码参与,直接执行就完事了,然后执行完取指周期之后下地址是3但是送到顺序逻辑的时候,它会根据指令的寻址特征位的标志判断是否需要执行间址周期的微程序,同样地,执行完取指令周期之后如果不是间接寻址此时才会根据OP来确定这条执行周期的指令地址在哪里

5.4.3 微指令的设计 

一个微命令对应的是一条线的接通比如1 -> W  MARin接通

因为有些微命令使用的寄存器等部件不同,可以同时执行,因此有时一条微指令可能对应多个微命令

注意看:这里的操作控制字段当中的每一位就代表了一个微操作(比如:PC -> MAR),可以并行发出操作命令

其实采用这种方式就彳亍🙂

如何确定下地址?

注意看,这个男人...偶不,LDA等执行周期的最后一条微指令的下地址是0,这样回到取指周期之后执行相应的微操作(PC+"1")就可以顺利地去执行下一条指令了耶!!! 

微指令:取指执行的小的那个,可能对应多个微操作

取指周期的第一条微指令由硬件自动给出,直到取指周期结束才会根据操作码来确定执行周期的指令流,其中每个微指令执行结束都会有一个节拍来形成下地址

5.6.1 指令流水线 

考虑到有些时候每个指令周期所使用的硬件部件不相同,所以可以采用流水线的方式来执行每个指令周期的指令,从而让CPU充分忙碌起来

指令流水线方式:只有第一条指令消耗3t,剩余n-1个指令周期都消耗t

加速比:不使用流水线的T0/使用流水线的Tk

完成一个任务消耗k▲t,传统方式消耗:k▲t*n,指令流水线方式k▲t+(n-1)▲t(只有第一个周期需要k▲t,剩下的n-1个周期都只需要▲t)

5.6.2 阻碍指令流水线完美执行的因素

导致流水线的各个阶段没有那么完美衔接的原因是什么呢?

所有指令都安排这5个机器周期,不管你有没有这个机器周期,每个阶段的耗时也取最长的耗时(这样画图的时候才能对齐嘛,这样不就可以根据时钟周期来填入不同的指令了吗???),多出来的那一点时间使用锁存器锁住,到达指定节拍(比如200)的时候统一释放

根据局部性原理,取指阶段的大部分指令都可以通过cache直接获取,当然如果cache不命中的话就必须去访问主存,这样指令流水线就会出现断流的情况

分成指令cache和数据cache的原因就是可以支持这两个操作并行地执行(使用不同的硬件部件)

imm是用来存立即数的,RISC执行阶段处理的数据都是来着通用寄存器/立即数

改变PC:jmp call 中断

写回阶段指的是修改通用寄存器里的值(RISC是这样的,都是用寄存器来保存运算结果)

5.7 多处理器系统

一个CU多个ALU,指令的执行不是并行的,但是数据的处理是并行的

CU向多个执行部件发出相同的控制信号

在一个for循环当中对数组元素进行++:arr[i]++,可以把大的数组分成几块分别放到局部存储器当中,并使用不同的ALU来对他们进行++操作;使用显卡进行像素点的渲染亦是如此!!

共享一个物理地址空间 

多核之间仅共享最低一级的cache

线程切换需要把寄存器的值存到内存当中,这是线程切换的主要开销,因此可以设计硬件多线程

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

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

相关文章

BLS embedded curves族

1. 引言 以太坊基金会Antonio Sanso 2023年论文 Family of embedded curves for BLS中,展示了源自BLS椭圆曲线的embedded curves。 pairing-friendly curve E E E具有bilinear map e : G 1 G 2 → G T e:\mathbb{G}_1\times \mathbb{G}_2\rightarrow \mathbb{G…

MFC打开控制台的常用方式

工程项目中,想打开控制台的,简单打印日志 (1)依次打开: 项目配置属性——>生成事件——>后期生成事件:命令行 (2)输入: editbin /SUBSYSTEM:CONSOLE $(OUTDIR)\$…

C++前缀和算法的应用:统计上升四元组

C前缀和算法的应用:统计上升四元组 本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 题目 给你一个长度为 n 下标从 0 开始的整数数组 nums ,它包含 1 到 n 的所有数字,请你返回上…

DXF文件写入多边形和名称属性,可在Global Mapper和ArcGIS打开

DXF文件写入多边形和名称属性,可在Global Mapper和ArcGIS打开 目标效果 为了实现下图的效果,学习了一下dxf格式的相关内容。 官方文档价值很高,但是结合实例.dxf文件看学习起来更快。 免费下载实例 下面将介绍dxf文件的格式规范&#xff0…

Elasticsearch:在你的数据上训练大型语言模型 (LLM)

过去的一两年,大型语言模型(LLM)席卷了互联网。 最近 Google 推出的 PaLM 2 和 OpenAI 推出的 GPT 4激发了企业的想象力。 跨领域构思了许多潜在的用例。 多语言客户支持、代码生成、内容创建和高级聊天机器人都是一些例子。 这些用例要求 LL…

数字展厅搭建平台要具备哪些功能,如何选择数字展厅搭建平台

引言: 数字展厅搭建平什台是现代营销中不可或缺的重要工具之一。它可以帮助企业打造个性化、多媒体、互动性强的展示空间,吸引、引导和留住目标用户。在选择数字展厅搭建平台时,我们需要考虑各方面的功能和性能,以确保能够满足企业的需求并取…

面试算法47:二叉树剪枝

题目 一棵二叉树的所有节点的值要么是0要么是1,请剪除该二叉树中所有节点的值全都是0的子树。例如,在剪除图8.2(a)中二叉树中所有节点值都为0的子树之后的结果如图8.2(b)所示。 分析 下面总结什么样的节…

全网公开电商数据的采集重点

数据的采集是根据需求而定的,品牌会做数据采集的原因,一般与内部营销、渠道管控有关,如需要做价格管控时,需要先采集价格,这就需要对数据进行采集,包括价格、促销信息,又或者是需要做行业分析、…

PHP连接SQLServer echo输出中文汉字显示乱码解决方法

1、查询结果有中文会显示乱码。 解决方法一&#xff08;较简单&#xff0c;建议使用&#xff09;&#xff1a; 在php文件最开头写上&#xff1a; header(Content-type: text/html; charsetUTF8); // UTF8不行改成GBK试试&#xff0c;与你保存的格式匹配 <?php header(&q…

matab读取包含struct混合类型的mat文件转为txt文件

现有一个mat文件&#xff0c;其内容如下&#xff1a; 目标&#xff1a;要将data.mat中的Obs_Iridium_A转为文本格式。 分析&#xff1a; data.mat里面包含了4个struct结构的成员&#xff0c;Obs_Iridium_A是其中之一&#xff0c;Obs_Iridium_A为1*7496维&#xff0c;7496代表…

波浪理论第3波anzo capital昂首资本3个方法3秒确认

要想通过波浪理论在交易中赚取最大利润&#xff0c;确认第三波必不可少&#xff0c;因为第三波通常是趋势中最大和最强的一波&#xff0c;今天anzo capital昂首资本3个方法3秒确认。 首先&#xff0c;第一个确认方法—斜率。 通常&#xff0c;第三波的斜率会比第一波更陡峭&a…

Linux内核是如何创建进程?

目录 1.Linux如何创建进程 2.fork函数原理 2.1 fork函数原型 2.2 fork函数实现原理 2.3 父子进程虚拟地址空间&#xff08;mm_struct&#xff09;之间的关系 2.4 写时拷贝&#xff08;copy-on-write&#xff09;技术 2.5 父子进程如何共享文件&#xff08;files_struct&…

06、Caused by: java.nio.charset.MalformedInputException: Input length = 1

目录 问题&#xff1a;原因&#xff1a;解决方法&#xff1a; 问题&#xff1a; Caused by: java.nio.charset.MalformedInputException: Input length 1 原因&#xff1a; 应该是中文有哪些文字导致的。 yml 编码格式出错 解决方法&#xff1a; 直接这里把GBK改成 utf-8…

unordered系列关联式容器--哈希结构详细讲解及使用示例

目录 unordered系列关联式容器unordered_map 哈希哈希概念哈希函数直接定址法&#xff1a;除留余数法&#xff1a; 哈希冲突解决哈希冲突闭散列&#xff1a;开散列&#xff1a; unordered系列关联式容器 之前讲解在C98中STL提供了底层为红黑树结构的一系列关联式容器&#xff…

Nginx域名重定向(如何访问的域名和实际的数据请求路径不同,可解决前端跨域)

感情需要被抑制&#xff0c;不能泛滥… 当需要将一个域名重定向到另一个域名并且用户仍然看到原始域名时&#xff0c;Nginx是一个强大的工具。这种场景通常涉及到反向代理或重写URL的技巧。在本篇博客中&#xff0c;我们将详细介绍如何使用Nginx来实现这个目标&#xff0c;以及…

精品基于Python的考场考试分配规划系统

《[含文档PPT源码等]精品基于Python的考场分配规划系统的设计与实现》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;python 使用框架&#xff1a;Django 前端技…

ubuntu(18.04) 安装 blast 并在php中调用

1、下载 https://ftp.ncbi.nlm.nih.gov/blast/executables/blast/LATEST/2、解压&#xff0c;配置环境变量 tar zvxf ncbi-blast-2.14.1-x64-linux.tar.gz解压后改名为 blast 配置环境变量&#xff0c;可以不配置 使用的时候直接绝对路径使用&#xff08;本次使用绝对路径&am…

LInux之在同一Tomcat下使用不同的端口号访问不同的项目

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是君易--鑨&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《LInux实战开发》。&#x1f3af;&#x1f3af; …

Failed to launch task: 文件”Setup”不存在 Mac安装Adobe软件报错解决方案

在安装 Adobe 软件时&#xff0c;软件提示 Failed to launch task: 文件”Setup”不存在 &#xff0c;这个时候怎么处理呢&#xff1f; 解决方法如下&#xff1a; 1、安装 AnitCC 或 或 Creative Cloud 环境&#xff0c;保证软件所需要的环境 2、如果安装后也不起作用&#x…

知识图谱与大模型结合方法概述

《Unifying Large Language Models and Knowledge Graphs: A Roadmap》总结了大语言模型和知识图谱融合的三种路线&#xff1a;1&#xff09;KG增强的LLM&#xff0c;可在LLMs的预训练和推理阶段引入KGs&#xff1b;2&#xff09;LLM增强KG&#xff0c;LLM可用于KG构建、KG emb…