六章CPU设计讲解材料_第1页
六章CPU设计讲解材料_第2页
六章CPU设计讲解材料_第3页
六章CPU设计讲解材料_第4页
六章CPU设计讲解材料_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

第六章 CPU设计

6.1CPU设计基本步骤

6.2组合逻辑控制器设计

6.3微程序控制器设计

6.4流水线技术

6.5小结

6.1CPU设计基本步骤

CPU作为计算机系统的一部分,它的设计过程不应当独立进行,CPU的设计只是整个系统设计的一部分。CPU的功能是为系统的整体目标服务,它的组成与结构受系统的应用目标限制。第一步是确定CPU的应用场合(目标)。此步骤的关键是确定CPU所应具有的处理能力(功能),应保证与应用需求一致。设计举例第二步是拟定它将运行的程序类型,确定为完成所要求功能需要的指令,从而确定CPU指令集结构(ISA结构)。在完成指令集结构设计之后,根据指令集结构所确定的内容来进行设计CPU的各组成部件,以及用于连接各功能部件的数据通路结构。第三步确定CPU指令集中各指令的微操作信号的节拍安排,以明确CPU(主要是控制器)为完成取指令、指令译码和执行指令集中的每个指令所必须发出的微操作信号与指令、时间的关系。第四步形成微操作信号的逻辑表达式,该表达式的条件是指令、时间、状态等,而结果是控制信号。依据各控制信号的逻辑表达式,可采用组合逻辑设计法或微程序设计法获得控制器的逻辑电路图或微程序,并将控制器和其它组合到一起形成CPU。设计举例1996年,美国国家航空航天局(NASA)发射了一艘火星探路者号宇宙飞船,这只宇宙飞船用了7个月的时间航行才着陆到火星。一到达火星,它就放出了一个漫游机器人,叫做Sojouener,它用来探索探路者号飞船附近的表层,并且将读取的数据传回给宇宙飞船。然后探路者号飞船再将这些送回地球。1997年7月4日,探路者号飞船成功地到达了火星的表面。Sojouener只用了一个80C85微处理器控制整个操作。它运行的时钟速度为2MHz,但是该处理器并不是因为它的速度而被选中的。实际上,正是因为它能够执行所需功能,而且因为这一版本的8085微处理器能在远离大气层保护,辐射强烈的环境中正确地工作。

6.2组合逻辑控制器设计6.2.1模型机基本设计

6.2.2微操作节拍安排

6.2.3模型机组合逻辑控制器设计

指令类型类型硬件描述语言形式汇编形式注释数据传送类AC:=M(X)LDX将存储器内容读如到AC中M(X):=ACSTX将AC内容送入存储器中DR:=ACMOVDR,AC将AC内容送入到DRAC:=DRMOVAC,DR将DR内容送入到AC数据运算类AC:=AC+DRADD将AC+DR结果送入ACAC:=AC-DRSUB将AC-DR结果送入ACAC:=ACandDRAND将AC与DR进行“与”运算,结果送入ACAC:=notACNOT将AC的内容进行“非”运算,结果送入AC程序控制类PC:=M(adr)BRAadr将程序流程转移到adr单元所存内容所指位置IfAC=0thenPC:=M(adr)BZadr若AC=0则将程序流程转移到adr单元所存内容所指位置指令格式指令采用固定字长方式,同时指令中处理的数据长度与指令长度相同,均为32位。指令寻址方式采用直接寻址,数据寻址方式采用直接寻址和隐含寻址。程序控制单元用于生成连接数据处理单元和程序控制单元、以及在CPU与外部存储器之间的连接控制信号。操作码

地址码03431模型机部件设置与数据通路结构CPU中寄存器的设置包括:IR(指令寄存器)用于存储当前正在执行指令;AR(存储器地址寄存器)用于存储预访问单元地址;PC(程序计数器)用于存储下条指令地址;DR(存储器数据寄存器)用于存储与存储器进行交互的数据;AC(累加器)根据指令系统结构可知寄存器组中可见寄存器为DR和AC,其余均为用于控制的不可见寄存器,标志寄存器在结构图中未标识。模型机的数据通路结构为单组内总线、分离寄存器结构。模型机结构框图6.2.2微操作节拍安排节拍安排的目的:列出各条指令执行所需的微操作信号以及各操作信号与时序信号之间的关系。

为提高指令的执行效率,应进行微操作的节拍顺序调整,微操作的节拍安排因遵循以下原则:微操作之间若次序有先后,安排时应保持其先后次序不变。若微操作使用不同的部件,可使其安排在同一节拍内。若不同微操作所占用的时间均不长,可以将它们安排在同一节拍的进行,且保持其先后顺序不变。模型机操作流程图模型机采用将指令周期划分成:取指工作周期和执行工作周期,在取指工作周期包括3个节拍,而执行周期根据指令复杂程度不同包含1–3个节拍。根据各条指令的功能和节拍安排原则,可形成下面模型机的操作流程图。模型机控制点

控制点的作用:用于功能的选择或数据流动的控制。数据的正确流动,确保指令功能的实现。控制点与数据流控制的关系功能选择用于对运算器(ALU)进行控制,实现控制ALU完成不同的数据处理。模型机功能选择信号:C2,C9,C10,C11,C12。存储控制用于控制外存储器。模型机存储控制信号:C1,C8,C13C14。数据通路控制用于控制数据通路中各控制点的开放和关闭状态的切换,实现数据、地址、指令等信息在CPU内部各个数据和控制寄存器之间进行传递。模型机数据通路控制信号:C0

,C3

,C4

,C5

,C6

,C7。

控制信号功能控制信号功能控制信号功能C0AR:=PCC5AR:=DR(adr)C10AC:=AC-DRC1DR:=M(AR)C6DR:=ACC11AC:=ACandDRC2PC:=PC+1C7AC:=DRC12AC:=notACC3PC:=DR(adr)C8M(AR):=DRC13IO/MRC4IR:=DR(OP)C9AC:=AC+DRC14IO/MW6.2.3模型机组合逻辑控制器设计组合逻辑控制器基本结构

模型机的操作时间表

组合逻辑控制器设计

组合逻辑控制器的优缺点

组合逻辑控制器基本结构组合逻辑控制器中的关键部分是组合逻辑电路,它将时序信号、指令译码结果、状态/条件等信息(信号)作为输入,通过组合逻辑电路的处理,形成相对应的控制信号,从而完成CPU的指令控制、操作控制和时间控制功能。

模型机的操作时间表根据模型机指令操作流程图、指令功能、微操作安排原则和控制信号的设置情况,形成的操作时间表的作用是列出各指令所需的操作信号与节拍信号之间的关系。工作周期标志节拍状态条件控制信号LDXSTXMOVDR,ACMOVAC,DRADDSUBANDNOTBRAadrBZadrFE(取指)T0

C01111111111C131111111111T1

C11111111111T2

C21111111111C411111111111→EX1111111111EX(执行)T0

C511

C131

C14

1

T1

C11

C6

1

T2

C71

1

C8

1

C6

1

C9

1

C10

1

C11

1

C12

1

C3

1

AC=0C3

1组合逻辑控制器设计产生C6信号的逻辑图

根据操作时间表可以生成各控制信号的逻辑表达式如下:C0=FE•T0C1=FE•T1+EX•T1•LDC2=FE•T2

C3=EX•T2•(BRA+BZ•(AC=0))C4=FE•T2

C5=EX•T0•(LD+ST)C6=EX•T1•ST+EX•T2•MOV1

C7=EX•T2•(LD+MOV2)C8=EX•T2•ST

C9=EX•T2•ADDC10=EX•T2•SUB

C11=EX•T2•ANDC12=EX•T2•NOT

C13=FE.T0+EX•T0•LDC14=EX•T0•ST在上述的逻辑表达式中,MOV1表示MOVDR,AC指令,MOV2表示MOVAC,DR指令。

组合逻辑控制器的优缺点在组合逻辑控制器的设计过程发现,组合逻辑控制器控制有以下两个缺点:组合逻辑控制器是由许多门电路产生控制信号,而各控制信号所需的门电路逻辑很不规整,因此组合逻辑控制器的核心部分比较繁琐、凌乱,设计效率较低,检查调试比较困难。改进方法是将程序设计技术引入到CPU机器的构成级,使设计规整化。组合逻辑控制因其使用逻辑门电路生成控制信号,设计结果被固定在印刷电路板上,使其不易修改和扩展。而且,在各个控制信号逻辑表达式中往往包含许多条件,其中一些逻辑变量可能在许多表达式公用的,修改一处就会牵动其他,因而很难修改。改进的方向是将程序存储思想引入CPU设计,取代用组合逻辑电路生成控制信号,而是将控制信号以数字代码的形式直接存入一个存储器中,只要修改所存储的代码即控制信号信息,就可以完成修改有关的功能和执行方式。组合逻辑控制器的优点是运行速度较快,因此目前应用于高速计算机和RISC处理器和巨型机中,以及规模较小的计算机中。6.3微程序控制器设计6.3.1微程序基本原理6.3.2微程序控制器基本结构

6.3.3微指令格式设计

6.3.4模型机微程序设计

6.3.5实例:基于微代码的CPU:奔腾微处理器

6.3.1微程序基本原理指令的执行是由一系列有序信号控制实现地,借鉴程序存储思想英国剑桥大学教授威尔克斯在1951年提出微程序控制设计思想,作为一种控制单元设计方法,其核心思想可以归纳成一下几点:每一条机器指令的功能是通过微程序实现的;微程序是作为一个实时指令解释器,即每一条机器指令对应一个由若干条微指令组成的微程序;微程序中的每一条微指令与一组微操作对应(控制信号所对应的动作);微指令的序列反映了为完成一条机器指令所应发出控制信号的先后次序;微指令也采用二进制码的形式;微程序的集合对应着一个特定的指令集或机器语言。6.3.1微程序基本原理微程序控制器的设计工作只要集中在以下几个方面:微指令格式设计,因为微指令采用二进制码的形式,所以必须为微指令拟就格式,以表示每一条微指令所对应的微操作。微程序编制,为每一条机器指令编写对应的微程序,根据机器指令所包含的微操作,确定每个微程序中的微指令以及次序,进而形成存入微程序控制器的微程序。作为一种设计活动,微程序的设计可与汇编语言程序设计相似。控制逻辑电路设计,微程序的执行和解释需要相应的控制逻辑电路,以实现微指令的读取,微指令地址的形成,微指令流程控制和由微指令形成控制信号。6.3.2微程序控制器基本结构1.控制存储器用于存储着与全部机器指令对应的微程序。2.微地址控制逻辑依据时间、条件、指令和下地址信息等信息,来形成下条微指令地址。3.微地址寄存器的作用与PC(指令计数器)相同,用于存储下一条微指令地址。4.微指令寄存器用于存储由控制存储器取出的微指令。5.微指令译码电路的作用是根据微指令用于生成控制信号。6.3.3微指令格式设计由于微指令是二进制码的形式而指令也是二进制码的形式,一个微指令一般也包括两部分:操作控制字段和下地址控制字段。操作控制字段用于指出有那些控制信号被激活。下地址控制字段用于指出下一条待执行微指令在控制存储器中地址的本身或其计算方式。

微指令格式设计主要解决以下几个问题:操作控制编码方式

微指令类型

下地址控制编码方式

动态微程序设计

微操作同步定时

操作控制编码方式在操作控制字段一般包括一个或多个操作控制域,每个控制域可控制一个或一组控制信号的生成,根据控制信号是直接生成于控制域还是译码生成控制信号的不同可分为以下几种形式。直接控制法:操作控制字段的每一位都与一个独立控制信号相对应。若当前微指令的某一位ki=1,则与之对应ci控制信号有效,否则ci控制信号无效。分段编码控制法:在微程序级别,许多微操作是可以并行执行。一般采用将微指令的操作控制字段分成k个相互独立的控制域,每一个控制域存储一组微操作,每一种编码对应一个微操作,每一个微操作都可以与其它控制域所存储的任意一个微操作并行执行,但在组内的微操作之间是互斥的,不允许在同一时间段内发生或有效。分段间接编码控制法:在微指令格式里,如果一个字段的含义不只决定本字段编码,还兼由其他字段决定,则可采用分段间接编码控制法。此时一个字段兼有两层或两层以上的含义。分段间接编码控制法的示意图。其它方式:在实际微指令中操作控制编码并不是只单独采用上述三种编码方式中的一种,而是将上述三种混合使用,以保证能综合考虑指令的字长、灵活性和执行微程序的速度等方面的要求。分段间接编码控制法的示意图微指令类型微指令格式一般分为两种类型:水平型和垂直型。水平型微指令有如下特点:指令字比较长;能表达较高程度的微操作并行性;微操作控制信号编码的量比较小。垂直型微指令有如下特点:指令字长比较短;表达微操作并行程度的能力较低;要进行比较多的操作控制信号的编码。垂直型微指令在很大程度上与RISC指令相类似,都尽量减少并行性,而保证单周期执行的形式。但是计算机也经常被设计成与水平型微指令相似的形式,具有较长指令字和更高并行性的形式。下地址控制编码方式一般情况下后继微指令的地址有以下几种给出方式:顺序递增法:将µPC设置成可实现自动加1的功能,每当完成当前指令的执行,就以µPC+1后的值为地址在控制存储器中取下一条微指令。直接给出法:下一条微指令的地址直接取自微指令中的下地址字段。分支转移法:在包含分支转移的微指令中常设置一个条件选择子区域,用于指出哪些判定条件被测试,与此同时转移地址被存储在下地址字段。当转移条件满足时,将下地址字段的内容读入到µPC中,取下一条微指令,实现微程序转移。若转移条件不满足,微程序则顺序执行。微程序入口地址的形成:每条机器指令所对应的微程序的入口地址(首地址),一般由指令的操作码所决定。在机器加电后,第一条微指令的地址一般是由专门的逻辑电路生成,也可以采用由外部直接输入的形式获得。动态微程序设计通常计算机的指令系统中指令的类型和数量是固定,而与其对应的微程序也应当是保持不变的。但是如果采用EPROM作为控制存储器,设计者可以通过更改控制存储器所存储的微程序,来改变机器的指令系统,这种技术可以称为动态微程序技术。采用动态微程序技术可以根据需要改变微程序,因此可在一台机器上实现不同类型的微指令,可实现指令系统级的仿真,但对设计者的要求较高,未得到广泛推广。

微操作同步定时对于微指令的执行过程都是基于下面的假设,微指令所发出的控制信号都是在微指令的执行周期发出的,而控制信号的发出并未指定时间。一个单时钟信号起到控制信号的同步作用,而其长度与微指令的指令周期长度相同,此种控制模式称为单周期。与某个特定操作对应的微指令数目可以通过将微指令周期划分成几个连续更小的时间单位或时钟周期来减少。一个控制信号可以在某个更小的时间单位里被激活,此种控制模式称为多周期模式。多周期模式允许一个微指令指定一个微操作序列,但是将在一定程度上增加微指令格式的复杂程度。微操作同步定时(示例)若一条微指令控制实现下面的寄存器传送操作:R:=f(R1,R2)其中R可能是R1或R2,该传送操作可以被分解到以下四个阶段进行:阶段1:从控制存储器(CM)中取下条微指令到微指令寄存器。阶段2:将寄存器R1和R2内容送到处理功能单元f。阶段3:将功能单元f生成的结果存储到临时寄存器或锁存器L中。阶段4:将临时寄存器或锁存器L中的结果存储到目的寄存器中。6.3.4模型机微程序设计采用微程序控制器的模型机设计关键任务是编写与每一条机器指令先对应的微程序。具体步骤是:首先列出机器指令的全部的微操作以及时间节拍安排,然后确定微指令格式,最后编写出每条微指令的二进制代码。基本微程序控制器设计

扩充微程序设计

基本微程序控制器设计模型机机器指令的微操作节拍安排:机器指令微操作机器指令微操作FETCHAR:=PC;DR:=M(AR);PC:=PC+1,IR:=DR(OP);转移到对应指令执行微子程序;MOV1DR:=AC,转移到取指微子程序;MOV2AC:=DR,转移到取指微子程序;ADDAC:=AC+DR,转移到取指微子程序;SUBAC:=AC-DR,转移到取指微子程序;LDAR:=DR(ADR);DR:=M(AR);AC:=DR,转移到取指微子程序;ANDAC:=AC∧DR,转移到取指微子程序;NOTAC:=.not.AC,转移到取指微子程序;BRAPC:=DR(ADR),转移到取指微子程序;STAR:=DR(ADR);DR:=AC;M(AR):=DR,转移到取指微子程序;BZIfAC=0thenPC:=DR(ADR),转移到取指微子程序;模型机微指令格式模型机的微指令格式:条件选择字段的含义:S0S1含义00增量执行01AC=0,转移执行10读入起始地址11无条件转移操作控制字段在模型机中控制信号的数目较少,所以采用直接控制法。微指令中操作控制字段的长度是15位。其各位所对应的微操作见下表

位标志对应控制信号位标志对应控制信号7AR:=PC15M(AR):=DR8DR:=M(AR)16AC:=AC+DR9PC:=PC+117AC:=AC-DR10PC:=DR(adr)18AC:=ACandDR11IR:=DR(OP)19AC:=notAC12AR:=DR(adr)20IO/MR13DR:=AC21IO/MW14AC:=DR

模型机微程序控制器组成

模型机基本微程序编制

微程序名称微指令地址微指令(二进制代码)

下地址操作控制

十进制0123456789101112131415161718192021取指0000×××××100000000000010

0100×××××010000000000000

0200×××××001010000000000

0310×××××000000000000000LD0400×××××000001000000010

0500×××××010000000000000

061100000000000010000000ST0700×××××000001000000000

0800×××××000000100000001

091100000000000001000000MOV1101100000000000100000000MOV2111100000000000010000000ADD121100000000000000100000SUB131100000000000000010000AND141100000000000000001000NOT151100000000000000000100BRA161100000000100000000000BZ170111000000100000000000扩充微程序设计可以利用微程序控制器设计方法实现机器指令系统中指令扩充。在模型机的基本运算单元不变的情况下,利用在控制存储器中添加微程序实现乘法指令和除法指令,乘除法的算法采用补码的比较算法和补码不恢复余数除法算法。为完成乘/除运算在模型机中需添加两个专用寄存器:乘商寄存器(MQ,用于在乘法运算中保存乘积,在除法运算中保存商)和计数器(COUNT,实现运算过程中加/减并移位运算个数的计数功能)。而将数据寄存器DR作为运算过程中的被乘数和除数。扩充的模型机的CPU内部结构和控制点扩展模型机控制信号

控制信号功能控制信号功能控制信号功能C0AR:=PCC10AC:=AC-DRC20DR:=MQC1DR:=M(AR)C11AC:=ACandDRC21MQ[0]:=1C2PC:=PC+1C12AC:=notACC22MQ[0]:=0C3PC:=DR(ADR)C13RSHIFTACC23COUNT:=COUNT+1C4IR:=DR(OP)C14LSHIFTACC24µPC:=IRC5AR:=DR(ADR)C15RSHIFTAC,MQC25COUNT:=0C6DR:=ACC16LSHIFTAC,MQC26F:=0C7AC:=DRC17AC:=0C27F:=1C8M(AR):=DRC18AC[n-1]:=FC28FLAGS:=0C9AC:=AC+DRC19MQ:=DR

采用HDL描述补码的比较乘法算法微程序流程

微地址标志微操作BEGINA:=0,COUNT:=0,F:=0TEST1IFMQ[0]=0then转到RSHIFTADDAC:=AC+DR,F:=(DR[n-1]andMQ[0]orFRSHIFTAC[n-1]:=f,AC.MQ:=RSHIFT(AC.MQ),COUNT:=COUNT+1,ifCOUNT≠n-1then转到TEST1TEST2ifMQ[0]=0then转到FETCHSUBTRACTAC:=AC-DR,MQ[0]:=0,转到FETCH扩展模型机的微程序控制器

假设扩展模型机操作控制字段采用直接控制法,则操作控制字段和条件选择字段的长度和为32位微指令字长为32位,并设分支地址字段的长度采用8位以表示完整的控制存储器地址空间

6.3.5实例:基于微代码的CPU:奔腾微处理器

6.4流水线技术6.4.1指令流水线原理

6.4.2流水线性能

6.4.3流水线中的多发技术

6.4.1指令流水线原理

在程序执行时,指令的执行经历了一系列的处理步骤,这个分步骤的执行过程很自然地形成一个流水过程,在一般情况下,指令的执行过程包括:取指令;分析指令;取操作数;执行指令;保存操作结果。通常意义来讲,指令流水线是一个多功能的、可重配置的流水线,通过充分重叠不同的指令不同执行步骤实现加快计算机的执行速度。指令流水线在通常情况下,对程序员来讲是不可见的,而由编译器和CPU内部的程序控制器来自动的进行管理。1.流水线结构

上图是一个具有m个阶段的运算流水线,在流水线中的第Si阶段完成数据处理后,将其处理结果连同其他未处理数据一起传送到第Si+1阶段,以进行进一步的处理,与此同时Si段从Si-1段接收到一个新的数据进行处理。在整个流水线中共存在m个独立的数据,但它们分别位于流水线的不同的阶段,在相邻的两个阶段之间设置缓冲寄存器R和其他的同步逻辑,以避免相邻阶段之间的相互影响。

2.多阶段流水线

一个m段的指令流水线能够重叠m条指令的执行,使用m个阶段的目的就是尽最大可能地提高指令吞吐率。如何决定m的值呢?多段流水线的段数是由指令执行过程可以被有效分解的段数决定的,而这个段数是与指令系统的复杂程度、内存的组织形式、CPU内部的数据通路结构等因素有关。在实际应用中,流水线的段数的范围是3个到十几个或更多。一个具有4段流水线的CPU图中所显示的四个阶段(S1——S4)分别执行下面功能:IF:将指令缓冲中的当前指令取出并进行解码。OL:将操作数由数据缓冲取到寄存器中。EX:使用ALU和寄存器对数据进行处理。OS:将运算结果由寄存器存储到数据缓冲中。四阶段指令流水线的时空图。

假如每个阶段的操作均在一个CPU周期(Tc)内完成,此时指令流水线和CPU作为一个整体将以f=1/Tc的时钟频率运行。在理想情况下,假如忽略分支转移、cache缺失或其他原因的延迟,指令流水线的最大的吞吐率可以达到每个周期执行一条指令,既CPI=1。

6.4.2流水线性能1.流水线性能评价

流水线的性能可以通过指令的吞吐率来度量,吞吐率的单位一般是MIPS表示每秒有多少兆条指令被执行。另一个比较流行的评价指标是CPI表示每条指令执行所需的时钟周期数。

其中f是流水线的时钟频率,单位是MHz。CPI和MIPS都是系统平均值,它们是通过运行系统测试基准程序获得的。CPI的最大值是1,即每个时钟周期完成一条指令执行,此时流水线的性能达到最佳,系统的指令吞吐率与流水线的时钟频率相等。系统最大吞吐率的获得要求指令流水线应被送入一个连续不断的指令流,这样可以保证指令流水线的各阶段都保证处于忙状态,从而提高硬件利用率和指令的执行速度,可视化的分析工具———时空图时空图通过显示指令流水线的每一个阶段的时间关系。一般情况下,一个m段流水线的时空图包含m×n个格,其中n表示完成N条连续指令所需的时钟周期的个数。图中的非阴影部分表示流水线的该阶段在指定周期处于忙的状态,并是对应指令处于对应处理阶段,阴影部分表示在指令序列中该阶段没有被使用,这些阶段也可是因为所需的数据未准备好,而处于空闲状态。

其它度量参数效率E(m):在整个时空图中非阴影部分(忙阶段)所中的比例称为流水线的效率。加速比S(m):被定义成如下的形式其中:T(m)表示指定工作程序的指令流在m段流水线上的指令执行时间,T(1)表示相同的指令流在非流水线机上的执行时间。加速比与效率之间存在如下关系:2.m的最优化选择

加速比的定义公式给出一个改进流水线的性能的途径,即增加指令流水线的段数m。

是不是指令流水线的段数越多越好呢?段数多少为合适呢?为确定m的取值范围做如下的假设和推导:假设流水线P有m个段,并执行一个特定的指令集合SI,a是一个高效的非流水线计算机执行相同的指令集所需的时间。指令流水线中每个阶段的延迟是a/m,指令流水线应加上一个附加的延迟b,它是由于添加了阶段之间的缓冲寄存器。c是每个阶段的缓冲寄存器成本,d是流水线数据处理部分的硬件成本。(流水线性价比PCR与段数m之间关系示意图)

实际上,大多数流水线的时在功能级上进行分段的,段数的范围在2≤m≤15之间。在实际的计算机中,极少有计算机的流水线设计成超过10段的。

3.影响流水线性能的因素以及解决方法

在分析流水线的性能过程中,流水线的性能达到最高水平要求指令系列是连续的,且在指令执行过程中流水线的各段都应处于忙状态。实际上在计算机的执行过程中,许多问题均可以影响流水线的执行,很难保证流水线各个阶段在任何时刻均保持处于忙的状态。有哪些因素影响流水线的运行?这些问题如何解决?在实际指令执行过程中有以下几种情况可能影响流水线的性能:(1)访存冲突

(2)控制相关

(3)数据相关

(1)访存冲突根据前面的分析可知,在指令流水线的取指令、取操作数、存操作数等阶段都需要访问存储器,使得流水线的后继指令的执行停滞,影响流水线的性能。一般可采用以下方法进行解决:1)设置两个独立的存储器分别存放操作数和指令,以免取指令和取操作数同时进行时相互冲突,使取某指令和取另一条指令的操作数实现时间上的重叠。2)采用指令预取技术,如在8086中设置指令队列,将指令预先取到指令队列中排队。指令预取技术的实现是基于访存周期很短的情况,如在指令执行阶段,取数的时间很短,因此在指令执行时,主存会有空闲,此时,只要指令队列空出,就可以取下一条指令,并放至空出的指令队列中,从而保证在执行第K条指令的同时对第K+1条指令进行译码,实现“指令K指令”与“分析K+1”的重叠。3)一般情况下也可以采用精细的调度算法,使得可能发生访存冲突的指令的开始执行时间相互错开,涉及内容较多,将在后继课程《系统结构》中详细介绍,(2)控制相关条件转移、无条件转移、子程序调用和其它的程序控制指令都可能导致分支转移,在这些指令的执行过程中,下条指令的地址在程序控制类指令I执行完毕之前都是不确定的。在程序控制指令I执行时,取入的指令很可能是一条错误指令,若程序控制指令导致程序控制流程跳转到另外一个位置,此时在之前预取的指令和相应操作都被取消,这将导致指令流水线刷新,明显的降低指令吞吐率。一般采用如下的解决办法:1)在双分支转移情况下,编译器和指令流水线控制逻辑将“猜测”分支方向,即预测分支条件测试结果,将最用可能的目标指令在程序控制指令I取入到指令流水线。此时指令流水线的刷新只有在“猜测”错误情况下才会发生。

2)流水线计算机也可以通过采用不同的硬件技术来解决由于分支转移引起的流水线性能下降。3)在大部分RISC计算机中都普遍采用延迟分支技术,一条延迟分支指令I1在执行时指令I2被预取到指令流水线中,但指令I2并非分支指令I1的转移分支,分支指令I1的转移分支I`被放在指令I2后运行,而非一般意义上的在指令I1之后运行。(3)数据相关数据相关问题的发生是因为在相近的指令共同使用同一个操作数,数据相关也能影响指令流水线的吞吐率。

数据相关有读-写相关、写-读相关和写-写相关等几种形式,这几种情况的发生与指令流水线的结构有关,同时也与进行存取(针对存储器或寄存器)操作的指令的顺序有关。解决方法:1、程序执行过程中可以通过检测来判断是否存在数据相关风险,这种检查可以在程序编译过程中进行静态风险检测,也可以在程序运行过程中进行动态风险检测。若有存在数据相关风险的指令对(I1,I2),只要保证在指令I2进入数据读写阶段之前,指令I1完成可能发生数据相关的阶段即可,可以通过在指令I1之后插入若干个空操作指令,以延迟指令I2的执行。也可以通过改变指令的顺序,或将其他指令插入到I1和I2之间,插入的指令应当既不减慢指令流入流水线的速度,又不会影响程序的功能。2、在流水线中设置专门的数据传送通路,实现在相互作用的指令之间快速传递共享数据。(使用前向数据通路减低数据相关延迟损失示意图)流水线性价比PCR与段数m之间关系示意图使用前向数据通路减低数据相关延迟损失示意图6.4.3流水线中的多发技术

流水线技术使计算机的体系结构发生重大变革,提高了计算机的性能,为了进一步提高计算机的性能,除了采用好的指令调度算法、重新组织指令执行顺序、采用一定的措施降低相关带来的干扰和优化编译之外,还可开发指令流水线的多发技术,设法在一个时钟周期之内完成更多指令的执行。常见的多发技术包括:

超标量技术

超流水技术

超长指令字(VLIW)

超标量技术超标量是指在每个时钟周内可同时并发多条指令,以并行操作方式将两条或两条以上的指令译码执行。在超标量计算机中有多个执行部件(E-unit),每一个分属不同的指令流水线,这样在机器内部就构成了多个相互独立的指令流水线。程序控制单元(PCU)被设计成具备同时读取并译码多条指令的能力,而且能够把同时取得K指令分别

温馨提示

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

评论

0/150

提交评论