资源预览内容
第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
第9页 / 共23页
第10页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
建构 Beta计算机6.004 Fall 2002110/29/0中央处理单元的设计取舍最大效能最大效能: 以每秒可执行的指令数来衡量以每秒可执行的指令数来衡量最小成本最小成本: 以电路的大小来衡量以电路的大小来衡量最佳效能最佳效能/价钱价钱: 以以MIPS(每秒百万指令每秒百万指令)与大小的来比例来衡量与大小的来比例来衡量. 在重视能量消耗的应用中在重视能量消耗的应用中, MIPS/瓦特也很重要瓦特也很重要.6.004 Fall 2002210/29/0效能之量测推进效能推进效能 .今天今天: 1 时脉时脉/指令指令.下次下次: 以管路技术来达成更多百万赫以管路技术来达成更多百万赫下下次下下次: 修正不同的管路技术问题修正不同的管路技术问题每秒百万指令每秒百万指令每指令所需时脉数每指令所需时脉数时脉频率时脉频率(百万赫百万赫)6.004 Fall 2002310/29/0Beta指令集以操作码区分的指令类以操作码区分的指令类别别:OPOPCMEMTransfer of Control操作类别: RegRc RegRa op RegRb操作类别: RegRc RegRa op SXT(C)两种格式共享的操作码(OPCODE):ADDSUBMUL* DIV* *optionalCMPEQCMPLECMPLTANDORXORSHLSHRSRA6.004 Fall 2002410/29/0达成方法: 累进功能法每个指令是由一个简单的功能组件成来达成的每个指令是由一个简单的功能组件成来达成的. 我们将试着实现各个指令类别我们将试着实现各个指令类别的数据路径的数据路径, 然后再将它们合并然后再将它们合并(使用解多任务器等使用解多任务器等).步骤步骤:1. 操作类指令操作类指令2. 存取类指令存取类指令3. 跳跃与分流类指令跳跃与分流类指令4. 例外例外5. 合并数据路径合并数据路径内存内存缓存器缓存器解多任务器解多任务器“黑盒子黑盒子” 运算逻辑单元运算逻辑单元我们的组件百宝袋我们的组件百宝袋:6.004 Fall 2002510/29/0多端口缓存器档案2 combinational READ ports*,1 clocked WRITE port*internal logic ensures Reg31 reads as 0(独立读取地址)6.004 Fall 2002610/29/0缓存器档案之时序两组组合逻辑式读取端口两组组合逻辑式读取端口, 一组时脉控制式写入埠一组时脉控制式写入埠如果如果 (举例来说举例来说) WA=RA1, 将会如何将会如何?RD1 会读取会读取 “旧的旧的” RegRA1 之值之值, 一直到下一个时脉边缘为一直到下一个时脉边缘为止止!6.004 Fall 2002710/29/0起始点: ALU 操作32-位位 (4-字节字节) ADD 指令指令:对对BETA而言而言, 表示表示RegR4 RegR2 + RegR3首先首先, 硬件必需能够硬件必需能够: 读取下一个读取下一个 32-位位 指令指令 指令译码指令译码(DECODE): ADD, SUB, XOR, 等等等等 从缓存器档案进行读取从缓存器档案进行读取 (READ) (Ra, Rb) 之操作之操作; 执行执行(PERFORM)指定的操作指定的操作; 将结果写回将结果写回(WRITE)缓存器档案缓存器档案(Rc).6.004 Fall 2002810/29/0指令取得/译码 使用计数器来取得(FETCH)下一个指令:程序计数器程序计数器 (PC) 使用 PC 来当作内存地址 加4到PC, 然后在时脉结束时加载新的值 从内存取得指令o 直接使用某些指令字段直接使用某些指令字段 (缓存器编号缓存器编号, 16-位之常数位之常数)o 使用使用 位来产生控制讯号位来产生控制讯号INSTRUCTIONWORDFIELDSCONTROL SIGNALS6.004 Fall 2002910/29/0ALU 操作之数据路径OP: RegRc RegRa op RegRb6.004 Fall 20021010/29/0ALU 操作 (常数存在时)OPC: RegRc RegRa op SXT(C)6.004 Fall 20021110/29/0“加载”指令LD: RegRc MemRegRa+SXT(C)6.004 Fall 20021210/29/0“储存”指令ST: MemRegRa+SXT(C) RegRc6.004 Fall 20021310/29/0”跳跃”(JMP)指令JMP: RegRc PC+4; PC RegRa6.004 Fall 20021410/29/0BEQ/BNE(当相等/不等时, 则跳跃) 指令BEQ: RegRc PC+4; if RegRa=0 then PC PC+4+4*SXT(C)BNE: RegRc PC+4; if RegRa0 then PC PC+4+4*SXT(C)6.004 Fall 20021510/29/0“加载相对地址”指令等等等等, “加载相对地址加载相对地址”指令有什么好处呢指令有什么好处呢? 我认为我认为 程序代码是单纯的程序代码是单纯的, 举例来说举例来说, 它们是只读的它们是只读的, 并且存在一个并且存在一个”程序程序”内存区内存区; 但数据是可读但数据是可读/写的写的, 而使用以下方法之一来储存而使用以下方法之一来储存 存在堆栈存在堆栈(STACK)中中 (内部内部); 或或 在某些外部变数中在某些外部变数中; 或或 存在一个外部的储存堆栈存在一个外部的储存堆栈(HEAP).所以所以, 为什么一个指令要设计成可以加载为什么一个指令要设计成可以加载”靠近靠近”这个这个指令的数据呢指令的数据呢? 当数据是当数据是 ”地址地址”及及”其它较大的常数其它较大的常数”时时LDR: RegRc MemPC + 4+ 4*SXT(C)6.004 Fall 20021610/29/0“加载相对地址”(LDR)指令LDR: RegRc MemPC + 4 + 4*SXT(C)6.004 Fall 20021710/29/0例外处理计划计划: 中断正在执行的程序 呼叫例外处理 (像是一个过程调用) 返回并继续执行.我们希望有我们希望有 可修复的中断可修复的中断 以达成以达成 由中央处理器由中央处理器(CPU)或系统产生的同步化事件或系统产生的同步化事件 错误错误 (例如例如, 不合法的指令不合法的指令, 除数为除数为0, 不合法的内存地址不合法的内存地址) 捕捉捕捉 及及 系统呼叫系统呼叫 (例如例如, 从外围读取一个字符从外围读取一个字符) 由由I/O所产生的异步化事件所产生的异步化事件 (例如例如, 键盘键入键盘键入, 收到封包收到封包, 磁盘传输完成磁盘传输完成)关键关键: 对于被中断程序的透明度对于被中断程序的透明度. 这对异步化中断是最难的这对异步化中断是最难的6.004 Fall 20021810/29/0实施方法例外如何运作例外如何运作: 不要执行现在的指令 取而代之的, 假装有一个”强制”的过程调用 储存现在的程序计数(PC) (事实上是现在的 PC + 4) 用例外向量载入PC 同步化例外是0x4, 异步化例外是0x8问题问题: 要把现在的要把现在的PC + 4存到哪呢存到哪呢? 我们的方法: 保留一个缓存器 (R30, 也称 XP) 禁止使用者程序使用XP. 为什么?例子例子: DIV指令并未实施指令并未实施LD(R31,A,R0)LD(R31,B,R1)DIV(R0,R1,R2)ST(R2,C,R31)不合法的操作不合法的操作:PUSH(XP)取得指令于取得指令于 MemRegXPMemRegXP4 4检查检查 DIV DIV 操作码操作码, , 找到缓存器号码找到缓存器号码用软件来执行这个操作用软件来执行这个操作, , 填入结果缓存器填入结果缓存器POP(XP)JMP(XP)以硬件强以硬件强制执行制执行6.004 Fall 20021910/29/0例外Bad Opcode: RegXP PC+4; PC “IllOp”Other: RegXP PC+4; PC “Xadr”6.004 Fall 20022010/29/0控制逻辑实施方法的选择: 以操作码(opcode), 外部跳跃, 以及捕捉逻辑索引的只读存储器(ROM) 可程序化逻辑数组(PLA) “随机”逻辑 (例如: 标准组件逻辑闸)6.004 Fall 20022110/29/0Beta: 我们的”最终答案”6.004 Fall 20022210/29/0下回: 管路化的Beta计算机嗯, 建构一台计算机并不是那么难嘛那么, 我们到 6.004的实验室去, 把Intel的生意抢走吧!6.004 Fall 20022310/29/0
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号