第五章、中央处理器

问题描述

一、CPU功能和基本结构

1、cpu功能

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

2、运算器控制器功能

在这里插入图片描述

3、运算器基本结构

在这里插入图片描述
1.算术逻辑单元:主要功能是进行算术/逻辑运算。
2.通用寄存器组:如AX、BX、CX、DX、SP等,用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息等。SP是堆栈指针,用于指示栈顶的地址。

如果直接用导线连接,相当于多个寄存器同时并且一直向ALU传输数据

解决方法 1.使用多路选择器根据控制信号选择一路输出
例如:进行加法指令ADD,两个操作数分别存在R0和R1,控制器左边控制型号00,右边控制信号01
在这里插入图片描述
解决方法 2.使用三态门可以控制每一路是否输出
在这里插入图片描述
CPU内部单总线方式:将所有寄存器的输入端和输出端都连接到一条公共的通路上。

在这里插入图片描述
1.算术逻辑单元(Arithmetic Logic):主要功能是进行算术/逻辑运算。
2.通用寄存器组(General-Purpose Registers):如AX、BX、CX、DX、SP等,用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息等。SP是堆栈指针,用于指示栈顶的地址。
3.暂存寄存器(Temporary register):用于暂存从主存读来的数据,这个数据不能存放在通用寄存器中,否则会破坏其原有内容。
4.累加寄存器(accumulator register):它是一个通用寄存器,用于暂时存放ALU运算的结果信息,用于实现加法运算。
5.程序状态字寄存器:保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标志(OP)、符号标志(SF)、零标志(ZF)、进位标志(CF)等。PSW中的这些位参与并决定微操作的形成。
6.移位器:对运算结果进行移位运算。
7.计数器:控制乘除运算的操作步数。

4、控制器基本结构

请添加图片描述
在这里插入图片描述

二、指令执行过程

1、指令周期的概念

指令周期:CPU从主存中每取出并执行一条指令所需的全部时间。
在这里插入图片描述

指令周期常常用若干机器周期来表示,机器周期又叫CPU周期
在这里插入图片描述
一个机器周期又包含若干时钟周期(也称为节拍、T周期或CPU时钟周期,它是CPU操作的最基本单位)。
每个指令周期内机器周期数可以不等,每个机器周期内的节拍数也可以不等。

空指令:指令周期=机器周期
在这里插入图片描述
在这里插入图片描述

1.1、指令周期流程

在这里插入图片描述

2、数据流

2.1、取指阶段

在这里插入图片描述
1.当前指令地址送至存储器地址寄存器,记做:(PC)→MAR
2.CU发出控制信号,经控制总线传到主存,这里是读信号,记做:1→R
3.将MAR所指主存中的内容经数据总线送入MDR,记做:M(MAR)→MDR
4.将MDR中的内容(此时是指令)送入IR,记做:(MDR)→IR
5.CU发出控制信号,形成下一条指令地址,记做:(PC)+1→PC

2.2、间址周期

在这里插入图片描述
1.将指令的地址码送入MAR,记做:Ad(IR)→ MAR或Ad(MDR)→MAR
2.CU发出控制信号,启动主存做读操作,记做:1→R
3.将MAR所指主存中的内容经数据总线送入MDR,记做:M(MAR)→MDR
4.将有效地址送至指令的地址码字段,记做:(MDR)→Ad(IR)

2.3、中断周期

在这里插入图片描述
中断:暂停当前任务去完成其他任务。为了能够恢复当前任务,需要保存断点一般使用堆栈来保存断点,这里用SP表示栈顶地址,假设SP指向栈顶元素,进栈操作是先修改指针,后存入数据。
1.CU控制将SP减1,修改后的地址送入MAR记做:(SP)-1→SP,(SP)→MAR本质上是将断点存入某个存储单元,假设其地址为a,故可记做:a→MAR
2.CU发出控制信号,启动主存做写操作,记做:1→W
3.将断点(PC内容)送入MDR,记做:(PC)→MDR
4.CU控制将中断服务程序的入口地址(由向量地址形成部件产生)送入PC,记做:向量地址→PC

3、指令执行方案

方案1.单指令周期对所有指令都选用相同的执行时间来完成。指令之间串行执行;指令周期取决于执行时间最长的指令的执行时间。对于那些本来可以在更短时间内完成的指令,要使用这个较长的周期来完成,会降低整个系统的运行速度。

方案2.多指令周期对不同类型的指令选用不同的执行步骤来完成。指令之间串行执行;可选用不同个数的时钟周期来完成不同指令的执行过程。需要更复杂的硬件设计。

方案3.流水线方案在每一个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中。

三、数据通路的功能

1、cpu内部单总线方式

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

1.寄存器之间的数据传送

在这里插入图片描述
比如把PC内容送至MAR,实现传送操作的流程及控制信号为:
(PC)→Bus PCout有效,PC内容送总线
Bus→MAR MARin有效,总线内容送MAR

2.主存与CPU之间的数据传送
在这里插入图片描述

比如CPU从主存读取指令,实现传送操作的流程及控制信号为:
(PC)→Bus→MAR PCout和MARin有效,现行指令地址→MAR
1→R CU发读命令(通过控制总线发出)
MEM(MAR)→MDR MDRin有效
MDR→Bus→IR MDRout和IRin有效
**3.执行算术或逻辑运算 **
在这里插入图片描述

比如一条加法指令,微次操作序列及控制信号为:
Ad(IR)→Bus→MAR MDRout和MARin有效
1→R CU发读命令
MEM(MAR)→数据线→MDR MDRin有效
MDRout和Yin有效,操作数→Y MDR→Bus→Y
(ACC)+(Y)→Z ACCout和ALUin有效,CU向ALU发送加命令
Z→ACC Zout和ACCin有效,结果→ACC

2、例题:

在这里插入图片描述
设有如图所示的单总线结构,分析指令ADD(R0),R1的指令流程和控制信号。
(R0)是一个间址周期

1.分析指令功能和指令周期功能:((R0))+(R1)→(R0)取指周期、间址周期、执行周期

取指周期:

时序微操作有效控制信号
1(PC)→MARPCout,MARin
2M(MAR)→MDRMARout,MDRinE,MemR
3OP(MDR)→IRMDRout,IRin
4指令译码器
5(PC)+1→ P

间址周期:

时序微操作有效控制信号
1(R0)→MARR0out,MARin
2M(MAR)→MDRMARout,MDRinE,MemR
3(MDR)→YMDRout,Yin

执行周期:

时序微操作有效控制信号
1(Y)+(R1)R1out,ALUin,CU向ALU发送控制信号
2(Z)→MDRZout,MDRin
3(MDR)→M(MAR)MDRoutE,MARout,MemW

3、专用数据通路结构

在这里插入图片描述

取指周期:
(PC)→MAR C0
(MAR)→主存 C1
1→R CU给主存发送取指指令
M(MAR)→MDR C2
(MDR)→IR C3
(PC)+1→PC
OP(IP)→CU C4
读取到了ADD,另一个数字已经读到了AC
AD(IR)→MAR C5
MAR→主存
M(MAR)→MDR C2
(MDR)→ALU C7
(AC)→ALU C6

4、例题:

在这里插入图片描述
在这里插入图片描述

(2)
在这里插入图片描述
(3)
假设数据地址已经放入MAR
在这里插入图片描述
(4)(5)(6)
在这里插入图片描述

四、控制器设计

1、硬布线控制器

  根据指令操作码目前的机器周期、节拍信号、机器状态条件,即可确定现在这个节拍下应该发出哪些“微命令”

在这里插入图片描述

所有指令的取指周期、T0节拍下一定要完成(PC)->MAR.则可知C1=FE T0

设计步骤:

1.分析每个阶段的微操作序列(取值、间址、执行、中断四个阶段)(确定哪些指令在什么阶段、在什么条件下会使用到的微操作)
2.选择CPU的控制方式(采用定机器周期还是不定长机器周期?每个机器周期安排几个节拍?)
3.安排微操作时序
4.电路设计(如何用3个节拍完成整个机器周期内的所有微操作?)

在这里插入图片描述

1.1、安排微操作时序的原则

原则一微操作的先后顺序不得随意更改
原则二被控对象不同的微操作尽量安排在一个节拍内完成
原则三占用时间较短的微操作尽量安排在一个节拍内完成并允许有先后顺序

2、微程序控制器

在这里插入图片描述

程序:由指令序列组成
微程序:由微指令序列组成,每一种指令对应一个微程序

指令是对程序执行步骤的描述
微指令是对指令执行步骤的描述

微命令与微操作一一对应
微指令中可能包含多个微命令

2.1、微程序控制器基本结构

控制存储器(CM):用于存放每条指令的微程序,从地址P到K存储微指令序列
微指令地址寄存器(CMAR):别名:μPC:用于存放每条微指令的地址
地址译码器:将地址码转化为存储单元的控制信号
微指令数据寄存器(CMDR):别名:μIR:用于存放从CM中读取的微指令
请添加图片描述
在这里插入图片描述

在这里插入图片描述

2.3、微指令设计
2.4、水平型微指令

一条微指令能定义多个可并行的微命令。

在这里插入图片描述
在这里插入图片描述

优点:微程序短,执行速度快
缺点:微指令长,编写微程序较麻烦

微指令的编码方式又称为微指令的控制方式,它是指如何对微指令的控制字段进行编码,以形成控制信号。编码的目标是在保证速度的情况下,尽量缩短微指令字长。
(1)直接编码(直接控制)方式
在微指令的操作控制字段中,每一位代表一个微操作命令
某位为“1”表示该控制信号有效
在这里插入图片描述
(2)字段直接编码方式
将微指令的控制字段分成若干“段”,每段经译码后发出控制信号
在这里插入图片描述

微命令字段分段的原则:
①互斥性微命令分在同一段内,相容性微命令分在不同段内。
②每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间。
③一般每个小段还要留出一个状态表示本字段不发出任何微命令。因此,当某字段的长度为3位时,最多只能表示7个互斥的微命令,通常用000表示不操作。

例题:

某计算机的控制器采用微程序控制方式,微指令中的操作控制字段采用字段直接编码法,共有33个微命令,构成5个互斥类,分别包含7、3、12、5和6个微命令,则操作控制字段至少有多少位?

第1个互斥类有7个微命令,要留出1个状态表示不操作,所以需要表示8种不同的状态,故需要3个二进制位。
以此类推,后面4个互斥类各需要表示4、13、6、7种不同的状态,分别对应2、4、3、3个二进制位。
3+2+4+3+3=15位

(3)字段间接编码方式
字段间接编码方式一个字段的某些微命令需由另一个字段中的某些微命令来解释,由于不是靠字段直接译码发出的微命令,故称为字段间接编码,又称隐式编码。
在这里插入图片描述

3.2、垂直型微指令

一条微指令只能定义一个微命令,由微操作码字段规定具体功能

在这里插入图片描述
在这里插入图片描述

优点:微指令短简单,规整便于编写微程序;
缺点:工作效率低。微程序长,执行速度慢,

4、微程序控制器设计

1.分析每个阶段的微操作序列
在这里插入图片描述

2.写出对应机器指令的微操作命令及节拍安排
(1)写出每个周期所需要的微操作(参照硬布线)
(2)补充微程序控制器特有的微操作:
a.取指周期:
Ad(CMDR)→ CMAR
OP(IR)→微地址形成部件→CMAR
b.执行周期:Ad(CMDR)→CMAR

3.确定微指令格式
根据微操作个数决定采用何种编码方式,以确定微指令的操作控制字段的位数。根据CM中存储的微指令总数,确定微指令的顺序控制字段的位数。最后按操作控制字段位数和顺序控制字段位数就可确定微指令字长。
4.编写微指令码点

五、指令流水线

1、指令流水定义

在这里插入图片描述
取指:根据PC内容访问主存储器,取出一条指令送到IR中。
分析:对指令操作码进行译码,按照给定的寻址方式和地址字段中的内容形成操作数的有效地址EA,并从有效地址EA中取出操作数。
执行:根据操作码字段,完成指令规定的功能,即把运算结果写到通用寄存器或主存中。


设取指、分析、执行3个阶段的时间都相等,用t表示,按以下几种执行方式分析n条指令的执行时间:
在这里插入图片描述
传统冯·诺依曼机采用顺序执行方式,又称串行执行方式。
优点:控制简单,硬件代价小。
缺点:执行指令的速度较慢,在任何时刻,处理机中只有一条指令在执行,各功能部件的利用率很低。
在这里插入图片描述
优点:程序的执行时间缩短了1/3各功能部件的利用率明显提高。
缺点:需要付出硬件上较大开销的代价,控制过程也比顺序执行复杂了。
在这里插入图片描述
与顺序执行方式相比,指令的执行时间缩短近2/3。这是一种理想的指令执行方式,在正常情况下,处理机中同时有3条指令在执行。

1.1、吞吐率
  吞吐率是指在单位时间内流水线所完成的任务数量,或是输出结果的数量。 设任务数为n;处理完成n个任务所用的时间为Tk 则计算流水线吞吐率(TP)的最基本的公式为TP=n/TK

在这里插入图片描述
在这里插入图片描述

1.2、加速比
  完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。

在这里插入图片描述
在这里插入图片描述

1.3、效率

流水线的设备利用率称为流水线的效率。
在这里插入图片描述

在这里插入图片描述

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连续分配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问题时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微笑伴你而行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值