基本指令系统及编程_第1页
基本指令系统及编程_第2页
基本指令系统及编程_第3页
基本指令系统及编程_第4页
基本指令系统及编程_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

ComputerScience·InstructionSetArchitecture基本指令系统及编程从机器码到汇编:理解软硬件接口的核心抽象层COURSEOUTLINE指令系统原理课程内容概览01指令系统概述ISA定义与作用、CISC/RISC设计哲学对比02指令格式与编码地址格式、定长/变长编码、RISC-V指令类型03寻址方式详解九种寻址方式原理与有效地址计算04数据传送与运算Load/Store、ALU运算、条件码与SIMD05控制流与程序结构跳转分支、循环、函数调用与栈帧06中断异常与高级主题中断响应、流水线冒险、架构对比07总结与展望核心回顾、指令系统发展趋势OVERVIEW指令系统:软硬件的桥梁指令集架构(ISA)定义了处理器能执行的所有操作、数据表示方式及内存访问规则,是程序员可见的硬件接口。01完整的编程模型ISA规定了操作码、寄存器、内存寻址模式及异常处理机制,构成完整的编程模型02最小语义单元指令是CPU能识别的最小语义单元,每条指令对应一个确定的硬件行为03独立于实现ISA独立于具体实现:同一ISA可有多种微架构实现04向后兼容性ISA一旦确立便高度稳定,向后兼容是商业成功的关键因素之一01CHAPTER01指令系统概述设计哲学与核心概念ARCHITECTUREISAFUNDAMENTALS指令集架构的五大要素ISA不仅是操作码集合,更是包含数据表示、寄存器文件、内存寻址和异常处理的完整编程接口规范。01指令集定义所有合法操作码及其语义,如算术、逻辑、传送、控制转移等类别02数据类型与大小规定支持的数据宽度、浮点格式及字节序03寄存器文件指定通用寄存器数量、专用寄存器及状态标志位的用途04内存模型定义地址空间大小、对齐要求、原子操作及内存一致性语义05异常与中断描述陷阱、故障、中止的触发条件及处理程序的入口机制HCOMPUTERARCHITECTURECISCPHILOSOPHYINSTRUCTIONSETDESIGNCISC:复杂指令集设计哲学CISC通过丰富指令集和灵活寻址方式缩短代码长度,但以硬件复杂度和执行效率为代价。设计理念用最少机器指令完成任务,单条指令可执行多步操作典型特征变长指令格式、200+条指令、多种寻址方式、微程序控制优势代码密度高、汇编编程直观、向上兼容性好劣势解码复杂、执行时间不均、难以深度流水、功耗较高代表架构Intelx86系列、DECVAX、Motorola68kARCHITECTURERISC:精简指令集设计哲学RISC通过固定长度指令、Load/Store架构和大寄存器堆简化硬件,使高频时钟和深度流水线成为可能。核心原则:单周期执行、仅Load/Store访存、简单指令集、大量通用寄存器典型特征:32位定长指令、少于100条指令、硬连线控制、寄存器-寄存器运算优势:易于流水线、高频时钟、低功耗、编译器优化空间大劣势:代码体积较大、对编译器依赖强、某些操作需多条指令组合代表架构:ARM、MIPS、SPARC、RISC-VAARCHITECTURECOMPARISONINSTRUCTIONSETCISC与RISC核心差异对比现代处理器趋向融合:x86采用微操作译码,ARM扩展SIMD指令系统设计范式对比维度CISCRISC指令数量200+条,功能丰富少于100条,精简高效指令长度可变(1-15字节)固定(通常32位)寻址方式10+种,灵活复杂3-5种,简单统一访存操作支持内存-内存直接运算仅Load/Store可访存控制方式微程序为主硬连线为主执行周期多周期不等单周期为主代码密度高较低流水线难度困难容易ARCHITECTURECOMPUTERORGANIZATION指令执行的五个阶段经典五级流水线将指令执行分解为IF/ID/EX/MEM/WB阶段,各阶段并行处理不同指令。01IF取指根据PC从指令存储器读取指令,PC自增指向下一条02ID译码解析操作码、读取源寄存器、计算立即数或偏移量03EX执行ALU进行算术逻辑运算或计算有效地址04MEM访存Load指令读数据存储器,Store指令写数据存储器05WB写回将运算结果或加载数据写入目的寄存器IF→ID→EX→MEM→WB五级经典流水线·RISC架构CHAPTER02指令格式与编码从地址字段到RISC-V六种类型INSTRUCTIONFORMAT指令地址格式分类地址字段数量决定了指令的表达能力与编码效率之间的权衡。01四地址格式OPA1A2A3A4显式指定下条指令地址,无需PC自增,但指令过长已淘汰02三地址格式OPA1A2A3结果存入独立目标地址,源操作数不被破坏,代码紧凑03二地址格式OPA1A2结果覆盖一个源操作数,节省一位地址字段,x86典型采用04一/零地址格式OP[A1]|OP仅一个地址或无地址,依赖累加器或栈顶隐式操作,适合表达式求值ENCODINGCOMPUTERARCHITECTURE定长编码与变长编码定长指令简化流水线设计但牺牲代码密度,变长指令提升空间效率却使译码成为性能瓶颈。FIXED-LENGTH定长编码(RISC)所有指令等宽(如32位),PC增量固定,取指与译码可并行执行,流水线各阶段耗时一致,极大简化硬件控制逻辑。VARIABLE-LENGTH变长编码(CISC)指令长度1–15字节不等,需逐字节解析前缀、操作码、ModRM及SIB字段,译码路径长且不可预测,增加流水线冒险风险。X86COSTx86变长代价解码器占芯片面积大,需引入预解码机制与微操作缓存(μOpCache)才能维持高吞吐,硬件复杂度显著高于定长方案。HYBRID混合策略ARMThumb-2支持16/32位混合编码,在代码密度与译码性能间取得平衡,兼顾嵌入式场景的空间约束与高性能需求。CHAPTER03寻址方式详解九种方式原理与有效地址计算H计算机组成原理ADDRESSINGMODESAddressing立即寻址与寄存器寻址立即寻址将常量嵌入指令本身,寄存器寻址直接引用CPU内部寄存器——两者均为零额外访存的快速寻址方式,是RISC流水线高效执行的基础。立即寻址ImmediateAddressing内嵌取数:操作数直接存储在指令的地址码字段中,取指时一并获得,无需额外访存最快执行:执行速度最快,常用于初始化常量、偏移量、掩码等固定数值场景位宽约束:数值范围受地址码位数限制,RISC-VI型仅支持12位有符号立即数寄存器寻址RegisterAddressing编号定位:地址码字段给出寄存器编号,操作数位于CPU内部通用寄存器文件中高速存取:存取速度比内存快两个数量级,地址字段仅需5位即可寻址32个寄存器运算基石:是ALU运算指令的主要操作数来源,RISC架构要求所有算术运算仅限寄存器操作数ADDRESSINGMODES直接寻址与间接寻址直接寻址简单直观但范围受限;间接寻址通过指针实现动态绑定,是高级数据结构的硬件基础。01直接寻址:地址即有效地址INSTRUCTIONA=0x1A3FMEMORYM[0x1A3F]EA=A指令地址码字段直接给出操作数在主存中的物理地址,EA=A只需一次内存访问即可获取操作数,实现简单、速度快寻址范围受地址码位数限制,16位地址码仅能访问64KB空间02间接寻址:地址指向地址的地址INSTRUCTIONA=0x200POINTERM[0x200]=0x1A3FDATAM[0x1A3F]指令地址码给出的是操作数地址的地址,需两次访存:先读指针再读数据突破了地址码位数对寻址范围的限制,支持动态数据结构与运行时绑定是实现指针、数组、链表、虚函数调用表等高级特性的硬件基础HCOMPUTERARCHITECTUREADDRESSINGMODESAddressing基址寻址与变址寻址基址寻址面向操作系统,实现程序重定位与内存保护;变址寻址面向程序员,支撑数组遍历与循环优化。基址寻址:面向系统的重定位EA=BR+Displacement基址寄存器(OS设定)+指令位移量有效地址计算——基址由OS设定,用户程序不可修改,保证地址空间隔离动态加载——同一程序可装入不同内存区域,只需更改基址寄存器值即可运行内存保护——配合界限寄存器,防止用户程序越界访问其他进程或内核空间变址寻址:面向程序的数组遍历EA=IX+Displacement变址寄存器(程序员控制)+固定位移量地址构成——变址值由程序员控制,位移量为数组首地址,灵活遍历数据结构数组遍历——循环中变址寄存器递增,即可顺序访问各元素,无需逐条修改指令编译优化——现代编译器常用此方式展开循环、优化数据访问局部性与缓存命中率BR基址寄存器由OS管理IX变址寄存器由程序员控制两者可组合使用,兼顾重定位与数据遍历ADDRESSINGMODES相对寻址与栈寻址相对寻址以PC为基准实现位置无关跳转,栈寻址以SP隐含给出操作数地址——两者是构建可重定位代码与函数调用体系的基石。相对寻址:位置无关的跳转有效地址=PC当前值+有符号偏移量,偏移量用补码表示,支持正负方向跳转代码可在内存任意位置加载执行,是共享库、PIC代码和bootloader的基础RISC-VB型指令支持13位有符号偏移,J型支持21位偏移栈寻址:隐式的后进先出操作数地址由栈指针SP隐含给出,PUSH时SP减字长后写入,POP时读出后SP加字长天然支持函数调用参数传递、局部变量分配、返回地址保存及表达式求值RISC-V约定x2(sp)为栈指针,通过addi/lw/sw组合指令实现栈操作AddressingModes寻址方式综合对比速度与灵活性呈反比:立即/寄存器寻址最快但适用面窄,间接寻址最灵活但代价最高——选择寻址方式本质上是在性能与表达能力之间权衡。九种寻址方式特性一览寻址方式有效地址计算访存次数典型用途立即寻址操作数在指令中0常量初始化寄存器寻址EA=Ri0ALU运算操作数直接寻址EA=A1全局变量访问间接寻址EA=(A)2指针、动态绑定寄存器间接EA=(Ri)1数组、链表遍历基址寻址EA=BR+D1程序重定位变址寻址EA=IX+D1数组元素访问相对寻址EA=PC+D1条件分支、PIC栈寻址EA=SP(隐式)1函数调用、表达式Summary速度与灵活性呈反比:立即/寄存器最快但不灵活,间接最灵活但慢CHAPTER04数据传送与算术逻辑运算Load/Store、ALU与条件码INSTRUCTIONSLoad/Store数据传送指令RISC架构严格区分寄存器运算与内存访问,Load/Store指令是两者间唯一的数据桥梁。Load指令LB/LH/LW/LD从内存读取8/16/32/64位数据到寄存器,支持带符号扩展或零扩展两种模式。Store指令SB/SH/SW/SD将寄存器低8/16/32/64位写入内存,高位直接被丢弃,不做任何扩展处理。地址计算rs1+sign_ext(imm12)有效地址=基址寄存器+符号扩展的12位立即数偏移,支持灵活的基址+偏移寻址。对齐要求4-ByteAlignedLW/SW要求4字节地址对齐,非对齐访问将触发异常或由硬件透明处理。ARITHMETICINSTRUCTIONSET算术运算指令算术指令是计算密集型程序的核心,RISC-V将其分为基础I扩展和可选M扩展。加法/减法ADD·SUB·ADDI三操作数格式rd=rs1±rs2,立即数加法用ADDI实现常量运算,是最基础也最高频的算术操作。乘法MUL·MULH·MULHUM扩展提供,分别取结果的低32位、有符号高32位、无符号高32位,支持64位完整乘积。除法DIV·DIVU·REM·REMUM扩展提供,涵盖有符号/无符号的商与余数运算,除零时不触发硬件异常,由软件自行处理。溢出处理OVERFLOWDETECTIONRISC-V不设溢出标志位,需程序员使用比较指令手动检测运算结果是否溢出,体现极简设计哲学。INSTRUCTIONS逻辑运算与移位指令RISC-V逻辑运算:位级操作基础AND/ANDI:按位与,常用于提取特定位域或清除标志位OR/ORI:按位或,用于设置特定位或合并多个标志字段XOR/XORI:按位异或,用于翻转位、比较相等性及简单加密移位运算:高效乘除与对齐SLL/SLLI:逻辑左移n位等价于乘以2n,低位补0SRL/SRLI:逻辑右移n位等价于无符号除以2n,高位补0SRA/SRAI:算术右移n位等价于有符号除以2n,高位补符号位应用场景:AND/OR/XOR用于位掩码、标志提取和加密;移位指令实现高效乘除与数据对齐。CHAPTER05控制流与程序结构跳转、分支、循环与函数调用INSTRUCTIONS条件分支指令条件分支是实现if/else/while等高级语言结构的底层机制。BEQ/BNE相等/不等时跳转,最常用。编译器将多数条件编译为这两种形式,是条件控制流的核心基础指令。BLT/BGE有符号小于/大于等于跳转,用于整数比较和循环计数,是实现for/while循环的核心跳转机制。BLTU/BGEU无符号小于/大于等于跳转,用于地址比较和数组边界检查,在指针运算与安全校验中不可替代。分支延迟与流水线冲刷流水线中分支判定在EX阶段完成,在此之前已取的指令可能需要冲刷,是流水线冒险的典型场景。INSTRUCTIONSETRISC-V·LECTURE25无条件跳转与函数调用JAL将返回地址自动存入rd寄存器并跳转到PC+imm20,是RISC-V函数调用的核心指令。JAL:跳转并链接将PC+4写入rd(通常为x1/ra),然后跳转到PC+sign_ext(imm20<<1)支持±1MB范围的函数调用,返回地址自动保存伪指令CALLlabel即展开为JALra,offsetJALR:跳转并链接寄存器将PC+4写入rd,跳转到(rs1+sign_ext(imm12))&~1用于函数返回、间接调用及长距离跳转与JAL组合可实现任意地址跳转H高校教学课件ASSEMBLYLOOPSTRUCTURES循环结构的汇编实现所有高级语言循环最终都映射为条件分支与跳转指令的组合。for循环初始化→条件测试(BEQ退出)→循环体→增量(BNE回跳)while循环条件测试在循环体前,BEQ跳过整个循环体,不满足则不进入do-while循环先执行循环体再测试条件,BNE回跳到循环头,至少执行一次循环优化编译器通过循环展开减少分支开销,强度削减将乘法转为加法/移位CCSARCHITECTURECALLINGCONVENTIONStackFrame函数调用约定与栈帧栈帧是函数运行的私有空间,其布局由ABI严格规定。RISC-VABI寄存器约定a0-a7传参,a0-a1返值,t0-t6临时,s0-s11保存栈帧创建addisp,sp,-frame_size栈帧销毁ldra,offset(sp)lds0,offset(sp)addisp,sp,frame_sizeret栈溢出风险递归过深或大数组分配导致SP越过栈底函数栈帧布局示意CHAPTER06中断异常与高级主题异步事件、流水线与架构对比INTERRUPTHANDLING中断响应与处理流程中断机制使CPU能异步响应外部设备请求和内部异常。响应序列关中断→保存PC/PSW→查中断向量表→跳转ISR→保护现场→开中断中断触发外设IRQ信号、定时器溢出、非法指令、缺页故障等均可触发响应序列关中断→保存PC/PSW→查中断向量表→跳转ISR→保护现场→开中断中断嵌套多重中断模式下,高优先级中断可打断正在执行的低优先级ISRRISC-V特权级mcause记录原因,mtvec指向处理入口,mepc保存断点PIPELINEARCHITECTURE流水线冒险与解决方案流水线提升吞吐率的同时引入了三类冒险,解决它们是高性能处理器设计的核心挑战。结构冒险多条指令同时争用同一功能单元,通过资源复制或多周期化解决。数据冒险后条指令依赖前条结果(RAW/WAR/WAW),通过旁路转发或插入气泡消除。控制冒险分支目标在执行完前未知,通过静态预测或动态预测缓解。R

温馨提示

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

评论

0/150

提交评论