首页> 中国专利> 一种支持多模式的媒体增强流水线乘法单元设计方法

一种支持多模式的媒体增强流水线乘法单元设计方法

摘要

本发明公开了一种支持多模式的媒体增强流水线乘法单元设计方法。本发明除了实现普通乘法和乘累加运算外,针对媒体应用的数据并行性提出了单指令多数据(SIMD)模式,针对非数据并行提出了多指令多数据(MIMD)模式,以及针对高精度的数据操作提出了高精度运算模式。四种乘法运算模式为媒体应用领域中数字信号处理的复杂算法提供了灵活的支持。四种模式指令动态切换,有效减少算法切换时间。该乘法单元对于各种类型的乘法分别采用流水设计方法,提高了各种乘法运算的速度,极大的提升了运算吞吐率。本发明提出的乘法单元应用于嵌入式处理器中,提升了嵌入式处理器的数字信号处理能力,扩展了应用领域。

著录项

  • 公开/公告号CN101162423A

    专利类型发明专利

  • 公开/公告日2008-04-16

    原文格式PDF

  • 申请/专利权人 浙江大学;杭州中天微系统有限公司;

    申请/专利号CN200710156913.2

  • 发明设计人 严晓浪;徐鸿明;龚帅帅;葛海通;

    申请日2007-11-20

  • 分类号G06F9/38(20060101);G06F9/318(20060101);

  • 代理机构33200 杭州求是专利事务所有限公司;

  • 代理人张法高

  • 地址 310027 浙江省杭州市浙大路38号

  • 入库时间 2023-12-17 19:58:27

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-01-25

    未缴年费专利权终止 IPC(主分类):G06F9/38 授权公告日:20090211 终止日期:20101120 申请日:20071120

    专利权的终止

  • 2009-02-11

    授权

    授权

  • 2008-06-11

    实质审查的生效

    实质审查的生效

  • 2008-04-16

    公开

    公开

说明书

技术领域

本发明涉及一种支持多模式的媒体增强流水线乘法单元设计方法。

背景技术

随着多媒体编解码、通信技术和超大规模集成电路设计能力的不断发展,基于嵌入式处理器和DSP的多媒体音视频应用领域得到巨大的发展。目前,消费类电子产品,如手机、MP3、数字电视、数字广播等已经成为普通的廉价消费品。

另一方面,随着技术不断发展,用户对于多媒体产品的实时性、复杂性和音视频的品质的要求也日益提高。这迫使多媒体技术进一步发展以及数字信号处理的实现进一步创新,硬件加速编解码的处理成为目前数字信号处理的必然选择。对于不同的应用特征,数字信号处理技术中有很多算法,如FIR,DCT,IDCT等,但是通过分析,可以发现这些被广大媒体算法所采用的形形色色的算法实际上都是乘法和乘累加运算。乘法和乘累加运算的实现和加速是所有硬件编解码器或者DSP实现中最为关键的一环。

为了增加硬件系统的灵活性和提高运算处理能力,数字信号处理器(DigitalSignal Processor)已经被广泛的应用到很多音视频系统中。数字信号处理器对于乘法和乘累加运算进行了硬件加速,大幅提高了处理能力,而且由于其运行软件,可以用软件实现各种音视频的标准,给产品的灵活性带来了很大希望。但是由于DSP产品本身主要运用于运算领域,而非控制领域,这使得其对于目前多任务,编程复杂度不断提升的今天变得力不从心。

嵌入式微处理器成本比较低,执行复杂控制程序的能力强,但是数字信号处理的能力相对较差。在目前的多媒体实际应用中,既需要有很强的数字信号处理能力以便于对各种信号进行采样和分析,同时也需要有很强的控制能力支持多任务操作的需要。从目前现状发现微处理器和DSP正在逐步融合。因此在微处理器中,增加相应的DSP增强单元显得非常紧迫。

本专利提出的一种支持多模式的媒体增强流水线乘法单元是一个应用于数字信号处理领域的嵌入式处理器媒体编解码功能增强单元。该单元的本质是在嵌入式处理器中通过简单的扩展,保持其控制能力的同时,有效提升数字信号处理能力,达到部分DSP的功能。

发明内容

本发明的目的是提供一种支持多模式的媒体增强流水线乘法单元设计方法。

支持多模式的媒体增强流水线乘法单元设计方法特征如下:

1)根据汇编指令的不同类型动态选择普通单指令单数据乘法、单指令多数据乘法、多指令多数据乘法或高精度乘法;

2)上述四种乘法采用流水线设计;

3)将上述四种乘法运算分别分离为操作数准备和数据运算两个阶段,各个阶段单独处理;

4)多模式媒体增强流水线乘法单元的每个数据通路均能进行乘法和乘累加操作;

5)对于乘法单元的高精度乘法数据通路,通过增加流水线的深度,提高整体的性能;

6)多模式媒体增强流水线乘法单元设置整数和小数两种运算模式;

7)在乘累加运算中,对乘法运算后得到的中间结果进行了保护位的扩展,扩大加法运算的区间;

8)设置指令退休缓冲区,支持乘法和乘累加指令快速退休;

9)高位寄存器和低位寄存器物理上相互独立,逻辑上相连。

所述的根据汇编指令的不同类型动态选择普通单指令单数据乘法、单指令多数据乘法、多指令多数据乘法或高精度乘法:在媒体处理器指令集中,增加支持相应模式的汇编指令集,用户通过简单调用不同类型的指令,硬件自动选择对应的模式进行运算;单指令单数据模式指单条指令操作单个数据;单指令多数据模式指单条指令同时对多个数据进行操作;多指令多数据模式指同时执行多条指令对于多个数据进行操作;高精度乘法指操作数的宽度比普通乘法操作数宽的乘法操作,结果的精度也比普通乘法高。

所述的上述四种乘法采用流水线设计:分别将普通单指令单数据乘法、单指令多数据乘法、多指令多数据乘法或高精度乘法运算划分为若干步骤,每个时钟周期,流水线各级的硬件可并行执行不同指令的不同操作。

所述的将上述四种乘法运算分别分离为操作数准备和数据运算两个阶段,各个阶段单独处理:从抽象层次上将操作数的准备和数据的运算的过程相互独立,分别将其分配到不同的流水线级中,进行并行操作。

所述的多模式媒体增强流水线乘法单元的每个数据通路均能进行乘法和乘累加操作:每个数据通路作为单独的数据运算逻辑单元可以做乘法操作,也支持乘累加的运算,乘累加运算复用了乘法功能单元。

所述的多模式媒体增强流水线乘法单元设置整数和小数两种运算模式:乘法器根据用户配置,通过改变硬件数据通路的控制逻辑,分别执行小数的乘法和整数的乘法运算。

所述的在乘累加运算中,对乘法运算后得到的中间结果进行了保护位的扩展,扩大加法运算的区间:在累加运算中,对于每个乘法中间结果进行相应的符号位扩展,符号位扩展增加加法运算的精度,保证累加结果在一定的范围内不产生溢出。

所述的设置指令退休缓冲区,支持乘法和乘累加指令快速退休:乘法单元中设计了专用的退休缓冲区,主要用于控制指令在主流水线未干预情况下快速退休。

所述的高位寄存器和低位寄存器物理上相互独立,逻辑上相连:高位寄存器和低位寄存器在物理上是独立的,分别对应不同的数据通路输入的结果;在逻辑上,在对应高精度的乘法和乘累加的运算,由于结果宽度增加,因此高位寄存器被用来存放结果的高位结果信息,低位寄存器用来存放低位结果信息,两者在逻辑上保持联系。

本发明是一种满足媒体应用领域复杂数字信号处理算法需求的先进乘法单元结构。该结构支持普通单指令单数据乘法、单指令多数据乘法、多指令多数据乘法或高精度乘法,给复杂算法提供了灵活的支持。通过采用流水线设计,极大的提升了乘法单元的运算吞吐率,提高了运算处理速度。

附图说明

图1是多模式乘法单元流水线划分图;

图2是操作数准备单元硬件原理图;

图3是数据通路硬件原理图;

图4是快速退休机制硬件电路图。

具体实施方式

支持多模式的媒体增强流水线乘法单元是一个为通用嵌入式处理器设计的媒体算法增强的硬件执行单元。其仅仅是一个执行单元,是复杂嵌入式处理器的有效补充。

支持多模式的媒体增强流水线乘法单元设计方法特征如下:

1)根据汇编指令的不同类型动态选择普通单指令单数据乘法、单指令多数据乘法、多指令多数据乘法或高精度乘法;

2)上述四种乘法采用流水线设计;

3)将上述四种乘法运算分别分离为操作数准备和数据运算两个阶段,各个阶段单独处理;

4)多模式媒体增强流水线乘法单元的每个数据通路均能进行乘法和乘累加操作;

5)对于乘法单元的高精度乘法数据通路,通过增加流水线的深度,提高整体的性能;

6)多模式媒体增强流水线乘法单元设置整数和小数两种运算模式;

7)在乘累加运算中,对乘法运算后得到的中间结果进行了保护位的扩展,扩大加法运算的区间;

8)设置指令退休缓冲区,支持乘法和乘累加指令快速退休;

9)高位寄存器和低位寄存器物理上相互独立,逻辑上相连。

所述的根据汇编指令的不同类型动态选择普通单指令单数据乘法、单指令多数据乘法、多指令多数据乘法或高精度乘法:在媒体处理器指令集中,增加支持相应模式的汇编指令集,用户通过简单调用不同类型的指令,硬件自动选择对应的模式进行运算;单指令单数据模式指单条指令操作单个数据;单指令多数据模式指单条指令同时对多个数据进行操作;多指令多数据模式指同时执行多条指令对于多个数据进行操作;高精度乘法指操作数的宽度比普通乘法操作数宽的乘法操作,结果的精度也比普通乘法高。为了使用这个执行单元,通用嵌入式处理器首选需要扩展其指令集,在原有指令集上扩展媒体增强相关的各种类型的指令。这些指令分为以下几个类型:

●普通精度乘法和乘累加指令

●高精度乘法和乘累加指令

●单指令多数据(SIMD)指令

●多指令多数据(MIMD)指令

普通精度乘法和乘累加指令是进行普通运算的指令,这些指令为双周期指令,一般应用于一些普通的场合。高精度乘法和乘累加指令是一种操作数数据宽度比普通乘法和乘累加指令宽的指令,通常宽度为普通乘法指令的一倍。这些指令将被用于那些对数据精度要求高(高保真的视频和音频数据预算)的场合。单指令多数据指令一条乘法指令可以分别对多个数据进行乘法和乘累加运算。一般应用于数据并行性比较好的场合,如双通道对称数据操作,一条指令执行两个通道送来的数据运算。多指令多数据指令是多条原子指令分别执行不同的数据的特殊指令。一般应用于数据并行性不理想,但又需要提高运算吞吐率的场合。这些指令相互配合,对于不同应用可进行灵活选择,提高媒体算法核心运算的速度。

所述的上述四种乘法采用流水线设计:分别将普通单指令单数据乘法、单指令多数据乘法、多指令多数据乘法或高精度乘法运算划分为若干步骤,每个时钟周期,流水线各级的硬件可并行执行不同指令的不同操作。通常在硬件设计中,普通乘法运算采用移位相加的方法,硬件电路的延时比较大,为了有效提高乘法运算单元的吞吐率,需要采用先进的流水线技术。在支持多模式的媒体增强流水线乘法单元中,通过仔细的研究和分析,对于各条数据通路进行了合理的流水线划分如图1所示。总体流水线划分了3级,由于高精度乘法和乘累加运算的速度相对较慢的特殊性,需要单独增加1级流水线。

所述的将上述四种乘法运算分别分离为操作数准备和数据运算两个阶段,各个阶段单独处理:从抽象层次上将操作数的准备和数据的运算的过程相互独立,分别将其分配到不同的流水线级中,进行并行操作。由于乘法单元需要支持多种模式的乘法和乘累加运算,操作数的准备比普通的乘法运算单元要复杂很多,因此将数据准备操作用单独的一级流水线来实现。通过嵌入式处理器的译码单元,将指令进行解码,得到相应的控制信息和数据信息。由于需要支持单指令多数据和多指令多数据模式,所以需要有两个或者两个以上的数据准备单元。这两个数据准备单元相互并行工作,电路原理图如图2所示。操作数准备硬件电路是基于选择器的电路。该部分硬件根据解码得到的信息选通对应的数据通路,为不同模式的操作数做好准备。另外在单指令多数据和多指令多数据的模式下,操作数准备硬件模块需要多数据进行截取和拼接。这些操作依照解码得到的逻辑进行操作。

所述的多模式媒体增强流水线乘法单元的每个数据通路均能进行乘法和乘累加操作:每个数据通路作为单独的数据运算逻辑单元可以做乘法操作,也支持乘累加的运算,乘累加运算复用了乘法功能单元。为了满足各类媒体算法对累加操作的需要,三个数据通路分别设计了单独的硬件累加器。累加器为一个带有保护位的加法器,硬件代价不大,但可以使累加操作在乘法结果出来之后直接进行操作,大大提高了硬件的利用效率。提升累加的整体性能。在操作数准备就绪后,对应的数据和控制信号就会进入流水线寄存器,准备进行数据的运算操作。支持多模式的媒体增强流水线乘法器有3条数据通路,各条数据通路的硬件结构如3所示。

数据通路1用来实现普通乘法和乘累加的运算操作,该通路是最基本的数据通路。通路顶端是一个乘法运算器,该乘法运算器支持有符号和无符号操作。这个乘法器是整个媒体增强流水线乘法器运算单元的核心器件,乘法操作的结果都在这个器件中产生。数据通路1在单指令多数据和多指令多数据的运算中,作为其中一条运算通路参与运算。

数据通路2是一条辅助数据通路。在普通乘法和乘累加运算中,其不参与数据的运算,处于休眠状态。在单指令多数据和多指令多数据的情况下,这条流水线被自动唤醒,参与运算操作。与数据通路1同时协同工作,这样实现了单个硬件时钟周期内执行两个运算操作,从而有效提高了数据操作的效率。其基本结构与数据通路1类似。

数据通路3是支持高精度乘法和乘累加操作的数据通路。通常情况下这个数据通路可以支持比普通数据通路的精度高一倍的数据运算。由于数据运算的宽度增加,该数据通路的运算延迟比较大,所以在这一通路中需要增加额外的一级流水线来实现总体频率的突破。因此在图1中所示的流水线划分中,对这条通路进行了额外的划分。

所述的多模式媒体增强流水线乘法单元设置整数和小数两种运算模式:乘法器根据用户配置,通过改变硬件数据通路的控制逻辑,分别执行小数的乘法和整数的乘法运算。在支持多种模式的媒体增强流水线乘法单元中,在每个模式下,均支持定点小数和整数的乘法操作。对于定点小数的乘法支持,仅需要按照整数乘法进行相乘,然后对乘法结果进行左移一位就可以得到小数的乘法结果。硬件代价小,通过简单的数据选择即可以得到3个数据通路分别对整数和定点小数的支持。

所述的在乘累加运算中,对乘法运算后得到的中间结果进行了保护位的扩展,扩大加法运算的区间:在累加运算中,对于每个乘法中间结果进行相应的符号位扩展,符号位扩展增加加法运算的精度,保证累加结果在一定的范围内不产生溢出。在累加过程中,中间结果很有可能产生溢出,溢出导致数据准确性下降。导致溢出的原因是由于累加运算采用的运算宽度不够。为了提高处理器在累加过程中的数据准确性,在多模式媒体增强乘法单元中增加了8个保护位。8个保护位可以保证在最差情况下(每次累加的值为最大值)连续256次累加,结果不溢出。保护位可以根据软件算法的要求进行重构。

所述的累加器设计中,设置指令退休缓冲区,支持乘法和乘累加指令快速退休:乘法单元中设计了专用的退休缓冲区,主要用于控制指令在主流水线未干预情况下快速退休。为了提高乘法单元的整体性能,乘法单元需要支持快速退休机制。由于乘法,特别是高精度乘法运算,采用了较深的流水线,流水线越深,越容易导致处理器主流水线的等待。为减少主流水线的停顿,本专利提出的乘法单元内建支持快速退休机制的硬件电路。绝大部分的乘法和乘累加操作通过快速退休缓冲区进行退休,提高退休速度,从而提高了嵌入式处理器的整体性能。快速退休缓冲区硬件实现如图4所示。可以被快速退休的指令在主流水线将操作发送给乘法单元时将该指令压入快速退休缓冲区。此后对于主流水线而言,这条指令已经交由乘法单元的快速退休缓冲区控制了,所以主流水线对其进行了退休操作,转而继续执行后续的指令。对于乘法单元的快速退休缓冲区而言,接受到主流水线发送而来的命令之后,开始负责这条指令的执行和退休。它会时刻监听从主流水线发送过来的退休信息。如果当前表项中的指令被主流水线退休,那么快速退休缓冲区只要等待乘法结果有效即可完成对指令的快速退休,不需要再将退休的请求发送给主流水线,由主流水线控制退休。

所述的高位寄存器和低位寄存器物理上相互独立,逻辑上相连:高位寄存器和低位寄存器在物理上是独立的,分别对应不同的数据通路输入的结果;在逻辑上,在对应高精度的乘法和乘累加的运算,由于结果宽度增加,因此高位寄存器被用来存放结果的高位结果信息,低位寄存器用来存放低位结果信息,两者在逻辑上保持联系。为了支持快速退休和结果快速存取,需要在乘法单元内部设置两个用来存取结果的寄存器。这两个寄存器在简单乘法和乘累加运算中,只用到低位寄存器。在高精度乘法和乘累加运算中,两个寄存器联合使用,分别表示结果的高位和低位。在单指令多数据和多指令多数据的乘法和乘累加运算中,这两个寄存器被并行使用,分别用来存储两个数据通路的结果。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号