用于具有二元数字信号处理指令的指令集结构的方法和装置的制作方法

文档序号:6465392阅读:227来源:国知局
专利名称:用于具有二元数字信号处理指令的指令集结构的方法和装置的制作方法
技术领域
本发明一般地涉及处理器的指令集结构(ISA)。更具体地,本发明涉及用于在信号处理集成电路内执行运算的指令集结构。
背景技术
单芯片数字信号处理器件(DSP)是比较公知的。通常来说,DSP与通用微处理器的区别在于,通过包含用于实现数字的乘法的专用乘法器和累加器(MAC),DSP通常支持加速的算术运算。典型的DSP器件的指令集通常包括一个MAC指令,用于实现新运算数的相乘以及与存储在累加寄存器内的先前累加值的相加。MAC指令通常是在现有技术的数字信号处理器中提供的唯一一种通过执行一个指令实现两个DSP运算、即相乘然后相加的指令。然而,当对数据实现信号处理功能时,人们常常希望实现各种组合的其他DSP运算。
可能利用DSP的一个领域是电信系统。在电信系统中,DSP的一个用途是数字滤波。在这种情况下,通常用指令来编程DSP,以完成在数字域或时间域的某种滤波功能。典型的有限冲激响应(FIR)滤波器的数学算法看起来象等式Yn=h0X0+h1X1+h2X2+…+hnXn,其中hn是序号从1到n的固定滤波系数,Xn是数据采样。等式Yn可以通过使用软件程序来估算。但在某些应用程序中,必须尽可能快地估算该等式。达到这一目的的一个办法是,使用例如DSP器件的硬件部件来实现该计算,所述DSP器件被编程以计算等式Yn。为了进一步加速该处理,希望矢量化该等式,在多个DSP中分配该计算,这样可以更快地获得最终的结果。多个DSP并行运算以便加速该计算过程。在这种情况下,各项的相乘被同等地分布在各个DSP的乘法器中,以便各项的同时计算。类似地,各项的相加被同等地分布在各个DSP的加法器中,以便同时计算。在矢量化处理中,处理项的次序是不重要的,因为组合是相关的。如果各项的处理次序改变,对函数的矢量化处理中所期望的最终结果没有影响。
在典型的微处理器中,MAC运算需要乘指令和加指令,以便实现相乘和相加。为了执行这两个指令,需要两个处理周期。另外,为典型的微处理器所写的程序需要更大的程序存储器,以便存储实现MAC运算所必须的额外指令。在现有技术的DSP器件中,如果需要实现MAC DSP指令以外的DSP运算,则该运算需要独立的算术指令,其被编程到程序存储器中。类似地,与单个MAC指令相比,在现有技术的DSP中的这些独立的算术指令也需要增加的程序存储器空间和处理周期,以实现该运算。当执行DSP运算时,人们希望减少处理周期的数目。人们也希望减小对程序存储器的要求。
DSP常常被编程在一个环中,以便使用不同的运算数来连续地实现包括一个MAC指令的加速的算术功能。更常见的,多个算术指令被编程在一个环中,以便对同样的数据集进行运算。使用不同的运算数,同样的算术指令常常被在环中一次又一次地执行。另外,每次完成一个指令,则在提取周期中从存储在存储器中的程序中提取另一个指令。提取周期需要一个或多个周期时间以便在指令执行发生前访问存储器。因为电路在提取周期中改变状态,所以消耗了功率,因此人们希望减少提取周期的数目。通常,大约百分之二十的功率消耗在环的建立和清理运算中以执行DSP指令。通常,实现数据的信号处理的环的执行,消耗功率消耗的大约百分之八十,很大一部分是由于指令提取。另外,因为DSP器件处理的数据集通常很大,所以人们也希望通过避免对存储器的频繁提取来加速指令执行。
另外,电话系统的服务质量常常与信号的处理速度有关。对于DSP要提供诸如语音压缩、语音解压缩和多通道的回声抵消的语音处理的情况,尤其是这样。近来,处理速度已经变得更加重要,因为人们希望发送以分组化形式叠加有数据的语音,用于在分组化的网络上的通信。分组化的语音信号的处理延迟易于导致在接收端的信号质量的降低。
人们希望提供语音和数据信号的改进处理,以提高在分组化的网络上的语音和数据通信的质量。人们希望提高实现信号处理功能时使用计算资源的效率。

发明内容
简单地说,本发明包括如权利要求书中所述的方法、装置和系统。在通信系统的网关内设置了具有本发明的指令集结构(包括二元DSP指令)的多个针对应用程序的信号处理器(ASSP),以提高分组化网络上语音和数据通信的质量。每个ASSP包括一个串行接口、一个缓冲存储器和四个核心处理器,以便同时处理多个通道的语音或数据。每个核心处理器最好包括一个精简指令集计算机(RISC)处理器和四个信号处理单元(SP)。每个SP包括多个算术块,以同时处理多个语音和数据通信信号样本以便在IP、ATM、帧中继或其他分组化网络上通信。四个信号处理单元可以并行地执行数字信号处理算法。每个ASSP是灵活的,并可以被编程来实现很多网络功能或数据/语音处理功能,包括电信系统(如CODEC)、特别是分组化电信网络中的语音和数据压缩/解压缩,这些功能可以简单地通过改变控制ASSP执行的命令的软件程序来实现。
用于ASSP的指令集结构是针对包括诸如压缩/解压缩和回声抵消的音频和话音处理的数字信号处理应用程序设计的。ASSP中采用的指令集结构是适应于DSP算法结构的。本发明的ISA与DSP算法结构相适应平衡了实现的简便性、处理效率和DSP算法的可编程性之间的关系。可以将指令集结构看成是具有两个组成部分,一个部分(RISC ISA)对应于RISC控制单元,另一个部分(DSP ISA)对应于信号处理单元300的DSP数据通路。RISC ISA是一个包括寄存器文件413内的16个寄存器的基于寄存器的结构,而DSP ISA是一个具有高效数字信号处理指令的基于存储器的结构。用于ASSP的指令字通常为20位,但可以扩展为40位,以控制将要串行或并行执行的两个指令,如两个RISC控制指令和扩展的DSP指令。ASSR的指令集结构具有四种不同类型的指令以优化DSP的运算混和(mix)。它们是(1)使用控制寄存器(即模式寄存器)中的模式位的20位DSP指令,(2)具有能覆盖模式寄存器的控制扩展的40位DSP指令,(3)20位二元DSP指令,和(4)40位二元DSP指令。这些指令用于加速核心处理器内的特定类型的计算,在该类型计算中,D=[(A op1 B)op2 C]并且“op1”和“op2”中的每一个可以是对三个运算数A、B和C的乘、加、取端值(min/max)或其他基本的DSP运算。加速了这些计算的ASSP的ISA可以实现不同运算组合的高效链接。
ASSP的指令集结构的所有DSP指令是二元DSP指令,以便在一个周期内在一个指令中执行两个运算。二元DSP指令是两个基本DSP运算在一个指令中的组合,并且包括一个主DSP运算(MAIN OP)和一个副DSP运算(SUB OP)。一般来说,本发明的指令集结构可以概括为组合任意对基本的DSP运算以提供非常强大的二元指令组合。优选实施例中的DSP算术指令或运算包括一个乘指令(MULT)、一个加指令(ADD)、一个最小化/最大化指令(MIN/MAX)(也称为取端值指令)和一个无运算指令(NOP),每个指令具有一个相关的运算代码(”opcode”)。本发明利用针对应用程序的信号处理器的指令集结构和硬件结构高效地执行这些二元DSP指令。例如,DSP指令能利用单一指令自动地处理矢量数据或标量数据并提供适当的矢量或标量输出结果。
附图的简要说明

图1A是利用本发明的系统的方框图。
图1B是图1A中的系统的网关内的利用本发明的印刷电路板的方框图。
图2是本发明的针对应用程序的信号处理器(ASSP)的方框图。
图3是本发明的ASSP内的核心处理器的一个例子的方框图。
图4是图3的核心处理器内的RISC处理单元的方框图。
图5A是图3的核心处理器内的信号处理单元的一个例子的方框图。
图5B是图5A的更详细的方框图,示出了信号处理单元的总线结构。
图6A是一个示例性指令序列,示出了采用本发明的指令集结构的DSP算法的程序模型。
图6B是一个图表,示出了二元DSP指令的排列。
图6C是用于控制扩展的二元DSP指令的一个示例性位图。
图6D是用于非扩展的二元DSP指令的一个示例性位图。
图6E和6F列出了用于本发明的ISA的20位指令集。
图6G列出了用于本发明的ISA的扩展控制指令集。
图6H列出了用于本发明的ISA的40位DSP指令集。
图6I列出了用于本发明的ISA的寻址指令集。
图7的方框图示出了信号处理单元的指令解码和功能块的配置。
附图中类似的标号和标记指示提供类似功能的元件。标号后的字母表示具有该参考数字的元件的一个例子。
优选实施例的详细说明在下面对本发明的详细描述中阐述了很多具体细节,以便于充分理解本发明。但是,没有这些具体细节也可以实施本发明,对于本领域的技术人员来说是很明显的。在另外一些例子里,没有对公知的方法、过程、部件和电路进行详细的描述,以避免喧宾夺主、淡化了本发明的主要内容。另外,下文中将结合特定实施例描述本发明,但本发明也可以以硬件、软件、固件或其结合的形式实现。
在通信系统的网关内设置了具有本发明的指令集结构(包括二元DSP指令)的多个针对应用程序的信号处理器(ASSP),以提高分组化网络上语音和数据通信的质量。每个ASSP包括一个串行接口、一个缓冲存储器和四个核心处理器,以便同时处理多个通道的语音或数据。每个核心处理器最好包括一个精简指令集计算机(RISC)处理器和四个信号处理单元(SP)。每个SP包括多个算术块,以同时处理多个语音和数据通信信号采样以便在IP、ATM、帧中继或其他分组化网络上通信。四个信号处理单元可以并行地执行数字信号处理算法。每个ASSP是灵活的,并可以被编程来实现很多网络功能或数据/语音处理功能,包括电信系统(如CODEC)、特别是分组化电信网络中的语音和数据压缩/解压缩,这些功能可以简单地通过改变控制ASSP执行的命令的软件程序来实现。
用于ASSP的指令集结构是针对包括诸如压缩/解压缩和回声抵消的音频和话音处理的数字信号处理应用程序设计的。ASSP中采用的指令集结构是适应于DSP算法结构的。本发明的ISA与DSP算法结构相适应平衡了实现的简便性、处理效率和DSP算法的可编程性之间的关系。可以将指令集结构看成是具有两个组成部分,一个部分(RISC ISA)对应于RISC控制单元,另一个部分(DSP ISA)对应于信号处理单元300的DSP数据通路。RISC ISA是一个包括寄存器文件413内的16个寄存器的基于寄存器的结构,而DSP ISA是一个具有高效数字信号处理指令的基于存储器的结构。用于ASSP的指令字通常为20位,但可以扩展为40位,以控制将要串行或并行执行的两个指令,如两个RISC控制指令和扩展的DSP指令。ASSP的指令集结构具有四种不同类型的指令以优化DSP的运算混和。它们是(1)使用控制寄存器(即模式寄存器)中的模式位的20位DSP指令,(2)具有能覆盖模式寄存器的控制扩展的40位DSP指令,(3)20位二元DSP指令,和(4)40位二元DSP指令。这些指令用于加速核心处理器内的特定类型的计算,在该类型计算中,D=[(A op1 B)op2 C]并且“op1”和“op2”中的每一个可以是对三个运算数A、B和C的乘、加或取端值(min/max)运算。加速了这些计算的ASSP的ISA可以实现不同运算组合的高效链接。
ASSP的指令集结构的所有DSP指令是二元DSP指令,以便在一个周期内在一个指令中执行两个运算。二元DSP指令是两个DSP指令或运算在一个指令中的组合,并且包括一个主DSP运算(MAIN OP)和一个副DSP运算(SUB OP)。一般来说,本发明的指令集结构可以概括为组合任意对基本的DSP运算以提供非常强大的二元指令组合。优选实施例中的DSP算术运算包括一个乘指令(MULT)、一个加指令(ADD)、一个最小化/最大化指令(MIN/MAX) (也称为取端值指令)和一个无运算指令(NOP),每个指令具有一个相关的运算代码(”opcode”)。
本发明利用针对应用程序的信号处理器的指令集结构和硬件结构高效地执行这些二元DSP指令。
现参见图1A,其中示出了一个语音和数据通信系统100。系统100包括一个网络101,该网络101是一个分组化网络或分组交换网络,如IP、ATM或帧中继。网络101允许利用分组在系统100中的端点之间进行语音/话音和数据通信。数据可以是任何类型的,包括音频、视频、电子邮件和其他一般形式的数据。在系统100的每个端点处,当语音或数据通过网络101收发时需要分组化。系统100包括网关104A、104B和104C,以便对接收到的信息进行分组化从而通过网络101传输。网关是一种用于连接使用不同协议的多个网络和装置的装置。语音和数据信息可以从若干个不同的源以多种数字格式提供给网关104。在系统100中,模拟语音信号由电话108收发。在系统100中,数字语音信号在耦合至多个电话、传真机或数据调制解调器的公共交换分机(“public branch exchange”,PBX)112A和112B处收发。数字语音信号在PBX 112A和PBX 112B之间分别利用网关104A和104C收发。数字数据信号也可以直接在数字调制解调器114和网关104A之间收发。数字调制解调器114可以是一个数字用户线(DSL)调制解调器或一个电缆调制解调器。数据信号也可以由一个无线通信系统借助无线地从/向基站116收发数字信号或模拟信号的移动单元118传送到系统100中。基站116将模拟信号转换为数字信号或直接将数字信号发送给网关104B。也可以使用调制解调器110借助调制解调器信号在简易老式电话系统(POTS)107B上收发数据。在POTS 107B上通信的调制解调器信号传统上是模拟的,并被传送到公用交换电话网(PSTN)的交换机106B中。在交换机106B处,将来自POTS 107B的模拟信号数字化并通过时分复用(TDM)发送至网关104B,在时分复用中每个时隙表示一个信道并且一个DSO输入至网关104B。在网关104A、104B和104C中的每一个处,输入信号被分组化以便通过网络101传输。网关104A、104B和104C从网络101接收到的信号被解分组和译码以便分配到适当的目的地。
现在参考图1B,示出了网关104的网络接口卡(NIC)130。NIC 130包括一个或多个针对应用程序的信号处理器(ASSP)150A到150N。在网关内的ASSP的数目是可扩展的,以便处理另外的通道。NIC130的线路接口装置提供对连接至网关的各种装置、包括网络101的接口。在对网络101进行接口的情况下,线路接口装置对数据进行分组化以便将其传输到网络101上,并对将要由ASSP器件接收的数据进行解分组化。线路接口装置131对网关在接收总线134上接收的信息进行处理,并将其提供给ASSP器件。来自ASSP器件150的信息在发送总线132上传输以便发送到网关外。传统的线路接口装置是一个多通道串行接口或UTOPIA装置。NIC310耦合至网关104内的网关底板/网络接口总线136。桥接逻辑138在总线136和NIC130之间收发信息。桥接逻辑138在NIC130和底板/网络接口总线136之间收发信号以将信号传送到主机总线139上,从而传送给ASSP器件150A-150N、主机处理器140或主机存储器142中的一个或多个装置。可选的本地存储器145A至145N(总地称为可选本地存储器145)分别可选地耦合至一个或多个ASSP器件150A至150N中的每一个器件。接收总线134和发送总线132上的数字数据最好以位宽方式通信。尽管每个ASSP内的内部存储器可以足够大以便用作暂时存储器,如果需要额外的存储空间的话,每个ASSP150可以使用所述可选的本地存储器145。
每个ASSP150为网关提供信号处理能力。所提供的信号处理的类型是灵活的,因为每个ASSP可以执行不同的信号处理程序。ASSP的典型信号处理和相关的语音分组化功能包括(a)回声抵消;(b)视频、音频和语音/话音压缩/解压缩(语音/话音编码和解码);(c)延迟处置(分组,帧);(d)损耗处置;(e)互连性(LAN和WAN);(f)安全性(加密、解密);(g)电话互连性;(h)协议处理(预留和传输协议、RSVP、TCP/IP、RTP、用于IP的UDP和用于ATM的AAL2、AAL1、AAL5);(i)滤波;(j)静音抑制(silence suppression);(k)长度处置(帧,分组);和其它与在通信系统上的语音和数据的通信有关的数字信号处理功能。每个ASSP150可以实现其它功能,以便在分组化的网络上在分组数据流内将语音和数据发送到系统100的各个端点。
现在参考图2,示出了ASSP150的方框图。在ASSP150的中心是四个核心处理器200A-200D。每个核心处理器200A-200D被分别耦合到数据存储器202A-202D和程序存储器204A-204D。每个核心处理器200A-200D通过多通道串行接口206、多通道存储器移动引擎208、缓冲存储器210和数据存储器202A-202D,与外部通道通信。ASSP150还包括外部存储器接口212,以连接到外部可选本地存储器145。ASSP150包括外部主机总线接口214,用于接口到图1B的外部主机处理器140。在ASSP150内还包括定时器216、时钟发生器和锁相环218、杂项控制逻辑(miscellaneous controllogic)220和用于边界扫描测试的联合测试行动组(JTAG)测试接入端口222。对于诸如ATM的一些应用程序,多通道串行接口206可以用UTOPIA并行接口来代替。ASSP150还包括微控制器223,以实现对核心处理器200A-200D的进程调度和ASSP内的数据移动的协调,ASSP150还包括中断控制器224,以协助中断处理和ASSP150的控制。
现参见图3,其中示出了核心处理器200的方框图,该处理器耦合至其相应的数据存储器202和程序存储器204。核心处理器200是对于每个核心处理器200A-200D的方框图。数据存储器202和程序存储器204分别指数据存储器202A-202D和程序存储器204A-204D的一个例子。核心处理器200包括四个信号处理单元SPO 300A、SP1 300B、SP2 300C和SP3300D。核心处理器200还包括一个精简指令集计算机(RISC)控制单元302和一个管道控制单元304。信号处理单元300A-300D对数据执行信号处理任务,而RISC控制单元302和管道控制单元304执行与SP 300A-300D完成的信号处理功能相关的控制任务。RISC控制单元302提供的控制与SP 300A-300D在管道层次上耦合,以产生一个将信号处理单元300的利用率保持在很高水平的高度集成的核心处理器200。
信号处理任务是在信号处理单元300A-300D内的数据通路上完成的。DSP算法的性质是这样的,即,它们固有地是对数据流的矢量运算,具有最小的暂时局部性(temporal locality)(数据再使用)。因此,不使用带有请求式页面调度的数据超高速缓存,因为它不会很好地工作并且会降低运算性能。因此,允许信号处理单元300A-300D从数据存储器202直接访问矢量元素(运算数),而没有向存储器发布若干条加载和存储指令的额外开销,这使得数据处理非常高效。因而,具有可扩展为40位指令字的20位指令字的本发明的指令集结构通过使ISA适应DSP算法结构而取得了比使用256位或更大指令宽度的VLIW结构更高的效率。ISA与DSP算法相适应使得硬件结构紧凑并且功耗低,可以满足更高的计算需求。ASSP能适用的运算数在数据类型和数据大小方面是多样的。数据类型可以是实数或复数,整数值或分数值,矢量具有多个不同大小的元素。优选实施例中的数据大小为64位,但如果采用适当的指令编码,则更大的数据也可适用。
现参见图4,示出了RISC控制单元302的详细方框图。RISC控制单元302包括一个数据校准器和格式化器402、一个存储器地址发生器404、三个加法器406A-406C、一个算术逻辑单元(ALU)408、一个乘法器410、一个滚筒式移位器412和一个寄存器文件413。寄存器文件413指向一个起始存储器位置,存储器地址发生器404可以从该位置生成数据存储器202中的地址。RISC控制单元302负责将地址提供给数据存储器,从而将适当的数据流送至信号处理单元300A-300D。RISC控制单元302是一个寄存器到寄存器的组织结构,具有装载和存储指令以将数据向/从存储器202移动。RISC控制单元将一个32位寄存器用作指示器,指定地址、向后修正偏移(post-modification offset)以及类型和排列字段,从而实现数据存储器寻址。类型字段允许多个自然DSP数据被支持为指令集结构中的“一等公民”。例如,复数型允许对存储器中存储的复数数据进行直接运算,省掉若干簿记指令。这对于高效地支持数据调制解调器中的QAM解调器是有用的。
现参考图5A,示出了信号处理单元300的方框图,它表示SP 300A-300D的一个例子。信号处理单元300中的每一个包括一个数据分类器和校准器(data typer and aligner)502、一个第一乘法器M1 504A、一个压缩器506、一个第一加法器A1 510A、一个第二加法器A2 510B、一个累加寄存器512、一个第三加法器A3 510C和一个第二乘法器M2 504B。加法器510A-510C的结构是类似的,总地称为加法器510。乘法器504A和504B的结构是类似的,总地称为乘法器504。乘法器504A和504B中的每一个在其输入级分别具有一个复用器514A和514B,以将来自不同总线的不同输入复用到乘法器中。加法器510A、510B和510C中的每一个也在其输入级分别具有一个复用器520A、520B和520C,以将来自不同总线的不同输入复用到加法器中。这些复用器和其他控制逻辑使得信号处理单元300A-300C内的加法器、乘法器和其他元件能通过适当选择复用器而灵活地相互连接。在优选实施例中,乘法器M1 504A、压缩器506、加法器A1510A、加法器A2 510B和累加器512可以通过数据分类器和校准器502从外部数据总线直接接收输入。在优选实施例中,加法器510C和乘法器M2504B接收累加器512的输入或执行单元乘法器M1 504A、压缩器506、加法器A1 510A和加法器A2 510B的输出。
程序存储器204耦合至管道控制器304,该控制器304包括一个用作本地环超高速缓存的指令缓冲器。优选实施例中的指令缓冲器能保留四条指令。管道控制器304的指令缓冲器减少了在执行程序环期间访问主存储器以提取指令所消耗的功率。
现参见图5B,示出了信号处理单元的功能块和总线结构的更详细的方框图。由于每个信号处理单元中提供的结构和功能,使得二元DSP指令成为可能。输出信号通过数据分类器和校准器502经Z输出总线532被传送到信号处理器300外。输入信号通过数据分类器和校准器502经X输入总线531和Y输入总线533被传送到信号处理器300内。在内部,数据分类器和校准器502具有不同的数据总线,以便耦合到乘法器M1 504A、压缩器506、加法器A1 510A、加法器A2 510B和累加寄存器AR 512中的每一个。尽管数据分类器和校准器502可以具有耦合到加法器A3 510C和乘法器M2 504B的数据总线,但在优选实施例中,没有设置所述总线,以避免额外的数据线并节省集成电路的面积占用。输出数据从累加寄存器AR 512被传送到数据分类器和校准器502中。乘法器M1 504A具有总线以将其输出传送到压缩器506、加法器A1 510A、加法器A2 510B和累加寄存器AR512的输入端。压缩器506具有总线以将其输出传送到加法器A1 510A和加法器A2 510B的输入端。加法器A1 510A具有一条总线以将其输出传送到累加寄存器512中。加法器A2 510B具有总线以将其输出传送到累加寄存器512中。累加寄存器512具有总线以将其输出传送到乘法器M2504B、加法器A3 510C和数据分类器和校准器502中。加法器A3 510C具有总线以将其输出传送到乘法器M2 504B和累加寄存器512中。乘法器M2504B具有总线以将其输出传送到加法器A3 510C和累加寄存器AR 512的输入端。
指令集结构ASSP 150的指令集结构设计成与包括音频和话音处理例如压缩/解压缩和回声抵消的数字信号处理应用程序相适应。实质上,ASSP 150中采用的指令集结构是适应于DSP算法结构的。本发明的ISA与DSP算法结构相适应,平衡了实现的简便性、处理效率和DSP算法的可编程性之间的关系。本发明的ISA提供了数据移动操作、DSP/算术/逻辑运算、程序控制操作(例如函数调用/返回、有条件/无条件跳转和分支)和系统操作(如特权、中断/陷阱/危险处理和存储器管理控制)。
现参见图6A,示出了一个采用本发明的指令集结构的DSP算法程序模型的示例性指令序列600。指令序列600具有一个外环601和一个内环602。由于DSP算法倾向于执行重复的计算,内环602内的指令605与其他指令比起来被更多地执行。指令603通常为用来设定存储器指示器以规定外环601的设置的参数设置码,和其他2X20控制指令。指令607通常为上下文保存和函数返回指令或其他2X20控制指令。指令603和607经常被看成是额外开销指令,通常只是偶尔地执行。指令604通常用来设置内环602、通过2X20控制指令提供其他控制、或为指示器备份提供偏移扩展。指令606通常提供内环602的拆解(tear down)、通过2X20控制指令的其他控制、和信号处理单元内的数据通路结果的组合。内环602内的指令605通常提供DSP运算的内环执行、对四个信号处理单元300的单指令多数据执行模式控制、对于运算数的存储器访问、二元DSP运算、和通过本发明的ISA的20/40位DSP指令的其他DSP功能。由于指令605经常被重复执行,通过在本发明的ISA内部提供包括通用二元指令和二元DSP指令的DSP指令,可以显著提高运算效率。
ASSP 150的指令集结构可以看成是具有两个组成部分,一个部分(RISC ISA)对应于RISC控制单元,另一个部分(DSP ISA)对应于信号处理单元300的DSP数据通路。RISC ISA是一个包括寄存器文件413内的16个寄存器的基于寄存器的结构,而DSP ISA是一个具有高效数字信号处理指令的基于存储器的结构。用于ASSP的指令字通常为20位,但可以扩展为40位,以控制将要串行或并行执行的两个RISC或DSP指令,如与DSP指令并行执行的RISC控制指令,或40位扩展的RISC或DSP指令。
ASSP 150的指令集结构具有四种不同类型的指令以优化DSP的运算混和。它们是(1)使用控制寄存器(即模式寄存器)中的模式位的20位DSP指令,(2)具有能覆盖模式寄存器的控制扩展的40位DSP指令,(3)20位二元DSP指令,和(4)40位二元DSP指令。这些指令用于加速核心处理器200内的特定类型的计算,在该类型计算中,D=[(A op1 B)op2 C]并且“op1”和“op2”中的每一个可以是对三个运算数A、B和C的乘、加或取端值(min/max)运算。加速了这些计算的ASSP150的ISA可以实现运算的不同组合的高效链接。由于这些类型的运算需要三个运算数,处理器必须能得到它们。但是,由于器件的尺寸对总线结构有限制,带宽被限制为在一个周期中从数据存储器202读取两个矢量和向数据存储器202写入一个矢量。这样,一个运算数,例如B或C,必须来自核心处理器200内的另一个源。第三运算数可以被置于累加器512或RISC寄存器文件413的一个寄存器内。为此,在核心处理器200内有两种子类型的20位DSP指令,它们是(1)A和B由4位说明符指定以及C和D由1位说明符指定,和(2)A和C由4位说明符指定以及B和D由1位说明符指定。
ASSP的指令总是一次从程序存储器中被提取40位,位39和位19指示指令的类型。在提取后,指令被划分为每个20位的两部分,用于运算的执行。对于并行执行的20位控制指令(位39=0,位19=0)的情况,则两个20位的部分是同时执行的控制指令。对于串行执行的20位控制指令(位39=0,位19=1)的情况,则两个20位的部分是串行地执行的控制指令。对于串行执行的20位DSP指令(位39=1,位19=1),则两个20位的部分是串行地执行的DSP指令。对于40位DSP指令(位39=1,位19=0)的情况,则两个部分形成一个扩展的DSP控制指令,它们被同时执行。
ASSP150的ISA被完全地判定(predicated),规定了执行预测。在20位RISC控制指令字和40位扩展DSP指令字内,每个指令有2位,指明了在RISC控制单元302内的四个专用判定寄存器(predicate register)之一。根据判定寄存器的条件,指令执行可以基于其内容而被有条件地改变。
为了访问数据存储器202内的运算数或累加器512或寄存器文件413内的寄存器内的运算数,在DSP扩展指令中使用了6位说明符以访问存储器和寄存器中的运算数。在扩展的DSP指令中使用的6位说明符中,MSB(位5)指示该访问是存储器访问还是寄存器访问。在优选实施例中,如果位5被设定为逻辑1,则它表示运算数的存储器访问。如果位5被设定为逻辑0,则它表示运算数的寄存器访问。如果位5被设定为1,则指明的寄存器(rX,其中X0-7)的内容被用于获得有效的存储器地址,并将指示器字段向后修正两个可能的偏移之一,其在所指明的rX寄存器之一中被指明。如果位5被设定为0,则位4确定哪个寄存器组具有所希望的运算数的内容。如果位4被设定为0,则剩余的说明位30控制到寄存器413内的寄存器或到信号处理单元300内的寄存器的访问。
DSP指令有四种主要类别的DSP指令用于ASSP150,它们是1)乘(MULT)控制连接到存储器的数据总线的主乘法器的执行。
控制取整,乘法的符号在通过地址寄存器中的类型字段指明的矢量数据上运算第二运算以矢量或标量方式的加、减、最小、最大2)加(ADD)控制主加法器的执行。
控制输入的绝对值控制,限制结果第二运算加、加-减、乘、MAC、最小、最大3)取端值(MIN/MAX)控制主加法器的执行。
控制输入的绝对值控制,用T寄存器的全局或运行最大/最小,TR寄存器记录控制第二运算加、减、乘、MAC、最小、最大4)杂项类型匹配和排列运算
ASSP150可以以矢量或标量方式执行这些DSP算术运算。在标量的执行方式中,对矢量结果执行缩减或组合运算以产生标量结果。在DSP应用程序中执行标量运算是很普遍的,其由ASSP150高效地执行。
20位DSP指令字具有4位运算数说明符,其使用在RISC控制单元302的寄存器文件413内的8个地址寄存器(r0-r7),可以直接访问数据存储器。由20位DSP指令字寻址的方法通常是间接的,用地址寄存器,该寄存器指明到存储器的指示器、向后修正值、所访问的数据的类型和高效地执行该算法所需的数据的排列。所有的DSP指令控制乘法器504A-504B、加法器510A-510C、压缩器506和累加器512,即每个信号处理单元300A-300D的功能单元。
在40位指令字中,从20位指令字的扩展的类型分为5类1)控制和说明符扩展,其覆盖模式寄存器中的控制位2)类型扩展,其覆盖地址寄存器中的类型说明符3)排列扩展,其覆盖地址寄存器中的矢量数据的排列说明符4)偏移扩展,其可以取代或扩展在地址寄存器中指明的偏移5)DSP扩展,其控制信号处理单元300内的功能单元的较低行以加速块处理。
具有20位扩展的40位控制指令还允许在指令中指明一个大的立即值(immediate value)(16到20位)并能实现强大的位操作指令。
用2×20位DSP指令提供了高效的DSP执行,前20位控制顶部功能单元(加法器501A和501B、乘法器504A、压缩器506),其与来自存储器的数据总线接口,后20位控制底顶部功能单元(加法器510C和乘法器504B),其使用内部或本地数据作为运算数。顶部功能单元也被称为主单元,通过对连续的抽头或部分并行化,减少了在内环602中的内环循环。通过对连续的采样并行化块DSP算法,底部功能单元将外环601中的外环循环减少一半。
通过本发明的硬件结构也改进了高效的DSP执行。在这种情况下,效率以如下方式被提高,即数据被提供给数据存储器202和从数据存储器202提供,以供给四信号处理单元300和其中的DSP功能单元。数据高速路包括用于X和Y源运算数的两条总线,X总线531和Y总线533,和用于写结果的一条Z总线532。所有总线,包括X总线531、Y总线533和Z总线532,最好是64位宽。总线是单向的,以便简化物理设计和减少数据的发送时间。在优选实施例中,在20位DSP模式中,如果X和Y总线都带着从存储器读取的运算数,用于在信号处理单元300中并行执行,则并行装载字段仅能访问在RISC控制单元302中的寄存器文件413内的寄存器。另外,并行的四个信号处理单元300A-300D提供四个并行的MAC单元(乘法器504A、加法器510A和累加器512),其可以进行同时的计算。这减少了循环数,从通常执行四个MAC所需要的4个循环到仅仅一个循环。
二元DSP指令ASSP150的指令集结构的所有DSP指令是在20位或40位指令字内的二元DSP指令。二元DSP指令通知ASSP在一个指令和一个循环中执行两个运算。现在参考图6B,其是图示了二元DSP指令的排列的图。二元DSP指令610包括主DSP运算611(MAIN OP)和副DSP运算612(SUB OP),两个DSP指令或运算结合在一个二元指令中。通常,本发明的指令集结构可以被概括为组合任意对基本DSP运算以提供很强大的二元指令组合。复合DSP运算指令可以为很多种的DSP算法提供一致的加速,而不仅仅是乘和累加密集的滤波器。在优选实施例中的DSP指令或运算包括乘法指令(MULT)、加法指令(ADD)、最小化/最大化指令(MIN/MAX)(也称为取端值指令)和无运算指令(NOP),每个指令具有相关的运算代码(“opcode”)。任何两个DSP指令可以被结合在一起以形成二元DSP指令。当想用二元DSP指令来执行单个DSP指令时,NOP指令被用于MAIN OP或SUB OP。有许多一般DSP指令的变形,诸如乘或加的矢量和标量运算、正的或负的乘法和正的或负的加法(即,减法)。
现在参考图6C和图6D,其图示了示例的二元DSP指令的位图语法。图6C图示了控制扩展的二元DSP指令的位图语法,而图6D图示了非扩展的二元DSP指令的位图语法。在非扩展位图语法中,指令字是四十位字的最高的二十位,而扩展的位图语法具有四十位的指令字。最高的三位(MSB)即位37到39,都指示了MAIN OP指令类型,而SUB OP位于靠近指令位的中间或尾部,在位20到22。在优选实施例中,MAIN OP指令代码是,000用于NOP,101用于ADD,110用于MIN/MAX,100用于MULT。对于给定的DSP指令,SUB OP代码根据选择了什么MAIN OP代码而变化。对于MULT作为MAIN OP的情况,SUB OP是,000用于NOP,001或010用于ADD,100和011用于负的ADD或减法,101或110用于MIN,111用于MAX。在优选实施例中,MAIN OP和SUB OP不是同样的DSP指令,尽管对硬件功能块的改变可以实现它。控制扩展的二元DSP指令的较低的二十位,即扩展位,控制信号处理单元以执行取整、限制、对SUB OP的输入的绝对值,或用寄存器值的全局MIN/MAX运算。
二元DSP指令的位图语法可以被转换为程序编码的文本语法。使用乘法或MULT非扩展指令作为一个例子,乘法或MULT的文本语法是(vmul|vmuln).(vadd|vsub|vmax|sadd|ssub|smax)da,sx,sa,sy[,(ps0)|ps1)]“vmul|vmuln”字段指正被选择为MAIN OP的正矢量乘法或负矢量乘法。下一个字段“vadd|vsub|vmax|sadd|ssub|smax”指正被选择为SUBOP的矢量加、矢量减、矢量最大、标量加、标量减或标量最大。下一个字段“da”指选择在累加器内的寄存器之一,用于结果的存储。字段“sx”指选择在RISC寄存器文件413内的一个寄存器作为运算数的来源之一,其指向存储器中的一个存储器位置。字段“sa”指选择在累加器内的寄存器的内容作为运算数的来源之一。字段“sy”指选择在RISC寄存器文件413内的一个寄存器作为运算数的另一个来源,其指向存储器中的一个存储器位置。字段“[(ps0)|ps1)]”指关键字ps0或ps1的对选择(pair selection),以指明哪些是并行—存储控制寄存器的源—目的地对。现在参考图6E到6F,其图示了本发明的ISA的20位DSP和控制指令集的列表。图6G列出了本发明的ISA的扩展的控制指令集。图6H列出了本发明的ISA的40位DSP指令集。图6I列出了本发明的ISA的寻址指令集。
现参见图7,其中的方框图示出了用于配置信号处理单元300的功能块的指令解码。信号处理器300包括最终解码器704A至704N,和复用器720A至720N。复用器720A至720N代表图5B中的复用器514、516、520和522。预解码级702由RISC控制单元302和管道控制器304提供。一个例如二元DSP指令600的指令被提供给预解码级702。预解码级702将初步信号提供给适当的最终解码器704A至704N,指明对于给定的指令如何选择复用器720A至720N。再参见图5B,在二元DSP指令中,MAIN OP,如果不是NOP的话,通常由乘法器M1 504A、压缩器506、加法器A1 510A和加法器A2 510B的块执行。结果被存储在累加寄存器AR 512内的一个寄存器中。在该二元DSP指令中,SUB OP,如果不是NOP的话,通常由加法器A3 510C和乘法器M2 504B的块执行。例如,如果要执行的二元DSP指令是加(ADD)和乘(MULT),则MAIN OP的ADD运算由加法器A1 510A完成,SUB OP由乘法器M1 504A完成。预解码级702和最终解码器704A至704N适当地选择相应的复用器720A至720B以选择将由加法器A1 510A执行MAIN OP和将由乘法器M2 504B执行SUB OP。在示例的情况中,复用器520A选择来自数据分类器和校准器502的输入,以便加法器A1 510A执行ADD运算;复用器522选择加法器510A的输出,以便在累加器512中累加;而复用器514B选择累加器512的输出作为其输入,以完成MAINSUB OP。MAIN OP和SUB OP可以被顺序地执行(即在并行字上串行执行)或并行地执行(即在并行字上并行执行)。如果是顺序地完成,MAIN OP的结果可以是SUB OP的一个运算数。最终解码器704A至704N具有自己的控制逻辑以便对于针对信号处理器300的每个元件的复用器选择序列进行正确的定时,以匹配管道执行,即如何执行MAIN OP和SUB OP(包括串行或并行执行)。RISC控制单元302和管道控制器304连同最终解码器704A至704N通过对指令本身进行管道处理并通过提供经管道处理的控制信号来对指令执行进行管道处理。这使得在每个周期中可以用软件指令来重新配置数据通路。
如本领域的技术人员可以理解的,本发明具有很多优点。本发明的一个优点是将ISA设计成适应于DSP算法结构,使得硬件结构紧凑并且功耗低,可以满足更高的计算需求。本发明的另一个优点是信号处理单元可以直接访问存储器中的运算数,以减少与装载和存储指令相关的处理额外开销。本发明的另一个优点是提供了经管道处理的指令执行,从而可以在每个周期中发出指令。本发明的另一个优点是一个周期一个周期地配置信号处理单元。
以上描述了本发明的优选实施例。尽管在特定实施例中描述了本发明,本发明也可以以硬件、软件、固件或其结合的形式实现,并可以应用在系统、子系统及其部件或子部件中。当以软件实现时,本发明的元件基本上是代码段以完成必要的任务。程序或代码段可以存储在处理器可读的介质中,或由载波中的计算机数据信号通过传输介质或通信链路传输。“处理器可读的介质”可以包括能存储或传输信息的任何介质。处理器可读的介质的例子包括电子电路、半导体存储器器件、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路等。计算机数据信号可以包括能通过传输介质例如电子网络通道、光纤、空气、电磁波、RF链路等传播的任何信号。代码段可以经计算机网络例如Internet、Intranet等下载。总之,不应将本发明解释为受这些实施例的限制,而应该按照下面的权利要求来解释本发明。
权利要求
1.一种用于执行具有主运算和副运算的二元数字信号处理指令的信号处理器,该信号处理器包括至少一个信号处理单元,该信号处理单元包括一个第一乘法器和一个第一加法器,用来执行一个二元数字信号处理指令的主运算;一个第二乘法器和一个第二加法器,用来执行该二元数字信号处理指令的副运算;第一和第二加法器及第一和第二乘法器中的每一个在其输入端具有一个复用器,以配置该信号处理单元来执行该二元数字信号处理指令的主运算和副运算;和一个累加器,具有若干寄存器,耦合至第一乘法器或第一加法器以向其提供运算数或存储来自其的中间结果,并耦合至第二乘法器或第二加法器以便为二元数字信号处理指令的副运算提供运算数并存储副运算的结果,累加寄存器具有一个寄存器,该寄存器耦合至缓冲存储器以存储二元数字信号处理指令产生的经数字信号处理的输出。
2.根据权利要求1的用于执行二元数字信号处理指令的信号处理器,该信号处理器还包括一个精简指令集计算机(RISC)控制单元和一个管道控制器,用来将二元数字信号处理指令预解码成多个初步的指令执行信号,并且其中所述至少一个信号处理单元还包括耦合至多个复用器的多个最终解码器,第一和第二加法器及第一和第二乘法器中的每一个具有来自所述多个复用器的一个输入复用器,以响应于与复用器耦合的多个最终解码器的选择来接收运算数。
3.根据权利要求1的用于执行二元数字信号处理指令的信号处理器,其中二元数字信号处理指令的主运算是乘、加、与最小或最大值比较、和无运算这四者之一。
4.根据权利要求3的用于执行二元数字信号处理指令的信号处理器,其中二元数字信号处理指令的副运算是乘、加、与最小或最大值比较、和无运算这四者之一,该副运算与主运算不同。
5.根据权利要求1的用于执行二元数字信号处理指令的信号处理器,其中二元数字信号处理指令的主运算被选择为乘、加、与最小或最大值比较、和无运算这四者之一,而二元数字信号处理指令的副运算被选择为无运算。
6.根据权利要求2的用于执行二元数字信号处理指令的信号处理器,其中RISC控制单元包括三个加法器、一个存储器地址发生器、一个乘法器和一个滚筒式移位器,以将二元数字信号处理指令预解码成多个初步的指令执行信号。
7.根据权利要求1的用于执行二元数字信号处理指令的信号处理器,该信号处理器还包括一个数据存储器,耦合至RISC控制单元和所述至少一个信号处理单元,用于存储运算数和二元数字信号处理指令的执行结果,和一个程序存储器,耦合至管道控制器,该程序存储器用来存储二元数字信号处理指令以便由所述至少一个信号处理单元执行。
8.根据权利要求1的用于执行二元数字信号处理指令的信号处理器,该信号处理器还包括一个主机接口,用来与外部主计算机接口;一个外部存储器接口,用来从/向外部存储器读/写数据;时钟和锁相环,用来控制针对应用程序的信号处理器的运算的定时;一个存储器移动引擎,耦合至所述缓冲存储器,以从/向其收发数据,并且其中所述至少一个信号处理单元还包括一个数据分类器和校准器,用来安排运算数的位以便在主运算中执行,一个第三加法器,用来将运算数相加,和一个压缩器,用来将两个以上的运算数压缩成一对运算数。
9.一种用于执行二元数字信号处理(DSP)指令的方法,该方法包括提取一个具有主运算和副运算的二元DSP指令;对该二元DSP指令进行预解码以产生预解码的指令信号;和对该预解码的指令信号进行解码,以产生选择信号,选择DSP功能块的复用器的输入,以执行主运算和副运算。
10.根据权利要求9的用于执行二元数字信号处理(DSP)指令的方法,其中主运算和副运算是在同一周期中并行执行的。
11.根据权利要求9的用于执行二元数字信号处理(DSP)指令的方法,其中主运算和副运算是在不同周期中顺序执行的。
12.根据权利要求9的用于执行二元数字信号处理(DSP)指令的方法,其中主运算和副运算是从乘、加、与最小或最大值比较、和无运算这四者中选择出来的两种不同的运算。
13.根据权利要求9的用于执行二元数字信号处理(DSP)指令的方法,其中DSP功能块包括第一和第二加法器以及第一和第二乘法器,DSP功能块用来完成加、减、和与最小值或最大值相比较。
14.一种用于在数字信号处理器内执行运算的指令集结构(ISA),该指令集结构包括一个指令集,用于在数字信号处理器内进行运算,其中每个指令包括从存储器直接访问的第一运算数,从本地寄存器的存储器直接访问的第二运算数,和用来存储结果的目的地寄存器,该指令集包括一个20位DSP指令,和一个40位DSP指令,该指令集用来加速数字信号处理器内的特定类型的计算,在该类型计算中,D=[(A运算一B)运算二C],其中运算一和运算二是独立的信号处理运算。
15.根据权利要求14的用于在数字信号处理器内执行运算的指令集结构(ISA),其中20位指令使用控制寄存器(即模式寄存器)中的模式位,40位指令具有控制扩展以覆盖模式寄存器。
16.根据权利要求14的用于在数字信号处理器内执行运算的指令集结构(ISA),其中该指令集还包括一个二元指令以在一个指令中执行两个运算。
17.根据权利要求16的用于在数字信号处理器内执行运算的指令集结构(ISA),其中用于在一个指令中执行的二元指令的两个运算是DSP运算。
18.根据权利要求17的用于在数字信号处理器内执行运算的指令集结构(ISA),其中DSP运算包括乘、加、取端值、和无运算。
19.一种用于在数字信号处理器中执行的二元数字信号处理(DSP)指令,该二元DSP指令包括将在一个处理器周期中执行的主DSP运算和副DSP运算;第一字段,指明主DSP运算和副DSP运算将要串行地按顺序执行或是基本上同时地并行执行;和指明第一运算数的第二字段,指明第二运算数的第三字段,和指明目的地的第四字段。
20.根据权利要求19的用于在数字信号处理器中执行的二元数字信号处理(DSP)指令,其中DSP运算包括乘、加、取端值、和无运算。
全文摘要
用于针对应用程序的信号处理器(ASSP)的指令集结构被设计成与数字信号处理应用程序相适应。ASSP中采用的指令集结构适应于DSP算法结构。ISA的指令字通常为20位,但可以扩展为40位,以控制两个串行或并行执行的指令。ISA的所有DSP指令为在一个周期中用一个指令完成两个运算的二元DSP指令。优选实施例中的DSP指令或运算包括一个乘指令(MULT)(504)、一个加指令(ADD)(510)、一个最小化/最大化指令(MIN/MAX)(也称为取端值指令)和一个无运算指令(NOP),每个指令具有一个相关的运算码(“opcode”)。本发明利用该指令集结构和针对应用程序的信号处理器的硬件结构高效地执行DSP指令。
文档编号G06F9/318GK1404586SQ01804361
公开日2003年3月19日 申请日期2001年1月25日 优先权日2000年1月31日
发明者库马尔·加纳帕蒂, 吕邦·卡纳帕蒂皮莱 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1