钱晓捷,微机原理与接口技术 ·第 4版 —— 基于 IA-32处理器和 32位汇编语言第 9 章处理器性能提高技术
9.1 精简指令集计算机技术
9.2 指令流水线技术
9.3 浮点数据处理单元
9.4 多媒体指令微机原理与接口技术
·

4
版机械工业出版社
9.1 精简指令集计算机技术
精简指令集计算机技术起源向量巨型机 CRAY-I:精简指令,面向寄存器操作
IBM 801小型机:单周期固定格式指令,高速缓冲存储器以及编译技术相结合
RISC-I:第一个精简指令集计算机处理器芯片
在高档的工程工作站得到广泛应用
最新开发的处理器普遍采用精简指令集计算机设计思想
Simple but elegant
微机原理与接口技术
·

4
版机械工业出版社
9.1.1 复杂指令集和精简指令集
复杂指令集计算机 CISC
指令系统丰富,程序设计方便,程序短小,执行性能高处理器硬件复杂,不易使用先进的流水线技术,
导致其执行速度和性能难以进一步提高
精简指令集计算机 RISC
指令系统很简单,只有少数简单,常用的指令处理器硬件简单,比较方便地实现优化
80%和 20%规律微机原理与接口技术
·

4
版机械工业出版社处理器性能公式
处理器执行时间= IC× CPI× T
IC=程序的指令条数
CPI=执行每条指令所需的平均时钟周期数
T=每个时钟周期的时间 ( 时钟频率的倒数 )
处理器执行程序时间越少,计算机性能越高减少时钟周期时间 T,即提高时钟频率
CISC通过使用复杂指令减少 IC
RISC使用简单指令减少 CPI
相互借鉴、共同提高微机原理与接口技术
·

4
版机械工业出版社
9.1.2 RISC技术的主要特点
指令条数较少
寻址方式简单
面向寄存器操作
指令格式规整
单周期执行
先进的流水线技术
编译器优化

Load-Store结构微机原理与接口技术
·

4
版机械工业出版社
9.2 指令流水线技术洗衣房的流水作业三个阶段:
1,水洗 (30)
2,烘干 (40)
3,熨烫 (20)
A
B
C
D
6 PM 7 8 9
任务顺序时间
30 40 40 40 40 20
微机原理与接口技术
·

4
版机械工业出版社
9.2.1 指令流水线取指 执行取指 译码 执行取指 译码 地址 执行 回写
S1 S2 S3 S4 S5
指令读取指令译码地址计算指令执行结果回写微机原理与接口技术
·

4
版机械工业出版社
1,流水线思想
指令流水线技术,把执行指令这个过程分解成多个子过程,执行指令的功能单元也设计成多个相应的处理单元,多个子过程在多个处理单元并行操作,同时处理多条指令
没有减少每个指令的执行时间
有助于减少整个程序 ( 多条指令 ) 的执行时间
指令流水线开始需要,填充时间 ( Fill),,最后有一个,排空时间 ( Drain),
要发挥流水线效率需要连续不断地处理指令时空图微机原理与接口技术
·

4
版机械工业出版社
2,流水线中的指令相关
指令相关:指令之间存在相互依赖关系常使下一条指令无法在设计的单位时间内执行导致流水线的,断流,,性能降低
有三种类型的指令相关资源冲突,当指令重叠执行过程中,硬件资源满足不了指令重叠执行的要求数据相关,在同时执行的多条指令中,一条指令依赖前一条指令的执行结果 (数据 )无法得到控制相关,流水线遇到分支指令或其他改变 PC
值的指令数据旁路 分支预测预取分支目标微机原理与接口技术
·

4
版机械工业出版社
9.2.2 80486的指令流水线
5级指令流水线,每级 1个时钟周期
PF 指令预取 ( prefetch)
D1 指令译码 1( decode stage 1)
对所有操作码和寻址方式信息进行译码
D2 指令译码 2( decode stage 2)
将操作码扩展为 ALU控制信号,存储器地址计算
EX 指令执行 ( execute)
完成 ALU操作和 Cache存取
WB 回写 ( write back)
更新在 EX步骤得到的寄存器数据和状态标志微机原理与接口技术
·

4
版机械工业出版社数据旁路(直通)
MOV reg1,mem1
ADD reg1,reg2
MOV mem2,reg1
数据相关微机原理与接口技术
·

4
版机械工业出版社流水线停顿
MOV reg1,mem1
ADD reg2,[reg1] 数据相关停顿微机原理与接口技术
·

4
版机械工业出版社预取分支目标
CMP reg,imm
JC target

target:
结构相关目标指令预取微机原理与接口技术
·

4
版机械工业出版社
9.3 浮点数据处理单元
传统的处理器或简单的微控制器只有整数处理单元
有些实数经过移动小数点位置,可以用整数编码表达和处理,但可能要损失精度
实数经过一定格式转换后,完全用整数指令仿真,但处理速度难尽人意
计算机表达实数要采用浮点数据格式
x87 FPU( Floating-Point Unit)
Intel 80x87浮点协处理器与 80x86处理器配合
80486及以后的 IA-32处理器集成浮点处理单元微机原理与接口技术
·

4
版机械工业出版社
9.3.1 实数编码
实数 ( Real Number) 的科学表示法表达
-123.456= -1.23456× 102
包括三个部分指数:反映数据的大小或量级有效数字:反映数据的精度符号位:表达数据的正负
实数是一个连续系统,理论上可以表示任意大小与精度的数据
计算机表达实数的浮点格式采用科学表达法,
精度和大小有限,表达的数值离散,只是实数系统的一个子集微机原理与接口技术
·

4
版机械工业出版社
1,浮点数据格式
符号 ( Sign)
表示数据的正负在最高有效位 ( MSB)
负数= 1,正数= 0
指数 ( Exponent) =阶码表示数据以 2为底的幂恒为整数,使用偏移码表达
有效数字 ( Significand)
表示数据的有效数字,反映数据的精度一般采用规格化形式,是一个纯小数尾数 ( Mantissa),小数或分数 ( Fraction)
MSB
有效数字指数符号示意图微机原理与接口技术
·

4
版机械工业出版社
2,浮点阶码
标准偏移码
N位偏移码=真值+ 2N
标准偏移码的真值=偏移码- 2N
IEEE 754标准浮点阶码全 0,全 1两个编码用作特殊目的单精度浮点数据真值=浮点阶码- 127,浮点阶码=真值+ 127
双精度浮点数据真值=浮点阶码- 1023
浮点阶码=真值+ 1023
微机原理与接口技术
·

4
版机械工业出版社
3,规格化浮点数
通常使用的浮点数据是规格化浮点数
有效数字表达的数值:
1.XXX? XX
去除前导 0
最高位恒为 1,隐含一个整数 1
小数点在最左端有效数字只表达小数部分
1≤ 有效数值< 2
微机原理与接口技术
·

4
版机械工业出版社
〔 例 9-1〕 把浮点格式数据转换为实数表达
某个单精度浮点数如下:
BE580000H
= 1011 1110 0101 1000 0000 0000 0000 0000 B
= 1 01111100 10110000000000000000000 B
符号位为 1,表示负数
指数编码是 01111100,表示指数= 124- 127=- 3
有效数字部分是 1011000000000000000
表示有效数= 1.1011 B= 1.6875
这个实数为:- 1.6875× 2- 3
=- 1.6875× 0.125
=- 0.2109375
微机原理与接口技术
·

4
版机械工业出版社
〔 例 9-2〕 把实数转换成浮点数据格式
100.25= 0110 0100.01B= 1.10010001B× 26
符号位= 0
指数部分是 6
8位阶码为 10000101( = 6+ 127= 133)
有效数字部分是 10010001000000000000000
100.25表示成单精度浮点数为:
0 10000101 10010001000000000000000B
= 0100 0010 1100 1000 1000 0000 0000 0000 B
= 42C88000H
微机原理与接口技术
·

4
版机械工业出版社
4,非规格化浮点数
浮点格式的规格化数表达的实数有限下溢 ( Underflow),比最小数还要接近 0
上溢 ( Overflow),比最大数还要大单精度浮点规格化浮点数范围
± 1.18× 10- 38~ ± 3.40× 1038
非规格化浮点数指数编码为全 0表示- 126
有效数字仅表示小数部分,但不能是全 0
能够表示到 ± 1.40× 10- 45
非规格化浮点数表示下溢微机原理与接口技术
·

4
版机械工业出版社
5,零和无穷大
机器零,真值 0的浮点数据格式指数和有效数字的编码都是全 0
符号位可以是 0或 1,分成+ 0和- 0
无穷大,大于最大数的真值的规格化浮点数指数编码为全 1,有效数字编码为全 0
正无穷大 ( + ∞ ) 和负无穷大 ( - ∞ )
非数 NaN:特殊的编码,不是实数的一部分指数编码是全 1,有效数字编码不是全 0
示意图微机原理与接口技术
·

4
版机械工业出版社
9.3.2 浮点寄存器
x87 FPU浮点执行环境的寄存器
8个浮点数据寄存器标记寄存器状态寄存器控制寄存器处理器 需要 寄存器协助 进行操作微机原理与接口技术
·

4
版机械工业出版社
1,浮点数据寄存器
8个浮点数据寄存器,编号 FPR0~ FPR7
80位浮点寄存器存储扩展精度格式数据
采用早期处理器的堆栈结构
8个数据寄存器不是随机存取按照,后进先出,的堆栈原则工作并且首尾循环
浮点数据寄存器常被称为浮点数据栈
每个 FPR寄存器对应一个 2位标记 ( Tag)
8个标记组成一个 16位标记寄存器示意图微机原理与接口技术
·

4
版机械工业出版社
2,浮点状态寄存器
堆栈标志
TOP字段指明当前栈顶
SF和 C1表达堆栈上溢和下溢
C3/C2/C0保存比较结果
异常标志:反映浮点运算可能出现的异常
PE精度异常
UE下溢异常
OE上溢异常
ZE被零除异常
DE非规格化操作数异常
IE非法操作异常微机原理与接口技术
·

4
版机械工业出版社
3,浮点控制寄存器
异常屏蔽控制 ( Mask Control)
决定 6种错误是否被屏蔽
x87 FPU初始化后默认屏蔽所有异常
精度控制 ( Precision Control)
控制浮点计算结果的精度程序通常采用默认扩展精度
舍入控制 ( Rounding Control)
控制浮点计算采用的舍入类型默认采用就近舍入 ( 偶 )
示意图微机原理与接口技术
·

4
版机械工业出版社舍入控制
RC 舍入类型 舍入原则
0 0 就近舍入(偶)
舍入结果最接近准确值。如果上下两个值一样接近,就取偶数结果(最低位为 0)
0 1 向下舍入(趋向 -∞) 舍入结果接近但不大于准确值
1 0 向上舍入(趋向 +∞) 舍入结果接近但不小于准确值
1 1 向零舍入(趋向 0) 舍入结果接近但绝对值不大于准确值微机原理与接口技术
·

4
版机械工业出版社
〔 例 9-3〕 把实数 0.2转换成浮点数据格式
0.2= 0.001100110011 B= 1.100110011 B× 2- 3
符号位= 0
指数部分是- 3,8位阶码为 01111100
有效数字是无限循环数取前 23位,10011001100110011001100
后面是 110011B,默认最近舍入,进位 1
有效数字编码是,10011001100110011001101
这样,0.2表示成单精度浮点数为:
0 01111100 10011001100110011001101 B
= 0011 1110 0100 1100 1100 1100 1100 1101 B
= 3E4CCCCD H
微机原理与接口技术
·

4
版机械工业出版社
9.3.3 浮点指令及其编程
x87 FPU具有自己的指令系统共有几十种浮点指令指令助记符均以 F开头常用的指令类型:浮点传送指令,浮点算术运算指令,浮点超越函数指令,浮点比较指令和
FPU控制指令
浮点指令的操作数寻址方式:
① 隐含寻址,在当前数据寄存器顶 ST(0)
② 寄存器寻址,在指定的数据寄存器栈 ST(i)
③ 存储器寻址,在主存中微机原理与接口技术
·

4
版机械工业出版社
1,浮点传送指令
取数指令 FLD
从存储器或浮点数据寄存器取得数据并 压入 ( Push) 浮点寄存器栈顶 st(0)
存数指令 FST
浮点数据寄存器栈顶数据存入主存或另一个浮点数据寄存器,寄存器栈没有变化
存数且出栈指令 FSTP
执行相应存数指令功能并 弹出 ( Pop) 浮点寄存器栈顶示意图微机原理与接口技术
·

4
版机械工业出版社
〔 例 9-4〕 浮点传送程序- 1; 数据段
00000000 42C88000 3E4CCCCD
f32d real4 100.25,0.2 ; 单精度浮点数
00000008 BFCB000000000000
f64d real8 -0.2109375 ; 双精度浮点数
00000010 4023BABAECD400000000
f80d real10 100.25e9 ; 扩展精度浮点数
0000001A 00000000 00000000
varf real4?,?
00000022 3E4CCCCD
i32d dword 3e4ccccdh ; 0.2的编码微机原理与接口技术
·

4
版机械工业出版社
〔 例 9-4〕 浮点传送程序- 2; 代码段
finit ; 初始化 FPU
fld f32d ; 压入单精度浮点数 f32d
fld f64d ; 压入双精度浮点数 f64d
fld f80d; 压入扩展精度浮点数 f80d
fldpi ; 压入 π ( 3.1415926? )
fst varf; 将栈顶数据 π 传送到变量 VARF
fstp varf+4; 将栈顶数据 π 弹出到变量 VARF+4
微机原理与接口技术
·

4
版机械工业出版社
〔 例 9-4〕 浮点传送程序- 3
mov eax,dword ptr f32d+4; 取 0.2( 二进制编码 )
cmp eax,i32d ; 比较编码是否相同
jz dispy
mov al,'N' ; 不相同,显示 N
jmp dispn
dispy,mov al,'Y' ; 相同,显示 Y
dispn,call dispc
实数 0.2在计算机中是 3E4CCCCDH
微机原理与接口技术
·

4
版机械工业出版社
2,其他浮点指令
浮点算术运算指令加 FADD,减 FSUB,乘 FMUL,除 FDIV
求绝对值 FABS,求平方根 FSQRT等
浮点超越函数指令计算正切 FPTAN,正弦 FSIN,余弦 FCOS等求指数 F2XM1,对数 FYL2X等
浮点比较指令检查浮点数据类型 FXAM,与零比较 FTST
浮点数比较指令 FCOM等
FPU控制指令
FPU初始化 FINIT,浮点空操作 FNOP等指令微机原理与接口技术
·

4
版机械工业出版社
〔 例 9-5〕 计算圆面积的程序- 1
#include <iostream.h>
float area(float radius);
int main()
{
float ftemp;
cout<<"请输入圆的半径,\t";
cin>>ftemp;
cout<<endl<<"该圆的面积是,\t";
cout<<area(ftemp)<<endl;
return 0;
}
微机原理与接口技术
·

4
版机械工业出版社
〔 例 9-5〕 计算圆面积的程序- 2
float area(float radius)
{
float ftemp; // 局部变量用于返回值
_ _asm { // 嵌入式汇编代码部分
fldpi ; π 压入栈顶
fld fradius ; 半径值 R压入栈顶
fmul st(0),st(0) ; 乘积,R× R
fmul ; 求出面积,π × R2
fstp ftemp ; 弹出面积,π R2
}
return(ftemp);
}
微机原理与接口技术
·

4
版机械工业出版社
9.4 多媒体指令
多媒体技术将多媒体信息,经计算机设备的获取,编辑,
存储等处理后,以多媒体形式表现出来的技术
多媒体指令利用一条多媒体指令能够同时处理多对数据实现大量数据快速并行处理关键技术:单指令多数据 SIMD结构也常称为 SIMD指令丰富多彩的世界需要多媒体指令微机原理与接口技术
·

4
版机械工业出版社
9.4.1 MMX技术
MMX( MultiMedia eXtension) 多媒体扩展英特尔公司的处理器增强技术新增 57条多媒体指令,处理整型多媒体数据
8个 64位的 MMX寄存器 ( MM0~ MM7)
处理紧缩整型多媒体数据的通用 MMX指令针对多媒体数据处理的需要精心设计体现单指令多数据 SIMD特性微机原理与接口技术
·

4
版机械工业出版社
MMX数据类型
63 0
q0
紧缩 4字( Packed Quadword)
63 32 31 0
d1 d0
紧缩双字( Packed Doubleword)
63 48 47 32 31 16 15 0
w3 w2 w1 w0
紧缩字( Packed Word)
63 56 55 48 47 40 39 32 31 24 23 16 15 8 7 0
b7 b6 b5 b4 b3 b2 b1 b0
紧缩字节( Packed Byte)
微机原理与接口技术
·

4
版机械工业出版社环绕运算( Wrap-around)
通常的算术运算:无符号数据的运算结果超过其数据类型界限时,进行正常进位借位
MMX指令不能反映每个进位或借位微机原理与接口技术
·

4
版机械工业出版社饱和运算
无符号饱和运算:
( 1) 7FFEH+ 0003H= 8001H( 不饱和 )
( 2) 0003H+ FFFEH= FFFFH( 饱和 )
( 3) 7FFEH- 0003h= 7FFBH( 不饱和 )
( 4) 0003H- FFFEH= 0000H( 饱和 )
有符号饱和运算:
( 1) 7FFEH+ 0003H= 7FFFH( 饱和 )
( 2) 0003H+ FFFEH= 0001H( 不饱和 )
( 3) 7FFEH- 0003H= 7FFBH( 不饱和 )
( 4) 0003H- FFFEH= 0005H( 不饱和 )
微机原理与接口技术
·

4
版机械工业出版社乘加指令微机原理与接口技术
·

4
版机械工业出版社
9.4.2 SSE技术
SSE数据流 SIMD扩展
( Streaming SIMD Extensions)
8个 128位的 SIMD浮点数据寄存器 XMM0~ XMM7
一个 32位的控制状态寄存器 MXCSR
具有 70条指令的 SSE指令集支持 128位紧缩单精度浮点数据
127 96 95 64 63 32 31 0
d3 d2 d1 d0
紧缩单精度浮点数
( Packed Single-precision Floating-point)
微机原理与接口技术
·

4
版机械工业出版社紧缩单精度浮点数的 128位操作模式微机原理与接口技术
·

4
版机械工业出版社
9.4.3 SSE2技术
SSE2技术扩展双精度浮点并行处理能力
76条浮点 SIMD指令
68条整型 SIMD指令一种 128位紧缩双精度浮点数据
4种 128位 SIMD整型数据类型
127 64 63 0
q1 q0
紧缩双精度浮点数
( Packed Double-precision Floating-point)
微机原理与接口技术
·

4
版机械工业出版社
9.4.4 SSE3技术
2003年,90nm工艺的 Pentium 4处理器
新增了 13条 SSE3指令
10条用于完善 MMX,SSE和 SSE2指令一条用于浮点数转换为整数的加速
2条用于加速线程的同步
水平运算和对称运算很有特色微机原理与接口技术
·

4
版机械工业出版社
1,水平运算指令
垂直操作,两个紧缩操作数的同一个位置数据进行操作,结果也保存在该位置
水平操作,同一个紧缩操作数的连续位置数据进行加或减微机原理与接口技术
·

4
版机械工业出版社
2,对称加减指令
将第 2和 4个单精度浮点数对进行加法
将第 1和 3个单精度浮点数对进行减法微机原理与接口技术
·

4
版机械工业出版社
3,SSSE3指令
SSSE3
Supplemental Streaming SIMD Extensions 3
Intel Core 2处理器引入补充 SSE3指令
SSSE3指令补充了 32条指令
12条水平运算指令
6条求绝对值指令
2条乘 -加指令

掌握 CPU性能公式,熟悉 RISC的主要特点
掌握指令流水线技术特点和指令相关问题,理解
80486指令流水线
理解浮点数据格式,掌握单精度和双精度规格化浮点数的编码
了解 x87 FPU浮点寄存器,熟悉舍入控制,了解浮点指令编程
了解多媒体指令 MMX,SSE,SSE2,SSE3的特点
理解紧缩数据类型和多媒体指令的操作特点,熟悉环绕运算,饱和运算,水平运算教学要求第 9章 处理器性能提高技术钱晓捷,微机原理与接口技术 ·第 4版 —— 基于 IA-32处理器和 32位汇编语言第 9章 习题
9.1 简答题 ( 1,2,3,4,5)
9.2 判断题 ( 1,2,3,4,5)
9.3 填空题 ( 1,2,3,4,5)
9.6 9.8 9.9 9.10 9.14