资源描述:
《指令系统体系结构概览》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章指令系统体系结构概览2本章主要内容了解影响指令系统体系结构设计的要素操作数的个数(一般为0,1,2,3)指令长度:固定、可变可访寄存器的个数1,2,3指令寻址方式熟悉内存寻址方式(直接、间接等)了解指令流水线(pipeline)的概念及其对执行效率的影响35.1概述本章是第4章内容的延伸更为详尽地了解指令格式、操作数类型和寻址方法更为详尽地了解计算机组织结构和指令格式之间的内在关系,从而在概念上更深地理解计算机的组成原理45.2指令格式不同处理器设计有不同的指令集,它们在特征上的主要区别:每条指令的比
2、特位数--指令长度基于堆栈还是基于寄存器每条指令操作数的个数操作数类型和长度操作数的位置运算类型5衡量一套指令集的效能指标包括:一个程序占用主存空间大小指令复杂度指令位数(长度)指令总数目5.2指令格式6设计一套指令集,主要考虑下列因素:指令长度长指令、短指令还是可变长度指令操作数的个数(一般为0,1,2,3)可利用的寄存器的个数内存组织结构支持字节访问还是字访问,或者都支持寻址方式直接、间接、变址5.2指令格式7大端(bigendian)和小端(littleendian)的概念:数据在内存中的保存格式顺着
3、地址增大方向,低字节先存,高字节后存,称为小端结构;反之称为大端结构5.2指令格式8假设保存12345678H(从高字节到低字节)5.2指令格式9练习:p156:25.2指令格式10答案5.2指令格式11指令集设计考虑的另一个问题是:CPU内部数据处理方式,有三个选择:堆栈体系结构累加器体系结构通用寄存器体系结构选择的要点:在硬件设计简单、成本、执行速度、方便使用之间取得平衡5.2指令格式12堆栈结构:指令和操作数需要从堆栈中存取,当前指令和操作数隐含在栈顶单元累加器结构:操作数之一隐含在累加器中另一个操作
4、数在内存中,导致较大的内存(总线)访问量通用寄存器结构(GPR):多利用寄存器,较少访问内存比累加器结构快便于编译器编译指令长度较长5.2指令格式13目前多数计算机使用GPR结构,根据指令和操作数所处的位置又分为3种类型:存储器-存储器型:2~3个操作数需要从存储器去取;寄存器-存储器型:至少有一个操作数在寄存器中(Intel,Motorola)装入-存储型:运行前首先把操作数装入寄存器5.2指令格式14操作数的个数:0地址指令(只有操作码)1地址指令(操作码+1个存储器地址)2地址指令(操作码+2个地址)
5、3地址指令(操作码+3个地址)5.2指令格式155.2指令格式0地址指令(堆栈型指令)结构除了load和store指令需要访问一个内存地址外,其它指令使用的操作数隐含在栈内,例如add,mult指令的两个操作数使用栈顶的两个单元实现push/pop仅对栈顶进行操作后面举例16通常使用中缀结构的书写格式较普遍,如:Z=X+Y但堆栈型多使用后缀(postfix)结构(逆波兰式:reversePolish)书写格式:Z=X+YZ=XY+纪念波兰科学家JanLukasiewicz(1878-1956)5.2指令格
6、式17逆波兰书写格式的优点:不需要括弧例如:Z=(XY)+(WU)写成:Z=XY﹡WU﹡+要点:两元运算,运算符置后5.2指令格式18练习:p157;8xy+wz+vu=xy*wz﹡vu﹡++5.2指令格式19答案:b)w×x+w×(u×v+z)=wx﹡wuv*z+*+5.2指令格式20c)(w×(x+y×(u×v)))/(u×(x+y))=WXYUV**+*UXY+*/5.2指令格式210地址堆栈型指令结构编程(8行):Z=XY*WU*+=XY+WU编出的程序:PUSHXPUSHYMULT(隐含着把x
7、,y弹出,乘后再压入)PUSHWPUSHUMULTADD(隐含着把W*U弹出与x*y,加后再压入)PUSHZ5.2指令格式221地址指令(MARIE采用)书写为(7行):LOADX/(存在AC中)MULTYSTORETEMPLOADWMULTUADDTEMPSTOREZ5.2指令格式232地址指令(如Intel,Motorola,6行),Z=XY+WU书写为:LOADR1,XMULTR1,YLOADR2,WMULTR2,UADDR1,R2STOREZ,R15.2指令格式243地址指令(如mainfram
8、es,3行),Z=XY+WU书写为:MULTR1,X,YMULTR2,W,UADDZ,R1,R25.2指令格式25结论:指令操作数越多,指令越长但需要指令数越少典型的时间和空间的折衷在所有的指令体系结构中,并非所有的指令都需要相同数量的操作数,如halt不需要操作数的指令浪费了部分存储空间,为了充分利用这些空间,提出了扩展操作码的概念5.2指令格式26根据指令操作码长度,指令格式有定长和可变长设一个系统有16