常熟港口建设费申报网站,做一个中英文网站多少钱,网站建设订流量什么意思,网站广告设计怎么做操作控制和顺序控制 操作控制就是由各种微命令来构成的顺序控制就是由P测试和后续微地址构成的 这就构成了整个微指令的三个部分 访存指令就是实现对主存中的数据进行访问或存储 一、 操作控制字段是由各种微命令来构成的#xff0c;这些微命令怎么来设计#xff1f; 一个萝卜… 操作控制和顺序控制 操作控制就是由各种微命令来构成的顺序控制就是由P测试和后续微地址构成的 这就构成了整个微指令的三个部分 访存指令就是实现对主存中的数据进行访问或存储 一、 操作控制字段是由各种微命令来构成的这些微命令怎么来设计 一个萝卜一个坑一个微命令占据一个二进制位有多少个微命令操作控制字段占据多少位这是什么方式——直接表示——全水平型但如果我们对那些相斥性的微命令采用译码器来进行选通它可以缩短操作控制字段的长度但是要注意译码器的选择四个相斥性的微命令需要3—8译码器因为2—4译码器只能译出3个相斥性的微命令4—16的译码器只能译出15个相斥性的微命令这时要增加译码器的选通会增加微指令实现的成本和复杂度。因此建议采用水平型。 设计出来微指令之后设计微指令格式就要来编写微指令进而来设计我们的微程序控制器的各种器件包括地址转移逻辑电路微地址寄存器微命令寄存器和操作控制器这一部分就属于设计的操作控制器单元 旧教材 绘制总体的数据通路框图是一个三总线的结构 数据总线指令总线地址总线地址寄存器连通数据cache有一个地址总线程序计数器PC连通icache有一个地址总线 所以上图是一个三总线的结构。 上课的教材是一个单总线的结构所有的器件都连在一根总线上不分数据地址还是指令一根指令有好处有坏处好处就是简单有一个设备占据了总线别的设备就不能用了所以这就导致了取指分成了4个T周期数据不断流转为了防止数据不出错所以要分成不同的T周期来完成。 自加4是因为它这个通路中的内存条的数据单元一个内存单元的长度是8位开始MIPS指令是32位所以一条指令要放在4个内存单元中所以下一条指令取指是加4。 3总线的情况下 取指的行为不同 这里是双态的取指结构 ALU是算数逻辑运算单元运算需要数据数据来源于多路开关这个多路开关其实就是XY这两个暂存器这两个暂存器的数据来源于各种寄存器的值但寄存器有R0R1R2R3因为有四个寄存器所以在选择的时候需要2-4译码器然后进行多路运算源寄存器的内容还可以输出有一个Rs_B三态门保证结果输出到总线左边这一堆就是运算器所需要的东西。 右边这个图构造了一个双态取指结构 数据Cache用来保存地址或者是操作数本身指令Cache用来保存指令类似于RAM和ROM做课设的时候就是改成了RAMROM AR放的是地址寄存器取的是操作数或者是操作数的有效地址因此AR寄存器连通数据CachePC放的是下一条指令的地址所以PC连通的是指令CachePC的内容打入到指令Cache就可以把这条指令取出来 取出来的指令放在指令寄存器IR中IR中的形式地址A可以经过ADDR_B三态门送到数据总线MOV传送指令取出的指令还要结果指令译码器来进行译码从而来决定取出来的到底是一条什么指令是加法还是减法然后要再时序产生器中产生各种操作去控制各个芯片的引脚是开还是关从而完成本次指令的功能这就构成了一个非常简单的数据通路。 数据总线是最繁忙的连接的器件也是最多的比如ALU的输出寄存器的输出形式地址A的输出……这些都要连接数据总线。一个周期内数据总线上只能有一个数据在上面流转所以这些所有连接到数据总线上的器件都增加了一个三态门用来控制开关打开三态门数据就可以流通到数据总线。 取指怎么取呢 指令的地址一定放在PC中把PC的内容打入到指令的地址总线根据地址访问指令Cache然后将指令Cache中的对应的单元中的内容取出来经由指令总线送到指令寄存器IR中然后对IR的OP字段译码确定是什么指令从而产生相应的操作控制信号PC1本次取指操作完成。我们会发现在这样的一种状态图中取指guoch过程是很流畅的不需要分时间这一过程没有任何的时间冲突所以把它放在了一个周期中一个CUP周期。对于三总线的结构而言之前的取值周期的四步内容就可以在一个周期完成因为它没有任何的冲突称这个周期是一个CPU周期。 三总线和单总线是有区别的在取指周期计算或者是执行周期上都有区别它的冲突比单总线要少花费的时间也要少。 三态门在选择的时候怎么选择 在编程的时候我们要设计一个多路选择器选谁就把谁选通不同于译码器在电子教材中有说明。 这个逻辑结构图很稳定 (微指令的三个部分各种微命令P测试和后续微地址) 控制存储器里面放微指令所有的微指令都放在控制存储器里面 微地址寄存器用来保存下一条微指令的地址 微命令寄存器用来存放P字段和控制字段 地址转移逻辑电路用来形成下一条有效的微地址后续微地址 四个器件构成。 怎么协调工作呢 刚开始一开机因为微地址寄存器中RAM来构成都是触发器来构成的一断电就没了一开机重启了相当于是从0开始所以所有控制寄存器都要从0开始取一开机微地址寄存器中的内容就是0所以我们一定要把取指指令的地址设置为00H这样保证一开机就能把指令取出来。 怎么取指令 刚开始是00把00打入到控制存储器的地址译码电路中然后找到0号地址单元将第一条微指令取出来微指令包括三部分操作控制字段P字段后续微地址字段所以取出的这条微指令的后续微地址部分就送到微地址寄存器中P字段和操作控制字段送到微命令寄存器中送进去之后因为这条微指令要实现特定功能所以操作控制字段中的各个微命令的值就要生成微命令信号去控制对应的芯片的引脚来完成本条微指令的功能。 下一条微指令怎么取出来 如果当前微命令寄存器的P字段显示是没有P测试的就说明微指令的执行是顺序方式说明刚才取出来的放在微地址寄存器的后续微地址就是下一条微指令的绝对地址直接再送到控制寄存器中取指即可。顺序执行不是0地址取完取1地址的意思如果0的后续微地址是3下一次到3去取这就是顺序存在P测试微指令的执行方式是跳转的首先P测试有两种一种是对操作码来进行P测试的来进行转移的另一种是对各种条件来进行判断的比如说ZF是否为0SF判断正负CF判断有没有进位通过这些状态推荐来进行测试。当存在P测试时要将它送入到地址转移逻辑电路中来强行修改微地址中某几位的值从而生成一个全新的地址根据这个全新的地址来取指这就完成了跳转。比如取出来的后续微地址时00HP测试修改的是微地址中的第5位所以微地址被强行修改为了10H10H送到控制寄存器根据10H取指。自动执行的核心自动取指自动定位跳转——全靠P测试 一般来说在T4周期内要形成微指令的微地址在T2周期的上升沿到来的时候将读出的微指令打入微指令寄存器这样就保证在不同的节拍上做不同的事 先设计汇编指令格式再把它手工翻译成机器指令 课程设计用到的所有汇编指令的集合就构成一个指令系统。 设计多少汇编指令取决于选择的题目用到多少种汇编指令就设计多少条。 x86的汇编格式和ARM不一样这样的指令格式都叫汇编指令有自己的助记符有自己的地址码 一定要写指令功能说明 Rd目的寄存器 Rs源寄存器 STO访存指令 STOI间接访存指令 P测试就是和有条件的转移来结合的JNZ结果不为零就跳转所有有两个分支怎么判断结果是不是0呢这里缺失了一条指令 JNZ有条件的转移结果不为零就跳转怎样判断结果是否为0呢要增加一条指令CMP比较指令R1和R2比较其实是做差R1-R20关注点是状态判断结果是否为0就保留ZF在JNZ前使用CMP指令如果ZF1说明结果为0不跳转做P2测试如果ZF0跳转到一个全新的地址的值1微地址的值不变JNZ就有两个分支是P测试。 如果是JB小于关注的就是SF1做差为负数又因为是小于不是小于等于所以ZF0。JEB小于等于SF1 汇编指令怎么翻译成机器指令呢 因为不翻译成机器指令就没有办法写进内存条看上图可知指令是16位的 其中操作码设计成了4位因为范例中的指令只有11条操作码编码是采用译码器实现的所以占4位最多可以设计16条指令最好不要超过16条不然不好借鉴。1112位是源寄存器的内容98位是目的寄存器的内容源寄存器目的寄存器占两位可供选择的寄存器有4个2^24选择2-4译码器源寄存器目的寄存器的位置可以换但要统一立即数im8位如果是有效地址addr也是8位。XXXX内容无所谓写成几都没有关系。 最后在运行的时候把机器指令写入到ROM指令Cache中 所有的CPU都是定长的4个T周期构成 时序产生器说白了就是计数器每来一个时钟周期就计数一次对相应的输出值设置为1 00011011 整个逻辑电路图实际上是3层 最高这一层就是最终的这个总体框架图 但是在这个控存中还有两层 地址转移逻辑还有一层 总共是3层 在这个模型上设计的汇编指令和机器指令 这些机器指令对应的指令周期图应该怎么写呢 每一个方框代表一个CPU周期课本上的每一个方框代表应该时钟周期这个的区别不重要重要的是方框里的内容。 第一个周期一定是取指周期PC送到指令的地址总线上read 指令CacheROM把读到的指令内容经由指令总线送到IR中PC1再经过一次译码操作完成取指。 这条指令取出来译码了那要进行什么操作也就清楚了如果是IN输入指令就转向IN的那条流程。 P测试有两种 P(1)一种是对操作码来进行P测试的来进行转移的P(2)另一种是对各种条件来进行判断的比如说ZF是否为0SF判断正负CF判断有没有进位通过这些状态推荐来进行测试。当存在P测试时要将它送入到地址转移逻辑电路中来强行修改微地址中某几位的值从而生成一个全新的地址根据这个全新的地址来取指这就完成了跳转。 取指方框末尾的00表示设置后续微地址的值是00根据P1测试来修改后续微地址从而控制执行哪一个指令。 这里取指后有一个P1测试根据取出来的指令的操作码来修改对应的后续微地址中的某几位的值然后来转向对应的内容比如取出来的指令是IN1就要把后续微地址从00改为01如果取出来的指令是JNZP(1)测试就要做到把后续微地址从00改为07这样才能取出谁执行谁。 JNZ指令里有一个P(2)测试是有条件的转移。 前面有一个空指令前面讲过每一个方框图代表一个T周期/CPU周期看教材编写但是P测试不会独立存在P测试只能紧跟在上一条微指令中而且同一条微指令只能做一种P测试要么做P1要么做P2所以如果没有这条空指令会发现P(2)和P(1)都挂载在了取指指令上发生了冲突所有为了保证P(2),P(1)分开一定要加一个空指令这个空指令的作用就是挂载P(2)测试。 JNZ指令是根据结果是否为0来决定是否跳转需要判断ZF的值跳转就是把指令中的形式地址A送到PC中出现两路分支。 这里的P(2)测试结果只能是1或0所以有且仅有两路。 P(1)测试是对操作码的判断操作码是四位的所以分支最多有16种。 第二节课重点讲 根据设计框图的内容来设计微指令包括操作控制字段顺序控制字段 操作控制就是由各种微命令来构成的顺序控制就是由P测试和后续微地址构成的这就构成了整个微指令的三个部分 设计出微指令格式后再根据刚才的指令周期图有多少个方框就要编写多少个微指令即赋值注意微命令中有一些是1有效有一些是0有效。 汇编代码-机器指令-微指令 软件层面完成。 硬件层面地址转移逻辑电路 逆时针旋转90°其实就是之前的总体的数据通路框图。直接借鉴这个图但要注意看跳转指令是否相同。有好几层。不难。最好一次性画完一气呵成。 ROM中放的就是编写好的机器指令要把它初始化进去。 控制存储器里面就要把微指令写进去。 两个都初始化进去后这张图就可以开始运行了。 通过OUT来输出结果如果结果错了就调试看看之前的错了没有。