CN101218560B - 用于可配置的处理的设备和方法 - Google Patents

用于可配置的处理的设备和方法 Download PDF

Info

Publication number
CN101218560B
CN101218560B CN2006800245248A CN200680024524A CN101218560B CN 101218560 B CN101218560 B CN 101218560B CN 2006800245248 A CN2006800245248 A CN 2006800245248A CN 200680024524 A CN200680024524 A CN 200680024524A CN 101218560 B CN101218560 B CN 101218560B
Authority
CN
China
Prior art keywords
configurable
operator
instruction
performance element
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.)
Active
Application number
CN2006800245248A
Other languages
English (en)
Other versions
CN101218560A (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 CN101218560A publication Critical patent/CN101218560A/zh
Application granted granted Critical
Publication of CN101218560B publication Critical patent/CN101218560B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, 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, 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

Abstract

一种可配置的执行单元包括能够由指令在处理多比特操作数值的级别动态配置的算子。该单元包括一个或多个可动态配置的算子模块,所述模块或每个模块是可连接的以便接收在指令中指示的输入操作数;和可编程的查找表,该可编程的查找表是可连接的以便接收根据该指令的操作码部分确定的动态配置信息,并且能够响应于该指令中的所述动态配置信息而产生定义可配置的算子模块的功能或行为的特征的算子配置设置。

Description

用于可配置的处理的设备和方法
技术领域
本发明涉及具有可配置的执行单元的计算机处理器、用于操作这样的计算机处理器和执行单元的方法和使用计算机指令集的计算机程序产品。
背景技术
由于在制造时使指令集被固定,一些计算机处理器在有效处理某些算法内的不同类型的数据处理计算的能力和执行不同的算法(例如从卷积、快速傅立叶变换、Trellis/Viterbi计算、相关、有限脉冲响应滤波等中选择的算法)的能力上是有限的。特别地,已知的计算机处理器不支持在多比特操作数值上运行的软件定制(software-customised)的指令的执行,例如对四比特或更多比特的操作数或者对计算机字(典型的是16、32或64比特)级别的操作数起作用的指令。已知的计算机处理器不能响应于构成处理器指令集的一部分的单独软件定制处理器指令而有效地执行包含较简单定制操作的序列的复杂软件定制操作。
本发明的实施例设法提供改进的计算机处理器和操作计算机处理器的方法等。
发明内容
依照本发明的一个方面,提供了可配置的执行单元,该可配置的执行单元包括能够由指令在处理多比特操作数值的级别动态配置的算子(operator)。该可配置的执行单元包括一个或多个可动态配置的算子模块和可编程的查找表,所述模块或每个模块是可连接的以便接收在指令中指示的输入操作数,所述可编程的查找表是可连接的以便接收根据指令的操作码部分确定的动态配置信息并且能够响应于指令中的所述动态配置信息而产生定义所述可配置的算子模块的功能和/或行为的特征的算子配置设置。
在优选实施例中,可编程的查找表包括可编程的逻辑阵列。更优选地,可编程的查找表包括级联的可编程的逻辑阵列。
在公开的实施例中,所述可配置的执行单元包括可配置的交换结构(switching fabric),该交换结构具有至少部分地由伪静态控制信息定义的连接性。另外,该可配置的交换结构可以包含在所述可配置的算子上游连接的一个或多个可配置的输入互连装置,和在该可配置的算子下游连接的可配置的输出互连装置。优选的实施例具有这二者。
在提供可配置的输入互连装置的情况下,一个或多个可配置的算子模块输出可以被连接到所述可配置的输入互连装置。
优选地,至少一个可配置的算子模块被硬布线以支持预定的操作类并且可以由算子配置设置来动态配置以便在所述一般操作类内调整算子函数和/或行为。依赖于预期应用,可以提供不同的算子函数。优选的实施例趋向于包含具有可配置的移位(shift)和/或置换(permute)功能的模块。更优选地,某些实施例包括能够保存中间结果的存储算子。
通常,一个或多个可配置的部件包含独立于携带所述动态配置信息的指令而提供的伪静态控制信息。这样的伪静态控制信息可以由例如配置设置指令建立,或者通过向所涉及部件的直接数据传输来建立。
在大部分实施例中,一个或多个可动态配置的算子可以借助于在数据处理指令中提供的配置信息来配置。但是,这里公开的原理也可以应用到其它类型的指令。
优选的可配置的执行单元包括可以借助于在数据处理指令中提供的配置信息来配置的多个可动态配置的算子,其中,在使用中,依照所述配置信息的算子配置对在所述数据处理操作中指示的操作数起作用。
在其它实施例中,或者另外,一个或多个可动态配置的算子可以借助于在数据处理指令中提供的配置信息来配置,其中,在使用中,依照所述配置信息的算子配置对在随后的指令中指示的操作数起作用。
优选的执行单元被布置成能够响应于单个指令而在将结果输出给在该可配置的执行路径或单元之外的存储装置(store)(例如寄存器堆(register file))之前,在一个操作数上执行两个或更多连续的、可选择性地配置的操作。在优选的可配置的执行单元中,所述可配置的算子模块中的一个或多个支持SIMD操作。
通常,提供以下一个或多个算子类中的算子:乘法器、算术逻辑、存储、移位和/或置换。但是,可以使用任何数目或类型的算子。
在依照本发明的实施例中,术语“可编程的查找表”应该被广义地解释为包括能够响应于指令中的信息而提供例如从以下一个或多个中选择的算子配置设置的任何设备:进位输入(carry-in)信号;多路复用器选择;可协商的输入(negotiable input);溢出设置;和其它合适的算子输入。
另外,所述可编程的查找表可以有利地从(一个或多个)可动态配置的算子模块接收一个或多个输入。这样,来自所述算子的输出能够至少部分地定义在随后的周期中使用的算子的配置输入。
典型地,尽管不是排他地,来自可动态配置的算子模块的对可编程的查找表的输入是从以下一个或多个中选择的:溢出指示;FIFO满信号;算术比较的布尔结果;和其它合适的算子输出。
在某些实施例中,可以认为可编程的查找表包括伪静态控制信息,该伪静态控制信息是可预先设置的并且可以由指令中所携带的配置信息进行选择。
依照本发明的另一方面,提供了用于操作可配置的执行单元的方法,该可配置的执行单元包括能够由指令在处理多比特操作数值的级别动态配置的算子,该方法包括:
对在操作码中包括配置信息的指令进行解码;
根据可编程的查找表,将该配置信息翻译成用于至少一个可配置的算子的算子配置设置;
将所述算子配置设置提供给所述至少一个可配置的算子,使得所述算子的功能和/或行为的特征从而在逐指令的基础上可选择性地调整。
优选的方法允许响应于单个指令而串行地执行两个或更多操作的序列。可替换地,或者更可能另外的,两个或更多操作可以响应于该指令而被并行执行。
优选的实施例有助于响应于单个指令而执行串行和并行操作的组合。这样,软件定制的指令能够使操作数流过链接算子的网络,该链接算子网络响应于单个指令而将整个相对复杂的计算作为相互关联的操作的集合来执行。
另外,在响应于所述指令而执行多个串行和/或并行操作的情况下,在操作之间或者在将中间结果从该可配置的执行单元输出到结果存储装置之前,在存储算子中保存该中间结果。
另外,在响应于所述指令而执行多个串行和/或并行操作的情况下,在操作之间或者在将中间结果从该可配置的执行单元输出到结果存储装置之前,可以对中间结果进行移位或置换。
依照本发明的另一方面,提供了包括用于执行前述任何一种方法的程序代码装置的计算机程序产品。
依照本发明的另一方面,提供了一种指令,该指令包括:操作码部分,定义一种类型的数据处理操作,其包含用于设置可配置的执行单元的一个或多个算子的配置的动态配置信息;配置信息字段,包含算子配置信息;和指示在该数据处理操作中使用的操作数的至少一个字段。
依照本发明的又一方面,提供了一种计算机处理器,所述计算机处理器包括可配置的执行单元,可选地其可以与固定执行单元结合。优选地,所述执行单元中的一个或多个能够进行SIMD处理。
在以下说明中将部分陈述本发明的其它优点和新颖特征,并且在研究下文的公开内容之后,所述优点和新颖特征将对于本领域技术人员是很明显的,或者在本发明的实践中可以获悉所述优点和新颖特征。
附图说明
为了更好的理解本发明,以及为了示出如何实现本发明,将参考附图,这些附图只是作为例子,其中:
图1是体现了本发明的计算机处理器的框图;
图2是示出图1的计算机处理器的示例性可配置的执行单元的示意性框图;
图3示意性地示出适合用于图1的计算机系统的示例性指令格式。
具体实施方式
图1的处理器100可以是计算机系统的一部分,在该计算机系统中处理器通过通信总线耦合到主存储器和外围设备。如技术人员所理解的,这样的处理器系统可以支持属于广泛多种设备和应用的外围设备的范围。
处理器100具有指令存储器102、数据存储器104、指令取出和解码电路110、寄存器堆112、加载/存储单元118、预定数目的固定执行单元120和预定数目的可配置的执行单元126。
指令存储器102借助于指令总线108和地址总线109耦合到指令取出和解码电路110。指令取出和解码电路110还通过地址总线111连接到寄存器堆112,并且通过控制总线系统113连接到加载/存储单元118、固定执行单元120和可配置的执行单元126。控制总线113用于例如把根据指令解码的操作配置信息运送到加载/存储单元118、固定执行单元120和可配置的执行单元126的相关输入。操作数总线系统115根据解码的指令为加载/存储单元118、固定执行单元120和可配置的执行单元126提供来自寄存器堆的操作数。
加载/存储单元118具有来自和去往数据存储器104的连接121、122,并且能够将结果输出到结果总线128,该结果总线128还用于接收固定执行单元120和可配置的执行单元126的输出。结果总线128被反馈回寄存器堆112的输入。
在这个实施例中,处理器100支持固定和可配置的执行单元中的单指令多数据(SIMD)处理。在其它实施例中,固定和可配置的执行单元中可能只有一个支持SIMD处理或者两者都不支持SIMD处理。
指令取出和解码电路110中的控制电路通常负责从指令存储器102请求、接收和解码指令序列,并且依照这些指令控制该处理器的各种部件。典型的指令包括加载/存储操作、控制功能操作、数据处理操作和/或由各种功能单元执行的特定操作。
加载/存储指令用于访问数据存储器104中的数据以及用于在数据存储器104和寄存器堆112之间移动数据,其中紧接着对该数据执行的操作之前和之后驻留着数据。控制功能操作,诸如分支,可以完全在指令取出和解码单元110内运行,例如,为了影响所取出的指令的序列,或者在处理器的设置的计算中可以涉及固定和可配置的执行单元中的一个或多个。数据处理操作在算法的执行中使用,并且同样可以涉及固定和/或可配置的执行单元,下文将对此进行更详细的解释。
图2是示例性执行单元126的内部部件的示意图。参考图2,可配置的执行单元126包括可编程的查找表210、可配置的算子级230、输入交叉互连240和输出交叉互连250。
可编程的查找表210和互连240、250就依赖伪静态控制信息而言是可配置的,该伪静态控制信息可以由专用指令预先设置,但是伪静态控制信息自身是不可以在逐周期(cycle-by-cycle)基础上由数据处理指令动态配置的。这个可预先设置的控制信息在这里被称为伪静态控制信息(PSCI)并且在图2中由附图标记249指示。该伪静态控制信息249以技术人员清楚的方式规定可编程的查找表210和交叉互连240、250的功能性和行为的特征。
可配置的算子级230包括算子模块202-208的集合,每个算子模块都被设计成执行不同的操作类。算子模块由操作数输入总线242从输入交叉互连供应。在这个示例性实施例中,提供了乘法算子202、ALU算子204、存储算子206和移位/置换算子208。技术人员将会理解,算子的数目和功能将基于预期的应用和/或该处理器的预期目的。有可能的是,算子模块202-208中的全部或一部分可以通过这里所描述的装置被动态配置。
算子模块202-208被硬布线到这样的程度,以使它们能高效执行它们被设计执行的操作,但是同时具有各种控制输入,所述控制输入允许在影响对多比特值的操作的性能的行为级别上的可配置性。这将支持算子模块在各自被设计执行的操作类中的行为和/或类型的变化。例如,加法单元可以支持减法和加法(一般算术类内的不同类型的操作或函数),它可以支持多种SIMD向量数据类型以及标量类型(通用行为),并且它可以支持多种舍入模式和/或溢出行为(可选择的行为)。
在优选实施例中,算子级230上各种元件的互连和算子202-208的控制输入可配置到这样的程度,使得允许高效执行所需的各种算法,特别是向量算法,其例子包括卷积、快速傅立叶变换、Trellis/Viterbi计算、相关、有限脉冲响应滤波等。在实践中这个程度很容易由一般技术人员确立,依照这样的算法以及处理器的控制功能,技术人员还知道指令集为支持相关计算所需的数据处理功能性的范围。
算子级230的算子可以在逐指令的基础上被(“动态地”)动态配置,以使包含配置信息的指令(例如,数据处理指令)能够通过提供配置信息作为当在它的操作数上运行时要应用的控制设置而选择性地改变算子功能(操作类型)和/或行为。可替换地,指令集可以被设计成使得指令中的配置信息对在根据随后的指令(例如随后的数据处理操作)处理操作数时要应用的算子功能和/或行为进行配置。
从可编程的查找表210导出的算子的控制输入279被提供给算子级,例如为了提供控制输入以控制算子204-208的功能和/或行为。这些控制输入的例子包括进位输入信号、多路复用器选择、可协商的输入和溢出行为控制设置。来自算子级230中的算子模块202-208的控制输出281能够被输出到可编程的查找表210,并且因此接下来可以参与定义控制输入设置279。控制输出281的例子包括溢出指示、FIFO满信号和算术比较的布尔结果。
实际上,比如数据处理指令中的操作配置信息277被解码并被提供给可编程的查找表210。该配置信息277和控制信息281一起被可编程的查找表210翻译成所述算子级的对应的控制输入279并且被提供给算子级230。由查找表210执行的翻译功能由伪静态控制信息249确定,所述伪静态控制信息249又可以由较早的控制指令设置。
在优选的实施例中,可编程的查找表210可以被认为自身依赖于伪静态控制信息,该伪静态控制信息是基于数据处理指令中的算子配置信息可选择的。可编程的查找表210因而能够响应于动态配置信息277(其从指令导出)产生对算子的输入或来自算子281或PSCI249的控制输出,或对可编程的查找表210的这些输入的任意组合。因此伪静态控制信息不需要被直接输入到算子级230,尽管在某些环境下希望如此。
参考图2A,可编程的查找表210能够被实现为技术人员公知的一种可编程的逻辑阵列(PLA),或者实现为如图2B所示的这种PLA的级联。在图2B的例子中,PLA1将来自所述指令的配置比特277翻译成第一中间代码,PLA2将算子的控制输出281翻译成第二中间代码,并且PLA3组合这两个中间代码以产生用于算子的控制输入集279。这样的级联布置可能是期望的,因为与图2A的单个PLA相比它可能需要较少的硬件。
在优选实施例中,交叉互连240、250的连通性和级230中的算子之间的互连不是基于数据处理指令中的控制信息可动态配置的。作为代替,这些部件240、250在操作之前是可通过设置所述PSCI来配置的,也可能通过上载或执行控制设置操作来配置。
输入互连240为所述多个算子模块202-208中的每一个提供操作数输入。输入互连240能够根据解码的数据处理指令接收操作数224,并且能够经由反馈总线225从算子202-204的输出接收结果值。
输出互连250接收来自算子模块202-208的输出并且提供可配置的执行单元126的最后输出结果290。借助于反馈总线225,交叉开关240和可选地存储算子206、简单乘法运算的串行和并行组合,在于执行单元外提供结果290之前,能够响应于单个数据处理指令而在输入操作数224上执行复杂的操作。简言之,这些有利类型的“深度”执行操作可以认为是在将结果290被发送出去以写入寄存器堆112中的结果寄存器之前在操作数或操作数集上连续地执行多个(一般是三个或更多)数学运算的操作。在这些类型的深度操作中,存储算子206能够保存中间结果,以使得在将结果290输出之前它们能够参与后来的操作周期。这种类型的串行和/或并行操作是新颖的。另外,用于构建是基本算子的串行-并行组合的网络的可能性(facility)是有利的。并行类型的操作的一个例子是范围检查:AND(A>min,A<max),其中在共同的操作数A上并行进行了两个比较计算。
技术人员将会理解,图2的整个结构能够被适当地管线化,以便在不损害处理器速度的情况下实现复杂的多级操作。
因而,已经描述了在使用中指令取出和解码电路110如何解码数据处理指令和控制处理器100的各个部件,以使得来自该指令的配置信息277被提供给可编程的查找表210并且所述操作数或每个操作数224被从寄存器堆提供给输入互连240。这样,来自所述指令的配置信息277通过可编程的查找表210选择性地、动态地修改一个或多个所述算子的的功能和/或行为的特征。
可配置的执行单元126因而依赖于若干类型的控制。首先,存在着在有利的硬布线级别例示的静态控制,用以提供模块202-208的各种算子类。其次,存在着伪静态控制信息(PSCI),其驻留在例如互连部件240、250和可编程的查找表210的预定配置中。如同上文所解释的,伪静态控制信息被分配给某些可配置的部件(例如,查找表210和互连240、250),以便在执行软件定制的指令之前确定执行单元200的功能和/或行为的特征,所述软件定制的指令本身能够在逐指令的基础上动态地配置算子(调整算子的配置)。另外,存在着能够由指令在逐周期的基础上提供的动态控制信息。指令集可以在制造之后定制,倘若它遵循某些保证指令集保持与处理器的操作兼容的一般协议。能够动态地配置算子和可以预先配置的其它部件的制造后软件定制指令的组合允许宽范围的处理和数学函数,并且产生复杂算法的优雅解决方案。在此上下文中,优雅可能意味着减少循环次数和功率要求。
PSCI可以通过以下方式分配到部件,例如(i)从外部DMA端口直接上载或(ii)通过执行特别设计的PSCI设置指令,依照该指令的用于计算PSCI设置的数据将进入单元作为操作数数据224并且结果设置PSCI基于目的地地址。
在处理器指令的操作码部分中包含的动态控制信息277(包括算子配置信息)用于访问可编程的查找表210。在优选的实施例中,该动态控制信息由所述指令中的多比特字段表示,并且从可编程的查找表210发出的设置包括用于整个执行单元230的控制输入(设置)的扩展集。
在优选实施例中,所述算子级230的各模块202-208被设计成用于处理数据处理操作,所述数据处理操作的至少一个输入是多比特值,诸如向量或向量的一个元素(标量)。因此,优选的算子模块202-208在对多比特值的操作的级别上是可配置的。例如,数据处理操作的64-比特的向量输入可以包括4个16比特的标量操作数。这里,向量可以被认为是标量操作数的组合。因而,软件可定制的向量算术可以在多个标量操作数上实现,并且通常要求一定数量的标量元素的置换。不是所有向量操作的操作数都必须是向量;例如,向量操作可以具有标量和向量输入,并且可以输出为标量或向量的结果。
图3示出了适合用于本发明的实施例的各种指令格式。在300,存在着这样的PSCI设置指令,它被特别设计用于为例如部件210、240和/或250中的一个或多个执行伪静态控制设置操作。该PSCI设置指令300包括第一操作码部分302和第二操作码部分303,第一操作码部分302指示它是PSCI设置指令类型,第二操作码部分303指示与意图被配置的部件210,240,250(或每个)相关联的目的地。该指令的剩余部分304可以用于携带或指向旨在用于该目的地的PSCI。
关于指令格式400,公开了包括动态配置设置信息的数据处理指令类,根据它来参考可编程的查找表210。指令400包括第一操作码部分410,该第一操作码部分410定义要执行的数据处理操作并且优选地包括这样的指示:该指令是包含用于对可配置的执行单元230的一个或多个算子进行配置的动态配置设置信息的数据处理操作类型。指令400还包括指向结果将被发送到的目的地地址的第二操作码部分415,包含算子配置信息420的第三操作码部分420,和在该数据处理操作中使用的一个或多个操作数430。可替换地,字段430可以包含指向寄存器中的一个或多个操作数的指针。技术人员将会理解,在其它实施例中可以组合或省略所描述的一个或多个字段。
如前所述,算子配置信息420用于访问查找表210并且被翻译以有助于算子控制输入设置279。
优选的实施例能够特别高效地处理某些算法内的不同类型的数据处理计算,所述算法例如包括卷积、快速傅立叶变换、Trellis/Viterbi计算、相关、有限脉冲响应滤波等。此外,优选的处理器支持在多比特操作数值上运行的软件定制指令的执行,例如,对4或更多比特的操作数或对计算机字(通常是16、32或64比特)的级别的操作数起作用的指令。实施例因而能够响应于形成处理器指令集一部分的单独软件定制的处理器指令而将复杂的软件定制操作作为定制操作的集合来高效执行(串行和/或并行)。
本领域的读者将会理解,尽管前文已经描述了所认为的最佳模式和执行本发明的其它适当模式,但是不应该将本发明限制于在优选实施例的说明中公开的特定的设备配置或方法步骤。本领域的技术人员还将认识到,本发明具有广泛的应用范围,并且所述实施例允许在不偏离发明概念的情况下进行宽范围的修改。
例如,一个或多个算子模块的任何特征可以被动态配置。可编程的查找表可以是适用于将操作码信息翻译成算子控制设置的任何设备。在其它实施例中,有可能的是,部件240、250中的一个或多个可以借助于指令中的控制信息被动态配置,或者某些算子可以通过直接上载PSCI而被预先配置。

Claims (24)

1.一种可配置的执行单元,包括算子模块,其能够由数据处理指令在处理多比特操作数值的级别上被动态配置;
所述或每个算子模块是可连接的以便接收在所述数据处理指令中指示的输入操作数,其中至少一个可配置的算子模块通过算子配置设置被动态地配置以便在所述一般操作类内调整算子函数和/或行为,其特征在于至少一个可配置的算子模块被硬布线以支持预定的操作类;
其特征在于可编程的查找表,其被实现为可连接的可编程的逻辑阵列,用于接收从数据处理指令的操作码部分确定的动态配置信息(277),可编程的查找表包括独立于携带动态配置信息的数据处理指令而提供的伪静态控制信息,并且可编程的逻辑阵列进一步可连接以接收(ii)来自算子模块的一个或多个控制输出并且可操作地利用控制输出将动态配置信息翻译为定义所述可配置的算子模块的功能和/或行为的方面的算子配置设置,用于在逐指令的基础上动态地配置算子模块;以及
可配置的交换结构,其被连接以向算子模块提供所述输入操作数并且具有由独立于携带动态配置信息的数据处理指令而提供的伪静态控制信息至少部分定义的连接性。
2.如权利要求1所述的可配置的执行单元,其中所述可编程的查找表包括可编程的逻辑阵列。
3.如权利要求2所述的可配置的执行单元,其中所述可编程的查找表包括级联的可编程的逻辑阵列。
4.如权利要求1所述的可配置的执行单元,其中所述可配置的交换结构包括以下中的一个或多个:在可配置的算子上游连接的可配置的输入互连装置和在可配置的算子下游连接的可配置的输出互连装置。
5.如权利要求4所述的可配置的执行单元,其中所述可配置的交换结构包括:在可配置的算子上游连接的可配置的输入互连装置和在所述可配置的算子下游连接的可配置的输出互连装置。
6.如权利要求5所述的可配置的执行单元,其中一个或多个可配置的算子模块的一个或多个输出被连接到所述可配置的输入互连装置。
7.如权利要求1所述的可配置的执行单元,其中至少一个可配置的算子模块被硬布线以支持预定的操作类,并且通过算子配置设置是动态可配置的以便在所述一般操作类内调整算子函数和/或行为。
8.如权利要求1所述的可配置的执行单元,其中所述可配置的算子包括具有可配置的移位和/或置换功能的模块。
9.如权利要求1所述的可配置的执行单元,其中一个或多个部件包括独立于携带动态配置信息的指令而提供的所述伪静态控制信息。
10.如权利要求9所述的可配置的执行单元,其中一个或多个部件包括由配置设置指令建立的伪静态控制信息。
11.如权利要求1所述的可配置的执行单元,其中一个或多个动态可配置的算子借助于在数据处理指令中提供的配置信息是可配置的。
12.如权利要求1所述的可配置的执行单元,包括借助于在数据处理指令中提供的配置信息可配置的多个动态可配置的算子,其中,在使用中,依照所述配置信息的算子配置对在所述数据处理操作中指示的操作数起作用。
13.如权利要求1所述的可配置的执行单元,包括一个或多个借助于在数据处理指令中提供的配置信息可配置的动态可配置的算子,其中,在使用中,依照所述配置信息的算子配置对在随后的指令中指示的操作数起作用。
14.如权利要求1所述的执行单元,能够响应于单个指令而在输出结果之前在操作数上执行两个或更多连续的、选择性地可配置的操作。
15.如权利要求1所述的执行单元,其中所述可配置的算子模块中的一个或多个支持SIMD操作。
16.如权利要求1所述的执行单元,包括以下一个或多个算子类中的算子:乘法器、算术逻辑、存储、移位和/或置换。
17.如权利要求1所述的执行单元,其中所述可编程的查找表产生从以下一个或多个中选择的算子配置设置:进位输入信号;多路复用器选择;可协商的输入;溢出设置;和其它合适的算子输入。
18.如权利要求1所述的执行单元,其中所述来自动态可配置的算子模块的输入包括从以下中选择的一个或多个:溢出指示;FIFO满信号;算术比较的布尔结果;和其它合适的算子输出。
19.一种用于操作可配置的执行单元的方法,包括算子模块,其能够由数据处理指令在处理多比特操作数值的级别上被动态配置,该方法包括:
解码数据处理指令,该数据处理指令指示输入操作数并且包括操作码中的配置信息;
向可编程的查找表提供来自算子模块的一个或多个控制输出以及所述配置信息,可编程查找表将配置信息连同控制输出一起翻译为用于至少一个可配置算子的算子配置设置;其中可编程的查找表被实现为可编程逻辑阵列并且包括独立于携带动态配置信息的数据处理指令而提供的伪静态控制信息;
向所述至少一个可配置的算子模块提供所述算子配置设置以便由此在逐指令的基础上选择性地调整所述算子的功能和/或行为的方面;以及
通过独立于携带动态配置信息的数据处理指令而提供的伪静态控制信息定义将所述输入操作数提供算子模块所连接的可配置的交换结构的连接性。
20.如权利要求19所述的方法,其中响应于所述指令而串行执行两个或更多操作的序列。
21.如权利要求19所述的方法,其中响应于所述指令而并行执行两个或更多操作。
22.如权利要求19所述的方法,其中响应于所述指令而执行串行和并行操作的组合。
23.如权利要求19所述的方法,其中响应于所述指令而执行多个串行和/或并行操作,并且在操作之间或者将至少一个中间结果从该可配置的执行单元输出到结果存储装置之前在存储算子中保存该至少一个中间结果。
24.如权利要求19所述的方法,其中响应于所述指令而执行多个串行和/或并行操作,并且其中在操作之间或者将中间结果从该可配置的执行单元输出到结果存储装置之前对中间结果进行移位和/或置换。
CN2006800245248A 2005-05-05 2006-05-04 用于可配置的处理的设备和方法 Active CN101218560B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/122,385 2005-05-05
US11/122,385 US8966223B2 (en) 2005-05-05 2005-05-05 Apparatus and method for configurable processing
PCT/GB2006/001629 WO2006117562A1 (en) 2005-05-05 2006-05-04 Apparatus and method for configurable processing

Publications (2)

Publication Number Publication Date
CN101218560A CN101218560A (zh) 2008-07-09
CN101218560B true CN101218560B (zh) 2012-06-06

Family

ID=36659717

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800245248A Active CN101218560B (zh) 2005-05-05 2006-05-04 用于可配置的处理的设备和方法

Country Status (10)

Country Link
US (2) US8966223B2 (zh)
EP (1) EP1877896B1 (zh)
JP (1) JP4806009B2 (zh)
KR (1) KR20080015836A (zh)
CN (1) CN101218560B (zh)
AT (1) ATE504037T1 (zh)
CA (1) CA2606558A1 (zh)
DE (1) DE602006021000D1 (zh)
TW (1) TWI439928B (zh)
WO (1) WO2006117562A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461464A (zh) * 2013-09-20 2015-03-25 威盛电子股份有限公司 用于微处理器的动态重设方法

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007193435A (ja) * 2006-01-17 2007-08-02 Matsushita Electric Ind Co Ltd 情報処理端末、プログラム
US8099583B2 (en) * 2006-08-23 2012-01-17 Axis Semiconductor, Inc. Method of and apparatus and architecture for real time signal processing by switch-controlled programmable processor configuring and flexible pipeline and parallel processing
US8276120B2 (en) * 2007-10-30 2012-09-25 Coreworks, S.A. Reconfigurable coprocessor architecture template for nested loops and programming tool
GB0721429D0 (en) 2007-10-31 2007-12-12 Icera Inc Processing signals in a wireless communications environment
GB0721427D0 (en) 2007-10-31 2007-12-12 Icera Inc Processing signals in a wireless newtwork
GB2454914B (en) 2007-11-22 2012-07-25 Icera Inc Clock control
GB2459733B (en) 2008-04-30 2012-12-19 Icera Inc Clock configuration
GB2459939B (en) 2008-05-16 2012-02-15 Icera Inc Fetching descriptors in a multiple context DMA engine
US8078833B2 (en) * 2008-05-29 2011-12-13 Axis Semiconductor, Inc. Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions
US8181003B2 (en) * 2008-05-29 2012-05-15 Axis Semiconductor, Inc. Instruction set design, control and communication in programmable microprocessor cores and the like
CN101630305B (zh) * 2008-07-16 2011-05-11 中国人民解放军信息工程大学 高效能计算机中可重构部件的柔性管理方法
GB0818918D0 (en) 2008-10-15 2008-11-19 Icera Inc Boot algorithm
US9170816B2 (en) 2009-01-15 2015-10-27 Altair Semiconductor Ltd. Enhancing processing efficiency in large instruction width processors
GB2466982B (en) 2009-01-16 2013-07-17 Nvidia Technology Uk Ltd DMA Engine
GB2467760B (en) 2009-02-12 2013-05-22 Icera Inc Method for generating transmitter power amplifier ramp profiles from a single reference ramp pattern
GB0910850D0 (en) 2009-06-23 2009-08-05 Icera Inc Processing signals in a wireless network
JP5785357B2 (ja) * 2009-06-25 2015-09-30 スパンション エルエルシー リコンフィグ演算装置を備えるコンピュータシステムおよびリコンフィグ演算装置
CN102043755B (zh) * 2009-10-22 2012-12-05 财团法人工业技术研究院 可重组态处理装置及其系统
GB2483225B (en) 2010-08-27 2018-07-11 Nvidia Tech Uk Limited Improved processor architecture
KR20120134549A (ko) 2011-06-02 2012-12-12 삼성전자주식회사 Simd 프로세서를 이용한 병렬 연산 처리 장치 및 방법
US10255228B2 (en) * 2011-12-06 2019-04-09 Nvidia Corporation System and method for performing shaped memory access operations
US9558006B2 (en) * 2012-12-20 2017-01-31 Intel Corporation Continuous automatic tuning of code regions
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
KR102259406B1 (ko) * 2014-07-30 2021-06-03 모비디어스 리미티드 명령어 사전인출을 위한 방법 및 장치
EP3125109B1 (en) * 2015-07-31 2019-02-20 ARM Limited Vector length querying instruction
US10860322B2 (en) * 2015-10-30 2020-12-08 Arm Limited Modifying behavior of a data processing unit using rewritable behavior mappings of instructions
US9977677B2 (en) * 2016-04-07 2018-05-22 International Business Machines Corporation Execution slice with supplemental instruction port for an instruction using a source operand from another instruction port
US9734126B1 (en) 2016-10-10 2017-08-15 International Business Machines Corporation Post-silicon configurable instruction behavior based on input operands
US10963265B2 (en) * 2017-04-21 2021-03-30 Micron Technology, Inc. Apparatus and method to switch configurable logic units
US10409615B2 (en) * 2017-06-19 2019-09-10 The Regents Of The University Of Michigan Configurable arithmetic unit
JP7032647B2 (ja) * 2018-04-17 2022-03-09 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10565036B1 (en) 2019-02-14 2020-02-18 Axis Semiconductor, Inc. Method of synchronizing host and coprocessor operations via FIFO communication
US11500644B2 (en) * 2020-05-15 2022-11-15 Alibaba Group Holding Limited Custom instruction implemented finite state machine engines for extensible processors
CN112783614A (zh) * 2021-01-20 2021-05-11 北京百度网讯科技有限公司 对象处理方法、装置、设备、存储介质以及程序产品
EP4080354A1 (en) * 2021-04-23 2022-10-26 Nxp B.V. Processor and instruction set

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6023742A (en) * 1996-07-18 2000-02-08 University Of Washington Reconfigurable computing architecture for providing pipelined data paths
US6052773A (en) * 1995-02-10 2000-04-18 Massachusetts Institute Of Technology DPGA-coupled microprocessors
CN1200339C (zh) * 2000-06-21 2005-05-04 智原科技股份有限公司 数据处理装置及其方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5361373A (en) 1992-12-11 1994-11-01 Gilson Kent L Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
US5600845A (en) * 1994-07-27 1997-02-04 Metalithic Systems Incorporated Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
US5794062A (en) * 1995-04-17 1998-08-11 Ricoh Company Ltd. System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization
US5784636A (en) * 1996-05-28 1998-07-21 National Semiconductor Corporation Reconfigurable computer architecture for use in signal processing applications
US6023564A (en) * 1996-07-19 2000-02-08 Xilinx, Inc. Data processing system using a flash reconfigurable logic device as a dynamic execution unit for a sequence of instructions
JPH118547A (ja) 1997-06-17 1999-01-12 Fuji Xerox Co Ltd 再構成可能演算装置
US6339819B1 (en) * 1997-12-17 2002-01-15 Src Computers, Inc. Multiprocessor with each processor element accessing operands in loaded input buffer and forwarding results to FIFO output buffer
US6226735B1 (en) * 1998-05-08 2001-05-01 Broadcom Method and apparatus for configuring arbitrary sized data paths comprising multiple context processing elements
US6092174A (en) * 1998-06-01 2000-07-18 Context, Inc. Dynamically reconfigurable distributed integrated circuit processor and method
US6961084B1 (en) * 1999-10-07 2005-11-01 Ess Technology, Inc. Programmable image transform processor
US6255849B1 (en) * 2000-02-04 2001-07-03 Xilinx, Inc. On-chip self-modification for PLDs
DE60144022D1 (de) * 2000-11-06 2011-03-24 Broadcom Corp Umkonfigurierbares verarbeitungssystem und -verfahren
US20070067380A2 (en) * 2001-12-06 2007-03-22 The University Of Georgia Research Foundation Floating Point Intensive Reconfigurable Computing System for Iterative Applications
WO2003081454A2 (de) * 2002-03-21 2003-10-02 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US7200735B2 (en) 2002-04-10 2007-04-03 Tensilica, Inc. High-performance hybrid processor with configurable execution units
WO2004010320A2 (en) * 2002-07-23 2004-01-29 Gatechance Technologies, Inc. Pipelined reconfigurable dynamic instruciton set processor
WO2004010286A2 (en) 2002-07-23 2004-01-29 Gatechange Technologies, Inc. Self-configuring processing element
AU2003286131A1 (en) * 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
US20040122887A1 (en) 2002-12-20 2004-06-24 Macy William W. Efficient multiplication of small matrices using SIMD registers
US7149996B1 (en) * 2003-07-11 2006-12-12 Xilinx, Inc. Reconfigurable multi-stage crossbar
JP2006065788A (ja) * 2004-08-30 2006-03-09 Sanyo Electric Co Ltd リコンフィギュラブル回路を備えた処理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6052773A (en) * 1995-02-10 2000-04-18 Massachusetts Institute Of Technology DPGA-coupled microprocessors
US6023742A (en) * 1996-07-18 2000-02-08 University Of Washington Reconfigurable computing architecture for providing pipelined data paths
CN1200339C (zh) * 2000-06-21 2005-05-04 智原科技股份有限公司 数据处理装置及其方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461464A (zh) * 2013-09-20 2015-03-25 威盛电子股份有限公司 用于微处理器的动态重设方法
CN104461464B (zh) * 2013-09-20 2018-04-13 上海兆芯集成电路有限公司 用于微处理器的动态重设方法

Also Published As

Publication number Publication date
JP4806009B2 (ja) 2011-11-02
US8671268B2 (en) 2014-03-11
CN101218560A (zh) 2008-07-09
EP1877896A1 (en) 2008-01-16
EP1877896B1 (en) 2011-03-30
US20110161640A1 (en) 2011-06-30
US8966223B2 (en) 2015-02-24
US20060253689A1 (en) 2006-11-09
KR20080015836A (ko) 2008-02-20
JP2008541216A (ja) 2008-11-20
ATE504037T1 (de) 2011-04-15
WO2006117562A1 (en) 2006-11-09
DE602006021000D1 (de) 2011-05-12
CA2606558A1 (en) 2006-11-09
TW200707280A (en) 2007-02-16
TWI439928B (zh) 2014-06-01

Similar Documents

Publication Publication Date Title
CN101218560B (zh) 用于可配置的处理的设备和方法
EP3096222B1 (en) Pipelined cascaded digital signal processing structures and methods
US7287152B2 (en) Conditional execution per lane
WO2006136764A1 (en) A data processing apparatus and method for accelerating execution of subgraphs
EP1267258A2 (en) Setting up predicates in a processor with multiple data paths
CN113064852B (zh) 一种可重构处理器及配置方法
EP1267255A2 (en) Conditional branch execution in a processor with multiple data paths
US9933996B2 (en) Selectively combinable shifters
US20040133765A1 (en) Parallel execution processor and instruction assigning method
US20070260805A1 (en) Computer with a Reconfigurable Architecture for Integrating a Global Cellular Automaton
JP2006011825A (ja) 再構成可能演算装置および半導体装置
JP2005508554A (ja) データ操作を利用したデータの計算と処理方法、及び、その装置
Sterpone et al. Fast partial reconfiguration on SRAM-based FPGAs: A frame-driven routing approach
EP2751672A1 (en) Vector execution unit for digital signal processor
US9081901B2 (en) Means of control for reconfigurable computers
US10289382B2 (en) Selectively combinable directional shifters
US6470369B1 (en) Euclid mutual division arithmetic circuit and processing circuit
Cardarilli et al. Speed-up of RISC processor computation using ADAPTO
JP2004240951A (ja) 有限フィールドGF(2m)上の算術演算器
JP2009206611A (ja) 動的再構成可能演算装置および半導体装置
Garzia et al. Implementation of Conditional Execution on a Coarse-Grain Reconfigurable Array.
EP2333674A1 (en) Alu with efficient saturated arithmetic support

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: 20130121

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

Effective date of registration: 20130121

Address after: London, England

Patentee after: ICERA Inc.

Address before: Bristol

Patentee before: Icera Inc.

Effective date of registration: 20130121

Address after: Bristol

Patentee after: Icera Inc.

Address before: Bristol

Patentee before: Icera Inc.