cpu
控制器
PC-下一条指令的地址
IR-存放当前正在执行的地址
MAR
MDR
译码器
时序电路
微操作/信号发生器
运算器
ALU
暂存寄存器
ACC
通用寄存器
PSW状态字寄存器
计数器
移位器
对所有人可见:PSW,PC,ACC
对所有人透明(不可见):MAR.MDR,IR,Cache
对系统程序员可见:虚拟存储器
对用户可见:PSW,ACC,PC,通用寄存器,移位寄存器
对应用程序员透明的:暂存寄存器,虚拟存储器
对于汇编程序员可见:PC,基址寄存器,PSW,通用寄存器
通用寄存器主要是用于编程指定多种功能从而达到不同目的
数据传送:存储和传递我们的数据
运算操作:只是保存中间变量的结果
地址存储:放一些形式地址
指针索引:可以做变址寄存器和基址寄存器
函数调用和栈的管理
数据总线的位数与处理器位数是相同的,cpui一次能处理数据的位数
指令总是根据程序计数器的值去读出
==PC的位数取决于存储器的容量和指令字长==
==PC的位数=存储器地址位数-log以2为低指令字长字节数==
指令寄存器IR的位数是取决于指令字长
通用寄存器的位数取决于机器字长,
通用寄存器既可以存放数据,也可以存放地址,但是不能替代IR,通用寄存器对用户和汇编程序员都是可见的
地址译码器是在主存中的,用于解析收到的地址。
间址:将指令中的形式地址A到主存中取出EA返回到MDR中,所以间址周期结束后MDR里面的值应该是EA,操作数的地址
存储周期---两次读/写相隔的时间
存储时间+恢复时间
取址操作是控制器自动进行的
不同长度的指令,取址操作可能是不同的,例如,双字指令,三字指令与单字指令的取指操作是不同的
CPU区分指令和数据的依据是根据指令周器的不同阶段,如果是取指阶段,那就是指令,执行阶段就是操作数
取指令操作是控制器固有的功能,不需要在操作码的控制下进行
CU的输入信号来源如下
经指令译码器译码产生的指令信号
时序系统产生的机器周期信号和节拍信号
来自执行单元的反馈信号即标志
前两者是主要信号
水平型微指令
优点:微程序短,并行强,执行速度快,工作效率高
缺点:指令字长,编写微程序麻烦
垂直型微指令
一条垂直型微指令只可以定义并执行一种微命令
不可以并行操作,一次只能发出一位控制信号
优点:微指令短,简单,规整,利于编写微程序
缺点:微程序长,执行速度慢,工作效率低
CPU
运算器:PSW
控制器:时序电路,译码器,MDR,MAR,IR,PC,微操作信号发生器
自陷指令(也叫访管指令和trap指令)
内中断--》与当前执行指令有关
外中断--》CPU外部功能时钟向CPU发出与当前指令无关的事件
内中断
故障:
译码时“非法操作码“
取数据时候”缺页“,缺段
执行整数除法指令时”除数为0“
地址越界
存储保护错
访问超时
自陷(访管,trap)
终止:控制器出错,存储器校验出错,总线错误
异常检测是CPU执行每条指令的过程中进行的
中断是在指令完成之后进行检测的
识别异常和中断转到相应的处理模式
软件识别模式方式---》异常状态寄存器
硬件识别模式,向量中断
正常控制流--》顺序执行指令,转移指令--》控制流
异常控制流:
异常或者中断引起的用户程序正常执行被打断
进程上下文切换:一个进程到另一个进程
进程上下文切换是由操作系统的内核程序实现,而异常/中断的==响应==则由==硬件实现==
响应异常/中断请求后,CPU执行的是异常/中断服务程序,是操作系统的内核程序
陷入(陷阱)指令默认是非转移指令,保留的断点是自陷指令的下一条指令
如果是故障,保留断点是当前指令的地址
如果是终止的话,则保留断点是当前指令或者下一条指令
所有的异常和中断事件都是由硬件检测发现的
时间并行:将一个任务分成n个不同阶段,每个阶段对应不同功能部件上并行执行,可以同时执行多个任务(普通流水线)
空间并行:处理机内部设有多个执行相同任务的功能部件(超标量流水线)
流水段寄存器:对用户是不可见的
取指阶段和译码阶段不需要控制信号的控制,因为每个指令的阶段都是一样的,不需要专门的设置
避免结构冒险
后一位指令暂停一周期
资源重复配置:同一个部件设置多个
相同的指令阶段采用相同的部件,指令阶段指的是比如取指阶段就都用指令寄存器,而访存阶段就都用数据寄存器
哪个阶段要用到的数据,如果这个阶段与上条产生数据的指令是并排的则没办法使用转发技术。
==适当==增加流水段的个数---每一段的操作更加简单,延迟更小