32位DSP设计中的流水线数据相关问题及解决办法

发布者:平安幸福最新更新时间:2007-06-01 来源: 电子元器件应用关键字:浮点  哈佛  时钟  指令 手机看文章 扫描二维码
随时随地手机看文章
引言

在航空微电子中心的某预研项目中,需要开发设计某32位浮点通用数字信号处理器(DSP)。本系统控制通路部分的设计采用超级哈佛及五级流水线结构。本文分析了该流水线的设计过程,并对遇到的数据相关问题提出了一种新的解决方法。

1 流水线结构

流水线处理器一般把一条指令的执行分成几个步骤,或称为级(stages)。每一级在一个时钟周期内完成,也就是说在每个时钟周期,处理器启动并执行一条指令。如果处理器的流水线有m级,则同时可重叠执行的指令总条数为m。由于每条指令处在不同的执行阶段,因此,如果分级分得好,每一级都没有时间上的浪费,这就是最理想的情况。流水线处理器在理想情况下与非流水线处理器的性能加速比为:

 

式中,I为一个程序被执行的总的指令条数,它在流水线处理器和非流水线处理器中是相等的。CPInp是每条指令总体平均所需的时钟周期数。因为流水线处理器把一条指令的执行时间理想地分成了m级,故有m条指令在同时(重叠)执行。T是每个时钟周期的时间长度,本例可假设它在两种处理器中也是相同的,那么,最后总的加速比为m(即等于流水线的级数)。并不是说把流水线级数分得越多,处理器的性能就越好。流水线处理器性能提高的关键在于每个时钟周期处理器都应当能启动一条指令的执行。

2 数据相关问题

下面来讨论数据相关(data dependence)问题及解决方法,先来看看下面的程序例子:

在上述程序段中,I1指令把寄存器r2和r3的内容相加,并将结果存人寄存器r1,这样,它下面的4条指令均与I1相关,其使用I1的结果如图1给出的数据相关关系图。从图中可见,当每个周期结束时,在时钟上升沿应把数据打入寄存器。在数据没被打入之前,任何从该寄存器读出的数据都是过时的。图1中的I2到I4的3条指令就属于这种情况。它们从r1寄存器读出的数据都是过时的,是不能使用的。I5则没关系,当它读r1寄存器时,I1已将结果写入。

I1下面有3条指令不能从寄存器r1读出正确的数据。为了减少数据相关指令的条数,设计时可以让写寄存器堆的操作提前半个周期,即由时钟的下降沿打入。实践证明这样做是可行的,因为假定一个时钟周期是10 ns,寄存器堆的访问只需要5 ns。这样,数据相关的指令条数就减至两条,其操作示意图如图2所示。  

3 数据相关问题的解决

在流水线处理器中处理数据相关问题有两种方法:一种是暂停相关指令的执行,即暂停流水线,直到能够正确读出寄存器操作数为止;另一种是采用专门的数据通路,直接把结果送到ALU的输入端,也就是把内部数据前推。描述这两种方法可参考图2所示的方案,即把写寄存器堆提前半个周期,这时,只需考虑两条相关指令。下面以ALU指令为例对暂停流水线的执行方法加以分析。

3.1 暂停数据相关流水线

暂停数据相关流水线指令是当数据相关出现时,暂时停止相关指令的执行,等剑相关数据能从寄存器读出再恢复执行。这里涉及到两个问题,一个是如何检测数据相关,另一个是如何暂停流水线。下面对这两个问题分别加以描述。

首先考虑数据相关如何用硬件电路检测出来。由于I1与目的寄存器rd、I2和I3的源操作数是寄存器rs1或rs2中的数据,且只有当它们的rs1或rs2与I1的目的寄存器号rd相等时才有可能发生数据相关,因此,硬件电路中要有比较器。由于指令格式中的源寄存器号rs2与立即数部分重叠,而立即数是不会出现相关的,因此,指令操作码必须要参与检测,以区分是寄存器操作数还是立即数。另外,如I1指令的rd一定作为目的寄存器号使用,也就是当结果要被写入目的奇仔器时,后面的指令才有可能与之相关。上述规则用表达式表述如下(它们是在ID级检测数据相关的表达式):

 

由于一条指令中的两个源操作数都可能与上一条指令的目的操作数相关,因此,总的数据相关DEPEN由A DFPEN和B_DEPEN两部分组成。A_DEPEN指的是源寄存器rs1数据相关,B_DE-PEN指的是源寄存器rs2数据相关。另外,两条指令I2和I3也都可能与I1相关。如果是在流水线ID级检测数据相关,那么,对于I2来讲,I1处在EXE级;对于I3来讲,I1处在MEM级,因此,A_DEFPEN包括EXE_A_DEPEN和MEM_B_DEPEN两部分。EXE_A_DEPEN的意思是处在ID级的指令与处在EXE级的指令数据相关。同理,MEM_A_DEPEN的意思是处在ID级的指令与处在MEM级的指令数据相关。同样,B_DEPEN也包括EXE_B_DEPEN和MEM_B_DEPEN两部分。

EXE_A_DEPEN为真的条件是:I2的rs1与I1的rd相等(ID_rs1==EXE_rd),rs1字段是寄存器(ID_rs1IsReg),并且I1的rd确实是目的寄存器(EXE_WREG==1)。后一个条件是为排除store指令而加上的。EXE_B_DEPEN与EXE_A_DEPEN类似,源寄存器号(ID_rs2IsReg)所包含的指令要比ID_rs1IsReg少得多。I3与I1的数据相关判断与此类似。

得出了数据相关条件后。下一步的任务是确定如何暂停流水线。这里要特别注意的一个问题是不能停止所有指令的流水线,而只能暂停相关指令及其后续的所有指令。假如I2与I1相关,则只暂停I2及I2以下的指令,而不应把I1也暂停,否则,处理器将永远暂停下去。暂停流水线要注意以下3个方面:

 

(1) 封锁当前正译码的指令的写控制信号;

(2) 不能把从存储器取来的下条指令打入IR;

(3) 不改变当前PC值。

实际操作时可使用如下的方法实现流水线的暂停:

这样,当I2与I1相关时,流水线将暂停两个周期。I3与I1相关时,流水线暂停一个周期。通常把被暂停掉的周期称作流水线“气泡”。暂停流水线是解决流水线处理器数据相关问题的一种有效方法。使用这种方法可保证处理器能够从寄存器堆读出正确的数据。但是,暂停流水线两个或一个周期会造成处理器性能的损失。因此,如果没有数据相关,处理器完全可以多执行两条或一条指令。在使用这种方法的处理器组成的计算机系统中,高级语言的编泽器和汇编器在产生最终目标机器码时,应尽量避免出现过多的数据相关指令序列。编译器和汇编器最初可以在相关指令之间插入nop指令,然后进行优化,可以用一些有意义的不相关的指令替换掉nop,以减少“气泡”的出现。

3.2 内部前推

流水线数据相关问题的本质在于一条指令执行时要用到上面指令的计算结果,但这个结果尚未被写入寄存器堆,因此,如果让ALU使用从寄存器堆渎出的数据的话,流水线“气泡”问题也可以得到解决。试想,数据相关发生在ALU计算周期,而所有的计算任务均由这一个ALU来按顺序完成,也就是说,ALU计算时发现与上一条或两条指令的结果数据相关的话,这些结果实际上已由ALU计算出来了,只是还没有写入寄存器堆,但其结果还在流水线寄存器R和C中,这就可以把它们直接拿过来用。为此,可在ALU的两个数据输入端各加一个多路器,以使R和C中的数据能被直接送到ALU的输入端,这样就用内部前推技术提高了流水线的性能。

4 结束语

采用暂停数据相关流水线的方法可以解决数据相关问题。目前,笔者已将该方法应用于某32位浮点通用数字信号处理器中,而且该处理器已经没计完成,并通过综合仿真查验波形证明:该DSP完全符合要求。

关键字:浮点  哈佛  时钟  指令 引用地址:32位DSP设计中的流水线数据相关问题及解决办法

上一篇:32位DSP设计中的流水线数据相关问题及解决办法
下一篇:CEVA推出CEVA-TeakLite-III DSP架构

推荐阅读最新更新时间:2024-05-02 20:36

89C52单片机之数字时钟制作
这里和上面一篇数字秒表差不多,只不过复杂在多了四个七段显示屏,整个显示分为时、分、秒三部分。时为24时置为0,分为60时置为0并向时进1,秒为60时置为0并向分进1。 程序: #include reg52.h #include INTRINS.H void delay(unsigned char dly) { unsigned char i,j; for(i=100;i 0;i--) for(j=dly;j 0;j--) ; } unsigned char num,time1,time2,time3; void timer0()interrupt 1 { TH0=(65
[单片机]
我国电子产品面临环保攻坚战
8月11日,欧盟用能产品标准的生态化设计EuPs指令将正式生效,对电子信息产品等用能产品的设计、制造、运输、使用、回收等提出生态化的标准要求。有关分析人士认为,这一新指令将对全球电子信息产业发展产生革命性影响。 “对此,我国要研究提出应对措施及我国电子信息产品标准的生态化要求,制订节能降耗的行业标准,将节能环保的管理措施贯穿于电子信息产品的整个生命周期中。”信息产业部经济体制改革与经济运行司黄建忠说。 今年3月1日,我国首部电子信息产业绿色法规《电子信息产品污染控制管理办法》施行。由 信息产业部 组织的“电子信息产品污染控制标准工作组”已经出台3项行业标准,另有6项标准预计在今年年底前推出,届时将基本实现有害物质在电子产品中的替
[焦点新闻]
STM32-嵌入式学习笔记1-使用HSE和HSI配置时钟
RCC主要作用:时钟 设置SYSCLK 设置AHB分频因子····配置好这些因子就能对时钟进行完整的配置。 时钟树如图: 系统时钟的选择是在启动时进行,复位时内部8MHz的RC振荡器被选为默认的CPU时钟,随后可以 选择外部的、具失效监控的4~16MHz时钟;当检测到外部时钟失效时,它将被隔离,系统自动地切 换到内部的RC振荡器,如果使能了中断,软件可以接收到相应的中断。同样,在需要时可以采取对 PLL时钟完全的中断管理(如当一个间接使用的外部振荡器失效时)。 多个预分频器用于配置AHB的频率、高速APB(APB2)和低速APB(APB1)区域。AHB和APB的最高频 率是36MHz。 编程要领: 1)
[单片机]
STM32-嵌入式学习笔记1-使用HSE和HSI配置<font color='red'>时钟</font>
8051单片机指令系统的7种寻址方式解析
寻址方式:寻址就是寻找操作数的地址。绝大多数指令执行时都需要操作数,因此就存在如何确定操作数地址的问题。所谓寻址方式就是通过什么途径获取操作数的方式。根据指令操作的需要,计算机总是提供多种寻址方式。一般来说,寻址方式越多计算机的寻址能力就越强,但指令系统也就越复杂。 8051指令系统有7种寻址方式:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,基址寄存器加变址寄存器间接寻址,相对寻址,位寻址,下面分别介绍。 寄存器寻址 寄存器寻址:寄存器寻址就是操作数在寄存器中,因此指定了寄存器就得到了操作数。采用寄存器寻址方式的指令都是一字节的指令,指令中以符号名称来表示寄存器。例如:MOV A R1 这条指令的功能是把工作寄存器R1
[单片机]
浅析AD9522时钟分频电路原理
在集成度高度发展的今天,不能靠多个晶振源来解决问题,而且一旦晶振固定那么它的灵活性和可移植性必然受到很大影响,所以一些时钟分频芯片应运而生,今天我们将举一个很有代表性的AD9522时钟分频芯片的典型应用来达到一个抛砖引玉的作用。 一、AD9522简介 1.外部特性 A D 9 5 2 2是一个多路时钟输出和分配功能的芯片,本身支持亚皮秒抖动性能,在芯片内部还集成了PLL(PhaseLockedLoop)和VCO(压控振荡器)。VCO的调谐范围是 2.02GHz~2.335 GHz.AD9522串行接口支持SPI与I2C的数据总线,芯片内部的EEPROM可通过串口进行编程,可以用来存储用户配置的寄存器数据从而使输入时钟分频。AD95
[电源管理]
浅析AD9522<font color='red'>时钟</font>分频电路原理
STC12C5A60S2系列单片机PCA时钟源设置
在使用STC12C5A60S2系列单片机PCA输出PWM时需要设置PCA时钟源,如以下代码 void PCA_Init(void) { CCON = 0; //PCA初始化 CMOD = 0x00; //空闲时不计数,不产生中断,时钟源为Sysclk/12,PWM频率大约为4KHz CL = 0x00; //PCA低8位清零 CH = 0x00; //PCA高8位清零 CCAPM0 = 0x42; //8位PWM模式,无中断 CCAP0H = 0xc0; //PWM0占空比(调节此处值调节PWM占空比) CCAP0L = 0xc0; //PWM0占空比(调节此处值调节PWM占空比) CCAPM1
[单片机]
STC12C5A60S2系列单片机PCA<font color='red'>时钟</font>源设置
基于单片机定时器中断的时钟程序
大家只要自行更改端口就可以使用,走时还是比较准确的 #include reg51.h #define uchar unsigned char #define uint unsigned int sbit RING1=P3^7; //P3^7接蜂鸣 sbit OPEN=P3^1; //闹钟开时LED亮 uchar idata buffer ={0,0,0,0,0,0,10,11};//定义两段缓冲区,buffer用于过程中时间BCD码暂存并初始化 uchar code LED
[单片机]
三菱FX3U PLC利用RS指令实现Modbus RTU通信
在了解了Modbus通信的基本格式后,本期将通过仿真的方式实现Modbus RTU通信协议在三菱FX3U PLC上的应用。 指令介绍 一、软件准备 虚拟串口工具 Modbus Slave 凌一PLC仿真器 GX works2编程软件 二、RS指令 RS指令是在执行串口通信时用来接收和发送数据的指令,使用该指令时需要在PLC上插入FX3U-485-BD通信模块。 1)基本格式 其中m(发生数据的个数)和n(接收数据的个数)需要根据外部设备的报文格式指令,不能随便设置。 2)示例 X0: RS指令触发条件,当X0位ON时RS指令进入发送或接收数据的等待状态。 D10: 发送数据的起始寄存器。 K8: 发送数据的
[嵌入式]
三菱FX3U PLC利用RS<font color='red'>指令</font>实现Modbus RTU通信
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved