计算机组成原理

您所在的位置:网站首页 计算机指令的地址码 计算机组成原理

计算机组成原理

2024-07-17 10:43:40| 来源: 网络整理| 查看: 265

yux

文章目录 第1讲:指令系统的设计主 要 内 容Instruction Set Design一条指令须包含的信息一条指令中应该有几个地址码字段? 4.2.1基本设计问题从指令执行周期看指令设计涉及的问题**(这一章的内容)**指令格式的设计 4.2.2 操作数类型和存储方式IA-32 & MIPS Data Type 4.2.3寻址方式 Addressing Modes基本寻址方式的算法和优缺点偏移寻址方式相对寻址实现公共子程序的浮动相对寻址实现相对转移基址寻址实现程序重定位变址寻址实现线性表元素的存取 ==Example:MIPS中的循环处理==4.2.5操作码编码Instruction Format(指令格式)定长操作码编码 Fixed Length OpcodesIBM370指令格式扩展(变长)操作码编码 Expanding OpcodesPDP-11中典型指令格式 4.2.6标志信息的生成与使用条件测试方式标志信息是干什么的?IA-32中的条件转移指令 4.2.7指令系统设计风格指令设计风格 -- 按操作数位置指定风格来分指令风格比较Examples of Register Usage 指令设计风格 – 按指令格式的复杂度来分复杂指令集计算机CISCTop 10 80x86 Instructions RISC设计风格的主要特点指令系统举例: Address & Registers指令系统举例:Pentium指令格式Pentium处理器的寻址方式保护模式下的寻址方式存储器操作数的寻址方式Pentium处理器的存储器寻址 MMX(Microprocessor Media Extension)指令技术 4.2.8异常和中断处理机制 第一讲小结计算机组成原理-第四章 指令系统 下

第1讲:指令系统的设计 主 要 内 容 指令系统设计的基本原则指令类型和格式数据类型 寄存器组织、存储器组织 操作数的寻址方式 立即 / 寄存器 / 寄存器间接 / 直接 / 间接 / 堆栈 / 偏移 操作码的编码 定长编码法、变长扩展编码法 条件码和标志寄存器指令设计风格异常和中断处理机制 Instruction Set Design 指令系统处在软/硬件交界面,同时被硬件设计者和系统程序员看到硬件设计者角度:指令系统为CPU提供功能需求,要求易于硬件设计系统程序员角度:通过指令系统使用硬件,要求易于编写OS和编译器指令系统设计的好坏还决定了:计算机的性能和成本 在这里插入图片描述 回顾:冯.诺依曼结构机器对指令规定: 用二进制表示,和数据一起存 放在主存中由两部分组成:操作码和操作数(或其地址码) Operation Code: defines the operation typeOperands: indicate operation source and destination 一条指令须包含的信息 问题:一条指令必须明显或隐含包含的信息有哪些? 操作码:指定操作类型 (操作码长度:固定/可变)源操作数参照:一个或多个源操作数所在的地址 (操作数来源:主(虚)存/寄存器/I/O端口/指令本身)结果值参照:产生的结果存放何处(目的操作数) (结果地址:主(虚)存/寄存器/I/O端口)下一条指令地址:下条指令存放何处 (下条指令地址 :主(虚)存) (正常情况隐含在PC中,改变顺序时由指令给出) 一条指令中应该有几个地址码字段?

零地址指令 (1) 无需操作数 如:空操作/停机等 (2) 所需操作数为默认的 如:堆栈/累加器等 形式:在这里插入图片描述

一地址指令 其地址既是操作数的地址,也是结果的地址 (1) 单目运算:如:取反/取负等 (2) 双目运算:另一操作数为默认的 如:累加器等 形式:在这里插入图片描述

二地址指令(最常用) 分别存放双目运算中两个操作数,并将其中一个地址作为结果的地址。 形式:在这里插入图片描述

三地址指令(RISC风格) 分别作为双目运算中两个源操作数的地址和一个结果的地址。 形式:在这里插入图片描述

多地址指令 用于成批数据处理的指令,如:向量 / 矩阵等运算的SIMD指令。

4.2.1基本设计问题 从指令执行周期看指令设计涉及的问题**(这一章的内容)** 从存储器取指令 指令地址、指令长度(定长/变长)对指令译码,以确定将要做什么操作 指令格式、操作码编码、操作数类型计算操作数地址并取操作数 地址码、寻址方式、操作数格式和存放方式进行相应计算,并得到标志位 操作类型、标志或条件码将计算结果保存到目的地 结果数据位置(目的操作数)计算下条指令地址(通常和取指令同时进行) 下条指令地址(顺序 / 转移) 在这里插入图片描述 指令格式的设计 指令格式的选择应遵循的几条基本原则 应尽量短要有足够的操作码位数指令编码必须有唯一的解释,否则是不合法的指令指令字长应是字节的整数倍合理地选择地址字段的个数指令尽量规整 与指令集设计相关的重要方面 操作码的全部组成:操作码个数 / 种类 / 复杂度 LD/ST/INC/BRN 四种指令已足够编制任何可计算程序,但程序会很长数据类型:对哪几种数据类型完成操作指令格式:指令长度 / 地址码个数 / 各字段长度通用寄存器:个数 / 功能 / 长度寻址方式:操作数地址的指定方式下条指令的地址如何确定:顺序,PC+1;条件转移;无条件转移;…… 一般通过对操作码进行不同的编码来定义不同的含义,操作码相同时,再由功能码定义不同的含义! 4.2.2 操作数类型和存储方式 操作数是指令处理的对象,与高级语言数据类型对应,基本类型有哪些?地址(指针) 被看成无符号整数,用来参加运算以确定主(虚)存地址数值数据 定点数(整数):一般用二进制补码表示 浮点数(实数):大多数机器采用IEEE754标准 十进制数:用NBCD码表示,压缩/非压缩(汇编程序设计时用)位、位串、字符和字符串 用来表示文本、声音和图像等 » 4 bits is a nibble(一个十六进制数字) » 8 bits is a byte » 16 bits is a half-word (若一个字为32位) » 32 bits is a word (若一个字为32位)逻辑(布尔)数据 按位操作(0-假/1-真) 存放在寄存器或内存单元中 IA-32 & MIPS Data Type IA-32 基本类型: » 字节、字(16位)、双字(32位)、四字(64位)整数: » 16位、32位、64位三种2-补码表示的整数 » 18位压缩8421 BCD码表示的十进制整数无符号整数(8、16或32位)近指针:32位段内偏移(有效地址)浮点数:IEEE 754(80位扩展精度浮点数寄存器) MIPS 基本类型: » 字节、半字(16位)、字(32位)、四字(64位)整数: 16位、32位、64位三种2-补码表示的整数无符号整数:(16、32位)浮点数:IEEE 754(32位/64位浮点数寄存器) 4.2.3寻址方式 Addressing Modes 什么是“寻址方式”? 指令或操作数地址的指定方式。即:根据地址找到指令或操作数的方法。地址码编码由操作数的寻址方式决定地址码编码原则: 指令地址码尽量短 操作数存放位置灵活,空间应尽量大 地址计算过程尽量简单 为什么? 目标代码短,省空间 利于编译器优化产生高效代码 指令执行快 指令的寻址----简单 正常:PC增值 跳转 ( jump / branch / call / return ):同操作数的寻址操作数的寻址----复杂(想象一下高级语言程序中操作数情况多复杂) 操作数来源:寄存器 / 外设端口 / 主(虚)存 / 栈顶 操作数结构:位 / 字节 / 半字 / 字 / 双字 / 一维表 / 二维表 /… 通常寻址方式特指“操作数的寻址”寻址方式的确定 (1)没有专门的寻址方式位(由操作码确定寻址方式) 如:MIPS指令,一条指令中最多仅有一个主(虚)存地址,且仅有一到两种寻址方式,Load/store型机器指令属于这种情况。 (2)有专门的寻址方式位 如:X86指令,一条指令中有多个操作数,且寻址方式各不相同,需要各自说明寻址方式,因此每个操作数有专门的寻址方式位。有效地址的含义 操作数所在存储单元的地址(可能是逻辑地址或物理地址),可通过指令的寻址方式和地址码计算得到基本寻址方式 立即 / 直接 / 间接 / 寄存器 / 寄存器间接 / 偏移 / 堆栈 基本寻址方式的算法和优缺点

假设:A=地址字段值,R=寄存器编号, EA=有效地址, (X)=X中的内容 在这里插入图片描述

在这里插入图片描述

问题:以上各种寻址方式下,操作数在寄存器中还是在存储器中?有没有可能在磁盘中?什么情况下,所取数据在磁盘中?只有当操作数在存储器中时,才有可能“缺页”,此时操作数在磁盘中! 偏移寻址方式

指令中给出的地址码A称为形式地址 在这里插入图片描述

偏移寻址:EA=A+ ( R ) R可以明显给出,也可以隐含给出 R可以为PC、基址寄存器B、变址寄存器 I 相对寻址: EA=A+(PC) 相对于当前指令处位移量为A的单元基址寻址: EA=A+(B) 相对于基址(B)处位移量为A的单元变址寻址: EA=A+(I) 相对于首址A处位移量为(I)的单元 相对寻址 指令地址码给出一个偏移量(带符号数),基准地址隐含由PC给出。即:EA=(PC)+A (ex. MIPS’s instruction: Beq)可用来实现程序(公共子程序)的浮动 或 指定转移目标地址注意:当前PC的值可以是正在执行指令的地址或下条指令的地址 基址寻址 指令地址码给出一个偏移量,基准地址明显或隐含由基址寄存器B给出。即:EA=(B)+A (ex. MIPS’s instructions: lw / sw)可用来实现多道程序重定位 或 过程调用中参数的访问 变址寻址 指令地址码给出一个基准地址,而偏移量(无符号数)明显或隐含由变址寄存器 I 给出。即:EA=(I)+A可为循环重复操作提供一种高效机制,如实现对线性表的方便操作 相对寻址实现公共子程序的浮动

在这里插入图片描述

相对寻址实现相对转移

举例:双字节定长指令字,其中转移指令的第一字节是操作码Jxx,第二字节是位移量D,用补码表示,则转移目标指令相对于转移指令的范围为多少?-128~+127 ?不一定!

若转移指令地址为2000H,转移目标地址为1FF0H,总是在取指令同时对PC增量,则转移指令第二字节位移量为多少?不知道! 在这里插入图片描述

只有确定了是按字还是字节编址、位移量D是指指令条数还是单元数,才能确定目标地址范围(目标地址范围不等于位移量D的表示范围!)。 在这里插入图片描述

当按字节编址且D为单元数时,转移目标地址= (PC)+2+D 跳转范围:-126~128单元 - 63~64条指令

1FF0H = 2000H+2+D D=1FF0H–2002H=EEH(–18)

举例:MIPS指令“beq $1, $2, 25”的转移目标地址为(PC)+4+4*25,这里的25是指令条数而不是单元数,MIPS采用定长指令字,按字节编址, 所有指令的长度都是32位(4字节)。

基址寻址实现程序重定位

在这里插入图片描述 用户程序装入系统后有一个基址,虽然偏移量都为51,但因基址不同,故操作数不同。

变址寻址实现线性表元素的存取 自动变址 指令中的地址码A给定数组首址,变址器I每次自动加/减数组元素的长度x。 EA=( I )+A I=( I ) ± x 例如,X86中的串操作指令 对于“for (i=0;i=0;i–) ….”,即地址从高→低增长:减可提供对线性表的方便访问 假定一维数组A从内存100号单元开始 在这里插入图片描述 若每个元素为一个字节,则 I=(I) ± 1 若每个元素为4个字节,则 I=(I) ± 4 一般RISC机器不提供自动变址寻址,并将变址和基址寻址统一成一种偏移寻址方式 在这里插入图片描述 Example:MIPS中的循环处理 for (i=0;ir2,则转移到label处执行;否则顺序执行对于带符号和无符号运算,标志生成方式有没有不同? 没有,因为加法电路不知道是无符号数还是带符号整数!bgt的条件? 无符号数:ZF=0^CF=0 带符号整数:ZF=0^SF≡OF 标志信息是干什么的?

在这里插入图片描述

IA-32中的条件转移指令

分三类: (1)根据单个标志的值转移 (2)按无符号整数比较转移 (3)按带符号整数比较转移 在这里插入图片描述

4.2.7指令系统设计风格 指令设计风格 – 按操作数位置指定风格来分 Accumulator: (earliest machines) 累加器型 特点:其中一个操作数(源操作数1)和目的操作数总在累加器中 1 address add A acc ← acc + mem[A] 1(+x) address add x A acc ← acc + mem[A + x] Stack: (e.g. HP calculator, Java virtual machines) 堆栈型 特点:总是将栈顶两个操作数进行运算,指令无需指定操作数地址 0 address add tos ← tos + next General Purpose Register: (e.g. IA-32, Motorola 68xxx) 通用寄存器型 特点:操作数可以是寄存器或存储器数据(即A、B和C可以是寄存器或存储单元) 2 address add A B EA(A) ← EA(A) + EA(B) 3 address add A B C EA(A) ← EA(B) + EA© Load/Store: (e.g. SPARC, MIPS, PowerPC) 装入/存储型 特点:运算操作数只能是寄存器数据,只有load/store能访问存储器 3 address add Ra Rb Rc Ra ← Rb + Rc load Ra Rb Ra ←mem[Rb] store Ra Rb mem[Rb] ← Ra 指令风格比较

在这里插入图片描述

Examples of Register Usage

在这里插入图片描述

指令设计风格 – 按指令格式的复杂度来分 按指令格式的复杂度来分,有两种类型计算机: 复杂指令集计算机CISC (Complex Instruction Set Computer) 精简指令集计算机RISC (Reduce Instruction Set Computer)早期CISC设计风格的主要特点 (1) 指令系统复杂 变长操作码 / 变长指令字 / 指令多 / 寻址方式多 / 指令格式多(2) 指令周期长 绝大多数指令需要多个时钟周期才能完成(3) 各种指令都能访问存储器 除了专门的存储器读写指令外,运算指令也能访问存储器(4) 采用微程序控制(5) 有专用寄存器(6) 难以进行编译优化来生成高效目标代码 例如,VAX-11/780小型机 16种寻址方式;9种数据格式;303条指令; 一条指令包括1~2个字节的操作码和下续N个操作数说明符。一个说明符的长度达1 ~10个字节。 复杂指令集计算机CISC CISC的缺陷 日趋庞大的指令系统不但使计算机的研制周期变长,而且难以保证设计的正确性,难以调试和维护,并且因指令操作复杂而增加机器周期,从而降低了系统性能。 1975年IBM公司开始研究指令系统的合理性问题,John Cocks提出精简指令系统计算机 RISC ( Reduce Instruction Set Computer )。对CISC进行测试,发现一个事实: 在程序中各种指令出现的频率悬殊很大,最常使用的是一些简单指令,这些指令占程序的80%,但只占指令系统的20%。而且在微程序控制的计算机中,占指令总数20% 的复杂指令占用了控制存储器容量的80%。 1982年美国加州伯克利大学的RISCⅠ,斯坦福大学的MIPS,IBM公司的IBM801相继宣告完成,这些机器被称为第一代RISC机。 Top 10 80x86 Instructions

在这里插入图片描述

RISC设计风格的主要特点 (1) 简化的指令系统 指令少 / 寻址方式少 / 指令格式少 / 指令长度一致(2) 以RR方式工作 除Load/Store指令可访问存储器外,其余指令都只访问寄存器。(3) 指令周期短 以流水线方式工作, 因而除Load/Store指令外,其他简单指令都只需一个或一个不到的时钟周期就可完成。(4) 采用大量通用寄存器,以减少访存次数(5) 采用组合逻辑电路控制,不用或少用微程序控制(6) 采用优化的编译系统,力求有效地支持高级语言程序MIPS是典型的RISC处理器,82年以来新的指令集大多采用RISC体系结构 x86因为“兼容”的需要,保留了CISC的风格,同时也借鉴了RISC思想 指令系统举例: Address & Registers

在这里插入图片描述

指令系统举例:Pentium指令格式

在这里插入图片描述

Pentium处理器的寻址方式 操作数的来源: 立即数(立即寻址):直接来自指令 寄存器(寄存器寻址):来自32位 / 16位 / 8位通用寄存器 存储单元(其他寻址):需进行地址转换 虚拟地址 => 线性地址LA ( => 内存地址) 分段 分页指令中的信息: (1) 段寄存器SR(隐含或显式给出) (2) 8/16/32位偏移量A (显式给出) (2) 基址寄存器B (明显给出,任意通用寄存器皆可) (3) 变址寄存器I (明显给出,除ESP外的任意通用寄存器皆可。) 有比例变址和非比例变址比例变址时要乘以比例因子S (1:8位 / 2:16位 / 4:32位 / 8:64位) 指令“ MOV EAX, ES: [EBP+ESI*8+100]”的含义是什么? 保护模式下的寻址方式

在这里插入图片描述

存储器操作数的寻址方式

int x; float a[100]; short b[4][4]; char c; double d[10]; 在这里插入图片描述

a[i]的地址如何计算? 104+i×4 i=99时,104+99×4=500b[i][j]的地址如何计算? 504+i×8+j×2 i=3、j=2时,504+24+4=532d[i]的地址如何计算? 544+i×8 i=9时,544+9×8=616各变量应采用什么寻址方式? x、c:位移 / 基址 a[i]:104+i×4,比例变址+位移 d[i]:544+i×8,比例变址+位移 b[i][j]: 504+i×8+j×2, 基址+比例变址+位移将b[i][j]取到AX中的指令可以是: “movw 504(%ebp,%esi,2), %ax” 其中, i×8在EBP中,j在ESI中, 2为比例因子 Pentium处理器的存储器寻址

在这里插入图片描述

MMX(Microprocessor Media Extension)指令技术 图形/像、音/视频多媒体信息处理特点 多个短整数并行操作(如8位图形像素和16位音频信号)频繁的乘-累加(如FIR滤波,矩阵运算) MMX的出发点 使用专门指令对大量数据进行并行、复杂处理处理的数据基本单位是8b、16b、32b、64b等 MMX指令集由Intel提出,1997年首次用于P54C Pentium处理器 引入新的数据类型和通用寄存器 四种64位紧缩定点整数类型(8 x 1B、4 x 1W、2 x 2W、1 x 4W)8个64位通用寄存器MX0~MX7(借用8个80位浮点寄存器) 采用SIMD(Single Instruction Multi Data)技术 单条指令同时并行处理多个数据元素 例如,一条指令完成图像中8个像素的并行操作 引入饱和(Situration)运算 非饱和(环绕)运算:上溢时高位数据被截去;饱和运算:上溢时结果取最大值 例如,图像插值运算:若a点亮度F3H,b点亮度1DH,对a和b线性插值结果为: 环绕运算:(F3H+1DH)/2=10H/2=08H 插值点的亮度比1DH还低,不合理! 饱和运算: (F3H+1DH)/2=FFH/2=7FH 合理 在Intel以后的处理器中又增加了SSE、SSE2、SSE3,AVX等指令集 SSE(Streaming SIMD extensions) 4.2.8异常和中断处理机制 程序执行过程中CPU会遇到一些特殊情况,使正在执行的程序被“中断” CPU中止原来正在执行的程序,转到处理异常情况或特殊事件的程序去执行,结束后再返回到原被中止的程序处(断点)继续执行。 程序执行被 “中断” 的事件有两类 内部异常:在CPU执行某指令时内部发生的意外事件或特殊事件 故障(fault):执行某条指令时发生的异常事件,如溢出、缺页、越界、越权、越级、非法指令、除数为0、堆/栈溢出、访问超时等。 自陷(trap):执行预先设置的指令,如断点、单步、系统调用等。 终止(abort):指令执行过程中出现了硬件故障,如访存校验错等。外部中断:在CPU外部发生的特殊事件,通过“中断请求”信号向CPU请求处理。如实时钟、控制台、打印机缺纸、外设准备好、采样计时到、DMA传输结束等。 异常/中断处理分两个阶段 检测和响应:由硬件完成具体的处理过程由软件(操作系统)执行程序完成 发生异常(exception)和中断(interrupt)事件后,系统将进入OS内核态对相应事件进行处理,即改变处理器状态(用户态→内核态) 在这里插入图片描述 第一讲小结 指令由“操作码”和“地址码”两部分组成。操作类型 传送 / 算术 / 逻辑 / 移位 / 字符串 / 转移控制 / 调用 / 中断 / 信号同步 操作数类型 整数(带符号、无符号、十进制)、浮点数、位、位串 地址码的编码要考虑: 操作数的个数寻址方式:立即 / 寄存器 / 寄间 / 直接 / 间接 / 相对 / 基址 / 变址 / 堆栈 操作码的编码要考虑: 定长操作码 / 扩展操作码 条件码的生成 四种基本标志:NF(SF) / VF(OF) / CF / ZF 指令设计风格: 按操作数地址指定方式来分: 累加器型 、堆栈型 、通用寄存器型、load/store型 按指令格式的复杂度来分 复杂指令集计算机CISC、精简指令集计算机RISC 异常和中断 以下通过MIPS指令系统,介绍如何在机器语言级表示程序 计算机组成原理-第四章 指令系统 下

第2讲:程序的机器级表示 第3讲:ISA实例:RISC-V



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


    图片新闻

    实验室药品柜的特性有哪些
    实验室药品柜是实验室家具的重要组成部分之一,主要
    小学科学实验中有哪些教学
    计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
    实验室各种仪器原理动图讲
    1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
    高中化学常见仪器及实验装
    1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
    微生物操作主要设备和器具
    今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
    浅谈通风柜使用基本常识
     众所周知,通风柜功能中最主要的就是排气功能。在

    专题文章

      CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭