用于双数据路径处理的装置和方法

文档序号:6331637阅读:235来源:国知局
专利名称:用于双数据路径处理的装置和方法
技术领域
本发明涉及一种计算机处理器,一种操作该计算机处理器的方法,以及一种包括 计算机用的指令集的计算机程序产品。
背景技术
为了提高计算机处理器的速度,现有技术结构已使用了双执行路径用于执行指 令。双执行路径处理器可以根据单指令多数据(SIMD)原理操作,利用操作的并行性用于提 高处理器速度。然而,虽然使用双执行路径和SIMD处理,但是仍不断的需要提高处理器速度。典 型的双执行路径处理器使用两个大致类似的通路,因此每个通路都处理控制代码和数据路 径代码。虽然公知的处理器支持32位标准编码和16位“密集”编码的组合,但是该方案承 受着许多不足,包括缺少在16位格式中少数可用位中的语义内容。此外,常规的通用数字信号处理器不能匹配用于许多目的的应用特定算法,包括 执行诸如卷积、快速傅立叶变换、Trellis/Viterbi编码、相关性、有限脉冲响应过滤和其他 操作的专用操作。

发明内容
在根据本发明的一个实施例中,提供一种具有控制和数据处理能力的计算机处理 器。该计算机处理器包括用于解码指令的解码单元;包括第一数据执行路径和第二数据 执行路径的数据处理设备,所述第一数据执行路径包括固定操作符,所述第二数据执行路 径至少包括可配置操作符,所述可配置操作符具有多个预定义的配置,通过数据处理指令 的操作码部分可选择所述配置中的至少一些;其中所述解码单元可操作用于检测数据处理 指令是定义固定数据处理操作还是可配置数据处理操作,所述解码单元使计算机系统将用 于处理的数据在检测到所述固定数据处理指令时提供给所述第一数据执行路径,而在检测 到可配置数据处理指令时提供给所述可配置数据执行路径。在另一相关实施例中,解码单元能够解码来自存储器的指令包流,每个包包括多 个指令。解码单元也可操作用于检测指令包是否包含数据处理指令。可配置操作符以多位 值的级别、或者以字的级别可配置,其中多位值包括具有四个或更多位的多位值。根据单指 令多数据原理,第一数据执行路径的多个固定操作符可以被布置用于在独立通道中执行多 个固定操作。同样,根据单指令多数据原理,第二数据执行路径的多个可配置操作符可以被 布置用于在不同通道中执行多个操作。在另一相关实施例中,第二执行路径的可配置操作符可以被布置用于接收确定所 执行的操作的特性的配置信息。可以从定义可配置数据处理操作的指令的字段接收该信息。第二执行路径的可配置操作符可以被布置用于接收包括控制相关的互连性的信息的可 配置信息。该计算机处理器进一步包括与第二数据执行路径的可配置操作符相关联的控 制映射,所述控制映射可操作用于从可配置数据处理指令接收至少一个配置位,并给响应 于此的可配置操作符提供配置信息。该配置信息可以通过所述可配置操作符确定操作的特 性;并且控制两个或多个所述配置操作符之间的互连性。在另一相关实施例中,第二执行路径的可配置操作符可被布置用于从源而不是从 可配置数据处理指令来接收确定待执行的操作的特性的配置信息、或者控制互连性的配置 信息。第二数据执行路径的至少一个可配置操作符能够在向结果存储器返回结果之前以比 两个计算大的执行深度来执行数据处理指令。该计算机处理器可以包括转换装置,其用于 从可配置数据处理指令接收数据处理操作数并在适当时转换所述数据处理操作数用于提 供给一个或多个所述可配置操作符。计算机处理器也可以包括以下转换装置,其用于从一 个或多个所述可配置操作符接收结果,并在适当时转换所述结果用于提供给结果存储器和 反馈循环中的一个或多个。该计算机处理器也包括多个控制映射,其用于将从可配置数据 处理指令所接收的配置位映射成用于提供给第二数据执行路径的可配置操作符的配置信 息。同样,该计算机处理器可以包括以下转换装置,其用于从控制映射接收配置信息,并在 适当时转换该配置信息用于提供给第二数据执行路径的可配置操作符。该计算机处理器也 可以包括从一个或多个以下项所选择的可配置操作符乘累加操作符;算术操作符;状态 操作符;和交叉通道换码器。同样,该计算机处理器可以包括能执行从如下项中所选择的一 个或多个操作的操作符和指令集快速傅立叶变换;反向快速傅立叶变换;Viterbi编码/ 解码;Turbo编码/解码;和有限脉冲响应计算;以及任何其他相关性或卷积。在根据本发明的另一实施例中,提供一种操作具有控制和数据处理能力的计算机 处理器的方法,所述计算机处理器包括第一数据执行路径和第二数据执行路径,所述第一 数据执行路径包括固定操作符,所述第二数据执行路径包括可配置操作符,所述可配置操 作符具有多个预定义的配置,所述配置中的至少一些可通过数据处理指令的操作码部分来 选择。该方法包括解码多个指令以检测所述多个指令的至少一个数据处理指令是定义固 定数据处理操作还是可配置数据处理操作;使计算机处理器将用于处理的数据在检测到固 定数据处理指令时提供给所述第一数据执行路径,而在检测可配置数据处理指令时提供给 所述可配置数据执行路径;以及输出结果。在根据本发明的另一实施例中,提供一种包括程序代码装置的计算机程序产品, 所述程序代码装置用于使计算机处理器执行以下步骤,其中所述计算机处理器包括第一数 据执行路径和第二数据执行路径,所述第一数据执行路径包括固定操作符,所述第二数据 执行路径包括可配置操作符,所述可配置操作符具有多个预定义的配置,所述配置中的至 少一些可通过数据处理指令的操作码部分来选择,即解码多个指令以检测所述多个指令 的至少一个数据处理指令是定义固定数据处理操作还是可配置数据处理操作;使计算机处 理器将用于处理的数据在检测到固定数据处理指令时提供给所述第一数据执行路径,而在 检测可配置数据处理指令时提供给所述可配置数据执行路径;以及输出结果。在根据本发明的另一实施例中,提供一种包括第一多个指令和第二多个指令的数 据处理指令集,所述第一多个指令具有指示数据处理操作的固定类型的字段,所述第二多 个指令具有指示数据处理操作的可配置类型的字段。
在根据本发明的另一实施例中,提供一种包含可配置操作符的数据执行路径的计 算机处理器,其中可配置操作符包括操作符配置的多个预定义的组,每个组包括来自独立 的操作符类的操作符。操作符类可以包括从一个或多个如下项中所选择的类乘累加操作 符;算术操作符;状态操作符;和换码器。从操作符配置的每个预定义的组内所选择的操作 符之间的连接能够通过由计算机处理器所执行的指令内的操作码部分来配置。同样,从操 作符配置的多于一个的预定义的组所选择的操作符之间的连接能够通过由计算机处理器 所执行的指令内的操作码部分来配置。本发明的其他优点和新颖特性在如下说明中将会部分地被提出,并且依据下面的 审查和附图,对于本领域技术人员而言部分地是显然的;或者可以通过实施本发明被学习 到。


为了更好的理解本发明,并说明可以如何同样实施本发明,现在将仅通过示例参 考附图,其中图1是根据本发明实施例的不对称的双执行路径计算机处理器的框图;图2表示根据本发明实施例的用于图1的处理器的指令的示例性类;以及图3是表示根据本发明实施例的可配置深执行单元的组件的示意具体实施例方式图1是根据本发明实施例的不对称的双路径计算机处理器的框图。图1的处理器 将单指令流100的处理在两个不同的硬件执行路径之间划分即用于处理控制代码的控制 执行路径102、和用于处理数据代码的数据执行路径103。两个执行路径102、103的数据宽 度、操作符和其他特征根据控制代码和数据路径代码的不同特征而不同。典型地,控制代码 支持较少、较窄的寄存器,难于并行化,典型地(但不是唯一地)用C代码或另一高级语言 来写,并且它的代码密度一般比它的速度性能更重要。相反,数据路径代码典型地支持宽寄 存器的大文件,可高度并行化,以汇编语言来写,并且它的性能比它的代码密度更重要。在 图1的处理器中,两个不同的执行路径102和103专用于处理两种不同类型的代码,每侧 都具有其自己的结构寄存器文件(诸如控制寄存器文件104和数据寄存器文件105),在寄 存器宽度和数量方面是不同的;控制寄存器具有较窄的宽度,以位数计(在一个示例中,32 位),而数据寄存器具有较宽的宽度(在一个示例中,64位)。因为寄存器的两个执行路径 执行不同的专门功能而具有不同的位宽度,因此该处理器是不对称的。在图1的处理器中,指令流100由指令包的序列组成。所提供的每个指令包由指 令解码单元101解码,其从数据指令中分离控制指令,如下进一步所述。控制执行路径102 为指令流处理控制流操作,并利用分支单元106、执行单元107、和载入存储单元108管理机 器的状态寄存器,其中在该实施例中所述载入存储单元108被数据执行路径103共享。只 有处理器的控制侧需要对编译器(诸如对于C、C++、或Java语言的编译器、或另一高级语 言编译器)可视。在控制侧内,分支单元106和执行单元107的操作依照本领域普通技术 人员公知的常规处理器设计。在固定执行单元109和可配置深度执行单元110中,数据执行路径103使用SIMD(单指令多数据)并行性。就像将在下面进一步描述的那样,除了常规的SIMD处理器 所使用的宽度以外,为了增加每指令工作,可配置深度执行单元110提供处理的深度。如果被解码的指令定义控制指令,则其被施加给机器的控制执行路径上的适当的 功能单元(例如分支单元106、执行单元107和载入/存储单元108)。如果被解码的指令 定义具有固定或者可配置数据处理操作的指令,则其被供应给数据处理执行路径。在指令 包的数据指令部分内,指定位表示指令是固定还是可配置数据处理指令,以及在可配置指 令的情况下,另外的指定位定义配置信息。根据被解码的数据处理指令的子类型,将数据提 供给机器的数据处理路径的固定或可配置执行子路径。这里,“可配置”表示从多个预定义的(“伪静态”)操作符配置中选择操作符配置 的能力。操作符的伪静态配置是有效的用以使操作符(i)执行特定类型的操作或者(ii) 以特定形式与相关元件互连或者(iii)上述(i)和(ii)的组合。实际上,所选的伪静态配 置每次可以确定许多操作符元素的特性和互连性。它也能控制与数据路径相关联的转换配 置。在优选的实施例中,至少部分多个伪静态操作符配置通过数据处理指令的操作代码部 分是可选择的,这将在下面进一步描述。同样根据这里的实施例,“可配置指令”允许以多位 值的级别执行定制的操作;例如以四个或多个位多位值的级别,或者以字的级别。需要指出的是,控制和数据处理指令可以定义存储器访问(载入/存储)和基本 算术操作,所述控制和数据处理指令在机器的它们的相应不同的侧上被执行。用于控制操 作的输入/操作数可被提供给控制寄存器文件104/从控制寄存器文件104提供,而用于数 据处理操作的数据/操作数被提供给寄存器文件105/从寄存器文件105提供。根据本发明的实施例,每个数据处理操作的至少一个输入可以是矢量。在这方面, 可以认为可配置数据路径的可配置操作符和/或转换电路是可配置的,以利用所执行的操 作的特性和/或其间的互连性执行矢量操作。例如,对数据处理操作的64位矢量输入可以 包括四个16位的标量操作数。这里,“矢量”是标量操作数的集合。矢量算术可以在多个标 量操作数上执行,并可以包括标量元素的转向、移动和置换。不是矢量操作的所有操作数都 需要是矢量;例如,矢量操作可以有标量和至少一个矢量作为输入;并且输出或者是标量 或者是矢量的结果。这里,“控制指令”包括专用于程序流和分支以及地址产生的指令;但不是数据处 理。“数据处理指令”包括用于逻辑操作或算术操作的指令,对于该算术操作,至少一个输入 是矢量。数据处理指令可以在多个数据指令上操作,例如在SIMD处理中,或在处理数据元 素的宽的、短的矢量中。上述的控制指令和数据处理指令的基本功能并不重叠;然而,共性 在于两种类型的代码都具有逻辑和标量算术能力。图2示出用于图1的处理器的指令包的三种类型。指令包的每种类型都是64位 长。指令包211是3标量类型,用于密集控制代码,并包括三个21位控制指令(c21)。指令 包212和213是LIW(长指令字)类型,用于数据路径代码的并行执行。在该示例中,每个 指令包212、213都包括两个指令,但是如果需要可以包括不同的数目。指令包212包括34 位数据指令(d34)和28位存储器指令(m28);并且被用于并行执行具有数据侧载入存储操 作(m28指令)的数据侧算术(d34指令)。存储器类指令(m28)可以利用来自控制侧的地 址从处理器的控制侧或数据侧读出,或写入处理器的控制侧或数据侧。指令包213包括34 位数据指令(d34)和21位控制指令(c21);并被用于并行执行具有控制侧操作(c21指令)(例如控制侧算术、分支或者载入存储操作)的数据侧算术(d34指令)。图1的实施例的指令解码单元101使用每个指令包的初始识别位、或者在预定位 位置处的某些其他指定的识别位,用于确定正在解码哪一种类型的包。例如,如图2所示, 初始位“1”表示指令包是标量控制指令类型,具有3个控制指令;而初始位“01”和“00”表 示类型212和213的指令包,在包212中具有数据和存储器指令或者在包213中具有数据 和控制指令。已经解码了每个指令包的初始位,图1的解码单元101根据指令包的类型将 每个包的指令适当地传递到控制执行路径102或者数据执行路径103。为了执行图2的指令包,图1的实施例的处理器的指令解码单元101从存储器顺 序地取得程序包;并程序包顺序地被执行。在指令包内,顺序地执行包211的指令,其中首 先执行64位字的最低有效端的21位控制指令,然后是接下来的21位控制指令,以及然后 是最高有效端的21位控制指令。在指令包212和213内,可以同时执行指令(在根据本发 明的实施例中,虽然这不是必需的情况)。因此,以图1的实施例的处理器的程序顺序,程序 包被顺序地执行;但是包内的指令可以或者顺序地被执行(对于包类型211),或同时被执 行(对于包212和213)。下面,将类型212和213的指令包分别简称为MD和⑶包(分别 包含一个存储器和一个数据指令;以及一个控制指令和一个数据指令)。通过使用21位控制指令,图1的实施例克服了许多在具有其他长度指令的处理器 中以及特别是在支持数据指令用的32位标准编码和控制代码用的16位“密集”编码的组 合的处理器中所发现的缺陷。在这种双16/32位处理器中,由于使用每条指令用的双编码、 或者使用具有通过分支、提取地址在编码方案之间转换的装置或其他装置的两个独立的解 码器而引起冗余。根据本发明实施例,通过使用单21位长度用于所有控制指令来消除该冗 余。此外,使用21位控制指令消除在16位“密集”编码方案中不充分的语义内容所产生的 缺陷。由于不充分的语义内容,使用16位方案的处理器典型地需要设计折衷的某些混合, 诸如使用两操作数破坏性操作,其中相应的代码膨胀(code bloat)用于复制;使用对寄 存器文件的子集的有窗口访问,其中代码膨胀用于溢出/填充或者窗口指针操作;或频繁 逆转为32位格式,因为不是所有的操作都可以以16位格式中很少可用的操作码位来表示。 在本发明实施例中,通过使用21位控制指令减轻这些缺陷。根据本发明实施例,可以使用大量指令。例如,指令签名可以是如下任一种,其中 C格式、M格式、和D格式分别表示控制、存储器访问和数据格式
指令签名参数被...使用instr指令没有参数仅仅C格式instr dst指令有单个目的参数仅仅C格式instr srcO指令有单个源参数仅仅C或D格式instr dst, srcO指令有单个目的、单个源参数D和M格式指令instr dst,srcO,srcl指令有单个目的参数和两个源参数C、D和M格式指令
同样,根据本发明一个实施例,C格式指令都提供SISD (单指令单数据)操作,而M 格式和D格式指令提供SISD或SIMD操作。例如,控制指令可以提供一般的算术、比较和逻 辑指令;控制流指令;存储器载入和存储指令;以及其他。数据指令可以提供一般的算术、 移位、逻辑和比较指令;清洗(shuffle)、分类、字节扩展和置换指令;线性反馈偏移寄存指 令;以及经由可配置深度执行单元110 (如下所述)由用户定义的指令。存储器指令可以提 供存储器载入和存储;将所选择的数据寄存器复制到控制寄存器;将广播控制寄存器复制 到数据寄存器;以及立即到寄存器指令。根据本发明一个实施例,图1的处理器的特征在于第一固定数据执行路径和第二 可配置数据执行路径。第一数据路径具有以与常规的SIMD处理设计类似的形式被分裂为 通道的固定SIMD执行单元。第二数据路径具有可配置深度执行单元110。“深度执行”指 的是在向寄存器文件返回结果之前在由单个发布的指令所提供的数据上执行多个连续操 作的处理器能力。深度执行的一个示例在于常规的MAC操作(乘和累加),其在来自单个 指令的数据上执行两个操作(乘法和加法),因此具有数量级2的深度。深度执行也可以 以操作数输入的数目等于结果输出的数目为特征;或等同地,价进(valency-in)等于价出 (valency-out)。因此,例如具有一个结果的常规两操作数加法不是优选的深度执行的示 例,因为操作数的数目不等于结果的数目;而卷积、快速傅立叶变换、Trellis/Viterbi编 码、相关器、有限脉冲响应过滤器以及其他信号处理算法是深度执行的示例。专用数字信号 处理(DSP)算法典型地在位级上以及以存储器映射的形式执行深度执行。但是,常规的寄 存器映射通用DSP的算法不执行深度执行,而是在MAC操作中,执行顺序深度最多为数量级 2的指令。相反,图1的处理器提供寄存器映射通用处理器,其能够深度执行数量级大于2 的动态可配置的字级指令。在图1的处理器中,深度执行指令的特性(待执行的数学函数 的图表)可以由指令本身中的配置信息调节/定制。在优选实施例中,格式指令包括被分 配给配置信息的位位置。为了提供这个能力,深度执行单元110具有可配置执行资源,其意 味着可以上载操作符模式、互连性和常数以适合每个应用。深度执行对执行的并行性添加 深度,其正交于由SIMD和LIW处理的早期构思所提供的宽度;因此它表示用于增加目标处 理器的每指令工作(work-per-instruction)的其他尺度。图3示出根据本发明实施例的可配置深度执行单元310的组件。如图1所示,可配 置深度执行单元110是数据执行路径103的一部分,并因此可以由来自图2的MD和⑶指 令包212和213的数据侧指令指示。在图3中,从图1的指令解码单元101和数据寄存器 文件105将指令314和操作数315提供到深度执行单元310。被解码的指令314中的多位 配置代码被用于访问控制映射316,其将多位代码扩展为比较复杂的配置信号集用于配置 深度执行单元的操作符。例如,控制映射316可以被实施为查询表,其中将指令的不同的可 能多位代码映射为深度执行单元的不同的可能操作符配置。根据对控制映射316的查询表 查询的结果,交叉互连317配置一组操作符318-321,在任何布置中对于执行由多位指令代 码所表示的操作符配置都是必要的。例如,该操作符可以包括乘法操作符318、算术逻辑 单元(ALU)操作符319、状态操作符320、或交叉通道换码器321。在一个实施例中,深度执 行单元包含15个操作符一个乘法操作符318、八个ALU操作符319、四个状态操作符320、 和两个交叉通道换码器321 ;尽管其他操作符数目也是可能的。被提供到深度执行单元的 操作数315可以是例如16位操作数;将这些操作数提供到第二交叉互连322,其可以将操
8作数提供给合适的操作符318-321。第二交叉互连322也从操作符318-321接收中间结果 的反馈324,所述反馈接着又同样可以由第二交叉互连322提供给合适的操作符318-321。 第三交叉互连323多路复用来自操作符318-321的结果,并输出最后结果325。各种控制 信号可以被用于配置操作符;例如,图3的实施例的控制映射316不必要被实施为单个查询 表,而是可以被实施为两个或更多级联查询表的序列。第一查询表中的项目可以从给出的 多位指令代码指向第二查询表,因此减少了在每个查询表中用于复杂操作符配置所需的存 储量。例如,第一查询表可以被组织为配置种类的库,使得多个多位指令代码在第一查询表 中被组合在一起,其中每组指向提供该组的每个多位代码的特定配置的随后的查询表。根据图3的实施例,操作符优选地被预配置为各种操作符类。实际上,这通过硬布 线的策略层来实现。该方法的优势在于,意味着需要存储更少的预定义的配置,并且控制电 路可以更简单。例如,将操作符318预配置在乘法操作符的类中;将操作符319预配置为 ALU操作符;将操作符320预配置为状态操作符;以及将操作符321预配置为交叉通道换码 器;而且其他预配置的类是可能的。然而,即使操作符的类被预配置,对于用于实施所给出 的算法的特定配置的最终布置,指令的运行时间灵活性能够布置至少以下项(i)在每类 中的操作符的连接性;(ii)与来自其他类的操作符的连接性;(iii)任何相关转换装置的 连接性。技术人员应当理解,虽然上面已描述了什么被认为是本发明的最佳模式以及在什 么情况下执行本发明的其他模式是适当的,但是本发明不应局限于在优选实施例的所述描 述中公开的特定装置配置或方法步骤。本领域技术人员同样应当认识到,本发明具有广泛 的应用,并且实施例允许在不偏离本发明构思的情况下具有广范的不同的实施和修改。特 别是,这里提及的示例性位宽不是限制性的,也不是被称为半字、字、长等的位宽的任意选 择。
权利要求
计算机处理器,所述处理器包括解码单元,用于解码来自存储器的指令包流,每个指令包包括多个指令;处理通道,其包括多个功能单元,并且可操作用于执行控制处理操作;其中所述解码单元可操作用于接收具有64位位长的指令包,并且可操作用于使用所述指令包中的识别位来检测所述指令包是否定义三个每个都具有21位位长的控制指令,以及其中当所述解码单元检测到所述指令包包括三个这种控制指令时所述控制指令被提供给所述处理通道用于按照它们出现在所述指令包中的顺序来执行。
2.如权利要求1所述的计算机处理器,其中所述处理通道包括从控制寄存器文件、控 制执行单元、分支执行单元和载入/存储单元中选择的一个或多个。
3.操作计算机处理器的方法,所述计算机处理器包括处理通道并且能够执行具有多个 功能单元的控制处理操作,所述方法包括(a)接收来自存储器的指令包序列,所述指令包的每一个均包括多个定义了操作的指令;(b)通过以下方式来依次解码每个指令包使用所述指令包中的识别位来确定所述指 令包是否定义了三个每个具有21位位长的控制指令,并且其中当所述解码单元检测到所 述指令包包括三个这种控制指令时,提供所述多个控制指令给所述第一处理通道用于按照 它们出现在所述指令包中的顺序来执行。
4.计算机程序产品,包括用于促使计算机根据权利要求3的方法来操作的程序代码装置。
5.计算机程序代码,包括用于促使计算机根据权利要求3所述的方法来操作的指令序列。
6.用于计算机的指令集,所述指令集包括具有64位位长的指令包类,并且每个包括 识别位;和三个用于顺序执行的控制指令,所述控制指令中的每一个都具有21位的位长。
全文摘要
一种具有控制和数据处理能力的计算机处理器,包括用于解码指令的解码单元。数据处理装置包括第一数据执行路径和第二数据执行路径,所述第一数据执行路径包括固定操作符,所述第二数据执行路径至少包括可配置操作符,所述可配置操作符具有多个预定义的配置,所述配置中的至少一些可通过数据处理指令的操作码部分来选择。解码单元可操作用于检测数据处理指令是定义固定数据处理操作还是可配置数据处理操作,所述解码单元使计算机系统将用于处理的数据在检测到所述固定数据处理指令时提供给所述第一数据执行路径,而在检测到可配置数据处理指令时提供给所述可配置数据执行路径。
文档编号G06F9/318GK101963897SQ20101027629
公开日2011年2月2日 申请日期2005年3月22日 优先权日2004年3月31日
发明者S·诺勒斯 申请人:艾色拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1