CN1989485A - 用于双数据路径处理的装置和方法 - Google Patents

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

Info

Publication number
CN1989485A
CN1989485A CNA200580010665XA CN200580010665A CN1989485A CN 1989485 A CN1989485 A CN 1989485A CN A200580010665X A CNA200580010665X A CN A200580010665XA CN 200580010665 A CN200580010665 A CN 200580010665A CN 1989485 A CN1989485 A CN 1989485A
Authority
CN
China
Prior art keywords
data
configurable
computer processor
instruction
data 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.)
Granted
Application number
CNA200580010665XA
Other languages
English (en)
Other versions
CN1989485B (zh
Inventor
S·诺勒斯
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.)
Icera LLC
Original Assignee
Icera LLC
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 Icera LLC filed Critical Icera LLC
Publication of CN1989485A publication Critical patent/CN1989485A/zh
Application granted granted Critical
Publication of CN1989485B publication Critical patent/CN1989485B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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/30181Instruction operation extension or modification
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)
  • Hardware Redundancy (AREA)

Abstract

一种具有控制和数据处理能力的计算机处理器,包括用于解码指令的解码单元。数据处理装置包括第一数据执行路径和第二数据执行路径,所述第一数据执行路径包括固定操作符,所述第二数据执行路径至少包括可配置操作符,所述可配置操作符具有多个预定义的配置,所述配置中的至少一些可通过数据处理指令的操作码部分来选择。解码单元可操作用于检测数据处理指令是定义固定数据处理操作还是可配置数据处理操作,所述解码单元使计算机系统将用于处理的数据在检测到所述固定数据处理指令时提供给所述第一数据执行路径,而在检测到可配置数据处理指令时提供给所述可配置数据执行路径。

Description

用于双数据路径处理的装置和方法
技术领域
本发明涉及一种计算机处理器,一种操作该计算机处理器的方法,以及一种包括计算机用的指令集的计算机程序产品。
背景技术
为了提高计算机处理器的速度,现有技术结构已使用了双执行路径用于执行指令。双执行路径处理器可以根据单指令多数据(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和CD包(分别包含一个存储器和一个数据指令;以及一个控制指令和一个数据指令)。
通过使用21位控制指令,图1的实施例克服了许多在具有其他长度指令的处理器中以及特别是在支持数据指令用的32位标准编码和控制代码用的16位“密集”编码的组合的处理器中所发现的缺陷。在这种双16/32位处理器中,由于使用每条指令用的双编码、或者使用具有通过分支、提取地址在编码方案之间转换的装置或其他装置的两个独立的解码器而引起冗余。根据本发明实施例,通过使用单21位长度用于所有控制指令来消除该冗余。此外,使用21位控制指令消除在16位“密集”编码方案中不充分的语义内容所产生的缺陷。由于不充分的语义内容,使用16位方案的处理器典型地需要设计折衷的某些混合,诸如:使用两操作数破坏性操作,其中相应的代码膨胀(code bloat)用于复制;使用对寄存器文件的子集的有窗口访问,其中代码膨胀用于溢出/填充或者窗口指针操作;或频繁逆转为32位格式,因为不是所有的操作都可以以16位格式中很少可用的操作码位来表示。在本发明实施例中,通过使用21位控制指令减轻这些缺陷。
根据本发明实施例,可以使用大量指令。例如,指令签名可以是如下任一种,其中C格式、M格式、和D格式分别表示控制、存储器访问和数据格式:
指令签名 参数 被...使用
instr 指令没有参数 仅仅C格式
instr dst 指令有单个目的参数 仅仅C格式
instr src0 指令有单个源参数 仅仅C或D格式
instr dst,src0 指令有单个目的、单个源参数 D和M格式指令
instr dst,src0,src1 指令有单个目的参数和两个源参数 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和CD指令包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,其可以将操作数提供给合适的操作符318-321。第二交叉互连322也从操作符318-321接收中间结果的反馈324,所述反馈接着又同样可以由第二交叉互连322提供给合适的操作符318-321。第三交叉互连323多路复用来自操作符318-321的结果,并输出最后结果325。各种控制信号可以被用于配置操作符;例如,图3的实施例的控制映射316不必要被实施为单个查询表,而是可以被实施为两个或更多级联查询表的序列。第一查询表中的项目可以从给出的多位指令代码指向第二查询表,因此减少了在每个查询表中用于复杂操作符配置所需的存储量。例如,第一查询表可以被组织为配置种类的库,使得多个多位指令代码在第一查询表中被组合在一起,其中每组指向提供该组的每个多位代码的特定配置的随后的查询表。
根据图3的实施例,操作符优选地被预配置为各种操作符类。实际上,这通过硬布线的策略层来实现。该方法的优势在于,意味着需要存储更少的预定义的配置,并且控制电路可以更简单。例如,将操作符318预配置在乘法操作符的类中;将操作符319预配置为ALU操作符;将操作符320预配置为状态操作符;以及将操作符321预配置为交叉通道换码器;而且其他预配置的类是可能的。然而,即使操作符的类被预配置,对于用于实施所给出的算法的特定配置的最终布置,指令的运行时间灵活性能够布置至少以下项:(i)在每类中的操作符的连接性;(ii)与来自其他类的操作符的连接性;(iii)任何相关转换装置的连接性。
技术人员应当理解,虽然上面已描述了什么被认为是本发明的最佳模式以及在什么情况下执行本发明的其他模式是适当的,但是本发明不应局限于在优选实施例的所述描述中公开的特定装置配置或方法步骤。本领域技术人员同样应当认识到,本发明具有广泛的应用,并且实施例允许在不偏离本发明构思的情况下具有广范的不同的实施和修改。特别是,这里提及的示例性位宽不是限制性的,也不是被称为半字、字、长等的位宽的任意选择。

Claims (28)

1、一种具有控制和数据处理能力的计算机处理器,包括:
用于解码指令的解码单元;
包括第一数据执行路径和第二数据执行路径的数据处理设备,所述第一数据执行路径包括固定操作符,所述第二数据执行路径至少包括可配置操作符,所述可配置操作符具有多个预定义的配置,所述配置中的至少一些可通过数据处理指令的操作码部分来选择;
其中所述解码单元可操作用于检测数据处理指令是定义固定数据处理操作还是可配置数据处理操作,所述解码单元使计算机系统将用于处理的数据在检测到固定数据处理指令时提供给所述第一数据执行路径,而在检测到可配置数据处理指令时提供给所述可配置数据执行路径。
2、如权利要求1所述的计算机处理器,其中解码单元能够解码来自存储器的指令包流,每个包包括多个指令。
3、如权利要求1或2所述的计算机处理器,其中解码单元可操作用于检测指令包是否包含数据处理指令。
4、如前述权利要求之一所述的计算机处理器,其中可配置操作符以多位值的级别可配置。
5、如权利要求4所述的计算机处理器,其中可配置操作符以包括四个或更多位的多位值的级别可配置。
6、如权利要求4所述的计算机处理器,其中可配置操作符以字的级别可配置。
7、如前述权利要求之一所述的计算机处理器,其中根据单指令多数据原理,第一数据执行路径的多个固定操作符被布置用于在独立通道中执行多个固定操作。
8、如前述权利要求之一所述的计算机处理器,其中根据单指令多数据原理,第二数据执行路径的多个可配置操作符被布置用于在不同通道中执行多个操作。
9、如前述权利要求之一所述的计算机处理器,其中第二执行路径的可配置操作符被布置用于接收确定所执行的操作的特性的配置信息。
10、如权利要求9所述的计算机处理器,其中第二执行路径的可配置操作符被布置用于从定义可配置数据处理操作的指令的字段接收确定所执行的操作的特性的配置信息。
11、如前述权利要求之一所述的计算机处理器,其中第二执行路径的可配置操作符被布置用于接收包括控制相关的互连生的信息的配置信息。
12、如前述权利要求之一所述的计算机处理器,包括与第二数据执行路径的可配置操作符相关联的控制映射,所述控制映射可操作用于从可配置数据处理指令接收至少一个配置位,并给响应于此的可配置操作符提供配置信息。
13、根据权利要求12所述的计算机处理器,其中所述配置信息控制两个或更多所述可配置操作符之间的互连性。
14、根据前述权利要求之一所述的计算机处理器,其中第二执行路径的可配置操作符被布置用于从源而不是从可配置数据处理指令接收确定待执行的操作的特性的配置信息、或者控制互连性的配置信息。
15、根据前述权利要求之一所述的计算机处理器,其中第二数据执行路径的至少一个可配置操作符能够在向结果存储器返回结果之前以比两个计算大的执行深度执行数据处理指令。
16、根据前述权利要求之一所述的计算机处理器,包括转换装置,其用于从可配置数据处理指令接收数据处理操作数,并在适当时转换所述数据处理操作数用于提供给一个或多个所述可配置操作符。
17、根据前述权利要求之一所述的计算机处理器,包括转换装置,其用于从一个或多个所述可配置操作符接收结果,并在适当时转换所述结果用于提供给结果存储器和反馈循环中的一个或多个。
18、根据前述权利要求之一所述的计算机处理器,包括多个控制映射,其用于将从可配置数据处理指令所接收的配置位映射成用于提供给第二数据执行路径的可配置操作符的配置信息。
19、根据前述权利要求之一所述的计算机处理器,包括转换装置,其用于从控制映射接收配置信息,并在适当时转换该配置信息用于提供给第二数据执行路径的可配置操作符。
20、根据前述权利要求之一所述的计算机处理器,包括可配置操作符,其从一个或多个如下项中选出:乘累加操作符;算术操作符;状态操作符;以及交叉通道换码器。
21、根据前述权利要求之一所述的计算机处理器,包括能执行从如下项选择的一个或多个操作的操作符、指令集:快速傅立叶变换;反向快速傅立叶变换;Viterbi编码/解码;Turbo编码/解码;和有限脉冲响应计算;以及任何其他相关生或卷积。
22、操作具有控制和数据处理能力的计算机处理器的方法,所述计算机处理器包括第一数据执行路径和第二数据执行路径,所述第一数据执行路径包括固定操作符,所述第二数据执行路径包括可配置操作符,所述可配置操作符具有多个预定义的配置,所述配置中的至少一些可通过数据处理指令的操作码部分来选择,该方法包括:
解码多个指令以检测所述多个指令的至少一个数据处理指令是定义固定数据处理操作还是可配置数据处理操作;
使计算机处理器将用于处理的数据在检测到固定数据处理指令时提供给所述第一数据执行路径,而在检测到可配置数据处理指令时提供给所述可配置数据执行路径;以及
输出结果。
23、包括程序代码装置的计算机程序产品,所述程序代码装置用于使计算机处理器执行以下步骤,其中所述计算机处理器包括第一数据执行路径和第二数据执行路径,所述第一数据执行路径包括固定操作符,所述第二数据执行路径包括可配置操作符,所述可配置操作符具有多个预定义的配置,所述配置中的至少一些可通过数据处理指令的操作码部分来选择,即:
解码多个指令以检测所述多个指令的至少一个数据处理指令是定义固定数据处理操作还是可配置数据处理操作;
使计算机处理器将用于处理的数据在检测到固定数据处理指令时提供给所述第一数据执行路径,而在检测到可配置数据处理指令时提供给所述可配置数据执行路径;以及
输出结果。
24、包括第一多个指令和第二多个指令的数据处理指令集,所述第一多个指令具有指示数据处理操作的固定类型的字段,所述第二多个指令具有指示数据处理操作的可配置类型的字段。
25、一种具有包含可配置操作符的数据执行路径的计算机处理器,其中可配置操作符包括操作符配置的多个预定义的组,每个组包括来自独立的操作符类的操作符。
26、如权利要求25所述的计算机处理器,其中操作符类包括从一个或多个如下项所选择的类:乘累加操作符;算术操作符;状态操作符;以及换码器。
27、如权利要求25所述的计算机处理器,其中从操作符配置的一个或多个预定义的组内所选择的操作符之间的连接能够通过由计算机处理器所执行的指令内的操作码部分来配置。
28、如权利要求25所述的计算机处理器,其中从操作符配置的多于一个的预定义的组所选择的操作符之间的连接能够通过由计算机处理器所执行的指令内的操作码部分来配置。
CN200580010665XA 2004-03-31 2005-03-22 用于双数据路径处理的装置和方法 Active CN1989485B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/813,433 2004-03-31
US10/813,433 US8484441B2 (en) 2004-03-31 2004-03-31 Apparatus and method for separate asymmetric control processing and data path processing in a configurable dual path processor that supports instructions having different bit widths
PCT/GB2005/001073 WO2005096142A2 (en) 2004-03-31 2005-03-22 Apparatus and method for dual data path processing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201010276291.9A Division CN101963897B (zh) 2004-03-31 2005-03-22 用于双数据路径处理的装置和方法

Publications (2)

Publication Number Publication Date
CN1989485A true CN1989485A (zh) 2007-06-27
CN1989485B CN1989485B (zh) 2011-08-03

Family

ID=34962960

Family Applications (2)

Application Number Title Priority Date Filing Date
CN200580010665XA Active CN1989485B (zh) 2004-03-31 2005-03-22 用于双数据路径处理的装置和方法
CN201010276291.9A Active CN101963897B (zh) 2004-03-31 2005-03-22 用于双数据路径处理的装置和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201010276291.9A Active CN101963897B (zh) 2004-03-31 2005-03-22 用于双数据路径处理的装置和方法

Country Status (8)

Country Link
US (1) US8484441B2 (zh)
EP (1) EP1735699B1 (zh)
JP (1) JP5382635B2 (zh)
KR (1) KR20070037568A (zh)
CN (2) CN1989485B (zh)
CA (1) CA2560093A1 (zh)
TW (1) TWI362617B (zh)
WO (1) WO2005096142A2 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9047094B2 (en) 2004-03-31 2015-06-02 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor
US7676646B2 (en) 2005-03-02 2010-03-09 Cisco Technology, Inc. Packet processor with wide register set architecture
US7529909B2 (en) * 2006-12-28 2009-05-05 Microsoft Corporation Security verified reconfiguration of execution datapath in extensible microcomputer
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
KR101893796B1 (ko) 2012-08-16 2018-10-04 삼성전자주식회사 동적 데이터 구성을 위한 방법 및 장치
CN111158756B (zh) * 2019-12-31 2021-06-29 百度在线网络技术(北京)有限公司 用于处理信息的方法和装置

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228498A (en) * 1977-10-12 1980-10-14 Dialog Systems, Inc. Multibus processor for increasing execution speed using a pipeline effect
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
EP0419105B1 (en) * 1989-09-21 1997-08-13 Texas Instruments Incorporated Integrated circuit formed on a surface of a semiconductor substrate and method for constructing such an integrated circuit
JPH05324430A (ja) 1992-05-26 1993-12-07 Toshiba Corp データ処理装置
US5423051A (en) 1992-09-24 1995-06-06 International Business Machines Corporation Execution unit with an integrated vector operation capability
US5600801A (en) 1993-07-15 1997-02-04 Dell Usa, L.P. Multiple function interface device for option card
US5600810A (en) 1994-12-09 1997-02-04 Mitsubishi Electric Information Technology Center America, Inc. Scaleable very long instruction word processor with parallelism matching
US6052773A (en) * 1995-02-10 2000-04-18 Massachusetts Institute Of Technology DPGA-coupled microprocessors
US5737631A (en) * 1995-04-05 1998-04-07 Xilinx Inc Reprogrammable instruction set accelerator
JP2931890B2 (ja) 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
JP3658072B2 (ja) 1996-02-07 2005-06-08 株式会社ルネサステクノロジ データ処理装置およびデータ処理方法
JPH09265397A (ja) 1996-03-29 1997-10-07 Hitachi Ltd Vliw命令用プロセッサ
GB2311882B (en) 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
US5956518A (en) 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
DE19634031A1 (de) 1996-08-23 1998-02-26 Siemens Ag Prozessor mit Pipelining-Aufbau
US6006321A (en) 1997-06-13 1999-12-21 Malleable Technologies, Inc. Programmable logic datapath that may be used in a field programmable device
US5922065A (en) * 1997-10-13 1999-07-13 Institute For The Development Of Emerging Architectures, L.L.C. Processor utilizing a template field for encoding instruction sequences in a wide-word format
JP3451921B2 (ja) 1998-03-30 2003-09-29 松下電器産業株式会社 プロセッサ
EP0953898A3 (en) 1998-04-28 2003-03-26 Matsushita Electric Industrial Co., Ltd. A processor for executing Instructions from memory according to a program counter, and a compiler, an assembler, a linker and a debugger for such a processor
US6226735B1 (en) 1998-05-08 2001-05-01 Broadcom Method and apparatus for configuring arbitrary sized data paths comprising multiple context processing elements
US6292845B1 (en) 1998-08-26 2001-09-18 Infineon Technologies North America Corp. Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively
DE19843640A1 (de) 1998-09-23 2000-03-30 Siemens Ag Verfahren zum Konfigurieren eines konfigurierbaren Hardware-Blocks
US6553414B1 (en) 1998-10-02 2003-04-22 Canon Kabushiki Kaisha System used in plural information processing devices for commonly using peripheral device in network
KR100731371B1 (ko) 1999-02-15 2007-06-21 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 구성가능 기능 유닛을 포함하는 프로세서를 사용해서 컴퓨터 프로그램을 실행하는 방법, 프로세서 및 컴퓨터 판독가능 기록 매체
EP1050810A1 (en) 1999-05-03 2000-11-08 STMicroelectronics SA A computer system comprising multiple functional units
GB2352066B (en) 1999-07-14 2003-11-05 Element 14 Ltd An instruction set for a computer
US6526430B1 (en) 1999-10-04 2003-02-25 Texas Instruments Incorporated Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
EP1102163A3 (en) 1999-11-15 2005-06-29 Texas Instruments Incorporated Microprocessor with improved instruction set architecture
US7039790B1 (en) 1999-11-15 2006-05-02 Texas Instruments Incorporated Very long instruction word microprocessor with execution packet spanning two or more fetch packets with pre-dispatch instruction selection from two latches according to instruction bit
US6255849B1 (en) 2000-02-04 2001-07-03 Xilinx, Inc. On-chip self-modification for PLDs
TW516320B (en) 2000-02-22 2003-01-01 Intervideo Inc Implementation of quantization for SIMD architecture
JP2001306321A (ja) 2000-04-19 2001-11-02 Matsushita Electric Ind Co Ltd プロセッサ
US7120781B1 (en) 2000-06-30 2006-10-10 Intel Corporation General purpose register file architecture for aligned simd
JP2004512716A (ja) * 2000-10-02 2004-04-22 アルテラ・コーポレイション 専用プロセッサ装置を含むプログラマブルロジック集積回路装置
US20020174266A1 (en) * 2001-05-18 2002-11-21 Krishna Palem Parameterized application programming interface for reconfigurable computing systems
JP2003005958A (ja) 2001-06-25 2003-01-10 Pacific Design Kk データ処理装置およびその制御方法
JP2003099397A (ja) 2001-09-21 2003-04-04 Pacific Design Kk データ処理システム
US6798239B2 (en) * 2001-09-28 2004-09-28 Xilinx, Inc. Programmable gate array having interconnecting logic to support embedded fixed logic circuitry
JP3785343B2 (ja) 2001-10-02 2006-06-14 日本電信電話株式会社 クライアントサーバシステム及びクライアントサーバシステムにおけるデータ通信方法
JP3779602B2 (ja) 2001-11-28 2006-05-31 松下電器産業株式会社 Simd演算方法およびsimd演算装置
KR100464406B1 (ko) 2002-02-08 2005-01-03 삼성전자주식회사 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
US7159099B2 (en) 2002-06-28 2007-01-02 Motorola, Inc. Streaming vector processor with reconfigurable interconnection switch
JP3982353B2 (ja) 2002-07-12 2007-09-26 日本電気株式会社 フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
US7024543B2 (en) 2002-09-13 2006-04-04 Arm Limited Synchronising pipelines in a data processing apparatus
TW569138B (en) 2002-09-19 2004-01-01 Faraday Tech Corp A method for improving instruction selection efficiency in a DSP/RISC compiler
US7464254B2 (en) 2003-01-09 2008-12-09 Cisco Technology, Inc. Programmable processor apparatus integrating dedicated search registers and dedicated state machine registers with associated execution hardware to support rapid application of rulesets to data
JP2004309570A (ja) 2003-04-02 2004-11-04 Seiko Epson Corp 光通信モジュール、光通信装置、及びその製造方法
US7496776B2 (en) 2003-08-21 2009-02-24 International Business Machines Corporation Power throttling method and apparatus
US7176713B2 (en) * 2004-01-05 2007-02-13 Viciciv Technology Integrated circuits with RAM and ROM fabrication options
US7949856B2 (en) 2004-03-31 2011-05-24 Icera Inc. Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit

Also Published As

Publication number Publication date
KR20070037568A (ko) 2007-04-05
EP1735699A2 (en) 2006-12-27
CA2560093A1 (en) 2005-10-13
WO2005096142A3 (en) 2006-06-08
TW200540713A (en) 2005-12-16
CN101963897A (zh) 2011-02-02
TWI362617B (en) 2012-04-21
CN101963897B (zh) 2014-03-12
JP5382635B2 (ja) 2014-01-08
WO2005096142A2 (en) 2005-10-13
JP2007531135A (ja) 2007-11-01
US8484441B2 (en) 2013-07-09
CN1989485B (zh) 2011-08-03
US20050223197A1 (en) 2005-10-06
EP1735699B1 (en) 2017-11-22

Similar Documents

Publication Publication Date Title
CN100583027C (zh) 用于不对称双重路径处理的设备和方法
CN100472433C (zh) 用于在双通道处理器中控制处理的装置和方法
US7418575B2 (en) Long instruction word processing with instruction extensions
CN1989485B (zh) 用于双数据路径处理的装置和方法
EP1570373A1 (en) Cellular engine for a data processing system
JP2008130078A (ja) プロセッサ構造および応用の最適化のためのプロファイラ
CN110321159A (zh) 用于实现链式区块操作的系统和方法
US9965275B2 (en) Element size increasing instruction
EP2951682A1 (en) Hardware and software solutions to divergent branches in a parallel pipeline
KR20070022239A (ko) 비대칭 듀얼 경로 프로세싱용 장치 및 방법

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
ASS Succession or assignment of patent right

Owner name: HUIDA TECHNOLOGY ENGLAND CO., LTD.

Free format text: FORMER OWNER: ICERA INC.

Effective date: 20130118

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20130118

Address after: London, England

Patentee after: ICERA Inc.

Address before: Bristol

Patentee before: Icera Inc.

Effective date of registration: 20130118

Address after: Bristol

Patentee after: Icera Inc.

Address before: Bristol

Patentee before: Icera Inc.