CN1287276C - 用于环缓冲数字信号处理指令的方法和装置 - Google Patents

用于环缓冲数字信号处理指令的方法和装置 Download PDF

Info

Publication number
CN1287276C
CN1287276C CNB01804350XA CN01804350A CN1287276C CN 1287276 C CN1287276 C CN 1287276C CN B01804350X A CNB01804350X A CN B01804350XA CN 01804350 A CN01804350 A CN 01804350A CN 1287276 C CN1287276 C CN 1287276C
Authority
CN
China
Prior art keywords
ring
instruction
register
impact damper
signal processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB01804350XA
Other languages
English (en)
Other versions
CN1425153A (zh
Inventor
库马尔·加纳帕蒂
吕邦·卡纳帕蒂皮莱
肯尼思·马利希
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1425153A publication Critical patent/CN1425153A/zh
Application granted granted Critical
Publication of CN1287276C publication Critical patent/CN1287276C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

一种环缓冲器,用于存储和保留在环内执行的指令,用于数字信号处理。控制逻辑检测环的开始和结尾,以发信号给环缓冲器控制逻辑,以便使用存储在该环缓冲器内的指令,以循环的方式开始指令执行。在完成所需要数目的环后,在环缓冲器中的指令被用新指令覆写,直到下一个环要被处理。环缓冲器通过避免不必要地从存储器提取指令而减少了功耗。

Description

用于环缓冲数字信号处理指令的方法和装置
发明领域
本发明一般地涉及数字信号处理器件。本发明尤其涉及数字信号处理器内的指令执行。
背景技术
单芯片数字信号处理器件(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要提供诸如语音压缩、语音解压缩和多通道的回声抵消的语音处理的情况,尤其是这样。近来,处理速度已经变得更加重要,因为人们希望发送以分组化形式叠加有数据的语音,用于在分组化的网络上的通信。分组化的语音信号的处理延迟易于导致在接收端的信号质量的降低。
人们希望提供语音和数据信号的改进处理,以提高在分组化的网络上的语音和数据通信的质量。人们希望改进实现信号处理功能时使用计算资源的效率。
发明内容
本发明目的在于减少指令提取周期的数目并通过避免对存储器的频繁提取来加速指令执行。
环缓冲器被提供用于存储和保留在环内执行的指令,用于数字信号处理。控制逻辑检测环的开始和结尾,以发信号给环缓冲器控制逻辑,以便使用存储在该环缓冲器内的指令,以循环的方式开始指令执行。在完成所需要数目的环后,在环缓冲器中的指令被用新指令覆写,直到下一个环要被处理。
根据本发明的数字信号处理器在一个环中处理数字信号,该信号处理器包括:
程序存储器,用于存储在环内的数字信号处理指令;和
核心处理器,包括
至少一个信号处理单元,用于执行在所述环内的所述数字信号处理指令,和
管道控制器,连接到所述程序存储器和所述至少一个信号处理单元,该管道控制器包括一个环缓冲器以控制在所述环内的所述数字信号处理指令的执行,所述管道控制器从所述程序存储器读取所述数字信号处理指令,将其存储在所述环缓冲器中,所述至少一个信号处理单元在所述环的执行过程中执行来自所述环缓冲器的在所述环内的所述数字信号处理指令,而不再次从所述程序存储器读取它,
其中,所述环缓冲器包括串联耦合的多个寄存器以存储数字信号处理指令,所述多个寄存器包括第一寄存器和最后寄存器,并且其中,所述环内的数字信号处理指令的数量选择所述串联寄存器中具有选择性地耦合到所述第一寄存器的输入端的输出端的最后寄存器。
另外,本发明提供了一种增加在一个环内指令执行效率的方法,该方法包括:
从存储器提取在一个环内的一个或多个指令;
将在所述环内的所述一个或多个指令存储到一个环缓冲器中;和
循环地重复存储在所述环缓冲器内的在所述环内的所述一个或多个指令的执行,直到该环要被退出;
其中,所述环缓冲器包括串联耦合的多个寄存器以存储所述一个或多个数字信号处理指令,所述多个寄存器包括第一寄存器和最后寄存器,并且其中,当存在多于一个的数字信号处理指令时,所述环内的数字信号处理指令的数量选择所述串联寄存器中具有选择性地耦合到所述第一寄存器的输入端的输出端的最后寄存器。
另外,本发明提供了一种环缓冲器,包括:
多个寄存器,串联连接在一起,以存储指令,第一个寄存器具有一个输入端和一个输出端,所述第一个寄存器的输出端连接到在所述串中的下一个寄存器的输入端,最后一个寄存器的输入端连接到所述串中前一个寄存器的输出端,在其输出端上提供所存储的指令,在第一个和最后一个寄存器之间的寄存器的输入端连接到在所述串中前一个寄存器,其输出端连接到在所述串中下一个寄存器,而且
响应于存储一个环的指令的所述多个寄存器,在所述串中的所述最后一个寄存器的输出选择性地连接到在所述串中的第一个寄存器的输入端。
另外,本发明提供了另一种环缓冲器,包括:
多个寄存器,以存储在一个环内的指令;
第一指示器,连接到所述多个寄存器的每一个,以选择性地使能一个指令装载到所述多个寄存器之一;和
第二指示器,选择性地从所述多个寄存器读取一个指令,作为用于在所述环内执行的下一个指令。
这里已经提供了简要的概述,因而本发明的特征可以被快速地理解。通过参考以下对其优选实施例的详细描述,结合权利要求和附图,可以获得对本发明的更全面的理解。
附图说明
图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是一个功能性的方框图,示出了信号处理单元的指令提取和环缓冲。
图8A是一个实施例的环缓冲器及其控制电路的详细方框图。
图8B是优选实施例的环缓冲器及其控制电路的详细方框图。
附图中类似的标号和标记表示提供类似功能的元件。标号后的字母表示具有该标号的元件的一个例子。
具体实施方式
在下面对本发明的详细描述中阐述了很多具体细节,以便于充分理解本发明。但是,没有这些具体细节也可以实施本发明,对于本领域的技术人员来说是很明显的。在另外一些例子里,没有对公知的方法、过程、部件和电路进行详细的描述,以避免喧宾夺主、淡化了本发明的主要内容。
在通信系统的网关内设置了具有本发明的环缓冲的多个针对应用程序的信号处理器(ASSP),以提高分组化网络上语音和数据通信的质量。每个ASSP包括一个串行接口、一个缓冲存储器和四个核心处理器,以便同时处理多个通道的语音或数据。每个核心处理器最好包括一个精简指令集计算机(RISC)处理器和四个信号处理单元(SP)。每个SP包括多个算术块,以同时处理多个语音和数据通信信号采样以便在IP、ATM、帧中继或其他分组化网络上通信。四个信号处理单元可以并行地执行数字信号处理算法。每个ASSP是灵活的,并可以被编程来实现很多网络功能或数据/语音处理功能,包括电信系统(如CODEC)、特别是分组化电信网络中的语音和数据压缩/解压缩,这些功能可以简单地通过改变控制ASSP执行的命令的软件程序来实现。
环缓冲器被提供用于存储和保留在环内执行的指令,用于数字信号处理。控制逻辑检测环的开始和结尾,以发信号给环缓冲器控制逻辑,以便使用存储在该环缓冲器内的指令,以循环的方式开始指令执行。在完成所需要数目的环后,在环缓冲器中的指令被用新指令覆写,直到下一个环要被处理。
现参见图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,在时分复用中每个时隙表示一个通道并且一个DS0输入至网关104B。在网关104A、104B和104C中的每一个处,输入信号被分组化以便通过网络101传输。网关104A、104B和104C从网络101接收到的信号被解分组和译码以便分配到适当的目的地。
现在参考图1B,示出了网关104的网络接口卡(NIC)130。NIC130包括一个或多个针对应用程序的信号处理器(ASSP)150A到150N。在网关内的ASSP的数目是可扩展的,以便处理另外的通道。NIC130的线路接口装置131提供对连接至网关的各种装置、包括网络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 control logic)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包括四个信号处理单元SP0 300A、SP1 300B、SP2 300C和SP3300D。核心处理器200还包括一个精简指令集计算机(RISC)控制单元302和一个管道控制单元304。信号处理单元300A-300D对数据执行信号处理任务,而RISC控制单元302和管道控制单元304执行与SP300A-300D完成的信号处理功能相关的控制任务。RISC控制单元302提供的控制与SP300A-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的方框图,它表示SP300A-300D的一个例子。信号处理单元300中的每一个包括一个数据分类器和校准器(data typer and aligner)502、一个第一乘法器M1504A、一个压缩器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具有总线以将其输出连接到乘法器M2 504B、加法器A3 510C和数据分类器和校准器502。加法器A3 510C具有总线以将其输出连接到乘法器M2 504B和累加寄存器512。乘法器M2 504B具有总线以将其输出连接到加法器A3 510C和累加寄存器AR512的输入。
指令集结构
ASSP150的指令集结构被设计成与包括音频和话音处理例如压缩/解压缩和回声抵消的数字信号处理应用程序相适应。实质上,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指令,或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被完全地判定(predicate),规定了执行预测。在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,其中X:0-7)的内容被用于获得有效的存储器地址,并将指示器字段向后修正两个可能的偏移之一,其在所指明的rX寄存器之一中被指明。如果位5被设定为0,则位4确定哪个寄存器组具有所希望的运算数的内容。如果位4被设定为0,则剩余的说明位3:0控制到寄存器413内的寄存器或到信号处理单元300内的寄存器的访问。
DSP指令
有四种主要类别的DSP指令用于ASSP150,它们是:
1)乘(MULT):控制连接到存储器的数据总线的主乘法器的执行。
控制:取整,乘法的符号
在通过地址寄存器中的类型字段指明的矢量数据上运算
第二运算:以矢量或标量方式的加、减、最小、最大
2)加(ADD):控制主加法器的执行。
控制:输入的绝对值控制,限制结果
第二运算:加、加-减、乘、MAC、最小、最大
3)取端值(MIN/MAX):控制主加法器的执行。
控制:输入的绝对值控制,用T寄存器的全局或运行最大/最小,TR寄存器记录控制
第二运算:加、减、乘、MAC、最小、最大
4)杂项:类型匹配和排列运算
ASSP150可以以矢量或标量方式执行这些DSP算术运算。在标量的执行方式中,对矢量结果执行缩减(reduction)或组合(combination)运算以产生标量结果。在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指令被用于MAINOP或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”指正被选择为SUB OP的矢量加、矢量减、矢量最大、标量加、标量减或标量最大。下一个字段“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,图7的功能性方框图示出了信号处理单元300的指令提取和环缓冲。暂时参考一下图3,管道控制器304连接到RISC控制单元302和程序存储器204以提供在核心处理器200中的信号处理单元300的控制。现在参考图7,每个核心处理器200的管道控制器304包括F0提取控制级700、F1提取控制级701和D0预解码级702,连接如图7所示。与RISC控制单元302相结合的F0提取控制级700产生地址,以便从程序存储器204提取新指令。F1提取控制级701接收新提取的指令。F1提取控制级701包括环缓冲器710,以便存储和保留用于在环内执行的指令,F1提取控制级701还包括指令寄存711,连接到环缓冲器710的指令输出714,以便存储下一个指令,用于由D0预解码级702预解码。环缓冲器710的输出714被存储在指令寄存器711中,以产生输出714’,其被连接到D0预解码级702。当在后面的管道级(未示出)中的指令暂停使得整个执行管道暂停一个或多个时钟周期时,在环缓冲器710中的寄存器还用于新指令的临时存储。暂时参考一下图6A,环缓冲器710存储和保留在环中执行的指令,如外环601的指令604和606,或内环602的指令605。D0预解码级702从F1提取控制级701接收指令,将它们预解码为初步信号703,用于连接到合适的最终解码器。最终解码器(未示出)依据初步信号703为给定的指令适当地选择每个信号处理单元的复用器,使信号处理器300的数据路径由每个循环中的软件指令来重构。
现在参考图7,在管道控制器304中的每个块具有控制逻辑以控制指令提取和环缓冲,用于核心处理器200中的信号处理单元300。RISC控制单元302发信号给F0提取控制级700以提取新指令。F0提取控制级700在连接到程序存储器204的地址总线712上产生一个地址,以便提供新指令的存储器位置的地址。该指令被从程序存储器204发信号到数据总线713上,并被连接到F1提取控制级701的环缓冲器710。环缓冲器710暂时存储该指令,除非碰到可以被完全存储在其中的环。
环缓冲器710是先进先出(FIFO)类型的缓冲器。即,存储在该先进先出缓冲器中的第一个指令代表被执行的第一个指令输出。如果没有正在执行一个环,则该指令从环缓冲器710脱出,被下一个指令所覆写。如果环缓冲器710正运行在一个环中,则指令在环缓冲器710中循环,从该环内的第一个指令(“第一个环指令”)到该环内的最后一个指令(“最后一个环指令”)。环缓冲器710的深度N与信号处理单元的管道结构和指令集结构的设计相协调。环缓冲器710越深,N的值越大,则管道和指令集的结构越复杂。在优选实施例中,环缓冲器710深度N为4,以保留一个环的四个二元DSP指令。四个二元DSP指令等价于现有技术的多达八个DSP指令,其满足了大多数DSP程序环的要求,同时保持了管道结构和指令集结构的合理复杂度。
环缓冲710不同于与微处理器相关的高速缓冲存储器。环缓冲器存储程序环的指令(“环指令”),而高速缓冲存储器则通常存储一定量的程序指令,而与它们的功能或重复特性无关。为了完成环指令的存储,当从程序存储204提取指令时,它们被存储在环缓冲器中并被执行。环缓冲器710继续以FIFO方式存储从程序存储器204读出的指令,直到接收环缓冲器循环(LBC)信号715,其表明一个完整环的指令已经被执行并被存储在环缓冲器710中。在环缓冲器710中存储一个完整环的指令后,不再需要再次提取同样的指令以重复指令。在接收LBC信号715后,环缓冲器不再从程序存储器204提取与环内同样的指令,而是被用于以循环的方式重复地输出每个存储在其中的指令,以便重复执行在环的序列内的指令。环缓冲器循环信号LBC 715由D0预解码级702内的控制逻辑产生。环缓冲器循环信号LBC715连接到F1提取控制级701和F0提取控制级700。LBC715发信号到F0提取控制级700,通知在执行该环时不需要提取额外的指令。响应于此,F0提取控制级700保持空闲,这样通过避免额外指令的提取节约了功率。响应于环缓冲器循环信号715,在F1提取控制级701内的控制逻辑使环缓冲器710循环其指令输出714,提供给D0预解码级702。在该环完成后,环缓冲器循环信号715被解除(deassert),环缓冲器返回处理标准指令,直到另一个环要被处理。
为了产生环缓冲器循环信号715,开始该环的第一个环指令需要被查明,指令的总数或最后一个环指令需要被确定。另外,在环中的指令的数目,即环的大小不能超过环缓冲器710的深度。为了废能环缓冲器循环信号715,该环要被重复的次数需要被确定。
从建立一个环的环控制指令,可以容易地确定开始该环的第一个环指令。环控制指令可以建立单环或一个或多个嵌套环。在优选实施例中,为了简单起见,使用单嵌套环。对于单环,环控制指令是图6F的LOOP和LOOPi,对于嵌套环或双环,环控制指令是图6G的DLOOP和DLOOPi。通过指向保留适当值的寄存器,LOOPi和DLOOPi指令间接地提供环值。环控制指令指示在所跟随的指令中,该环的第一个指令在多少指令以后开始。在本发明中,跟随的指令的数目是三或更多。环控制指令另外提供环的大小(即,指令的数目)。对于嵌套环,环控制指令(DLOOP或DLOOPi)指示在所跟随的指令中,嵌套环在多少指令以后开始。如果整个嵌套环不能装入环缓冲器,则只有可以装入的内环被存储在环缓冲器中,同时它们在被执行。尽管嵌套可以是N个环,但在优选实施例中嵌套是2。在收到环控制指令后,环状态寄存器被建立。环状态寄存器包括环活性标志、外环大小、内环大小、外环计数器值和内环计数器值。控制逻辑将来自环状态寄存器的环大小的值与环缓冲器710的深度N相比较。如果环的大小小于或等于深度N,当环的最后一个指令已经被执行了第一次(即,第一次通过环),环缓冲器循环信号715可以被施加(assert),从而其后从环缓冲器710读取指令,并由预解码器702解码。环控制指令也包括关于环要被重复的次数的信息。预解码器702的控制逻辑包括一个计数器,以计数指令环已经被执行的次数。在计数值到达代表环要被重复的次数的数后,环缓冲器循环信号715被解除(deassert),从而再次从程序存储器204提取指令,用于执行。
现在参考图8A,图示了第一个实施例的环缓冲器710A及其控制的方框图。环缓冲器710A包括复用器800、一系列N个寄存器,寄存器802A到802N和复用器804。复用器804选择是N个寄存器802A到802N的寄存器输出之一还是在数据总线713上从程序存储器204提取的指令(绕过N个寄存器802A到802N)被选择为环缓冲器710的输出。环指令的数目控制由复用器804进行的选择。如果没有环指令,则复用器804选择绕过寄存器802A到802N。如果存储了一个环指令,则寄存器802A的输出被复用器804选择用于输出。如果在环缓冲器710中存储了两个环指令,则寄存器802B的输出被复用器804选择用于输出。如果在环缓冲器710中存储了N个环指令,则在环缓冲器710内的第N个寄存器的输出,即寄存器802N的输出被复用器804选择用于输出。由逻辑818产生的环缓冲器循环(LBC)信号715控制复用器800以选择环缓冲器将以循环的方式来循环其指令,还是从程序存储器204提取指令以输入到环缓冲器710。时钟被连接到每个寄存器802A到802N,以便使存储在环缓冲器710中的指令通过由在环缓冲器710中的复用器804和800选择的环循环。通过以循环的方式循环这些指令,环缓冲器效仿了通常发生在程序存储器中的环指令的提取过程。应该注意,每个块的时钟信号是条件性时钟信号,其在包括中断的一些事件发生的过程中可能被冻结(freeze)。
为了产生环缓冲器710的控制信号,管道控制304包括环大小寄存器810、环计数器812、比较器814-815和控制逻辑818。环大小寄存器810存储在一个环内的指令的数目,以控制复用器804和确定是否环缓冲器710深到足够存储在给定环内的整个环指令集。比较器814将表示在一个环内的指令的数目的环大小寄存器810的输出与环缓冲器深度N相比较。如果环指令的数目超过环缓冲器深度N,则环缓冲器710不能被用于循环该环的指令。环计数器812通过产生环计数输出,确定使用存储在环缓冲器中的环指令已经执行了多少环。比较器815将来自环计数器812的环计数输出与预定的环总数相比较,以确定是否要执行最后一个环。
环控制还包括一个选项,用于基于判定寄存器的值而提前退出环(即,在环计数已经被耗尽之前)。判定寄存器通常由该环内的算术或逻辑测试指令在每次通过该环时更新。判定寄存器(未示出)借助于信号线(即提前退出816)连接到比较器815。当该测试在判定寄存器中设定FALSE(假)条件,在提前退出816上用信号通知从该环提前退出时,比较器815覆盖在环计数和环的总数之间的正常比较,并发信号到逻辑818,告知要执行最后一个环。
在完成最后一个环的执行后,环缓冲器循环信号715被废能,以便允许新提取的指令被存储在环缓冲器710内。控制逻辑818接收比较器814和815的输出,以便适当地产生(施加或解除)环缓冲器循环信号LBC715。
现在参考图8B,图8图示了优选实施例的环缓冲器及其控制电路的详细方框图。环缓冲器710B包括一系列N个寄存器,即寄存器803A到803N和复用器804。环缓冲器710B优于环缓冲器710A的方面在于,寄存器803A-803N不需要被提供时钟以循环一个环的指令,从而节约了额外的功率。与图8A中所示的环缓冲器710A及其控制相比,寄存器803A-803N取代了寄存器802A-802N,不同地是,复用器804由读选择指示器832和比较器814的输出来控制,写选择指示器830选择性地使能寄存器803A-803N的时钟。每个块的时钟信号是条件性时钟信号,其在包括中断的一些事件发生的过程中可能被冻结。
写选择指示器830,实质上是一个灵活的编码器,编码所接收的程序提取地址为一个使能信号,以选择性地将在一个环的一个指令,在其第一个循环中的执行过程中装载上寄存器803A-803N之一。程序提取地址实质上是在时间上延迟的程序计数器的较低位。在每个新程序提取地址被收到时,写选择指示器830适当地使能寄存器803A-803N之一,以便它们将在一个环中被执行。一旦一个环的所有指令被存储在一个或多个寄存器803A-803N中时,写选择指示器830废能寄存器803A-803N的所有使能输入,直到下一个环准备被装载到环缓冲器710B中。
读选择指示器832,实质上是一个跟踪提取地址的可装载计数器,在环的第一个循环完成时被初始装载一个开始环地址(外环或内环开始地址),并递增以模仿在环中的程序计数器功能。
复用器804响应于读选择指示器832的输出,选择寄存器803A-803N之一的输出作为其输出,即要在下一个循环中执行的指令。每次碰到嵌套环的结尾且不准备退出该嵌套环时,通过将读选择指示器再装载嵌套环的开始地址,可以容易地处理嵌套环(即,内环)。
在环缓冲器的初始化过程中,当寄存器803A-803N被装载指令时,读选择指示器832控制复用器804,从而来自程序存储器的指令(“数据”)通过环缓冲器710B流出到指令输出端714。环控制指令的出现,将环大小寄存器810装载上在环内的指令的数目。比较器814将在环内的指令的数目与环缓冲器710B的深度N相比较。如果环内的指令的数目超过环缓冲器的深度N,使能环缓冲器信号不被施加,从而复用器804选择通过输入端的流,从而在该环的所有循环中,继续让这些指令流过环缓冲器710B。如果来自内部和外环的指令的总数目不能适应于环缓冲器710B的深度,则内环可以仍将其指令装入环缓冲器710B,从而避免在该通过内环的循环过程中提取过程以节约功率。
在完成在环缓冲器710B的深度内装载指令后或到达外环结尾且该环需要返回(loop back)时,读选择指示器832被环返回信号通过复用器831装载上外环开始地址和环选择信号。如果内环被嵌套在外环内,且内环要返回时,当到达内环的结尾时,复用器831选择内环开始地址,由环选择信号装载到读选择指示器832。
至此,描述了本发明的优选实施例。正如本领域的技术人员将认识到的,本发明有很多优点。本发明的一个优点是当在环内执行指令时,功率消耗被减少。
尽管已经以特定实施例描述了本发明,它也可以以硬件、软件、固件或它们的组合来实现,在系统、子系统、部件或其子部件中被采用。当以软件实现时,本发明的要素实质上是执行必要任务的代码段。程序或代码段可以被存储在处理器可读的介质中,或由载波中的计算机数据信号通过传输介质或通信链路传输。“处理器可读介质”可以包括任何可以存储或传送信息的介质。处理器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦写ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路等。计算机数据信号可以包括能通过传输介质例如电子网络通道、光纤、空气、电磁波、RF链路等传播的任何信号。代码段可以经诸如互联网、内部网等的计算机网络而下载。在任何情况下,本发明不应该被解释为由这些实施例所限制,而是根据下面的权利要求来解释。

Claims (31)

1.一种信号处理器,在一个环中处理数字信号,该信号处理器包括:
程序存储器,用于存储在环内的数字信号处理指令;和
核心处理器,包括
至少一个信号处理单元,用于执行在所述环内的所述数字信号处理指令,和
管道控制器,连接到所述程序存储器和所述至少一个信号处理单元,该管道控制器包括一个环缓冲器以控制在所述环内的所述数字信号处理指令的执行,所述管道控制器从所述程序存储器读取所述数字信号处理指令,将其存储在所述环缓冲器中,所述至少一个信号处理单元在所述环的执行过程中执行来自所述环缓冲器的在所述环内的所述数字信号处理指令,而不再次从所述程序存储器读取它,
其中,所述环缓冲器包括串联耦合的多个寄存器以存储数字信号处理指令,所述多个寄存器包括第一寄存器和最后寄存器,并且其中,所述环内的数字信号处理指令的数量选择所述串联寄存器中具有选择性地耦合到所述第一寄存器的输入端的输出端的最后寄存器。
2.如权利要求1所述的信号处理器,其中
所述管道控制器预解码在所述环内的所述数字信号处理指令为多个初步指令执行信号以连接到所述至少一个信号处理单元以控制在所述环内的所述数字信号处理指令的执行。
3.如权利要求1所述的信号处理器,还包括
一个精简指令集计算机(RISC)控制单元和一个数据存储器,所述RISC控制单元用于控制在所述至少一个信号处理单元和所述数据存储器之间的运算数和结果的流动。
4.如权利要求1所述的信号处理器,其中
所述管道控制器包括
第一提取控制级,用于产生地址以连接到所述程序存储器,以便首先读取在所述环内的所述数字信号处理指令;
第二提取控制级,包括所述环缓冲器,用于在所述第一提取控制级从所述程序存储器读取所述数字信号处理指令后,接收所述数字信号处理指令;和
控制逻辑,用于产生连接到所述第一和第二提取控制级的环信号,以便不继续从所述程序存储器读取指令,执行存储在所述环缓冲器内的在所述环内的所述数字信号处理指令。
5.如权利要求4所述的信号处理器,其中
所述控制逻辑响应于检测环控制指令,产生所述环信号。
6.如权利要求5所述的信号处理器,其中
在所述环内的所述数字信号处理指令包括在程序环内的多个数字信号处理指令,而且,还响应于确定是否所述多个数字信号处理指令可以被存储在所述环缓冲器的深度内,来由所述控制逻辑产生所述环信号。
7.如权利要求6所述的信号处理器,其中所述控制逻辑还包括
环计数器,用于计数已经执行了所述数字信号处理指令的环的数目;和
比较器,用于比较所述计数器的计数值和环循环值,以确定是否该环已经完成以关断所述环信号。
8.如权利要求6所述的信号处理器,其中所述控制逻辑还包括
环大小寄存器,用于存储在环内的指令的数目;和
比较器,用于比较所述环缓冲器的深度和在环内的指令的数目,以确定是否在该环内的指令可以被存储在所述环缓冲器中,以产生所述环信号。
9.一种增加在一个环内指令执行效率的方法,该方法包括:
从存储器提取在一个环内的一个或多个指令;
将在所述环内的所述一个或多个指令存储到一个环缓冲器中;和
循环地重复存储在所述环缓冲器内的在所述环内的所述一个或多个指令的执行,直到该环要被退出;
其中,所述环缓冲器包括串联耦合的多个寄存器以存储所述一个或多个数字信号处理指令,所述多个寄存器包括第一寄存器和最后寄存器,并且其中,当存在多于一个的数字信号处理指令时,所述环内的数字信号处理指令的数量选择所述串联寄存器中具有选择性地耦合到所述第一寄存器的输入端的输出端的最后寄存器。
10.如权利要求9所述的方法,其中循环地重复存储在所述环缓冲器内的在所述环内的所述一个或多个指令的执行是响应于将在所述环内的所述一个或多个指令存储到所述环缓冲器内的能力的。
11.如权利要求10所述的方法,其中所述环缓冲器的深度没有被在所述环内的所述一个或多个指令的数目超过。
12.如权利要求9所述的方法,其中循环地重复存储在所述环缓冲器内的在所述环内的所述一个或多个指令的执行是响应于一个环计数的,该环计数指示要被重复的环的次数。
13.如权利要求9所述的方法,其中循环地重复存储在所述环缓冲器内的在所述环内的所述一个或多个指令的执行是响应于一个退出信号,该退出信号由存储在所述环缓冲器内的在所述环内的所述一个或多个指令中的至少一个指令的执行来产生。
14.如权利要求9所述的方法,其中在所述环内的所述一个或多个指令是数字信号处理指令。
15.如权利要求9所述的方法,其中在所述环内的所述一个或多个指令包括二元数字信号处理指令。
16.如权利要求9所述的方法,还包括:
响应于在指令管道内的一个暂停,从所述存储器提取另外一个或多个指令,并将来自所述存储器的所述另外一个或多个指令存储在所述环缓冲器中。
17.一种环缓冲器,包括:
多个寄存器,串联连接在一起,以存储指令,第一个寄存器具有一个输入端和一个输出端,所述第一个寄存器的输出端连接到在所述串中的下一个寄存器的输入端,最后一个寄存器的输入端连接到所述串中前一个寄存器的输出端,在其输出端上提供所存储的指令,在第一个和最后一个寄存器之间的寄存器的输入端连接到在所述串中前一个寄存器,其输出端连接到在所述串中下一个寄存器,而且
响应于存储一个环的指令的所述多个寄存器,在所述串中的所述最后一个寄存器的输出选择性地连接到在所述串中的第一个寄存器的输入端。
18.如权利要求17所述的环缓冲器,其中
所述寄存器串被提供时钟,以便在环的执行过程中,循环存储在所述环缓冲器内的指令环。
19.如权利要求17所述的环缓冲器,其中
在所述环内的指令的数目选择在所述寄存器串中的最后一个寄存器,其输出选择性地连接到所述第一个寄存器的输入端。
20.如权利要求17所述的环缓冲器,还包括:
第一复用器,其输出端连接到所述串中的第一个寄存器的输入端,所述第一复用器选择所述最后一个寄存器的输出,或来自存储器的新指令,以输入到所述串中的第一个寄存器中。
21.如权利要求17所述的环缓冲器,还包括:
第一复用器,其输出端连接到所述串中的第一个寄存器的输入端,所述第一复用器选择第二复用器的输出,或来自存储器的新指令,以输入到所述串中的第一个寄存器中,和
所述第二复用器,响应于在所述环内的指令的数目,选择来自所述寄存器串的输出作为指令执行输出。
22.一种环缓冲器,包括:
多个寄存器,以存储在一个环内的指令;
第一指示器,连接到所述多个寄存器的每一个,以选择性地使能一个指令装载到所述多个寄存器之一;和
第二指示器,选择性地从所述多个寄存器读取一个指令,作为用于在所述环内执行的下一个指令。
23.如权利要求22所述的环缓冲器,还包括:
复用器,连接到所述多个寄存器的每一个和第二指示器的输出端,所述复用器用于响应于所述第二指示器而选择所述多个寄存器的一个输出,以便选择性地读取其中的指令,作为用于在所述环内执行的下一个指令。
24.如权利要求22所述的环缓冲器,其中
所述第二指示器被装载第一个环的开始地址,并被递增以选择一个指令序列,用于在所述第一个环内的执行。
25.如权利要求24所述的环缓冲器,其中
所述第二指示器被装载在所述第一个环内的第二个环的开始地址,并被递增以选择一个指令序列,用于在所述第二个环内的执行。
26.如权利要求24所述的环缓冲器,其中
在所述第二指示器被递增到在所述第一个环内的最后一个指令的地址后,所述第二个指示器被再次装载所述第一个环的开始地址,并被递增以选择所述指令序列,用于在所述第一个环内的重复执行。
27.如权利要求25所述的环缓冲器,其中
在所述第二指示器被递增到在所述第二个环内的最后一个指令的地址后,所述第二个指示器被再次装载所述第二个环的开始地址,并被递增以选择所述指令序列,用于在所述第二个环内的重复执行。
28.如权利要求27所述的环缓冲器,其中
在所述第二指示器被递增到在所述第一个环内的最后一个指令的地址后,所述第二个指示器被再次装载所述第一个环的开始地址,并被递增以选择所述指令序列,用于在所述第一个环内的重复执行。
29.如权利要求22所述的环缓冲器,其中
所述第一指示器被装载在所述环内的每个指令的提取地址,以便选择性地使能所述多个寄存器的每一个,以便在其中存储在所述环内的所述指令序列的每个指令。
30.如权利要求22所述的环缓冲器,还包括:
比较器,用于比较所述多个寄存器的数目和在所述环内的指令的数目,且如果该比较器确定在所述环内的指令的数目超过所述多个寄存器的数目,则所述比较器废能所述环缓冲器,使在所述环内的指令流过所述环缓冲器,用于执行。
31.如权利要求22所述的环缓冲器,其中
所述多个寄存器还用于响应于在指令管道中的暂停而存储指令,和
所述第二指示器,用于响应于所述暂停被清空而选择性地从所述多个寄存器读取一个指令作为用于执行的下一个指令。
CNB01804350XA 2000-01-31 2001-01-25 用于环缓冲数字信号处理指令的方法和装置 Expired - Fee Related CN1287276C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/494,609 2000-01-31
US09/494,609 US6598155B1 (en) 2000-01-31 2000-01-31 Method and apparatus for loop buffering digital signal processing instructions

Publications (2)

Publication Number Publication Date
CN1425153A CN1425153A (zh) 2003-06-18
CN1287276C true CN1287276C (zh) 2006-11-29

Family

ID=23965185

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB01804350XA Expired - Fee Related CN1287276C (zh) 2000-01-31 2001-01-25 用于环缓冲数字信号处理指令的方法和装置

Country Status (8)

Country Link
US (2) US6598155B1 (zh)
EP (1) EP1252567B1 (zh)
CN (1) CN1287276C (zh)
AT (1) ATE480818T1 (zh)
AU (1) AU2001231181A1 (zh)
DE (1) DE60143018D1 (zh)
HK (1) HK1047484B (zh)
WO (1) WO2001055844A1 (zh)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6505295B1 (en) * 1997-02-17 2003-01-07 Hitachi, Ltd. Data processor
DE50004566D1 (de) * 1999-03-17 2004-01-08 Infineon Technologies Ag Cachen kurzer programmschleifen innerhalb eines instruktions-fifos
KR100347865B1 (ko) * 1999-11-15 2002-08-09 삼성전자 주식회사 어드레스 트레이스를 이용한 분기 예측 방법
US7302557B1 (en) * 1999-12-27 2007-11-27 Impact Technologies, Inc. Method and apparatus for modulo scheduled loop execution in a processor architecture
GB2367406B (en) * 2000-06-13 2002-06-05 Siroyan Ltd Predicated execution of instructions in processors
US6766444B1 (en) * 2000-11-02 2004-07-20 Intel Corporation Hardware loops
EP1346279A1 (en) * 2000-12-07 2003-09-24 Koninklijke Philips Electronics N.V. Digital signal processing apparatus
US6950929B2 (en) * 2001-05-24 2005-09-27 Samsung Electronics Co., Ltd. Loop instruction processing using loop buffer in a data processing device having a coprocessor
JP3656587B2 (ja) * 2001-10-01 2005-06-08 日本電気株式会社 並列演算プロセッサ、その演算制御方法及びプログラム
EP1313012A1 (en) 2001-11-15 2003-05-21 Texas Instruments France Java DSP acceleration by byte-code optimization
US7302680B2 (en) * 2002-11-04 2007-11-27 Intel Corporation Data repacking for memory accesses
US7249248B2 (en) * 2002-11-25 2007-07-24 Intel Corporation Method, apparatus, and system for variable increment multi-index looping operations
US7669042B2 (en) * 2005-02-17 2010-02-23 Samsung Electronics Co., Ltd. Pipeline controller for context-based operation reconfigurable instruction set processor
JP2006318139A (ja) 2005-05-11 2006-11-24 Matsushita Electric Ind Co Ltd データ転送装置、データ転送方法およびプログラム
US7783406B2 (en) 2005-09-22 2010-08-24 Reagan Inventions, Llc System for controlling speed of a vehicle
US7865256B2 (en) * 2005-11-04 2011-01-04 Yamaha Corporation Audio playback apparatus
US20080229074A1 (en) * 2006-06-19 2008-09-18 International Business Machines Corporation Design Structure for Localized Control Caching Resulting in Power Efficient Control Logic
US20070294519A1 (en) * 2006-06-19 2007-12-20 Miller Laura F Localized Control Caching Resulting In Power Efficient Control Logic
US9052910B2 (en) * 2007-10-25 2015-06-09 International Business Machines Corporation Efficiency of short loop instruction fetch
US9772851B2 (en) 2007-10-25 2017-09-26 International Business Machines Corporation Retrieving instructions of a single branch, backwards short loop from a local loop buffer or virtual loop buffer
JP5159258B2 (ja) * 2007-11-06 2013-03-06 株式会社東芝 演算処理装置
US20090217017A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation Method, system and computer program product for minimizing branch prediction latency
US20090327674A1 (en) * 2008-06-27 2009-12-31 Qualcomm Incorporated Loop Control System and Method
US8266414B2 (en) * 2008-08-19 2012-09-11 Freescale Semiconductor, Inc. Method for executing an instruction loop and a device having instruction loop execution capabilities
US20100122066A1 (en) * 2008-11-12 2010-05-13 Freescale Semiconductor, Inc. Instruction method for facilitating efficient coding and instruction fetch of loop construct
US9170816B2 (en) * 2009-01-15 2015-10-27 Altair Semiconductor Ltd. Enhancing processing efficiency in large instruction width processors
US9471125B1 (en) * 2010-10-01 2016-10-18 Rockwell Collins, Inc. Energy efficient processing device
US9519617B2 (en) * 2011-07-14 2016-12-13 Texas Instruments Incorporated Processor with instruction variable data distribution
US20120185714A1 (en) * 2011-12-15 2012-07-19 Jaewoong Chung Method, apparatus, and system for energy efficiency and energy conservation including code recirculation techniques
US9323530B2 (en) 2012-03-28 2016-04-26 International Business Machines Corporation Caching optimized internal instructions in loop buffer
US9753733B2 (en) 2012-06-15 2017-09-05 Apple Inc. Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US9507600B2 (en) 2014-01-27 2016-11-29 Texas Instruments Deutschland Gmbh Processor loop buffer
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
US9436450B2 (en) * 2014-09-01 2016-09-06 Freescale Semiconductor, Inc. Method and apparatus for optimising computer program code
US10860763B1 (en) 2015-09-24 2020-12-08 Cadence Design Systems, Inc. Data routing and multiplexing architecture to support serial links and advanced relocation of emulation models
US9910810B1 (en) * 2015-10-23 2018-03-06 Cadence Design Systems, Inc. Multiphase I/O for processor-based emulation system
US11055095B2 (en) * 2019-05-24 2021-07-06 Texas Instruments Incorporated Nested loop control
CN111026445A (zh) * 2019-12-17 2020-04-17 湖南长城银河科技有限公司 一种智能识别方法及芯片
US20210200550A1 (en) * 2019-12-28 2021-07-01 Intel Corporation Loop exit predictor
CN112000370B (zh) * 2020-08-27 2022-04-15 北京百度网讯科技有限公司 循环指令的处理方法、装置、设备和存储介质
US11775457B1 (en) * 2021-02-23 2023-10-03 Xilinx, Inc. Command pattern sequencer for memory calibration
US20220283811A1 (en) * 2021-03-03 2022-09-08 Microsoft Technology Licensing, Llc Loop buffering employing loop characteristic prediction in a processor for optimizing loop buffer performance
US20230056699A1 (en) * 2021-08-23 2023-02-23 Intel Corporation Loop driven region based frontend translation control for performant and secure data-space guided micro-sequencing

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04293124A (ja) * 1991-03-20 1992-10-16 Hitachi Ltd データ処理プロセッサ
US5526397A (en) 1992-04-20 1996-06-11 Hughes Electronics Switching transcoder
JPH06243036A (ja) 1993-02-12 1994-09-02 Hitachi Ltd キャッシュ制御システム
JPH07160585A (ja) 1993-12-13 1995-06-23 Hitachi Ltd 低電力データ処理装置
TW234175B (en) * 1994-02-08 1994-11-11 Meridian Semiconductor Inc Randomly-accessible instruction buffer for microprocessor
JPH0991136A (ja) * 1995-09-25 1997-04-04 Toshiba Corp 信号処理装置
US5742781A (en) * 1996-08-09 1998-04-21 Hitachi America, Ltd. Decoded instruction buffer apparatus and method for reducing power consumption in a digital signal processor
US5903176A (en) * 1996-09-04 1999-05-11 Litton Systems, Inc. Clock circuit for generating a high resolution output from a low resolution clock
JPH1097423A (ja) * 1996-09-20 1998-04-14 Hitachi Ltd ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ
DE69718278T2 (de) * 1996-10-31 2003-08-21 Texas Instruments Inc., Dallas Methode und System zur Einzel-Zyklus-Ausführung aufeinanderfolgender Iterationen einer Befehlsschleife
US5893142A (en) * 1996-11-14 1999-04-06 Motorola Inc. Data processing system having a cache and method therefor
US6085315A (en) * 1997-09-12 2000-07-04 Siemens Aktiengesellschaft Data processing device with loop pipeline
FR2770659A1 (fr) * 1997-10-31 1999-05-07 Sgs Thomson Microelectronics Processeur de traitement perfectionne
US6243807B1 (en) * 1998-10-20 2001-06-05 Pc-Tel, Inc. Optimizing cache data load required for functions in loop routine by sequentially collecting data in external memory for single block fetch
US6269440B1 (en) * 1999-02-05 2001-07-31 Agere Systems Guardian Corp. Accelerating vector processing using plural sequencers to process multiple loop iterations simultaneously
US6367071B1 (en) * 1999-03-02 2002-04-02 Lucent Technologies Inc. Compiler optimization techniques for exploiting a zero overhead loop mechanism

Also Published As

Publication number Publication date
EP1252567A1 (en) 2002-10-30
EP1252567B1 (en) 2010-09-08
CN1425153A (zh) 2003-06-18
DE60143018D1 (de) 2010-10-21
AU2001231181A1 (en) 2001-08-07
HK1047484A1 (en) 2003-02-21
US6598155B1 (en) 2003-07-22
HK1047484B (zh) 2010-12-17
US6766446B2 (en) 2004-07-20
EP1252567A4 (en) 2005-02-02
ATE480818T1 (de) 2010-09-15
WO2001055844A1 (en) 2001-08-02
US20030163679A1 (en) 2003-08-28

Similar Documents

Publication Publication Date Title
CN1287276C (zh) 用于环缓冲数字信号处理指令的方法和装置
CN1246771C (zh) 用于具有二元数字信号处理指令的指令集结构的方法和装置
CN1568455A (zh) 用于灵活数据类型的方法和设备
CN1235160C (zh) 在专用信号处理器中用于饱和乘法和累加的方法和装置
CN1473321A (zh) 用于综合电信处理的话音激活检测器
US6832306B1 (en) Method and apparatus for a unified RISC/DSP pipeline controller for both reduced instruction set computer (RISC) control instructions and digital signal processing (DSP) instructions
CN1251063C (zh) 使指令集结构同时执行原始和阴影数字信号处理子指令的方法和设备
WO2002019098A1 (en) Method and apparatus for a unified risc/dsp pipeline controller for both reduced instruction set computer (risc) control instructions and digital signal processing (dsp) instructions
Walsh Reducing system cost with software modems
Nilsson et al. Simultaneous multi-standard support in programmable baseband processors

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20061129

Termination date: 20170125