嵌入式微处理器系统 第二章 处理器技术(1) 2008.10 北京大学软件与微电子学院
相关技术 本章参考书: 《计算机系统结构》郑纬民等译,电子工业出版社,2004. 7 《高性能微处理器:技术与结构》张民选,王永文,国防科技大学出版社,2004. 3 北京大学软件与微电子学院 2008.10
技术与结构 除了处理器主频外,还有哪些处理器特征 影响程序执行的速度? 北京大学软件与微电子学院 2008.10
相关技术 指令集 流水线技术 小结 北京大学软件与微电子学院 2008.10
指令集(1) 指令? 汇编语句=指令? 北京大学软件与微电子学院 2008.10
指令集(2) 指令形式 机器语言 由CPU理解和执行的二进制代码 机器指令的格式(助记符) 北京大学软件与微电子学院 2008.10
指令集(3) 指令集 所有在处理器上可以执行的指令 在处理器上运行的程序由指令组成 面向程序员以及编译器开发者 因处理器的而异 北京大学软件与微电子学院 2008.10
指令集(4) 指令集结构 按CPU内部存储类型 使用堆栈 使用累加器 使用寄存器 隐含的操作数在堆栈的栈顶 一个隐含的操作数是累加器 (C51,X86) 使用寄存器 必须明确操作数(寄存器或内存地址) 北京大学软件与微电子学院 2008.10
指令集(5) 指令集结构 按CPU内部存储类型 使用寄存器 寄存器-寄存器:ALU指令通常有三个操作数 (ARM, MIPS) 寄存器-存储器(register-memory):ALU指令通常有两个操作数,一个为寄存器,另一个为存储器。任何一条指令都可以访问内存(X86, 68000, C54X) 存储器-存储器:ALU指令通常有三个操作数,且都是存储器操作。 载入-存储(load/store)常用于哪种指令结构? 北京大学软件与微电子学院 2008.10
指令集(6) 指令集系统结构(续) 例:c=a+b 不同指令类型的实现 堆栈 Push a Push b Add Pop c a,b,c 三个变量存放在哪儿? 北京大学软件与微电子学院 2008.10
指令集(7) 指令集系统结构(续) 累加器 Load a add b store c 北京大学软件与微电子学院 2008.10
指令集(8) 指令集系统结构(续) Register-Memory Load R1, a add R3, R1, b store R3, c 北京大学软件与微电子学院 2008.10
指令集(9) 指令集系统结构(续) Register-Register Load R1, a Load R2, b add R3, R1, R2 store R3, c 北京大学软件与微电子学院 2008.10
指令集(10) 指令集系统结构(续) 优点 缺点 R-R 简单、定长指令编码 指令运行时间相近 指令多、密度低使程序变大 R-M Register-Register vs Register-Memory 优点 缺点 R-R 简单、定长指令编码 指令运行时间相近 指令多、密度低使程序变大 R-M 指令格式易于编码,代码密度高 操作数不等价,指令执行时间不同 北京大学软件与微电子学院 2008.10
指令集(11) 寻址技术 定义 寻找数据地址的技术 编址单元宽度 字节(8bit,0x86) 半字 (C54) 字 (C30) 双字 北京大学软件与微电子学院 2008.10
指令集(12) 寻址方式(续) 地址空间(独立编址) 隐含编址方式 三个地址空间 两个地址空间 一个地址空间 通用寄存器 主存储器 I/O设备 两个地址空间 通用存储器 主存储器与IO设备 一个地址空间 所有存储设备统一编址 隐含编址方式 如果有多个地址空间,在指令中如何体现? 北京大学软件与微电子学院 2008.10
指令集(13) 寻址技术(续) 寻址方式 定义:获取访问对象地址的方法 立即数寻址 直接在指令的地址码部分给出操作数 用于程序中的常数 优点:不需要数据存储单元,执行速度快 缺点:只能作为源操作数,数据长度有限 例: ADD R4,#5 ; reg(R4)〈- reg(R4)+5 北京大学软件与微电子学院 2008.10
指令集(14) 寻址技术(续) 寻址方式(续) 寄存器寻址 操作数来源于寄存器,结果也保存在寄存器中 指令格式 一地址:OPC R 二地址:OPC R,R OPC R,M 三地址:OPC R,R,R 例: ADD R4,R3 ; reg(R4)〈- reg(R4)+reg(R3) 北京大学软件与微电子学院 2008.10
指令集(15) 寻址技术(续) 寻址方式(续) 直接寻址(绝对) 直接给出参加运算的操作数及运算结果所存放的地址 指令格式 一地址:OPC M 二地址:OPC M,M 三地址:OPC M,M,M 例: ADD R1,(1001) ; reg(R1)〈- reg(R1)+ Mem(1001) 北京大学软件与微电子学院 2008.10
指令集(16) 寻址技术(续) 寻址方式(续) 间接寻址 出参加运算的操作数地址的地址 寄存器间接寻址 ADD R4,(R1);reg(R4)〈- reg(R4)+ Mem(reg(R1)); 存储器间接寻址 ADD R1,@(R2); reg(R1)〈- reg(R1)+ Mem[Mem[reg(R2)]] 北京大学软件与微电子学院 2008.10
指令集(17) 寻址技术(续) 寻址方式(续) 自动递增寻址 自动递减寻址 执行指令后,地址寄存器中的值自动增加 例: ADD R1,(R2)+ 自动递减寻址 执行指令后,抵制寄存器中的值自动减少 ADD R1,-(R2) 北京大学软件与微电子学院 2008.10
指令集(18) 寻址技术(续) 寻址方式(续) 堆栈寻址 隐含操作数的地址 一般格式 OPC OPC M 例: PUSH R1 POP R1 北京大学软件与微电子学院 2008.10
指令集(19) 寻址技术(续) 寻址方式(续) 偏移量寻址 带偏移量的间接寻址 例: ADD R4,100(R1) ; reg(R4)〈- reg(R4)+ Mem(100+reg(R1)) 北京大学软件与微电子学院 2008.10
指令集(20) 寻址技术(续) 寻址方式(续) 索引寻址 缩放寻址 这两种寻址方式有什么特别用途? reg(R4)〈- reg(R4)+ Mem(reg(R2)+reg(R1)) 缩放寻址 reg[R1]<-reg[R1]+Mem[100+reg[R2]+reg[r3]*d] 这两种寻址方式有什么特别用途? 北京大学软件与微电子学院 2008.10
指令集(21) 寻址技术(续) 寻址方式(续) 最常用的寻址方式 三种寻址方式的使用率之和占 75%以上 偏移量寻址 立即数寻址 寄存器间接寻址 三种寻址方式的使用率之和占 75%以上 北京大学软件与微电子学院 2008.10
指令集(22) 如设计指令集? 根据指令行为权衡指令设计 指令使用频率 数据类型的访问频率 寻址方式的分析 立即数的范围 偏移量的统计 北京大学软件与微电子学院 2008.10
指令集(23) 如设计指令集? 指令兼容 二进制兼容技术 软件解释器 用程序每次读入旧体系结构的一条指令,在软件维护的就体系结构上依次执行每个操作. (Dos 虚拟机) 微代码仿真器 在软件解释基础上,在一些硬件辅助下快速译码旧指令。 (VAX中的 PDP-11兼容模式) 北京大学软件与微电子学院 2008.10
指令集(24) 如设计指令集? 指令兼容 多媒体指令扩展 二进制兼容技术 例 二进制编译 把旧体系的程序行为用新体系结构指令序列再现 (转换程序,难度在哪里? ) 多媒体指令扩展 例 MAX -Multimedia Acceleration eXtension (PA-RISC, HP) VIS-Visual Instruction Set (UltraSPARC, SUN) MMX-MultiMedia eXtension (Pentium, Intel) 北京大学软件与微电子学院 2008.10
指令集(25) 如设计指令集? 多媒体指令扩展 子字算术指令 数据重整指令 格式化指令 条件指令 存储指令 复杂指令 北京大学软件与微电子学院 2008.10
指令集(26) 指令格式的设计 指令组成 操作码 操作数 操作种类 操作数的数据类型 地址 地址附加信息 寻址方式 北京大学软件与微电子学院 2008.10
指令集(27) 指令格式的设计 操作码表示方法 固定长度 Huffman编码 扩展编码 规整 硬件译码简单 多数RISC采用 不同的操作码长度不同 使用频率高的码长小 空间利用率高 扩展编码 部分固定长度,部分Huffman编码 北京大学软件与微电子学院 2008.10
指令集(28) 指令格式的设计 操作码类型 运算 数据传送 移位 转移 I/O 北京大学软件与微电子学院 2008.10
指令集(29) 指令集的功能设计 功能的基本要求 完整性 包括所有的操作类型和方式 规整性 对称性:各种与指令系统有关的数据存储设备的使用、操作码的设置都要对称。 例:C30中R0-R7功能完全一致 A-B和 B-A 均匀性:对于不同的数据类型、字长、操作种类和数据存储设备,指令的设置要同等对待 例:有5种数据表示,4种字长,8种存储设备的两地址加法指令数有 5 X 4 X 8=160种 北京大学软件与微电子学院 2008.10
指令集(30) 指令集的功能设计(续) 功能的基本要求(续) 高效率 兼容性 指令执行速度快,使用频度高(RISC) 新的指令集对旧指令的兼容 指令集兼容实现执行程序(目标码)在不同平台上运行 例: X86系列处理器 TC55与C54 北京大学软件与微电子学院 2008.10
指令集(31) 指令集的功能设计(续) 指令类型 数据传送指令考虑的因素 存储设别种类 寄存器 主存 I/O 数据传送单位 字 字节 数据块 寻址方式 北京大学软件与微电子学院 2008.10
指令集(32) 指令集的功能设计(续) 指令类型 常用数据传送指令种类 Register -〉Register Register -〉Memory Register -〉Stack Memory -〉Register Memory -〉Memory Memory -〉Stack Stack -〉Memory 北京大学软件与微电子学院 2008.10
指令集(33) 指令集的功能设计(续) 指令类型 运算指令考虑的因素 操作种类 算术 逻辑 移位 数据表示 定点 浮点 数据长度 数据存储设备 北京大学软件与微电子学院 2008.10
指令集(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 北京大学软件与微电子学院 2008.10
指令集(35) 指令集的功能设计(续) 指令类型 移位指令的三个因素 移位方向 Left Right 移位种类 算术(A) 逻辑(L) 移位长度 单字(W) 双字(D) 北京大学软件与微电子学院 2008.10
指令集(36) 指令集的功能设计(续) 指令类型 常用移位种类 例 RL A (MSC51) LSR Rd,Rs (Thumb) SLAW(D) SRAW(D) SLLW(D) SLRW(D) SRRW(D) 例 RL A (MSC51) LSR Rd,Rs (Thumb) 北京大学软件与微电子学院 2008.10
指令集(37) 指令集的功能设计(续) 指令类型 程序控制指令 类型 转移指令(无条件、有条件) 例:JMP (MSC51),B(ARM) 程序调用和返回 例:CALL,RET, RETI (C30) 循环控制 例:RPTB 转移条件(状态寄存器中的位) Z N C V 北京大学软件与微电子学院 2008.10
指令集(38) 指令集的功能设计(续) 指令类型 I/O 内存访问 专用指令 例:Portw add portr add (C54) 北京大学软件与微电子学院 2008.10
指令集(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 北京大学软件与微电子学院 2008.10
指令集(40) RISC 特点 大多数指令在单周期内完成 采用LOAD/STORE结构 硬布线控制逻辑 减少指令和寻址方式 固定的指令格式 面向寄存器结构 采用流水线技术 重视优化技术 北京大学软件与微电子学院 2008.10
指令集(41) RISC 类型 指令数(I) 指令平均期数(CPI) 周期时间(T) CISC 1 2-15 33-5ns RISC 1.3-1.4 1.1-1.4 10-1ns 北京大学软件与微电子学院 2008.10
指令集(42) 指令技术发展 CISC -> RISC -> (?) ISC ? Instruction accelerating for special application? Reconfigurable Instruction Set ? 自定义指令集? 北京大学软件与微电子学院 2008.10
指令集(43) 小结 指令格式 指令系统结构 寻址技术 指令设计 RISC指令 指令技术发展方向 北京大学软件与微电子学院 2008.10
指令集(44) 问题(作业) 假设a,b,c,d,e都是内存中的值,操作码的长度为8位,内存地址32位,寄存器地址6位。 针对三种不同存储类型的指令集,为了计算c=a+b,每条指令长度是多少,总代码长度是多少? 某些指令在计算过程中会修改操作数的值,针对三种指令结构中的情况,写出计算c=a+b, d=a-e的代码序列。标出运算过程中每个被改写的操作数。总代码大小是多少,从内存中读出和存入的指令和数据的总字节数是多少? 北京大学软件与微电子学院 2008.10
相关技术 指令集 流水线技术 小结 北京大学软件与微电子学院 2008.10
相关技术 什么是流水线? 为什么要用流水线? 实现流水线需要硬件资源吗? 北京大学软件与微电子学院 2008.10
流水线技术(1) 多条指令执行方式 顺序 形式(第k和k+1条指令) 执行时间(n条指令) 北京大学软件与微电子学院 2008.10
流水线技术(2) 多条指令执行方式 重叠 形式 北京大学软件与微电子学院 2008.10
流水线技术(3) 多条指令执行方式 重叠(续) 执行时间 北京大学软件与微电子学院 2008.10
流水线技术(4) 流水线 流水 把一个重复时序过程分成若干个子过程,每个子过程都可有效的在其专用功能段上和其它子过程同时执行的一种技术。 基本组成 锁存器、时钟、功能站 指令的流水线处理(连接图) IF ID EX MEM WB 输入 取指 译码 执行 访存 写回 输出 S1 S2 S3 S4 S5 北京大学软件与微电子学院 2008.10
流水线技术(5) 流水线 结构 S1 S2 Sk 输入 输出 ….. .…. 时钟 北京大学软件与微电子学院 2008.10
流水线技术(6) 流水线 时空图 填入 正常 排空 4 ... 1 2 3 4 5 n-1 n 3 2 1 T 空间 时间 填入 正常 排空 4 ... 1 2 3 4 5 n-1 n 3 2 1 △t0 △ t0 △ t0 △ t0 (n-1) △ t0 时间 T0=m △ t0 n △ t0 T (m-1) △ t0 北京大学软件与微电子学院 2008.10
流水线技术(7) 流水线 特点 一条流水线通常有多个流水段组成。 每段有专用功能部件,各部件顺序连接,不断流。 流水线有建立时间、满载时间、排空时间, 各段时间尽量短、一致;不一致时最慢子过程为瓶颈。 北京大学软件与微电子学院 2008.10
流水线技术(8) Xscale 超级流水线 北京大学软件与微电子学院 2008.10
流水线技术(8) 性能分析 吞吐率(though put rate) 定义 单位时间内能处理的指令条数或能输出的数据量。 计算 TP= n/Tk n:任务书 Tk:完成n个任务所用的总时间 北京大学软件与微电子学院 2008.10
流水线技术(9) 性能分析 吞吐率(续) 如果流水线中每一步所需时间相等为⊿t,则k级流水线的吞吐率为: TP=n/((k + n-1) ⊿t) 如果流水线中各部时间不等(不等时流水线),如何计算TP? 北京大学软件与微电子学院 2008.10
流水线技术(10) 性能分析 吞吐率(续) 不等时流水线 北京大学软件与微电子学院 2008.10
流水线技术(11) 性能分析 吞吐率(续) “瓶颈” 流水线中时间较长的段 解决“瓶颈”的办法 “瓶颈”段细分 重复设置“瓶颈”段 北京大学软件与微电子学院 2008.10
流水线技术(12) 性能分析 重复设置时空图 北京大学软件与微电子学院 2008.10
流水线技术(13) 性能分析 加速比 定义 m段流水线的速度与等效的非流水线的速度之比 计算 各段等时 各段不等时 北京大学软件与微电子学院 2008.10
流水线技术(14) 性能分析 效率 n个任务实际占用的时-空区 η= k各段总的时-空区 定义 北京大学软件与微电子学院 2008.10
流水线技术(15) 性能分析 效率(续) 表达式 = 北京大学软件与微电子学院 2008.10
流水线技术(16) 性能分析-例 问题 四段流水线, △t1=△t3=△t4=△t, △t2=3△t,4个任务、10个任务时TP,η、SP 时空图法 时间 1 2 3 4 3△t 空间 北京大学软件与微电子学院 2008.10
流水线技术(17) 性能分析-例 结果 比较: Tp(1/△t) η sp N=4 0.267 40% 1.6 N=10 0.303 45% 1.8 N=100 0.33 49% 1.98 通过比较可以得出什么结论,并解释。 北京大学软件与微电子学院 2008.10
流水线技术(18) 相关性分析 相关 相关种类 相近指令出现某种关联使不能同时执行。 通常导致流水线等待或被坏。 资源相关 数据相关 控制相关 北京大学软件与微电子学院 2008.10
流水线技术(19) 相关性分析 资源相关 有多条指令进入流水线后在同一机器周期内争用同一功能部件所发生的冲突。 例: X3=X1+X2 北京大学软件与微电子学院 2008.10
流水线技术(20) 相关性分析 例:两条指令同时访问存储器 北京大学软件与微电子学院 2008.10
流水线技术(21) 相关性分析 数据相关 有i 和j两条指令,i指令在前,j指令在后,则三种不同类型的数据相关的含义为: RAW读写(先写后读) i: R1+R2->R3 j: R3*R4->R5 WAR写读(先读后写) i: R3*R4->R5 j: R1+R2->R3 WAW写写(先写后写) i: R1*R2->R3 j: R4+R5->R3 北京大学软件与微电子学院 2008.10
流水线技术(22) 相关性分析 控制相关 因程序的执行方向可能改变而引起的相关。 例: k: …… ; 置条件码CC k+1: JMP(CC) L ;如果CC为真专向L k+2:…… …… L:…… 北京大学软件与微电子学院 2008.10
流水线技术(23) 相关性分析 PC值 指令 流水各段 n : load A IF ID EX WR n+1: load B IF ID EX WR n+2: add A,B IF ID 气泡 EX WR n+3: store C IF ID 气泡 EX WR n+4 : jump K IF ID EX WR n+5: load E 停顿 停顿 停顿。。 n+6 ……… 停顿 。。。 K: IF ID EX 北京大学软件与微电子学院 2008.10
流水线技术(24) 指令调度 程序的表达顺序 vs 程序的执行顺序? 调度:为了使指令执行的效率达到最优,最指令执行的顺序进行调整 调度种类 局部调度:基本块内 全局调度:跨越基本块 调度方式 静态调度:先将源程序编译生成中间代码,进行调度,然后再执行 动态调度:在执行过程中进行调度 北京大学软件与微电子学院 2008.10
流水线技术(25) 指令调度 调度所需的程序信息 基本块划分 不包含分支或分支目标指令的一段代码。 A; B; Do{D; E; if(F) {G; H;} else{I;} J; K; L;} while (C ) D; E; Brn F G; H; I; J; K; L; Brn C 北京大学软件与微电子学院 2008.10
流水线技术(26) 指令调度 调度所需的程序信息 数据流图-基本块内数据的产生和使用情况 下列程序的数据流图? r=a+b-c; s=2*c; t=b-d; e=r+t-s; 优先图-指令执行优先权的限制 上述指令的优先限制? 北京大学软件与微电子学院 2008.10
流水线技术(27) 指令调度 调度所需的程序信息 关键路径 这个路径的执行时间决定了整个序列的最小执行时间 资源保留表 记录资源的使用情况,并利用资源保留表检测资源冲突。 北京大学软件与微电子学院 2008.10
流水线技术(28) 指令调度 调度方法? 北京大学软件与微电子学院 2008.10
流水线技术(28) 指令调度 消除相关(数据) 消除存储器地址歧义 歧义-有两次访问指向同一地址,且至少一个是存储操作 软件寄存器重命名 R1=R1+R2; R3=R1+R4; R1=R4; R1=R1+R2; R3=R1+R4; R5=R4; 北京大学软件与微电子学院 2008.10
流水线技术(29) 指令调度 消除相关(数据) 规约变量扩展 i=0 While (i<100) { A[i]+=10; i++; } 北京大学软件与微电子学院 2008.10
流水线技术(30) 消除控制相关的方法 软件“猜测法” 预先估计每一个分支跳转的概率,并据此确定成功和不成功分支。 硬件“猜测法” 用硬件指令分析器检测到转移指令时,按猜测的方向预取指令。 两个缓冲栈 将转移成功方向指令预取到目标缓冲栈中,原先的指令缓冲栈仍然按照转移不成功的方向继续预取。 北京大学软件与微电子学院 2008.10
流水线技术(31) 问题 编程过程中如何减少相关,充分利用流水线技术,提高程序效率? 北京大学软件与微电子学院 2008.10
流水线技术(32) 超标量计算机 配置多个功能部件 原理 多个译码器,寄存器 端口,总线,能同时 执行多个操作。 每拍启动3条指令 取指 译码 执行 写回 1 2 3 4 5 6 T 每拍启动3条指令 要求并行度=3 北京大学软件与微电子学院 2008.10
流水线技术(33) 超级流水线 原理 超流水结构是把 每一个流水级 (一个周期) 分成多个子流水 级,而在每一个 子流水级中取出 的仍只有一条 指令 每1/2拍启动一条指令,要求并行度=2 1 2 3 4 5 6 北京大学软件与微电子学院 2008.10
流水线技术(34) 超级流水线超标量计算机 ID WR IF EX ID WR IF EX 指令 I3 I2 I1 1 2 3 4 5 6 时钟周期 IF ID EX WR 北京大学软件与微电子学院 2008.10
相关技术 指令集 流水线技术 小结 北京大学软件与微电子学院 2008.10
小结 指令? 指令集? 指令类型? 指令集对程序执行效率的影响 流水线技术? 相关? 消除相关? 北京大学软件与微电子学院 2008.10
思考题(下节课讨论) 2. 什么是自定义指令集?与传统的固定指令集处理器相比,他有哪些优缺点。 1. 查找下列概念,并列取出采用该技术的一款处理器 VLIW SIMD Tomsulo 算法 2. 什么是自定义指令集?与传统的固定指令集处理器相比,他有哪些优缺点。 北京大学软件与微电子学院 2008.10