计算机系统I课件.pptx

上传人:rrsccc 文档编号:10361606 上传时间:2021-05-11 格式:PPTX 页数:44 大小:975.85KB
返回 下载 相关 举报
计算机系统I课件.pptx_第1页
第1页 / 共44页
计算机系统I课件.pptx_第2页
第2页 / 共44页
计算机系统I课件.pptx_第3页
第3页 / 共44页
计算机系统I课件.pptx_第4页
第4页 / 共44页
计算机系统I课件.pptx_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《计算机系统I课件.pptx》由会员分享,可在线阅读,更多相关《计算机系统I课件.pptx(44页珍藏版)》请在三一文库上搜索。

1、计算机系统 I,第五章 LC-3结构,1,计算机系统I,计算机系统的抽象层次,2,计算机系统I,本章通过一个简单的计算机系统实例LC-3,给大家介绍更高的抽象层次ISA(指令集结构). ISA为机器语言程序员提供了有关控制机器所需要所有必要信息。或给高级语言编译器开发者提供将高级语言转换成机器代码的必要信息。 ISA是计算机硬件和软件的分界面.,抽象层次,3,计算机系统I,ISA = 向以机器语言编程的程序员提供有关控制机器所需要的所有必要信息 。包括内存组织方式、寄存器组、指令集等信息。 内存组织方式 寻址空间 有多少个存储空间? 寻址能力 每个存储空间有多少位? 寄存器组 有多少? 存储数

2、据长度? 怎么使用? 指令集 操作码 数据类型 寻址模式,Instruction Set Architecture (ISA),4,计算机系统I,内存组织 寻址空间: 216 个存储单元 (16位地址) 寻址能力: 16 bits 寄存器组 提供一个快速的临时存储空间, 通常可在一个机器周期的时间访问到 访问存储器的时间往往远大于一个机器周期的时间 8个通用寄存器: R0 - R7 每个可存储数据宽度为16 bits 寄存器编址需要多少位二进制? 其它寄存器:程序员不能直接访问,被指令使用或影响 PC (program counter), condition codes,MDR,MAR,LC-

3、3 Overview: 内存组织和寄存器,5,计算机系统I,操作码 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)/NZ

4、P(?) 数据类型: 16位定点补码整数 寻址方式:指令中指示参与运算操作数存储位置的方法 非内存寻址(操作数不在内存中) : 直接寻址(操作数在指令中), 寄存器寻址(操作数在寄存器中) 内存寻址(操作数在内存中) : PC-相对, 间接, 基址+偏移,LC-3 Overview: 指令集,6,计算机系统I,LC-3只支持三个运算指令: ADD, AND, NOT 实现特点: 源操作数和目的操作数都是寄存器 ADD and AND 可以支持“立即数”模式,一个源操作数可以直接在指令中给出. 内存中的数参与运算需要利用数据搬移指令实现搬移到寄存器中,运算结果也需要利用数据搬移指令搬移回内存中

5、Will show dataflow diagram with each instruction. illustrates when and where data moves to accomplish the desired operation,运算指令,7,计算机系统I,NOT (SRC/DST两个操作数必须是寄存器),Note: Src 和 Dst可以是同一个寄存器,NOT R2,R3,NOT R2,R2,1001 010 011 111111,1001 010 010 111111,8,计算机系统I,ADD/AND (寄存器模式),为0指示“register mode”,Note: S

6、rc1/2 和 Dst可以是同一个寄存器,ADD R1,R2,R3,Note: 寄存器模式,两个源操作数和1个目的操作数都为寄存器。,ADD R1,R1,R3,ADD R1,R1,R1,0001 001 010 000 011,9,计算机系统I,ADD/AND (立即数模式),Note: 指令提供的立即数为5位, 参与运算需要符号扩展到16位,为1指示 “immediate mode”,Note: 立即数模式,src2为在指令中直接提供的5位补码整数。,ADD R1,R2,#5,AND R1,R1,#1,10,计算机系统I,只使用ADD, AND, NOT 怎么做减法? 怎么实现 OR操作?

7、怎么把一个寄存器的值赋给另外一个? 怎么初始化一个寄存器的值为0?,运算指令的使用,11,计算机系统I,Load 从内存中读数据到寄存器中按内存数的寻址方式不同可分为: LD: PC-相对寻址模式 LDR: 寄存器基址+偏移模式 LDI: 间接寻址模式 Store 写寄存器值到内存按内存数的寻址方式不同可分为: ST: PC-相对寻址模式 STR:寄存器基址+偏移模式 STI: 间接寻址模式 LEA - 计算操作数的有效地址,存放到寄存器 LEA: 用立即数的方式给出操作数相对PC的偏移 LEA指令不访存,数据搬移指令,12,计算机系统I,LC-3指令长度16位,内存地址长度16位,能在指令中

8、直接给出内存数的有效地址吗? 16位指令中操作码占用4 bits,一个目的寄存器需要占用 3 bits ,只剩下9位来编码地址了 不可能直接给出16位地址! 怎么解决 解决方法 利用PC寄存器, 剩下的 9 bits 用来表示数据地址和 PC的偏移量(offset, -256, 255). 数据有效地址为PC+offset 局限性:9 bits: 注意:PC不是当前指令的地址,而是下一条指令的地址,PC相对寻址模式,13,计算机系统I,LD (PC-Relative),14,计算机系统I,ST (PC-Relative),15,计算机系统I,LC-3的PC相对寻址模式, 只能访问PC前或后25

9、6的内存单元 剩下的内存怎么访问? 解决方案 #1: 在PC相对寻址能访问到的内存单元存放一个16位地址(不是数据了).先读取这个地址,然后以这个地址去访问内存。 类似C语言的指针,(基于PC的)间接寻址模式,16,计算机系统I,LDI (间接寻址),17,计算机系统I,STI (间接寻址),18,计算机系统I,(寄存器)基址偏移寻址模式,19,计算机系统I,LDR (基址偏移寻址模式),20,计算机系统I,STR (基址偏移寻址模式),21,计算机系统I,计算操作数的有效地址,存放到寄存器 LEA: 用立即数的方式给出操作数相对PC的偏移(9bits) 计算方法:PC+offset -寄存器

10、 LEA指令不访问内存 Note: 寄存器里面存放的是地址, 而不是内存单元存放的数据。 应用: 访问连续的数据区域,用LEA 指令得到数据区域的起始地址,然后用LDR指令访问.,LEA :Load Effective Address 计算有效地址,22,计算机系统I,LEA (Immediate),23,计算机系统I,Example,opcode,24,计算机系统I,通过更新PC,改变程序执行顺序 条件跳转 跳转到分支仅当指定的条件成立 更新PC到分支地址,通过在当前的PC值加一个偏移实现 否则, 不跳转到分支 PC 不改变,顺序执行下一条指令 无条件跳转(直接跳转) PC值肯定被改变到目标

11、地址 TRAP(陷入指令) 改变PC 到操作系统提供的服务子程序的入口地址。 “service routine” 服务子程序完成后返回到TRAP指令后一条程序代码继续执行。,控制指令,25,计算机系统I,LC-3 有3个1位的条件码寄存器,由最近写入的寄存器值确定N negative(0) N Z P 同一时刻只有一个标志位会改变 由最近写入的寄存器值确定 任何一条写寄存器的指令都会改变条件码(ADD, AND, NOT, LD, LDR, LDI, LEA) Store指令和控制指令不改变条件码,条件码,26,计算机系统I,27,计算机系统I,在跳转指令中指示需要检测哪个条件码(IR11:9

12、)(可以是一个或者多个),如果指定的条件码成立,则跳转,否则不跳转。 目标地址采用了PC相对寻址target address = PC + offset (IR8:0) Note: PC不是当前指令地址,而是下一条指令的地址。 Note: 只能跳转到跳转指令的前255条指令或后256条指令。 Note: 必须和上一条会修改寄存器的指令配合使用 Ex: X3100: 0001 001 001 1 11111 X3101: 0000 010 0000 00100,条件跳转指令,28,计算机系统I,BR (PC相对寻址),What happens if bits 11:9 are all zero?

13、 All one?,指令助记: BRn /BRz /BRp / BRnzp /BRnz /BRnp /BRzp,29,计算机系统I,判断 R0的值是否为5, 等于5则跳转 判断R0的值5,=5,40跳转 比较R0,R1是否相等跳转,应用-discussion,30,计算机系统I,计算12个整数的和:整数存放的起始地址:x3100. 程序起始地址: x3000。,跳转指令的应用:循环控制,31,计算机系统I,Sample Program,32,计算机系统I,计算若干个正整数的和, 整数存放的起始地址:x3100,以一个负数结尾。 程序起始地址: x3000。,哨兵法:事前不确定循环次数,33,计

14、算机系统I,JMP是一个绝对跳转指令 总是跳转 跳转的目标地址存放在寄存器中 寄存器可以存放16位地址。可以跳转到任何地方。 条件跳转是有局限性的:-256到+255,JMP (寄存器存放跳转地址),34,计算机系统I,调用系统服务程序,服务程序由 8-bit “trap vector”指定,总共支持256个服务程序。 调用结束后, PC被设置成当前TRAP 指令的下一条。 (具体原理后面会讨论),TRAP:调用系统服务程序,35,计算机系统I,计算一个文件中特定字符出现的次数 程序开始地址: x3000 从键盘读入要统计次数的字符 从文件( “file”)中读取字符 程序中的”文件”概念是指

15、一个连续的内存存储区域 文件的开始地址紧邻在程序代码的存储区域之后 文件中存在和输入字符相同的字符则计数器+1 文件采用哨兵机制.结束标志为一个特殊的ASCII码: EOT (x04) 程序结束输出统计结果(假定字符出现次数不超过10个, 方便输出),例子:字符数统计,36,计算机系统I,Flow Chart,37,计算机系统I,Program (1 of 2),38,计算机系统I,Program (2 of 2),39,计算机系统I,LC-3总结:数据通路,实心箭头:待处理信息 空心箭头:控制信号,40,计算机系统I,全局总线 一组16位信号线:用于部件之间数据通信 只有一个总线,多个部件用

16、。 总线连接的输入设备为“三态设备”只有被允许时才能使用总线进行传输, 平时为悬浮态。 任何时刻只有一个输入被“使能”,即被允许使用总线 由控制器统一决定当前哪个输入“使能” 任何部件都能读取总线的信息。 寄存器仅当写操作时被控制器允许从总线获取数据 内存空间 I/O设备的控制和数据寄存器 内存访问寄存器MAR, MDR 以及读写控制信号,数据通路的基本部件,41,计算机系统I,ALU 输入来自寄存器组和指令的立即数(符号扩展到16位) 输出结果送到总线. 结果将送到寄存器 状态码逻辑电路产生N Z P标志位 寄存器组 两个读地址(SR1, SR2),一个写地址 (DR),可以相同 输入来自总

17、线(DR) ALU 算术运算和内存读的结果 两个16位的输出 作为 ALU的输入, PC的改写值, 间接访问的内存地址 data for store instructions passes through ALU,数据通路的基本部件,42,计算机系统I,PC、PCMUX PC三类输入来源,由PCMUX控制 PC+1 取址阶段 地址加法器 BR, JMP 总线 TRAP (后续课程) MAR、MARMUX MAR两类输入来源,由MARMUX控制 地址加法器: LD/ST, LDR/STR IR7:0无符号扩展 TRAP,数据通路的基本部件,43,计算机系统I,条件寄存器 查看总线数据,设置N, Z, P 需LD.CC信号开通后,才进行设置,与指令有关(ADD, AND, NOT, LD, LDI, LDR, LEA) 控制单元 有限状态机 每一个机器周期,发送相关控制信号,包括: 总线控制信号(GatePC, GateALU, ) 寄存器控制信号(LD.IR, LD.REG, ) ALU控制信号? (ALUK) Logic:负责opcode译码等,数据通路的基本部件,44,计算机系统I,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1