汕头站扩建有连接华东线吗,网站建设客户怎么找,江苏住房和城乡建设厅官方网站,windows网站建设教程视频教程CPU的运算器其实就是进行固定的数据处理#xff0c;后面讲的CPU主要侧重的是它的控制器功能 运算器的基本结构
左右两边都是16位#xff0c;因为寄存器可能位于左右两端的一边(源/目的操作数)
A、B两端都要接一堆线
通用寄存器 ALU都在运算器当中 从主存来的数据直接放到… 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个控制信号让总线空闲
PC1可以单独设置一个加法器啊这样不就是自动1吗 专用数据通路练习题
2) (PC) - MAR M(MAR) - MDR MDR - IR 专用数据通路意味着可能有多个输入/输出信号到达所以需要使用多路选择器MUX或者三态门来控制放行哪一路信号(根据信号控制器的信号来决定)
5.4.1 硬布线控制器的设计
一条微指令(T0)又有可能由一个/几个微命令组成每发出一个微命令就执行一个微操作 如果控制单元EU采用硬布线方式来设计这种控制器就叫做硬布线控制器
根据FE、IND、EX、INT来判断此时处于指令周期的哪个机器周期
节拍发生器其实就是一个循环它从0数到N你这个机器周期就结束了他也不知道是哪个机器周期也无须知道
一旦你FE信号接通之后CLK就开始打节拍FET0就会控制电路执行第一个微操作
其实就和你做眼保健操一样的广播先喊第几节比如第一节按揉耳垂眼穴脚趾抓地你就知道该做第一节了然后它再喊12345678 22345678...每个节拍你就会执行这一节的相关动作了
PSW标志位等信息可能会影响到接下来的微操作序列的执行流 5.4.2 微程序控制器的设计
每条指令对应一段微程序它由一系列微指令组成
操作控制这条微指令对应哪几种微操作(比如1-R 1-W PCout MDRin)
顺序控制下一条微指令所在地址 顺序逻辑指令不一定都是顺序执行的如果有中断发生微指令执行的顺序会发生变化
微指令是最小的执序行列一次执行不能被打断只有执行下一条微指令的时候才会检查中断 只有执行周期的微程序是不一样的
这里跟大家重点分析一下一开始的取指周期不需要操作码参与直接执行就完事了然后执行完取指周期之后下地址是3但是送到顺序逻辑的时候它会根据指令的寻址特征位的标志判断是否需要执行间址周期的微程序同样地执行完取指令周期之后如果不是间接寻址此时才会根据OP来确定这条执行周期的指令地址在哪里 5.4.3 微指令的设计
一个微命令对应的是一条线的接通比如1 - W MARin接通
因为有些微命令使用的寄存器等部件不同可以同时执行因此有时一条微指令可能对应多个微命令 注意看这里的操作控制字段当中的每一位就代表了一个微操作(比如PC - MAR)可以并行发出操作命令
其实采用这种方式就彳亍 如何确定下地址 注意看这个男人...偶不LDA等执行周期的最后一条微指令的下地址是0这样回到取指周期之后执行相应的微操作(PC1)就可以顺利地去执行下一条指令了耶
微指令取指执行的小的那个可能对应多个微操作 取指周期的第一条微指令由硬件自动给出直到取指周期结束才会根据操作码来确定执行周期的指令流其中每个微指令执行结束都会有一个节拍来形成下地址 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执行阶段处理的数据都是来着通用寄存器/立即数 改变PCjmp call 中断 写回阶段指的是修改通用寄存器里的值(RISC是这样的都是用寄存器来保存运算结果) 5.7 多处理器系统
一个CU多个ALU指令的执行不是并行的但是数据的处理是并行的
CU向多个执行部件发出相同的控制信号
在一个for循环当中对数组元素进行arr[i]可以把大的数组分成几块分别放到局部存储器当中并使用不同的ALU来对他们进行操作使用显卡进行像素点的渲染亦是如此 共享一个物理地址空间
多核之间仅共享最低一级的cache 线程切换需要把寄存器的值存到内存当中这是线程切换的主要开销因此可以设计硬件多线程