890 likes | 1.09k Views
嵌入式微处理器系统. 第二章 处理器技术( 1 ). 相关技术. 本章参考书: 《 计算机系统结构 》 郑纬民等译,电子工业出版社, 2004. 7 《 高性能微处理器:技术与结构 》 张民选,王永文,国防科技大学出版社, 2004. 3. 技术与结构. 除了处理器主频外,还有哪些处理器特征 影响程序执行的速度?. 相关技术. 指令集 流水线技术 小结. 指令集( 1 ). 指令? 汇编语句 = 指令?. 指令集( 2 ). 指令形式 机器语言 由 CPU 理解和执行的二进制代码 机器指令的格式(助记符). 指令集( 3 ). 指令集
E N D
嵌入式微处理器系统 第二章 处理器技术(1) 北京大学软件与微电子学院
相关技术 本章参考书: 《计算机系统结构》郑纬民等译,电子工业出版社,2004. 7 《高性能微处理器:技术与结构》张民选,王永文,国防科技大学出版社,2004. 3 北京大学软件与微电子学院
技术与结构 除了处理器主频外,还有哪些处理器特征 影响程序执行的速度? 北京大学软件与微电子学院
相关技术 • 指令集 • 流水线技术 • 小结 北京大学软件与微电子学院
指令集(1) 指令? 汇编语句=指令? 北京大学软件与微电子学院
指令集(2) • 指令形式 • 机器语言 由CPU理解和执行的二进制代码 • 机器指令的格式(助记符) 北京大学软件与微电子学院
指令集(3) • 指令集 • 所有在处理器上可以执行的指令 • 在处理器上运行的程序由指令组成 • 面向程序员以及编译器开发者 • 因处理器的而异 北京大学软件与微电子学院
指令集(4) • 指令集结构 • 按CPU内部存储类型 • 使用堆栈 隐含的操作数在堆栈的栈顶 • 使用累加器 一个隐含的操作数是累加器 (C51,X86) • 使用寄存器 必须明确操作数(寄存器或内存地址) 北京大学软件与微电子学院
指令集(5) • 指令集结构 • 按CPU内部存储类型 • 使用寄存器 • 寄存器-寄存器:ALU指令通常有三个操作数 (ARM, MIPS) • 寄存器-存储器(register-memory):ALU指令通常有两个操作数,一个为寄存器,另一个为存储器。任何一条指令都可以访问内存(X86, 68000, C54X) • 存储器-存储器:ALU指令通常有三个操作数,且都是存储器操作。 载入-存储(load/store)常用于哪种指令结构? 北京大学软件与微电子学院
指令集(6) • 指令集系统结构(续) • 例:c=a+b 不同指令类型的实现 • 堆栈 Push a Push b Add Pop c a,b,c 三个变量存放在哪儿? 北京大学软件与微电子学院
指令集(7) • 指令集系统结构(续) • 累加器 Load a add b store c 北京大学软件与微电子学院
指令集(8) • 指令集系统结构(续) • Register-Memory Load R1, a add R3, R1, b store R3, c 北京大学软件与微电子学院
指令集(9) • 指令集系统结构(续) • Register-Register Load R1, a Load R2, b add R3, R1, R2 store R3, c 北京大学软件与微电子学院
指令集(10) • 指令集系统结构(续) • Register-Register vs Register-Memory 北京大学软件与微电子学院
指令集(11) • 寻址技术 • 定义 寻找数据地址的技术 • 编址单元宽度 • 字节(8bit,0x86) • 半字 (C54) • 字 (C30) • 双字 北京大学软件与微电子学院
指令集(12) • 寻址方式(续) • 地址空间(独立编址) • 三个地址空间 • 通用寄存器 • 主存储器 • I/O设备 • 两个地址空间 • 通用存储器 • 主存储器与IO设备 • 一个地址空间 • 所有存储设备统一编址 • 隐含编址方式 如果有多个地址空间,在指令中如何体现? 北京大学软件与微电子学院
指令集(13) • 寻址技术(续) • 寻址方式 • 定义:获取访问对象地址的方法 • 立即数寻址 • 直接在指令的地址码部分给出操作数 • 用于程序中的常数 • 优点:不需要数据存储单元,执行速度快 • 缺点:只能作为源操作数,数据长度有限 • 例: ADD R4,#5 ; reg(R4)〈- reg(R4)+5 北京大学软件与微电子学院
指令集(14) • 寻址技术(续) • 寻址方式(续) • 寄存器寻址 • 操作数来源于寄存器,结果也保存在寄存器中 • 指令格式 • 一地址:OPC R • 二地址:OPC R,R OPC R,M • 三地址:OPC R,R,R • 例: ADD R4,R3 ; reg(R4)〈- reg(R4)+reg(R3) 北京大学软件与微电子学院
指令集(15) • 寻址技术(续) • 寻址方式(续) • 直接寻址(绝对) • 直接给出参加运算的操作数及运算结果所存放的地址 • 指令格式 • 一地址:OPC M • 二地址:OPC M,M 三地址:OPC M,M,M • 例: ADD R1,(1001); reg(R1)〈- reg(R1)+ Mem(1001) 北京大学软件与微电子学院
指令集(16) • 寻址技术(续) • 寻址方式(续) • 间接寻址 • 出参加运算的操作数地址的地址 • 寄存器间接寻址 ADD R4,(R1);reg(R4)〈- reg(R4)+ Mem(reg(R1)); • 存储器间接寻址 ADD R1,@(R2); reg(R1)〈- reg(R1)+ Mem[Mem[reg(R2)]] 北京大学软件与微电子学院
指令集(17) • 寻址技术(续) • 寻址方式(续) • 自动递增寻址 • 执行指令后,地址寄存器中的值自动增加 • 例: ADD R1,(R2)+ • 自动递减寻址 • 执行指令后,抵制寄存器中的值自动减少 • 例: ADD R1,-(R2) 北京大学软件与微电子学院
指令集(18) • 寻址技术(续) • 寻址方式(续) • 堆栈寻址 • 隐含操作数的地址 • 一般格式 • OPC • OPC M • 例: PUSH R1 POP R1 北京大学软件与微电子学院
指令集(19) • 寻址技术(续) • 寻址方式(续) • 偏移量寻址 • 带偏移量的间接寻址 • 例: ADD R4,100(R1); reg(R4)〈- reg(R4)+ Mem(100+reg(R1)) 北京大学软件与微电子学院
指令集(20) • 寻址技术(续) • 寻址方式(续) • 索引寻址 • reg(R4)〈- reg(R4)+ Mem(reg(R2)+reg(R1)) • 缩放寻址 • reg[R1]<-reg[R1]+Mem[100+reg[R2]+reg[r3]*d] 这两种寻址方式有什么特别用途? 北京大学软件与微电子学院
指令集(21) • 寻址技术(续) • 寻址方式(续) • 最常用的寻址方式 • 偏移量寻址 • 立即数寻址 • 寄存器间接寻址 三种寻址方式的使用率之和占 75%以上 北京大学软件与微电子学院
指令集(22) • 如设计指令集? • 根据指令行为权衡指令设计 • 指令使用频率 • 数据类型的访问频率 • 寻址方式的分析 • 立即数的范围 • 偏移量的统计 北京大学软件与微电子学院
指令集(23) • 如设计指令集? • 指令兼容 • 二进制兼容技术 • 软件解释器 用程序每次读入旧体系结构的一条指令,在软件维护的就体系结构上依次执行每个操作. (Dos 虚拟机) • 微代码仿真器 在软件解释基础上,在一些硬件辅助下快速译码旧指令。 (VAX中的 PDP-11兼容模式) 北京大学软件与微电子学院
指令集(24) • 如设计指令集? • 指令兼容 • 二进制兼容技术 • 二进制编译 把旧体系的程序行为用新体系结构指令序列再现 (转换程序,难度在哪里? ) • 多媒体指令扩展 • 例 • MAX -Multimedia Acceleration eXtension (PA-RISC, HP) • VIS-Visual Instruction Set (UltraSPARC, SUN) • MMX-MultiMedia eXtension (Pentium, Intel) 北京大学软件与微电子学院
指令集(25) • 如设计指令集? • 多媒体指令扩展 • 子字算术指令 • 数据重整指令 • 格式化指令 • 条件指令 • 存储指令 • 复杂指令 北京大学软件与微电子学院
指令集(26) • 指令格式的设计 • 指令组成 • 操作码 • 操作种类 • 操作数的数据类型 • 操作数 • 地址 • 地址附加信息 • 寻址方式 北京大学软件与微电子学院
指令集(27) • 指令格式的设计 • 操作码表示方法 • 固定长度 • 规整 • 硬件译码简单 • 多数RISC采用 • Huffman编码 • 不同的操作码长度不同 • 使用频率高的码长小 • 空间利用率高 • 扩展编码 • 部分固定长度,部分Huffman编码 北京大学软件与微电子学院
指令集(28) • 指令格式的设计 • 操作码类型 • 运算 • 数据传送 • 移位 • 转移 • I/O 北京大学软件与微电子学院
指令集(29) • 指令集的功能设计 • 功能的基本要求 • 完整性 包括所有的操作类型和方式 • 规整性 • 对称性:各种与指令系统有关的数据存储设备的使用、操作码的设置都要对称。 例:C30中R0-R7功能完全一致 A-B和 B-A • 均匀性:对于不同的数据类型、字长、操作种类和数据存储设备,指令的设置要同等对待 例:有5种数据表示,4种字长,8种存储设备的两地址加法指令数有 5 X 4 X 8=160种 北京大学软件与微电子学院
指令集(30) • 指令集的功能设计(续) • 功能的基本要求(续) • 高效率 指令执行速度快,使用频度高(RISC) • 兼容性 • 新的指令集对旧指令的兼容 • 指令集兼容实现执行程序(目标码)在不同平台上运行 例: X86系列处理器 TC55与C54 北京大学软件与微电子学院
指令集(31) • 指令集的功能设计(续) • 指令类型 • 数据传送指令考虑的因素 • 存储设别种类 • 寄存器 • 主存 • I/O • 数据传送单位 • 字 • 字节 • 数据块 • 寻址方式 北京大学软件与微电子学院
指令集(32) • 指令集的功能设计(续) • 指令类型 • 常用数据传送指令种类 • Register -〉Register • Register -〉Memory • Register -〉Stack • Memory -〉Register • Memory -〉Memory • Memory -〉Stack • Stack -〉Memory 北京大学软件与微电子学院
指令集(33) • 指令集的功能设计(续) • 指令类型 • 运算指令考虑的因素 • 操作种类 • 算术 • 逻辑 • 移位 • 数据表示 • 定点 • 浮点 • 逻辑 • 数据长度 • 数据存储设备 北京大学软件与微电子学院
指令集(34) • 指令集的功能设计(续) • 指令类型 • 常用运算指令种类 • R-R,w,fixed (float) • R-R,D,fixed (float) • R-R,H,fixed • R-R,B,fixed • R-M,w,fixed (float) • R-M,D,fixed (float) • R-M,H,fixed • R-M,B,fixed 北京大学软件与微电子学院
指令集(35) • 指令集的功能设计(续) • 指令类型 • 移位指令的三个因素 • 移位方向 • Left • Right • 移位种类 • 算术(A) • 逻辑(L) • 循环(R) • 移位长度 • 单字(W) • 双字(D) 北京大学软件与微电子学院
指令集(36) • 指令集的功能设计(续) • 指令类型 • 常用移位种类 • SLAW(D) • SRAW(D) • SLLW(D) • SLAW(D) • SLRW(D) • SRRW(D) 例 RL A (MSC51) LSR Rd,Rs (Thumb) 北京大学软件与微电子学院
指令集(37) • 指令集的功能设计(续) • 指令类型 • 程序控制指令 • 类型 • 转移指令(无条件、有条件) 例:JMP (MSC51),B(ARM) • 程序调用和返回 例:CALL,RET, RETI (C30) • 循环控制 例:RPTB • 转移条件(状态寄存器中的位) • Z • N • C • V 北京大学软件与微电子学院
指令集(38) • 指令集的功能设计(续) • 指令类型 • I/O • 内存访问 • 专用指令 例:Portw add portr add (C54) 北京大学软件与微电子学院
指令集(39) • RISC • 历史 • RISC I, David A Patterson, 1981 (Berkeley) • MIPS, Hennessy, 1981 (Stanford) • MIPS2000, Moussouris, 1986 • SPARC, Sun Microsystem,1987 • HP Precision, HP, 1989 • RS 6000, IBM, 1990 • ARM, ARM Limited, 1990 北京大学软件与微电子学院
指令集(40) • RISC • 特点 • 大多数指令在单周期内完成 • 采用LOAD/STORE结构 • 硬布线控制逻辑 • 减少指令和寻址方式 • 固定的指令格式 • 面向寄存器结构 • 采用流水线技术 • 重视优化技术 北京大学软件与微电子学院
指令集(41) • RISC • 与CISC的比较(典型应用) 北京大学软件与微电子学院
指令集(42) • 指令技术发展 • CISC -> RISC -> (?) ISC ? • Instruction accelerating for special application? • Reconfigurable Instruction Set ? 自定义指令集? 北京大学软件与微电子学院
指令集(43) • 小结 • 指令格式 • 指令系统结构 • 寻址技术 • 指令设计 • RISC指令 • 指令技术发展方向 北京大学软件与微电子学院
指令集(44) • 问题(作业) • 假设a,b,c,d,e都是内存中的值,操作码的长度为8位,内存地址32位,寄存器地址6位。 • 针对三种不同存储类型的指令集,为了计算c=a+b,每条指令长度是多少,总代码长度是多少? • 某些指令在计算过程中会修改操作数的值,针对三种指令结构中的情况,写出计算c=a+b, d=a-e的代码序列。标出运算过程中每个被改写的操作数。总代码大小是多少,从内存中读出和存入的指令和数据的总字节数是多少? 北京大学软件与微电子学院
相关技术 • 指令集 • 流水线技术 • 小结 北京大学软件与微电子学院
相关技术 什么是流水线? 为什么要用流水线? 实现流水线需要硬件资源吗? 北京大学软件与微电子学院