计算机组成原理第9讲-指令格式解析_第1页
计算机组成原理第9讲-指令格式解析_第2页
计算机组成原理第9讲-指令格式解析_第3页
计算机组成原理第9讲-指令格式解析_第4页
计算机组成原理第9讲-指令格式解析_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机组成原理Principlesof

ComputerOrganization广义双语教学课程://09/skyclass25/青岛理工高校校级精品课程:///ec/C84/1盛建伦jlsheng@第5章指令系统指令格式InstructionFormats寻址方式Addressingmodes指令系统的设计方法Chapter5InstructionSetsRISCAninstructionset,orinstructionsetarchitecture(ISA),isthepartofthecomputerarchitecturerelatedtoprogramming,includingthenativedatatypes,instructions,registers,addressingmodes,memoryarchitecture,interruptandexceptionhandling,andexternalI/O.2盛建伦jlsheng@指示计算机完成某一特定操作的最基本的吩咐称为计算机的“指令”Instruction。指令是计算机硬件能干脆识别并执行的吩咐,是用机器语言编写程序的基础工具。一条指令能完成某种基本操作,一台计算机有几十条到几百条不同的指令。一台计算机的指令格式及其全部指令的集合称为该计算机的指令系统。指令系统表征着计算机的基本功能,是程序设计者看到的机器的主要属性和软、硬件的主要交界面。指令系统的设计主要包括操作类型、操作内容和指令格式的设计。§5.2指令格式InstructionFormats3盛建伦jlsheng@§5.2.1指令的一般格式计算机是通过执行指令来处理各种数据的,为了指出数据的来源、操作结果的去向及所执行的操作,一条指令应包含下列信息:(1)操作的性质及功能。(2)操作数(Operands)的地址(Address)。(3)操作结果的地址。(4)下一条指令的地址。以上信息可以归纳为两类:一是表示该指令要完成的操作,每种操作都用一个二进制形式的代码表示,称为操作码(OperationCode),操作码一般位于指令字的前部。二是描述操作数或下条指令的地址,称为地址码(AddressCode)。4盛建伦jlsheng@指令的基本格式:操作码地址码指令中的地址码字段用来指出参与操作的操作数的地址,地址码的位数确定能够干脆访问的存储空间范围。指令操作码的长度(二进制位数)确定了指令系统中完成不同操作的指令条数。指令是用来表示限制信息的一组二进制形式的代码,它应包含与自动进行某个基本信息处理操作有关的内容。指令格式InstructionFormats5盛建伦jlsheng@指令的地址结构地址结构是指在指令中给出几个地址。依据地址码中所给出的地址个数,可有几种不同的指令格式:(1)三地址指令Three-AddressInstruction格式:OPCODEA1A2A3其中:OPCODE—操作码,A1—第一操作数地址,A2—其次操作数地址,A3—操作结果的存贮地址。其操作表达式为:(A1)OP(A2)→A3(2)两地址指令Two-AddressInstruction格式:OPCODEA1A2其操作表达式为:(A1)OP(A2)→A1目的操作数源操作数6盛建伦jlsheng@(3)一地址指令One-AddressInstruction格式:OPCODEA一地址指令常被称为“单操作数指令”,事实上它有两种状况。一是参与操作的只有一个操作数,在对地址A所指定的操作数执行OPCODE规定的操作后,产生的结果仍存回到该地址中。例如,加1、减1、求反、(移位)等都是单操作数指令。二是参与操作的有两个操作数,其中一个是隐含的。例如,一些对两个操作数进行算术逻辑运算的指令也接受这种格式。此时,另一个操作数(目的操作数)隐含在累加器中,指令执行后目的操作数为操作结果取代。又如,堆栈操作指令也是有2个操作数的一地址指令,在指令中给出了一个操作数地址,另一个操作数隐含在栈顶。7盛建伦jlsheng@(4)零地址指令Zero-AddressInstruction格式:OPCODE指令中只有操作码,没有操作数,所以也称无操作数指令。零地址格式的指令有两种状况:①无需任何操作数。如空操作指令,停机指令等。②操作数的地址是隐含的。(5)多地址指令某些计算机设置有一些功能很强的、用于实现成批数据处理的指令。如字符串处理指令,向量、矩阵运算指令等。为了描述一批数据,指令中须要多个地址来指出数据存放的首地址、长度和下标等信息。例如,CDCSTAR-100的矩阵运算指令,其地址码部分有7个地址字段,用以指出参与运算的两个矩阵及结果的存储状况。8盛建伦jlsheng@操作码的编码指令操作码通常有两种编码格式。(1)固定长度操作码Fixed-LengthOpcode即操作码的长度固定,且集中放在指令字的一个字段中。这种格式有利于简化硬件设计,削减指令译码时间。若操作码长度为K位,则最多可有2k条不同指令。(2)可变长度操作码Variable-LengthOpcode即操作码的长度可变,且分散地放在指令字的不同字段中。这种格式能有效地压缩程序中操作码的平均长度。但将增加指令译码和分析的难度,使限制器的设计困难化。例如,操作码扩展技术,哈夫曼编码等。§5.2.2指令操作码的扩展技术操作码扩展技术,在指令字中用一个固定长度的字段来表示基本操作码,对于一部分不须要某个地址码的指令,把操作码扩充到该地址字段。既能充分利用指令字的各个字段,又能在不增加指令长度的状况下扩展操作码的长度,以表示更多的指令。【例1】某计算机的字长为16位,欲设计的指令系统有零地址指令16条,一地址指令15条,两地址指令15条及三地址指令15条,设每个地址码字段为4位,应如何设计?OPCODEA1A2A310盛建伦jlsheng@【例1】某计算机的字长为16位,欲设计的指令系统有零地址指令16条,一地址指令15条,两地址指令15条及三地址指令15条,设每个地址码字段为4位,应如何设计?解1.按固定长度操作码格式设计。假如要求指令字长是字节的整数倍,则零地址指令长度应当为8位,一地址指令长度应当为16位,二地址指令长度应当为16位,三地址指令长度应当为24位。地址码字段的长度均可大于4位。零地址指令长度为6位,一地址指令长度为10位,二地址指令长度为14位,三地址指令长度为18位。∵26=64

>61∴操作码长度为6位共61条指令。11盛建伦jlsheng@【例1】某计算机的字长为16位,欲设计的指令系统有零地址指令16条,一地址指令15条,两地址指令15条及三地址指令15条,设每个地址码字段为4位,应如何设计?解2.按操作码扩展技术设计。指令格式为:OPA1A2A315121187430指令格式包括1个基本操作码字段和3个地址码字段。各字段均为4位,指令字长为16位。要求三地址指令15条,24=16>15,所以,基本操作码字段长度为4位。地址码字段4位。12盛建伦jlsheng@4位基本操作码,共有16个码位。其中0000~1110作为15条三地址指令的操作码,1111作为扩展标记用于把操作码扩展到A1。15条二地址指令操作码为11110000~11111110。留下一个码字11111111作为扩展标记用于把操作码扩展到A2。15条一地址指令的操作码为111111110000~111111111110。码字111111111111作为扩展标记用于把操作码扩展到A3。16条零地址指令的操作码为1111111111110000~1111111111111111OPA1A2A31512118743013盛建伦jlsheng@此外还有其它的扩展方法。例如,可以形成15条三地址指令,14条两地址指令,31条一地址指令和16条零地址指令。本例所用的操作码扩展方法称为15/15/15法。它是指在4位二进制表示的16个码点中,用15个来表示最常用指令的操作码,剩下的一个码字用于把操作码扩展到下一个4位。而下一个4位表示的16个码字也按同样的原则处理和扩展。作为今日的作业题14盛建伦jlsheng@§5.2.3指令长度与数据字长的关系

指令的长度(指令字长InstructionLength)主要取决于操作码的长度、操作数地址的长度和操作数地址的个数。指令的长度有定长格式的,也有变长格式的。当操作数地址是主存储器的干脆地址时,其地址码的位数就很长。当操作数地址是寄存器号时,地址码的位数就很短。所以,在两地址和多地址指令中通常只有一个操作数地址是存储器干脆地址。为了充分利用存储空间,指令的长度通常为字节的整数倍。指令的长度与机器的字长没有固定的关系,既可以大于或等于机器的字长,也可以小于机器的字长。指令的长度大于机器的字长时称为长格式指令,它须要几个连续字单元或字单元加字节单元来存储。指令的长度小于或等于机器的字长时,称为短格式指令,它只需一个字单元或一至几个连续的字节单元来存储。15存储器按:字编址字节编址位编址数据在存储器中的存放方式字地址为低字节地址字地址为高字节地址37621540字地址04低字节04512673字地址04高字节低字节在前高字节在前地址000001010011100101110111数据ABCDEFGHJKLMNOPQ存储器内容为GHEFCDABPQNOLMJK存储器内容为ABCDEFGHJKLMNOPQ16盛建伦jlsheng@地址(十进制)04812162024283236双字双字(地址32)双字双字(地址24)半字(地址20)半字(地址22)半字(地址16)半字(地址18)字节(地址8)字节(地址9)字节(地址10)字节(地址11)字(地址4)字(地址0)字节(地址14)字节(地址15)字节(地址13)字节(地址12)边界对准地址(十进制)048字节(地址7)字节(地址6)字(地址2)半字(地址10)半字(地址8)半字(地址0)字(地址4)边界未对准存储器中的数据存放(存储字长为32位)§5.4指令类型指令的操作类型按功能可分成算术逻辑运算、数据传送、程序限制、输入输出等类型。1.算术逻辑运算Arithmetic&Logical一些低档的微型机只有定点加减运算指令、求补指令、比较指令、加1减1指令等算术运算指令。较高档的机器还有十进制运算指令、定点乘除指令、浮点运算指令等。一些大型机、巨型机还设有向量运算指令,可以干脆对整个向量Vector或矩阵Array进行求和、求积等运算。逻辑运算类指令包括逻辑与、或、非、异或和测试等。有些机器还有位操作BitManipulation、位测试等指令。算术逻辑运算指令都影响状态标记位Flag(程序状态字PSW)18盛建伦jlsheng@2.移位操作Shift移位有算术移位、逻辑移位和循环移位三种。可以实现对操作数左移或右移一位或多位。循环移位Rotate有带进位位的大循环和不带进位位的小循环两种,常用于实现循环式限制、压缩BCD码凹凸字位互换及多倍字长的移位等。6336CyCyCyCy交换后19盛建伦jlsheng@3.数据传送DataTransfer在程序中运用最多的是数据传送指令。这类指令的功能是实现寄存器与寄存器,寄存器与存储单元以及存储单元与存储单元之间的数据传送,包括对数据的读(取数load)和写(存数store)。数据传送时,数据从源地址Source传送到目的地址Destination,源地址中的数据保持不变。有些机器设置有数据块传送指令,可一次把多达64K的数据从一个存储区传送到另一个存储区。堆栈的压入Push和弹出Pop指令也属于数据传送指令。数据交换指令则完成源操作数与目的操作数的互换。20盛建伦jlsheng@4.转移(程序限制ProgramControl)这类操作主要用于限制程序的流向,包括停机、无条件转移Jump、条件转移、子程序调用与返回、中断和陷井指令等。条件转移ConditionalBranch是依据对某些条件测试的结果(通常是前面执行的算术逻辑运算指令对状态标记位的影响)确定是否发生转移,若条件满足则转移,否则依次执行下一条指令。转移还有确定转移和相对转移的区分。确定转移是转移到一个给定的目标地址(在整个存储器范围内)。相对转移是相对当前地址(程序计数器PC内容)向前或向后转移一个位移量的范围(小范围)。21盛建伦jlsheng@子程序调用SubroutineCall与返回SubroutineReturn指令也有条件调用/条件返回和无条件调用/无条件返回的区分。中断指令设置中断类型,开放或禁止中断Interrupt等。陷井Trap是一种异样中断,其目的不是为了恳求CPU正常处理中断,而是为了把发生的各种事务通知CPU,并依据故障状况转入相应的故障处理程序。陷井指令一般不供应应用户运用。以上四类操作是各种计算机都有的最基本的指令操作。22盛建伦jlsheng@5.输入输出Input/Output输入输出指令用来实现主机与外设间的各类信息交换,如数据的输入和输出、向外设发出的限制吩咐、检测外设的工作状态等。由于I/O端口的数目远少于存储单元数,故此类指令的地址码较短。有些计算机接受内存和外设(接口)统一编址的方法,把外设看作内存单元,全部能对内存单元进行操作的指令均可对外设端口进行操作(包括算术逻辑运算)。这样的计算机就没有输入输出指令。6.字符串处理字符串处理指令实现对字符串String的非数值处理,包括:字符串的传送、字符串比较、字符串查询、字符串转换等。23盛建伦jlsheng@7.特权指令特权指令是用于系统资源安排和管理的指令。例如,检测用户的访问权限,修改段表、页表,变更系统的工作模式,任务的创建和切换等。8.多处理机指令MultiprocessorInstruction多处理机指令是特地为支持多处理机系统而设置的指令。9.多媒体指令MultimediaInstruction多媒体指令是特地为处理多媒体数据而设置的指令。例如,Pentium处理器的MMX指令。特权指令只能用于操作系统和其他系统软件。24盛建伦jlsheng@§5.4.3指令系统的兼容性Compatibility从20世纪60年头的IBM360大型机起先,出现了系列机。在一个系列内有不同档次的机型。系列机中的中学低档机都具有相同的系统结构,相同的指令系统。从今出现了“兼容”Compatible。25盛建伦jlsheng@计算机组成原理设计性作业课题2指令系统设计设计一个简洁的(没有中断功能)16位RISC定点处理器的指令系统。指令系统设计的任务包括设计:指令功能、指令格式、寻址方式、全部指令的助记符、指令编码等。试分析一个简洁的计算机至少须要哪些指令就能够完成最基本的运算?对于RISC机,适当增加一些功能比较强的更有用的指令有利于编程。提示:指令系统设计与寄存器结构、标记寄存器、等有关。可以参考“定点运算器设计”的通用寄存器组、标记寄存器。第6周周末完成26盛建伦jlsheng@试验课题1ALU设计试验内容:依据题目要求设计一个16位ALU的逻辑,确定外部的端口(名称、有效电平)和内部各元件的连接,画出系统框图和逻辑图,设计仿真数据,用VHDL编程和仿真。一、主要元件设计

1.4位并行进位加法器功能要求:能完成两个4位二进制数(补码和无符号数)的加法和逻辑加运算。内部有并行进位链。可以扩展成多位组。2.组间并行进位链逻辑功能要求:4个4位小组的组间并行进位链逻辑。将组间并行进位链逻辑与4个4位超前进位加法器连接可以构成16位超前进位加法器。可参考74182的逻辑函数。27盛建伦jlsheng@试验课题1ALU设计一、主要元件设计3.函数发生器功能要求:能把输入的两个16位二进制数进行变换,与后面的16位超前进位加法器协作完成两个16位二进制数(补码和无符号数)的8种算术运算(有些运算考虑低位来的进位)和8种逻辑运算。提示:ALU的功能参考数字逻辑课程的“多功能加法器”试验。二、顶层设计用层次结构设计的方法设计一个16位ALU。内部包括4个4位并行进位加法器、组间并行进位链、16位函数发生器等。功能要求:能完成两个16位二进制数以及低位来的进位的8种算术运算和8种逻辑运算。可参考74181。

28盛建伦jlsheng@试验课题1ALU设计三、仿真设计仿真波形数据,要考虑到全部可能的状况。在试验报告中必需清晰说明仿真波形数据是怎样设计的。四、深化的课题上面设计的ALU还没有标记寄存器,假如想为ALU增加标记寄存器,应当怎样设计?标记位是怎样产生的?29盛建伦jlsheng@5-1,4,5,6HomeworkInstructionspersecond-Mostconsumerspickacomputerarchitecture(normallyIntelIA32architecture)tobeabletorunalargebaseofpre-existingpre-compiledsoftware.Beingrelativelyuninformedoncomputerbenchmarks,someofthempickaparticularCPUbasedonoperatingfrequency).SomesystemdesignersbuildingparallelcomputerspickCPUsbasedonthespeedperdollar.ComputerprogrammerswhoprogramdirectlyinassemblylanguagewantaCPUtosupportafullfeaturedinstructionset.30盛建伦jlsheng@七、(共7分)推断题(请在正确的句子前写T,错误的句子前写F)()1.零的原码表示形式不是唯一的。()2.两个符号相同的浮点数相加后必需进行一次右规。()4.带符号机器数的符号位都用0表示正数,1表示负数。()5.补码加减法运算,符号位产生的进位是模。()3.计算机的ALU是用加法和部分积右移操作实现乘法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论