用于可缩放可编程的循环式缓冲器的指针计算方法及系统的制作方法

文档序号:6569970阅读:281来源:国知局
专利名称:用于可缩放可编程的循环式缓冲器的指针计算方法及系统的制作方法
用于可缩放可编程的循环式緩冲器的指针计算方法及系统 技术领域所揭示的标的物涉及数据处理。更确切地说,本发明涉及一种用于可缩放可编程的 循环式缓冲器的新颖的且经改进的指针计算方法及系统。#狄^电子设备及支持软件应用日益涉及信号处理。家庭剧院、计算机图形、医疗成像及 电信皆依赖于信号处理技术。信号处理在复杂而重复的演算法时需要快速数学。许多应 用需要即时计算,即信号为连续的时间函数,其必须经取样并转换为数字信号以用于数 值处理。因此当样本到达时,处理器必须执行对样本执行离散计算的演算法。数字信号 处理器(DSP)的结构经最优化以处理这些演算法。良好的信号处理引擎的特性通常可包括 快速、灵活的算术计算单元、往返于计算单元间的无约束数据流、计算单元中的经扩展 的精确度及动态范围、双地址产生器、有效程序定序及编程的容易性。DSP技术的一种有前途的应用包括通信系统,例如码分多址(CDMA)系统,其支持用 户之间经由卫星或地面链路进行语音及数据通信。标题为"使用卫星或地面中继器的扩频 多址通信系统"("SPREAD SPECTRUM MULTIPLE ACCESS COMMUNICATION SYSTEM USING SATELLITE OR TERRESTRIAL REPEATERS")的第4,901,307号美国专 利及标题为"在CDMA蜂窝式手机系统中产生波形的系统及方法"("SYSTEM AND METHOD FOR GENERATING WAVEFORMS IN A CDMA CELLULAR TELEHANDSET SYSTEM")的第5,103,459号美国专利中揭示了 CDMA技术在多址通信系统中的使用, 两者均转让给所主张的标的物的受让人。CDMA系统通常经设计以符合一个或一个以上电信及目前的串流视频标准。 一个此 第一代标准为"双模式宽带展频蜂窝式系统的TIA/EIA/IS-95终端-基站相容性标准",下 文中称为IS-95标准。IS-95CDMA系统能传输语音数据及包数据。可更有效地传输包数 据的较新一代标准是由名为"第3代合作伙伴计划"(3GPP)的协会提供且体现于一组文档 中,包括第3GTS 25.211、 3GTS 25.212、 3G TS 25.213及3G TS 25.214号文档,所述文 档随时可供公众使用。3GPP标准在下文中称为W-CDMA标准。也存在视频压縮标准, 例如MPEG-1、 MPEG-2、 MPEG-4、 H.263及WMV (视窗媒体视频),以及许多其它标 准,使得这些无线手持装置的使用日益增多。在许多应用中,广泛使用缓冲器。 一种常用类型是循环式缓冲器,其环绕其自身, 使得最低编号项与其最高编号项在物理上在缓冲器长度或范围上隔开,但最低编号项在 概念上或逻辑上位于邻近最高编号项。循环式缓冲器提供对缓冲器的直接存取,以允许 调用程序就地构造输出数据,或就地剖析输入数据,而无需进行将数据复制到调用程序 或从调用程序复制数据的额外步骤。为促进此直接存取,循环式缓冲器确保对输出或输 入的缓冲器位置的所有引用是针对存储器的单一邻近区块。此避免了当数据的循环达到 循环式缓冲器终止位置时调用程序需处理分裂的缓冲器空间的问题。结果,调用程序可 使用广泛类型的可用应用程序而无需意识到应用程序系正直接在循环式缓冲器中操作。一种循环式缓冲器要求缓冲器与2的幂对准且长度为2的幂。在此循环式缓冲器中, 指针计算仅涉及掩蔽步骤。虽然此可提供简单的计算,但由于要求缓冲器长度为2的幂, 所以此循环式缓冲器不可由某些演算法或实施方案使用。在循环式缓冲器的使用中,缓冲器的长度包括起始位置及终止位置。对于许多应用 而言,需要起始位置及终止位置是可确定的或可编程的。如果循环式缓冲器的起始位置 及终止位置可编程,则更广泛的演算法及处理可使用所述循环式缓冲器。此外,随着不 同演算法及处理的变化,循环式缓冲器的运算也可变化以提供增加的运算效率及实用性。在寻址循环式缓冲器中的特定位置时,寻址特定缓冲器位置的指针将向上或向下移 动到缓冲器位置。遗憾的是,此处理并不完全有效。通常,因为所述处理需要三个加法/ 减法运算,所以其较繁复。需要第一运算来借由将跨步加到当前缓冲器指针来产生新的 缓冲器指针。需要第二运算来确定所述新指针是否已溢出或下溢缓冲器地址范围。接着, 需要第三运算以在溢出或下溢的状况下调整所述新指针。这3个运算需要在完全管线式 运算中有3个单独的加法器,或替代性地需要循环式寻址变为非管线式多循环操作。如 果可能降低这些运算的数目,那么可能由于较少加法器的面积及/或功率节省或性能改进 而产生显著DSP改进,因为这些运算在DSP及其它应用中发生多次。因此,需要一种可用于一个种类的可缩放且可编程的循环式缓冲器的指针计算方法, 所述种类的循环式缓冲器支持可编程的缓冲器长度。此外,需要一种用于一个种类的可縮放且可编程的循环式缓冲器的指针计算方法, 所述方法要求尽可能少的加法来检测环绕状况,且允许在暂时指针超出循环式缓冲器边 界的情况下对指针值进行调整。 发明内容本发明揭示用于制造及使用用于可缩放、可编程的循环式缓冲器的指针计算方法及系统的技术,所述技术改进数字信号处理器的运算及数字信号处理器指令的有效使用, 以便处理个人计算机、个人数字助理、无线手持装置及类似电子装置的日益稳固的软件 应用程序并增加相关联的数字处理器速度及服务品质。根据所揭示的标的物的一个方面,提供用于确定循环式缓冲器指针位置的方法及系 统。循环式缓冲器内的指针位置是通过确立循环式缓冲器的长度、与2的幂对准的起始 地址及位于距离所述起始地址所述长度且比所述长度大出不到2的幂的终止地址来确定 的。所述方法及系统确定循环式缓冲器内的地址的当前指针位置、起始地址与终止地址 之间的位的跨步值、循环式缓冲器内从当前指针位置移位所述跨步值的位数的新指针位 置。通过新指针位置与长度的算术运算,经调整的指针位置在循环式缓冲器内。在正跨 步的情况下,经调整的指针位置(在新指针位置小于终止地址的情况下)是通过将经调 整的指针位置调整到新指针位置来确定的。或者,在新指针位置大于终止地址的情况下, 通过从新指针位置中减去所述长度来调整经调整的指针。在负跨步的情况下,经调整的 指针位置(在新指针位置大于所述起始地址的情况下)是通过将经调整的指针位置调整 为新指针位置来设定的。或者,在新指针位置小于所述起始地址的情况下,通过将新指 针位置加上所述长度来调整经调整的指针。通过本文提供的描述,所揭示的标的物的这些及其它方面以及额外的新颖特征将变 得显而易见。此发明内容的意图并非是对所主张的标的物的全面描述,而是提供对标的 物的某些功能性的简要概述。所属领域的技术人员在研究了以下图式及具体实施方式
后 将容易了解此处提供的其它系统、方法、特征及优势。希望此描述内所包括的所有这些 额外系统、方法、特征及优势在随附权利要求书的范围内。


结合附图阅读下述具体实施方式
将更容易明白所揭示的标的物的特征、性质及优势, 图中相同参考符号始终指示相同元件,且其中图1为用于实施本实施例的通信系统的简化方框图;图2说明用于实现本实施例的教示的DSP结构;图3展现使用所揭示的实施例的管线中的控制单元、数据单元及其它数字信号处理 器功能单元的顶层图;图4展现所揭示的标的物的代表性数据单元区块分割,其包括用于使用所主张的标 的物的地址产生单元;图5概念性展示使用所揭示的标的物的教示的循环式缓冲器的操作;10图6提供代表所揭示的标的物的一个实施方案的寻址模式、偏移选择及有效地址选 择选项的表格;图7描绘根据所揭示的标的物的用于可縮放、可编程的循环式缓冲器的指针计算方 法及系统的方框图;且图8提供可在相关联的DSP的执行管线内操作的所揭示的标的物的实施例。
具体实施方式
用于多线程数字信号处理器的可縮放、可编程的循环式缓冲器的新颖且经改进的指 针计算方法及系统的所揭示的标的物可应用于涉及多线程处理的极广泛的数字信号处理 应用。 一种此应用出现于电信领域,且确切地说,出现于使用一个或一个以上数字信号 处理电路的无线手持装置中。因此,图1提供可实施所展现的实施例的通信系统10的简 化方框图。在发射器单元12,数据通常成组地从数据源14发送到发射(TX)数据处理器 16,数据处理器16格式化、编码及处理数据以产生一个或一个以上模拟信号。接着将所 述模拟信号提供到发射器(TMTR)18,发射器(TMTR)18对基带信号进行调制、滤波、放 大及上变频转换以产生经调制的信号。接着经由天线20将所述经调制的信号传输到一个 或一个以上接收器单元。在接收器单元22,所传输的信号由天线24接收并提供到接收器(RCVR)26。在接收 器26内,所接收的信号经放大、滤波、下变频转换、解调及数字化来以产生同相的(I) 及(Q)样本。所述样本接着由接收(RX)数据处理器28解码及处理以恢复所传输的数据。 在接收器单元22的解码及处理是以与在发射器单元12执行的编码及处理互补的方式来 执行的。接着将恢复的数据提供到数据汇30。上文所描述的信号处理支持对语音、视频、包数据、消息及其它类型的通信的单向 传输。双向通信系统支持双向的数据传输。然而,出于简化的目的,用于另一方向的信 号处理在图1中未展示。通信系统IO可为码分多址(CDMA)系统、时分多址(TDMA)通信 系统(例如GSM系统)、频分多址(FDMA)通信系统,或其它支持用户之间经由地面链路 的语音及数据通信的多址通信系统。在一个特定实施例中,通信系统10是符合W-CDMA 标准的CDMA系统。图2说明可充当图1的发射数据处理器16及接收数据处理器28的DSP40结构。应 认识到,DSP40仅表示可有效使用此处提供的教示及概念的许多可能的数字信号处理器 实施例中的一个实施例。因此,在DSP40中,线程T0到T5 ("T0:T5")含有来自不同线 程的指令组。指令单元(IU)42取得线程T0:T5的指令。IU 42将指令10到13("IO:I3")排入指令队列(IQ)44。 IQ 44发出指令10:13到处理器管线46中。处理器管线46包括控制电 路及数据路径。解码及发出电路48可从IQ44中选出单一线程(例如线程T0)。管线逻 辑控制单元(PLC)50提供逻辑控制到解码及发出电路48及IU 42。IU 42中的IQ 44保留指令流的滑动缓冲器。DSP40支持的六个线程T0:T5中的每一 者具有单独的八项IQ44,其中每一项可存储一个VLIW包或多达四个单个的指令。解码 及发出电路48的逻辑由所有线程共用,以用于一次解码并发出一个VLIW包或多达两个 超标量指令,并用于产生每一管线SLOT0:SLOT3的控制总线及运算数。另外,解码及发 出电路48在IQ 44项中的两个最久有效指令之间进行槽指派及相依性检查以用于(例如) 使用超标量发出技术来发出指令。PLC50的逻辑由所有线程共用,以用于解决异常及检 测例如线程启用/停用的管线暂停状况、重放状况、维持程序流等。在操作中,读取所选线程的通用寄存器文件(GRF)52及控制寄存器文件(CRF)54,并 将所读取的数据发送到用于SLOT0:SLOT3的执行数据路径。在此实例中,SLOT0:SLOT3 提供本实施例中所使用的包分组组合。来自SLOT0:SLOT3的输出返回来自DSP40的操 作的结果。因此,本实施例可采用使用单一微处理器的异质元件处理器(HEP)系统与多达六个线 程T0:T5的混合。处理器管线46具有六个管线级,与从IU 42取出数据项目所需的处理 器循环的最小数目匹配。DSP 40同时执行处理器管线46内的不同线程T0:T5的指令。 也就是说,DSP 40提供六个独立的程序计数器,所述计数器为用以区别处理器管线46 内的线程T0:T5的指令的内部标记机制,且为触发线程切换的机制。线程切换额外开销 为从零到仅数个循环不等。图3提供所揭示的标的物的一个表现形式的DSP 40微型结构的简要概观。DSP 40 微型结构的实施方案支持交错多线程(IMT)。此处揭示的标的物处理单一线程的执行模 型。可认为IMT的软件模型是共用存储器多处理器。单一线程经历具有所有可用的寄存 器及指令的完整单处理器DSP40。通过相干的共用存储器设施,此线程能与其它线程通 信及同步化。这些其它线程是在同一处理器上还是在另一处理器上执行对用户级软件在 很大程度上是透明的。转到图3,用于DSP 40的本微型结构60包括控制单元(CU)62,其执行处理器管线 46的控制功能中的许多功能。CU 62调度线程并从IU 42请求混合的16位及32位指令。 此外,CU 62调度且发出指令到三个执行单元移位型单元(SU)64、乘法型单元(MU)66 及载入/存储单元(DU)68。CU 62也执行超标量相依性检査。总线接口单元(BIU)70将IU 42及DU68介接到系统总线(未图示)。SLOT0及SLOTl管线位于DU 68中,SLOT2位于MU 66中,且SLOT3位于SU 64 中。CU 62提供源运算数及控制总线到管线SLOT0:SLOT3并处理GRF 52及CRF 54文 件更新。GRF 52持有32个32位寄存器,其可作为单一寄存器或作为经对准的64位对 来存取。微型结构60以混合了超标量及VLIW执行的优势的混合执行模型为特征。超标 量型式具有无需软件信息来找到独立指令的优势。解码级DE执行指令的初始解码以使 这些指令准备在DSP40中执行和进一步处理。寄存器文件管线级RF提供寄存文件更新。 两个执行管线级EX1及EX2支持指令执行,而第三执行管线级EX3提供指令执行及寄 存器文件更新。在执行(EX1、 EX2及EX3)及写回(WB)管线级期间,IU42建立待执行的 下一IQ 44项。最终,写回管线级WB执行寄存器更新。交错的写入寄存器文件操作由 于IMT微型结构而是可能的且节省每线程写入端口的数目。因为管线具有六个级,所以 CU52可发出多达六个不同的线程。图4展现其中可应用所揭示的标的物的代表性数据单元(DU 68)区块分割。DU 68包 括地址产生单元AGU 80,地址产生单元AGU 80进一步包括用于从CU 62接收输入的 AGU0 81及AGU1 83。此处揭示的标的物主要应用于AGU 80的操作。载入/存储控制单 元LCU 82也与CU 62通信并提供控制信号到AGU 80及ALU 84,以及与数据高速缓冲 存储单元DCU86通信。ALU84也从AGU80及CU62接收输入。来自AGU80的输出 去往DCU 86。DCU 86与存储器管理单元("MMU")87及CU 62通信。DCU 86包括SRAM 状态阵列电路88、存储对准器电路90、 CAM标记阵列92、 SRAM数据阵列94及载入 对准器电路96。为进一步解释DU 68 (其中所主张的标的物可操作)的操作,现参考根据以下描述 的若干部分而在其中执行的基本功能。确切地说,DU68执行来自ALU84的载入型、存 储型及32位指令。DU68的主要特征包括在所有DSP40管线级DE、 RF、 EX1、 EX2、 EX3及使用两个并行管线SLOT0及SL0T1的WB管线级中的完全管线式运算。DU 68 可接受VLIW或超标量双指令发出。优选地,SLOT0执行不可高速缓冲存储或可高速缓 冲存储的载入或存储指令、32位ALU 84指令及DCU 86指令。SLOTl执行不可高速缓 冲存储或可高速缓冲存储的载入指令及32位ALU 84指令。DU 68在DE管线级中每循环从CU 60接收多达两个的包括立即运算数的经解码指 令。在RF管线级中,DU68从适当的线程特定寄存器接收通用寄存器(GPR)及/或控制寄 存器(CR)源运算数。GPR运算数是从CU 60中的GPR寄存器文件接收的。在EX1管线13级中,DU 68产生载入或存储存储器指令的有效地址(EA)。将EA提供到MMU 87, MMU 87执行虚拟到物理地址转译及页层级许可检查并提供页层级属性。为存取可髙速缓冲存 储的位置,DU68以物理地址査找EX2管线级中的数据高速缓冲存储标记。如果存取命 中,则DU68在EX3管线级中执行数据阵列存取。对于可高速缓冲存储载入而言,将从高速缓冲存储器读出的数据以适当的存取大小 对准、按指定的进行零/正负号扩展并驱动到WB管线级中的CU 60以待写入指令指定的 GPR。对于可高速缓冲存储的存储而言,将待存储的数据在EX1管线级中从CU60中的 线程特定寄存器读出并在EX2管线级中在命中时写入数据高速缓冲存储阵列。对于载入 及存储而言,自动递增的地址在EX1及EX2管线级中产生,并在EX3管线级中驱动到 CU 60以写入指令指定的GPR。DU 68也执行高速缓冲存储指令以管理DCU 86。所述指令允许特定高速缓冲存储线 程锁定及解锁、失效及分配到GPR指定的高速缓冲存储线程。也存在使高速缓冲存储器 全面失效的指令。这些指令类似于载入及存储指令是管线式的。对于到未命中数据高速 缓冲存储器的可高速缓冲存储的位置的载入及存储而言,且对于不可髙速缓冲存储的存 取而言,DU68向BIU70提出请求。不可高速缓冲存储的载入提出读取请求。存储命中、 不中及不可高速缓冲存储的存储提出写入请求。DU 68跟踪对BIU 70的未处理的读取及 线填充请求。DU 68提供线程间的非阻断,B卩,在一个或一个以上线程被阻断从而暂停 对未完成载入请求的完成的同时,允许其它线程存取。本揭示案所涉及的AGU 80提供AGU 80数据路径的两个相同例子, 一个用于 SLOTO, 一个用于SL0T1。然而,应注意,所揭示的标的物可操作于、且实际上确实存 在且操作于DU 68的例如ALU 84的其它区块中。然而,出于理解本发明的功能及结构 的说明性目的,注意力应指向AGU80,根据本文提供的示范性教示,其针对每一槽产生 有效地址(EA)及自动递增地址(AIA)。LCU82启用载入及存储指令执行,所述指令执行可包括高速缓冲存储命中、高速缓 冲存储不中及不可高速缓冲存储的载入,以及存储指令。在本实施例中,载入管线对于 SLOTO及SL0T1是相同的。经由LCU82的存储执行提供经由高速缓冲存储命中指令、 写回高速缓冲存储命中指令、高速缓冲存储不中指令、不可高速缓冲存储写入指令的存 储指令管线写入。在本实施例中,存储指令仅在SLOTO上执行。对于写直达存储 (write-through store),不管命中状态如何,均向BIU 70提出写入请求。对于写回存储, 如果存在不中,则向BIU70提出写入请求,如果存在命中,则不提出写入请求。在写回存储命中时,更新高速缓冲存储线状态。存储不中向BIU70提出写入请求,且未在高速 缓冲存储器中分配线。ALU 84包括ALU0 85及ALU1 89,每个用于一个槽。ALU 84含有数据路径以在 DU68内执行算术/转移/比较(ATC)运算。这些运算可包括32位加、减、非、比较、寄存 器转移及MUX寄存器指令。另外,ALU84也完成AIA计算的循环式寻址。图5概念性展示循环式缓冲器使用所揭示的标的物的教示的操作。当多个执行线程 经调度以在DSP40上并行运行时,其可用增加其各个环执行时间中的抖动的方式相互作 用。当AGU80必须转移大量数据到LCU82时,用于实施确定性数据流的技术。为规避 数据损失,LCU 82必须能通过在其准备就绪时立即检索数据而跟上获取组件。参看图5,其为将缓冲器存储器分配成若干区的循环式缓冲器100。在操作中,AGU 80填充一个区,例如循环式缓冲器100的区102,而LCU82尽可能快地从另一区(例如 区104)读取数据。因为在任何时间LCU 82与AGU 80在不同缓冲区中读取及写入数据, 所以循环式缓冲器100允许LCU82与AGU80两者同时存取缓冲器中的数据。因此,举 例而言,循环式缓冲器100在从区104读取时持续在区102的开始处写入。AGU 80的一 项职责包括跟上AGU 80以使得数据从不经覆写。同步机制允许AGU 80在新数据可用 时告知LCU 82。图6提供表示所揭示的标的物的实施方案的寻址模式、偏移选择及有效地址选择选 项的表106。因此,图6的表列举了用于由DU 68执行的指令的主要指令解码。解码功 能性大部分驻存在CU 60中,且经解码信号作为经解码指令发送的部分而被驱动到DU 68。因此,无自动增量的间接寻址模式及与堆叠指针相关的寻址模式使用Imm偏移MUX 选择及添加EA MUA选择。具有自动增量的间接及循环式立即寻址模式使用Imm偏移 MUX选择及RF EA MUX选择。具有自动增量寄存器的间接寻址模式及具有自动增量寄 存器的循环寻址模式使用M偏移MUX选择及RF EAMUX选择。最后,具有自动增量 寄存器的位反转寻址模式使用M偏移MUX选择及BRev或位反转EAMUX选择。在执 行此处所描述的各种解码功能后,本发明的方法及系统可执行以下如此处所描述的指针 位置计算操作。图7是本揭示案的一个实施例的特征,其首先涉及确立演算法过程的定义。在这些 定义内,设M表示一个整数且是指M位加法器;设N为大于0且小于M的整数,即 0<N<M。假设N在0<N<M内可縮放且可编程。此外,设M为M位加法器的参考。循 环式缓冲器100可形成为2W对准的基址指针且具有可编程长度L,其中L<2N。使用这些定义,现参看图7,其展现用于执行本发明的用于可縮放可编程循环式缓 冲器的指针计算方法及系统的说明性示意性方框图110。方框图IIO包括112处的当前指 针R、 114处的基址掩码产生器输入、116处的跨步输入及118处的跨步方向(正向方向 为0,或负向方向为l)作为输入。当前指针输入R去往与门120及122。基址掩码产生 器输入114去往与门122及反相器124,反相器124向与门120提供偏移掩蔽。基于N 的值,基址掩码产生器114产生用于位N-1:0的掩码。也就是说,位BM."BN可皆设定为 零,而位B^t:Bo可皆设定为1。来自与门122的输出向M位加法器126提供指针偏移。跨步输入116去往MUX 128及反相器130,反相器130向MUX 128提供反相输入。 跨步方向输入118也去往MUX 128、 M位加法器126、 MUX 132及反相器134。与门122 导出当前指针输入112与来自基址掩码产生器114的基址掩码的逐位"与",以作为指针 偏移。与门120从当前指针112的逻辑"与"与来自反相器124的偏移掩码导出指针基 址136,所述偏移掩码为来自基址掩码产生器114的反相输出。M位加法器126产生M位加法器140的被加数138。所述被加数从来自与门122的 指针偏移、来自MUX 128的多路复用输出及跨步方向118输入的总和导出。M位加法器 140从被加数138、来自MUX132的多路复用输出及反相器134导出总和142。总和142 等于被加数138加上/减去循环式缓冲器长度144。循环式缓冲器长度144响应于来自反 相器146及长度输入148的输入而从MUX 132导出。来自M位加法器140的总和142、 被加数138及最高有效位M 183馈送到MUX 150以产生新指针偏移152。最后,或门154 使用来自MUX 150的多路复用输出及指针基址136执行逻辑或运算以产生所要的新指针 156。所揭示的过程优于已知方法的明显优势包括仅要求两个加法,即M位加法器126及 140的运算。此外,所揭示的方法及系统允许变动N及M以导出一系列循环式缓冲器。 如此,所揭示的实施例提供功率、速度及面积设计考虑上的设计最优化。此外,本发明 的过程及系统支持带正负号的偏移及可编程的循环式缓冲器长度。本实施例的又一优势 包括仅需要通用的M位加法器,而不要求有中间进位项(bit carry term)。另外,所揭示的 实施例对于正跨步及负跨步可使用同一数据路径。为说明本发明的方法的有利效应,提供以下实例。因此,设N等于5, L等于30(即, BOllllO),其中M等于N+l-6。当前指针P、当前跨步S及跨步的正负号D,其在以下 实例中皆为变量。所揭示的过程实例的结果提供循环式缓冲器100内的各个新指针位置。在第一实例中,设P=62(B111110), S-1(B000001)且D-正(BO)(其为溢出状况)。在此状况下,来自基址掩码产生器114的掩码为011111,来自与门122的指针偏移为011110, 且来自与门120的指针基址136为100000。来自M位加法器126的被加数138为 011110+000001=011111。总和142变为011111 + 100001+000001=000001。新指针偏移是基 于总和142的第6位为O来确定的。此导致选择总和142 (其为000001)作为新指针偏 移。所述新指针接着变为000001 + 100000=100001。在第二实例中,设P=62(B111110), S-1(B000001)且D =负(81)。在此状况下,来自 基址掩码产生器114的掩码为011111,来自与门122的指针偏移为011110,且来自与门 120的指针基址136为100000 。来自M位加法器126的被加数138为 011110+111110+000001=011101。总和142变为011101 +011110= 111011。新指针偏移是 基于总和142的第6位为1来确定的。此导致选择被加数138 (其为011101)作为新指 针偏移。所述新指针接着变为011101 + 100000= 111101。在第三实例中,设P=33(B100001), S-1(B000001)且D-正(BO)。在此状况下,来自 基址掩码产生器114的掩码为011111,来自与门122的指针偏移为000001且来自与门 120的指针基址136为100000 。来自M位加法器126的被加数138为 000001+000001+000010=011101。总和142变为000010+100001 = 100100。新指针偏移是 基于被加数138的第6位为1来确定的。此导致选择被加数138 (其为000010)作为新 指针偏移。所述新指针接着变为000010+100000= 100010。在第四实例中,设P=33(B100001), S二1(B000001)且D二负(B1)(其为下溢状况)。在 此状况下,来自基址掩码产生器114的掩码为011111,来自与门122的指针偏移为000001, 且来自与门120的指针基址136为100000。来自M位加法器126的被加数138为000001 + 111110 + 000001 =011101。总和142变为000000 + 011110 = 011110。新指针偏移是基 于总和142的第6位为1来确定的。此导致选择总和142 (其为011110)作为新指针偏 移。所述新指针接着变为011101+100000=111110。因此,所揭示的标的物提供一种用于可縮放可编程的循环式缓冲器100的指针计算 方法及系统,其中循环式缓冲器100的起始位置与对应于循环式缓冲器100的大小的二 的幂对准。 一个单独的寄存器含有循环式缓冲器100的长度。通过对准循环式缓冲器100的基址,所揭示的标的物仅需要减法运算来获得指针位置。以此过程,仅需要如本文所描述的使用两个M位加法器的两个加法。本发明的方法允许变动N及M以导出在若干 不同功率、速度及面积度量上最优系列的循环式缓冲器100。本发明的方法及系统支持 带正负号的偏移及可编程长度。另外,所揭示的标的物仅需要通用的M位加法器而无需于正跨步及负跨步使用同一数据路径。本发明的方法及系统具有起始位置S,其与对应于可含有缓冲器长度L的存储器大 小的二的幂对准。缓冲器长度L可需要或可不需要存储为DU68中的状态。所述过程占 用若干位B,其为大于L的二的幂。取位于基址与基址+L之间的指针R。所述过程接着 使用计算机指令并通过加上或减去常数来修改原始指针R以导出经修改的指针R'。接着, 通过将B位的最低有效位(LSB)设定为零来调整起始位置S。所述过程接着通过取S与L 的逻辑"或"来确定终止位置E。如果经修改指针R'是通过加上常数来导出的,则所述 过程包括从经修改指针R'中减去终止位置E以导出新偏移位置0。如果偏移位置O为正, 那么最终结果通过取所确定的起始位置S与所导出的偏移位置O的逻辑"或"来导出。 如果经修改指针R'是通过减去一个常数来导出的,那么所述过程包括从终止位置E中减 去经修改指针R'以导出新偏移位置O。如果对应于所修改指针R'的值B+l的位不等于对 应于原始指针R的值B+l的位,那么最终结果为用于确立新指针位置R'的新起始位置S 与新偏移O的逻辑"或"。否则,新偏移O确定经修改指针位置R'。对所揭示的标的物的更改可包括直接编码终止地址E,而非编码位的数目的长度L。 此可允许具有任意大小的循环式缓冲器,同时降低循环式缓冲器计算的大小及复杂度。为说明本发明的教示的又一应用,图8提供所揭示的标的物的替代性实施例,其作 为AGU80的一部分而用于DSP40中,其提供地址产生数据路径的两个相同例子, 一个 用于SLOTO, —个用于SL0T1。 AGU 80针对每一槽产生有效地址(EA)及自动递增地址 (AIA)两者。EA产生是基于寻址模式且可以(a)寄存器模式、(b)具有立即偏移的寄存器模 式及(c)位反转模式来评估。图8中显现的数据路径展示具有如下文所描述的最终3:1 EA 多路复用器的每一方法。因此,参看图8,显现地址产生过程160。在地址产生过程160中,期望从CU 60 输入到AGU 80中的立即偏移经正负号/零扩展成最大移位立即偏移宽度(19位)。AGU 80 将偏移正负号/零扩展成32位。图8的实施例也提供基于寻址模式的自动递增地址产生过程。自动递增地址产生过 程可以(a)添加立即偏移模式的寄存器,(b)添加M寄存器偏移模式的寄存器及(c)添加立 即偏移模式的寄存器循环来评估。图8的地址产生过程160展示这些方法中的每一者。应注意,非循环式自动递增地址计算是在AGU 80中完成的,其中在所说明的实例 中,循环式自动递增地址计算也需要ALU82。因为载入或存储指令不可两者均先递增以 产生EA且后递增以产生AIA,所以EA与AIA可共用同一加法器。18在循环式寻址模式中,地址产生过程160以由可为正或负的跨步隔离的存取来保持 循环式缓冲器100。将指针的当前值加到所述跨步。如果结果溢出或下溢循环式缓冲器 100的地址范围,则(分别)减去或加上缓冲器长度以使指针指回循环式缓冲器100内 的一位置。在DSP40中,循环式缓冲器100的起始地址与比缓冲器的长度大出最小的2的幂对 准。如果跨步(其为立即偏移)为正,那么加法可导致两个可能性。总和在循环式缓冲 器长度内,在所述状况下其为最终AIA值,或总和大于缓冲器长度,在所述状况下需要 减去缓冲器长度。如果跨步为负,那么加法可再次导致两个结果。如果总和大于起始地址,那么总和为最终AIA值。如果总和小于起始地址,则需要 加上缓冲器长度。此处数据路径利用起始地址与2("2)对准且长度需要小于2(1{+2)的事实, 其中K为指令指定的立即值。Rx [31:(K+2)]值在加法之前掩码为零。反向掩码保留字首 位[31:(K+2)]用于随后使用。当跨步(立即偏移)为正时,缓冲器溢出是通过在AGU 80 加法器中将经掩蔽的Rx加到跨步并在ALU 82加法器中从总和中减去所述长度来确定 的。如果结果为正,那么AIA [(K+2)-l:0]来自ALU 82加法器,否则结果来自AGU 80 加法器。AIA [31:(K+2)]等于Rx [31:(K+2)]。当跨步为负时,缓冲器下溢是通过在AGU加法器中将经掩蔽的Rx加到跨步来确定 的。如果此总和为正,那么AIA [(K+2)-l:0]来自AGU 80加法器。如果总和为负,那么 在ALU 82加法器中将长度加到总和,且AIA [(K+2)-l:0]来自ALU 82加法器。同样, AIA [31:(K+2)]等于Rx [31:(K+2)]。应注意,在ALU 82加法器中加上还是减去长度是由偏移的正负号来确定的。关于 POR选项的问题在于其添加一个与门,以执行对加法器的Rx输入的掩蔽(在关键路径 中)。替代性实施方案如下。在此状况下,将Rx加到跨步。掩蔽AGU80加法器的总和(其对AIA为非关键的), 使得仅总和[(K+2)-l:0]作为一个输入提供到ALU 82加法器,而长度或其二补数作为其它 输入提供。如果跨步为正,那么在ALU加法器中从经掩蔽总和中减去长度。如果结果为 正,那么AIA[(K+2)-l:0]来自AGU 80加法器且无溢出发生,否则结果来自ALU加法器 (溢出)。AIA[31:(K+2)]始终等于Rx [31:(K+2)]。如果跨步为负,则将AGU加法器总和[31:2^+2)]与Rx [31:(K+2)]进行比较。如果这 些字首位保持相同,则此意味着无下溢发生。在此状况下,AIA[(K+2)-l:0]来自AGU80 加法器。如果字首位不同,那么存在下溢。在此状况下,AGU80加法器中将长度加到经掩蔽总和。在此状况下,AIA[(K+2):0]来自AGU80加法器。再次,AIA [31:(K+2)]始终 等于Rx[31:(K+2)]。以此方法,从关键路径中消除掩码"与"。然而,添加28位比较器。 本文所描述的处理特征及功能可以各种方式实施。举例而言,不仅DSP40可执行上 述运算,而且本发明的实施例可实施于专用集成电路(ASIC)、微控制器、微处理器或经 设计以执行本文所描述的功能的其它电子电路中。因此,提供优选实施例的先前描述以 使所属领域的技术人员能制作或使用所主张的标的物。所属领域的技术人员将易了解对 这些实施例的各种修改,且本文所定义的一般原理可在不使用创新力的情况下应用于其 它实施例。因此,所主张的标的物并非意在限于本文所展示的实施例,而是符合与本文 所揭示的原理及新颖特征一致的最广泛范围。
权利要求
1.一种用于对循环式缓冲器进行寻址的方法,所述方法包含以下步骤确立所述循环式缓冲器的长度,所述长度用于限制所述循环式缓冲器的可寻址范围;确立所述循环式缓冲器的起始地址,所述起始地址与2的幂对准;确立所述循环式缓冲器的终止地址,所述终止地址位于距离所述起始地址所述长度处且比所述长度大出不到所述2的幂;确定所述循环式缓冲器内的地址的当前指针位置,所述当前指针位置介于所述起始地址与所述终止地址之间;确定所述起始地址与所述终止地址之间的位的跨步值;通过从所述当前指针位置移位所述跨步值的位的数目来确定所述循环式缓冲器内的新指针位置;及通过所述新指针位置与所述长度的算术运算来确定将位于所述循环式缓冲器内的经调整的指针位置。
2. 根据权利要求l所述的方法,其进一步包含在正跨步的情形下通过以下方式来设定 所述经调整的指针位置的位置的步骤(a)在所述新指针位置小于所述终止地址的情 形下,将所述经调整的指针位置调整为所述新指针位置;及(b)在所述新指针位置大 于所述终止地址的情形下,通过从所述新指针位置中减去所述长度来调整所述经调 整的指针。
3. 根据权利要求l所述的方法,其进一步包含在负跨步的情形下通过以下方式来设定 所述经调整的指针位置的位置的步骤(a)在所述新指针位置大于所述起始地址的情 形下,将所述经调整的指针位置调整为所述新指针位置;及(b)在所述新指针位置小 于所述起始地址的情形下,通过将所述长度加到所述新指针位置来调整所述经调整 的指针。
4. 根据权利要求l所述的方法,其进一步包含以下步骤在所述确定所述新指针位置 及确定所述经调整的指针位置的步骤之前将所述起始地址的最低有效位设定为零。
5. 根据权利要求l所述的方法,其进一步包含以下步骤在正跨步的情形下,通过在地址产生单元中将掩蔽地址作为所述当前指针加到所述正跨步并在算术逻辑单元 加法器中从总和中减去所述长度来导出所述经调整的指针位置。
6. 根据权利要求1所述的方法,其进一步包含在负跨步的情形下通过以下方式来导出 所述经调整的指针位置的步骤在地址产生单元中将掩蔽地址作为所述当前指针加 到所述负跨步,且在负总和的情形下,直接从所述地址产生单元中导出所述经调整 的指针位置;否则,通过在算术逻辑单元中将所述长度加到总和并从所述算术逻辑 单元中导出所述经调整的指针位置来导出所述经调整的指针位置。
7. 根据权利要求l所述的方法,其进一步包含以下步骤在产生所述新指针位置时, 使用与门来执行对所述当前指针输入的掩蔽以产生进入地址产生单元的加法器中 的输入。
8. 根据权利要求l所述的方法,其进一步包含以下步骤导出所述当前指针位置与所述跨步的总和;掩蔽所述总和并将所述总和作为第一输入提供到算术逻辑单元中的加法器电路, 并将所述长度或所述长度的二的补数作为第二输入提供到所述加法器电路。
9. 一种用于确立对循环式缓冲器的寻址的系统,其包含确立循环式缓冲器,所述循环式缓冲器包含所述循环式缓冲器的长度,所述长度用于限制所述循环式缓冲器的可寻址范 围所述循环式缓冲器的起始地址,所述起始地址与2的幂对准;所述循环式缓冲器的终止地址,所述终止地址位于距离所述起始地址所述长度 处且比所述长度大出不到所述2的幂;地址产生单元,其用于确定所述循环式缓冲器内的地址的当前指针位置,所述当 前指针位置介于所述起始地址与所述终止地址之间;跨步确定指令,其与所述地址产生单元相关联,用于确定所述起始地址与所述终 止地址之间的位的跨步值;新指针位置指令,其与所述地址产生单元相关联,用于通过从所述当前指针位置 移位所述跨步值的位的数目来确定所述循环式缓冲器内的新指针位置;及经调整的指针位置指令,其与所述地址产生单元相关联,用于通过所述新指针位 置与所述长度的算术运算来确定将位于所述循环式缓冲器内的经调整的指针位置。
10. 根据权利要求9所述的系统,其中所述经调整的指针位置指令进一步包含用于在正 跨步的情形下通过以下方式来设定所述经调整的指针位置的位置的指令(a)在所述 新指针位置小于所述终止地址的情形下,将所述经调整的指针位置调整为所述新指针位置;及(b)在所述新指针位置大于所述终止地址的情形下,通过从所述新指针位 置中减去所述长度来调整所述经调整的指针。
11. 根据权利要求9所述的系统,其中所述经调整的指针位置指令进一步包含用于在负 跨步的情形下通过以下方式来设定所述经调整的指针位置的位置的指令(a)在所述 新指针位置大于所述起始地址的情形下,将所述经调整的指针位置调整为所述新指 针位置;及(b)在所述新指针位置小于所述起始地址的情形下,通过将所述长度加到 所述新指针位置来调整所述经调整的指针。
12. 根据权利要求9所述的系统,其中所述新指针位置指令进一步包含用于在确定所述 新指针位置及确定所述经调整的指针位置之前将所述起始地址的最低有效位设定 为零的指令。
13. 根据权利要求9所述的系统,其中所述经调整的指针位置指令进一步包含用于在正 跨步的情形下通过以下方式来导出所述经调整的指针位置的指令在所述地址产生 单元中将掩蔽地址作为所述当前指针加到所述正跨步并在算术逻辑单元加法器中 从总和中减去所述长度。
14. 根据权利要求9所述的系统,其中所述经调整的指针位置指令进一步包含用于在负 跨步的情形下通过以下方式来导出所述经调整的指针位置的指令在所述地址产生 单元中将掩蔽地址作为所述当前指针加到所述负跨步,且在负总和的情形下,直接 从所述地址产生单元中导出所述经调整的指针位置;否则通过在算术逻辑单元中将 所述长度加到总和并从所述算术逻辑单元中导出所述经调整的指针位置来导出所 述经调整的指针位置。
15. 根据权利要求9所述的系统,其进一步包含算术逻辑单元,其用于与所述地址产生单元合作以确定所述当前指针位置、所述 跨步值及所述经调整的指针位置,且其中所述地址产生单元包含与门及加法器电路;且进一步其中所述经调整的指针位置指令包含用于在产生所述新指针位置时使用与门来执行对所述当前指针输入的掩蔽以产生进入地址产生单元的加法器中的输 入的指令。
16. 根据权利要求9所述的系统,其进一步包含算术逻辑单元,其用于与所述地址产生单元合作以确定所述当前指针位置、所述 跨步值及所述经调整的指针位置;求和指令,其与所述经调整的指针位置指令相关联,用于导出所述当前指针位置 与所述跨步的总和;及掩蔽指令,其用于掩蔽所述总和并将所述总和作为第一输入提供到算术逻辑单元 中的加法器电路,并将所述长度或所述长度的二的补数作为第二输入提供到所述加 法器电路。
17. —种用于处理数字信号且包含循环式缓冲器控制及寻址装置的数字信号处理器,其 包含用于确立所述循环式缓冲器的长度的装置,所述长度用于限制所述循环式缓冲器 的可寻址范围;用于确立所述循环式缓冲器的起始地址的装置,所述起始地址与2的幂对准; 用于确立所述循环式缓冲器的终止地址的装置,所述终止地址位于距离所述起始地址所述长度处且比所述长度大出不到2的幂;用于确定所述循环式缓冲器内的地址的当前指针位置的装置,所述当前指针位置介于所述起始地址与所述终止地址之间;用于确定所述起始地址与所述终止地址之间的位的跨步值的装置;用于通过从所述当前指针位置移位所述跨步值的位的数目来确定所述循环式缓冲器内的新指针位置的装置;及用于通过所述新指针位置与所述长度的算术运算来确定将位于所述循环式缓冲 器内的经调整的指针位置的装置。
18. 根据权利要求17所述的数字信号处理器,其进一步包含用于在正跨步的情形下通 过以下方式来设定所述经调整的指针位置的位置的装置(a)在所述新指针位置小于 所述终止地址的情形下,将所述经调整的指针位置调整为所述新指针位置;及(b) 在所述新指针位置大于所述终止地址的情形下,通过从所述新指针位置中减去所述 长度来调整所述经调整的指针。
19. 根据权利要求17所述的数字信号处理器,其进一步包含用于在负跨步的情形下通 过以下方式来设定所述经调整的指针位置的位置的装置(a)在所述新指针位置大于 所述起始地址的情形下,将所述经调整的指针位置调整为所述新指针位置;及(b) 在所述新指针位置小于所述起始地址的情形下,通过将所述长度加到所述新指针位 置来调整所述经调整的指针。
20. 根据权利要求17所述的数字信号处理器,其进一步包含用于在所述确定所述新指针位置及确定所述经调整的指针位置的步骤之前将所述起始地址的最低有效位设 定为零的装置。
21. 根据权利要求17所述的数字信号处理器,其进一步包含用于在正跨步的情形下通 过以下方式来导出所述经调整的指针位置的装置在地址产生单元中将掩蔽地址作 为所述当前指针加到所述正跨步,并在算术逻辑单元加法器中从总和中减去所述长 度。
22. 根据权利要求17所述的数字信号处理器,其进一步包含用于在负跨步的情形下通 过以下方式来导出所述经调整的指针位置的装置在地址产生单元中将掩蔽地址作 为所述当前指针加到所述负跨步,且在负总和的情形下,直接从所述地址产生单元 中导出所述经调整的指针位置;否则,通过在算术逻辑单元中将所述长度加到总和 并从所述算术逻辑单元中导出所述经调整的指针位置来导出所述经调整的指针位 置。
23. 根据权利要求17所述的数字信号处理器,其进一步包含用于在产生所述新指针位 置时使用与门来执行对所述当前指针输入的掩蔽以产生进入地址产生单元的加法 器中的输入的装置。
24. 根据权利要求17所述的数字信号处理器,其进一步包含用于导出所述当前指针位置与所述跨步的总和的装置;及用于掩蔽所述总和并将所述总和作为第一输入提供到算术逻辑单元中的加法器 电路并将所述长度或所述长度的二的补数作为第二输入提供到所述加法器电路的 装置。
25. —种计算机可用媒体,其具有实施于其中用于处理数字信号处理器上的指令的计算 机可读程序码装置,所述计算机可用媒体包含用于确立所述循环式缓冲器的长度的计算机可读程序码装置,所述长度用于限制 所述循环式缓冲器的可寻址范围;用于确立所述循环式缓冲器的起始地址的计算机可读程序码装置,所述起始地址 与2的幂对准;用于确立所述循环式缓冲器的终止地址的计算机可读程序码装置,所述终止地址位于距离所述起始地址所述长度处且比所述长度大出不到所述2的幂;用于确定所述循环式缓冲器内的地址的当前指针位置的计算机可读程序码装置,所述当前指针位置介于所述起始地址与所述终止地址之间;用于确定所述起始地址与所述终止地址之间的位的跨步值的计算机可读程序码 装置;用于通过从所述当前指针位置移位所述跨步值的位的数目来确定所述循环式缓 冲器内的新指针位置的计算机可读程序码装置;及用于通过所述新指针位置与所述长度的算术运算来确定将位于所述循环式缓冲 器内的经调整的指针位置的计算机可读程序码装置。
26. 根据权利要求25所述的计算机可用媒体,其进一步包含用于在正跨步的情形下通 过以下方式来设定所述经调整的指针位置的位置的计算机可读程序码装置(a)在所 述新指针位置小于所述终止地址的情形下,将所述经调整的指针位置调整为所述新 指针位置;及(b)在所述新指针位置大于所述终止地址的情形下,通过从所述新指针 位置中减去所述长度来调整所述经调整的指针。
27. 根据权利要求25所述的计算机可用媒体,其进一步包含用于在负跨步的情形下通 过以下方式来设定所述经调整的指针位置的位置的计算机可读程序码装置(a)在所 述新指针位置大于所述起始地址的情形下,将所述经调整的指针位置调整为所述新 指针位置;及(b)在所述新指针位置小于所述起始地址的情形下,通过将所述长度加 到所述新指针位置来调整所述经调整的指针。
全文摘要
本发明揭示用于处理用于包括在通信(例如CDMA)系统中的多种应用的数字信号的技术。通过确立循环式缓冲器的长度、与2的幂对准的起始地址及位于距离所述起始地址所述长度处且比所述长度大出不到2的幂的终止地址来确定循环式缓冲器内的指针位置。所述方法及系统确定循环式缓冲器内的地址的当前指针位置、起始地址与终止地址之间的位的跨步值、循环式缓冲器内的将当前指针位置加到所述跨步值的新指针位置。经调整的指针位置通过所述新指针位置与所述长度的算术运算而在所述循环式缓冲器内。
文档编号G06F9/355GK101331449SQ200680046767
公开日2008年12月24日 申请日期2006年10月20日 优先权日2005年10月20日
发明者卢西恩·科德雷斯库, 埃里希·普罗恩德克, 威廉·C·安德森, 茂 曾, 穆罕默德·艾哈迈德, 苏贾特·贾米尔 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1