设计一组指令集.ppt

上传人:小飞机 文档编号:5316514 上传时间:2023-06-25 格式:PPT 页数:27 大小:648.51KB
返回 下载 相关 举报
设计一组指令集.ppt_第1页
第1页 / 共27页
设计一组指令集.ppt_第2页
第2页 / 共27页
设计一组指令集.ppt_第3页
第3页 / 共27页
设计一组指令集.ppt_第4页
第4页 / 共27页
设计一组指令集.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《设计一组指令集.ppt》由会员分享,可在线阅读,更多相关《设计一组指令集.ppt(27页珍藏版)》请在三一办公上搜索。

1、6.004 Fall 2002,10/17/0,L12 Instruction Set 1,设计一组指令集,缴交实作课报告日:今天 下周二10/22,6.004 Fall 2002,10/17/0,L12 Instruction Set 2,让我们来建构一个简易的计算机吧,计算 N*(N-1)的数据路径,L.E.=可载入(load enable).缓存器只在LE=1时载入新值,ANSWER,6.004 Fall 2002,10/17/0,L12 Instruction Set 3,可程序化控制系统,以这个数据路径来计算 N*(N-1)是一个多步骤的程序.我们可以用一个有限状态机来控制这个程序的

2、每一步骤.如果可以让不同的控制序列加载这个控制有限状态机,那就是说这机器必需是可程序化的.,6.004 Fall 2002,10/17/0,L12 Instruction Set 4,一个初步的程序,再一次,写一个控制程序不外乎是填表:,6.004 Fall 2002,10/17/0,L12 Instruction Set 5,一个最佳化的程序,有些部分的程序可以被同时计算:,6.004 Fall 2002,10/17/0,L12 Instruction Set 6,计算阶乘,可程序化系统的好处是:可们可以重新设定组态来计算新的函数为了要计算 N!,我们需要加上一些新的逻辑电路以及一个输入到控

3、制有限状态机:,6.004 Fall 2002,10/17/0,L12 Instruction Set 7,计算阶乘的控制架构,可程序性使得我们可以重复使用数据路径来解新的问题.我们所需要的是一个通用的数据路径.它必需能够有效率地解大部分的问题,同时可用较简单的方式来控制它.,6.004 Fall 2002,10/17/0,L12 Instruction Set 8,可程序化引擎,我们已经用相同的数据路径来计算 N*(N-1)及 阶乘;还有很多各式各样的计算,是可以简单地重新写入程序到控制有限状态机来达成的.虽然我们的小机器是可程序化的,但它还不够做为一个实用的通用计算器 并且无法通过Turn

4、ing通用测试.以下有三个主要的理由:1.它的储存空间很有限:它缺少了Turing机器所需的“可延伸”内存资源.2.它只有很少的操作功能.3.它的”程序”是固定的.它缺少了(来举例来说)产生新程序并执行的能力.,6.004 Fall 2002,10/17/0,L12 Instruction Set 9,一般用途计算器冯诺曼(von Neumann)模型,有许多一般用途计算器的架构被提出并探讨.几乎大部分近代实用的计算器是以约翰冯诺曼(John von Neumann)在1940年代后期所提出的架构来建构的.它包含了以下几个主要的组件:,中央处理单元(CPU):包含几个缓存器,以及可以对缓存器的

5、内容执行一组特定的操作之逻辑.,内存:储存N个W位的字组,其中W一个固定的架构参数,而N可以依需求被延申.,输入/输出:对外沟通的组件.,输入/输出,中央处理单元,主存储器,6.004 Fall 2002,10/17/0,L12 Instruction Set 10,储存程序计算器,冯诺曼 架构轻易地指出前述简单可程序化计算机中的前两项限制:较丰富的操作功能,以及 可延伸的内存.但是它如何达到”可程序化”这项要求呢?,CPU 取得并执行(解译)连续的程序指令.程序对解译器来说只是简单的数据 就像在一个通用的Turing机器!单一个可延伸的资源共享区 主存储器 限制了数据和程序的大小.,主要概念

6、:内存不只储存数据,也储存了型成一个程序的编码指令.,中央处理单元,6.004 Fall 2002,10/17/0,L12 Instruction Set 11,冯诺曼计算机解析,缓存器,操作,指令被编码为二进制数据程序计数器(PC):下一个将被执行的指令之地址将指令转译成数据路径的控制讯号之逻辑,MEMORY,控制单元,指令,地址,地址,资料,控制讯号,状态,6.004 Fall 2002,10/17/0,L12 Instruction Set 12,指令集架构,如何选择指令的编码.取舍:效能,压缩度,可程序性一致性.不同的指令应该大小相同?执行时间长度相同?趋势:一致性提供了简单,速度,以

7、及管路技术的可行性.复杂度.有多少不同的指令?何种等级的操作?支持特定软件操作的等级:数组指位,过程调用,“多项式求值”,等等“简化指令集计算机”(RISC)哲学:简易指令,最佳化速度工程及艺术的综合体.尝试(以模拟来达成)是现有最好的技术来决定架构!,我们所使用的代表架构:架构!,6.004 Fall 2002,10/17/0,L12 Instruction Set 13,程序模型一个具代表性,简单,当代的RISC,处理器状态,主存储器,通用缓存器,虽然每一个记忆字组(word)是32位宽,由于历史的因素,还是使用字节(byte)内存地址.因为每一个字组(word)包含了四个8位的字节(by

8、te),两个连续的字组的地址相差4.,指令取得/执行 循环:取得 MemPC PC=PC+4?执行所取得的指令(可能会改变 PC!)重复!,6.004 Fall 2002,10/17/0,L12 Instruction Set 14,有两种指令格式:OPCODE,3个缓存器OPERAND(2个来源,一个目标)OPCODE,2个缓存器OPERAND,16-bit字母常数,指令格式,所有的 指令可以编码成单一个32位字组(word),其中的字段将以下的组合编码 一个6-bit 操作码(OPCODE)(指示64个指令中的一个)数个5-bit 运算区(OPERAND)地址,每个指示32个缓存器中的一个

9、 一个内含的16-bit常数(“字母”),6.004 Fall 2002,10/17/0,L12 Instruction Set 15,ALU 操作,简单的编码操作:加法(ADD)指令,其它相似的ALU操作指令:算数:加法(ADD),减法(SUB),乘法(MUL),除法(DIV)比较:比较相等(CMPEQ),比较小于(CMPLT),比较小或等于(CMPLE)布尔:和(AND),或(OR),互斥(XOR)位移:左位移(SHL),右位移(SHR),右运算位移(SAR),符号表示:ADDC(r1,r2,r3),(“汇编语言”),OPCODE=110000,表示ADDC,rc=3,表示R3 做为目标,

10、ra=1,rb=2 表示 R1 与 R2做为来源位置,6.004 Fall 2002,10/17/0,L12 Instruction Set 16,ALU 常数操作,其它相似的ALU操作指令:算数:ADDC,SUBC,MULC,DIVC比较:CMPEQC,CMPLTC,CMPLEC布尔:ANDC,ORC,XORC位移:SHLC,SHRC,SARC,符号表示:ADDC(r1,-3,r3),OPCODE=110000,表示ADDC,rc=3,表示R3 做为目标,ra=1,表示R1 做为第一个OPERAND,常数栏,表示-3 做为第二个OPERAND(正负号延伸!),6.004 Fall 2002,

11、10/17/0,L12 Instruction Set 17,我们需要内建的常数吗?,使用常数OPERAND的操作百分比,一个回答架构问题的方法就是:使用小心选择之代表性的标准检查程序(benchmark)(程序 及/或 编码序列)来评估不同的重要性.然后依据某些指标(成本,效能)来做出”最好的”选择.,6.004 Fall 2002,10/17/0,L12 Instruction Set 18,宝宝的第一个Beta程序(片段),假定N被储存在r1中,我们想计算 N*(N-1),并将结果储存在r2:,这两个指令完成我们前述的小型单点机器所做的事.当然了,局限于使用缓存器来储存使得我们的野心变小

12、了.它相当于一个FSM的有限储存空间!需求:支持读取及写入主存储器位置的指令集.,SUBC(r1,1,r2)|将 N-1 放置在 r2MUL(r2,r1,r2)|将 N*(N-1)留在 r2,6.004 Fall 2002,10/17/0,L12 Instruction Set 19,载入 及 储存,LD(ra,const,rc)Regrc=MemRegra+sxt(const)“将内存(地址为:常数C加上ra的内容)中的内容加载缓存器rc”缩写:LD(C,rc)表示 LD(R31,C,rc)ST(rc,const,ra)MemRegra+sxt(const)=Regrc“将rc的内容储存至内

13、存(地址为:常数C加上ra的内容)中”缩写:ST(rc,C)表示 ST(rc,C,R31),虽然 使用字节地址,但只支持存取字组(word)对齐的 32-bit字组(word)地址.低的两个地址字符是忽略的!,6.004 Fall 2002,10/17/0,L12 Instruction Set 20,储存的常规,变量存在内存中 操作是在缓存器中完成的 缓存器储存了”暂时”的变量,地址在编译时即被指定,编译方法:载入,计算,储存,编译成,或是,写成更易懂的方式,6.004 Fall 2002,10/17/0,L12 Instruction Set 21,绝对:“(Constant)”Value

14、=Memconstant 用途:存取静态数据间接(也称为 缓存器推迟):“(Rx)”Value=MemRegx 用途:指标存取置换:“constant(Rx)”Value=MemRegx+constant 用途:存取区域性变量索引:“(Rx+Ry)”Value=MemRegx+Regy 使用:数组存取(基底+索引),一般的“寻址模式”,内存间接:“(Rx)”Value=MemMemRegx 用途:存取内存中的指针自动递加:“(Rx)+”Value=MemRegx;Regx+用途:循序之指标存取自动递减:“-(Rx)”Value=RegX-;MemRegx 用途:堆垒操作缩放:“constant

15、(Rx)Ry”Value=MemRegx+c+d*Regy 用途:数组存取(基底+索引),嗯!这样的复杂度值得这代价吗?我们需要 成本/受益 分析!,藉由正确地选择Ra 和常数,可以达成这些寻址模式,6.004 Fall 2002,10/17/0,L12 Instruction Set 22,记忆体操作:使用量,不同记忆体操作模式的使用量,记忆体操作:使用量,取自 Hennessy&Patterson 的教课书,置换,间接,缩放,自动递加,内存间接,6.004 Fall 2002,10/17/0,L12 Instruction Set 23,至目前的功能:表示式的计算翻译一个表示式:,int

16、x,y;y=(x-3)*(y+123456)x:long(0)y:long(0)c:long(123456).LD(x,r1)SUBC(r1,3,r1)LD(y,r2)LD(c,r3)ADD(r2,r3,r2)MUL(r2,r1,r1)ST(r1,y),变量 被储存在所配置的主存储器中变数 存取 翻译成 LD 或 ST操作 翻译成 ALU 指令小常数 翻译成 含内建常数的 ALU指令“大”常数 翻译成初使化过的变数,注:这里我们假设变量地址可以16-bit常数表示!,6.004 Fall 2002,10/17/0,L12 Instruction Set 24,我们可以执行任何的算法吗?,至目前

17、为止的模型:循序执行指令 执行的操作数=程序中的指令数!,好消息:程序不会进入“永久循环”!对目前的Beta子集,可以解决终止的问题!,坏消息:无法计算阶乘:只支持有限时的计算;无法达成循环,例如:阶乘!,不完整!,需要:改变PC的能力.,6.004 Fall 2002,10/17/0,L12 Instruction Set 25,Beta 分流指令,Beta的分流指令指供了有条件改变PC的能力,使它指向一个新的附近的地址.并且(可选择地)将我们来自的地址记录下来(在Rc中)(对过程调用相当有用).,BEQ(Ra,label,Rc):当相等时分流,BNE(Ra,label,Rc):当不等时分流

18、,注:“offset”是一个有号常数,它被编码为指令的一部分!,6.004 Fall 2002,10/17/0,L12 Instruction Set 26,现在 我们可以执行阶乘了.,概要(以C语言表示):输入n,输出 ans r1,r2 当成暂存变量使用 采行我们稍早使用的数据路径之算法.,以汇编语言表示的Beta 码:,n:,ans:,loop:,done:,6.004 Fall 2002,10/17/0,L12 Instruction Set 27,总结,可程序化的数据路径提供了一些演算上的弹性,只需要改变控制结构即可.令人感兴趣的是控制结构的最佳化问题 例如:什么操作可以被同时执执?一般用途计算的冯诺曼模型:需要支持足够强力的操作功能可延伸的内存将程序储存在内存中的翻译器指令集架构(ISA)之设计所需的取舍,通常取决于标准检查程序测试结果:艺术,工程,评估及累进的最佳化编译方针用以实施一般种类计算之软件 的 执行时间“训练”一般是由编译器,执行时间之链接库,操作系统所决定.我们将在这方面做更多的探讨!,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号