《计算机体系结构》教学课件教案第2章 计算机指令集结构设计_第1页
《计算机体系结构》教学课件教案第2章 计算机指令集结构设计_第2页
《计算机体系结构》教学课件教案第2章 计算机指令集结构设计_第3页
《计算机体系结构》教学课件教案第2章 计算机指令集结构设计_第4页
《计算机体系结构》教学课件教案第2章 计算机指令集结构设计_第5页
已阅读5页,还剩108页未读 继续免费阅读

下载本文档

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

文档简介

第二章计算机指令集结构设计

计算机的指令集结构也称为指令系统,它是硬件

机器所支持的全部指令集合,它是机器语言程员

所看到的机器的最主要的属性之一。

指令集结构设计的最基本问题是软硬件划分。

指令集结构设计包括确定指令格式、类型、操作

以及操作数的访问方式等

2.1指令集结构的分类

2.1.1指令集结构分类

根据五个因素对计算机指令集结构进行分类:

(1)在CPU中操作数的存储方法

(2)指令中显式表示的操作数个数

⑶操作数的寻址方式

(4)指令集所提供的操作类型

⑸操作数的类型和大小

CPU中操作数的存储方法,是各种指令集结构

之间最主要的区别所在。

I.CPU中用来存储操作数的存储单元主要有:

•堆栈

•累加器

•寄存器/存储器

2.指令中的操作数可以显式给出,也可以隐式地给出。

3.CPU对操作数的不同存取方式

CPU对操作数的不同存取方式

CPU提供的每条ALU指令显式表示的运算结果的访问显式操作数的

暂存器操作数个数目的地过程

堆栈0堆栈Push/Pop

累加器1累加器Load/Store累加器

寄存器/存2/3寄存器或存Load/Store寄存器

储器储器或存储器

4.根据CPU内部存储单元类型进行分类,可以分为:

•堆栈型指令集结构

偏•累加器型指令集结构

•通用寄存器型指令集结构

葡例C=A+B表达式在这三种类型指令集结构上的

实现方法。假设A、B、C均是保存在存储器单元中,

且A和B的值在运算过程中一直被保持。

C=A+B表达式在这三种类型指令集结构上的实现方法

堆栈累加器寄存器寄存器

(寄存器一存储器)(寄存器一寄存器)

PUSHALOADALOADRI,ALOADRI,A

PUSHBADDBADDR1,BLOADR2,B

ADDStoreCStoreC,R1AddR3,R1,R2

POPCStoreC,R3

三种类型指令集结构的优缺点

指令集结优点缺点

构类型

堆栈型是一种表示计算的堆栈不能被随机访问,从而很难生

简单模型;指令短小。成有效代码。同时,由于堆栈是瓶颈,

所以很难被高效地实现。

累加器型减小了机器的内部由于累加器是唯一的暂存器,这种

状态;指令短小。机器的存储器通信开销最大。

寄存器型是代码生成最一般所有操作数均需命名,且显式表示,

的模型。因而指令比较长。

<

s

a

窗2.1.2通用寄存器型指令集结构的分类

早期的计算机中采用堆栈指令集结构和累加器指

令集结构比较多,但现代CPU,通用寄存器型指令

为集结构已成为指令集结构的主流,原因:

1.通用寄存器型指令集结构的主要优点

(1)使编译器有效地使用寄存器;

(2)在表达式求值方面,比其它类型指令集结构

具有更大的灵活性;

(3)寄存器可以用来存放变量。

♦减少存储器的通信量,加快程序的执行速度。

(因为寄存器比存储器快)

♦可以用更少的地址位来寻址寄存器,从而可

以有效改进程序的目标代码大小。

2.CPU需要设置多少个寄存器呢?

主要由编译器使用寄存器的情况来决定

绛•为表达式求值保留一些寄存器

•为传递参数保留一些寄存器

•用剩下的寄存器来保存变量

狗3.两种主要的指令特性能够将通用寄存器指令集结构

(GPR)进一步细分

(1)ALU指令到底有两个或是三个操作数?

♦有三个操作数的指令:两个源操作数

一个结果操作数

♦有两个操作数的指令:一个操作数既作为源操

作数,也作为目的操作数。

(2)在ALU指令中,有多少个操作数可以用存储器来寻

址,也即有多少个存储器操作数?

一般来说,ALU指令有0〜3个存储器操作数。

ALU指令中,存储器操作数个数和操作数个数的

所有可能组合,以及相应的机器实例

ALU指令中存储器操ALU指令中操作数的机器实例

作数个数最大个数

02IBMRT-PC

3SPARC,MIPS

12PDP-10,IBM360,

Motorola68000

3IBM360的部分指令

22PDP-11,部分IBM360

指令

3

33VAX

(3)通用寄存器指令集结构进一步细分为三种类型:

•寄存器--寄存器型(R-R:register-register)

•寄存器--存储器型(R-M:register-memory)

•存储器--存储器型(M-M:memory-memory)

(4)常见的三种通用寄存器型指令集结构的优缺点

注:表中(m.n)的含义是,指令的n个操作

数中有m个存储器操作数。

指令集结构优点缺点

类型

简单,指令字长固和指令中含有对存储器操作数访

寄存器一寄定,是一种简单的代问的结构相比,指令条数多,因而

存器型(码生成模型,各种指其目标代码较大。

0,3)令的执行时钟周期数

相近。

可以直接对存储器指令中的操作数类型不同。在一

寄存器一存操作数进行访问,容条指令中同时对一个寄存器操作数

储器型(易对指令进行编码,和存储器操作数进行编码,将限制

1,2)且其目标代码较小。指令所能够表示的寄存器个数。由

于指令的操作数可以存储在不同类

型的存储器单元,所以每条指令的

执行时钟周期数也不尽相同。

存储器一存是一种最紧密的编指令字长多种多样。每条指令的

储器型(码方式,无需“浪费”执行时钟周期数也大不一样,对存

3,3)寄存器保存变量。储器的频繁访问将导致存储器访问

瓶颈问题。

2.2寻址技术

1.寻址方式是指令对操作数的访问方式

•在一个计算机系统中,机器语言的寻址方式通常有

多种

•当前通用寄存器结构的指令集结构中所使用的一些

寻址方式

寻址方式指令实例含义

寄存器寻址AddR4,R3Regs[R4]<—Regs[R4]+Regs[R3]

立即值寻址AddR4,#3Regs[R4]—Regs[R4]+3

偏移寻址AddR4,1OO(R1)Regs[R4]<—Regs[R4]+Mem[100+Regs[RI]]

寄存器间接寻址AddR4,(RI)Regs[R4]<—Regs[R4]+Mem[Regs[RI]]

索引寻址AddR3,(RI+Regs[R3]<—Regs[R3]+Mem[Regs[Rl]+Regs[R2]]

R2)

直接寻址或绝对寻AddRI,(1001)Regs[RI]—Regs[RI]+Mem[1001]

存储器间接寻址AddRI,@(R3)Regs[RI]<—Regs[Rl]+Mem[Mem[Regs[R3]]]

自增寻址AddRI,(R2)+Regs[RI]<—Regs[RR+Mem[Regs[R2]]

Regs[R2]<—Regs[R2]+d

自减寻址AddRI,-(R2)Regs[R2]<—Regs[R2]—d

Regs[Rl]<—Regs[RI]+Mem[Regs[R2]]

缩放寻址AddRegs[RI]—Regs[RI]+Mem[100+Regs[R2]+

RI,100(R2)[R3]Regs[R3]*d]

第寄存器寻址:变量值在寄存器中。

布「立即值寻址:常量访问

觎偏移寻址:访问局部变量

偏寄存器间接寻址:用指针访问变量(指针值在

寄存器中)

索引寻址:数组访问

直接寻址或绝对寻址:静态变量访问

编存储器间接寻址:用指针访问变量(指针值在

狗存储器中)

自增寻址:遍历数组,有时用于实现栈

结构

自减寻址:遍历数组,有时用于实现栈

结构

缩放寻址:数组访问

1.在通用寄存器指令集结构中,一般是利用寻址方

式指明指令中的操作数是一个常数、一个寄存器

操作数,抑或是一个存储器操作数。

3.寻址方式使用情况统计结果

(VAX指令集结构的机器:gcc、Spice和Tex基准程序)

立即值寻址方式和偏移寻址方式的使用频率十分高。

4.各种偏移量字段大小的使用情况

寄存器一寄存器型指令集结构的机器上(MIPS)

运行SPECint92基准程序集

(compress、espresso、eqntott>gcc>li)

运行SPECfp92基准程序集

(dudoc>ear、hydro2d>mdljdp2>su2cor)

X轴的标记是对偏移量大小进行10g2(•)运算所

得,

也就是偏移量字段的位数。

程序所使用的偏移量大小分布十分广泛;

较小的偏移量和较大的偏移量均占有相当大的比例;

将偏移量字段的大小设置为12〜16位。这种长度可

葡以支持上述75%-99%基于偏移寻址方式的数据访

问中偏移量大小的表示。

5.在一种Load/Store型指令集结构上,一些指令使用

立即值寻址方式的频率。

□整型平均□浮点平均

比较指令和ALU指令使用立即值寻址方式十分频繁。

6.不同立即值大小的使用分布情况

将立即值的大小设置为8〜16位,可以覆盖所有

使用立即值寻址方式指令的50%〜80%。

有..in「

2.3指令集结构的功能设计

1.指令集中操作的分类

操作类型实例

算术和逻整数的算术和逻辑操作:力口、减、与、或等。

辑运算

数据传输Load/Store

控制分支、跳转、过程调用和返回、自陷等。

系统操作系统调用、虚拟存储器管理等。

浮点浮点操作:力口、乘等。

十进制十进制加、十进制乘、十进制到字符的转换。

字符串字符串移动、字符串比较、字符串搜索等。

图形象素操作、压缩/解压操作等。

2.一种指令集结构中的指令到底要支持哪些类型的

a

徭操作?

四这就是指令集结构功能设计的基本问题。

偏两种截然不同的方向:

徜♦复杂指令集计算机(CISC)

强化指令功能,实现软件功能向硬件功能转移。

♦精简指令集计算机(RISC)

尽可能地降低指令集结构的复杂性,以达到简

化实现,提高性能的目的。

当今指令集结构功能设计的一个主要趋势。

2.3.1ClSC计算机指令集结构的功能设计

•CISC的含义是复杂指令集计算机(Complex

InstructionSetComputer)

起源于1964年的IBM360系列机

以后有DEC公司的PDP-11、VAX11/730、VAX11/750、

VAX11/780

到九十年代IBM390系列机

微机方面有Intel80x86,Motorola68020等

<

aCISC的主要特点:

徭1)指令系统复杂,表现在:

四指令数多,一般大于100条

寻址方式多,一般大于4种

缁指令格式多,一般大于4种

狗2)绝大多数指令需要多个机器时钟周期方可完成

3)各种指令都可访问存储器

4)采用微程序控制

5)有专用寄存器

6)难以进行优化编译

CISC结构追求的目标:

强化指令功能,减少程序的指令条数,

提高性能的目的。

增强指令功能主要是从如下几个方面着手:

一、面向目标程序增强指令功能

・提高运算型指令功能

•提高传送指令功能

•增加程序控制指令功能

二、面向高级语言和编译程序改进指令系统

1.增加对高级语言和编译系统支持的指令功能

♦对源程序中各种高级语言语句进行使用频

度的统计与分析,对于使用频度高的语句,

可以设置专门的指令或采取措施增加相应

指令的功能,以提高其编译速度和执行速度。

♦从面向编译程序,尤其是从优化代码生成

的角度进行考虑,增加指令集结构的规整

性来改进指令系统。

规整性:没有或尽可能减少例外的情况和特殊的

应用,以及所有运算都能对称、均匀地

在存储器单元或寄存器单元之间进行。

2.高级语言计算机指令系统

(1)面向高级语言(HL)的机器

缩小机器语言和高级语言的语义差距。

(2)间接执行型高级语言机器

高级语言和机器语言是一一对应的,用汇编

的方法(可以用软件实现,也可以用硬件实现)

把高级语言源程序翻译成机器语言程序。

(3)直接执行型高级语言机器

高级语言就作为机器语言,直接由硬件或

固件对高级语言源程序的语句逐条进行解释以

执行它。

三、面向操作系统的优化实现改进指令系统

操作系统的实现在很大程度上取决于体系结

构的支持。

1.主要表现在对以下方面的支持

•中断处理

•进程管理

•存储管理和保护

•系统工作状态的建立与切换

设置指令

如2.

狒•支持系统工作状态和访问方式转移的指令

•支持进程转移的指令

曲•支持进程同步和互斥的指令

狗CISC结构存在的缺点:

(1)在CISC结构的指令系统中,各种指令的使用频

率相差悬殊。

(2)CISC结构指令系统的复杂性带来了计算机体系

结构的复杂性,这不仅增加了研制时间和成

本,而且还容易造成设计错误。

⑶CISC结构指令系统的复杂性给VLSI设计增加了

刎很大负担,不利于单片集成。

礴(4)CISC结构的指令系统中,许多复杂指令需要很

盘复杂的操作,因而运行速度慢。

(5)在CISC结构的指令系统中,由于各条指令的功

能不均衡性,不利于采用先进的计算机体系结

构技术(如流水技术)来提高系统的性能。

例如,80x86处理器支持几百条指令,但常用的指令

只有十条,使用频率占96%

Intel80X861:常用的十条指令

执行频率排序80X86指令指令执行频率(%执行指令总数)

1Load22%

2条件分支20%

3比较16%

4Store12%

5加8%

6与6%

7减5%

8寄存器一寄存器间数据移4%

9调用1%

10返回1%

合计96%

2.3.2RISC计算机指令集功能的设计

RISC的含义是精简指令集计算机(ReducedInstruction

SetComputer)

起源于1975年的IBM801小型计算机

1979年由加州大学伯克莱分校Patterson教授等提出RISC

这一术语,并研制出RISC-1,RISC-II计算机

随后,斯坦福大学于1981年、1986年分别推出了MIPS

RISC计算机和MIPS2000RISC计算机

1987年SUN公司基于伯克莱分校RISC计算机提出的SPARC系

列工作站,使得工作站成为高速小型/微型计算机的代表,

RISC技术在工作站中被普遍采用。

1988年Motorola推出的MC88000RISC计算机,RISC技术

以背普遍接受。

使得计算机体系结构更加简单、更加合理和

更加有效,克服CISC结构的缺点,使机器速度更

快,程序运行时间缩短,从而提高计算机系统的

性能。

•RISC的主要特点:

一.精简指令系统

1)指令条数少,一般小于100条

2)基本寻址方式少,一般2~3种

3)指令格式少,一般2~3种

4)指令长度一致(32位)

二.以寄存器-寄存器方式工作,除了Load/Store

指令访问存储器外,其余指令只访问寄存器

三.除了Load/Store指令访问存储器外,所有指令

在一个机器时钟周期完成,并采用流水线技术

四.使用较多的通用寄存器,一般至少32个,不允

许有专用寄存器

五.大多采用硬联线控制,少用或不用微程序实现

六.采用针对体系结构特点的优化编译技术,防止

或减少流水线中出现的相关性,保证流水线畅通。

方r设计原则

魏•选取使用频率最高的指令,并补充一些最有

用的指令;

•每条指令的功能应尽可能简单,并在一个机

器周期内完成;

•所有指令长度均相同;

•只有Load和Store操作指令才访问存储器,

其它指令操作均在寄存器之间进行;

•以简单有效的方式支持高级语言。

2.3.3控制指令

控制指令:是指能够改变计算机控制流,也即被处

理的指令序列的执行顺序的指令。

控制流的各种改变情况:

1)转移指令

2)过程调用和返回

3)协同程序

4)中断和自陷

徭转移指令还分两种:

ft

1)无条件转移指令:跳转(Jump)

德2)有条件转移指令:分支或条件分支(Branch或

ConditionalBranch)

1.控制指令的使用频率

(一台Load/Store型指令集结构的机器:

SPECint92>Specfp92基准程序)

改变控制流的大部分指令是条件分支指令。

2.常用的三种表示分支条件的技术及其优缺点

表示分支测试分支条件的方法优点缺点

条件的技

条件码在程序的控制下,由ALU操作设可以自由设置CC是额外状态,条件码限制了

(CC)置特殊的位。分支条件。指令顺序,因为必须从一条指令

将分支条件信息传送到分支指令。

条件寄存根据比较结果测试条件寄存器。简单占用了一个寄存器。

比较且分比较操作是分支指令的一部分,一条指令完成分支指令的操作增多。

支通常这种比较是受一定限制的。了两条指令的功能。

3.分支目标地址的表示

PC一相对寻址:在指令中提供一个和程序计数

器(PO的值相加的偏移量。

(1)有效地缩短指令中表示目标地址的字段的

长度;

(2)使得代码在执行时与它被载入的位置无关。

关键问题是:

转移目标离当前控制指令的偏移量有多大?

4.过程调用和返回的状态保存

两种方法来保存寄存器的内容:

(1)“调用者保存”方法

在一个调用者调用别的过程时,必须保存调用

者所要保存的寄存器,以备调用结束返回后,能够

再次访问调用者。

(2)“被调用者保存”方法

被调用的过程必须保存它要用的寄存器,保证

不会破坏过程调用者的程序执行环境,并在过程调

用结束返回时,恢复这些寄存器的内容。

2.4操作数的类型、表示和大小

操作数类型:机器语言所支持的数据类型

操作数类型是软硬件主要界面之一

常用的操作数类型有:整数、浮点数、十进制、字符、字

符串、向量、堆栈等。

礴操作数表示:操作数表示是指可以由硬件直接识别、指令

系统可以直接处理的数据类型。

狗操作数表示也是软硬件主要界面之

目前常用的表示:

(1)字符:用ASCII码表示,为一个字节大小;

(2)整数:用二进制补码表示,其大小可以是8位、

16位或32位。

(3)浮点操作数:单精度浮点(32位大小)和双精

度浮点(64位大小).

(4)字符串:将字符串中的每个字符当作一个字节

来看待。

5)十进制操作数

♦压缩十进制

用4位二进制数编码数字0〜9,然后将两个十进制

数字压缩在一个字节中存储。

♦二进制编码十进制

将十进制数字直接用字符串来表示

操作数类型的两种表示方法

(1)操作数的类型由操作码的编码指定。

这是最常见的一种方法。

(2)数据可以附上由硬件解释的标记,由这些标记指

定操作数的类型,从而选择适当的运算。

操作数大小

•字节

•半字(16位)

•单字(32位)

•双字(64位。

访问不同操作数大小的频率

测试统计SPECint92基准程序和SPECfp92基准

程序对字节、半字、单字和双字四种大小的操作数

访问情况。

基准程序对单字和双字的数据访问具有较高的频率,所以

如果选择操作数字段的长度为32位,那么它可以有效支持

8、16、32位整型操作数,以及32位浮点操作数的表示。

当然,如果定义操作数字段长度为64位,则更具有一般性。

2.5指令集格式的设计

♦指令由操作码和地址码组成。

♦指令集格式的设计

确定操作码字段和地址码字段的大小及其组合

形式,以及各种寻址方式的编码方法。

♦设计原则

1.尽可能地增加寄存器数目和寻址方式类型;

2.充分考虑寄存器字段和寻址方式字段对指令平均字

长的影响,以及它们对目标代码大小的影响;

3.设计出的指令集格式能够在具体实现中容易处理。

2.5.1寻址方式的表示方法

1.两种表示寻址方式的方法

(1)将寻址方式编码于操作码中,由操作码在描述指

令操作的同时,也描述了相应操作的寻址方式;

(2)为每个操作数设置一个地址描述符,

由该地址描述符表示相应操作数的寻址方式。

2.选择哪种表示寻址方式的方法?

由两个因数决定:

⑴指令集结构所采用的寻址方式种类及其适用范围

⑵操作码与寻址方式之间的独立程度

2.5.2指令集格式的选择

为三种指令集编码格式:

•变长编码格式

•固定长度编码格式

•混合型编码格式

1.变长编码格式

♦有效减少指令集结构的平均指令长度,降低目标代码

的长度。

♦使得各条指令的字长和执行时间大不一样。

多数CISC计算机的指令集结构均是采用这种编码格式。

2.固定长度编码格式

将操作类型和寻址方式组合编码在操作码中,所有指

令的长度是固定唯一的。

操硝地础1地础2地础3

3.混合型编码格式

通过提供一定类型的指令字长,期望能够兼

顾降低目标代码长度和降低译码复杂度两个目标。

混赘儡楸

浮点数表示

每个浮点数均由三部分组成:符号位S、指数部

分E和尾数部分M

1)单精度格式(32位):S=1位,E=8位,M=23位

2)双精度格式(64位):S=1位,E=ll位,M=52位

以单精度格式来说明

S:取值0或1,表示浮点数值的正或负

M:表示尾数值为1.M

E:当取值1~254时,经移码表示指数-126~+127

(减127)

当取值0时,若M=0,表示0

若MM,表示非规格化数,尾数

值为0.M

当取值255时,若M=0,表示8

若MM,表示非数值

例如:

1011111111000.......

=

S=l,E=127,M=0.5

=>

值=(-1)11x2127-127x1.5=—l.5

0100000010100.......

=

S=0,E=129,M=0.25

n

值=(-1*1x2129T27x1.25=5

书「

魏将保

EH8ii

2352

3264

指饕码=127=1023

-126〜n27-1022〜+1023

^^^HE126=1022

蝇彩耀e哨摩薨炙9

狗2刍

中1幽Hbl023

最魏露薮_2

「381®-^9(B

1010TT^UJ0

2.6编译技术与计算机体系结构设计

本节从编译技术的观点讨论指令集结构设计的关键目标:

♦哪些指令集结构特性可以为生成高质量的程序目标

代码提供保证?

♦如何才能非常容易地为指令集结构编写出相应的高

效编译器?

2.6.1现代编译器的结构和相关技术

现代编译器结构

裕中嬴靠

编译器设计者的目标

(1)保证编译器的正确性,使得所有有效的程序必须

能够被正确地编译

(2)编译出的代码在目标机器上的执行速度要尽可能快

⑶编译的速度

(4)对程序调试的支持

(5)各种语言之间互操作的可能性

徵由于高级语言和低级语言之间存在很大的语义差

别,在完成这样一个复杂转换过程中要兼顾这些内容

翘是很复杂的一件事。为了确保正确性,现代编译器一

德般都采用多遍扫描的方法:每一遍扫描都将一种比较

高级的表示形式转换成一种比较低级的表示形式,最

终达到机器语言形式。

编同样,优化过程通常也是采用这样一种多遍扫描

方法,每一遍扫描进行一种类型的优化处理,直至所

颁有优化处理执行完。

这种多遍扫描方法引出了一个“按序转换问题吗

前一步转换并不知道它是否一定适合后一步转换,它

只能基于某种假设,有一定的盲目性。

例“全局公共子表达式消去法”

设法找出在同一表达式中出现的公共子表达

式,并把第一次公共子表达式计算出的值存放在

一个临时变量中,然后它利用该临时变量的值消

去表达式中的其它相同公共子表达式的计算。

关键:该临时变量一定要分配给某一寄存器。

问题:后续的优化处理不一定能完成这样的寄存器分

寄存器分配

寄存器分配算法均是基于“图着色法”发展而来的。

图着色法的基本思想:

根据将要分配给寄存器的各个可能候选变量和

它们的使用范围,构造相干图,然后再用该图来分配

寄存器。

编译器所实现的优化的几种类型

(1)高级优化

通常是对原始程序进行优化,并将优化结

果送到后续的优化扫描中。

(2)局部优化

仅仅是一系列在线性的程序段(也称为基本

块)中进行的优化。

(3)全局优化

在局部优化的基础上,考虑到各种分支情况,

对循环和分支进行一系列的优化转换。

(4)寄存器分配

(5)基于机器的优化

目的是充分利用机器结构的一些特点

进行代码优化。

一些实际优化方法

优化类型和方法说明

高级优化处于或接近源代码级别,与机器独立无关

过程集成用过程体代替过程调用语句。

局部优化线性代码序列内的优化

消去公共子表达式设法找出在同一表达式中出现的公共子表达式,并把第一次公共子表达式计算出的值存放在一

个临时变量中,然后它利用该临时变量值消去表达式中的其它相同公共子表达式的计算。

常数传递将所有被赋值为常数的变量用该常数的值代替•

降低堆栈的高度对表达树进行重新组织,尽量减少表达式求值时所需要的资源。

全局优化非线性代码序列的优化

消去公共子表达式和局部优化中的消去公共子表达式优化类似。

拷贝传递如果变量A已经赋值为X,则用X代替所有地方的A。

代码移动如果在循环中的某段代码均是计算相同的值,则将这段代码移到循环的外部。

消去索引变量简化/消去在循环中的数组地址计算。

基于机器的优化依赖于机器的特点

降低计算量比如,可以用加操作和移位操作来代替一个常数的乘操作。

流水线调度重新组织指令序列以提高流水线性能。

分支偏移的优化选择能够达到分支目标的最短分支偏移量。

8.优化对程序执行性能的影响

进行的优化性能提高的百分比

只进行过程集成10%

只进行局部优化5%

局部优化+寄存器分配26%

局部优化+全局优化14%

局部优化+全局优化+寄存器分配63%

局部优化+全局优化+寄存器分配+过81%

程集成

2.6.2现代编译技术对计算机体系结构设计的影响

要认识编译技术对计算机体系结构的影响必须

了解这样两个问题:

♦如何分配和寻址变量?

=用多少个寄存器分配变量比较合适。

♦优化技术对指令使用频度有何影响?

=什么样的指令更需加快执行速度。

1.高级语言用来分配数据的三个不同区域

(1)堆栈

用来分配局部变量,可以不通过指针访问。

(2)全局数据区

用来分配静态说明的对象,可以不通过指针访问。

(3)堆

主要用来动态分配一些不适合放在堆栈中的对象,

通过指针访问。

♦将寄存器分配给堆栈和全局数据区中未曾采用指针访

问的对象。

♦对于分配给堆的对象,不能将寄存器分配给它们。

例如考虑如下代码序列,其中表示返回一个

变量的地址,则是取该地址处保存的值:

p=&a取变量a的地址,并将其保存在p中;

a=…直接对变量a进行赋值;

*p=…利用指针p对a进行赋值;

...a...访问a。

在上述代码序列中,就不能够将变量a分配

给寄存器,否则就会生成错误的代码。

如2.将存储器访问分成五类

於(1)未分配的访问

四(2)对全局变量的访问

德(3)Load/Store访问

将存储器中的内

温馨提示

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

评论

0/150

提交评论