专利名称:使指令集结构同时执行原始和阴影数字信号处理子指令的方法和设备的制作方法
技术领域:
本发明一般涉及处理器的指令集结构(ISA)。更特别的,本发明涉及用于信号处理集成电路里运算的执行的指令集结构。
背景技术:
单一芯片数字信号处理设备(DSP)相对地众所周知。DSP与通用目的微处理器一般区别在于DSP通过包括用于执行数字的乘法的专用乘法器和累加器(MAC)典型地支持加速算法运算。用于典型的DSP设备的指令集通常包括用于执行新操作数的乘法以及与在累加寄存器中存储的前一累加值的加法的MAC指令。MAC指令典型地是现有技术数字信号处理器中提供的唯一的指令,其中乘法后面跟随加法的两个DSP运算被通过一个指令的执行实现。但是,当在数据上执行信号处理功能时经常希望以变化的组合执行其他DSP运算。
DSP被应用的一个领域是在电信系统中。在电信系统中DSP的一个用途是数字过滤。在这种情况下DSP典型地被用指令编程以便实现数字或时间域中的某个过滤功能。用于典型的有限脉冲响应(FIR)过滤器的数学算法看上去象等式Yn=h0X0+h1X1+h2X2+...+hNXN,其中hn是编号从1到N的固定过滤器系数并且Xn是数据采样。等式Yn可以利用软件程序被估算。但是在有些应用中,等式必须被尽可能快地估算。这样做的一种方式是利用硬件组件如被编程来计算等式Yn的DSP设备来执行计算。为了进一步加快处理,想要矢量化该等式并且将计算分布在多个DSP中,因此可以更快地获得最终结果。多个DSP并行运算来加速计算过程。这样,各项的乘法被均衡地扩展到DSP的乘法器用于各项的同时计算。各项的加法类似地被均衡地扩展到DSP的加法器用于同时计算。在矢量化处理中,因为组合是结合的,所以处理项的顺序并不重要。如果各项的处理顺序被改变,对函数的矢量化处理中预计的最终结果没有影响。
在典型的微处理器中,MAC操作需要乘法指令和加法指令来执行乘法和加法。执行这两个指令需要两个处理周期。除此之外,为典型的微处理器编写的程序要求更大的程序存储器以便存储执行MAC运算必须的额外的指令。在现有技术DSP设备中,如果需要执行除了MAC DSP指令之外的DSP运算,则该运算要求在程序存储器中编入单独的算法指令。与单一的MAC指令相比,现有技术DSP中这些单独的算法指令类似地要求增加的程序存储器空间和处理周期来执行运算。当执行DSP运算时希望减少处理周期数。还希望减少程序存储器需求。
DSP通常被在循环中编程来连续执行包括利用不同的操作数的MAC指令的加速的算法功能。时常地,多个算法指令被在循环中编程来在相同的数据集上运算。相同的算法指令经常利用不同的操作数在循环中被反复执行。除此之外,每次一个指令完成时,在取指令周期另一个指令被从在存储器中存储的程序中取出。在指令执行发生之前,取指令周期要求一个或更多周期时间来访问存储器。因为在取指令周期电路改变了状态,能量被消耗并且因此想要减少取指令周期的数量。典型的,在循环的建立和清除运算中大约百分之二十的能量消耗可以被利用以便执行DSP指令。典型的,其中数据的信号处理被执行的循环执行消耗大约百分之八十的能量消耗,其中很大一部分是因为取指令。除此之外,因为DSP设备处理的数据集通常很大,所以还要求通过避免频繁地向存储器中取指令来加速指令执行。
除此之外,电话系统上服务的质量通常与信号的处理速度相关。当DSP要提供语音处理如语音压缩、语音解压缩以及多信道回音消除时,尤其是这样。最近,因为以分组形式发送与数据聚合的语音用于在分组网上通信的要求,处理速度变得更重要。处理分组语音信号中的延迟易于导致接收端信号指令的下降。
想要提供语音和数据信号改进的处理来增强分组网上语音和数据通信的质量。想要改善当执行信号处理功能时利用计算资源的效率。
发明内容
简要的,本发明包括如权利要求书中所述的设备、方法、指令集结构以及系统。在通信系统的网关中提供了具有本发明的指令集结构的多个应用专用信号处理器(ASSP)以便在分组网上提供改善的语音和数据通信。每个ASSP包括一个串行接口、缓存以及多个核心处理器,每个同时处理语音或数据的多个信道。每个核心处理器优选地包括至少一个精简指令集计算机(RISC)处理器以及多个信号处理单元(SP)。每个SP包括多个算法块来同时处理多个语音和数据通信信号采样用于在IP、ATM、帧中继或其他分组网上通信。多个信号处理单元可以并行地执行数字信号处理算法。每个ASSP是灵活的并且简单地通过改变控制由ASSP执行的命令的软件程序,可以被编程来执行许多网络功能或包括电信系统(如CODEC)特别是分组电信网中语音和数据压缩/解压缩的数据/语音处理功能。
ASSP的一个指令集结构适合于包括如压缩/解压缩和回声消除的音频和语音处理的数字信号处理应用。通过ASSP实现的指令集结构适合于DSP算法结构。本发明的ISA对DSP算法结构的这种适应平衡了易于实现、处理效率以及DSP算法的可编程性。指令集结构可以被看作为两个组件部分,一个(RISC ISA)对应于RISC控制单元并且另一个(DSP ISA)对应于信号处理单元的DSP数据路径。RISC ISA是在寄存器文件中包括16寄存器的基于寄存器的结构,而DSP ISA是具有有效数字信号处理指令的基于存储器的结构。
ASSP的指令字可以是20位,或者可以被扩展到40位。40位指令字可被用于控制两个指令串行或并行地执行,如两个RISC控制指令、扩展DSP指令或者两个20位DSP指令。ASSP的指令集结构有五种不同的指令类型来优化DSP运算混合。有(1)使用控制寄存器(也就是模式寄存器)中的模式位的20位DSP指令,(2)具有可以取代模式寄存器的控制扩展的40位DSP指令,(3)20位二元DSP指令,(4)通过提供强大的位处理扩展20位二元DSP指令的功能的40位DSP指令,以及(5)包括一对20位二元子指令的单一40位DSP指令根据本发明的一个实施方案同时被执行的原始DSP子指令和阴影(shadow)DSP子指令。
这些指令是用于加速该类型的核心处理器里的计算,其中D=[(Aop1 B)op2 C]并且每个“op1”和“op2”可以是三个操作数A、B、C上的乘、加、极值(最小/最大)或者其他基本的DSP运算类。加速这些计算的ASSP的ISA允许操作的不同组合的有效链接。
ASSP的指令集结构的所有DSP指令是在一个周期处理能力里执行一个指令中的两个运算的二元DSP指令。二元DSP指令是在一个指令中两个基本的DSP运算的组合并且包括主要DSP运算(MAIN OP)以及子DSP运算(SUB OP)。一般的,本发明的指令集结构可被概括为组合任何一对基本的DSP运算以便提供非常强大的二元指令组合。优选实施方案中的DSP算法指令或运算包括乘法指令(MULT)、加法指令(ADD)、也被称为极值指令的最小/最大指令(MIN/MAX),以及空操作指令(NOP),每个有相关的运算代码(“opcode”)。
本发明利用专用信号处理器的指令集结构以及硬件结构来有效地执行这些二元DSP指令。例如,DSP指令可以利用单一指令自动处理矢量数据或标量数据并且提供合适的矢量或标量输出结果。
在本发明的一个实施方案中,单一DSP指令包括一对子指令原始DSP子指令以及阴影DSP子指令。原始和阴影DSP子指令都是在一个指令周期中执行两个运算的二元DSP指令。这些DSP运算包括上述的MULT(乘)、ADD(加)MIN/MAX和NOP运算。
根据一个实施方案,每个核心处理器有多个信号处理单元(SP)。每个SP包括一个原始阶段来基于当前数据执行原始DSP子指令以及一个阴影阶段来同时基于本地存储在每个SP的延迟数据寄存器中的延迟的数据来执行阴影DSP子指令。每个SP包括耦合到其自己相关SP的延迟数据寄存器的阴影选择器。控制逻辑被利用来控制每个SP的阴影选择器来从延迟的数据寄存器中选择(由阴影DSP子指令规定的)延迟的数据由SP的阴影阶段使用。
这样,本发明通过同时执行单一DSP指令中的原始DSP子指令(基于当前数据)和阴影DSP子指令(基于延迟的本地存储数据),因此在不增加存储器带宽的情况下在每个SP的每个单一指令周期执行四个运算,有效地执行了DSP指令。
图1A是利用本发明的系统的框图。
图1B是在图1A的系统的网关中利用本发明的印刷电路板的框图。
图2是根据本发明的一个实施方案的专用信号处理器(ASSP)的框图。
图3是根据本发明的一个实施方案ASSP里的核心处理器之一的实例的框图。
图4是在图3的核心处理器中的RISC处理单元的框图。
图5A是根据本发明的一个实施方案图3的核心处理器里的信号处理单元(SP)的实例的框图。
图5B是根据本发明的一个实施方案说明信号处理单元的总线结构的图5A的更详细的框图。
图6A是根据本发明的一个实施方案说明用于采用指令集结构(ISA)的DSP算法的程序模型的示例指令序列。
图6B是根据本发明的一个实施方案指定ISA的不同类型的二元DSP指令的一对比特的图表。
图6C根据本发明的一个实施方案,列出了一组寻址指令,并且特别显示了用于ISA的六位操作数指定符。
图6D显示根据本发明的一个实施方案的示例存储器地址寄存器。
图6E显示根据本发明的一个实施方案由阴影DSP子指令使用的操作数的示例3位指定符。
图6F说明根据本发明的一个实施方案的示例5位操作数指定符。
图6G是根据本发明的一个实施方案说明二元DSP指令的置换的图表。
图6H和6I根据本发明的一个实施方案显示示例20位非扩展DSP指令和40位扩展DSP指令的位图语法,并且特别显示单一40位扩展阴影DSP指令的20位阴影DSP子指令。
图6J说明根据本发明的一个实施方案ISA的额外的控制指令。
图6K列出根据本发明的一个实施方案ISA的一组扩展的控制指令。
图6L列出根据本发明的一个实施方案ISA的一组40位DSP指令。
图7是说明根据本发明的一个实施方案实现阴影DSP指令的结构的框图。
图8A说明根据本发明的一个实施方案在实现阴影DSP指令中使用的延迟的数据值x’、x”、y’、y”。
图8B说明根据本发明的一个实施方案在实施有限脉冲响应(FIR)过滤器中由信号处理器单元(SP)执行的原始阶段计算和阴影阶段计算。
图8C说明根据本发明的一个实施方案的搬移控制寄存器。
图9a说明根据本发明的一个实施方案的信号处理单元(SP2)的数据打字机(typer)和对准器(DTAB)的结构,以便从x总线中为原始阶段选择当前数据以及选择延迟的数据供阴影阶段使用。
图9b说明根据本发明的一个实施方案的信号处理单元(SP2)的数据打字机和对准器(DTAB)的结构,以便从y总线中为原始阶段选择当前数据以及选择延迟的数据供阴影阶段使用。
图10a-10d根据本发明的一个实施方案分别说明每个信号处理单元(SP0、SP1、SP2和SP3)的每个DTAB的每个阴影多路复用器的结构。
图11是根据本发明的一个实施方案说明用于配置信号处理单元的块的指令解码的框图。
附图中相同的参考数字和名称指示提供类似功能的元件。参考指示符数字后面的字母表示具有该参考指示符数字的元件的一个实例。
具体实施例方式
在本发明下面的详细描述中,提出许多特定细节以便提供对本发明的彻底理解。但是,对于本领域的技术人员很显然本发明可以在没有这些特定细节的情况下实行。在其他实例中众所周知的方法、过程、组件和电路没有被详细描述以便不使得不必要地使本发明的方面变得模糊。而且,本发明将在特定实施方案中被描述但是可在硬件、软件、固件或者其组合中实现。
在通信系统网关中提供了具有本发明的指令集结构的多个专用信号处理器(ASSP)来在分组网上提供改善的语音和数据通信。每个ASSP包括串口、缓存和多个核心处理器,以便同时处理多个语音或数据信道。每个核心处理器优选的包括至少一个精简指令集计算机(RISC)处理器以及多个信号处理单元(SP)。每个SP包括多个算法块来同时处理多个语音和数据通信信号采样用于在IP、ATM、帧中继或其他分组网上通信。多个信号处理单元可以并行执行数字信号处理算法。每个ASSP是灵活的并且简单地通过改变控制ASSP执行的命令的软件程序可以被编程来执行许多网络功能或者数据/语音处理功能,包括电信系统(如CODEC),特别是分组电信网中的语音和数据压缩/解压缩。
ASSP的指令集结构适合于包括如压缩/解压缩和回声消除的音频和语音处理的数字信号处理应用。利用ASSP实现的指令集结构适合于DSP算法结构。本发明的ISA对DSP算法结构的这种适应平衡了易于实现、处理效率以及DSP算法的可编程性。指令集结构可以被看作为两个组件部分,一个(RISC ISA)对应于RISC控制单元并且另一个(DSPISA)对应于信号处理单元的DSP数据路径。RISC ISA是在寄存器文件中包括16寄存器的基于寄存器的结构,而DSP ISA是具有有效数字信号处理指令的基于存储器的结构。
ASSP的指令字可以是20位,或者可以被扩展到40位。40位指令字可被用于控制两个指令串行或并行地执行,如两个RISC控制指令、扩展DSP指令或者两个20位DSP指令。ASSP的指令集结构有五种不同的指令类型来优化DSP运算混合。有(1)使用控制寄存器(也就是模式寄存器)中的模式位的20位DSP指令,(2)具有可以取代模式寄存器的控制扩展的40位DSP指令,(3)20位二元DSP指令,(4)通过提供强大的位处理扩展20位二元DSP指令的功能的40位DSP指令,以及(5)包括一对20位二元子指令的单一40位扩展阴影DSP指令根据本发明的一个实施方案同时被执行的原始DSP子指令和阴影DSP子指令。
这些指令是用于加速该类型的核心处理器里的计算,其中D=[(Aop1 B)op2 C]并且每个“op1”和“op2”可以是三个操作数A、B、C上的乘、加或极值(最小/最大)运算类。加速这些计算的ASSP的ISA允许操作的不同组合的有效链接。
ASSP的指令集结构的所有DSP指令是在一个周期处理能力里执行一个指令中的两个运算的二元DSP指令。二元DSP指令是在一个指令中两个DSP指令或运算的组合并且包括主DSP运算(MAIN OP)以及子DSP运算(SUB OP)。一般的,本发明的指令集结构可被概括为组合任何一对基本的DSP运算以便提供非常强大的二元指令组合。优选实施方案中的DSP算法运算包括乘法指令(MULT)、加法指令(ADD)、也被称为极值指令的最小/最大指令(MIN/MAX),以及空操作指令(NOP),每个有相关的运算代码(“opcode”)。
本发明利用专用信号处理器的指令集结构以及硬件结构来有效地执行这些二元DSP指令。
在本发明的一个实施方案中,单一扩展阴影DSP指令包括一对子指令原始DSP子指令以及阴影DSP子指令。原始和阴影DSP子指令都是在一个指令周期中执行两个运算的二元DSP指令。这些DSP运算包括上述的MULT(乘)、ADD(加)MIN/MAX和NOP运算。
根据一个实施方案,每个核心处理器有多个信号处理单元(SP)。每个SP包括一个原始阶段来基于当前数据执行原始DSP子指令以及一个阴影阶段来同时基于本地存储在每个SP的延迟数据寄存器中的延迟的数据执行阴影DSP子指令。每个SP包括耦合到其自己相关SP的延迟数据寄存器的阴影选择器。控制逻辑被利用来控制每个SP的阴影选择器来从延迟的数据寄存器中选择(由阴影DSP子指令规定的)延迟数据由SP的阴影阶段使用。
这样,本发明通过同时执行利用单一DSP指令的原始DSP子指令(基于当前数据)和阴影DSP子指令(基于延迟的本地存储数据),从而在每个SP的每个单一指令周期执行四个运算,有效地执行DSP指令。
现在参见图1A,说明了语音和数据通信系统100。系统100包括是分组或分组交换网,如IP、ATM或帧中继的网络101。网络101允许在系统100的端点之间利用分组进行语音/话音和数据通信。数据可以是包括音频、视频、电子邮件和其他一般数据形式的任何类型。在系统100的每一端,当通过网络101收发时,语音或数据需要分组化。
系统100包括网关104A和104B以便将接收的信息分组化用于在网络101上发送。网关是用于连接使用不同协议的多个网络和设备的设备。语音和数据信息可以从多个不同的源以各种数字格式提供给网关104。
在系统100中,模拟语音信号在简易老式电话系统(POTS)107A上由电话108收发并且耦合到公共交换电话网(PSTN)的交换机106A中。在交换机106A中,来自POTS 107A的模拟信号被数字化并且通过时分多路复用(TDM)被收发到网关104A,每个时隙表示一个信道以及到网关的一个DS0输入。
在系统100中,数字语音信号在耦合到多个电话、传真机或数据调制解调器的公共分组交换机(PBX)112A和112B处被收发。数字语音信号在PBX 112A和PBX 112B之间分别通过网关104A和104B收发。数字数据信号还可以在数字调制解调器114和网关104A之间直接收发。数字调制解调器114可以是数字用户线(DSL)调制解调器或者电缆调制解调器。
数据信号还可以利用移动单元118无线地将数字信号或模拟信号收发到基站116来通过无线通信系统耦合到系统100。基站116将模拟信号转换为数字信号或者直接将数字信号传递到网关104B。
数据可以利用调制解调器110在简易老式电话系统(POTS)107B上利用调制解调器信号收发。在POTS 107B上通信的调制解调器信号传统地实际上是模拟的并且耦合到公共交换电话网(PSTN)的交换机106B。在交换机106B,来自POTS 107B的模拟信号被数字化并且通过时分多路复用(TDM)被收发到网关104B,每个时隙表示一个信道和到网关104B的一个DS0输入。
在网关104A和104B的每个,进入信号被分组化用于在网络101上发送。由网关104A和104B从网络101接收的信号被去分组化并且转换代码以便发送到合适的目的地。
现在参见图1B,说明了网关104的网络接口卡(NIC)130。NIC 130包括一个或多个专用信号处理器(ASSP)150A-150N。网关中ASSP的数量是可扩展的以便处理额外的信道。NIC 130的线路接口设备131向连接到网关的各种设备,包括网络101提供接口。在对网络101接口中,线路接口设备将数据分组化用于在网络101上发送出去并且将要被ASSP设备接收的数据去除分组化。线路接口设备131处理由网关在接收总线134上接收的信息并且将其提供给ASSP设备。来自ASSP设备150的信息在发送总线132上通信用于发送到网关之外。NIC 130耦合到网关104里的网关底板/网络接口总线136。桥逻辑138在总线136和NIC 130之间收发信息。桥逻辑138将NIC 130和底板/网络接口总线136之间的信号收发到主机总线139上用于通信到ASSP设备150A-150N的一个或多个、主处理器140或者主机存储器142。随意地耦合到一个或多个ASSP设备150A到150N(一般称为ASSP 150)的每个分别是可选的本地存储器145A到145N(一般称为可选本地存储器145)。接收总线134和发送总线132上的数字数据优选地以位宽的形式通信。虽然每个ASSP里的内部存储器足够大到被用做中间结果暂存器存储器,如果额外的存储器空间是必要的,则可选本地存储器145可由每个ASSP150使用。
每个ASSP 150为网关提供信号处理功能。因为每个ASSP可执行不同的信号处理程序,所以提供的信号处理类型是灵活的。ASSP的典型的信号处理和相关的语音分组化功能包括(a)回声消除;(2)视频、音频、以及语音/话音压缩/解压缩(语音/话音编码和解码);(c)延迟处理(分组,帧);(d)损耗处理;(e)连接性(LAN和WAN);(f)保密性(加密/解密);(g)电话接通性;(h)协议处理(保留和传输协议,用于IP的RSVP、TCP/IP、RTP、UDP、以及用于ATM的AAL2、AAL1、AAL5);(i)过滤;(j)无声抑制;(k)长度处理(帧、分组);以及与通信系统上语音和数据通信相关的其他数字信号处理功能。每个ASSP 150可以执行其他功能以便在分组网上将分组数据流中的语音和数据发送到系统100的不同端点。
现在参见图2,说明了ASSP 150的框图。在ASSP 150的中心是四个核心处理器200A-200D。核心处理器200A-200D的每个分别耦合到数据存储器202A-202D和程序存储器204A-204D。核心处理器200A-200D的每个通过多信道串口206、多信道存储器移动引擎208、缓存210和数据存储器202A-2021D与外部信道通信。ASSP 150还包括外部存储器接口212来耦合到外部可选本地存储器145。ASSP 150包括外部主机接口214用于接口到图1B的外部主处理器140。在ASSP 150中还包括定时器216、时钟生成器和锁相环218、杂项控制逻辑220以及用于边界扫描测试的联合测试行动组(JTAG)测试接入端口222。ASSP 150还包括微控制器223以便执行对于核心处理器200A-200D的处理时序安排以及在ASSP里数据移动的协调,还有中断控制器224来辅助中断处理以及ASSP 150的控制。
现在参见图3,说明了耦合到其相应的数据存储器202以及程序存储器204的核心处理器200的框图。核心处理器200是核心处理器200A-200D的每个的框图。数据存储器202和程序存储器204指数据存储器202A-202D和程序存储器204A-204D的各自的一个实例。核心处理器200包括四个信号处理单元SP0 300A、SP1 300B、SP2 300C以及SP3 300D。核心处理器200还包括精简指令集计算机(RISC)控制单元302和管道控制单元304。信号处理单元300A-300D在数据上执行信号处理任务而RISC控制单元302和管道控制单元304执行与由SP 300A-300D执行的信号处理功能相关的控制任务。由RISC控制单元302提供的控制在管道层与SP 300A-300D耦合以便生成紧密集成的核心处理器200来保持在一个非常高的水平上利用信号处理单元300。而且,每个信号处理单元300A-300D通过数据总线203连接到数据存储器202、到彼此、以及到RSIC 302用于数据(例如操作数)交换。
信号处理任务在信号处理单元300A-300D里的数据路径上被执行。DSP算法的特性是它们是在数据流上固有的矢量运算,具有最小的临时位置(数据重用)。因此,不使用具有请求页面调度的数据高速缓存,因为其不能很好地起作用并且会降低操作性能。因此,在没有发出多个负载并且将指令存储在存储器中的情况下,信号处理单元300A-300D被允许从数据存储器202直接访问矢量元素(操作数),带来非常有效的数据处理。因此,具有可以扩展为40位指令字的20位指令字的本发明的指令集结构,通过使ISA适合DSP算法结构,比利用256位或更高的指令宽度的VLIW结构获得了更好的效率。适合的ISA导致可以调整为更高计算需要的非常紧凑并且低功率的硬件。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位寄存器作为确定地址、修改后偏移、以及类型和排列域的指针。类型域允许各种正常的DSP数据被支持作为结构中的“头等公民“。例如,复数类型允许在存储在存储器中的复数数据上直接运算,去掉了许多簿记指令。这在有效地支持数据调制解调器中的QAM解调器中非常有用。
现在参见图5A,说明了信号处理单元300的框图,其代表SP300A-300D的一个实例。每个信号处理单元300包括数据打字机和对准器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中的其他组件通过多路复用器正确的选择而被灵活地互连。
在一个实施方案中,信号处理单元300有位于多路复用器522和累加器512之上的原始阶段561,来基于当前数据执行原始DSP子指令以及位于多路复用器522和累加器512之下的阴影阶段562,来基于本地存储在数据打字机和对准器502的延迟数据寄存器里的延迟的数据同时执行阴影DSP子指令。延迟的数据寄存器将在后面详细讨论。如前所述,根据本发明的一个实施方案的单一40位扩展阴影DSP指令包括20位二元原始DSP子指令和20位二元阴影DSP子指令。
在这个实施方案中,原始阶段561的乘法器M1 504A、压缩器506、加法器A1 510A和加法器A2 510B,以及累加器512,典型地通过数据打字机和对准器502直接从外部数据总线203接收输入。阴影阶段562的加法器510C和乘法器M2 504B,典型地从数据打字机和对准器502的延迟数据寄存器或累加器512中接收输入。
程序存储器204耦合到包括作为本地循环高速缓存的指令缓存的管道控制304。优选实施方案中的指令缓存能够保留四个指令,如每个具有20位二元原始子指令和20位二元阴影DSP子指令的四个单一40位扩展阴影DSP指令。管道控制304的指令缓存减少了在程序循环执行期间访问主机存储器来取指令所消耗的能量。
现在参见图5B,说明了信号处理单元300的功能块和总线结构的更详细的框图。因为在每个信号处理单元中提供了结构和功能性,所以二元DSP指令是可能的。特别的,在每个信号处理单元中提供的结构和功能性允许单一40位扩展阴影DSP指令的20位二元原始DSP子指令和20位二元阴影DSP子指令同时被执行。
输出信号通过数据打字机和对准器502在Z输出总线532上被耦合到信号处理器300之外。输入信号通过数据打字机和对准器502在X输入总线531和Y输入总线533上被耦合到信号处理器300里。在内部,数据打字机和对准器502有不同的数据总线耦合到原始阶段561的乘法器M1 504A、压缩器506、加法器A1 510A、加法器A2 510B以及累加器寄存器AR 512的每个。数据打字机和对准器502还有两个不同的数据总线551和552,每个耦合到阴影阶段562的加法器A3 510C和乘法器M2 504B的每个。典型地,数据总线551和552将来自数据打字机和对准器502的延迟数据寄存器的输入发送到加法器A3 510C和乘法器M2 504B。而且,输出数据被从累加器寄存器AR 512耦合到数据打字机和对准器502。
乘法器M1 504A有总线将其输出耦合到压缩器506、加法器A1510A、加法器A2 510B、以及累加寄存器AR 512的输入。压缩器506有总线将其输出耦合到加法器A1 510A和加法器A2 510B的输入。加法器A1 510A有总线将其输出耦合到累加寄存器512。加法器A2 510B有总线将其输出耦合到累加寄存器512。累加寄存器512有总线将其输出耦合到乘法器M2 504B、加法器A3 510C、以及数据打字机和对准器502。加法器A3 510C有总线将其输出耦合到乘法器M2 504B、累加寄存器512。乘法器M2 504B有总线将其输出耦合到加法器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的准备,以及其他2×20控制指令。指令607典型地是上下文保存和功能返回指令或者其他2×20控制指令。指令603和607经常被认为是典型地不经常执行的开销指令。指令604典型地提供内循环602的建立、通过2×20控制指令的其他控制、双循环建立、指针备份的偏移扩展,或者阴影信号处理单元的循环阴影(例如,阴影阶段的功能单元),以便减少外循环重复。指令606典型地提供内循环602的拆卸、通过2×20控制指令的其他控制、以及信号处理单元里的数据路径结果的组合。内循环602里的指令605典型地提供DSP运算的内循环执行、在单一指令多数据执行模式中四个信号处理单元300的控制、操作数的存储器访问、二元DSP运算、以及通过本发明的ISA的20/40位DSP指令的其他DSP功能性。因为指令605被经常重复,所以通过在本发明的ISA里提供包括一般二元指令和二元DSP指令的DSP指令,运算效率得到显著改善。
ASSP 150的指令集结构可被看作是两个组件部分,一个(RISCISA)对应于RISC控制单元并且另一个(DSP ISA)对应于信号处理单元300的DSP数据路径。RISC ISA是基于寄存器的结构,在寄存器文件413中包括十六个寄存器,而DSP ISA是具有有效数字信号处理指令的基于存储器的结构。ASSP的指令字典型的是20位但是可以被扩展到40位以便控制两个RISC或DSP指令来被串行或并行地执行,如RISC控制指令被与DSP指令、或者40位扩展RISC或者DSP指令并行执行。
ASSP的指令集结构有五种不同类型的指令来优化DSP运算混合。有(1)使用控制寄存器(也就是模式寄存器)中的模式位的20位DSP指令,(2)具有可以取代模式寄存器的控制扩展的40位DSP指令,(3)20位二元DSP指令,(4)通过提供强大的位处理扩展20位二元DSP指令的功能的40位DSP指令,以及(5)包括一对20位二元子指令的单一40位扩展阴影DSP指令根据本发明的一个实施方案同时被执行的原始DSP子指令和阴影DSP子指令。
这些指令是用于加速该类型的核心处理器里的计算,其中D=[(Aop1 B)op2 C],并且每个“op1”和“op2”可以是三个操作数A、B、C上的乘、加、极值(最小/最大)运算类。加速这些计算的ASSP的ISA允许操作的不同组合的有效链接。因为这些运算类型需要三个操作数,所以它们对于处理器必须是可用的。但是,因为设备大小在总线结构上加有限制,所以带宽被限制为每个周期两个矢量读出和一个矢量写入数据存储器202。因此操作数之一,如B或C,需要来自核心处理器200的另一个源。第三个操作数可以被放入累加器512或者RISC寄存器文件413的寄存器之一。为了在核心处理器200里实现这一点,有两个20位DSP指令的子类(1)由4位指定符指定的A和B,以及由1位指定符指定的C和D以及(2)由4位指定符指定的A和C,以及由1位指定符指定的B和D。
ASSP的指令总是一次从程序存储器中取出40位,位39和19指示指令类型。取出之后,该指令被分组成每个20位的两部分用于运算执行。参见图6B,在20位控制指令并行执行的情况下(位39=0,位19=0),两个20位部分是被同时执行的控制指令。在20位控制指令串行执行的情况下(位39=0,位19=1),两个20位部分是被串行执行的控制指令。在20位控制指令串行执行的情况下(位39=1,位19=1),两个20位部分是被串行执行的DSP指令。
在40位扩展DSP指令的情况下(位39=1,位19=0),两个20位部分形成一个扩展DSP指令并且被同时执行。这个40位DSP指令有两种类型1)扩展的扩展20位二元DSP指令的功能的40位DSP指令-第一个20位部分是DSP指令并且第二个20位部分扩展第一个DSP指令的功能并且提供强大的位管理指令,也就是说,其是一个具有扩展功能的在功能单元的最上面一行(也就是原始阶段561)运行的40位DSP指令;以及2)阴影包括一对20位二元子指令的单一40位DSP指令同时被执行的原始DSP子指令以及阴影DSP子指令,其中,根据本发明的一个实施方案,第一个20位部分是在功能单元的最上面一行(也就是原始阶段561)执行的二元DSP指令,而第二个20位部分也是在功能单元的最下面一行(也就是阴影阶段562)执行的二元DSP指令。在优选实施方案中,通过将40位DSP指令的位5对于“扩展的”设置为“0”,对于“阴影”设置为“1”来形成“扩展的”和“阴影”类型之间的区别。
ASSP 150的ISA被完全判定提供执行预测。在20位RISC控制指令字和40位扩展DSP指令字中,每个指令有两位指定RISC控制单元302里的四个预测寄存器之一。依赖于判定寄存器的情况,指令执行可以基于其内容条件性地改变。
为了访问操作数,在数据存储器202里,累加器512、RISC 302的寄存器文件413里的寄存器里、或者信号处理单元300的数据打字机和对准器502的延迟寄存器里,在DSP扩展指令中使用6位指定符来访问存储器和寄存器中的操作数。图6C显示根据本发明的一个实施方案的示例6位操作数指定符。在扩展的DSP指令中使用的六位指定符的MSB(位5)指示访问是存储器访问还是寄存器访问。在这个实施方案中,如果位5被设置为逻辑一,则其表示操作数的存储器访问。如果位5被设置为逻辑零,则其表示操作数的寄存器访问。
如果位5被设置为1,则指定寄存器的内容(rX其中X0-7)被用于获得有效的存储器地址并且由在指定的rX寄存器之一中指定的两个可能的偏移之一来后修改指针域。图6D显示根据本发明的一个实施方案的示例存储器地址寄存器。
如果位5被设置为0,则位4确定什么寄存器设置有想要的操作数的内容。如果位4被设置为1,则剩余的指定位控制对寄存器文件413里的通用目的文件(r0-r15)的访问。如果位4被设置为0,则剩余的指定位30控制对寄存器文件413里的通用文件(r0-r15)、信号处理单元300的累加器寄存器512、或者信号处理单元300的数据打字机和对准器502的延迟数据寄存器的访问。通用文件(GPR)保留数据或存储器地址以便允许RISC或DSP操作数访问。RISC指令一般仅访问GPR文件。DSP指令利用GPR作为地址访问存储器。
图6E显示仅由阴影DSP指令使用的操作数的3位指定符。应该注意,在一个示例实施方案中,每个信号处理单元300的每个累加寄存器512包括寄存器如图6C和6E中参考的A0、A1、T和TR。寄存器A0和A1可被用于保留乘法和算术运算的结果。T寄存器可被用于保留临时数据和在类似格子解码算法的最小-最大搜索中。TR寄存器记录哪些数据值引起最大值(或者最小值)。当在ereg域中指定值SX1、SX2、SY1和SY2时,控制逻辑在没有搬移的情况下为每个SP的阴影阶段简单地选择指定的延迟的数据。当在ereg域中指定值SX1s、SX2s、SY1s、SY2s时,这些值指定在搬移控制寄存器中指定的控制,其确定控制逻辑如何控制每个信号处理单元(SP)300的数据打字机和对准器(DTAB)里的阴影选择器,来挑选在延迟数据寄存器中保留的延迟的数据供SP的阴影阶段使用,如在后面更详细的细节中所讨论的。
20位DSP指令字有四位操作数指定符可以利用RISC控制单元302的寄存器文件413里的8个地址寄存器(r0-r7)来直接访问数据存储器。20位DSP指令字的寻址方法是通过指定到存储器中的指针的地址寄存器、后修改值、数据访问类型以及有效地执行算法所需的数据置换而规则地间接寻址的。
图6F说明根据本发明的一个实施方案的示例5位操作数指定符,包括用于一般数据操作数的4位指定符和专用寄存器(SPR)。5位操作数指定符用于RISC指令。
应该注意,图6B-6F中说明的访问寄存器和存储器的操作数指定符的前面的位图仅是示例,并且本领域的技术人员应该理解任何数量的位图方案、寄存器方案等可被用于实现本发明。
DSP指令ASSP 150主要有四类DSP指令1)乘法(MULT)控制从存储器连接到数据总线的主乘法器的执行。
控制舍入,乘法符号在通过地址寄存器中的类型域指定的矢量数据上运算第二运算矢量或标量模式的Add、Sub、Min、Max2)加法(ADD)控制主加法器的执行控制输入的绝对值,限制结果第二运算Add、add-sub、mult、mac、min、max3)极值(MIN/MAX)控制主加法器的执行控制输入的绝对值控制,通过T寄存器、TR寄存器记录控制的全局或运行max/min第二运算add、sub、mult、mac、min、max4)杂类类型匹配和排列运算所有的DSP指令控制乘法器504A-504B、加法器510A-510C、压缩器506和累加器512、每个信号处理单元300A-300D的功能单元。ASSP 150可以以矢量或者标量方式执行这些DSP算法运算。在标量执行中,减少或合并运算在矢量结果上执行以便生成标量结果。在DSP应用中通常执行标量运算,其可以被ASSP 150有效地执行。
二元DSP指令ASSP 150的指令集结构的所有DSP指令是20位或40位指令字里的二元DSP指令。二元DSP指令通知ASSP在一个指令和一个周期中执行两个运算。
图6G是说明二元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指令有许多变化,如乘法或加法的矢量和标量运算、正或负乘法、以及正或负加法(也就是减法)。
40位扩展指令字扩展的/阴影在40位指令字中,从20位指令字扩展的类型分成五类
1)取代模式寄存器中的控制位的控制和指定符扩展2)取代地址寄存器中的类型指定符的类型扩展3)取代地址寄存器中矢量数据的置换指定符的置换扩展4)替换或者扩展在地址寄存器中规定的偏移的偏移扩展5)控制信号处理单元300里的阴影阶段562(也就是功能单元的较低行)以便加速块处理的阴影DSP扩展。
在40位扩展DSP指令字(位39=1,位19=0)的情况下,执行基于位5的值(0=扩展的/1=阴影)。如果由位5的值设置扩展指令,则第一个20位部分是DSP指令并且第二个20位部分扩展第一个DSP指令的功能,也就是其是一个在信号处理单元300里的功能DSP单元的顶行中执行的40位DSP指令。带有20位扩展的40位控制指令允许在指令和强大的位处理指令中规定一个大的立即值(16到20位)。
如果由位5的值设置阴影指令,则第一个20位部分是在功能单元的顶行(原始阶段)上执行的二元DSP指令,而第二个20位部分是在功能单元的第二行(阴影阶段)上执行的另一个二元DSP指令。
为有效的DSP执行提供了包括一对20位二元子指令的单一40位阴影DSP指令原始二元DSP子指令和阴影二元DSP子指令。因为原始和DSP子指令都是二元的,所以它们每个在一个指令周期中执行两个DSP运算。这些DSP运算包括如前所述的MULT、ADD、MIN/MAX以及NOP运算。再次参见图5B,第一个20位,也就是原始二元DSP子指令,控制信号处理单元300的原始阶段561,其包括基于当前数据从存储器接口到数据总线203(例如,x总线531和y总线533)的顶功能单元(加法器510A和510B,乘法器504A,压缩器506)。
第二个20位,也就是阴影二元DSP子指令,控制包括底功能单元(加法器510C和510D,乘法器504B)的阴影阶段562,同时与原始阶段561。阴影阶段562使用内部或本地数据如本地存储在每个信号处理单元的延迟数据寄存器里的延迟的数据或者来自累加器的数据作为操作数。
原始阶段561的顶功能单元通过并行通过连续的分支或部分减少了内循环602里的内循环周期。阴影阶段562的底功能单元通过使越过连续的采样的块DSP算法并行而将外循环601中的外循环周期切成两半。而且,本发明利用40位阴影DSP指令来同时执行原始DSP子指令(基于当前数据)和阴影DSP子指令(基于延迟的本地存储数据)因此在每个信号处理单元每个单一指令周期执行四个运算,有效地执行了DSP指令。
通过本发明的硬件结构也改善了有效的DSP执行。这样,效率以数据被提供给或来自数据存储器202以便供给四个信号处理单元300以及其中的DSP功能单元的方式被提高。数据总线203包括两条总线,用于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个循环减少到仅需一个循环。
如前所述,在本发明的一个实施方案中,单一40位阴影DSP指令包括一对20位二元子指令原始二元DSP子指令和阴影二元DSP子指令。因为原始和DSP子指令都是二元的,所以它们每个在一个指令周期中执行两个DSP运算。这些DSP运算包括前述的MULT、ADD、MIN/MAX以及NOP运算。第一个20位部分是基于当前数据在功能单元的最上面一行(也就是原始阶段561)执行的二元DSP指令,而第二个20位部分也是基于在信号处理单元的延迟数据寄存器里本地存储的或者来自累加器的延迟的数据在功能单元的底行(也就是阴影阶段562)上同时执行的二元DSP指令。这样,本发明通过利用单一40位阴影DSP指令里同时执行原始和阴影DSP子指令,从而在每个SP的每个单一指令周期执行四个运算,有效地执行了DSP指令。
阴影DSP指令现在参见图6H和6I,说明了示例20位非扩展和40位扩展DSP指令的位图语法。如前面讨论的,对于20位非扩展指令字,位图语法是40位字的20位最高有效位,而对于40位扩展DSP指令,位图语法是40位指令字。特别的,图6H和6I一起说明了示例40位阴影DSP指令。图6H说明20位DSP指令,并且更特别的,原始二元DSP子指令的第一个20位部分的位图语法。图6I说明40位扩展DSP指令的第二个20位部分的位图语法并且更特别的,在“阴影DSP”下,说明阴影二元DSP子指令的位图语法。注意为规定40位阴影指令,位39=1,位19=0,并且位5=1。
如图6H所示,三个最高有效位(MSB),原始二元DSP子指令(也就是第一个20位部分)的编号37到39的位指示MAIN OP指令类型而SUB OP位于原始二元DSP子指令的尾部附近编号20到22的位处。在优选实施方案中,MAIN OP指令代码是对于NOP为000,对于ADD为101,对于MIN/MAX为110,并且对于MULT为100。给定DSP指令的SUB OP代码根据选择什么MAIN OP代码而变化。在MULT作为MAIN OP的情况下,SUB OP是对于NOP为000,对于ADD为001或010,对于负ADD或减法为100或011,对于MIN为101或110,并且对于MAX为111。其他MAIN OP和SUB OP的位图语法可以从图6H中看到。
如图6I中所示,在“控制和指定符扩展”下,控制扩展的二元DSP指令的较低20位,也就是扩展位,控制信号处理单元来为SUB OP的输入执行舍入、限制、绝对值,或者利用寄存器值的全局MIN/MAX运算。
特别的,如图6I所示,在“阴影DSP”下,阴影二元DSP子指令的编号14、17和18的指令位指示MAIN OP指令类型,而SUB OP位于阴影二元DSP子指令的尾部附近编号0到2的位处。在一个实施方案中,MAIN OP指令代码和SUB OP代码可以与如前对于原始二元DSP子指令描述的相同的。但是,本领域的技术人员应该理解,阴影DSP指令的原始和阴影DSP子指令的MAIN OP和SUB OP的指令位语法仅是示例并且可以使用大量的各种指令位语法。而且,图6I显示ereg1(位10-12)和ereg2(位6-8)域,如前所述,其被用于选择由阴影阶段使用的数据值,后面将更详细地讨论。
二元DSP指令的位图语法可以被转换成文本语法用于程序编码。利用乘法或MULT为例,其用于乘法或MULT的文本语法是(vmu1|vmu1n).(vadd|vsub|vmax|sadd|ssub|smax)da,sx,sa,sy[,(ps0)|ps1)]“vmu1|vmu1n”域指被选择作为MAIN OP的正矢量乘法或负矢量乘法。下一个域,“vadd|vsub|vmax|sadd|ssub|smax”,指被选择作为SUB OP的矢量加、矢量减、矢量最大、标量加、标量减或者标量最大。下一个域,“da”,指选择累加器里的寄存器之一用于结果的存储。域“sx”指选择指向存储器中一个存储位置的RISC寄存器文件413里的一个寄存器作为操作数的源之一。域“sa”指选择累加器里的寄存器的内容作为操作数的源之一。域“sy”指选择指向存储器中一个存储位置的RISC寄存器文件413里的一个寄存器作为操作数的源中的另一个。域“[,(ps0)|ps1)]”指规定哪些是并行存储控制寄存器的源目的地对的关键字PS0或PS1的对选择。
图6J说明根据本发明的一个实施方案用于ISA的额外的控制指令。图6K说明根据本发明的一个实施方案用于ISA的一组扩展控制指令。图6L说明根据本发明的一个实施方案用于ISA的一组40位DSP指令。
实现阴影DSP指令的结构现在参见图7,说明了根据本发明的一个实施方案用于实现单一40位扩展阴影DSP指令的结构。图7显示具有分别耦合到核心处理器200(图3)的信号处理器(SP)SP0、SP1、SP2和SP3的每个的数据打字机和对准器块502A、502B、502C和502D的搬移控制寄存器702的控制逻辑块700。控制逻辑块700还耦合到每个SP的阴影阶段562的多路复用器520C和514B(图5B)。
x输入总线531和y输入总线533分别耦合到信号处理器SP0、SP1、SP2和SP3的每个的数据打字机和对准器块(DTAB)502A、502B、502C和502D。每个DTAB向其各自的原始阶段的功能块(例如,图5B的乘法器M1 504A、压缩器506、加法器A1 510A、以及加法器A2 510B)提供x和y数据值。而且,每个SP的每个DTAB在延迟数据寄存器中存储x和y总线的延迟的数据值x’、x”、y’以及y”,以便通过数据总线551和552(图5B)向其各自阴影阶段562的功能块(例如加法器A3 510C和乘法器M2 504B)提供输出。
暂时参见图8A,x’=[SX10,SX11,SX12,SX13]以及x”=[SX20,SX21,SX22,SX23]。延迟的数据采用形式SXab其中S表示源;a=延迟;并且b=SP单元号(例如SP0、SP1、SP2、SP3)。y’和y”值是类似的形式,特别的,y’=[SY10,SY11,SY12,SY13]以及y”=[SY20,SY21,SY22,SY23]。
如图7所示,DTAB 502A将来自x和y输入总线的源值SX0和SY0(其中下标值表示SP号)直接输出到SP0的原始阶段561。DTAB 502A还输出分别从延迟的数据值(x’、x”、y’以及y”)中选择的阴影值SHX0和SHY0(其中下标值表示SP号)。这些延迟的值被存储在延迟数据寄存器中,如将被讨论的,并且被分别通过数据总线551A和552A输出到SP0的阴影阶段562。类似的,DTAB 502B将源值SX1和SY1输出到原始阶段561并且将阴影值SHX1和SHY1通过数据总线551B和552B输出到SP1的阴影阶段562;DTAB 502C通过数据总线551C和552C将源值SX2和SY2输出到原始阶段并且将阴影值SHX2和SHY2输出到SP2的阴影阶段;并且DTAB 502D将源值SX3和SY3输出到原始阶段并且将阴影值SHX3和SHY3通过数据总线551D和552D输出到SP3的阴影阶段。
如前面所讨论的,根据本发明的一个实施方案的专用信号处理器(ASSP)可被用于电信系统来实现数字过滤功能。数字过滤功能的一个通用类型是具有形式Zn=x0y0+x1y1+x2y2+...+xNyN的有限脉冲响应(FIR)过滤器,其中yn是编号从1到N的固定过滤器系数并且xn是数据采样。
如图8B所示,形式为Zn=x0y0+x1y1+x2y2+...+xNyN的FIR过滤器可被用于本发明。这个等式的计算可以被扩展到图8B中所示的不同(SP)并且等式的特定部分可以在每个周期(由周期#表示)期间被计算。例如,在SP的原始阶段,在周期#1SP0计算x0y0,SP1计算x1y1,SP2计算x2y2,并且SP3计算x3y3,并且在周期#2期间,SP0计算x4y4,SP1计算x5y5,SP2计算x6y6,并且SP3计算x7y7等。如前面所讨论的,单一40位阴影DSP指令包括一对20位二元子指令基于当前数据在原始阶段执行的原始二元DSP子指令以及基于在延迟数据寄存器中本地存储的延迟的数据在阴影阶段同时执行的阴影二元DSP子指令。
如图8B所示,在其中延迟的数据(x’、x”、y’以及y”)被存储的周期#1和周期#2之后,阴影阶段可以利用形式为Z1=x1y0+x2y1+x3y2+...+xN+1yN的本地存储的延迟的数据同时计算FIR过滤器的下一个输出。在这个例子中,控制逻辑700规定阴影阶段将x’值向左搬移一位。如图8B所示这个等式的计算扩展到不同SP的阴影阶段并且该等式的特定部分可以在每个周期期间被计算。例如在周期#3期间SP0计算x1y0,SP1计算x2y1,SP2计算x3y2,并且SP3计算x4y3,并且在周期#4期间,SP0计算x5y4,SP1计算x6y5,SP2计算x7y6,并且SP3计算x8y7等。这样,本发明通过利用单一40位扩展阴影DSP指令同时执行原始DSP子指令(基于当前数据)和阴影DSP子指令(基于延迟的本地存储数据),因此在每个单一指令周期执行四个运算,有效地执行了DSP指令。而且,如图8B所示,利用原始和阴影阶段FIR过滤器能够同时计算后续周期。
如图8B中所示的阴影阶段计算利用被延迟并且被本地存储的数据来增加SP的数字信号处理的效率。阴影阶段计算的周期#3利用原始阶段的周期#1的前3个x操作数(x1,x2和x3)以及原始阶段的周期#2的第一个x操作数(x4)并且y操作数保持相同。因此,对于阴影阶段计算,x0操作数被丢弃并且原始阶段的x’操作数被简单地“向左搬移”一位并且被重用。这个相同的“向左搬移”运算被清楚地显示在阴影阶段计算的周期#4中。
前面讨论的阴影子指令的ereg1和ereg2域(图6E和6I),为控制逻辑700指定了要被选择的数据。对于在ereg域中规定的值SX1(表示x’),SX2(表示x”),SY1(表示y’)以及SY2(表示y”),控制逻辑为阴影阶段简单地选择指定的延迟的数据而不搬移。而且,阴影阶段可以使用如ereg域规定的来自累加器的数据(例如,A0,A1,T,TR)。
图8C说明根据本发明的一个实施方案的搬移控制寄存器702。对于在ereg域中规定的值SX1s、SX2s、SY1s、SY2s,搬移控制寄存器702指定一个预置的搬移控制指令来命令控制逻辑700以搬移的方式选择延迟的数据供SP 300的阴影阶段562使用。基于这个预置指令,控制逻辑700分别控制每个SP 300的每个DTAB 502的阴影选择器来选择存储在延迟数据寄存器中的延迟的数据供每个SP 300的每个阴影阶段562使用。
如图8C所示,公开了控制逻辑700使用的搬移控制寄存器702的示例位图,其中项u表示SP单元号,例如u3=SP3、u2=SP2、u1=SP1并且u0=SP0。在这个实施方案中,源被利用下列位图表搬移
00 SP单元N+1,SX1表示将延迟的数据x’向右搬移一位。
01 SP单元N+1,SX2表示将延迟的数据x”向右搬移一位。
10 SP单元N-1,SXi表示将延迟的数据x’向左搬移一位。
11 SP单元N-1,SX2表示将延迟的数据x”向左搬移一位。
例如,如图8B所示并且如前所述,为将延迟的数据x’向左搬移一位,下列位将被编入搬移控制寄存器702的位图的SX1s部分的u3、u2、u1和u0位域(位0-7)10101010。类似的编码也可被用于搬移延迟的y数据(例如,y’和y”)。
本领域的技术人员应该理解,如图8C的搬移控制寄存器的位图中所公开的,控制逻辑可以被编程来将延迟的数据值向左或右搬移一步。而且,应该理解,搬移控制寄存器还可以被编程来将延迟的数据向任意方向搬移任意步数(例如,一、二、三...)。除此之外,本领域的技术人员应该理解,除参见图8的如前所述的FIR过滤器之外,大量的各种块数字过滤器可以用本发明实现。
图9a说明从x总线531为原始阶段561选择当前数据以及选择延迟的数据供SP的阴影阶段562使用的信号处理单元300的数据打字机和对准器(DTAB)502的结构。特别的,图9a说明SP2 300C(如图7所示)的DTAB 502C来如原始DSP子指令所规定的选择源值SX2用于输出到原始阶段561,以及如阴影DSP子指令规定的,从延迟的数据x’和x”选择阴影值SHX2输出到阴影阶段562。
DTAB 502C包括主控制904,提供主控制信号以便根据原始DSP子指令来控制主多路复用器906C选择SX2输出到SP300C的原始阶段561。主控制信号还提供数据键入(typing)和格式化。
DTAB 502C还包括如阴影多路复用器912C的阴影选择器,来如由控制逻辑700生成的搬移多路复用器控制信号914所规定的,从延迟的数据x’和x”选择阴影值SHX2。控制逻辑700与搬移控制寄存器702一起,通过生成并且向阴影多路复用器912C发送搬移多路复用器控制信号914来实现如前面讨论的阴影DSP子指令的被请求的延迟的数据选择。
根据搬移多路复用器控制信号914,阴影多路复用器912C从x’=[SX10,SX11,SX12,SX13]和x”=[SX20,SX21,SX22,SX23](如前面所谈论的)中选择规定的延迟的数据值。x’延迟的数据值被存储在寄存器Register2x’908C中并且x”延迟的数据值被存储在寄存器Register2x”910C中由阴影多路复用器912C访问。而且控制延迟916C提供延迟主控制信号用于阴影多路复用器912C的正确定时。延迟的主控制信号还提供数据键入和格式化。
基于搬移多路复用器控制信号914,阴影多路复用器512C从延迟的数据值中选择阴影值SHX2并且通过数据总线551C将其输出到SP300C的阴影阶段562。
应该理解,用于选择延迟的x数据值的SP0 300A、SP1 300B、SP2 300C和SP3 300D的DTAB 502A、502B、502C和502D分别都是如图9a所示的相似的结构。而且,应该理解每个DTAB 502A、502B、502C和502D分别有阴影多路复用器912A、912B、912C和912D,这将在下面详细讨论。
图9b说明从y总线533为原始阶段561选择当前数据以及选择延迟的数据供SP的阴影阶段562使用的信号处理单元300的数据打字机和对准器(DTAB)502的结构。特别的,图9b说明SP2 300C(如图7所示)的DTAB 502C来如原始DSP子指令所规定的选择源值SY2用于输出到原始阶段561,以及如阴影DSP子指令规定的,从延迟的数据y’和y”选择阴影值SHY2输出到阴影阶段562。
DTAB 502C包括主控制904(图9a),提供主控制信号以便根据原始DSP子指令来控制主多路复用器907C选择SY2输出到SP300C的原始阶段561。主控制信号还提供数据键入和格式化。
DTAB 502C还包括如阴影多路复用器913C的阴影选择器,来如由控制逻辑700生成的搬移多路复用器控制信号915所规定的,从延迟的数据y’和y”选择阴影值SHY2。控制逻辑700与搬移控制寄存器702一起,通过生成并且向阴影多路复用器913C发送搬移多路复用器控制信号915来实现如前面讨论的阴影DSP子指令的被请求的延迟的数据选择。
根据搬移多路复用器控制信号915,阴影多路复用器913C从y’=[SY10,SY11,SY12,SY13]和y”=[Sy20,Sy21,Sy22,Sy23](如前面所谈论的)中选择规定的延迟的数据值。y’延迟的数据值被存储在寄存器Register2y’909C中并且y”延迟的数据值被存储在寄存器Register2y”911C中由阴影多路复用器913C访问。而且控制延迟916C(图9a)提供延迟主控制信号用于阴影多路复用器913C的正确定时。主控制信号还提供数据键入和格式化。基于搬移多路复用器控制信号915,阴影多路复用器513C从延迟的数据值中选择阴影值SHY2并且通过数据总线552C将其输出到SP 300C的阴影阶段562。
应该理解,用于选择延迟的y数据值的SP0 300A、SP1 300B、SP2 300C和300D的DTAB 502A、502B、502C和502D分别都是如图9b所示的相似的结构。而且,应该理解,每个DTAB 502A、502B、502C和502D分别有阴影多路复用器913A、913B、913C和913D。
图10a-10d说明用于每个信号处理单元(SP)300的每个数据打字机和对准器(DTAB)502从延迟的数据寄存器(例如Registerx,908、Registerx,910)中选择x’和x”延迟的数据由SP的阴影阶段562使用的每个阴影多路复用器912的结构。
图10a说明SP0 300A的DTAB 502A的阴影多路复用器912A的结构。阴影多路复用器912A可以如搬移多路复用器控制信号914所命令的(例如,向左或右搬移一位或者不搬移)来选择延迟的x值(x’和x”),以便选择阴影值SHX0。然后阴影值SHX0被通过数据总线551A输出到SP 300A的阴影阶段562。如前面所讨论的,x’=[SX10,SX11,SX12,SX13]和x”=[SX20,SX21,SX22,SX23],其中值采用SXab的形式,其中S表示源;a=延迟;并且b=SP单元号(例如SP0、SP1、SP2、SP3)。
阴影多路复用器912A包括6-1多路复用器1000a用于如搬移多路复用器控制信号914所命令的选择SX13、SX11、SX10、SX20、SX21、SX23之一。阴影多路复用器912A还包括多个三个多路复用器1002a、1004a、1006a分别用于选择SX13、SX11和SX10。每个多路复用器还被连接到延迟的主控制信号用于正确的定时。延迟的主控制信号还提供数据键入和格式化。
替代的,3-1多路复用器1020a可被用于任意多个三个多路复用器。阴影多路复用器912A还包括另外的多个三个多路复用器1008a、1010a、1012a,分别用于选择SX20、SX21、SX23。
基于搬移多路复用器控制信号914,阴影多路复用器912A通过6-1多路复用器1000a为阴影值SHX0选择SX13、SX11、SX10、SX20、SX21、SX23之一来通过总线551A输出到SP0 300A的阴影阶段562。如前面所讨论的,控制逻辑700与搬移控制寄存器702一起,通过生成并且向6-1多路复用器1000a发送搬移多路复用器控制信号914来实现阴影DSP子指令的被请求的延迟的数据选择。
例如,如果阴影DSP子指令的ereg1指定SX1s,其如前面图8B的例子中所述的,被编程为向左搬移一的延迟的数据x’,因此6-1多路复用器1000a可挑选延迟的数据值SX11作为阴影值SHX0来被输出到阴影阶段。在图8b的例子中,在周期#3的阴影阶段计算下,这个对应于挑选X1,然后其可以被y0乘生成x1y0由SP0计算。替代的,如果ereg1被设置为SX1(表示在没有搬移的情况下选择延迟的数据x’),则控制逻辑700不使用搬移控制寄存器702并且通过搬移多路复用器控制信号914命令多路复用器1000a来挑选延迟的数据值SX10作为阴影值SHX0来被输出到阴影阶段。
应该理解,如前所述,搬移多路复用器控制信号可以控制多路复用器1000a来挑选值SX13、SX11、SX21、SX23之一来如搬移控制寄存器702所编程的向左或右将x’和x”延迟的数据搬移一。而且,在其他实施方案中,搬移控制寄存器702可以被编程来将延迟的数据向任意方向搬移任意步(例如,一、二、三...)。
用于其他SP 300B、C、D的DTAB 502B、C、D选择x’和x”延迟的数据供阴影阶段562使用的其他阴影多路复用器912B、C、D的结构,如图10b-10d中可以看到的,基本上与前面对于阴影多路复用器912A所描述的相同。因此,为简短仅对阴影多路复用器912B、C、D简单描述,对于本领域的技术人员应该很显然,多路复用器912A的前面的解释应用于阴影多路复用器912B、C、D的描述。
图10b说明用于SP1 300B的DTAB 502B的阴影多路复用器912B的结构。阴影多路复用器912B可以如搬移多路复用器控制信号914命令的(例如向左或右搬移一位或者不搬移)选择延迟的x值(x’和x”),以便选择阴影值SHX1。然后阴影值SHX1被通过数据总线551B输出到SP 300B的阴影阶段562。阴影多路复用器912B包括6-1多路复用器1000b用于如搬移多路复用器控制信号914命令的选择SX10、SX12、SX11、SX21、SX22、SX20之一。阴影多路复用器912B还包括多个三个多路复用器1002b、1004b、1006b分别用于选择SX10、SX12和SX11。阴影多路复用器912B还包括另外的多个三个多路复用器1008b、1010b、1012b,分别用于选择SX21、SX22、SX20。基于搬移多路复用器控制信号914,阴影多路复用器912B通过6-1多路复用器1000b为阴影值SHX1选择SX10、SX12、SX11、SX21、SX22、SX20之一来通过总线551B输出到SP1 300B的阴影阶段562。如前面所讨论的,控制逻辑700与搬移控制寄存器702一起,通过生成并且向6-1多路复用器1000b发送搬移多路复用器控制信号914来实现阴影DSP子指令的被请求的延迟的数据选择。
例如,如果阴影DSP子指令的ereg1指定SX1s,其如前面图8B的例子中所述的,被编程为向左搬移一的延迟的数据x’,因此6-1多路复用器1000b可挑选延迟的数据值SX12作为阴影值SHX1来被输出到阴影阶段。在图8b的例子中,在周期#3的阴影阶段计算下,这个对应于挑选x2,然后其可以被y1乘生成x2y1由SP1计算。替代的,如果ereg1被设置为SX1(表示在没有搬移的情况下选择延迟的数据x’),则控制逻辑700不使用搬移控制寄存器702并且通过搬移多路复用器控制信号914命令多路复用器1000b来挑选延迟的数据值SX11作为阴影值SHX1来被输出到阴影阶段。
图10c说明用于SP2 300C的DTAB 502C的阴影多路复用器912C的结构。阴影多路复用器912C可以如搬移多路复用器控制信号914命令的(例如向左或右搬移一位或者不搬移)选择延迟的x值(x’和x”),以便选择阴影值SHX2。然后阴影值SHX2被通过数据总线551C输出到SP 300C的阴影阶段562。阴影多路复用器912C包括6-1多路复用器1000c用于如搬移多路复用器控制信号914命令的选择SX11、SX13、SX12、SX22、SX23、SX21之一。阴影多路复用器912C还包括多个三个多路复用器1002c、1004c、1006c分别用于选择SX11、SX13和SX12。阴影多路复用器912C还包括另外的多个三个多路复用器1008c、1010c、1012c,分别用于选择SX22、SX23、SX21。基于搬移多路复用器控制信号914,阴影多路复用器912C通过6-1多路复用器1000c为阴影值SHX2选择SX11、SX13、SX12、SX22、SX23、SX21之一来通过总线551C输出到SP2 300C的阴影阶段562。如前面所讨论的,控制逻辑700与搬移控制寄存器702一起,通过生成并且向6-1多路复用器1000c发送搬移多路复用器控制信号914来实现阴影DSP子指令的被请求的延迟的数据选择。
例如,如果阴影DSP子指令的ereg1指定SX1s,其如前面图8B的例子中所述的,被编程为向左搬移一的延迟的数据x’,因此6-1多路复用器1000c可挑选延迟的数据值SX13作为阴影值SHX2来被输出到阴影阶段。在图8b的例子中,在周期#3的阴影阶段计算下,这个对应于挑选x3,然后其可以被y2乘生成x3y2由SP2计算。替代的,如果ereg1被设置为SX1(表示在没有搬移的情况下选择延迟的数据x’),则控制逻辑700不使用搬移控制寄存器702并且通过搬移多路复用器控制信号914命令多路复用器1000c来挑选延迟的数据值SX12作为阴影值SHX2来被输出到阴影阶段。
图10d说明用于SP3 300D的DTAB 502D的阴影多路复用器912D的结构。阴影多路复用器912D可以如搬移多路复用器控制信号914命令的(例如向左或右搬移一位或者不搬移)选择延迟的x值(x’和x”),以便选择阴影值SHX3。然后阴影值SHX3被通过数据总线551D输出到SP 300D的阴影阶段562。阴影多路复用器912D包括6-1多路复用器1000d用于如搬移多路复用器控制信号914命令的选择SX10、SX12、SX13、SX23、SX22、SX20之一。阴影多路复用器912D还包括多个三个多路复用器1002d、1004d、1006d分别用于选择SX10、SX12和SX13。阴影多路复用器912D还包括另外的多个三个多路复用器1008d、1010d、1012d,分别用于选择SX23、SX22、SX20。基于搬移多路复用器控制信号914,阴影多路复用器912D通过6-1多路复用器1000d为阴影值SHX3选择SX10、SX12、SX13、SX23、SX22、SX20之一来通过总线551D输出到SP3 300D的阴影阶段562。如前面所讨论的,控制逻辑700与搬移控制寄存器702一起,通过生成并且向6-1多路复用器1000d发送搬移多路复用器控制信号914来实现阴影DSP子指令的被请求的延迟的数据选择。
例如,如果阴影DSP子指令的ereg1指定SX1s,其如前面图8B的例子中所述的,被编程为向左搬移一的延迟的数据x’,因此6-1多路复用器1000d可挑选延迟的数据值SX20作为阴影值SHX3来被输出到阴影阶段。因此,在这个例子中,值来自x”延迟的数据。在图8b的例子中,在周期#3的阴影阶段计算下,这个对应于挑选x4,然后其可以被y3乘生成x4y3由SP3计算。替代的,如果ereg1被设置为SX1(表示在没有搬移的情况下选择延迟的数据x’),则控制逻辑700不使用搬移控制寄存器702并且通过搬移多路复用器控制信号914命令多路复用器1000d来挑选延迟的数据值SX13作为阴影值SHX3来被输出到阴影阶段。
如前所述,每个DTAB 502A、502B、502C和502D,分别有阴影多路复用器913A、913B、913C和913D,以便从延迟的数据寄存器选择y’和y”延迟的数据供SP的阴影阶段562使用。本领域的技术人员应该理解,用于选择y’和y”延迟的数据的这些阴影多路复用器的结构,与前述的参见图10a-10d的阴影多路复用器912A、912B、912C和912D的基本上相同,并且这些阴影多路复用器功能基本上以相同的方式使用y’和y”延迟的数据代替x’和x”延迟的数据。因此,为简短不再对其描述。
现在参见图11,框图说明用于配置信号处理单元(SP)300A-D的块的指令解码。包括原始DSP子指令和阴影DSP子指令的阴影DSP指令1104输入预解码框1102。预解码框1102被分别耦合到每个SP的每个数据打字机和对准器框(DTAB)502A、502B、502C和502D,以便提供主控制信号来选择源值(例如SX0、SX1、SX2、SX3等)用于根据原始DSP子指令输出到SP 300的原始阶段561。主控制信号还为源值和阴影值提供数据键入和格式化(例如SHX0、SHX1、SHX2、SHX3等)。
如图11所示,控制逻辑700和搬移控制寄存器702被耦合到阴影多路复用器(912A、913A、912B、913B等),以便向阴影多路复用器提供搬移多路复用器控制信号914和915。如前面所讨论的,搬移多路复用器控制信号导致阴影多路复用器从延迟的数据中选择阴影值来实现阴影DSP子指令的被请求的延迟的数据选择。
每个信号处理器300包括最终解码器1110A到1110N,以及多路复用器1110A到1110N。多路复用器1110A到1110N表示图5B中的多路复用器514A、516、520A、520B、522、520C和514B。预解码1102由RISC控制单元302和管道控制304提供。如阴影DSP指令1104的指令被提供给预解码1102。预解码1102向合适的最终解码器1110A到1110N提供关于为给定的指令如何选择多路复用器1120A到1120N的初步信号。
返回参见图5B,在单一40位扩展的阴影DSP指令的原始二元DSP子指令中,MAIN OP和SUB OP一般由乘法器M1 504A、压缩器506、加法器A1 510A和加法器A2 510B的框执行。结果被存储在累加寄存器AR 512里的寄存器之一中。
例如,如果原始二元DSP子指令要执行MULT和ADD,则MAIN OP的MULT运算由乘法器M1 504A执行并且SUB OP由加法器A1 510A执行。预解码1102和最终解码器1110A到1110N适当地选择各自的多路复用器1120A和1120N来选择将由乘法器M1 504A执行的MAINOP以及将由加法器A1 510A执行的SUB OP。在示例情况下,多路复用器514A选择来自数据打字机和对准器502的输入,以便使乘法器M1 504A执行MULT运算,多路复用器520A选择来自数据打字机和对准器502的输出用于加法器A1 510执行ADD运算,并且多路复用器522选择来自加法器510A的输出用于在累加器512中累加。MAIN OP和SUB OP可以被顺序(也就是在并行字上串行执行)地或者并行地(也就是在并行字上并行执行)执行。如果被顺序地执行,则MAIN OP的结果可以是SUB OP的操作数。
对于阴影DSP指令的阴影二元DSP子指令,MAIN OP和SUB OP一般由加法器A3 510C和乘法器M2 504B的框执行。结果被存储在累加寄存器AR 512里的寄存器之一中。
例如,如果阴影二元DSP子指令要执行MULT和ADD,则MAIN OP的MULT运算由乘法器M2 504B执行并且SUB OP由加法器A3 510C执行。预解码1102和最终解码器1110A到1110N适当地选择各自的多路复用器1120A和1120N来选择将由乘法器M2 504B执行的MAINOP以及将由加法器A3 510C执行的SUB OP。在示例情况下,多路复用器514B选择来自数据打字机和对准器502的输入(例如阴影值SHX)以便使乘法器M2 504B执行MULT运算,多路复用器520C选择来自累加器512的输出,用于加法器A3 510C执行ADD运算,并且多路复用器522选择来自乘法器M2 504B的输出用于在累加器512中累加。再次,在原始阶段,MAIN OP和SUB OP可以被顺序(也就是在并行字上串行执行)地或者并行地(也就是在并行字上并行执行)执行。如果被顺序地实现,则MAIN OP的结果可以是SUB OP的操作数。
最终解码器1110A到1110N有其自己的控制逻辑来为信号处理单元300的每个元素正确地安排多路复用器选择的时间以便匹配包括顺序或并行执行的MAIN OP和SUB OP如何被执行的管道执行。RISC控制单元302和管道控制304与最终解码器1110A到1110N一起通过用管道输送指令自身以及通过提供管道输送的控制信号来管道输送指令执行。这使得数据路径被每个周期的软件指令重新配置。
如普通技术人员将认识到的,本发明有许多优点。本发明的一个优点是ISA适合于提供紧凑硬件以便消耗低能量,可以被调整为更高计算要求的DSP算法结构。本发明的另一个优点是信号处理单元直接访问存储器中的操作数以便减少与加载和存储执行相关的处理开销。本发明的另一个优点是提供管道输送的指令执行,因此指令可以被在每个周期发布。本发明的另一个优点是信号处理单元可以按逐个周期地配置。本发明的另一个优点是其利用允许原始DSP子指令(基于当前数据)和阴影DSP子指令(基于延迟的本地存储数据)同时执行因此在每个单一指令周期执行四个运算的阴影DSP指令,有效地执行了DSP指令。
因此描述了本发明的优选实施方案。虽然在特定实施方案中描述了本发明,但是其可以在硬件、软件、固件或其组合中被实现并且在系统、子系统、其组件或子组件中被利用。当在软件中被实现时,本发明的元件基本上是执行必需的任务的代码段。程序或者代码段可以被存储在处理器可读介质中或者由在传输介质或通信链路上载波中具体化的计算机数据信号发送。“处理器可读介质”包括可存储或传送信息的任何介质。处理器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路等。计算机数据信号可包括可以在如电子网络信道、光纤、空气、电磁、RF链路等传输介质上传播的任何信号。代码段可以通过如互联网、内联网等的计算机网被下载。在任何情况下,本发明不应该被解释为由这些实施方案所限制,而应该根据所附权利要求被解释。
权利要求
1.用于执行数字信号处理指令的信号处理器,所述信号处理器包括至少一个信号处理单元包括基于当前数据执行单一数字信号处理指令的原始数字信号处理子指令的原始阶段;以及基于延迟的数据同时执行单一数字信号处理指令的阴影数字信号处理子指令的阴影阶段。
2.如权利要求1的用于执行数字信号处理指令的信号处理器,其中,原始数字信号处理子指令是具有原始主运算和原始子运算的二元指令。
3.如权利要求1的用于执行数字信号处理指令的信号处理器,其中,阴影数字信号处理子指令是具有阴影主运算和阴影子运算的二元指令。
4.如权利要求1的用于执行数字信号处理指令的信号处理器,其中,原始阶段包括第一个乘法器和第一个加法器;阴影阶段包括第二个乘法器和第二个加法器;第一个和第二个加法器以及第一个和第二个乘法器的每个在其各自的输入处有多路复用器,以便配置信号处理单元来分别同时执行主和阴影数字信号处理子指令;并且至少一个信号处理单元还包括累加器,其分别具有耦合到原始阶段的第一个乘法器或第一个加法器的寄存器,以便从那里向原始数字信号处理子指令提供操作数或者存储结果,以及耦合到阴影阶段的第二个乘法器或第二个加法器的寄存器,以便从那里向阴影数字信号处理子指令提供操作数或者存储结果,所述累加器具有耦合到缓存的寄存器以便存储由原始和阴影数字信号处理子指令分别生成的数字信号处理的输出。
5.如权利要求4的用于执行数字信号处理指令的信号处理器,所述信号处理单元还包括多个延迟的数据寄存器来存储延迟的数据供阴影阶段使用。
6.如权利要求5的用于执行数字信号处理指令的信号处理器,所述信号处理单元还包括耦合到延迟的数据寄存器以便选择延迟的数据供阴影阶段使用的阴影选择器;以及耦合到阴影选择器以便控制延迟的数据的选择的控制逻辑。
7.如权利要求4的用于执行数字信号处理指令的信号处理器,所述信号处理单元还包括多个信号处理单元,每个信号处理单元有多个延迟的数据寄存器来存储延迟的数据以及耦合到每个延迟的数据寄存器的阴影选择器;以及耦合到每个阴影选择器以便在从延迟的数据寄存器中选择延迟的数据供每个信号处理单元的阴影阶段使用中分别控制每个阴影选择器的控制逻辑。
8.如权利要求2的用于执行数字信号处理指令的信号处理器,其中,原始数字信号处理子指令的原始主运算是一组乘法、加法、与最小或最大值比较以及空操作之一。
9.如权利要求8的用于执行数字信号处理指令的信号处理器,其中,原始数字信号处理子指令的原始子运算是与第一个主运算不同的一组乘法、加法、与最小或最大值比较以及空操作之一。
10.如权利要求3的用于执行数字信号处理指令的信号处理器,其中,阴影数字信号处理子指令的阴影主运算是一组乘法、加法、与最小或最大值比较以及空操作之一。
11.如权利要求10的用于执行数字信号处理指令的信号处理器,其中,阴影数字信号处理子指令的阴影子运算是与第二个主运算不同的一组乘法、加法、与最小或最大值比较以及空操作之一。
12.如权利要求4的用于执行数字信号处理指令的信号处理器,所述信号处理器还包括精简指令集计算机(RISC)控制单元以及管道控制器以便将原始和阴影数字信号处理子指令预编码成多个初步指令执行信号;以及其中至少一个信号处理单元还包括耦合到多个多路复用器的多个最终解码器,第一个和第二个加法器以及第一个和第二个乘法器的每个有来自多个多路复用器的输入多路复用器以便响应耦合到其中的那些多个最终解码器的选择来接收操作数。
13.如权利要求12的用于执行数字信号处理指令的信号处理器,其中,RISC控制单元包括三个加法器、存储器地址生成器、乘法器以及桶形移位器以便将原始和阴影数字信号处理子指令预编码成多个初步的指令执行信号。
14.如权利要求13的用于执行数字信号处理指令的信号处理器,所述信号处理器还包括耦合到RISC控制单元以及至少一个信号处理单元用于存储操作数以及原始和阴影数字信号处理子指令执行的结果的数据存储器;以及耦合到管道控制的程序存储器,所述程序存储器存储原始和阴影数字信号处理子指令用于由至少一个数字信号处理单元执行。
15.如权利要求1的用于执行数字信号处理指令的信号处理器,所述信号处理器还包括与外部主机接口的主机接口;向外部存储器读和写数据的外部存储器接口;控制专用信号处理器的运算的定时的时钟和锁相环;耦合到缓存来向其中发以及从其中收数据的存储器移动引擎;并且其中至少一个信号处理单元还包括,将操作数的位排序用于执行的数据打字机和对准器,将操作数加在一起的第三个加法器,以及将超过两个操作数压缩成一对操作数的压缩器。
16.在信号处理器中执行数字信号处理(DSP)指令的方法,所述方法包括执行具有原始DSP子指令以及阴影DSP子指令的单一DSP指令;存储数据用做延迟的数据;以及生成选择信号来选择DSP功能块的多路复用器的输入以便基于当前数据来在信号处理单元的原始阶段里执行原始DSP子指令并且基于延迟的数据来在信号处理单元的阴影阶段里同时执行阴影DSP子指令。
17.如权利要求16的执行数字信号处理(DSP)指令的方法还包括选择延迟的数据供阴影阶段使用;以及基于阴影DSP子指令来控制延迟的数据的选择。
18.如权利要求16的执行数字信号处理(DSP)指令的方法,其中,信号处理器包括多个信号处理单元,每个信号处理单元具有多个延迟的数据寄存器来存储延迟的数据以及耦合到每个延迟的数据寄存器的阴影选择器,还包括从信号处理单元的延迟的数据寄存器中选择延迟的数据供信号处理单元的阴影阶段使用;以及基于阴影DSP子指令来控制延迟的数据的选择用于供信号处理单元的阴影阶段使用。
19.如权利要求16的执行数字信号处理(DSP)指令的方法,其中,原始数字信号处理子指令是具有原始主运算和原始子运算的二元指令。
20.如权利要求16的执行数字信号处理(DSP)指令的方法,其中,阴影数字信号处理子指令是具有阴影主运算和阴影子运算的二元指令。
21.如权利要求19的执行数字信号处理(DSP)指令的方法,其中,原始主运算和原始子运算是从一组乘法、加法、与最小或最大值比较以及空操作中选出的两个不同的运算。
22.如权利要求20的执行数字信号处理(DSP)指令的方法,其中,阴影主运算和阴影子运算是从一组乘法、加法、与最小或最大值比较以及空操作中选出的两个不同的运算。
23.如权利要求16的执行数字信号处理(DSP)指令的方法,其中,原始阶段包括第一个乘法器和第一个加法器的DSP功能块来执行加法、减法以及与最小值或最大值的比较,并且阴影阶段包括第二个乘法器和第二个加法器的DSP功能块来执行加法、减法以及与最小值或最大值的比较。
24.用于在数字信号处理器(DSP)里的运算执行的指令集结构(ISA),所述指令集结构包括具有两个子指令,原始DSP子指令和阴影DSP子指令的单一DSP指令;以及加速所述类型的数字信号处理器里的计算的单一DSP指令,其中D=[(A运算一B)运算二C]其中运算一是主运算并且运算二是子运算,并且主运算和子运算是单独的信号处理运算。
25.如权利要求24的用于数字信号处理器里运算的执行的指令集结构(ISA),其中,原始DSP子指令是具有原始主运算和原始子运算来执行两个运算的二元指令。
26.如权利要求25的用于数字信号处理器里运算的执行的指令集结构(ISA),其中,原始DSP子指令的两个运算是DSP运算。
27.如权利要求26的用于数字信号处理器里运算的执行的指令集结构(ISA),其中,原始DSP子指令的DSP运算是一组乘法、加法、极值以及空操作。
28.如权利要求24的用于数字信号处理器里运算的执行的指令集结构(ISA),其中,阴影DSP子指令是具有阴影主运算和阴影子运算来执行两个运算的二元指令。
29.如权利要求28的用于数字信号处理器里运算的执行的指令集结构(ISA),其中,阴影DSP子指令的两个运算是DSP运算。
30.如权利要求29的用于数字信号处理器里运算的执行的指令集结构(ISA),其中,阴影DSP子指令的DSP运算是一组乘法、加法、极值以及空操作。
31.如权利要求24的用于数字信号处理器里运算的执行的指令集结构(ISA),其中,原始DSP子指令是具有原始主运算和原始子运算来执行两个运算的二元指令,并且,阴影DSP子指令是具有阴影主运算和阴影子运算来执行两个运算的二元指令,因此单一DSP指令在一个单一指令中执行四个运算。
32.如权利要求24的用于数字信号处理器里运算的执行的指令集结构(ISA),其中,单一DSP指令是40位指令。
33.用于在数字信号处理器中执行的数字信号处理(DSP)指令,所述DSP指令包括包括要在一个处理器周期中被执行的子指令的单一DSP指令;原始DSP子指令,所述原始DSP子指令是具有原始主运算和原始子运算来执行两个DSP运算的二元指令;以及阴影DSP子指令是具有阴影主运算和阴影子运算来执行两个DSP运算的二元指令;从而单一DSP指令在一个处理器周期中执行四个DSP运算。
34.如权利要求33的用于在数字信号处理器中执行的数字信号处理(DSP)指令,其中,所述DSP运算是一组乘法、加法、极值以及空操作。
全文摘要
单一DSP指令包括一对子指令原始DSP子指令和阴影DSP子指令。两个子指令是在一个周期中执行两个运算的二元DSP指令。DSP运算包括乘法指令(MULT)、加法指令(ADD)、最小化/最大化指令(MIN/MAX)以及否定运算(NOP)。每个信号处理单元包括基于当前数据来执行原始子指令的原始阶段以及基于在信号处理单元的寄存器里存储的延迟的数据来同时执行阴影DSP子指令的阴影阶段。控制逻辑被用于控制阴影选择器来选择延迟的数据。系统通过用单一DSP指令同时执行基于当前数据的原始DSP子指令以及基于延迟的数据的阴影DSP子指令,因此在每个单一指令执行四个运算,来执行DSP指令。
文档编号G06F9/318GK1471666SQ01818138
公开日2004年1月28日 申请日期2001年8月16日 优先权日2000年8月30日
发明者K·加纳帕蒂, K 加纳帕蒂, R·卡纳帕蒂皮莱, 膳恋倨だ 申请人:英特尔公司