改进的处理器架构的制作方法

文档序号:6431773阅读:217来源:国知局
专利名称:改进的处理器架构的制作方法
技术领域
本发明涉及用于提高处理器的数据计算性能的改进的架构。
背景技术
图1显示了已知的处理器架构的原理框图。处理器可采用双通道架构,由此处理器包含两条不同的独立硬件执行路径一条是控制执行路径,以专门用于处理控制代码的控制单元2的形式表示;一条是数据执行路径,以专门用于处理数据的数据处理单元4的形式表示。数据和控制处理之间的区别将在稍后讨论。例如,在国际专利申请公布号W02005/096141中描述了这类架构的示范性实施例。在图示的处理器中,控制单元2耦连到指令存储器6相连接,指令存储器6可被集成到和处理器在同一块芯片上,或者被集成到连接的芯片外。每个控制单元2与数据处理单元4耦连到数据存储器8,数据存储器8也可被集成到和处理器在同一块芯片上,或者被集成到连接的芯片外。控制单元2包括一组控制寄存器10、指令译码器12和地址形成单元14。一个示例性的控制单元也将具有控制处理逻辑(未显示),例如用于执行分支操作,并且也可具有标量数据处理逻辑。数据处理单元4包括一组数据寄存器16和数据处理逻辑18。有时,寄存器组被称为寄存器文件。指令译码器12耦连到数据寄存器16和数据处理逻辑18,并通过读取电路(未显示)和指令存储器6相连接。进一步地,指令译码器12耦连到控制单元2的内部逻辑,包括耦连到控制寄存器10和地址形成单元14。每个地址形成单元14和控制寄存器组10也将耦连到数据存储器8。在操作中,读取电路(未显示)从指令存储器6取出一系列指令到指令译码器12中。指令译码器12对于该系列中的每个指令进行译码,并根据包含在指令内的译码操作码确定需要哪个单元来执行指令。因此,处理器按如下描述执行三种类型的指令的混合
⑴由控制单元2执行的控制指令,例如分支。(ii)数据处理指令,其由控制单元2译码但随后(作为寄存器地址和操作码)传送到数据处理单元4来执行;和
(iii)存储器访问指令(加载和存储),用于使控制单元2计算数据存储器8的存储器地址,然后将相应的存储器数据从控制寄存器10或数据寄存器16传输或者向其发送。此处使用的术语“控制”称为程序流控制,包括分支和地址生成,和为此目的一些逻辑和算术。相比之下,此处使用的“数据处理”或与之类似的短语是指将要对作为程序主体的数据执行的其它算术和逻辑操作,即,数据表示程序控制流本身以外的某些事物。在这种意义上,数据处理并不包括流控制(但是可能产生用于生成控制流决策的结果,例如分支条件)。例如,在用于无线通信的软件调制解调器的情况下,数据可表示接收到的或通过空中接口传输的信号,并且数据处理操作可包含信号处理操作。这类信号处理的结果可提供给控制单元,以允许其生成控制流决策(例如,进一步的何种信号处理是必需的),但是控制流自身(包括程序分支和存储器地址的序列)是受控制单元影响的。在另一个示例中,数据可表示来自外围设备的信息或用来输出以操纵外围设备的信息。通常情况下,控制和数据路径之间的区别是明显的,因为控制单元2仅使用标量处理而数据处理单元4被配置为使用向量处理(如下所示)。在一些应用程序中,尽管在数据处理路径上并不执行控制流代码, 实际上可能在控制路径上执行一些数据处理。 存储器访问指令,例如加载和存储,可以被认为是除了控制指令和数据处理指令之外的第三类指令,其能够作用于控制单元2或作用于控制单元2和数据处理单元4两者上。如图2a和2b所示,每个指令包含操作码28和一个或多个相关的操作数30 (或在几种指令的情况下可能不需要操作数)。操作码是一系列位,它们在由指令译码器12译码时表示被执行的操作种类。一个或多个相关的操作数是一系列位,它们在由指令译码器 12译码时表示被该操作进行操作的数据,其通常通过指定其中正存储有对象数据的寄存器和/或存储器的位置,并且依靠指令的种类,用于存储操作结果的寄存器和/或存储器的位置。通过一个或多个加载指令(一种类型的存储器访问指令),从数据存储器8中加载数据到控制寄存器10或数据寄存器16中。在图2a中示例了加载指令24。其包含操作码 28,该操作码28在被译码时表示加载操作,和两个操作数字段30。第一个操作数字段包含一个或多个目的地操作数,第二个操作数字段包含一个或多个源操作数。例如,源存储器位置通常由两个寄存器地址表示,寄存器提供基准和偏移,将基准和偏移加在一起时指向存储器的位置一这就是地址形成单元14的目的。有时候,偏移是代替寄存器地址的立即值。 源操作数字段指定存储器的位置,从该位置提取数据,并且目的地操作数字段指定寄存器, 在该寄存器放置该数据。当加载到控制寄存器组10时,仅在控制单元2上运行加载指令。地址形成单元14 从源操作数中计算相关的存储器地址,并且导致数据从存储器8内的地址被加载到控制寄存器组10中的一个寄存器上,该寄存器由目的地操作数指定。当加载到数据寄存器组16 时,在控制单元2和数据处理单元4两者上都运行加载指令。地址形成单元14从源操作数中计算相关的存储器地址,并且导致数据从存储器8内的地址被加载到数据寄存器组16中的一个寄存器上,该寄存器由目的地操作数指定。作为一个简单的示例,考虑加载两条指令 Load $rl, Al
Load $r2, A2
这些加载指令的第一条具有一个目的地操作数$rl,和一个源操作数区域Al (通常由 $base + $offset指定)。当执行这条指令时,将数据的字从存储器地址的位置Al加载到寄存器$rl中。这些加载指令的第二条具有一个目的地操作数$r2,和一个目的地操作数A2。 当执行这条指令时,将数据的字从存储器地址的位置A2加载到寄存器$r2中。一旦数据被加载到寄存器组10或16中,使用这些寄存器的内容能够执行操作。如果指令译码器12遇到控制指令,那么它通过使用控制单元自身的内部逻辑和控制寄存器 10内的值在控制单元2中内部地执行该指令,从而将指令保留在控制路径上。如果在另一方面,指令译码器12遇到数据处理指令,它通过将译码后的操作码提供给数据处理单元4 的数据处理逻辑18,和将译码后的具有一个或多个操作数寄存器地址形式的一个或多个操作数提供给数据寄存器组16,将指令转移到数据处理路径。可选择地,一个或多个操作数30可以是立即(文字)值。在图2b中示例出了数据处理指令沈。关于上述的示例,假定$rl和$r2是数据寄存器组16中的数据寄存器,那么数据处理指令能够对其进行操作。为了举例说明,一些简单的示例如下
Not $dl, $rlAdd $d2, $rl, $r2
这些数据处理指令的第一条指令具有一个源操作数$rl,和一个目的地操作数$dl。当执行这条指令时,其对寄存器$rl中的值进行按位取补,并将结果放置到数据寄存器组16中的目的地寄存器$dl中。这些数据处理指令的第二条指令具有两个源操作数$1~1和$r2,和一个源操作数$d2。当执行这条指令时,其将寄存器$rl和$r2中的内容相加,并将结果放置到数据寄存器组16中的目的地寄存器$d2中。通过存储指令,数据处理操作的结果能够从数据寄存器组16中的目的地被存储到数据存储器8中,通过进一步的数据处理指令,和/或再次操作该结果。最后,将这类数据处理的结果从寄存器组16和/或数据存储器8中输出到外围设备,例如将译码的音频或视觉信号输出到扬声器或屏幕上,例如在经由无线通信系统接收的输入信号的处理的情况下,或发送译码后的信号用于经由无线通信系统传输,或操纵射频(RF)前端用于传输此类无线信号。控制和数据路径可具有带有非对称的指令宽度的指令集架构,并可具有非对称的寄存器和处理路径宽度。其基本原理是控制代码有利于更短的和更简单的指令;而数据处理代码有利于更长的,更专门化的指令集和需要更宽的数据寄存器的向量数据值。为了改进每次单元时间内的数据处理的数量,处理器可被设置具有一定程度的并行度。参考图2c,并行的一个示范例是“长指令字”(LIW)类型的处理。如图所示的处理器,控制单元2的读取电路可一次以指令包的形式读取多个指令,每个包包含多个构成指令,并且每个指令包含其自身各自的操作码观和相关联的操作数30,用于执行其自身各自的操作。合适的程序编译器能够识别(例如)能够被并行执行的指令对,并且将这类指令对设置到指令存储器的指令包中,用于原子执行。编译器确保指令包内的指令之间没有数据相关性,因此机器无需检测这类相关性并且能够同时地执行构成指令,或在对这些执行相对于其他包进行排序的情况下以关于彼此之间的任何顺序地执行构成指令。这类包可能被称为长指令字34(有时也被称为“非常长指令字”,VLIW,特别是在每个原子包内存在超过两个指令时)。因此,在示例的处理器中,如果该指令包包括控制指令32和数据处理指令沈,那么指令译码器12并行地将该包各自分别地指示到控制单元2和数据处理单元4中,用于由那些各自的单元并行执行(例如,尽管如果包包含仅控制指令,那么这些可能需要按顺序地执行)。因此,注意到这并非严格准确地称为“LIW指令”,而是LIW包。每个LIW包实际上包含了多个指令,从作为代码的离散单元的指令的意义上说,其包含单一操作码和任何相关的各自的操作数。参考图2d,示例出另一个向量处理的类型,被称为SIMD (单指令,多数据)处理。根据SIMD的安排,并非单一数据元素,而是组16内的每个数据寄存器能够保留包括多个构成数据元素的向量。为响应单一共享的操作码,数据处理逻辑18和存储器加载/存储路径基本上并行地对短向量操作数的每个元素进行操作。也就是说,单一加载指令能够将整个向量加载到组16的向量寄存器上,并且单一数据处理操作(带有单一操作码)能够引发数据处理逻辑18以便基本上同时对加载的向量的每个元素上执行相同的操作。例如,如图2d所示,如果第一个源寄存器s具有向量(sl,s2, s3, s4),并且第二个源寄存器t具有向量(tl,t2, t3, t4),那么单一的加法指令(包括单一操作码和指定仅仅两个个源寄存器s, t 和单一目的地寄存器d)将运行,以操作加上两个源向量的单独的元素,并将结果向量的元素(sl+tl,s2+t2, s3+t3, s4+t4)存储到各自的目的地寄存器d的元素中,即各自地存储到 (dl, d2, d3, d4)中。 其它的并行形式也是已知的,例如通过超标量处理器。除了它们包含额外的硬件来检测和避免并行指令之间的关联性冲突(LIW处理器需要事先通过编译器来避免关联性冲突),它们和LIW类型的处理器类似,这是因为它们并行地执行多个指令。因此,存在多项技术通过并行方式用于改进处理器的数据处理性能。然而,发明者已经认识到,对于扩展处理器的并行度仍然有开发的空间。

发明内容
本发明寻求通过双倍化(或超过双倍化)处理器的数据计算和存储资源提高处理器的数据计算性能,而没有明显扩大处理器的控制硬件或程序存储器,并且没有明显的修改处理器的指令集架构。根据本发明的一个方面,提供一种处理器,包括译码单元,设置为接收一系列指令;第一和至少第二数据处理通道,每个所述通道耦连到所述译码单元,所述第二数据处理通道包括使能逻辑,配置为可选择地使能所述第二数据处理通道;可变偏移寻址逻辑,耦连到所述译码单元,配置用于基于相同的存储访问指令的相同的一个或多个地址操作数, 生成其间具有可变偏移的第一和第二存储地址;和存储访问电路,耦连于所述可变偏移寻址逻辑以及所述第一和第二数据处理通道,配置为基于存储访问指令的相同的一个或多个寄存器区分符操作数,在所述第一存储地址和所述第一数据处理通道的寄存器之间传输数据,以及在所述第二存储地址和所述第二数据处理通道的相应的寄存器之间传输数据;其中,所述译码单元被配置为将相同的操作码和相同的数据处理指令的相同的一个或多个操作数提供给所述第一和第二两个数据处理通道,以便于基于所述数据处理指令的相同的一个或多个操作数,所述第一数据处理通道对所述第一数据处理通道的一个或多个寄存器中的数据执行由该操作码指定的操作,并且在第二数据处理通道使能的条件下,所述第二数据处理通道对所述第二数据处理通道的相应的一个或多个寄存器中的数据执行相同的操作。因此,本发明有利地允许处理器选择性地使用编码的相同部分来操作数据的多个不同部分,数据的这些不同部分在存储器中偏移一些可控的量。在实施例中,每个所述数据处理通道可以是向量处理通道,以便于从每个所述第一和第二存储地址中传送或向其发送的数据是各自的包括多个数据元素的向量,并且在每个所述第一和第二数据处理通道内执行的操作包括对所述多个数据元素的每一个执行的向量处理操作,以响应所述相同的操作码。在进一步的实施例中,地址偏移逻辑可包括可编程的偏移寄存器用于存储所述可变偏移,所述可编程的偏移寄存器配置为在程序控制下被写入。进一步地,该可变偏移寻址逻辑配置为用于基于相同的加载指令的相同的一个或多个地址操作数,生成其间具有可变加载偏移的第一和第二加载地址,且配置为在基于相同的存储指令的相同的一个或多个地址操作数,生成其间具有可变存储偏移的第一和第二存储地址;将存储访问电路配置为基于所述加载指令的相同的一个或多个寄存器区分符操作数,将来自所述第一加载地址的数据加载到所述第一数据处理通道的寄存器中,并且将来自所述第二加载地址的数据加载到所述第二数据处理通道的相应的寄存器中;和所述存储访问电路进一步配置为基于所述存储指令的相同的一个或多个寄存器区分符操作数,将来自所述第一数据处理通道的寄存器中的数据存储到所述第一存储地址中,以及将来自所述第二数据处理通道的相应寄存器中的数据存储到所述第二存储地址。所述可变偏移寻址逻辑可包括用于加载和存储操作的分别的可编程偏移寄存器,一个寄存器用于存储可变加载偏移,一个寄存器用于存储可变存储偏移。或者,所述可变加载和存储偏移可以是存储在相同的可编程偏移寄存器中的相同的偏移值。可变偏移寻址逻辑可进一步地包括译码逻辑,配置用于从存储地址指令的字段中确定偏移。所述第一存储地址可以由存储访问指令的所述一个或多个地址操作数来识别,以及所述可变偏移寻址逻辑配置为通过将所述可变偏移应用到所述第一存储地址来生成所述第二存储地址。所述使能逻辑可包括用于存储至少一个使能位的可编程的使能寄存器,并且可被配置为依靠所述使能位可选择地使能所述第二数据处理通道。所述使能逻辑可进一步地包括译码逻辑,所述译码逻辑配置为依靠所述数据处理指令中的至少一个使能位来可选择地使能所述第二数据处理通道。所述第一数据处理通道可包括第一数据处理逻辑和第一数据寄存器组;所述第二数据处理通道包括第二数据处理逻辑和第二数据寄存器组;所述可变偏移寻址逻辑配置为基于相同的加载指令的相同的一个或多个源地址操作数,生成其间具有可变偏移的第一和第二存储地址;和所述存储访问电路配置为将来所述第一存储地址的数据加载到由所述相同的加载指令的一个或多个目的地寄存器区分符操作数指定的所述第一数据寄存器中的一个或多个寄存器中,并且将来自所述第二存储地址的数据加载到由相同的加载指令的相同的一个或多个目的地寄存器区分符操作数指定的所述第二数据寄存器中的相应的一个或多个寄存器中;以便于所述第一数据处理逻辑对从所述第一存储地址加载到指定的第一数据寄存器中的数据执行由所述操作码指定的操作,并且在第二执行通道被使能的条件下,所述第二数据处理逻辑对从所述第二存储地址加载到所述相应的第二数据寄存器中的数据执行所述相同的操作。所述数据处理指令的所述一个或多个操作数包括一个或多个源操作数;且所述第一数据处理通道配置为基于所述数据处理指令的所述一个或多个源操作数,选择所述指定的第一数据寄存器作为用于由所述第一数据处理逻辑执行的操作的源,并且所述第二数据处理通道配置为基于相同的数据处理指令的所述相同的源操作数,选择所述相应的第二数据寄存器作为用于由所述第二数据处理逻辑执行的相同操作的源。所述数据处理指令的所述一个或多个操作数可包括至少一个目的地操作数;所述存储访问电路进一步地配置为将来自所述第一数据寄存器的另一个寄存器的数据存储到所述第一存储地址,并且将来自所述第二数据寄存器的相应的一个寄存器的数据存储到所述第二存储地址;和所述第一数据处理通道配置为基于所述数据处理指令的所述目的地操作数,选择所述另一个第一寄存器作为用于由所述第一数据处理逻辑执行的操作结果的目的地,并且所述第二数据处理通道配置为基于相同的数据处理指令的所述相同的目的地操作数,选择相应的第二数据寄存器作为用于由所述第二数据处理逻辑执行的操作结果的目的地。响应于多个存储访问指令中的每个指令,所述可变偏移寻址逻辑配置为基于相同的各自的存储访问指令的相同的一个或多个地址操作数,生成其间具有可变偏移的第一和第二存储地址;响应于所述存储访问指令中的 每个指令,所述存储访问电路配置为基于相同的各自的寄存器区分符操作数,将在各自的第一存储地址之间的数据传输到所述第一数据处理通道的各自的寄存器中,并且将在各自的第二存储地址和第二数据处理通道的各自的相应的寄存器之间传输数据;所述译码单元配置为将相同的操作码和相同的数据处理指令的相同的多个源操作数提供给所述第一和第二数据处理通道,以便于基于所述数据处理指令的相同的一个或多个操作数,所述第一数据处理逻辑对所述第一数据处理通道的寄存器中的数据执行由该操作码指定的操作,并且在第二数据处理逻辑被使能的条件下,第二数据处理逻辑对所述第二数据处理通道的相应的寄存器中的数据执行相同的操作。所述处理器可包括用于执行数据处理指令的数据执行路径和用于执行控制指令的单独的控制执行路径,所述数据执行路径具有所述第一和第二或更多数据处理通道的形式。所述译码单元可配置为接收一系列指令包,每个指令包包括多个构成指令,至少其中一些指令包中的每个指令包包括由控制指令和数据处理指令形成的长指令字,并且所述译码单元基于译码长指令字进行配置,以便将控制指令提供给控制路径用于执行,并将数据处理指令提供给数据处理路径的数据处理通道用于和所述控制指令并行地执行。每个所述数据处理通道包括具有可配置执行单元形式的数据处理逻辑,为响应所述相同的操作码而可配置为执行多个构成操作。所述第二或更多的数据处理通道提供对于所述向量处理、长指令字执行和可配置执行正交的第四维并行性。所述处理器可包括和所述第一数据处理通道并行的多个第二数据处理通道;其中,所述存储访问电路配置为在每个第二数据处理通道和相应的第二存储地址之间传输数据;和每个第二数据处理通道对各自的第二存储地址的数据执行相同的操作。所述可变偏移寻址逻辑可配置为生成第一存储地址和多个不同的第二存储地址, 每个存储地址用于所述数据处理通道的各自的一个通道,但是从共用的可变偏移中获得。所述可变偏移寻址逻辑配置为生成第一存储地址和多个独立的第二存储地址,每个存储地址从独立的可变偏移中获得,用于所述第二数据处理通道的每个通道。所述第二数据处理通道配置为共同地由共用使能位使能。每个第二数据处理通道配置为由各自的使能位独立地使能和禁用。根据本发明的另一方面,提供了一种处理器,其包括译码单元,设置为接收一系列指令;第一和至少第二数据处理通道,每个所述通道耦连到所述译码单元,所述第二数据处理通道包括使能逻辑,配置为可选择地使能所述第二数据处理通道;其中所述译码单元被配置为将相同的操作码和相同的数据处理指令的相同的一个或多个操作数提供给所述第一和第二数据处理通道,以便于基于所述数据处理指令的相同的一个或多个操作数,所述第一数据处理通道对所述第一数据处理通道的一个或多个寄存器中的数据执行由该操作码指定的操作,并且在第二数据处理通道使能的条件下,所述第二数据处理通道对所述第二数据处理通道的相应的一个或多个寄存器中的数据执行相同的操作。在这个方面,可变偏移寻址逻辑和/或存储访问电路的参与是可选的,以便于本发明也可以被应用在仅针对寄存器类型的操作。 根据本发明的另一个方面,提供一种处理器,包括多个数据处理通道,每个所述数据处理通道包括向量处理逻辑;其中,为了响应相同的指令,数据处理通道配置为对来自各个存储器位置的彼此偏移一可编程偏移值的向量进行基本上并行的操作;并且其中,至少
其中一个数据处理通道配置为独立于至少一个其他的数据处理通道而被可选择地使能和
ttffl 不 Ztd ο根据本发明的另一个方面,提供双重或多重SIMD通道处理器。根据本发明的另一个方面,提供无线用户终端,包括具有任一上述特征的处理器, 和耦连到所述寻址逻辑的存储器,所述存储器存储表示由无线用户终端接收的无线信号的数据,并且所述译码单元配置为接收一系列指令用于对该数据执行信号处理。在实施例中,配置指令的顺序,使其执行网格译码操作和快速傅里叶变换中的至少一个。根据本发明的另一个方面,提供计算机程序产品,包括嵌入在非临时性计算机可读介质上的代码,包括配置用于对具有任一上述特征的处理器的可变地址偏移进行编程的代码。


为了更好的理解本发明以及显示其可能是如何有效的,现在可参考如下的附图 图1示出了已知的处理器的原理框图。图2a示出了加载指令的示意图。图2b示出了数据处理指令的示意图。图2c示出了长指令字的示意图。图2d示出了向量操作的示意图。图3示出了双重数据通道处理器的原理框图。图4示出了双重端口数据存储器的原理框图。和图5示出了示例性存储器分配的示意图。
具体实施例方式在图3的框图中示例了本发明的优选实施例。处理器包括和图1中所示类似的双重路径架构,由此在两个不同的硬件执行路径之间划分指令流控制执行路径,专用于处理控制代码,和数据执行路径,专用于处理数据 (再次参考 WO 2005/096141 )o
然而,除了这个双重数据和控制路径架构,数据处理路径自身还包括至少两个复制的数据处理通道。除了上述提到的图1中的处理器,本发明的优选实施例添加如下的特征(在图3中所示)
(a)第二(或更多)数据处理单元4b (DPU1),其响应和第一数据处理单元4a (DPUO)相同的操作码和寄存器地址;
(b)到数据存储器8的第二访问端口(包括配置为接收Datal和Addressl的输入),由双重端口存储器电路或者优选地由数据存储器8内部的无冲突分组配置来实现;
(c)(多位)地址偏移寄存器22,其能由控制指令进行编程,和加法器20,其通过将地址偏移加到原地址(AddressO)中形成第二地址(addressl ),所述原地址(AddressO)通过地址形成单元14计算得到;和
(d)(布尔)使能寄存器24,其由控制指令可编程,并且其能够使第二数据处理单元4b (DPUl)响应或不响应于与第一数据处理单元4a (DPUO)共享的寄存器地址和操作码。优选地,使能寄存器24也能控制第二存储器端口和地址偏移加法器20,以便于当第二数据处理单元4b (DPUl)被禁用时它们不会浪费能量(对于读操作,它会浪费能量,并且对于写操作, 它能够破坏存储器状态)。在图3中更详细的提到,处理器包括以控制单元2为形式的控制处理路径;和加强的双重通道的数据处理路径,包括以第一构成数据处理单元4a (DPUO)为形式的第一数据处理通道和以第二构成数据处理单元4b (DPUl)为形式的第二并行数据处理通道。第一数据处理单元DPUO包括第一数据处理逻辑18a,耦连到各自的相关联的第一数据寄存器组 16a ;和第二数据处理单元DPU1,包括第二并行的数据处理逻辑18b,耦连到各自的相关联的第二数据寄存器组16b。第一和第二数据处理通道最好是大致相同的,每个最好是配置各自的向量处理单元的实例,配置用于执行向量处理。因此,处理器包括两个(或更多)基本上并行的向量处理通道,这样除了( SIMD )向量处理之外,添加了额外的并行维度。除了图1中所描述的连接,控制单元2的指令译码器12耦连到第一数据处理单元 DPUO中的第一数据寄存器组16a和第二数据处理单元DPUl中的第二数据寄存器组16b, 并且被配置为将来自相同指令中的一个或多个操作数中的相同寄存器地址基本上并行地提供给数据处理单元DPUO和DPUl两者。指令译码器12也耦连到第一数据处理单元DPUO 中的第一数据处理逻辑18a和第二数据处理单元DPUl中的第二数据处理逻辑18b,并且配置为将来自相同的指令中的相同操作码基本上并行地提供给数据处理单元DPUO和DPUl两者ο注意到它们之间的区别,一方面,为了响应执行带有不同操作码的不同指令,执行不同操作类型的双重数据和控制路径;并且另一方面,数据处理路径内部的双重数据处理通道,其执行相同的指令并且基本上同时执行相同的操作。处理器进一步包括地址偏移寄存器22和加法器20。地址偏移寄存器具有和控制单元2相耦连的输入和与加法器20的一个输入相耦连的输出。加法器20的其它输入和地址形成单元的输出相耦连。参考图4,在本发明示出的实施例中,数据存储器8的输出包含存储器组(memory bank)17 (即,实际的存储数据的存储器单元阵列);和两个存储器端口,第一存储器端口 19a和第二存储器端口 1%,每个端口和存储器组17相耦连。第一存储器端口 19a和地址形成单元14的输出相耦连,也和第一数据处理单元DPUO中的第一数据寄存器组16a相耦连,并且第二存储器端口 1%和加法器20的输出相耦连,也和第二数据处理单元16b中的第二数据寄存器组16b相耦连。如前所述,由双重端口存储器电路或更优选地由数据存储器8中的无冲突分组配置来实现这两个端口。在操作上,额外描述的电路的作用是当执行加载指令时,由该加载指令的源操作数字段明确指定的一个源地址(AddressO)也被用来隐含地生成额外的第二源地址 (Addressl)0也就是说,为了响应该加载指令,地址形成单元14将第一地址(AddressO) 提供给第一存储器端口 19a,也将第一地址(AddressO)提供给加法器20。加法器20通过将存储在地址偏移寄存器22中的偏移值加到第一地址(AddressO)来生成第二地址 (Addressl),并且将第二地址提供给第二存储器端口 19b。作为响应,第一存储器端口 19a 在数据存储器8的存储器组17内从第一地址检索数据,并且将其加载到第一数据寄存器组 16a指定的寄存器中,同时,第二存储器端口 19b在存储器组17b内从偏移第二地址检索数据,并且将其加载到第二数据寄存器组16b指定的寄存器中(这是第二组16b内具有与第一组16a内的第一指定寄存器相同的寄存器地址的寄存器)。注意到,加载指令的源操作数字段实际上可以以基础寄存器和偏移寄存器之和的形式来指定AddressO,每个由该加载指令的源构成操作数来指示。在这种情况下,为创建 Addressl由偏移寄存器22和加法器20添加的偏移是在其顶部的额外的偏移。当顺序执行数据处理操作时,其结果是单一的数据处理指令(带有相关联的操作码或操作数的单一操作码和单一示例)将对相关的数据进行操作,该数据被加载到第一寄存器组16a和第二数据寄存器组16b这两个寄存器组中。已经从存储器8中的偏移地址被加载,这意味着单一指令对数据的不同部分执行相同的操作,有利地允许相同的代码在数据的多个部分被再次使用。可以理解的是,将类似的配置方案应用于存储器存储操作,其中,来自DPUO和 DPUl每一个的寄存器值被存储到存储器中由地址偏移值22分隔开的两个分别的位置。在一些实施例中,可使用不同的偏移用于存储而不是被用来加载,因此存在两个偏移寄存器 22。在另外一些实施例中,来自单一寄存器的单一偏移值既可以用于加载也可以用于存储。在一个特定的实施例中,DPUl可以比DPUO晚固定的时钟周期数目来接收和执行操作码。这个实际的实施细节允许花时间来计算偏移地址,并且缓存发送到DPUl的译码的操作码和寄存器地址,以及可选择地以功率门选(power-gate)或时钟门选(clock-gate) DPUl。优选地,地址偏移寄存器20被配置为可编程的,例如,通过通用加载指令进行寻址。另外,可在指令集架构中包括一类特殊的加载指令,该特殊的加载指令带有字段用于指定该加载的偏移,或者包括该偏移的寄存器的地址。处理器进一步地包括一位使能寄存器24,其耦连在控制单元2的逻辑和第二数据处理单元DPUl之间。当使能位被设置时(被置有效),双重数据处理单元DPUO和DPUl都进行操作,以上述图3和图4中描述的方式执行并行数据处理。当使能位未被设置时(被撤销),那么第一数据处理单元DPUO按图1中的描述单独操作,并且第二数据处理单元DPUl 被禁用。
优选地,使能寄存器24被配置为可编程的,例如,通过通用加载指令,或者通过在指令集架构中包括特殊的切换指令而又一次成为可寻址的。另外,可修改指令集架构,使其在每个相关的数据处理指令中包括一位特殊字段,其触发控制单元2使能或禁用第二数据处理单元DPUl,在一个指令接一个指令的基础上,允许第二数据处理单元DPUl被打开或关闭。图5的示意图示出了示例性的存储器分配。在这里,在双重通道模式中,当在使能寄存器24中设置使能位时,使用存储器17a的第一区域提供数据以便在第一数据处理单元DPUO中进行处理,并且,使用存储器17b的第二区域提供数据用于在第二数据处理单元 DPUl中处理,第二区域17b在地址空间中偏离于第一区域17a的值为地址偏移寄存器22中存储的可编程值。另一方面,在单一通道模式下,当在使能寄存器24中使能位被撤销时,那么潜在地,为了由第一数据处理单元DPUO使用,存储器的任一区域减去第二区域17b都是可用的。注意到,除了此处披露的由双重数据处理通道架构提供的并行度外,在本发明的优选实施例中,也可能采用其它类型的并行度。优选地,处理器可能配置用于执行LIW类型处理,由此可指示来自共用指令字34 的控制和数据指令用于各自地通过控制和数据路径并行执行,类似于图2d中描述的想法。 在本发明的这类实施例中,控制指令32保留在控制路径2上,但是沿着双重通道数据处理路径4a,4b转移数据处理指令26,以便用于以此处披露的方式潜在地在两个数据处理单元 DPUO和DPUl上进行操作。此外,除了双重数据通道处理通道架构的并行度外,以及除了 LIW架构的并行度外,每个单独的数据处理单元DPUO和DPUl可根据一个或多个进一步的并行度类型进行内部地配置。特别地,优选将每个数据处理单元DPUO和DPUl配置为SIMD向量处理单元,以便于两个复制操作中的每一个均包括对多个数据元素的向量操作,如图2d中描述的。也就是说,单一加载指令加载来自存储器8内的偏移存储器地址的两个向量来自第一存储器地址(AddressO)的第一向量被加载到第一数据寄存器组16a中的一个寄存器,以及来自第二偏移存储器地址(Addressl)的第二向量被加载到第二数据寄存器组16b中的一个寄存器。 因此,单一指令有效地加载数据元素的二维矩阵,而不是像在传统的SIMD处理器中仅为一维向量。然后,包括单一操作码和相关联的操作数的单一数据处理指令可基本上同时地对加载到两个并行通道中的向量的每个元素进行操作。因此,提供两个(或多个)并行的向量处理单元DPUO和DPUl创建了可以被看作为矩阵处理器的对象,其中,单一指令能够对数据元素的矩阵进行操作。此外,每个数据处理单元DPUO和DPUl可包括例如在国际专利公布号WO 2006/117562中描述的可配置的“深”执行单元。这可能是考虑到添加另一个并行度的正交维度,从这种意义上说,多个不同类型的构成数据处理操作者单元(如,乘法单元,ALU单元, 移位/广义转置(permute)单元)能够被配置为,使其在将结果返回到目的地寄存器之前, 对由单一指令发布的数据进行连续操作。因此,能够设立更复杂的操作,例如有限脉冲响应 (FIR)操作,以便由单一指令触发。FIR操作包括潜在的多个级联乘法和加法的构成操作。 “深”操作的其它示例可包括快速傅里叶变换(FFT),基于网格(trellis)编码或解码操作(如Viterbi或Turbo),或相互关联。因此,可能考虑此处披露的双重通道处理架构,以便提供并行度的第四维,和由 LIff处理、SIMD处理,和/或可配置的“深”执行提供的每个维度正交。使用本发明可能实现的一些优点如下
一开始,第二 (或更多)数据处理单元增加机器的有效的SIMD宽度,响应于每个指令,允许对于每个处理器周期实现更多计算或存储器访问的工作。例如,在用于蜂窝调制解调器的信号处理中存在许多机会,从而有效地对两个不同的数据集执行相同的指令序列。对于长期演进项目(LTE)的调制解调器这可能是特别有利的。例如,可同时对多个数据流执行 Turbo译码,并且可同时对多个数据流执行正交频分复用技术(OFDM)需要的快速傅里叶变换(FFT)。两个(或多个)数据处理单元必须访问不同的存储器区域。形成Addressl以作为与AddressO的偏移,有效地避免了在控制单元2中需要两个地址形成单元,以及更重要地避免了在每个数据处理指令中对额外的寻址通道的任何需求。使偏移可编程提供了在存储器中的数据结构组织的灵活有效性。例如,当DPUl 需要的空间少于存储器容量的一半时,其允许如图5中显示的分配存储器,有效地保持了 DPUO地址空间的连续性。本发明的加强版可提供两个不同的地址偏移寄存器22,一个用于加载以及另一个用于存储。如前所述,对于每个合适的数据处理或存储器访问指令可替换的配置方案是包括字段,其或者指定AddressO和Addressl之间的偏移,或者指定包含所使用的偏移的控制寄存器。相比使用地址偏移寄存器,这个可替换的方式更灵活,但是在通常十分宝贵的指令译码空间中是非常昂贵的。控制使用使能寄存器24的第二路径的能力是有价值的,原因有两个。第一个原因是当不需要对两个数据组同时计算时,可节省能量。第二个原因是存在一些信号处理任务,例如在3G蜂窝调制解调器中的Turbo译码,对于这种情况,在运行程序期间,相同的编码序列有时可以有效地被同时应用于两个数据组,有时仅被应用于一个数据组。为了节约指令存储器空间,这对于嵌入式的处理器总是宝贵的,优选地是对于这两种情况能够准确地再次使用相同的代码程序一因此指令自身不能分辨它们是否将控制一个或两个数据处理单元DPUO和/或DPUl。如果相同的程序能够服务于两种情况,这在软件开发中也是一种成本节省。因此,在代码程序被调用之前,能设置(或清零)使能寄存器24,以确定调用是否将操作一个或两个数据处理单元DPUO和/或 DPUl。对于超过两个数据处理单元,多位使能的扩展也是一种选择。一种替换的配置方式是在合适的数据处理和数据存储器访问指令的译码中分配位,以指示是否一个或两个DPU将响应该指令。然后,没有使能寄存器。因此,这种替换方式将丢失上述第二点关于重新使用相同的代码程序,但是仍将比现有的处理器有利,例如, 通过增加并行度以及因此增加每个周期的数据处理性能。可以理解,上述实施例已经仅通过举例的方式描述。例如,虽然是优选地,本发明并不必然被用于所述的双重路径控制和数据处理、 LIW处理、SIMD处理,以及可配置的“深”执行。本发明可选择地可被用于这些选项中的仅仅某些的任一结合。例如,控制和数据处理功能可沿着相同的处理路径串联配置,两个数据处理通道的执行单元可能仅是标量执行单元,和/或那些可能是固定执行单元的执行单元。进一步地,本发明并不限于仅单一额外的数据处理单元DPU1。原则上,可能具有任意更多数量的更多数据处理单元DPU2,DPU3等等,因此创建多个额外的并行数据处理通道。在这种情况下,每个额外数据处理通道可配置为使用来自共用地址偏移寄存器中的共用偏移计算出的地址,例如,在存储器中的共用偏移的间隔;或可选择地每个额外数据处理通道可配置为使用来自其自身各自的多个地址偏移寄存器组中的一个寄存器的其自身独立可编程的偏移。类似地,每个额外数据处理通道可以被共用的使能位或共用的使能逻辑一起使能和禁用;或者每个额外数据处理通道可以通过各自的使能位或逻辑独立地使能和禁用;或者使能逻辑可以仅以特定的模式约束将被使能和禁用的通道,例如,在一个,两个, 四个或八个通道的可预定配置之间选择等等。注意到,这里将操作或处理描述为基本上同时或并行地被执行,这并不必然需要操作在时间上完全对齐。例如,沿着各种信号路径能够包括以时钟锁存器形式的流水线级也是可能的,在这种情况下,发生在一个并行通道和另一个并行通道上的操作之间,可能存在特定的时间上的偏移。优选地,操作是同时的,因为它们至少在时间上重叠,通过依靠流水线,时间偏移变大是可能的。尽管如此,两个或更多通道仍然提供并行数据处理,在这个意义上,硬件资源在两个或更多并行通道中的每一个上被复制(未被经由相同的通道以交错的方式调度)。在这种情况下,两个或更多的数据处理通道中的每一个是各自的向量处理通道的示例,这意味着,向量处理硬件在两个或更多的并行向量处理通道中的每一个上被复制,因此创建了可以被认为是矩阵处理器的对象。进一步地,注意到在本发明中使用的术语“字”并非限制于任一特定的长度,而是由当前架构的字宽度定义的任一长度。例如,有时使用“字”用来指32位数据实体,但是在本发明的优选实施例中,长指令字包34中的每个在长度上是64位的。还要注意到,在一般情况下,指令的操作数可能是立即(文字)操作数或更通常地可识别存储了值的寄存器。例如,地址操作数,其指定加载或存储地址,可包括分别指定了基准加上偏移的两个部分,并且每个部分可既包括直接地含有基准或偏移的立即操作数, 或可识别存储那部分地址的寄存器。进一步地,注意到一些操作使用单独的源和目的地寄存器,同时,其它类中使用单一寄存器,以包括源和目的地操作数用于相同指令(例如带有单一寄存器区分符操作数字段的指令,其反转指定的寄存器中的所有位)。如上关于存储器地址和存储器访问进行了描述,并不必然指示限制任一特定存储器类型,并且总体来说,本发明可包括对来往于任何类型电子存储介质的任何存储地址执行加载和存储操作。对于本领域技术人员,此处披露的本发明的其它配置和应用是显而易见的。本发明的保护范围并非限制在所述的实施例中,而是通过权利要求限定。
权利要求
1.一种处理器,所述处理器包括译码单元,设置为接收一系列指令;第一和至少第二数据处理通道,每个所述通道耦连到所述译码单元,所述第二数据处理通道包括使能逻辑,配置为可选择地使能所述第二数据处理通道;可变偏移寻址逻辑,耦连到所述译码单元,配置用于基于相同的存储访问指令的相同的一个或多个地址操作数,生成其间具有可变偏移的第一和第二存储地址;和存储访问电路,耦连于所述可变偏移寻址逻辑以及所述第一和第二数据处理通道,配置为基于存储访问指令的相同的一个或多个寄存器区分符操作数,在所述第一存储地址和所述第一数据处理通道的寄存器之间传输数据,以及在所述第二存储地址和所述第二数据处理通道的相应的寄存器之间传输数据;其中,所述译码单元被配置为将相同的操作码和相同的数据处理指令的相同的一个或多个操作数提供给所述第一和第二数据处理通道,以便于基于所述数据处理指令的相同的一个或多个操作数,所述第一数据处理通道对所述第一数据处理通道的一个或多个寄存器中的数据执行由该操作码指定的操作,并且在第二数据处理通道使能的条件下,所述第二数据处理通道对所述第二数据处理通道的相应的一个或多个寄存器中的数据执行相同的操作。
2.如权利要求1所述的处理器,其特征在于,每个所述数据处理通道是向量处理通道,以便于从每个所述第一和第二存储地址中传送或向其发送的数据是各自的包括多个数据元素的向量,并且在每个所述第一和第二数据处理通道内执行的操作包括对所述多个数据元素的每一个执行的向量处理操作,以响应所述相同的操作码。
3.如权利要求1或2所述的处理器,其特征在于,其中地址偏移逻辑包括可编程的偏移寄存器用于存储所述可变偏移,所述可编程的偏移寄存器配置为在程序控制下被写入。
4.如权利要求1,2或3所述的处理器,其中可变偏移寻址逻辑配置为用于基于相同的加载指令的相同的一个或多个地址操作数,生成其间具有可变加载偏移的第一和第二加载地址,且配置为在基于相同的存储指令的相同的一个或多个地址操作数,生成其间具有可变存储偏移的第一和第二存储地址;将存储访问电路配置为基于所述加载指令的相同的一个或多个寄存器区分符操作数,将来自所述第一加载地址的数据加载到所述第一数据处理通道的寄存器中,并且将来自所述第二加载地址的数据加载到所述第二数据处理通道的相应的寄存器中;和所述存储访问电路进一步配置为基于所述存储指令的相同的一个或多个寄存器区分符操作数,将来自所述第一数据处理通道的寄存器中的数据存储到所述第一存储地址中,以及将来自所述第二数据处理通道的相应寄存器中的数据存储到所述第二存储地址。
5.如权利要求3和4所述的处理器,其特征在于,其中所述可变偏移寻址逻辑包括用于加载和存储操作的分别的可编程偏移寄存器,一个寄存器用于存储可变加载偏移,一个寄存器用于存储可变存储偏移。
6.如权利要求3和4所述的处理器,其特征在于,其中所述可变加载和存储偏移是存储在相同的可编程偏移寄存器中的相同的偏移值。
7.如权利要求1或2所述的处理器,其特征在于,其中所述可变偏移寻址逻辑进一步地包括配置为从存储访问指令的字段中确定偏移的译码逻辑。
8.如任一前述权利要求的处理器,其特征在于,其中所述第一存储地址由存储访问指令的所述一个或多个地址操作数来识别,以及所述可变偏移寻址逻辑配置为通过将所述可变偏移应用到所述第一存储地址来生成所述第二存储地址。
9.如任一前述权利要求的处理器,其特征在于,其中所述使能逻辑包括用于存储至少一个使能位的可编程的使能寄存器,并且被配置为依靠所述使能位可选择地使能所述第二数据处理通道。
10.如权利要求1到8其中任一的处理器,其特征在于,其中所述使能逻辑进一步地包括译码逻辑,所述译码逻辑配置为依靠所述数据处理指令中的至少一个使能位来可选择地使能所述第二数据处理通道。
11.如任一前述权利要求的处理器,其中所述第一数据处理通道包括第一数据处理逻辑和第一数据寄存器组;所述第二数据处理通道包括第二数据处理逻辑和第二数据寄存器组;所述可变偏移寻址逻辑配置为基于相同的加载指令的相同的一个或多个源地址操作数,生成其间具有可变偏移的第一和第二存储地址;和所述存储访问电路配置为将来所述第一存储地址的数据加载到由所述相同的加载指令的一个或多个目的地寄存器区分符操作数指定的所述第一数据寄存器中的一个或多个寄存器中,并且将来自所述第二存储地址的数据加载到由相同的加载指令的相同的一个或多个目的地寄存器区分符操作数指定的所述第二数据寄存器中的相应的一个或多个寄存器中;以便于所述第一数据处理逻辑对从所述第一存储地址加载到指定的第一数据寄存器中的数据执行由所述操作码指定的操作,并且在第二执行通道被使能的条件下,所述第二数据处理逻辑对从所述第二存储地址加载到所述相应的第二数据寄存器中的数据执行所述相同的操作。
12.如权利要求11所述的处理器,其中所述数据处理指令的所述一个或多个操作数包括一个或多个源操作数;和所述第一数据处理通道配置为基于所述数据处理指令的所述一个或多个源操作数,选择所述指定的第一数据寄存器作为用于由所述第一数据处理逻辑执行的操作的源,并且所述第二数据处理通道配置为基于相同的数据处理指令的所述相同的源操作数,选择所述相应的第二数据寄存器作为用于由所述第二数据处理逻辑执行的相同操作的源。
13.如权利要求4和权利要求11或12所述的处理器,其中所述数据处理指令的所述一个或多个操作数包括至少一个目的地操作数;所述存储访问电路进一步地配置为将来自所述第一数据寄存器的另一个寄存器的数据存储到所述第一存储地址,并且将来自所述第二数据寄存器的相应的一个寄存器的数据存储到所述第二存储地址;和所述第一数据处理通道配置为基于所述数据处理指令的所述目的地操作数,选择所述另一个第一寄存器作为用于由所述第一数据处理逻辑执行的操作结果的目的地,并且所述第二数据处理通道配置为基于相同的数据处理指令的所述相同的目的地操作数,选择相应的第二数据寄存器作为用于由所述第二数据处理逻辑执行的操作结果的目的地。
14.如任一前述权利要求的处理器,其中响应于多个存储访问指令中的每个指令,所述可变偏移寻址逻辑配置为基于相同的各自的存储访问指令的相同的一个或多个地址操作数,生成其间具有可变偏移的第一和第二存储地址;响应于所述存储访问指令中的每个指令,所述存储访问电路配置为基于相同的各自的寄存器区分符操作数,将在各自的第一存储地址之间的数据传输到所述第一数据处理通道的各自的寄存器中,并且将在各自的第二存储地址和第二数据处理通道的各自的相应的寄存器之间传输数据;所述译码单元配置为将相同的操作码和相同的数据处理指令的相同的多个源操作数提供给所述第一和第二数据处理通道,以便于基于所述数据处理指令的相同的一个或多个操作数,所述第一数据处理逻辑对所述第一数据处理通道的寄存器中的数据执行由该操作码指定的操作,并且在第二数据处理逻辑被使能的条件下,第二数据处理逻辑对所述第二数据处理通道的相应的寄存器中的数据执行相同的操作。
15.如任一前述权利要求的处理器,包括用于执行数据处理指令的数据执行路径和用于执行控制指令的单独的控制执行路径,所述数据执行路径具有所述第一和第二或更多数据处理通道的形式。
16.如权利要求15所述的处理器,其中所述译码单元配置为接收一系列指令包,每个指令包包括多个构成指令,至少其中一些指令包中的每个指令包包括由控制指令和数据处理指令形成的长指令字,并且所述译码单元基于译码长指令字进行配置,以便将控制指令提供给控制路径用于执行,并将数据处理指令提供给数据处理路径的数据处理通道用于和所述控制指令并行地执行。
17.如任一前述权利要求的处理器,其中每个所述数据处理通道包括具有可配置执行单元形式的数据处理逻辑,为响应所述相同的操作码而可配置为执行多个构成操作。
18.如权利要求2,16和17所述的处理器,以便于所述第二或更多的数据处理通道提供对于所述向量处理、长指令字执行和可配置执行正交的第四维并行性。
19.如任一前述权利要求的处理器,包括和所述第一数据处理通道并行的多个第二数据处理通道;其中,所述存储访问电路配置为在每个第二数据处理通道和相应的第二存储地址之间传输数据;和每个第二数据处理通道对各自的第二存储地址的数据执行相同的操作。
20.如权利要求19所述的处理器,其中所述可变偏移寻址逻辑配置为生成第一存储地址和多个不同的第二存储地址,每个存储地址用于所述数据处理通道的各自的一个通道,但是从共用的可变偏移中获得。
21.如权利要求19所述的处理器,其中所述可变偏移寻址逻辑配置为生成第一存储地址和多个独立的第二存储地址,每个存储地址从独立的可变偏移中获得,用于所述第二数据处理通道的每个通道。
22.如权利要求19到21任一所述的处理器,其中所述第二数据处理通道配置为共同地由共用使能位使能。
23.如权利要求19到21任一所述的处理器,其中每个第二数据处理通道配置为由各自的使能位独立地使能和禁用。
24.一种无线用户终端,包括根据任一前述权利要求的处理器,和与所述寻址逻辑相耦连的存储器,所述存储器存储由所述无线用户终端接收的表示无线信号的数据,并且所述译码单元配置为接收用于对该数据执行信号处理的一系列指令。
25.如权利要求24所述的处理器,其中该一系列指令执行网格译码操作和快速傅立叶变换中的至少一个。
26.一种计算机程序产品,包括体现在非临时性计算机可读介质上的代码,包括根据任一前述权利要求配置为对处理器的可变地址偏移进行编程的代码。
全文摘要
处理器包括第一和至少带有使能逻辑的第二数据处理通道,该使能逻辑用于可选择地使能第二通道;在基于相同的存储访问指令的相同的一个或多个地址操作数之间,用于生成具有可变偏移的第一和第二存储地址的逻辑;和基于访问指令的相同的一个或多个寄存器区分符操作数,用于在第一地址和第一数据处理通道的寄存器之间以及在第二地址和第二通道的相应的寄存器之间,传输数据的电路。基于数据处理指令的相同的一个或多个操作数,第一数据处理通道使用第一数据处理通道的一个或多个寄存器执行操作,并且在第二通道使能的条件下,第二通道使用其自身的寄存器组中的一个或多个相应的寄存器执行相同的操作。
文档编号G06F9/38GK102385504SQ20111025043
公开日2012年3月21日 申请日期2011年8月29日 优先权日2010年8月27日
发明者史蒂芬·菲力克斯, 艾德瓦德·安德鲁斯, 西蒙·哈克特, 西蒙·诺尔斯 申请人:艾色拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1