以单精度或双精度进行算术运算的系统.pdf

上传人:li****8 文档编号:4021168 上传时间:2018-08-11 格式:PDF 页数:33 大小:1.35MB
返回 下载 相关 举报
摘要
申请专利号:

CN97190111.2

申请日:

1997.02.27

公开号:

CN1180427A

公开日:

1998.04.29

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回||||||公开

IPC分类号:

G06F7/00; G06F7/38; G06F15/00; G06F15/76; G06F15/78; G06F15/80

主分类号:

G06F7/00; G06F7/38; G06F15/00; G06F15/76; G06F15/78; G06F15/80

申请人:

爱特梅尔股份有限公司;

发明人:

朱曼纳·A·穆瓦菲; 密兰·陀里奎安

地址:

美国加利福尼亚州

优先权:

1996.02.28 US 08/607,937

专利代理机构:

上海专利商标事务所

代理人:

孙敬国

PDF下载: PDF下载
内容摘要

算术操作单元(AMU)进行关于在单精度模式下的N比特字和在双精度模式下的2N比特字的算术运算。较佳的是,AMU只在两个流水线周期内进行双精度运算:第一个周期,其中用符号扩展单元(42)和多路复用器(MY)通过串接两个N比特部分生成第一个2N比特操作数,并将操作数输入输出寄存器(46);第二个周期,其中生成第二个2N比特操作数(从第二对N比特部分),从输出寄存器反馈第一个操作数,而且由算术逻辑单元(ALU44)进行关于两个操作数的算术运算。包括这种AMU电路的系统还包括多端口存储器(6)和在单个周期内运用地

权利要求书

1: 一种电路,它能够响应于控制信号在单精度模式和双精度模式的选中的一 种模式下运算,进行关于数据的至少一种算术运算,其中通过以流水线方式执行 指令而生成所述控制信号,其特征在于,所述电路包括: 算术逻辑装置,它用于进行关于第一操作数和第二操作数的至少两种算术运 算中选中的一种,从而生成输出字,所述算术逻辑装置具有用于接收所述第一操 作数的第一输入和用于数据所述第二操作数的第二输入; 累加器寄存器,它用于接收来自所述算术逻辑装置的所述输出字;和 操作数电路,其中所述操作数电路包括: 第一输入,它与用于向所述算术逻辑装置发出所述第一操作数的所述算术逻 辑装置的所述第一输入相连; 第二输入,它与用于向所述算术逻辑装置发出所述第二操作数的所述算术逻 辑装置的所述第二输入相连; 第三输入,它用于接收第一个N比特数据字; 第四输入,它用于接收第二个N比特数据字;和 装置,它能够响应于所述控制信号的子集在所述单精度模式和所述双精度模 式的选中的一种模式下运算,用于将所述第一个N比特数据字与所述第二个N比 特数据字串接,从而在双精度模式下在单个流水线周期内生成第一个2N比特操 作数并向所述第二输出发出所述第一个2N比特操作数,还用于在所述单精度模 式下向所述第一输出发出所述第一个N比特数据字作为第一个N比特操作数,并 向所述第二输出发出所述第二个N比特数据字作为第二个N比特操作数,其中所 述算术逻辑装置是可控制的以在双精度模式下在所述单个流水线周期内对所述 累加器寄存器发出未加改变的所述第一个2N比特操作数。
2: 如权利要求1所述的电路,其特征在于,所述操作数电路还包括: 能够在双精度模式下进行运算的装置,它用于从所述累加器寄存器向所述第 二输出发出所述输出字,以使所述算术逻辑装置能够在所述双精度模式下处理所 述输出字作为第二个2N比特操作数。
3: 如权利要求2所述的电路,其特征在于,N=16。
4: 如权利要求1所述的电路,其特征在于,所述算术逻辑装置是可控制的, 以执行关于所述第一操作数和所述第二操作数的AND运算、同或运算、异或运 算、加法运算、和减法运算中选中的一种运算,从而生成所述输出字。
5: 如权利要求1所述的电路,其特征在于,所述算术逻辑装置也是可控制的, 以执行在下列运算中选中一种运算:关于所述第一操作数和所述第二操作数的 AND运算、关于所述第一操作数和所述第二操作数的同或运算、关于所述第一操 作数和所述第二操作数的异或运算、关于所述第一操作数和所述第二操作数的加 法运算、关于所述第一操作数和所述第二操作数的减法运算、决定所述第一操作 数和所述第二操作数的较大者的最大运算、决定所述第一操作数和所述第二操作 数的较小者的最小运算、和决定所述第一操作数和所述第二操作数之间差的绝对 值的绝对距离运算。
6: 数字信号处理系统,其特征在于,包括: 装置,它用于以流水线方式执行指令,从而生成一系列控制信号; 多端口数据存储器; 装置,它用于在第一个流水线周期内,响应于第一组所述控制信号从数据存 储器读取两个N比特数据字;和 算术操作单元,它接收所述两个N比特数据字,并包括能够响应于第二组所 述控制信号在单精度模式下进行运算以在第二个流水线周期内进行单精度算术 运算的处理装置,其中所述处理装置能够响应于第三组所述控制信号在双精度模 式下进行运算,以在所述第二个流水线周期内进行双精度算术运算,其中所述每 个N比特数据字作为N比特操作数以单精度算术运算处理,而且其中所述处理装 置包括用于在进行双精度算术运算之前的第二个流水线周期内串接所述N比特 字以生成第一个2N比特操作数的装置。
7: 如权利要求6所述的系统,其特征在于,用于读取的所述装置包括地址生 成装置,所述地址生成装置用于在所述第一个流水线周期之前的流水线周期内响 应于一个地址指针生成两个地址信号的,其中每个所述地址信号表示不同的一个 N比特数据字的地址,而且由所述第一组所述控制信号决定所述地址指针。
8: 如权利要求7所述的系统,其特征在于,将所述N不同字存储在所述数据 存储器中的连续单元内,所述地址指针表示所述单元的第一个单元,而且所述地 址生成装置包括一个电路,它用于处理所述地址指针从而生成表示所述单元的第 二个单元的地址信号。
9: 如权利要求8所述的系统,其特征在于,所述电路包括: 用于只反相所述地址指针的最低有效位的装置。
10: 如权利要求7所述的系统,其特征在于,所述地址生成装置还包括用于在 所述第一个流水线周期之前的流水线周期内响应于两个地址指针生成两个其它 地址信号的装置,其中所述两个其它地址信号中的每个信号表示不同的一个所述 N比特数据字的地址,而且由所述第一组控制信号决定所述地址指针。
11: 如权利要求6所述的系统,其特征在于,所述算术操作装置包括: 算术逻辑装置,它用于进行所述单精度算术运算和所述双精度算术运算的选 中的一种运算,从而生成输出字;和 累加器寄存器,它用于接收所述输出字。
12: 如权利要求11所述的系统,其特征在于,所述算术操作单元还包括: 能够在双精度模式下操作的装置,它用于从所述累加器寄存器向所述算术逻 辑装置的输入端发出所述输出字,以使所述算术逻辑装置能够在所述双精度模式 下,处理所述输出字作为与所述第一个2N比特操作数一起的第二个2N比特操作 数。
13: 如权利要求11所述的系统,其特征在于,所述算术逻辑装置是可控制的 以把第一个2N比特操作数未加改变地直接传送到所述累加器寄存器。
14: 如权利要求6所述的系统,其特征在于,所述算术操作单元包括: 算术逻辑装置,它用于所述单精度算术运算和所述双精度算术运算的选中的 一种运算,从而生成输出字,其中所述算术逻辑装置是可控制的以执行在下列关 于第一个操作数和第二个操作数的运算中选中的一种运算:AND运算、同或运 算、异或运算、加法运算和减法运算,从而生成所述输出字。
15: 如权利要求6所述的系统,其特征在于,所述算术操作单元包括: 算术逻辑装置,它用于进行所述单精度算术运算和所述双精度算术运算的选 中的一种运算,其中所述算术逻辑装置是可控制的以执行在下列运算中选中的一 种运算:关于第一个操作数和第二个操作数的AND运算、关于所述第一个操作 数和所述第二个操作数的同或运算、关于所述第一个操作数和所述第二个操作数 的异或运算、对于所述第一个操作数和所述第二个操作数的加法运算、对于所述 第一个操作数和所述第二个操作数的减法运算、决定所述第一个操作数和所述第 二个操作数的较大者的最大运算、决定所述第一个操作数和所述第二个操作数的 较小者的最小运算、和决定所述第一个操作数和所述第二个操作数之间的差的绝 对值的绝对距离运算。

说明书


以单精度或双精度进行算术运算的系统

    【技术领域】

    本发明涉及用于进行对于带有单精度或双精度数据的算术运算的电路,并涉及包括这种电路的数字信号处理系统。在较佳实施例中,本发明是一种电路,它以单精度(其中,它进行关于16比特数据字的算术运算)或双精度(其中,它进行关于32比特数据字的算术运算)模式有选择地运算。

    背景技术

    在整个说明书和权利要求书中,将术语“操作数”用于表示表明数据的信号,其中试图通过进行关于所述信号的算术运算来处理该信号。在整个说明书和权利要求书中,将措词“算术运算”用于表示实现关于两个操作数的算术运算(诸如减法)或逻辑运算(诸如“AND”或“OR”运算)的信号处理运算。

    在现有技术中已知数字信号处理器(DSP)有许多不同的实现。传统DSP典型地采用两个物理上分开的存储器单元:用于存储由DSP执行的指令的程序存储器;和由于执行指令而用于存储由DSP处理的数据(还可以是已经被处理过的数据)地数据存储器。程序存储器可以是只读存储器(ROM)或可将指令号或读取的随机存取存储器(RAM)。数据存储器典型地是可以写入数据并从其可以读取数据的RAM。

    图1是数字信号处理器(DSP)的方框图,所述数字信号处理器具有程序存储器、与程序存储器物理上分开的数据存储器、和可以用本发明具体实现(如下所述)的那种类型的算术计算单元(ACU)10,以体现本发明。图1的DSP包括数据存储器6(与地址总线AB0和AB1及数据总线DB0和DB1相连)、程序存储器4、程序控制单元(PCU)2、存储管理单元(MMU)3、算术计算单元(ACU)10、和输入/输出单元(IOU)12。

    在对于某些应用的较佳实现中(诸如参照图2所述的),程序存储器4是具有32比特宽和64K字深的存储单元阵列的单端口、只读存储器(ROM),而数据存储器6是具有16比特宽和64K字深的存储单元阵列的双端口、随机存取存储器(RAM)。在这种实现中,双端口存储器6的一个端口可以接收16比特地址(从16比特地址总线AB0),并与此同时,存储器6的另一个端口可以接收另一个16比特地址(从16比特地址总线AB1)。提供的控制装置,使得能从存储器6同时进行两个读取、同时对存储器6读取和写入、或从存储器6进行单独读取(或写入)。

    MMU3最好包括两个独立的地址生成单元,它用于生成两个地址信号(每个单元识别在存储器6中用于写入数据或从其读取数据的存储单元)并向地址总线AB0和AB1发出这种地址信号。更准确地说,响应于来自PCU2的控制位(它是通过译解来自程序存储器4的指令在PCU2中生成的),MMU3在地址总线AB0和/或地址总线AB1上发出地址信号。将数据从由每个地址识别的存储单元(在存储器6中)读入数据流水线寄存器M0或流水线寄存器M1(或者将数据从数据总线RB0和/或数据总线RB1写入由每个地址识别的存储单元)。

    MMU3最好包括一组有八个地址指针的寄存器(例如,图5所示的寄存器r0-r7,每个寄存器用于存储可向总线AB0或AB1发出的16比特地址)、用于每个地址指针寄存器的8比特指针修改寄存器(例如,图5所示的寄存器S0-7),和用于将任一被选地址指针寄存器的内容与相应指针变址寄存器的内容相加并将相加的结果写回到地址指针寄存器(响应于来自PCU2的控制位)的16比特加法器。MMU3还可以包括其它寄存器(例如,如图5所示的基址寄存器BADR、和循环缓冲长度寄存器CL0和CL1),其中将所述寄存器用于响应于来自PCU2的控制位而改变选中的一个地址指针寄存器和指针变址寄存器的内容,或者用于存储向总线AB0或AB1发出的一个或多个地址。

    可将本发明的地址生成电路(在下文中描述)包括在MMU3中。

    在图1的DSP中,第一数据总线DB0和第二数据总线DB1最好是16比特宽。在对图1系统的变动中,用于实现本发明而对它进行编程的DSP可具有单端口数据存储器(而不是双端口数据存储器),和单地址总线及单个数据总线(而不是双地址总线和双数据总线)。

    PCU2(在下文中,将参照图3描述其较佳实现)包括取指令装置(用于从程序存储器4取指令)、指令译码单元、和用于存储在译码单元中生成的控制位(用于向MMU3、数据总线DB0、或取指令装置发出)的寄存器。

    算术计算单元(ACU)10最好包括并行计算(响应于来自PCU2的控制位)以有效地进行乘法和累加运算的两个乘法及累加(MAC)单元(即,图5的MAC0和MAC1),和用MAC单元并行运算(响应于来自PCU2的控制位)的运算操作单元(即,图5的AMU)。众所周知,将AMU设计成能够进行关于两个操作数的任何一种选中的算术运算,诸如加法、减法、max(决定两个操作数的较大者)、min(决定两个操作数的较小者)、absd(决定两个操作数之间差的绝对值)、和逻辑“AND”,“Or”和“Xor”运算。可将本发明的AMU(在下文中将要讨论的较佳实施例)包括在ACU中。

    参照图1,IOU12包括用于监督在地址总线AB0和AB1上的地址以决定被执行存取的存储器类型的装置。如果地址在预定地址范围外(即,用于除存储器6之外的外部存储器的地址,通过与总线AB0和/或AB1相连的端口可访问它),那么IOU12对PCU2设定一标记。PCU2可以响应这种标记而发出用于较慢存储器存取的等待状态。

    在用于通信操作的DSP中,理想地实现了本发明。例如,当根据本发明实现图1的DSP时,打算将该DSP(在图2中标记为处理器200)包括在图2所示的那种类型的移动式数字电话系统中。在图2中的系统中,DSP200的串行端口SIO接收来自音频编码译码单元(codec)206的数字化语音,而且DSP200将数字音频数据(通过端口SIO)传送给编码译码单元206用于转换成模拟形式并将它发送到扬声器。通过模拟前端电路204,还将DSP200与RF收发机208相连。电路204包括一种装置,它用于将从收发机208接收到的信号数字化(用于通过在DSP200内的装置进行基带处理),并用于将来自DSP200的数字数据转换成用于由收发机208发送的持续模拟信号。在典型的实现中,电路204中断DSP200以表明要求数据或数据存在(并将电路204映射到DSP200的存储器地址,从而电路204可以有效地在DSP200内的一根数据总线上通信)。微控制器202向图2系统的其它所有元件提供控制信号,并控制在图2系统(它典型的是移动站)和远程基站之间的通信。典型地,将微控制器202与DSP200的并行端口(PIO)相连。

    用于进行双精度运算(关于2N比特操作数)的传统电路需要多重处理周期以把单个2N比特操作数输入累加器(例如,它们将操作数的第一个N比特部分输入累加器的高位,在另一个周期内将第一个N比特部分移到累加器的低位,并通过在另一个周期内进行OR运算将第一个N比特部分与第二个比特部分串接在一起)。用于进行双精度运算(关于2N比特操作数)的传统电路需要多于两个的处理周期以进行关于两个操作数的算术运算(例如,它们将第一操作数的第一个N比特部分输入寄存器、在第二个周期内将第一操作数的第一个N比特部分与第二操作数的第一个N比特部分相加、在第三周期内将结果移到加法器的低位、在第四个周期内将第一操作数的第二个N比特部分(和来自前一个加法运算的进位位)与累加器的内容相加)。本发明能够在单个处理周期内将2N比特操作数(以运算的双精度模式)输入累加器。本发明还能够在不多于两个处理周期(每个算术运算)内进行在八种或更多种不同的双精度算术运算中选中的一种运算。

    发明概述

    在一类实施例中,本发明是用于进行关于数据的单精度或双精度算术运算的电路。在较佳实施例中,电路是具有两个运算模式的算术操作单元(AMU):单精度模式,其中它进行关于N比特数据字(在一个这样的实施例中,N=16)的算术运算;和双精度模式,其中它进行关于2N比特数据字的算术运算。AMU最好包括在双精度模式下工作以串接两个N比特数据字然后产生2N比特操作数的电路,以及用于进行关于操作数和第二个2N比特操作数的几个算术运算中选中一种运算(响应于控制信号)的电路。典型的是,将第二个操作数从AMU的输出寄存器反馈到AMU的输入。较佳的是,AMU在两个周期内,对来自数据存储器的两个2N比特字进行选中的双精度算术运算:在第一个周期中,生成第一个2N比特操作数(通过串接从存储器读取的两个N比特部分)并将它输入到AMU的输出寄存器;和在第二个周期中,生成第二个2N比特操作数(通过串接从存储器读取的第二对N比特部分),从输出寄存器反馈第一个操作数,而且进行关于两个操作数的算术运算。

    其它实施例是数字信号处理系统,每个包括下列的任何实施例:发明的AMU、用于以流水线方式执行指令的装置、多端口数据存储器(至少具有两个端口)、和用于在单个流水线周期内从数据存储器读取两个N比特数据字(每个从存储器的不同单元读取)的装置,在单个流水线周期内系统可以运用两个地址指针从数据存储器取两个N不同操作数(每个指针表示一个操作数的单元),然后使AMU进行关于操作数的单精度运算。

    在双精度模式下,系统的较佳实施例控制AMU以使它在单个流水线周期内串接从数据存储器读取的两个N比特字,从而产生2N比特操作数。经常,但不是必须将每个2N比特操作数的两个N比特部分存储在数据存储器中的连续单元内。为了在单个周期内只运用一个地址指针取出存储在连续单元中的两个N比特部分,系统包括了用于对一个地址指针响应而生成并向存储器发出两个连续地址的装置。例如,当将两个N比特部分存储在存储器中的连续单元内,而且指针识别偶地址时,从由那个地址决定的存储单元取出第一个N比特部分,而从由下一个奇地址决定的存储单元取出第二个N比特部分。又例如,当将两个N比特部分存储在存储器中的连续单元内,而且指针识别奇地址时,从由那个地址决定的存储单元取出第一个N比特部分,而从由前一个偶单元决定的存储单元取出第二个N比特部分。系统最好可以在双精度模式下进行运算,以在单个流水线周期内响应于两个地址指针从数据存储器取出一个2N比特操作数的两个N比特部分(每个指针表示一个N比特部分的地址),而且所得AMU进行关于2N比特操作数(通过串接两个部分生成)和第二个2N比特操作数(从AMU的输出寄存器)的双精度运算。

    通过提供响应于单个地址指针取出2N比特操作数的两个N比特部分的能力,本发明使系统能够比起需要两个地址指针来从数据存储器取出2N比特操作数(供执行每个双精度算术运算之用)的系统执行更多的不同程序(包括更有效的编码程序),所述程序包括用于双精度算术运算的指令。

    【附图说明】

    图1是数字信号处理系统(DSP)的方框图,其中所示数字信号处理系统包括可以具体实现本发明的程序存储器、双端口数据存储器、通用数据总线(DB0和DB1)、和专用写入总线(WB)。

    图2是包括图1的DSP的移动数字电话系统的方框图。

    图3是图1的DSP的程序控制单元(PCU2)的较佳实现的方框图。

    图4示出图1和3的DSP更好地执行来自程序存储器4的指令序列的流水线法。

    图5是示出包括在图1的DSP中的寄存器和总线及它的算术计算单元(ACU)10的较佳结构的方框图。

    图6是图5的DSP的算术操作单元(AMU)的实施例的方框图。

    图7是具体体现本发明的图6电路的单元42和多路复用器M4的较佳实现的方框图。

    图8是包括在本发明较佳实施例中的图1的MMU3的一部分较佳实现的方框图。

    图9是示出ALU44的较佳实现的图6的一部分AMU的方框图。

    执行本发明的最佳模式

    在较佳实施例中,参照图1、3、4和5描述的并可以包括在图2系统中的那种类型的数字信号处理器实现本发明。DSP包括MMU3,它具有用于响应于指定单地址指针的来自PCU2的控制信号而生成两个地址信号(在系统的单个流水线周期内)的“双地址生成”电路(例如,参照图8将要描述的电路)。然后,将双地址信号用于从数据存储器6读取单个2N比特字的两个N比特部分(在下一流水线周期内)。于是典型地,AMU接收并处理两个N比特部分以生成一个2N比特字,而且AMU将2N比特字作为操作数处理,同时执行双精度算术运算(都在单个流水线周期内)。典型地,只有当系统以双精度模式运算时(即,当它响应从存储器4读取的一组一个或多个指令时,其中指令指定了由在ACU10内的AMU要执行的一个或多个双精度算术运算),双地址生成电路进行运算。

    典型地,当系统以单精度模式运算时(其中,它响应于从存储器4读取的一组一个或多个指令,所述指令指定了由在ACU10内的AMU要执行的一个或多个单精度算术运算),双精度生成电路不进行运算。相反,典型地,在单精度模式期间,MMU3响应于指定两个地址指针的来自PCU2的控制信号而生成两个地址信号(用于从数据存储器6读取两个N比特操作数)。在单个流水线周期内,生成这两个地址信号,在下一个流水线周期内系统从数据存储器6读取两个操作数(运用两个地址信号),而且在第三个流水线周期内AMU进行关于操作数的单精度运算。当执行一些算术运算时(例如,恒等运算),AMU进行关于单精度操作数的运算(从而,在这种运算前,只需要向AMU提供一个操作数)。

    本发明的AMU最好包括图7所示的那种类型的电路和图6所示的那种类型的电路,其中图7所示的电路用于接收并串接来自存储器6的两个N比特字,从而在单个流水线周期内产生2N比特操作数,而图6所示的电路用于在相同的流水线周期内进行关于2N比特操作数的算术运算。

    接着,参照图3-8,我们将更加详细地描述本发明的DSP的较佳实施例。

    图3示出发明的DSP的较佳实施例的程序控制单元(PCU)的较佳实现。图3的PCU2接收(在指令寄存器IR处)来自程序存储器4的一系列32比特指令、生成用于控制指令执行的控制信号、并将控制信号存储在寄存器cPCU、cACU、cMMU、cIOU和cIRupt中选中的一个寄存器中。

    如图3所示,PCU2包括用于存储一系列16比特指令地址的程序计数存储器PC(供访问程序存储器4的地址之用),和用于响应于从寄存器PC向存储器4提供的每一个指令地址而接收从程序器4读取的32比特字(数据值或指令)的指令寄存器IR。在执行包括一系列指令的程序中,PCU2将一系列16比特指令地址输入用于访问程序存储器4的地址的寄存器PC中,而且指令寄存器IR(和/或下面将要讨论的寄存器LIM)接收来自存储器4的一系列32比特字(存储器4响应于从寄存器PC向存储器4发出的每一个16比特指令地址而向寄存器IR或寄存器LIM发出一个32比特字)。

    PCU2还包括指令解码单元20,它包括用于接收并处理来自指令寄存器IR的逻辑单元。响应于在寄存器IR中的每一个指令字,单元20译解这种字以生成来自它的一系列用于控制系统操作的控制位(例如,从单元20向寄存器cMMU发出的控制位,然后从寄存器cMMU向MMU3发出的供控制从数据存储器6读取数据之用的控制位或者从单元20向寄存器cACU发出的控制位,然后从cACU向ACU10发出的供控制由ACU10的AMU执行的单精度或双精度算术运算之用的控制位)。

    图3的PCU2还包括栈逻辑单元15(包括“栈顶”寄存器TSTK)、加法器18、和循环单元16。在美国专利申请,S.N.,第08/581,167号中描述了循环单元16的较佳实现(在1995年12月29日申请的)。

    每当寄存器PC向程序存储器4发出指令时(在下面将要介绍的流水线运算的每个“取”周期内),加法器18递增这个指令地址(通过将“1”与它相加)。可以直接向寄存器PC或栈逻辑单元15发出在加法器18的输出端发出的递增地址。在一种运算模式中,从加法器18向寄存器PC发出递增地址。在另一个运算模式中,用寄存器TSTK的内容更新寄存器PC(而不是用加法器18的输出)。

    栈逻辑块15实现用于执行子程序分枝跳转的程序调用和返回的16级深硬件先进后出(LIFO)栈。栈指针选择存取16个寄存器中的那一个寄存器。从寄存器TSTK的读取(到寄存器PC)使得堆栈弹出,而对寄存器TSTK的写入则将返回地址压入堆。在执行来自存储器4的一系列指令的适当时候,把来自加法器18的递增地址写入栈寄存器的栈顶(从而递增地址是输入程序数寄存器PC的下一个地址)。

    当实现下面参照图4将要叙述的5级指令流水线时,它用两个周期执行程序跳转,具体如下。在取周期内,从存储器4取跳转指令并将它存在寄存器IR中,然后,在译码周期内,单元20译解在寄存器IR中的指令,而且将跳转地址设置在寄存器PC中以使程序跳转到新地址,如果指令是调用指令,那么在相同的周期内,将返回地址压入堆栈中由递增的栈指针指向的单元。然后,当发生从子程序的返回时,将这个单元的内容(即,返回地址)输入寄存器PC,并递减堆栈指针。

    循环单元16包括逻辑电路,它用于响应于由单元20产生的控制位(可将它存储在寄存器CPCU中,然后从寄存器CPCU向单元16发出)按预先所指定的次数而重复执行一组指令。较好的是,独立于单元16的操作(执行被循环的指令)而进行单元16的初始化,从而不必响应于直接位于要循环指令前的初始化字节而进行初始化。同时较好的是,设计单元16,从而它既不需要在要循环的指令组的开头部分有特殊的“循环启动”指令,也不需要在该指令组的结尾部分存特殊的“专用跳转”指令。

    PCU2最好包括用于存储在系统操作的适当时候向总线DBO发出控制位和状态位的附加寄存器(例如,重复计数寄存器RC、后移位寄存器PSR、算术操作单元移位寄存器ASR、状态寄存器SRG、SRA及SRM、和控制/模式寄存器CMR,如图5所示)。

    图4示出5级指令流水线,根据它,发明的DSP的较佳实施例(包括参照图3所述的PCU2)较好地执行来自存储器4的一系列指令。该流水线是在执行一个指令需要5个时钟周期(称为“取”、“译码”、“读取”、“执行”和“写”周期)意义上的“5级”每个时钟周期内可以接收来自程序存储器4的新指令,从而每个指令的有效时钟周期数(在许多时钟周期上求平均值)是1。数据存储器(存储器6)的存取是指令的一部分,在这个意义上,流水线是用“寄存器-存储”体系结构实现的。这与“输入-存储”体系结构的不同之处在于,仅用传送操作(例如,特定的“输入”和“存储”指令)存取存储器。

    在流水线的第一个(取)周期内,从程序存储器4取一个字(典型的是,它为指令)。下面关于流水线的描述(参照图4)假设字为指令。同样在取周期内,将存储器4取得的指令放入指令寄存器IR,并用新的指令地址(它可以是在加法器18的输出发出的递增地址)更新程序计数寄存器PC。

    然后,在流水线的译码周期内,指令译解单元20接收并译解在寄存器IR中的指令,从而生成用于控制指令执行的控制信号(控制位)。单元20把控制信号存储在指令控制寄存器cPCU、cACU、cMMU、cIOU和cIRupt中选定的一个寄存器中,具体如下:把用于ACU10的控制位存储在寄存器cACU中、把用于存储器管理单元20的控制位(诸如控制位src0、scr1、scr2)存储在寄存器cMMU中、把用于PCU2的控制位存储在寄存器cPCU中、把用于IOU12的控制位存储在寄存器cIOU中、而把用于中断控制器(任选地包括在IOU12内)的控制位存储在寄存器cIRupt中。此外,MMU3接收由单元20在译码周期内生成的任何控制位src0、scr1和/或scr2、MMU3至少译解这些控制位中决定用于从存储器6读取数据的地址的那些控制位、而且MMU3生成进行这种读取操作所需的地址信号(从而,MMU3准备好在流水线的下一个周期(即,指令的“读”周期)的开始时候向地址总线AB0和/或地址总线AB1发出这些地址信号)。

    然后,在读周期内,从数据存储器6内的一个或二个单元读取数据。把从一个这样的单元读取的数据写到寄存器M0(如图,所示),而把从其它单元读取的数据写到寄存器M1(同样如图1所示)。在读周期内,还进行由MM3执行的地址信号的任何后置修改(从而,在这一个读和/或写周期内,可以运用修改的地址信号)。在读周期内,还给在前一个“取”周期内从程序存储器4取的任何数据值(相对于指令而言)装入管道(转移到它们适当的接收点)。

    然后,在“执行”周期内,进行关于数据值的计算(典型的是由ACU10执行),所述数据值存在于用于进行这种计算的每个数据处理单位(例如,在如图5所示的ACU10中的算术操作单位“AMU”或乘法/累加单元“MAC0”和“MAC1”中的一个)的源寄存器中。例如,在执行期间内,ACU10接收并处理来自合适的寄存器(例如,在PCU2中的寄存器LIMP或SIMP、或者寄存器MD或M1、或者在ACU10内的寄存器)的数据值。每个数据处理单元把结果处理的数据值放置在合适的寄存器中(例如,在ACU10内的累加器寄存器a0、a1、a2和a3中合适的一个寄存器,如图5所示)。

    然后,在最后一个(“写”)周期内,将处理的数据值写回到存储器6。同样任选地,在将处理过的数据值写入存储器6之前,进行关于它们的一些诸如后移的后处理(例如,由在ACU10内的后移80进行,如图5所示)。

    下面将参照图5讨论图4流水线的“读”和“写”周期的较佳实现的附加细节。

    在解码周期内从PCU2向MMU3发出的控制位包括决定地址的位(典型的是,这些位决定一个或两个地址指针,而且每个地址指针决定一个或两个地址),而且地址反过来决定存储器5的存储单元,从该单元读取数据(在读周期内)或将处理过的数据写入该单元(在写周期内)。

    例如,在解码周期内,PCU2可以向MMU3发出控制位src0、src1和/或src2,其中这些控制位中的一些控制位决定从存储器6的两个单元读取的两个数据值的地址(在指令的读周期内),而剩下控制位决定存储器6的单元地址,其中将处理过的数据值(在紧接着读周期后的执行周期内生成的)写入该单元(在紧接着执行周期后的写周期内)。可用几种方法中的任何一种控制MMU3来生成决定这三个地址的地址信号。例如,字段src0可以决定与8比特“基”址(预存储在MMU3内的寄存器BADR中,如图5所示)串接的8比特偏移位,然后在地址总线AB0或AB1上发出16比特地址。又例如,字段src1可以决定目的地(地址指针寄存器r0-r7中的一个)和源(例如,在MMU3外部并沿着总线DB0连接的寄存器,或者当MMU3在循环地址模式下操作时在MMU3内的循环地址寄存器CL0或CL1中的一个,或者当MMU3在后修改模式下(其中,用在寄存器s0-s7中的一个寄存器中的值修改在目的地中的预存储地址)操作时在MMU3内的指针修改量寄存器s0-s7中的一个)。然后,或者在译码周期内(其中,在目的地中的地址是用于操作的),或者在读周期内(其中,在目的地中的地址是用于写操作的),将在源中的地址(或者由在源中的地址决定的地址)输入到目的地。后操作(在读周期内进行)的一个例子是通过用寄存器s0-s7中的一个寄存器中的值至少重写它的一部分,后修改在寄存器r0-r7中的一个寄存器中的预存储地址。

    在下面的意义上讲,MMU3为用于读和写操作(用于执行单个指令)的地址装管道。在指令的读周期一开始的时候,MMU3在地址总线AB0和/或地址总线AB1上发出地址(供从存储器6读取数据之用)。然而,MMU3延迟在地址总线AB0或地址总线AB1上地址(供将处理过的数据写入存储器6之用)的发出,直至指令的写周期开始,即使MMU3可能在前一个流水线周期内生成这个地址(响应于在指令的解码周期内从PCU2接收到的控制位)。

    较佳的是,DSP包括用于在指令流水线的写周期内,将处理过的数据位从数据处理单元(例如,如图5所示的ACU10)写入数据存储器(例如,如图5所示的存储器6)的专用总线。更精确地说,如图5所示,ACU10最好包括累加器寄存器a0、a1、a2和a3,它们用于在执行周期内,存储从单元AMU、MAC0和/或MAC1输出的处理过的数据值。每一个寄存器a0、a1、a2和a3最好是用于存储字的40比特寄存器,所述字包括八个保护比特、16比特“高位字”部分、和16比特“低位字”部分。同样在ACU10内,三根局部总线(LB0、LB1、LB2)将每个ACU10的处理器单元AMU、MAC0和MAC1的输出和输入与累加器寄存器a0、a1、a2和a3互连。

    专用写回总线WB的第一部分将累加器寄存器a0、a1、a2和a3与后移单元80的输入相连,而总线WB的第二部分将后移单元80的输出与RAM总线0(RB0)和/或与RAM总线1(RB1)相连。后移单元80的功能是移动(向右或向左)从一个累加器寄存器经过总线WB转移的每个40比特数据值的位(在指令的写周期内),并选择移位后的子集向总线RB0或总线RB1发出。通过比起总线RB0和总线RB1来后移单元80与累加器寄存器a0、a1、a2和a3连接得更靠近,写总线WB的相对较长部分(在单元80和总线RB0及RB1之间的部分)可以具有比写总线WB(在寄存器a0-a3和单元80之间的部分)更窄的宽度(例如,16比特)。

    在每个写周期的开始时候,后移位单元80接收来自累加器寄存器a0、a1、a2和a3中任何一个的40比特数据值,并移动它的位(最好向右移动从零到8的任何数目的位置,或者向左移位从零到16的任何数目的位置)。在整个总线WB上将从单元80输出的值(典型的是移位值,或是零移位值)的16个高阶位(除保护位之外),或者从单元80输出的值(典型的是移位值,或是零移位值)的16个低阶位从单元80转移到总线RB0和总线RB1中选中的一个。将设置在总线RB0上的每个16比特数据值(从单元80)写到(通过数据存储器6的一部分)在存储器6中的存储单元,所述存储单元由从MMU3向地址总线AB0发出的地址(在相同的写周期内)决定,而且将设置在总线RB1上的每个16比特数据值(从单元80)写到(通过数据存储器6的另一部分)在存储器6中的存储单元,所述存储单元由从MMU3向地址总线AB1发出的地址(在相同的写周期内)决定。于是,实际上,在写周期内,可将在寄存器a0、a1、a2和a3中的一个寄存器中的数据值的任何16比特部分写入存储器6。当单元80不执行任何移位时(即,零移位),单元80最好在缺省值模式下操作,其中它向总线RB0(或RB1)发出从寄存器a0、a1、a2和a3中的一个寄存器向单元80的输入发出的40比特值的16比特“高字位”部分。此外,可把发出的低位字指定为零移位。

    响应于来自程序存储器4的指令,PCU2将决定由单元80进行的每个移位的量写入“后移”寄存器PSR(如图5所示)。然而,在相同的后移位指令期间,不加载PSR。可在PCU2中分开的移动指令中对PSR加载,然后在后移位指令中运用它,或者在相同的后移位指令中指定后移位值。在后者的情况下,不影响PSR,而且不改变它的后移位值内容。此外,响应于在具有PSRdis(或PSR禁止)的控制位(它决定后移位操作是否运用PSR寄存器)的控制/模式寄存器CMR中的控制位,单元80进行操作。    

    较佳的是,给DSP编程序以用流水线方法(其中,在一个流水线周期内,在地址总线上发出用于从存储器读取的地址,而在另一个流水线周期内,在相同的地址总线上发出用于写人存储器的地址)和用避免预期的地址总线和数据总线冲突或碰撞的方法执行指令。

    接着,我们参照图8,更加详细地描述MMU3的较佳执行过程。如图8所示,MMU3包括八个16比特地址指针寄存器r0-r7、八个8比特指针修改量寄存器s0-s7、两个16比特加法器(110和111)、乘法器(100、101、102、103、104、105、106、107和108)、流水线寄存器(118和119)、和发明的电路120,它们如图连接。

    MMU3的图8实施例包括两个独立的地址生成单元(AGU0和AGU1),它用于响应于从PCU2接收到的控制信号src0、src1和src2中的任何两个信号而独立地向地址总线AB0和AB1发出两个16比特地址信号(多路复用器107的输出或多路复用器108的输出)。响应于控制信号src0、src1和src2中的任何两个信号,MMU3通过多路复用器104向节点AGU0发出来自地址指针寄存器r0-r7中的任何一个寄存器的一个16比特地址指针,通过多路复用器105向节点AGU1发出来自地址指针寄存器r0-r7中的任何一个寄存器的另一个16比特地址指针。在运算的单精度模式中,通过反相器122,然后通过多路复用器107向地址总线AB0(供从存储器6读取第二个N比特操作数之用)发出在节点AGU0处的指针。在一种类型的双精度运算中,通过反相器122,然后通过多路复用器107向地址总线AB0(供从存储器6读取2N比特操作数的一个N比特部分之用)发出在节点AGU0处的两个指针,而且通过反相器121,然后通过多路复用器108向地址总线AB1(供从存储器6读取相同的2N比特操作数的第二个N部分之用)发出在节点AGU1处的指针。

    在另一种双精度运算中,在双精度运算的任何译码周期内,MMU3仅仅设置有(并响应于)控制位src0、src1和src2(来自PCU2)中的一个控制位。通过多路复用器104从寄存器r0-r7中的一个寄存器向节点AGU0发出一个16比特指针,MMU3响应于信号src0、src1和src2中的所述那个信号。通过多路复用器107向地址总线AB0发出(除了在反相器122中反相外,未被修改)该指针(供从存储器6读取2N比特操作数的一个N比特部分之用)。在反相器122中经历反相后,在电路120中修改指针,并从电路120向多路复用器108发出所得的修改过的指针,而且通过多路复用器108向地址总线AB1发出该指针(供从存储器6读取相同的2N比特操作数的第二个N比特部分之用)。

    电路120的功能在于,倒转(反相)在电路120处接收到的来自反相器122的指针的最小有效位(位“[0]”),同时还通过电路120(到多路复用器108)而不修改在电路120处接收到的来自反相器122的指针的15个最高有效位(位“[15:0]”)。

    参照图8所示的较佳实施例,,由于MMU3的图8实施例设想为DSP将2N比特操作数的两个N比特部分(在双精度模式中从数据存储器6读取)存储在数据存储器6中的连续单元中,所以电路120倒转指针的最小有效位(而不是15个最高有效位)。然后,MMU3的该实施例能使DSP在单精度周期内,运用向节点AGU0发出的单精度地址指针(通过在MMU3向节点AGU0发出指针的相同周期内,响应于该指针生成识别两个连续数据存储单元的两个地址信号)读取2N比特操作数的两个N比特部分。例如,当将两个N比特部分存储在存储器6中的连续单元中并且由电路120接收到的指针识别偶地址(例如,地址00000000000000110)时,多路复用器107将该地址输出到总线AB0(从而,系统从由它决定的偶存储单元取操作数的第一个N比特部分),而且电路120输出下一个奇地址(地址0000000000000111),从而多路复用器108将该奇地址输出到总线AB1(而且系统从下一个奇数存储单元取操作数的第二个N比特部分)。又例如,当将两个N比特部分存储在存储器6中的连续单元中,而且由电路120接收到的指针识别奇地址(例如,地址0000000000000111)时,多路复用器107将该地址输出到总线AB0(从而,系统从由它决定的奇存储单元取第一个N比特部分),而且电路120将前一个(紧挨着最低的)偶地址(地址0000000000000110),从而多路复用器108将偶地址输出到总线AB1(而且系统从前一个存储单元取操作数的第二个N比特部分)。

    图8的寄存器s0-s7和加法器110和111的功能在于,它用下列方法用修改过的指针代替地址指针寄存器r0-r7的内容。把每个指针修改值寄存器s0-s7(最好是8比特宽,用于存储包括符号位和7个数据位的带符号数)与指针寄存器r0-r7中的一个相连。在地址生成周期内的一个适当时候(例如,在向一个或两个节点AGU0和AGU1发出指针后),多路复用器101选择寄存器s0-s7中的一个,并向加法/减法单元111(它与单元110等同)的一个输入提供存储在寄存器中的修改字,单元111的另一个输入接收存储在指针寄存器r0-r7的相应的一个寄存器中的的指针,并从单元111的输出(通过多路复用器103)向指针寄存器r0-r7的相应的一个寄存器发出指针和修改字的和(或差)。然后,预存储在寄存器r0-r7中的两个寄存器(或者,一个或无)中的指针经历后置修改,其中由存储在寄存器s0-s7中的一个寄存器中的值修改上述每个指针。另一种方法(除了在后修改模式下),多路复用器103可以从数据总线DB0(而不是单元111的输出)选择16比特数据字,并向寄存器r0-r7中的一个发出该数据字,以代替寄存器r0-r7中的所述那个寄存器的内容。

    图8电路还包括写地址电路106、118和119,它们用于延迟向地址总线AB0或地址总线AB1发出写地址。多路复用器106接收来自节点AGU0的指针(在由反相器122反相指针后)和来自节点AGU1的指针,而且向流水线寄存器118发出在它们中选中的那个。流水线寄存器118将选中的指针延迟一个流水线周期,然后流水线寄存器119将选中的指针延迟另一个流水线周期。在寄存器119的一个输出端,把选中的指针反相,并向多路复用器108发出反相的指针。从寄存器119的另一个输出端,向多路复用器107发出选中的指针。然后,将由多路复用器104和105发出的写地址(在流水线的“解码”周期内)延迟两个流水线周期(在寄存器118和119),从而在下一个“写”周期的开始时候,由多路复用器107向地址总线AB0发出写地址(或者反相并由多路复用器108向地址总线AB1发出)。

    接着,参照图6和7,我们描述图5的算术操作单元(AMU)的较佳执行过程。这个AMU包括符号扩展单元42和多路复用器M4(详见图7),及电路(包括算术逻辑单元44),其中可以控制42和M4以接收并串接来自存储器6的两个N比特字,从而根据本发明,在单精度流水线周期内产生2N比特操作数,而所述电路用于在相同的流水线周期内进行关于2N比特操作数的算术运算。

    图6的AMU包括符号扩展单元41(它接收来自总线DB1的16比特数据字),符号扩展单元42(它接收来自总线DB0和总线DB1的16比特数据字)、多路复用器M3、指数提取单元43。输入移位器单元48、多路复用器M2、多路复用器M4、算术逻辑单元44(用于进行几个简单的逻辑和算术运算中任何选中的一种运算),和累加器寄存器组46(它包括上述的a0、a1、a2和a3,如图5所示)。

    图6的AMU接收来自数据总线DB0或DB1的数据,或者来自它的外部反馈通路(他包括内部总线LB1和内部总线LB2)的数据。用几种方法中的一种方法(每种响应于来自PCU2的控制位),在符号扩展单元42中,然后在多路复用器M4中(以从它生成扩展的40比特字)处理来自总线DB0的每个16比特字。可以扩展单元42和多路复用器M4以添加8比特符号/零扩展(例如,八个相同的零位,或者八个相同的符号位),作为扩展字的八个最高有效位,并将来自总线DB0的16比特字与16比特位扩展(它可以包括诸如“0”位的16个相同的缺省位,或者可以包括来自总线DB1的16比特字)串接,作为扩展字的16个最低有效位。在双精度运算模式中(参照图7,做更加详细的描述),这种扩展字的32个最低有效位是双精度操作数,它包括来自DB0的16位和来自总线DB1的16位(在算术逻辑单元(ALU)44中,用通过多路复用器M3从总线LB2反馈到ALU44的第二个32比特操作数处理它)。将从总线LB2反馈的32比特操作数与8比特扩展(包括保护位和/或符号位)串接,从而将全部40位从总线LB2反馈。在单精度运算模式中,在多路复用器M4的输出处发出的扩展字的32个最低有效位包括单精度操作数,所述单精度操作数包括来自总线DB0的16位(在ALU44中,用来自总线DB1的第二个16比特操作数处理它)和16个缺省位。

    在单精度模式中,用几种方法中的一种(每种方法响应于来自PCU2的控制位),在符号扩展单元41(从它生成扩展的40比特字)中处理来自总线DB1的每个16比特字。单元41添加8比特符号/零扩展(例如,八个相同的零位,或八个相同的符号位)作为扩展字的八个最高有效位,而单元41也添加16比特位扩展(它可以包括16个相同的“0”位,或者可以包括来自总线DB1的原始16比特字的复制)作为扩展字的16个最低位。电路41、42、M3和M4响应于从PCU2向它提供的控制位,而进行运算。

    多路复用器M3选择来自单元41的40比特扩展字或来自总线LB2的40比特处理过的字(响应于来自PCU2的控制位)。响应于来自PCU2的控制位,多路复用器M4生成来自单元42的40比特扩展字,或来自总线LB1的40比特处理过的字(或者,后面的40比特字被平移了一位的形式),或供在ALU44中舍入运算之用的恒值(例如,“X8000”)。

    指数提取单元43搜寻它从电路M3接收到的在每个40比特字中的冗余符号位,并输出表示所需移位值(从-8到+31)的数据值以将符号位(由单元43接收到的输入字)移到所需位单元。可以控制电路48以实现关于它从多路复用器M3接收到的每个40比特字的算术移位操作(向左或向右)、逻辑移位操作(向左或向右),或循环操作。每个这种40比特输入字可以是从单元41输出的扩展字,或从总线LB2的输出的40比特字。

    ALU44最好包括许多处理元件,每个处理元件用于进行关于它从多路复用器M2和M4接收到的一对40比特字(32比特操作数以及8比特扩展)的不同逻辑操作(包括“AND”、“OR”和“XOR”运算)或算术运算(包括加法和减法运算,决定两个操作数的较大者的运算,有时记为“max”,决定两个操作数的较小者的运算,有时记为“min”,决定在两个操作数之间差的绝对值的绝对距离运算,有时记为“absd”)。处理元件是独立可选择的。

    图9示出ALU44的较佳执行过程,它包括40个相同的处理单元,每个处理单元用于生成从ALU44输出的40比特处理字的不同位(例如,最高有效位“ALU[39]”和最低有效位“ALU[0]”)。每个单元包括AND门、OR门、和XOR门,从而可以控制ALU44以进行关于一对操作数的这三个逻辑运算中的任何选中的一个。每个单元还可以包括一个全加器(FA),后跟一个半加器(HA),以生成一个数的2的补码来执行绝对距离运算,从而可以控制ALU44以进行关于一对操作数的上述加法、减法、“max”、“min”和绝对距离运算中任何选中的一种运算。

    向在寄存器组(“ARF”)46内的累加器检测器a1、a2、a3和a4中的一个提供ALU44的输出(最好通过如图6所示的饱和检测器,它在检出溢出条件的同时,使ALU44的输出饱和)。如上所述,可将存储在ARF46内的累加器寄存器中的数据值,经过写总线WB传送到后移单元80,并从后移单元80经过总线WB的第二部分传送到总线RB0或RB1(然后到存储器6)。另一方面,可将存储在ARF46内的寄存器中的数据值,经过总线LB1,回传到向电路M4提供输入的一个电路(或到总线DB0),或经过总线LB2回传到电路M3。

    图7是图6的符号扩展单元42和多路复用器M4的较佳实施例。由M4选中的输入数据包括如下:40比特处理字LB1S(1比特移位器LB1S的输出,它或者是来自总线LB1的未移位40比特字,或者是移动一位的所述字);40比特恒值(例如,在十六进制表示法中指定的字“X8000”,其中“8000”是16个最小有效位);一个40比特定,它包括来自总线DB0的一个16比特字,所述16比特字与八个符号位串接(作为最高有效位),再与16个缺省(“零”)位串接(作为最小有效位);和一个40比特字,它包括来自总线DB0的一个16比特字,所述16比特字与八个符号位串接(作为最高有效位),再与来自最小DB1的16比特字串接(作为最小有效位)。如图7所示,单元42包括:标记为“符号”的多路复用器,它输出一个“零”位、来自DB0的字的最高有效位和来自DB0的字的第八个最高有效位;电路D1,它用于将“符号”的输出与它本身串接八次;多路复用器M11,它输出一个“零”位和来自“符号”的输出位;和电路D2,它用于将M11的输出与它本身串接八次。如图7所示,多路复用器M4包括四个元件(M4A、M4C和M4D),它们的功能分别是选择M4的40比特输出字的八个指定有效位、选择该输出字的第9个到第16个最高有效位、选择该输出字的第17个到第24个最高有效位、和选择该输出字的16个最低有效位。在运算的双精度模式中,图7电路的输出字包括从多路复用器M4A输出的八位扩展和32比特操作数,所述32比特操作数包括来自数据总线DB0(从多路复用器M4B输出)的字的八个最高有效位、来自数据总线DB0(从多路复用器M4C输出)的字的八个最低有效位、和来自数据总线DB1(从多路复用器M4D输出)的16比特字。

    本发明的另一方面是参照图6所述的那种类型的算术操作单元,它包括电路42和M4的图7的实现。算术操作单元在上面参照图1和3-5描述的那种类型的DSP中很有用,另一种方法,可以同其它DSP一起使用。关于这个算术操作单元的各种变化都落在本发明的范围内,其中,所有的所述变化都串接两个N比特字以生成2N比特操作数并在双精度运算模式中进行关于该操作数(同第二操作数一起)的算术运算,还在单精度运算模式中进行关于两个N比特操作数的算术运算。在发明的算术操作单元的较佳实施例中,N=16。然而,在可供选择的两种(或两种以上)的实施例中,N可以等于另一个整数(例如,N=8或32)。较佳的是,本发明的算术操作单元进行关于两个N比特操作数(在它的单精度模式中)或关于两个2N比特操作数(在它的双精度模式中)的下列算术运算中任何选中的一种算术运算(每种运算都响应于来自诸如图1的PCU2的控制器的不同控制信号):“AND”运算、“同或”运算、“异或”运算(“XOR”)、加法运算、减法运算、决定两个操作数中较大者的有时记为“max”的运算、决定两个操作数中较小者的有时记为“min”的运算、和有时表示决定两个操作数之间差的绝对值的有时记为“absd”的运算。在它生成(通过串接)第一个2N比特操作数的相同流水线周期内,算术操作单元可以进行这八种运算中的任何一种。在较佳实施例中,本发明的算术操作单元可以在单精度模式中进行其他附加的运算(除了上述八种运算以外的运算),即使它在双精度模式中只能够进行这八种运算。

    同样,较佳的是,可以控制发明的算术操作单元(AMU)以进行双精度模式运算,其中它将它生成的2N比特操作数(在它通过串接生成该操作数的相同流水线周期内,而不改变该操作数)简单地移入累加器中(例如,在图6的ARF46内的一个累加器寄存器)。例如,可以控制图6的AMU,从而使从多路复用器M4输出的40比特字(包括32比特操作数,它包括与来自总线DB1的16位串接的来自总线DB0的16位)无改变地通过ALU44,并将它输入在ARP46内的一个累加器寄存器中。然后,在单个流水线周期内,具体体现本发明(并包括在上两句话里所述的那种类型的AMU)的DSP可以生成用于从存储器6读取2N比特操作数的两个N比特部分的两个地址信号(从单个地址指针或两个地址指针),然后,在下一个流水线周期内,从存储器读取两个N比特部分,最后,在下一个流水线周期内,连接两个N比特部分以生成2N比特(“双精度”)字并将该双精度字输入累加器。相同的DSP可以进行下列三个周期运算:在单个流水线周期内,生成用于从存储器读取2N比特操作数的两个N比特部分的两个地址信号(从单个地址指针或两个地址指针);然后,在下一个流水线周期内,从存储器读取两个N比特部分;最后,在下一个流水线周期内,在AMU中串接两个N比特部分一生成第一个2N比特(“双精度”)操作数,将第二个2N比特操作数反馈到AMU的输入(从AMU的累加器),并进行在关于两个2N比特操作数的几种算术运算(例如,上述八种算术运算)中选中的一种运算。在两个周期内,相同的DSP可以进行关于来自数据存储器的两个2N比特字的算术运算:在第一个周期内,在AMU中生成第一个2N比特操作数(通过串接从存储器读取的两个N比特部分),并将它输入AMU的输出寄存器(例如,累加器寄存器a0-a3中的一个);在第二个周期内,在AMU中生成第二个2N比特操作数(通过串接从存储器读取的N比特部分的第二部分),从输出寄存器反馈第一操作数,而且AMU进行关于两个操作数的算术运算。

    参照图1和3-8,已经描述了本发明的算术操作单元和数字处理系统的较佳实施例。虽然,已经详细地描述了这些实施例,但认为可以进行形成这些实施例的许多变化(和各种改变),而不背离由所附权利要求书定义的本发明的构思和范围。

以单精度或双精度进行算术运算的系统.pdf_第1页
第1页 / 共33页
以单精度或双精度进行算术运算的系统.pdf_第2页
第2页 / 共33页
以单精度或双精度进行算术运算的系统.pdf_第3页
第3页 / 共33页
点击查看更多>>
资源描述

《以单精度或双精度进行算术运算的系统.pdf》由会员分享,可在线阅读,更多相关《以单精度或双精度进行算术运算的系统.pdf(33页珍藏版)》请在专利查询网上搜索。

算术操作单元(AMU)进行关于在单精度模式下的N比特字和在双精度模式下的2N比特字的算术运算。较佳的是,AMU只在两个流水线周期内进行双精度运算:第一个周期,其中用符号扩展单元(42)和多路复用器(MY)通过串接两个N比特部分生成第一个2N比特操作数,并将操作数输入输出寄存器(46);第二个周期,其中生成第二个2N比特操作数(从第二对N比特部分),从输出寄存器反馈第一个操作数,而且由算术逻辑单元(。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1