计算机中控制指令BR,计算机系统I-第5章ppt课件

计算机系统I,第五章LC-3结构,1,.,计算机系统的抽象层次,2,.,本章通过一个简单的计算机系统实例LC-3,给大家介绍更高的抽象层次ISA(指令集结构).ISA为机器语言程序员提供了有关控制机器所需要所有必要信息。或给高级语言编译器开发者提供将高级语言转换成机器代码的必要信息。ISA是计算机硬件和软件的分界面.,抽象层次,3,.,ISA=向以机器语言编程的程序员提供有关控制机器所需要的所有必要信息。包括内存组织方式、寄存器组、指令集等信息。内存组织方式寻址空间–有多少个存储空间?寻址能力–每个存储空间有多少位?寄存器组有多少?存储数据长度?怎么使用?指令集操作码数据类型寻址模式,InstructionSetArchitecture(ISA),4,.,内存组织寻址空间:216个存储单元(16位地址)寻址能力:16bits寄存器组提供一个快速的临时存储空间,通常可在一个机器周期的时间访问到访问存储器的时间往往远大于一个机器周期的时间8个通用寄存器:R0-R7每个可存储数据宽度为16bits寄存器编址需要多少位二进制?其它寄存器:程序员不能直接访问,被指令使用或影响PC(programcounter),conditioncodes,MDR,MAR,LC-3Overview:内存组织和寄存器,5,.,操作码15个操作码(P79)逻辑和运算指令:ADD(0001),AND(0101),NOT(1001)(助记符)数据搬移指令:LD(0010),LDI(1010),LDR(0110),LEA(1110),ST(0011),STR(0111),STI(1011)控制指令:BR(0000),JSR/JSRR(0100),JMP(1100),RTI(1000),TRAP(1111)目的操作数为寄存器的指令会根据写入寄存器的值设置条件码N=写入值为负(0)组合NZ(=0)/NP(0)/NZP(?)数据类型:16位定点补码整数寻址方式:指令中指示参与运算操作数存储位置的方法非内存寻址(操作数不在内存中):直接寻址(操作数在指令中),寄存器寻址(操作数在寄存器中)内存寻址(操作数在内存中):PC-相对,间接,基址+偏移,LC-3Overview:指令集,6,.,LC-3只支持三个运算指令:ADD,AND,NOT实现特点:源操作数和目的操作数都是寄存器ADDandAND可以支持“立即数”模式,一个源操作数可以直接在指令中给出.内存中的数参与运算需要利用数据搬移指令实现搬移到寄存器中,运算结果也需要利用数据搬移指令搬移回内存中Willshowdataflowdiagramwitheachinstruction.illustrateswhenandwheredatamovestoaccomplishthedesiredoperation,运算指令,7,.,NOT(SRC/DST两个操作数必须是寄存器),Note:Src和Dst可以是同一个寄存器,NOTR2,R3,NOTR2,R2,1001010011111111,1001010010111111,8,.,ADD/AND(寄存器模式),为0指示“registermode”,,Note:Src1/2和Dst可以是同一个寄存器,ADDR1,R2,R3,Note:寄存器模式,两个源操作数和1个目的操作数都为寄存器。,ADDR1,R1,R3,ADDR1,R1,R1,0001001010000011,9,.,ADD/AND(立即数模式),Note:指令提供的立即数为5位,参与运算需要符号扩展到16位,为1指示“immediatemode”,,Note:立即数模式,src2为在指令中直接提供的5位补码整数。,ADDR1,R2,#5,ANDR1,R1,#1,10,.,只使用ADD,AND,NOT…怎么做减法?怎么实现OR操作?怎么把一个寄存器的值赋给另外一个?怎么初始化一个寄存器的值为0?,运算指令的使用,11,.,Load–从内存中读数据到寄存器中按内存数的寻址方式不同可分为:LD:PC-相对寻址模式LDR:寄存器基址+偏移模式LDI:间接寻址模式Store–写寄存器值到内存按内存数的寻址方式不同可分为:ST:PC-相对寻址模式STR:寄存器基址+偏移模式STI:间接寻址模式LEA-计算操作数的有效地址,存放到寄存器LEA:用立即数的方式给出操作数相对PC的偏移LEA指令不访存,数据搬移指令,12,.,LC-3指令长度16位,内存地址长度16位,能在指令中直接给出内存数的有效地址吗?16位指令中操作码占用4bits,一个目的寄存器需要占用3bits,只剩下9位来编码地址了不可能直接给出16位地址!怎么解决解决方法利用PC寄存器,剩下的9bits用来表示数据地址和PC的偏移量(offset,[-256,255]).数据有效地址为PC+offset局限性:9bits:注意:PC不是当前指令的地址,而是下一条指令的地址,PC相对寻址模式,13,.,LD(PC-Relative),14,.,ST(PC-Relative),15,.,LC-3的PC相对寻址模式,只能访问PC前或后256的内存单元剩下的内存怎么访问?解决方案#1:在PC相对寻址能访问到的内存单元存放一个16位地址(不是数据了).先读取这个地址,然后以这个地址去访问内存。类似C语言的指针,(基于PC的)间接寻址模式,16,.,LDI(间接寻址),17,.,STI(间接寻址),18,.,,(寄存器)基址偏移寻址模式,19,.,LDR(基址偏移寻址模式),20,.,STR(基址偏移寻址模式),21,.,计算操作数的有效地址,存放到寄存器LEA:用立即数的方式给出操作数相对PC的偏移(9bits)计算方法:PC+offset->寄存器LEA指令不访问内存Note:寄存器里面存放的是地址,而不是内存单元存放的数据。应用:访问连续的数据区域,用LEA指令得到数据区域的起始地址,然后用LDR指令访问.,LEA:LoadEffectiveAddress计算有效地址,22,.,LEA(Immediate),23,.,,Example,opcode,,,,,,,,,,,,,,,,,,,24,.,通过更新PC,改变程序执行顺序条件跳转跳转到分支仅当指定的条件成立更新PC到分支地址,通过在当前的PC值加一个偏移实现否则,不跳转到分支PC不改变,顺序执行下一条指令无条件跳转(直接跳转)PC值肯定被改变到目标地址TRAP(陷入指令)改变PC到操作系统提供的服务子程序的入口地址。“serviceroutine”服务子程序完成后返回到TRAP指令后一条程序代码继续执行。,控制指令,25,.,LC-3有3个1位的条件码寄存器,由最近写入的寄存器值确定N–negative(0)NZP同一时刻只有一个标志位会改变由最近写入的寄存器值确定任何一条写寄存器的指令都会改变条件码(ADD,AND,NOT,LD,LDR,LDI,LEA)Store指令和控制指令不改变条件码,条件码,26,.,,,27,.,在跳转指令中指示需要检测哪个条件码(IR[11:9])(可以是一个或者多个),如果指定的条件码成立,则跳转,否则不跳转。目标地址采用了PC相对寻址targetaddress=PC+offset(IR[8:0])Note:PC不是当前指令地址,而是下一条指令的地址。Note:只能跳转到跳转指令的前255条指令或后256条指令。Note:必须和上一条会修改寄存器的指令配合使用Ex:X3100:0001001001111111X3101:0000010000000100,条件跳转指令,28,.,BR(PC相对寻址),Whathappensifbits[11:9]areallzero?Allone?,指令助记:BRn/BRz/BRp/BRnzp/BRnz/BRnp/BRzp,29,.,判断R0的值是否为5,等于5则跳转判断R0的值>5,>=5,40跳转比较R0,R1是否相等跳转,应用-discussion,30,.,计算12个整数的和:整数存放的起始地址:x3100.程序起始地址:x3000。,跳转指令的应用:循环控制,31,.,SampleProgram,,,,,,,,,,,,,,,,,,,,,,,,,,,,,32,.,计算若干个正整数的和,整数存放的起始地址:x3100,以一个负数结尾。程序起始地址:x3000。,哨兵法:事前不确定循环次数,33,.,JMP是一个绝对跳转指令–总是跳转跳转的目标地址存放在寄存器中寄存器可以存放16位地址。可以跳转到任何地方。条件跳转是有局限性的:-256到+255,JMP(寄存器存放跳转地址),34,.,调用系统服务程序,服务程序由8-bit“trapvector”指定,总共支持256个服务程序。调用结束后,PC被设置成当前TRAP指令的下一条。(具体原理后面会讨论),TRAP:调用系统服务程序,35,.,计算一个文件中特定字符出现的次数程序开始地址:x3000从键盘读入要统计次数的字符从文件(“file”)中读取字符程序中的”文件”概念是指一个连续的内存存储区域文件的开始地址紧邻在程序代码的存储区域之后文件中存在和输入字符相同的字符则计数器+1文件采用哨兵机制.结束标志为一个特殊的ASCII码:EOT(x04)程序结束输出统计结果(假定字符出现次数不超过10个,方便输出),例子:字符数统计,36,.,FlowChart,37,.,,,Program(1of2),,,,,,,,,,,,,,,,,,,,,,,,,38,.,,,Program(2of2),,,,,,,,,,,,,,,,,,,39,.,LC-3总结:数据通路,实心箭头:待处理信息空心箭头:控制信号,40,.,全局总线一组16位信号线:用于部件之间数据通信只有一个总线,多个部件用。总线连接的输入设备为“三态设备”只有被允许时才能使用总线进行传输,平时为悬浮态。任何时刻只有一个输入被“使能”,即被允许使用总线由控制器统一决定当前哪个输入“使能”任何部件都能读取总线的信息。寄存器仅当写操作时被控制器允许从总线获取数据内存空间I/O设备的控制和数据寄存器内存访问寄存器MAR,MDR以及读写控制信号,数据通路的基本部件,41,.,ALU输入来自寄存器组和指令的立即数(符号扩展到16位)输出结果送到总线.结果将送到寄存器状态码逻辑电路产生NZP标志位寄存器组两个读地址(SR1,SR2),一个写地址(DR),可以相同输入来自总线(DR)ALU算术运算和内存读的结果两个16位的输出作为ALU的输入,PC的改写值,间接访问的内存地址dataforstoreinstructionspassesthroughALU,数据通路的基本部件,42,.,PC、PCMUXPC三类输入来源,由PCMUX控制PC+1–取址阶段地址加法器–BR,JMP总线–TRAP(后续课程)MAR、MARMUXMAR两类输入来源,由MARMUX控制地址加法器:–LD/ST,LDR/STRIR[7:0]无符号扩展–TRAP,数据通路的基本部件,43,.,条件寄存器查看总线数据,设置N,Z,P需LD.CC信号开通后,才进行设置,与指令有关(ADD,AND,NOT,LD,LDI,LDR,LEA)控制单元–有限状态机每一个机器周期,发送相关控制信号,包括:总线控制信号(GatePC,GateALU,…)寄存器控制信号(LD.IR,LD.REG,…)ALU控制信号?(ALUK)…Logic:负责opcode译码等,数据通路的基本部件,44,.,

展开阅读全文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值