CN107533460B - 紧缩有限冲激响应(fir)滤波处理器、方法、系统和指令 - Google Patents

紧缩有限冲激响应(fir)滤波处理器、方法、系统和指令 Download PDF

Info

Publication number
CN107533460B
CN107533460B CN201680024422.XA CN201680024422A CN107533460B CN 107533460 B CN107533460 B CN 107533460B CN 201680024422 A CN201680024422 A CN 201680024422A CN 107533460 B CN107533460 B CN 107533460B
Authority
CN
China
Prior art keywords
data elements
fir
fir filter
instruction
processor
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
CN201680024422.XA
Other languages
English (en)
Other versions
CN107533460A (zh
Inventor
E·J·范达伦
M·C·维泽伦伯格
S·鲁斯
E·T·格罗科斯基
M·马奥尔
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN107533460A publication Critical patent/CN107533460A/zh
Application granted granted Critical
Publication of CN107533460B publication Critical patent/CN107533460B/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/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/3001Arithmetic 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/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/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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • H03H17/0202Two or more dimensional filters; Filters for complex signals
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • H03H17/06Non-recursive filters
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • H03H2017/0298DSP implementation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)
  • Computer Hardware Design (AREA)

Abstract

处理器包括解码单元,解码单元用于对紧缩有限冲激响应(FIR)滤波指令进行解码,紧缩FIR滤波指令指示一个或多个源紧缩数据操作数、多个FIR滤波系数和目的地存储位置。源操作数包括第一数量的数据元素和第二数量的附加数据元素。第二数量比FIR滤波器抽头的数量少一。执行单元用于响应于紧缩FIR滤波指令被解码,存储结果紧缩数据操作数。结果紧缩数据操作数包括第一数量的经FIR滤波的数据元素,经FIR滤波的数据元素中的每一个会基于多个FIR滤波系数与来自一个或多个源紧缩数据操作数的数据元素的不同的对应集合的多个乘积的组合,数据元素的不同的对应集合在数量上等于FIR滤波器抽头的数量。

Description

紧缩有限冲激响应(FIR)滤波处理器、方法、系统和指令
相关申请
本申请要求2015年5月5日提交的题为“PACKED FINITE IMPULSE RESPONSE(FIR)FILTER PROCESSORS,METHODS,SYSTEMS,AND INSTRUCTIONS(紧缩有限冲激响应(FIR)滤波处理器、方法、系统和指令)”的美国专利申请14/704,633的权益,该专利申请的内容整体明确纳入于此。
背景
技术领域
本文中所描述的各实施例一般涉及处理器。特别地,本文所述的各实施例一般涉及用于对数据进行滤波的处理器。
背景信息
滤波器通常在数据或信号处理中使用。滤波器可以用于改变数据或信号,通常通过移除数据或信号的不期望的成分或部分,例如来改善数据或信号的质量、移除噪声或干扰成分、增强或引入数据或信号的某些属性等。
一些滤波器是无限冲激响应(IIR)滤波器。IIR滤波器具有在有限的时间段中不一定恰好变为零、而是可以无限地继续、但是经常衰减或减小的冲激响应。通常,这是部分地由于IIR滤波器具有内部反馈,内部反馈允许IIR滤波器“记住”先前的结果,这可能导致长冲激响应,或可能导致错误或信号混合。其他滤波器是有限冲激响应(FIR)滤波器。FIR滤波器通过对有限长度输入的冲激响应来表征,对有限长度输入的冲激响应具有有限的持续时间并且在有限的时间中达到零。换言之,FIR滤波器对有界的输入具有有界的输出。
附图说明
通过参考用于说明实施例的以下描述和所附附图,可最佳地理解本发明。在附图中:
图1是FIR图像滤波方法的实施例的框图,其中可以使用紧缩FIR滤波指令。
图2是能操作以执行紧缩FIR滤波指令的实施例的处理器的实施例的框图。
图3是执行紧缩FIR滤波指令的实施例的方法的实施例的流程框图。
图4是FIR滤波器的第一示例实施例的框图。
图5是FIR滤波器的第二示例实施例的框图。
图6是紧缩FIR滤波执行单元的实施例的框图,其中乘法器单元的数量通过对不同结果的多个乘积的重新使用来减少。
图7是紧缩FIR滤波操作的示例实施例的框图,其中基于对交替的非连续源数据元素的集合的FIR滤波生成对应的经FIR滤波的结果数据元素。
图8是紧缩FIR滤波指令的示例实施例的实施例的框图。
图9是提供三个FIR滤波系数、可选的位移量以及可选的符号反转控制的集合的32位操作数的示例实施例的框图。
图10A是提供四个FIR滤波系数的32位操作数的示例实施例的框图。
图10B是可以与图10A的32位操作数一起使用并且提供一个或多个附加输入参数的32位操作数的示例实施例的框图。
图11A是示出有序流水线的实施例以及寄存器重命名的乱序发布/执行流水线的实施例的框图。
图11B是处理器核的实施例的框图,该处理器核包括耦合到执行引擎单元的前端单元,并且前端单元和执行引擎单元两者都耦合到存储器单元。
图12A是单个处理器核以及它与管芯上互连网络的连接及其第二级 (L2)高速缓存的本地子集的实施例的框图。
图12B是图12A的处理器核的部分的展开图的实施例的框图。
图13是可具有多于一个的核、可具有集成存储器控制器并且可具有集成图形器件的处理器的实施例的框图。
图14是计算机架构的第一实施例的框图。
图15是计算机架构的第二实施例的框图。
图16是计算机架构的第三实施例的框图。
图17是计算机架构的第四实施例的框图。
图18是根据本发明的实施例的使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。
具体实施方式
本文中所公开的是紧缩有限冲激响应(FIR)滤波指令、用于执行这些指令的处理器、在处理、实现或执行这些指令时由处理器执行的方法以及包含一个或多个用于处理、实现或执行这些指令的处理器的系统。在以下描述中,阐述了多个特定细节(例如,特定指令操作、滤波器类型、滤波器布置、数据格式、处理器配置、微架构细节、操作序列等)。然而,在没有这些特定细节的情况下,也可实践实施例。在其他实例中,未详细示出公知的电路、结构和技术以避免混淆对本描述的理解。
图1是FIR图像滤波方法100的实施例的框图,其中可以使用紧缩FIR 滤波指令。FIR滤波通常在图像处理中使用,以移除噪声、锐化图像、平滑图像、使图像去模糊、改善图像的视觉质量、或以其他方式改变图像的外观。
输入数字图像102包括像素(P)的阵列。像素以像素行和像素列布置。在该简单示例中,输入图像具有十六个像素P0到P15,它们布置为四行和四列。在黑白图像的情形中,每个像素可以表示灰度值。在彩色图像的情形中,每个像素可以表示颜色分量(例如,红、绿和蓝(RGB)颜色分量;蓝绿、品红和黄(CNY)颜色分量等)的集合。在一些情形中,像素还可以包括一个或多个附加成分,诸如例如,用于传递不透明度的α通道。作为示例,像素的颜色和/或其他成分中的每一个可以由8位、16位或32位的值表示。其他尺寸也是合适的。
可以将许多较高维度的滤波任务分解、分开或以其他方式降低为较低维度的滤波任务。通常FIR图像滤波是二维(2D)过程。然而,通常可以将2D FIR图像滤波分解、分开或降低为两个一维(1D)FIR图像滤波操作,即水平FIR图像滤波操作和垂直FIR图像滤波操作。较低阶的滤波任务可以以任何顺序执行(例如,水平和垂直FIR图像滤波操作可以以任何顺序出现)。如所示,可以首先执行水平FIR图像滤波操作104以生成经水平滤波的图像106,并且然后可以对经水平滤波的图像106执行垂直FIR图像滤波操作108以生成经垂直和水平滤波的图像110。水平图像FIR滤波操作可以对(例如,来自像素行的)输入水平序列像素进行滤波。相反,垂直 FIR图像滤波操作可以对(例如,来自像素列的)输入垂直序列像素进行滤波。替代地,在另一实施例中,可以首先执行垂直图像滤波操作以生成经垂直滤波的图像,并且然后可以对经垂直滤波的图像执行水平图像滤波操作。为了简化说明,仅示出单个水平图像滤波操作和单个垂直图像滤波操作,但是具有多个水平和垂直滤波操作也是可能的,可以按照各种顺序(例如,水平的#1、垂直的#1、垂直的#2、水平的#2)执行这些多个水平和垂直滤波操作。
如所示,在一些实施例中,可以在水平FIR图像滤波操作104期间使用如本文所公开的紧缩FIR滤波指令。替代地,可以在垂直FIR图像滤波操作108期间使用如本文所公开的紧缩FIR滤波指令。与垂直FIR图像滤波操作相比,在紧缩、向量或SIMD处理器中执行水平图像滤波操作(其中并行地对含有像素的紧缩数据操作数进行滤波)可能以其他方式(即,在没有本文所公开的紧缩FIR滤波指令的情形下)往往是较不高效地实现的。其重要原因是,输入图像102通常按照行主序而不是列主序存储在存储器中,并且滤波是按照向量的方向执行的。当对按照行主序存储的图像进行水平滤波时(或当以其他方式按照向量的方向和/或存储器中的数据存储顺序进行滤波时),至少对于某些FIR滤波器,为了并行地对含有像素的源紧缩数据操作数进行滤波,不仅使用源紧缩数据操作数的所有像素,还可能使用附加的相邻先前像素。典型地,给定滤波器阶数的FIR滤波器可以使用源紧缩数据操作数的所有像素,加上数量为滤波阶数的附加的相邻像素。滤波器阶数还与滤波器的抽头(tap)的数量(NTAPS)相关。具体地,滤波器阶数等于比抽头的数量少一(即,NTAPS-1)。例如,四阶滤波器具有五个抽头。
因此,具有抽头的数量(NTAPS)的FIR滤波器可以使用源紧缩数据操作数的所有像素,加上(NTAPS-1)个附加的相邻像素。例如,为了对四阶(例如,五个抽头)FIR滤波器的源紧缩数据操作数中的每个像素生成对应的经FIR滤波的像素,可以使用源紧缩数据操作数的所有像素以及四个附加的相邻像素。在没有附加的相邻像素的情形下,不是源紧缩数据操作数的所有像素都可以被滤波和/或不是所有对应的经FIR滤波的结果像素都可以被生成。在没有本文所公开的紧缩FIR滤波指令的情形下,这种按照向量的方向和/或存储器中的数据存储顺序进行滤波往往会是昂贵的,例如,由于重复地对齐数据的需要。有利地,本文所公开的紧缩FIR滤波指令可以有助于消除许多这种数据对齐,并且从而改善总体性能。在其他实施例中,本文所公开的紧缩FIR滤波指令可以用于垂直图像滤波(例如,如果被滤波的图像是按照列主序存储在存储器中的,紧缩FIR滤波指令可以是更有用的)。因此,本文所公开的紧缩FIR滤波指令可以用于水平FIR 滤波、垂直FIR滤波或两者。更一般地,当按照向量的方向和/或存储器中的数据存储顺序进行滤波时,可以非常高效地使用本文所公开的紧缩FIR 滤波指令。此外,本文所公开的紧缩FIR滤波指令不限于图像处理或图像滤波,而是可以更一般地用于对其他数据或信号进行滤波。
图2是能操作以执行紧缩FIR滤波指令222的实施例的处理器220的实施例的框图。紧缩FIR滤波指令可以表示紧缩、向量或SIMD指令。在一些实施例中,该处理器可以是通用处理器(例如,在台式计算机、膝上型计算机或其他计算机中所使用类型的通用微处理器或中央处理单元 (CPU))。替代地,处理器可以是专用处理器。合适的专用处理器的示例包括但不限于,图像处理器、像素处理器、图形处理器、信号处理器、数字信号处理器(DSP)以及协处理器。该处理器可具有各种复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、超长指令字(VLIW) 架构、混合架构、其他类型的架构中的任一者,或具有不同架构的组合(例如,不同的核可具有不同的架构)。
在操作期间,处理器220可接收紧缩FIR滤波指令222。例如,可通过总线或其他互连从存储器接收指令。指令可表示宏指令、汇编语言指令、机器代码指令、或处理器的指令集的其他指令或控制信号。在一些实施例中,该紧缩FIR滤波指令可显式地指定(例如,通过一个或多个字段或一组位)或以其他方式指示(例如,隐式地指示)一个或多个源紧缩数据操作数228、230。在一些实施例中,指令可任选地具有操作数指定字段或多组位以显式地为这些一个或多个操作数指定寄存器、存储器位置或其他存储位置。替代地,这些操作数中的一个或多个的存储位置可任选地对于该指令是隐含的(例如,对操作码是隐含的),并且处理器可理解使用该存储位置而无需对存储位置的显式指定。
一个或多个源紧缩数据操作数可具有第一数量的数据元素(例如,P0 到P7)和第二数量的附加数据元素232(例如,P8到P11)。在一些实施例中,附加数据元素232的第二数量可以至少是等于会由指令实现的FIR 滤波器的阶数的数量(即,比滤波器的FIR滤波抽头的数量少一)。第一和第二数量的数据元素(例如,数据元素P0到P11)共同表示足以生成第一数量的经FIR滤波的结果数据元素(例如,R0到R7)的一组数据元素。换言之,第一数量的源数据元素中的每一个有一个经FIR滤波的结果数据元素。
在所示实施例中,一个或多个源紧缩数据操作数包括第一源紧缩数据操作数228和第二源紧缩数据操作数230。第一源紧缩数据操作数228具有第一数量的数据元素(例如,P0到P7),并且第二源紧缩数据操作数230 具有第二数量的附加数据元素(例如,P8到P11)。第一数量的数据元素 (例如,P0到P7)跨越第一源紧缩数据操作数的全部位宽度。相反,可以将第二数量的附加数据元素(例如,P8到P11)在第二源紧缩数据操作数的一端组合在一起。数据元素P8-P11可以邻近数据元素P0-P7,或至少与数据元素P0-P7相邻,按照适于特定实现的FIR滤波器。还可以任选地提供其他数据元素,但是如所示,星号(*)用于指示它们不是指令/操作所需要或使用的。可选地,如果它使得整体算法更高效,则可以任选地保留和忽略寄存器或操作数中已经存在的数据元素。在其他实施例中,可以在一个或多个源紧缩数据操作数中不同地提供第一和第二数量的数据元素。例如,在另一实施例中,比结果紧缩数据操作数宽了至少第二数量的数据元素的单个较宽源紧缩数据操作数可以任选地用于提供第一和第二数量的数据元素两者。作为另一示例,三个源紧缩数据操作数可任选地用于提供第一和第二数量的数据元素。第一和第二源紧缩数据操作数可以呈现“空间的”SIMD,其中元素被一起转移到操作数中(例如,通过总线)并存储在在数据元素之间的进位链中具有中断的紧缩数据寄存器中等。
在所示示例中,数据元素的第一数量为八(即,P0到P7),但在其他实施例中可任选地使用更少或更多数据元素。例如,在各实施例中,第一数量可以是4、8、16、32、64或128,或2的非幂的数。在所示示例中,数据元素的第二数量是四(即,P8到P11),其可以用于四阶即五抽头FIR 滤波器,但在其他实施例中可任选地使用更少或更多数据元素。例如,第二数量可以等于滤波器的阶数(即,NTAPS-1),并且滤波器的阶数的范围可以从1到约11,但本发明的范围并不受限于此。在一些实施例中,每个数据元素(例如,P0到P11)可以是8位、16位、或32位固定点。例如,在一个实施例中,每个数据元素可具有是以2补码形式的有符号的8 位、16位和32位中的一个的整数或固定点格式,但这不是必须的。
利用FIR滤波的卷积通常依赖于数据邻近。在一些实施例中,第一数量的数据元素的数据元素(例如,P0到P7)可以表示图像或其他数据结构中的邻近/连续的数据元素,或至少相邻的数据元素(与特定FIR滤波器一致)(例如,图像的一行中的邻近像素)。类似地,第二数量的数据元素的数据元素(例如,P8到P11)可以表示相同的数据结构中的附加的邻近/连续的数据元素,或至少相邻的数据元素(例如,相同图像的相同行中的邻近像素)。此外,数据元素P8-P11与数据元素P0-P7可以是邻近/连续的,或至少相邻的。例如,数据元素P8可以表示在像素行中紧邻像素P7的像素。在一些实施例中,在描述多相结构的一个或多个线性操作(例如,利用一个或多个置换矩阵执行)之后可以实现邻近。典型地,紧缩FIR滤波指令222可用于对图像的像素的子集(例如,在该情况下为八)进行滤波,并且算法可以使用多个这种指令来逐渐地移动或“滑动”通过图像的像素的不同连续子集。例如,在算法中,紧缩FIR滤波指令的后续实例可以指示较早执行的紧缩FIR滤波指令222的第二源紧缩操作数230作为类似于操作数228的新的第一源紧缩数据操作数。在一些实施例中,数据元素可以表示数码相机、蜂窝电话、扫描器或系统(其中包括处理器)的其他数字图像捕捉设备已经获取的、或已经通过网络接口、无线接口或系统(其中包括处理器)的其他输入/输出设备接收的数字图像的像素。其他实施例不限于像素或图像处理。
再次参考图2,处理器220还包括一组紧缩数据寄存器225。紧缩数据寄存器中的每一个都可以表示能操作以存储紧缩数据、向量数据、或单指令多数据(SIMD)数据的管芯上的存储位置。紧缩数据寄存器可表示对软件和/或编程者可见的架构可见或架构寄存器,并且/或者是由处理器的指令集中的指令所指示以便标识操作数的寄存器。这些架构寄存器不同于给定微架构中的其他非架构式寄存器(例如,临时寄存器、重排序缓冲器等)。可以将紧缩数据寄存器在不同的微架构中以不同的方式实现,并且不限于任何特定类型的设计。合适类型的寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态地分配的物理寄存器、以及它们的组合。紧缩数据寄存器的示例尺寸包括但不限于,64位、128位、256位、512位或1024位紧缩数据寄存器。
在一些实施例中,第一源紧缩数据操作数228可任选地被存储在第一紧缩数据寄存器中,第二源紧缩数据操作数230可任选地被存储在第二紧缩数据寄存器中,并且其中会存储结果紧缩数据操作数238的目的地也可任选地是(不一定不同的)紧缩数据寄存器。可替代地,存储器位置或其他存储位置可以任选地用于这些操作数中的一个或多个。此外,在一些实施例中,用于第一和第二源紧缩数据操作数中的一个的存储位置可任选地重新用作结果紧缩数据操作数的目的地。例如,指令可以显式地指定一次源/目的地寄存器,并且源/目的地寄存器可以隐式地或隐含地理解为用于源操作数和结果操作数两者。
再次参考图2,在一些实施例中,指令还可以显式地指定或以其他方式指示(例如,隐含地指示)多个FIR滤波系数234。例如,如所示实施例显示的,指令可以指定或以其他方式指示用于存储具有FIR滤波系数的一个或多个操作数的一个或多个通用寄存器或其他标量寄存器235。替代地,指令可以具有用于提供FIR滤波系数的立即数操作数。还可任选地使用这些方法的组合。
滤波系数通常显著地影响滤波器的质量。为了改善滤波器的质量,通常期望具有更多滤波系数,并且滤波系数具有更多位。然而,更多滤波系数和滤波系数具有更多位均增加用于提供滤波系数所需的总位数。在一些实施例中,可任选地在指令的一个或多个操作数(例如,立即数、一个或多个标量寄存器等)中以“压缩”格式提供滤波系数。压缩格式可有助于允许以更少位提供更多滤波系数信息。
实施例不限于任何已知尺寸的FIR滤波系数。可在不同实施例中使用不同尺寸。系数很大程度上定义或指定滤波器并且因此实施例允许系数具有适于定义或指定各种不同类型的滤波器的尺寸。然而,在一些实施例中,为了简化某些实现方式的设计,FIR滤波系数中的每一个可以具有16位或更少位、12位或更少位、或8位或更少位。例如,在各实施例中,FIR滤波系数中的每一个可以具有从四到七位、或从四到六位、或从四到五位,但这不是必须的。FIR滤波系数还可任选地具有更多位,但这往往可能增加执行单元(例如,其乘法器)的尺寸和复杂度,尤其当抽头的数量很大时。此外,这可能增加提供系数所需的操作数的位数。
FIR滤波系数可具有各种编码和/或数据格式,诸如例如,以1补码、以2补码、整数、浮点等。在一些实施例中,滤波系数可任选地具有浮点格式,其中它们各自具有尾数、符号和指数或位移因子。在一些实施例中,可任选地使用定制的或内部的浮点格式。定制的或内部的浮点格式点可能不是标准浮点格式,诸如16位半精度、32位单精度等。相反,定制的或内部的浮点格式可任选地是非标准浮点格式。在一些实施例中,浮点格式可具有少于16位、少于12位或8位或更少。
在一些实施例中,指令可任选地使用与FIR滤波器的抽头的数量(NTAPS)相同数量的FIR滤波系数。在其他实施例中,指令可任选地使用比抽头的数量(NTAPS)更少数量的FIR滤波系数,并且一个或多个FIR 滤波系数可任选地用于抽头中的多个,诸如例如,通过对以对称配置的FIR 滤波系数进行镜像操作或以其他方式重新使用、对以半对称配置的FIR滤波系数进行镜像和求反操作等。例如,在各实施例中,可以有一个FIR滤波系数和两个抽头、三个FIR滤波系数和五个抽头、四个FIR滤波系数和七个抽头、或五个FIR滤波系数和九个抽头,此处仅是列举数例。在一些实施例中,指令可显式地指定或隐式地指示系数会被使用的方式,例如,它们是否会以对称的、半对称的、或独立的系数配置被使用。作为一个示例,指令的操作码可任选地用于完全隐式地指示系数会被使用的方式。作为另一示例,可以使用指令的操作码与一个或多个附加位(例如,FIR滤波指示字段),例如,与在操作码可能使用系数的多个不同方式之间选择或以其他方式指示操作码可能使用系数的多个不同方式中的一个的一个或多个附加位。
再次参考图2,该处理器包括解码单元或解码器224。解码单元可接收并解码紧缩FIR滤波指令。解码单元可输出反映、表示相对较高级的紧缩 FIR滤波指令和/或从相对较高级的紧缩FIR滤波指令导出的一个或多个相对较低级的指令或控制信号(例如,一个或多个微指令、微操作、微代码进入点、经解码的指令或控制信号等)。在一些实施例中,解码单元可以包括用于接收指令的一个或多个输入结构(例如端口、互连、接口)、与输入结构耦合用于识别并解码指令的指令识别和解码逻辑、以及与指令识别和解码逻辑耦合用于输出较低级指令或控制信号的一个或多个输出结构 (例如端口、互连、接口)。可使用各种不同机制来实现该解码单元,包括但不限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)和适于实现解码单元的其他机制。
在一些实施例中,可任选地使用指令仿真器、转换器、变形器、解释器或其他指令变换模块,而不是直接将该紧缩FIR滤波指令提供给解码单元。各种类型的指令转换模块可以以软件、硬件、固件或其组合来实现。在一些实施例中,该指令转换模块可位于处理器之外,例如,在单独的管芯上和/或在存储器中(例如,作为静态的、动态的或运行时仿真模块)。作为示例,指令转换模块可接收可以是第一指令集中的紧缩FIR滤波指令,并且可将该紧缩FIR滤波指令仿真、变换、变形、解释或以其它方式转换为可以是处理器的解码器的原生的第二不同指令集中的一个或多个对应的中间指令或控制信号。可将第二指令集中的这一个或多个中间指令或控制信号提供给解码单元(例如,解码单元224),该解码单元可将它们解码为可由处理器的硬件(例如,一个或多个执行单元)执行的一个或多个较低级指令或控制信号。
再次参考图2,紧缩SIMD FIR滤波执行单元226与解码单元224的输出耦合,与紧缩数据寄存器225耦合或以其他方式与一个或多个源操作数 (例如,操作数228、230)耦合,并且与标量寄存器235耦合,或以其他方式耦合以接收FIR滤波系数234。执行单元可接收表示紧缩FIR滤波指令和/或从紧缩FIR滤波指令导出的一个或多个经解码或以其他方式转换的指令或控制信号。执行单元还可接收一个或多个源紧缩数据操作数(例如,操作数228和230)以及FIR滤波系数234。响应于紧缩FIR滤波指令和/ 或作为其结果(例如,响应于从该指令解码的一个或多个指令或控制信号),执行单元能操作以将结果紧缩数据操作数238存储在由该指令指示的目的地存储位置中。
结果紧缩数据操作数238可以包括第一数量的经FIR滤波的数据元素 (例如,R0到R7)。这些经FIR滤波的数据元素可表示指令的结果数据元素。在所示示例实施例中,结果操作数任选地包括八个结果数据元素R0 到R7,但在其他实施例中可任选地使用更少或更多的结果数据元素。例如,第一源紧缩数据操作数228的数据元素中的每一个可以有一个经FIR滤波的数据元素。在一些实施例中,经FIR滤波的数据元素中的每一个可以基于多个FIR滤波系数234与来自一个或多个源紧缩数据操作数的数据元素的不同的对应子集的多个乘积的算术组合。数据元素的每个不同的对应集合在数量上可以等于FIR滤波器抽头的数量。在一些实施例中,经FIR滤波的数据元素中的每一个还可以任选地基于对FIR滤波系数和数据元素的不同的对应集合的对应的多个乘积的对应的算术组合进行移位和/或使其饱和。
参考图2,在五抽头滤波器的所示示例中,经FIR滤波的数据元素R0 可以基于多个FIR滤波系数和数据元素P0到P4的集合的多个乘积的算术组合,经FIR滤波的数据元素R1可以基于多个FIR滤波系数和数据元素 P1到P5的集合的多个乘积的算术组合,以此类推。如所示,数据元素的不同的对应集合中的每一个包括与所有其他集合不同的数据元素。在该示例中,每个经FIR滤波的数据元素基于对源操作数的以对应位位置(例如, R0和P0在对应位置中,R2和P2在对应位置中,等等)中的数据元素开始的五个数据元素(对于该五抽头滤波器)的FIR滤波操作。此外,通过利用来自经FIR滤波的结果数据元素的不同数据元素位置的相同的相对数据元素位置的数据元素(例如,P1-P5相对于R1在与P0-P4相对于R0的相同的相对数据元素位置中,等等),不同的对应集合移动或滑动通过第一和第二数量的数据元素(例如,P0到P7和P8到P11)的逻辑级联。作为最低(或最高)有效的经FIR滤波的数据元素的R0可以基于第一源紧缩数据操作数的NTAPS个相应的最低(或最高)有效的数据元素的对应集合。如所示,在一些实施例中,经FIR滤波的数据元素中的一些(例如,在所示示例中的R0到R3)可以不基于涉及滤波器阶数(例如,NTAPS-1)个附加数据元素232(例如,P8到P11)中的任一个的FIR滤波,而FIR滤波结果的其他数据元素(例如,在所示示例中的R4到R7)可以基于涉及滤波器阶数(例如,NTAPS-1)个附加数据元素232(例如,P8到P11) 中的一个或多个的FIR滤波。
在一些实施例中,经FIR滤波的结果数据元素可任选地基于涉及用于抽头中的每一个的不同FIR滤波系数的多个乘积的组合。在其他实施例中,经FIR滤波的结果数据元素可任选地基于涉及比抽头的数量更少的FIR滤波系数的多个乘积,并且可以为抽头中的一个或多个重新使用、或求反和重新使用FIR滤波系数中的一个或多个。在一些实施例中,指令可任选地指示会被用于反转或改变系数或系数和数据元素的乘积的符号的一个或多个符号值。在各实施例中,结果紧缩数据操作数可表示FIR滤波、多相FIR 滤波(例如,基于对奇数或偶数位置的样本进行滤波)、或QMF滤波的结果。
在一些实施例中,每个结果元素(R)可具有与源数据元素(P)相同的精度。在其他实施例中,每个结果元素可具有源数据元素两倍的精度。另一合适的结果格式是扩展的精度格式,其中添加(整数个)最高有效位以提供增加的范围(例如,当添加N项时添加log2(N)个附加位)。例如,在一个特定示例实施例中,源元素可以是以2补码形式的16位有符号整数或固定点,并且结果元素可以是以2补码形式的32位有符号整数或固定点,但这不是必须的。当源和结果元素是相同尺寸时,具有与用于第一源紧缩数据操作数的寄存器相同尺寸的单个寄存器可用于目的地。相反,当结果元素是源元素的尺寸的两倍时,要么两倍尺寸的寄存器可用于目的地,要么具有与用于存储第一源紧缩数据操作数的寄存器相同尺寸的两个寄存器可用于目的地。在各实施例中,结果紧缩数据操作数可对应于表1-2和/或图4-7所示的滤波操作中的任一个,但本发明的范围并不受限于此。
执行单元和/或处理器可包括能操作以响应于紧缩FIR滤波指令和/或作为其结果(例如,响应于从该FIR滤波指令解码的一个或多个指令或控制信号)而执行该紧缩FIR滤波指令和/或存储结果的具体的或特定的逻辑 (例如,潜在地与固件(例如,存储在非易失性存储器中的指令)和/或软件组合的晶体管、集成电路或其他硬件)。作为示例,执行单元可包括用于执行算术或算术和逻辑操作的算术单元、算术逻辑单元、乘法和累加单元、或数字电路,等等。在一些实施例中,执行单元可以包括用于接收源操作数的一个或多个输入结构(例如端口、互连、接口)、与输入结构耦合用于接收并处理源操作数并生成结果操作数的电路或逻辑、以及与电路或逻辑耦合用于输出结果操作数的一个或多个输出结构(例如端口、互连、接口)。
在一些实施例中,执行单元可包括用于第一源紧缩数据操作数中的数据元素(例如,P0到P7)中的每一个和/或结果数据元素(例如,R0到R7) 中的每一个的不同的对应FIR滤波器236。FIR滤波器236-0可以对元素P0 到P4执行FIR滤波操作以生成结果元素R0,以此类推。可以利用“空间的”SIMD布置并行地和并发地处理紧缩数据操作数的元素,或者可以利用“时间的”类型的向量处理(例如,在取决于被处理的元素的子集的数量的个数的时钟周期上)任选地顺序地处理元素的子集。在一些实施例中,FIR滤波器236中的每一个可以包括图4-6中的任一个的电路、组件或逻辑,这些是合适的微架构FIR滤波器配置的说明性示例,但本发明的范围并不受限于此。
有利地,紧缩FIR滤波指令可以有助于提升FIR滤波的性能和/或可以使得其对于编程者更容易,尤其当按照“向量方向”进行FIR滤波时,其中需要超过源紧缩数据操作数中的数据元素的多至滤波器阶数个的附加数据元素。该指令可以有助于简化水平访问要求。通常,不超过两个源紧缩数据操作数用于提供足以生成含有经FIR滤波的结果数据元素的结果紧缩数据操作数的所有数据元素。不需要进一步的外部数据依赖性。可以省略对齐操作,这可以有助于提升性能。
为避免使描述模糊,已示出和描述了相对简单的处理器220。然而,处理器可以任选地包括其他处理器组件。例如,各种不同的实施例可以包括针对图11-13中所示出和描述的组件的各种不同的组合和配置。可以将处理器的所有组件耦合在一起。
图3是执行紧缩FIR滤波指令的实施例的方法340的实施例的流程框图。在各种实施例中,可由处理器、指令处理装置或其他数字逻辑设备来执行该方法。在一些实施例中,可由图2的处理器执行图3的方法和/或可在图2的处理器内执行图3的方法。本文中针对图2的处理器所描述的组件、特征和具体可选细节也可任选地应用于图3的方法。可替代地,图3的方法可由类似的或不同的处理器或装置执行,和/或在类似的或不同的处理器或装置内执行。此外,图2的处理器可以执行与图3的那些方法相同、类似或不同的方法。
该方法包括在框341接收紧缩FIR滤波指令。在各方面,可以在处理器或其一部分(例如,指令取出单元、解码单元、总线接口单元等等)处接收该指令。在各方面中,可从处理器外和/或管芯外的源(例如,从存储器、互连等)或从处理器上和/或管芯上的源(例如,从指令高速缓存、指令队列等)接收该指令。紧缩FIR滤波指令可以指定或以其他方式指示一个或多个源紧缩数据操作数(例如,第一和第二源紧缩数据操作数)、多个FIR滤波系数、以及目的地寄存器或其他存储位置。该一个或多个源紧缩数据操作数可以包括第一数量的数据元素和第二数量的附加数据元素。第二数量可以是比会为该指令实现的FIR滤波器的FIR滤波器抽头的数量少一。
在框342处,该方法还包括响应于紧缩FIR滤波指令或作为其结果,将结果紧缩数据操作数存储在目的地存储位置中。结果紧缩数据操作数可以包括第一数量的经FIR滤波的数据元素。经FIR滤波的数据元素中的每一个可以基于多个FIR滤波系数与来自一个或多个源紧缩数据操作数的数据元素的不同的对应集合的多个乘积的组合。数据元素的对应集合在数量上可以等于FIR滤波器抽头的数量。该指令、一个或多个源操作数、系数、结果操作数和对结果操作数的生成可以任选地具有本文中别处公开的可选的特性或特征中的任一个。
所示的方法涉及架构操作(例如,那些从软件角度可见的操作)。在其他实施例中,该方法可以可选地包括一个或多个微架构操作。作为示例,可取出、解码、乱序调度指令,可访问源操作数,执行单元可执行多个微架构操作以实现该指令(例如,乘法、加法、移位、饱和等)。在一些实施例中,用于实现指令的微架构操作可任选地包括针对图4-6中任意一个所示或所述的多个操作中的任意一个,但是本发明的范围并不受限于此。
图4是FIR滤波器436的第一示例实施例的框图。所示FIR滤波器是五抽头滤波器,但是在其他实施例中可任选地使用更少或更多抽头。FIR 滤波器包括用于每个抽头的不同的对应乘法器。在此情况下,五抽头FIR 滤波器包括第一到第五乘法器单元M0到M4。在该实施例中,FIR滤波器耦合以接收五个数据元素P0到P4和五个系数C0到C4作为输入。数据元素P0到P4表示与经FIR滤波的结果数据元素R0相对应的五个数据元素的对应集合。在该实施例中,这五个数据元素中的每一个会乘以五个系数中的不同的一个。具体地,M0耦合以接收并且能操作以将P0与C0相乘以生成和输出第一乘积。M1耦合以接收并且能操作以将P1与C1相乘以生成和输出第二乘积。M2耦合以接收并且能操作以将P2与C2相乘以生成第三乘积。M3耦合以接收并且能操作以将P3与C3相乘以生成和输出第四乘积。M4耦合以接收并且能操作以将P4与C4相乘以生成和输出第五乘积。
FIR滤波器的一个或多个加法器单元450与乘法器的输出耦合以接收多个乘积。一个或多个加法器单元能操作以相加、累加或以其他方式组合所有乘积并且输出所有乘积的单个和或其他算术组合。作为示例,一个或多个加法器单元可包括进位保留加法器单元树。乘法器单元和加法器单元可共同地执行完整的乘法-累加操作。在一些实施例中,可任选地包括中间选择网络以允许加法器单元(例如,加法器树)更自由地或灵活地选择会将多个乘积中的哪些组合在一起。
在一些实施例中,FIR滤波器可任选地包括与一个或多个加法器单元中的最后一个的输出耦合的可选的移位单元452以接收多个乘积的和或其他组合。可选的移位单元可以能操作以将和右移多个位位置,这可用于对和进行缩放。经FIR滤波的数据元素R0可以基于对多个乘积的组合的移位。可选地,可以通过将二进制‘1’插入零向量(正好在逗号后面)以及将该信号插入一个或多个加法器单元来在移位之前执行舍入。在一些实施例中,相关联的紧缩FIR滤波指令可以为右移指示灵活的位移量454。
FIR滤波器可任选地包括可选的饱和单元456。如所示,饱和可以与可选的移位单元的输出耦合。替代地,如果省略移位单元,则饱和单元可以与一个或多个加法器单元的输出耦合。可选的饱和单元可以使其输入值饱和或钳制为其相关联的输出数据类型所允许的最大和最小的值中的一个。在一些实施例中,紧缩FIR滤波指令可以具有饱和指示458(例如,指令的一位)以指示和控制是否启用饱和。FIR滤波器可以输出经FIR滤波的最终像素或其他元素作为结果元素R0。可以将结果元素R0存储在目的地寄存器或其他目的地存储位置中。在一些实施例中,结果元素R0可以等于乘积P0C0加上P1C1加上P2C2加上P3C3加上P4C4一起的经N位移位的和的饱和(SAT)值。其他结果元素可以具有类似结果。然而,这只是一个示例。
FIR滤波器436的所示示例实施例具有五个抽头,但是其他实施例可以具有比五个抽头更少或更多的抽头。例如,在各实施例中,FIR滤波器可以替代地任选地具有三个、七个、九个或其他数量的抽头,以及与FIR滤波系数的数量相同的数量的抽头。此外,具有给定数量的抽头的FIR滤波器可任选地用于通过将一个或多个系数设置为零来实现具有更少数量的抽头的滤波器。相反,具有给定数量的抽头的FIR滤波器可任选地用于通过将两个或更多个FIR滤波操作结合来实现具有更大数量的抽头的滤波器。作为示例,操作内的利用顺序器和寄存器的累加可用于在多个周期中创建更大的滤波器,而重新使用乘法器和加法器单元使得更大的滤波器不会导致更大的面积或制造成本。
图5是FIR滤波器536的第二示例实施例的框图。在各实施例中,FIR 滤波器可用于实现具有三个独立系数(C0到C3)的三抽头FIR滤波器、具有三个独立系数(C0到C3)的对称的五抽头FIR滤波器并且其中对一些系数进行镜像操作或以其他方式重新使用一些系数、具有三个独立系数 (C0到C3)的半对称的五抽头FIR滤波器并且其中对一些系数进行镜像操作或以其他方式重新使用一些系数并且对其进行求反操作。
所示的FIR滤波器包括第一到第五乘法器单元M0到M4。在该说明性五抽头FIR滤波器实施例中,FIR滤波器耦合以接收五个数据元素P0到P4 和仅三个系数C0到C2作为输入。其他实施例可以使用其他数量的数据元素和/或其他数量的系数。M0耦合以接收并且能操作以将P0与C0相乘以生成和输出第一乘积P0*C0。M1耦合以接收并且能操作以将P1与C1相乘以生成和输出第二乘积P1*C1。M2耦合以接收并且能操作以将P2与C2 相乘以生成第三乘积P2*C2。M3耦合以接收并且能操作以将P3与C1相乘以生成和输出第四乘积P3*C1。M4耦合以接收并且能操作以将P4与C0 相乘以生成和输出第五乘积P4*C0。在图示中,P1C0、P1C1等可以仅表示多个乘积的标签,或可以表示用于存储多个乘积的临时寄存器。
注意,将系数C0提供给M0和M4两者并由其使用,并且将系数C1 提供给M1和M3两者并由其使用。代替指定五个独立系数,可以指定仅三个独立系数,并且可以为两个抽头重新使用两个系数或者从两个抽头导出两个系数然后为该两个抽头重新使用该两个系数。有利地,这可以有助于降低FIR滤波器的尺寸和/或复杂度。在一些实施例中,这可以允许使用更少的乘法器,这往往可以显著地减少FIR滤波器的逻辑的总数量。例如,代替需要将五个系数与五个数据元素相乘,可以将仅三个系数与五个数据元素相乘,并且对于多个经FIR滤波的结果数据元素可以适当地对多个乘积中的一些进行重复路由和重新使用。这将在下文中结合图6进一步地讨论。
在一些实施例中,FIR滤波器可任选地包括一个或多个可选的符号反转单元以对系数或与其相关联的多个乘积中的一个或多个改变符号或执行符号反转。在特定示出的示例实施例中,FIR滤波器包括可选的第一符号反转单元I0,可选的第二符号反转单元I1,可选的第三符号反转单元I2,可选的第四符号反转单元I3,和可选的第五符号反转单元I4。在该实施例中,每个抽头有一个符号反转单元,但是在替代实施例中,可以包括更少或更多的符号反转单元。在所示实施例中,符号反转单元耦合以将对应的符号值应用或不应用到对应的乘积或对对应的乘积应用或不应用符号反转。第一符号反转单元I0耦合以接收并且能操作以将符号反转应用或不应用到第一乘积P0C0。第二符号反转单元I1耦合以接收并且能操作以将符号反转应用或不应用到第二乘积P1C1,以此类推。
有利地,这种符号反转可任选地用于帮助有效地创建不同系数。尽管给定系数和该给定系数的符号反转的版本可能不是严格的独立系数,但它们是不同的。因此,符号反转可以有助于高效地创建附加的不同系数而不必显式地指定更多独立系数。此外,因为可以比完整的乘法更便宜地执行符号反转。通过仅将符号应用到乘积或对乘积执行符号反转,可以实现与不同(尽管可能不是严格地独立的)系数的有效乘法,而不必执行不同乘法。相反,可以使用相同乘积的两个副本,并且可以对乘积的一个副本执行符号反转但不对乘积的另一副本执行符号反转,这通常使用比会用于执行两个分开的乘法的逻辑更少的逻辑。因此,可以通过对乘积的重新使用和更便宜的符号反转单元来潜在地消除一些乘法器。替代地,如果需要的话,符号反转单元可以替代地耦合以在乘法之前将符号反转应用或不应用到对应的系数。作为示例,可以通过使用标准的以2补码方式完成对每个抽头的符号反转,其中负=(正XOR‘1’)+1。这可以通过将反转标志(‘1’表示是)插入XOR、并且将其作为进位位插入紧接的加法器单元来实现。这种符号反转对于某些类型的滤波器和当组合滤波器时是有用的。
在一些实施例中,符号反转单元(在不同实施例中可以有不同数量的符号反转单元)可以采用固定的或静态的符号反转。例如,给定的FIR滤波指令(例如,其操作码)可以具有用于符号反转单元的给定的固定的或静态的符号反转控制的集合。如果需要的话,具有不同操作码的不同指令可任选地被包括在指令集中以各自提供固定的符号反转控制的不同集合。例如,第一指令或操作码可以完全不使用符号反转,第二指令或操作码可以对仅乘积P3*C1和P4*C0固定符号反转,第三指令或操作码可以对仅乘积P0*C1和P1*C1固定符号反转,等等。替代地,代替这种指令固定的或操作码固定的符号反转控制,紧缩FIR滤波指令可以允许灵活的或可编程的符号反转控制。例如,指令的一个或多个操作数,诸如例如,立即数、指令所指示的寄存器等,可以提供灵活的或可编程的符号反转控制S0到 S4(或根据需要的另一数量的这种符号反转控制)。符号反转控制可以表示符号值。作为一个示例,符号反转控制S0到S4可以分别表示寄存器或立即数中可以被置位或清零的五位,以对对应的符号反转单元启用或禁用符号反转。相反惯例也是可能的。
再次参考图5,FIR滤波器536可以包括与可选的符号反转单元的输出耦合的一个或多个加法器单元550。替代地,如果不采用符号反转单元,则一个或多个加法器单元可任选地与乘法器的输出耦合。一个或多个加法器单元能操作以相加、累加或以其他方式组合所有乘积并且输出所有乘积的单个和或其他算术组合,如前所述。作为示例,一个或多个加法器单元可包括进位保留加法器单元树。在一些实施例中,可任选地包括中间选择网络以允许加法器单元(例如,加法器树)更自由地或灵活地选择会将多个乘积中的哪些组合在一起。
在一些实施例中,FIR滤波器可任选地包括与一个或多个加法器单元的输出耦合的可选的移位单元552以接收多个乘积的和或其他组合。可选的移位单元可以能操作以将和右移多个位位置,这可用于对和进行缩放。经FIR滤波的数据元素R0可以基于对多个乘积的组合的移位。可选地,可以通过将二进制‘1’插入零向量(正好在逗号后面)以及将该信号插入一个或多个加法器单元来在移位之前执行舍入。在一些实施例中,相关联的紧缩FIR滤波指令可以为右移指示灵活的位移量554。
FIR滤波器可任选地包括可选的饱和单元556。如所示,饱和可以与可选的移位单元的输出耦合。替代地,如果省略移位单元,则饱和单元可以与一个或多个加法器单元的输出耦合。可选的饱和单元可以使其输入值饱和或钳制为其相关联的输出数据类型所允许的最大和最小的值中的一个。在一些实施例中,紧缩FIR滤波指令可以具有饱和指示558(例如,一位的指令)以指示和控制是否启用饱和。FIR滤波器可以输出经FIR滤波的最终像素或其他元素作为结果元素R0。可以将结果元素R0存储在目的地寄存器或其他目的地存储位置中。
FIR滤波器536的所示示例实施例具有五个抽头和三个系数,但是其他实施例可以具有比五个抽头更少或更多的抽头和/或其他数量的系数。例如,在各实施例中,FIR滤波器可以替代地可选地具有两个抽头和一个系数、七个抽头和四个系数、或九个抽头和五个系数,此处仅是列举数例。本发明的范围不限于任何已知数量的抽头或系数。在各实施例中,可以使用每个抽头具有独立系数的这些FIR滤波器,对系数进行镜像操作以提供对称的FIR滤波器,或对系数进行镜像和求反操作以提供半对称的FIR滤波器。此外,具有给定数量的抽头的FIR滤波器可任选地用于通过将一个或多个系数设置为零来实现具有更少数量的抽头的滤波器。相反,具有给定数量的抽头的FIR滤波器可任选地用于通过将两个或更多个FIR滤波操作结合来实现具有更大数量的抽头的滤波器。作为示例,操作内的利用顺序器和寄存器的累加可用于在多个周期中创建更大的滤波器,而重新使用乘法器和加法器单元使得更大的滤波器不会导致更大的面积或制造成本。
图6是具有基本上最小数量的乘法器单元660的紧缩FIR滤波执行单元626的实施例的框图。在所示实施例中,执行单元使用仅三个独立系数 (C0到C2)执行FIR滤波,但在其他实施例中可任选地使用比三个系数更少或更多的系数。如本文别处提及的,对称或半对称可任选地用于增加有效的不同(尽管可能不是严格地独立的)系数的数量。
执行单元可接收数据元素P0到PT的集合。这些数据元素P0到PT可表示第一数量的数据元素(例如,填充向量的第一数量的数据元素)以及等于滤波器阶数(例如,比滤波器抽头的数量少一(即,NTAPS-1))的第二数量的附加数据元素。如前所讨论的,这些数据元素可共同地至少足以生成第一数量的经FIR滤波的结果数据元素。源数据元素中的每一个可对应于不同的紧缩或SIMD路或数据路径。在一些实施例中,执行单元可具有由多个这种紧缩或SIMD路或数据路径所共享的逻辑以及专用于给定的紧缩或SIMD路或数据路径的逻辑。具体地,执行单元可包括由多个紧缩或SIMD路所共享的一组乘法器单元660以及各自专用于对应的单个紧缩或SIMD路或数据路径的其他资源664。
在一些实施例中,该一组乘法器单元660可包括为给定指令生成所有结果数据元素所需的基本上最少可能数量的乘法器单元。使用可能的最少数量的乘法器单元可有助于显著地减少实现执行单元所需的逻辑的总数量。在一些实施例中,乘法器单元的数量可以等于、不大于、或者在一些情形中小于(例如,如果消除在边界处的乘法器单元)独立系数的数量(例如,在此情况下为三个)乘以源数据元素P0到PT的数量。如上所述,多个源数据元素P0到PT可以包括等于紧缩或SIMD路的数量的第一数量的数据元素加上滤波器阶数(例如,NTAPS-1)个的附加数据元素。如所示,一组三个乘法器M00、M01和M02可对应于数据元素P0,并且可分别用于将P0与C0、C1和C2相乘。类似地,一组三个乘法器M10、M11和M12 可对应于数据元素P1,并且可分别用于将P1与C0、C1和C2相乘。可以为其他源数据元素中的每一个采取类似方法。有效地,该一组乘法器单元可以能操作以生成所有可能的独立乘积,由相应标签在图示中示出。如果在边界处的一些乘法器单元不用于特定实现,则可任选地消除它们。
同样如所示,执行单元可具有互连662。互连可与乘法器单元中的每一个的输出耦合。互连可以能操作以基于所实现的特定FIR滤波器将合适的多组乘积路由到合适的紧缩或SIMD路或数据路径。例如,为了实现一个特定示例FIR滤波器,可以将乘积P0C0、P1C1、P2C2、P3C1和P4C0 路由到对应于结果数据元素R0的SIMD路,结果数据元素R0与数据元素P0在相同的相对位位置中。互连可以将单个乘积(例如,P1*C0作为一个示例)路由到多个紧缩或SIMD路,使得单个乘积可以重新用于生成多个经FIR滤波的数据元素而不需要通过乘法生成多次。在一些实施例中,互连和/或路由可适于实现表1-2中所示的不同的FIR滤波器。可以计算某些乘积一次,并且将其路由到多个不同的SIMD路。换言之,可以在多个不同的SIMD路之间共享乘法器和/或它们的乘积。
执行单元还包括专用于对应的向量、紧缩或SIMD路或数据路径的资源664。这些资源与互连的输出耦合以接收合适的多组乘积。这些资源可包括本文别处所述的资源的各种不同的组合,例如,一个或多个加法器单元、可选的移位单元、可选的饱和单元、可选的符号反转单元等,及其各种不同的组合。可任选地使用先前所描述的这些资源的组合中的任一个。这些资源可基本上如本文别处所述地操作。这些资源可输出结果紧缩数据操作数638。
各种不同类型的FIR滤波操作适于本文所公开的紧缩FIR滤波指令。表1列出用于具有四个系数(C0到C3)的紧缩FIR滤波指令的实施例的合适的FIR滤波操作的若干示例。指令可如前所述地指示四个系数。滤波器1具有配置为四个独立抽头的四个系数。滤波器2具有配置为七个对称抽头的四个系数,其中分别对用于抽头2-0的相同系数进行镜像操作并且重新用于抽头4-6。滤波器3具有配置为七个半对称抽头的四个系数,其中分别对用于抽头2-0的相同系数进行求反或符号反转和镜像操作并且重新用于抽头4-6。滤波器4-6分别类似于滤波器1-3,添加利用位移量(N)对输出执行算术右移,位移量(N)可由指令指示。滤波器7具有配置为七个对称抽头的四个系数,其中分别对用于抽头2-0的相同系数进行镜像操作并且重新用于抽头4-6。利用七个对应符号反转控制(S0到S6)将符号反转应用于每个系数或每个乘积,七个对应符号反转控制(S0到S6)可由指令指示。这些符号反转控制或符号值允许编程者或编译器改变系数或乘积中的任一个的符号以实现所期望的FIR滤波器。利用位移量(N)对输出执行算术右移,位移量(N)也可由指令指示。为简单起见,表1所示的滤波操作用于单个经FIR滤波的结果数据元素(R0),但应理解可以执行类似的滤波操作以用于其他经FIR滤波的结果数据元素中的每一个。
表1.四个系数的滤波操作的示例
Figure BDA0001447147170000231
表2列出用于具有三个系数(C0到C2)的紧缩FIR滤波指令的实施例的合适的FIR滤波操作的若干示例。指令可如前所述地指示三个系数。滤波器8具有配置为三个独立抽头的三个系数。滤波器9具有配置为五个对称抽头的三个系数,其中分别对用于抽头1-0的相同系数进行镜像操作并且重新用于抽头3-4。滤波器10具有配置为五个半对称抽头的三个系数,其中分别对用于抽头1-0的相同系数进行求反或符号反转和镜像操作并且重新用于抽头3-4。滤波器11-13分别类似于滤波器8-10,添加利用位移量 (N)对输出执行算术右移,位移量(N)可由指令指示。滤波器14具有配置为五个对称抽头的三个系数,其中分别对用于抽头1-0的相同系数进行镜像操作并且重新用于抽头3-4。利用五个对应符号反转控制(S0到S4) 将符号反转应用于每个系数或每个乘积,五个对应符号反转控制(S0到S4) 可由指令指示。这些符号反转控制或符号值允许编程者或编译器改变系数或乘积中的任一个的符号以实现所期望的FIR滤波器。利用位移量(N)对输出执行算术右移,位移量(N)也可由指令指示。
表2.三个系数的滤波操作的示例
Figure BDA0001447147170000241
为简单起见,表1-2所示的滤波操作用于单个经FIR滤波的结果数据元素(R0),但应理解可以执行类似的滤波操作以用于其他经FIR滤波的结果数据元素中的每一个。还为具有其他数量的系数的紧缩FIR滤波指令构想了其他类似实施例,诸如例如,五个系数、两个系数、一个系数等。
在一些实施例中,可以通过不同指令(例如,不同操作码)实现表1-2 所示的不同FIR滤波器和FIR滤波操作中的每一个。该指令(例如,其操作码)可指示滤波器是否将系数中的每一个用作独立抽头、是否应用对称以及对称模式、是否应用半对称以及模式等。例如,解码单元在对操作码进行解码后可理解,隐含的但未显式指定的对称模式或半对称模式会用于系数。这可有助于减少提供系数所需的编码的量,但这不是必须的。
在其他实施例中,指令可灵活地实现来自表1和/或表2的两个或多个 FIR滤波器和FIR滤波操作。例如,该指令可具有或指示可具有不同值的一组位以在两个或多个不同FIR滤波操作之间灵活地指定或选择。该一组位可以在指令的立即数或其他非操作码的一组位中,或可以在指令所指示的寄存器中,此处仅是列举数例。作为示例,具有给定操作码的四个系数的指令可具有用于指定会以独立系数配置、对称系数配置、对高抽头进行求反的半对称系数配置、还是对低抽头进行求反的半对称系数配置来使用四个系数、以及对这些配置中的每一个是否会对输出执行移位等的字段。构想了是将一个FIR滤波操作专用于一个操作码还是允许一个操作码用于不同FIR滤波操作的许多不同组合。
图7是紧缩FIR滤波操作766的示例实施例的框图,其中基于对每隔一个的或交替的源数据元素的集合的FIR滤波生成对应的经FIR滤波的结果数据元素。作为示例,这在多相FIR滤波中可以是有用的。响应于紧缩 FIR滤波指令的实施例可以执行该操作。该指令可指示一组输入数据元素 729,包括数据元素P0到P9。根据紧缩FIR滤波操作可以生成结果紧缩数据操作数738。
结果紧缩数据操作数包括第一(例如,最低或最高有效的)偶数位置经FIR滤波的结果数据元素R0,R0基于对FIR滤波器抽头数量(NTAPS) 个的(例如,最低或最高有效的)仅偶数位置的数据元素(例如,P0、P2、 P4、P6和P8)进行FIR滤波。经FIR滤波的结果数据元素R0不基于使用奇数位置的源数据元素(例如,P1、P3、P5、P7和P9)执行的FIR滤波。这可以通过跳过抽头之间的像素位置的输入互连或选择网络来实现。
结果紧缩数据操作数还包括第二(例如,次低或次高有效的)奇数位置经FIR滤波的结果数据元素R1,R1基于对FIR滤波器抽头数量(NTAPS) 个的(例如,最低或最高有效的)仅奇数位置的数据元素(例如,P1、P3、 P5、P7和P9)进行FIR滤波。经FIR滤波的结果数据元素R1不基于使用偶数位置的源数据元素(例如,P0、P2、P4、P6和P8)执行的FIR滤波。这可以通过跳过抽头之间的像素位置的输入互连或选择网络来实现。
类似地,其他偶数位置经FIR滤波的结果数据元素可以基于对仅偶数位置的源数据元素进行FIR滤波,并且其他奇数位置经FIR滤波的结果数据元素可以基于对仅奇数位置的源数据元素进行FIR滤波。此类实施例可允许采用稀疏的滤波器。典型地,此类实施例可用于抽取、或交织的平面。此类输入数据布置可与具有各种不同数量的抽头和系数的各种不同类型的滤波器一起使用。其他实施例可更一般地通过采用每N个元素而不是每隔一个的或交替的元素来使用这种多相FIR滤波。
图8是紧缩FIR滤波指令822的示例实施例的实施例的框图。指令包括操作代码或操作码870。该操作码可表示可用于标识指令和/或要执行的操作(例如,紧缩FIR滤波操作)的多个位或者一个或多个字段。如上所述,在一些实施例中,操作码可隐式地指示会在其中使用系数的固定配置 (例如,对称的或半对称的配置),而在其他实施例中,操作码可不指示 (例如,非操作码的一组位可指定或选择配置)。
该指令还包括用于显式地指定第一源紧缩数据操作数的位置的第一源指定字段871、用于显式地指定可选的第二源紧缩数据操作数的位置的可选的第二源指定字段872、用于显式地指定会在其中存储结果紧缩数据操作数的目的地位置的可选的目的地指定字段873。作为示例,这些字段中的每一个可包括寄存器、存储器位置或其它存储位置的地址。替代地,如先前提及的,第一源紧缩数据操作数、第二源紧缩数据操作数、或目的地中的一个或多个的存储位置可任选地对于该指令是隐含的,而不被明确指定。在一个方面中,可任选地使用隐含的源/目的地存储位置。此外,在其他实施例中,该指令可指定单个源操作数,或多于两个。
在一些实施例中,该指令还可具有用于提供多个输入参数的可选的立即数874。在一些实施例中,立即数可提供多个系数和/或位移量和/或符号转换控制中的一个或多个。替代地,输入参数可由指令显式地指定(例如,利用另一源指定字段(未示出))的或对于指令隐含的寄存器或其他存储位置提供。在一些实施例中,该指令可任选地具有用于提供一个或多个附加输入参数的第三源指定字段875。替代地,隐含的寄存器或其他存储位置可任选地用于提供这些附加输入参数。
图示示出可被包括在紧缩FIR滤波指令的实施例中的字段类型的示例。替代的实施例可包括所示字段的子集,或者可添加附加字段。所示的字段次序/安排并非是必须的,相反,字段可被重排列。字段不需要包括连续的位序列,相反可由非连续的或分开的位组成。
图9是紧缩FIR滤波指令的32位操作数978的示例实施例的框图,32 位操作数978可用于提供三个系数(C0到C2)、可选的位移量954和可选的一组符号反转控制980。在一些实施例中,操作数可以是指令的32位立即数。在其他实施例中,可以将操作数存储在指令所指示的32位通用或其他寄存器中。在一些实施例中,可任选地在操作数的不同的对应字节中提供系数中的每一个并且系数中的每一个可以是字节对齐的,这可有助于提供高效的字节访问和可读性。例如,如所示,可以在最低有效字节中提供第一系数C0,可以在第二最低有效字节中提供第二系数C1,并且可以在第三最低有效字节中提供第三系数C2。字节对齐提供优势,但这不是必须的。在所示实施例中,这些系数中的每一个是5位系数,但在其他实施例中系数可具有更少或更多位(例如,通常从4位到8位)。系数可任选地具有本文所述的其他属性(例如,结合系数234),诸如例如,内部浮点格式等。在一些实施例中,相关联的指令(例如,操作码、具有另一字段的操作码等)可指示会如何按照先前描述来使用系数(例如,用作独立系数、按照对称配置使用、按照半对称配置使用)。
如所示,在一些实施例中,操作数还可任选地提供可选的位移量954 和可选的一组符号反转控制980。在所示实施例中,均在操作数的最高有效字节中提供这些。具体地,在最高有效字节的最低有效三位中提供位移量,并且在最高有效字节的最高有效五位中提供一组符号反转控制。用于位移量的三位足以表示从0到7位的范围的位移。一组符号反转控制的五位中的每一个可对应于五个抽头中的不同的一个,并且可用于对于对应的抽头启用或禁用符号反转。在其他实施例中,比五位更少或更多的位可任选地用于一组符号反转控制,并且/或者比三位更少或更多的位可用于位移量。
图10A是紧缩FIR滤波指令的32位操作数1082的示例实施例的框图, 32位操作数1082可用于提供四个系数(C0到C3)。在一些实施例中,操作数可以是指令的32位立即数。在其他实施例中,可以将操作数存储在指令所指示的32位通用或其他寄存器中。在一些实施例中,可任选地在操作数的不同的对应字节中提供系数中的每一个并且系数中的每一个可以是字节对齐的,这可有助于提供高效的字节访问和可读性。例如,如所示,可以在最低有效字节中提供第一系数C0,可以在第二最低有效字节中提供第二系数C1,并且可以在第三最低有效字节中提供第三系数C2,并且可以在最高有效字节中提供第四系数C3。替代地,可在操作数内任选地以各种方式重排这些系数。字节对齐提供优势,但这不是必须的。在所示实施例中,这些系数中的每一个是5位系数,但在其他实施例中系数可具有更少或更多位(例如,通常从4位到8位)。系数可任选地具有本文所述的其他属性(例如,结合系数234),诸如例如,内部浮点格式等。在一些实施例中,相关联的指令(例如,操作码、具有另一字段的操作码等)可指示会如何按照先前描述的使用系数(例如,用作独立系数、按照对称配置使用、按照半对称配置使用)。
图10B是紧缩FIR滤波指令的32位操作数1084的示例实施例的框图, 32位操作数1084可以与图10A的32位操作数一起使用并且可用于提供一个或多个附加输入参数。在一些实施例中,操作数可以是指令所指示的32 位通用或其他寄存器。在所示示例实施例中,操作数任选地提供位移量1054 和可选的符号反转控制1080。如所示,在一些实施例中,可任选地在操作数的不同对应字节中提供输入参数,并且输入参数可以是字节对齐的。字节对齐提供优势,但这不是必须的。如所示,可任选地在最低有效字节中提供位移量,并且可任选地在次低有效字节中提供符号反转控制的5位。在其他实施例中,操作数可任选地省略这些输入参数中的一个或两个和/或可提供其他输入参数(例如,一个或多个附加系数)。
应当理解,图9和10A-B仅示出其中可以在一个或多个32位操作数中提供系数和其他输入参数的数个说明性方式。在其他实施例中,可任选地在一个或多个操作数内以各种方式对系数和其他输入参数进行重排。在另一些实施例中,可任选地省略位移量和符号反转控制中的一个或两个。在其他实施例中,可任选地使用更宽或更窄的操作数,诸如例如,16位操作数、64位操作数等。此外,字段不需要由连续的位序列组成,相反非连续的或分开的位可任选地用于表示系数或其他输入参数。
示例性核架构、处理器和计算机架构
处理器核可以以不同方式、出于不同目的、在不同的处理器中实现。例如,这样的核的实现可以包括:1)旨在用于通用计算的通用有序核;2) 旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核的CPU;以及2)包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这样的不同处理器导致不同的计算机系统架构,其可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器 (在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等的专用逻辑,或被称为专用核);以及4)可以将所描述的CPU (有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上的芯片上系统。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和乱序核框图
图11A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图11B是示出根据本发明的各实施例的要被包括在处理器中的有序架构核的和示例性寄存器重命名的乱序发布/执行架构核的示例性实施例的框图。图11A-B中的实线框示出了有序流水线和有序核,而可选增加的虚线框示出了寄存器重命名的、乱序发布/执行流水线和核。给定有序方面是乱序方面的子集的情况下,将描述乱序方面。
在图11A中,处理器流水线1100包括取出级1102、长度解码级1104、解码级1106、分配级1108、重命名级1110、调度(也称为分派或发布)级 1112、寄存器读取/存储器读取级1114、执行级1116、写回/存储器写入级 1118、异常处理级1122以及提交级1124。
图11B示出了包括耦合到执行引擎单元1150的前端单元1130的处理器核1190,且执行引擎单元和前端单元两者都耦合到存储器单元1170。核 1190可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,核1190可以是专用核,诸如例如网络或通信核、紧缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核、等等。
前端单元1130包括耦合至指令高速缓存单元1134的分支预测单元 1132,指令高速缓存单元1134耦合至指令转换后备缓冲器(TLB)1136,指令转换后备缓冲器1136耦合至指令取出单元1138,指令取出单元1138 耦合至解码单元1140。解码单元1140(或解码器)可解码指令,并生成从原始指令解码出的、或以其它方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其它指令、或其它控制信号作为输出。解码单元1140可使用各种不同的机制来实现。合适的机制的示例包括但不仅限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等等。在一个实施例中,核1190包括(例如,在解码单元1140中或以其他方式在前端单元1130内的)用于存储某些宏指令的微代码的微代码ROM或其他介质。解码单元1140耦合至执行引擎单元 1150中的重命名/分配器单元1152。
执行引擎单元1150包括耦合至引退单元1154的重命名/分配器单元 1152以及一组一个或多个调度器单元1156。调度器单元1156表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元1156耦合到物理寄存器堆单元1158。每个物理寄存器堆单元1158表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器堆单元1158包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器堆单元1158与引退单元1154重叠以示出可以用来实现寄存器重命名和乱序执行的各种方式(例如,使用重排序缓冲器和引退寄存器堆;使用将来的文件、历史缓冲器和引退寄存器堆;使用寄存器映射和寄存器池等等)。引退单元1154和物理寄存器堆单元1158耦合到执行群集1160。执行群集1160包括一组一个或多个执行单元1162和一组一个或多个存储器访问单元1164。执行单元1162可以对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能组的数个执行单元,但是其他实施例可以仅包括一个执行单元或全部都执行所有功能的多个执行单元。调度器单元1156、物理寄存器堆单元1158和执行群集1160被示为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,各自具有其自身的调度器单元、物理寄存器堆单元和/或执行群集的标量整数流水线、标量浮点/ 紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线——以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集具有存储器访问单元1164的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行的,而其余的是有序的。
存储器访问单元1164的集合耦合到存储器单元1170,该存储器单元包括耦合到数据高速缓存单元1174的数据TLB单元1172,其中数据高速缓存单元耦合到第2级(L2)高速缓存单元1176。在一个示例性实施例中,存储器访问单元1164可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元1170中的数据TLB单元1172。指令高速缓存单元1134还耦合到存储器单元1170中的第二级(L2)高速缓存单元 1176。L2高速缓存单元1176被耦合到一个或多个其他级的高速缓存,并最终被耦合到主存储器。
作为示例,示例性寄存器重命名的、乱序发布/执行核架构可以如下实现流水线1100:1)指令取出1138执行取出和长度解码级1102和1104;2) 解码单元1140执行解码级1106;3)重命名/分配器单元1152执行分配级 1108和重命名级1110;4)调度器单元1156执行调度级1112;5)物理寄存器堆单元1158和存储器单元1170执行寄存器读取/存储器读取级1114;执行群集1160执行执行级1116;6)存储器单元1170和物理寄存器堆单元1158 执行写回/存储器写入级1118;7)各单元可牵涉到异常处理级1122;以及 8)引退单元1154和物理寄存器堆单元1158执行提交级1124。
核1190可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的 MIPS指令集;加利福尼州桑尼维尔市的ARM控股的ARM指令集(具有诸如NEON等可选附加扩展)),其中包括本文中描述的各指令。在一个实施例中,核1190包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2) 的逻辑,进而允许由许多多媒体应用使用的操作通过使用紧缩数据来执行。
应当理解,核可以支持多线程操作(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程操作,各种方式包括时分多线程操作、同步多线程操作(其中,单个物理核为物理核正在同步进行多线程操作的多个线程中的每一个线程提供逻辑核)或其组合(例如,时分取出和解码以及此后诸如利用
Figure BDA0001447147170000321
超线程技术的同步多线程操作)。
尽管在乱序执行的上下文中描述了寄存器重命名,但是,应当理解,寄存器重命名可以用于有序架构中。尽管所示出的处理器的实施例还包括分开的指令和数据高速缓存单元1134/1174以及共享L2高速缓存单元1176,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如第1级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,系统可以包括内部高速缓存以及在核和/或处理器外部的外部高速缓存的组合。或者,全部高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图12A-B示出更具体的示例性有序核架构的框图,该核将是芯片中的多个逻辑块中的一个(包括相同类型和/或不同类型的其他核)。根据应用,这些逻辑块通过高带宽的互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信。
图12A是根据本发明的各实施例的单个处理器核以及它与管芯上互连网络1202的连接及其第2级(L2)高速缓存的本地子集1204的框图。在一个实施例中,指令解码器1200支持具有紧缩数据指令集扩展的x86指令集。 L1高速缓存1206允许对进入标量和向量单元中的高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元1208和向量单元1210使用分开的寄存器集合(分别为标量寄存器11212和向量寄存器1214),并且在这些寄存器之间转移的数据被写入到存储器并随后从第一级 (L1)高速缓存1206读回,但是本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在这两个寄存器堆之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集1204是全局L2高速缓存的一部分,该全局 L2高速缓存被划分成多个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己的L2高速缓存的本地子集1204的直接访问路径。被处理器核读出的数据被存储在其L2高速缓存子集1204中,并且可以与其它处理器核访问其自己的本地L2高速缓存子集并行地被快速访问。被处理器核写入的数据被存储在其自己的L2高速缓存子集1204中,并在必要的情况下从其它子集转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图12B是根据本发明的实施例的图12A中的处理器核的一部分的展开图。图12B包括L1高速缓存1204的L1数据高速缓存1206A部分,以及关于向量单元1210和向量寄存器1214的更多细节。具体地说,向量单元 1210是16宽向量处理单元(VPU)(见16宽ALU 1228),该单元执行整型、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元1220支持对寄存器输入的混合、通过数值转换单元1222A-B支持数值转换、并通过复制单元1224支持对存储器输入的复制。写掩码寄存器1226允许断言所得的向量写入。
具有集成存储器控制器和图形器件的处理器
图13是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器1300的框图。图13中的实线框示出具有单个核1302A、系统代理1310、一个或多个总线控制器单元 1316的集合的处理器1300,而虚线框的可选附加示出具有多个核1302A-N、系统代理单元1310中的一个或多个集成存储器控制器单元1314的集合以及专用逻辑1308的替代处理器1300。
因此,处理器1300的不同实现可包括:1)CPU,其中专用逻辑1308 是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核 1302A-N是一个或多个通用核(例如,通用的有序核、通用的乱序核、这两者的组合);2)协处理器,其中核1302A-N是旨在主要用于图形和/或科学(吞吐量)的多个专用核;以及3)协处理器,其中核1302A-N是多个通用有序核。因此,处理器1300可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、紧缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器1300 可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个工艺技术中的任何一个技术将该处理器实现在一个或多个衬底上。
存储器层次结构包括核内的一个或多个层级的高速缓存、一组或一个或多个共享高速缓存单元1306以及耦合到集成存储器控制器单元1314的集合的外部存储器(未示出)。共享高速缓存单元1306的集合可以包括一个或多个中级高速缓存,诸如,第2级(L2)、第3级(L3)、第4级(L4),或其他层级的高速缓存,末级高速缓存(LLC),和/或上述各项的组合。尽管在一个实施例中,基于环的互连单元1312将集成图形逻辑1308、共享高速缓存单元1306的集合以及系统代理单元1310/集成存储器控制器单元 1314互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,可以维护一个或多个高速缓存单元1306和核1302-A-N 之间的一致性。
在一些实施例中,核1302A-N中的一个或多个能够实现多线程操作。系统代理1310包括协调并操作核1302A-N的那些组件。系统代理单元1310 可包括例如功率控制单元(PCU)和显示单元。PCU可以是或可包括用于调节核1302A-N和集成图形逻辑1308的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个从外部连接的显示器。
核1302A-N在架构指令集方面可以是同构的或异构的;即,这些核 1302A-N中的两个或更多个核可能能够执行相同的指令集,而其它核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图14-21是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其它电子设备的其它系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其它执行逻辑的多个系统或电子设备一般都是合适的。
现在参见图14,所示是根据本发明的一个实施例的系统1400的框图。系统1400可以包括一个或多个处理器1410、1415,这些处理器耦合到控制器中枢1420。在一个实施例中,控制器中枢1420包括图形存储器控制器中枢(GMCH)1490和输入/输出中枢(IOH)1450(其可以在分开的芯片上); GMCH 1490包括存储器和图形控制器,存储器1440和协处理器1445耦合到该存储器和图形控制器;IOH 1450将输入/输出(I/O)设备1460耦合到 GMCH1490。可替代地,存储器和图形控制器中的一个或两个在处理器(如本文中所描述的)内集成,存储器1440和协处理器1445直接耦合到处理器1410、以及在单一芯片中具有IOH 1450的控制器中枢1420。
在图14中以虚线表示附加的处理器1415的可选的性质。每一个处理器1410、1415可包括本文中描述的处理核中的一个或多个,并且可以是处理器1300的某一版本。
存储器1440可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1420经由诸如前端总线(FSB)之类的多分支总线、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1495与处理器1410、1415进行通信。
在一个实施例中,协处理器1445是专用处理器,诸如例如高吞吐量 MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控制器中枢1420可以包括集成图形加速器。
在物理资源1410、1415之间会存在包括架构、微架构、热、和功耗特征等的一系列品质度量方面的各种差异。
在一个实施例中,处理器1410执行控制一般类型的数据处理操作的指令。协处理器指令可嵌入在这些指令中。处理器1410将这些协处理器指令识别为应当由附连的协处理器1445执行的类型。因此,处理器1410在协处理器总线或者其它互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1445。协处理器1445接受并执行所接收的协处理器指令。
现在参见图15,所示是根据本发明的实施例的第一更具体的示例性系统1500的框图。如图15所示,多处理器系统1500是点对点互连系统,并且包括经由点对点互连1550耦合的第一处理器1570和第二处理器1580。处理器1570和1580中的每一个都可以是处理器1300的某一版本。在本发明的一个实施例中,处理器1570和1580分别是处理器1410和1415,而协处理器1538是协处理器1445。在另一实施例中,处理器1570和1580分别是处理器1410和协处理器1445。
处理器1570和1580被示为分别包括集成存储器控制器(IMC)单元 1572和1582。处理器1570还包括点对点(P-P)接口1576和1578作为其总线控制器单元的部分;类似地,第二处理器1580包括P-P接口1586和 1588。处理器1570、1580可以经由使用点对点(P-P)接口电路1578、1588 的P-P接口1550来交换信息。如图15所示,IMC 1572和1582将处理器耦合至相应的存储器,即,存储器1532和存储器1534,它们可以是本地连接到相应的处理器的主存储器的部分。
处理器1570、1580可各自使用点对点接口电路1576、1594、1586、 1598经由各个P-P接口1552、1554与芯片组1590交换信息。芯片组1590 可任选地经由高性能接口1539与协处理器1538交换信息。在一个实施例中,协处理器1538是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在两个处理器的外部但经由P-P互连与这些处理器连接,从而如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在该共享的高速缓存中。
芯片组1590可经由接口1596耦合至第一总线1516。在一个实施例中,第一总线1516可以是外围组件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。
如图15所示,各种I/O设备1514可以连同总线桥1518被耦合至第一总线1516,总线桥1518将第一总线1516耦合至第二总线1520。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器之类的一个或多个附加处理器1515耦合到第一总线 1516。在一个实施例中,第二总线1520可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合到第二总线1520,各种设备包括例如,键盘和/或鼠标1522、通信设备1527以及存储单元1528,存储单元1528 诸如,可包括指令/代码和数据1530的磁盘驱动器或其他大容量存储设备。此外,音频I/O 1524可以被耦合至第二总线1520。注意,其他架构是可能的。例如,系统可实现多分支总线或者其他此类架构,而不是图15中的点对点架构。
现在参考图16,所示为根据本发明的实施例的更具体的第二示例性系统1600的框图。图15和图16中的相同部件用相同附图标记表示,并从图 16中省去了图15中的某些方面,以避免使图16的其它方面变得模糊。
图16示出处理器1570、1580可分别包括集成存储器和I/O控制逻辑 (“CL”)1572和1582。因此,CL 1572、1582包括集成存储器控制器单元并包括I/O控制逻辑。图16示出不仅存储器1532、1534耦合到CL 1572、 1582,而且I/O设备1614也耦合到控制逻辑1572、1582。传统I/O设备1615 被耦合至芯片组1590。
现在参照图17,所示出的是根据本发明一个实施例的SoC 1700的框图。图13中相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC 的可选特征。在图17中,互连单元1702被耦合至:应用处理器1710,该应用处理器包括一个或多个核162A-N的集合以及共享高速缓存单元1306;系统代理单元1310;总线控制器单元1316;集成存储器控制器单元1314;一组或一个或多个协处理器1720,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1730;直接存储器存取(DMA)单元1732;以及用于耦合至一个或多个外部显示器的显示单元1740。在一个实施例中,协处理器1720包括专用处理器,诸如例如网络或通信处理器、紧缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如图15中示出的代码1530)应用于输入指令,以执行本文描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。可将被称为“IP核”的此类表示存储在有形的机器可读介质上,并将其提供给各种客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态的有形安排,其包括存储介质,诸如,硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的各实施例还包括非暂态有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
仿真(包括二进制变换、代码变形等)
在一些情形下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图18是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图18示出可以使用x86编译器1804 来编译高级语言1802形式的程序以生成可由具有至少一个x86指令集核的处理器1816原生地执行的x86二进制代码1806。具有至少一个x86指令集核的处理器1816表示能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:(1)英特尔x86指令集核的指令集的本质部分,或(2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以实现与具有至少一个 x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1804表示用于生成x86二进制代码1806(例如,目标代码)的编译器,该x86二进制代码1806可利用或不利用附加的链接处理而在具有至少一个x86指令集核的处理器1816上执行。类似地,图18示出可以使用替代的指令集编译器1808来编译高级语言1802的程序以生成可由不具有至少一个x86指令集核的处理器1814(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集和/或执行加利福尼州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生地执行的替代的指令集二进制代码1810。指令转换器1812用于将x86二进制代码 1806转换成可以由不具有x86指令集核的处理器1814原生地执行的代码。该转换后的代码不大可能与替代的指令集二进制代码1810相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成通用操作,并且将由来自替代指令集的指令构成。因此,指令转换器1812表示软件、固件、硬件或它们的组合,这些软件、固件、硬件或它们的组合通过仿真、模拟或任何其他过程允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1806。
也可以可选地将针对图4-10和表1-2中任意一个所描述的组件、特征和细节应用于图2-3中的任意一个。此外,针对任一装置所描述的组件、特征、以及细节还可任选地应用于在实施例中可由这种装置和/或使用这种装置执行的任一方法中。可将本文所述的处理器中的任意一个包括在本文所公开的系统中的任意一个中(例如,图14-17)。在一些实施例中,该计算机系统可包括互连、与该互连耦合的处理器以及与该互连耦合的动态随机存取存储器(DRAM)。或者,替代DRAM,可使用不需要被刷新的其他类型的易失性存储器,或者可使用闪存。
在说明书和权利要求中,可能使用了术语“耦合的”和/或“连接的”及其派生词。这些术语不旨在互为同义词。相反,在多个实施例中,“连接的”可以用于指示两个或更多元件彼此直接物理和/或电接触。“耦合的”可意味着两个或更多个元件彼此直接物理和/或电接触。然而,“耦合的”也可意味着两个或更多个元件并未彼此直接接触,但是仍然彼此协作或彼此作用。例如,执行单元可通过一个或多个中间组件与寄存器和/或解码单元耦合。在附图中,箭头用于示出连接和耦合。
可能已使用了术语“和/或”。如本文中所使用的那样,术语“和/或”意思是一个或另一个或两者(例如,A和/或B意思是:A或B,或者A和B两者)。
在以上描述中,为了提供对实施例的透彻理解,已阐述了特定的细节。然而,可以在没有这些特定细节中的一些的情况下来实践其他实施例。本发明的范围不是由以上所提供的具体示例来确定的,而仅由所附权利要求确定。在其他实例中,已经以框图形式和/或没有细节的形式示出了公知的电路、结构、设备和操作,以避免使对说明书的理解变得模糊。在认为合适的地方,已在诸附图之间重复了附图标记或附图标记的结尾部分以指示可能可选地具有类似或相同特性的对应或类似的元件,除非另外指定或是显而易见的。
某些操作可由硬件组件执行,或者能以机器可执行或电路可执行指令来具体化,这些机器可执行指令或电路可执行指令可用于使得和/或者导致机器、电路、或硬件组件(例如,处理器、处理器的部分、电路等)利用执行这些操作的指令来编程。这些操作还可任选地由硬件和软件的组合执行。处理器、机器、电路或硬件可包括专用或特定电路或其他逻辑(例如,可能与固件和/或软件组合的硬件),该专用或特定电路或其他逻辑用于执行和/或处理指令,并且响应于该指令而存储结果。
一些实施例包括制品(例如,计算机程序产品),所述制品包括机器可读介质。该介质可包括以机器可读形式提供(例如,存储)信息的机制。机器可读介质可提供或在其上存储有指令或指令序列,如果和/或当由机器执行所述指令或指令序列时,所述指令或指令序列可用于使所述机器执行和/ 或导致所述机器执行本文中所公开的一种或多种操作、方法或技术。
在一些实施例中,机器可读介质可包括非暂态机器可读存储介质。例如,非暂态机器可读存储介质可包括,软盘、光存储介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM (PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态 RAM(DRAM)、闪存、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储设备、非暂态存储器、或非暂态数据存储设备等。非暂态机器可读存储介质不由暂态传播的信号组成。在一些实施例中,存储介质可包括:包含固态物质的有形介质。
合适机器的示例包括但不限于,通用处理器、专用处理器、数字逻辑电路、集成电路等。合适的机器的另一些示例包括,包含处理器、数字逻辑电路或集成电路的计算机系统或其他电子设备。此类计算机系统或电子设备的示例包括但不限于,台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动互联网设备(MID)、媒体播放器、智能电视、上网机、机顶盒和视频游戏控制器。
例如,贯穿本说明书对“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的引用指示特定特征可被包括在本发明的实施中,但是不一定需要这样。类似地,在该描述中,为了使本公开流畅并辅助对各个发明性方面的理解,有时将各种特征一起归组在单个实施例、附图或对它们的描述中。然而,不应当将该公开方法解释为反映本发明需要比每项权利要求中所明确记载的更多特征的意图。相反,如所附权利要求所反映,发明性方面在于少于单个的公开实施例的所有特征。因此,将遵循具体实施方式的各项权利要求明确地结合进该具体实施方式,每一项权利要求独立地作为本发明单独的实施例而存在。
示例实施例
以下示例关于进一步的实施例。这些示例中的细节可以在一个或多个实施例中的任何地方被使用。
示例1是一种包括用于解码紧缩有限冲激响应(FIR)滤波指令的解码单元的处理器或其他装置。紧缩FIR滤波指令用于指示一个或多个源紧缩数据操作数、多个FIR滤波系数和目的地存储位置。一个或多个源紧缩数据操作数用于包括第一数量的数据元素和第二数量的附加数据元素,其中第二数量比FIR滤波器抽头的数量少一。处理器还包括与解码单元耦合的执行单元。执行单元用于响应于紧缩FIR滤波指令被解码单元解码,将结果紧缩数据操作数存储在目的地存储位置中。结果紧缩数据操作数用于包括第一数量的经FIR滤波的数据元素,经FIR滤波的数据元素中的每一个基于多个FIR滤波系数与来自一个或多个源紧缩数据操作数的数据元素的不同的对应集合的多个乘积的组合,数据元素的不同的对应集合在数量上等于FIR滤波器抽头的数量。
示例2包括示例1的处理器,其中任选地,解码单元用于对指令进行解码,指令用于指示具有跨越第一源紧缩数据操作数的全部宽度的第一数量的数据元素的第一源紧缩数据操作数,并且用于指示具有在第二源紧缩数据操作数的一端组合在一起的第二数量的附加数据元素的第二源紧缩数据操作数。
示例3包括示例1的处理器,其中执行单元用于存储结果紧缩数据操作数,其中经FIR滤波的数据元素中的每一个会基于多个乘积的组合,其中数据元素的不同的对应集合的每个数据元素已经与FIR滤波系数中的不同的一个相乘。
示例4包括示例1的处理器,其中执行单元用于存储结果紧缩数据操作数,其中经FIR滤波的数据元素中的每一个会基于多个乘积的组合,其中数据元素的不同的对应集合的至少两个数据元素各自已经与相同的FIR 滤波系数相乘。
示例5包括示例7的处理器,其中解码单元用于对指令进行解码,指令用于指示多个符号值。执行单元用于存储结果紧缩数据操作数,其中经 FIR滤波的数据元素中的每一个会基于多个乘积的组合,其中多个符号值中的一个符号值被应用以对至少两个数据元素中的第一个数据元素与相同的 FIR滤波系数相乘的乘积进行求反。多个符号值中没有符号值被应用以对至少两个数据元素中的第二个数据元素与相同的FIR滤波系数相乘的乘积进行求反。
示例6包括示例1的处理器,其中解码单元用于对指令进行解码,指令用于指示等于FIR滤波器抽头的数量的多个符号值。执行单元用于存储结果紧缩数据操作数,其中经FIR滤波的数据元素中的每一个会基于多个乘积的组合,其中符号值中的不同的一个已经被应用到多个乘积中的每一个。
示例7包括示例1的处理器,其中结果紧缩数据操作数中的最低和最高有效的经FIR滤波的数据元素中的一个会基于多个FIR滤波系数与数据元素的不同的对应集合的多个乘积的组合,数据元素的不同的对应集合由数量为FIR滤波器抽头的第一源紧缩数据操作数中的最低和最高有效的数据元素中的所述一个组成。
示例8包括示例1的处理器,其中结果紧缩数据操作数中的最低和最高有效的经FIR滤波的数据元素中的一个会基于多个FIR滤波系数与数据元素的不同的对应集合的多个乘积的组合,数据元素的不同的对应集合由数量为FIR滤波器抽头的第一源紧缩数据操作数中的最低和最高有效的偶数位置的数据元素中的所述一个组成。
示例9包括示例8的处理器,其中与结果紧缩数据操作数中的最低和最高有效的经FIR滤波的数据元素中的所述一个相邻的经FIR滤波的数据元素会基于多个FIR滤波系数与数据元素的不同的对应集合的多个乘积的组合,数据元素的不同的对应集合由数量为FIR滤波器抽头的第一源紧缩数据操作数中的最低和最高有效的奇数位置的数据元素中的所述一个组成。
示例10包括示例1的处理器,其中至少一个FIR滤波系数用于FIR滤波器抽头中的两个,并且其中执行单元包括数量不多于第一数量与第二数量的和与FIR滤波系数的数量的乘积的多个乘法器。
示例11包括示例1的处理器,其中执行单元用于存储结果紧缩数据操作数,其中多个经FIR滤波的数据元素会基于FIR滤波系数与一个或多个源紧缩数据操作数中的给定的数据元素的单个乘积,单个乘积用来重新用于多个经FIR滤波的数据元素中的每一个而不需要通过乘法生成多次。
示例12包括示例1的处理器,其中执行单元包括给定的乘法器,给定的乘法器用于将FIR滤波系数与一个或多个源紧缩数据操作数中的数据元素相乘以生成乘积。执行单元用于存储多个经FIR滤波的数据元素,多个经FIR滤波的数据元素各自基于乘积与对乘积的求反的组合。
示例13包括示例1的处理器,其中紧缩FIR滤波指令具有操作码,操作码用于指示对称和半对称配置中的一个,对称和半对称配置中的一个用于生成多个FIR滤波系数与数据元素的不同的对应集合中的每一个的多个乘积。
示例14包括示例1至13中的任一项所述的处理器,其中解码单元用于对指令进行解码,指令用于指示具有少于16位的浮点格式的多个FIR滤波系数。
示例15包括示例1至13中的任一项所述的处理器,其中解码单元用于对指令进行解码,指令用于指示至少三个FIR滤波系数,但是少于第一数量。
示例16包括示例1至13中的任一项所述的处理器,其中解码单元用于对指令进行解码,指令用于指示至少四个FIR滤波系数,但是少于第一数量。
示例17包括示例1至13中的任一项所述的处理器,其中解码单元用于对指令进行解码,指令用于指示用来具有FIR滤波系数的操作数。FIR 滤波系数中的每一个用来被存储在操作数的不同的字节对齐的边界中。
示例18包括示例1至13中的任一项所述的处理器,其中解码单元用于对指令进行解码,指令用于具有用于提供多个FIR滤波系数的立即数或用于指示用于存储多个FIR滤波系数的标量寄存器。
示例19包括示例1至13中的任一项所述的处理器,其中解码单元用于对指令进行解码,指令用于指示位移量。执行单元用于存储结果紧缩数据操作数,其中经FIR滤波的数据元素中的每一个会基于对多个乘积的组合的基于位移量的移位。
示例20是一种处理器中的方法,包括接收紧缩有限冲激响应(FIR) 滤波指令。紧缩FIR滤波指令指示一个或多个源紧缩数据操作数、多个FIR 滤波系数和目的地存储位置。一个或多个源紧缩数据操作数包括第一数量的数据元素和第二数量的附加数据元素,其中第二数量比FIR滤波器抽头的数量少一。该方法还包括响应于紧缩FIR滤波指令将结果紧缩数据操作数存储在目的地存储位置中。结果紧缩数据操作数包括第一数量的经FIR 滤波的数据元素。经FIR滤波的数据元素中的每一个基于多个FIR滤波系数与来自一个或多个源紧缩数据操作数的数据元素的不同的对应集合的多个乘积的组合,数据元素的不同的对应集合在数量上等于FIR滤波器抽头的数量。
示例21包括示例20的方法,其中接收包括接收指令,指令指示各自具有少于12位的浮点格式的多个FIR滤波系数。
示例22包括示例20至21中的任一项所述的方法,其中接收包括接收指令,指令指示具有在操作数的不同的字节对齐的边界中的FIR滤波系数中的每一个的操作数。
示例23包括示例20至22中的任一项所述的方法,其中接收包括接收指令,指令指示具有跨越第一源紧缩数据操作数的全部宽度的第一数量的数据元素的第一源紧缩数据操作数,并且指示具有在第二源紧缩数据操作数的一端组合在一起的第二数量的附加数据元素的第二源紧缩数据操作数。
示例24包括示例20至22中的任一项所述的方法,其中存储包括存储结果紧缩数据操作数,其中经FIR滤波的数据元素中的每一个会基于多个乘积的组合,其中数据元素的不同的对应集合的两个数据元素各自已经与相同的FIR滤波系数相乘。
示例25包括示例20至22中的任一项所述的方法,其中存储包括存储结果紧缩数据操作数,其中经FIR滤波的数据元素中的每一个会基于多个乘积的组合,其中数据元素的不同的对应集合的两个数据元素各自已经与相同的FIR滤波系数相乘但仅对两个乘积中的一个求反。
示例26包括系统,其用于处理多条指令,系统包括互连和与互连耦合的处理器。处理器用于接收紧缩有限冲激响应(FIR)滤波指令,紧缩FIR 滤波指令用于指示第一源紧缩数据操作数、第二源紧缩数据操作数、多个 FIR滤波系数和目的地存储位置。第一源紧缩数据操作数用于包括第一数量的数据元素,并且第二源紧缩数据操作数用于包括第二数量的附加数据元素。第二数量比FIR滤波器抽头的数量少一。存在比第一和第二数量的数据元素更少的FIR滤波系数,并且每个FIR滤波系数具有比每个数据元素更少的位。处理器用于响应于紧缩FIR滤波指令,将结果紧缩数据操作数存储在目的地存储位置中。结果紧缩数据用于包括第一数量的经FIR滤波的数据元素。经FIR滤波的数据元素中的每一个会基于多个FIR滤波系数与来自一个或多个源紧缩数据操作数的数据元素的不同的对应集合的多个乘积的组合,数据元素的不同的对应集合在数量上等于FIR滤波器抽头的数量。系统还包括与互连耦合的动态随机存取存储器(DRAM)。
示例27包括示例26的系统,其中每个系数具有少于8位,并且用来被存储在会由紧缩FIR滤波指令指示的操作数的不同字节中。任选地,每个系数可具有浮点格式。
示例28是包括非瞬态机器可读存储介质的制品,非瞬态机器可读存储介质存储紧缩有限冲激响应(FIR)滤波指令。紧缩FIR滤波指令用于指示第一源紧缩数据操作数、第二源紧缩数据操作数、多个FIR滤波系数和目的地存储位置。第一源紧缩数据操作数用于包括第一数量的数据元素,并且第二源紧缩数据操作数包括第二数量的附加数据元素,第二数量比FIR 滤波器抽头的数量少一。存在比第一和第二数量的数据元素更少的FIR滤波系数,并且每个FIR滤波系数具有比每个数据元素更少的位。如果由机器执行紧缩FIR滤波指令,则该指令用于使该机器执行多个操作,这些操作包括将结果紧缩数据存储在目的地存储位置中。结果紧缩数据用于包括第一数量的经FIR滤波的数据元素。经FIR滤波的数据元素中的每一个会基于多个FIR滤波系数与来自一个或多个源紧缩数据操作数的数据元素的不同的对应集合的多个乘积的组合,数据元素的不同的对应集合在数量上等于FIR滤波器抽头的数量。
示例29包括示例28的制品,其中每个系数具有少于8位,并且用来被存储在会由紧缩FIR滤波指令指示的操作数的不同字节中。任选地,每个系数可具有浮点格式。
示例30是处理器或其他装置,用于执行或能操作以执行示例20至25 中的任一项所述的方法。
示例31是处理器或其他设备,其包括用于执行示例20至25中的任一项所述的方法的装置。
示例32是处理器,其包括用于执行示例20至25中的任一项所述的方法的模块和/或单元和/或逻辑和/或电路和/或装置的任何组合。
示例33是制品,其包括可选的非瞬态机器可读介质,该非瞬态机器可读介质可选地存储或以其他方式提供指令,如果和/或当由处理器、计算机系统、电子设备或其他机器执行该指令时,该指令能操作以使该机器执行示例20至25中的任一项所述的方法。
示例34是计算机系统或其他电子设备,包括总线或其他互连,示例1 至19中的任一项的处理器与互连耦合,并且一个或多个组件与互连耦合,一个或多个组件从以下选出:可选的动态随机存取存储器(DRAM),可选的静态RAM,可选的闪存,可选的图形控制器或芯片,可选的视频卡,可选的无线通信芯片,可选的无线收发机,可选的全球移动通信系统(GSM) 天线,可选的协处理器(例如,CISC协处理器),可选的音频设备,可选的音频输入设备,可选的音频输出设备,可选的视频输入设备(例如,视频相机),可选的网络接口,可选的通信接口,可选的持续存储器(例如,可选的相变存储器、忆阻器等等),及其组合。
示例35是基本上如本文中所述的处理器或其他装置。
示例36是能操作以执行基本上如本文中所述的任意方法的处理器或其他装置。
示例37是处理器或其他装置,用于执行(例如,具有组件以执行或能操作以执行)基本上如本文中所述的任何FIR滤波指令。
示例38是计算机系统或其他电子设备,其包括具有用于对第一指令集中的指令进行解码的解码单元的处理器。处理器还具有一个或多个执行单元。电子设备还包括与处理器耦合的存储设备。存储设备用于存储紧缩FIR 滤波指令,该指令属于第二指令集。该存储设备还用于存储指令,以便将紧缩FIR滤波指令转换为第一指令集中的一条或多条指令。当由处理器执行第一指令集中的该一条或多条指令时,这些指令用来使该处理器存储由紧缩FIR滤波指令指定的结果。
示例39包括示例1的处理器,包括:用于预测分支的分支预测单元;与分支预测单元耦合的指令预取单元,指令预取单元用于预取包括紧缩FIR 滤波指令的指令;与指令预取单元耦合的第1级(L1)指令高速缓存,L1 指令高速缓存用于存储指令;用于存储数据的L1数据高速缓存;用于存储数据和指令的第2级(L2)高速缓存;与解码单元、L1指令高速缓存以及 L2高速缓存耦合的指令取出单元,用于从L1指令高速缓存与L2高速缓存中的一个取出紧缩FIR滤波指令,并且将紧缩FIR滤波指令提供给解码单元;用于重命名寄存器的寄存器重命名单元;用于调度已经从紧缩FIR滤波指令解码的一个或多个操作以供执行的调度器;以及提交单元。

Claims (25)

1.一种处理器,包括:
解码单元,用于对紧缩有限冲激响应FIR滤波指令进行解码,所述紧缩FIR滤波指令用于指示一个或多个源紧缩数据操作数、多个FIR滤波系数和目的地存储位置,所述一个或多个源紧缩数据操作数用于包括第一数量的数据元素和第二数量的附加数据元素,所述第二数量比FIR滤波器抽头的数量少一;以及
执行单元,与所述解码单元耦合,所述执行单元用于响应于所述紧缩FIR滤波指令被所述解码单元解码,将结果紧缩数据操作数存储在所述目的地存储位置中,所述结果紧缩数据操作数用于包括所述第一数量的经FIR滤波的数据元素,所述经FIR滤波的数据元素中的每一个基于所述多个FIR滤波系数与来自所述一个或多个源紧缩数据操作数的数据元素的不同的对应集合的多个乘积的组合,所述数据元素的不同的对应集合在数量上等于所述FIR滤波器抽头的数量,
其中,所述解码单元用于对所述指令进行解码,所述指令用于指示多个符号值,并且其中所述执行单元用于存储所述结果紧缩数据操作数,其中所述经FIR滤波的数据元素中的每一个会基于所述多个乘积的组合,其中所述多个乘积中的至少一个会被应用所述多个符号值中的一个符号值以改变至少一个乘积的符号。
2.如权利要求1所述的处理器,其特征在于,所述解码单元用于对所述指令进行解码,所述指令用于指示具有跨越第一源紧缩数据操作数的全部宽度的所述第一数量的数据元素的第一源紧缩数据操作数,并且用于指示具有在第二源紧缩数据操作数的一端组合在一起的所述第二数量的附加数据元素的第二源紧缩数据操作数。
3.如权利要求1所述的处理器,其特征在于,所述执行单元用于存储所述结果紧缩数据操作数,其中所述经FIR滤波的数据元素中的每一个会基于所述多个乘积的组合,其中所述数据元素的不同的对应集合的每个数据元素已经与所述FIR滤波系数中的不同的一个相乘。
4.如权利要求1所述的处理器,其特征在于,所述执行单元用于存储所述结果紧缩数据操作数,其中所述经FIR滤波的数据元素中的每一个会基于所述多个乘积的组合,其中所述数据元素的不同的对应集合的至少两个数据元素各自已经与相同的FIR滤波系数相乘。
5.如权利要求1所述的处理器,其特征在于,所述解码单元用于对所述指令进行解码,所述指令用于指示多个符号值,并且其中所述执行单元用于存储所述结果紧缩数据操作数,其中所述经FIR滤波的数据元素中的每一个会基于所述多个乘积的组合,其中所述数据元素的不同的对应集合的至少两个数据元素各自已经与相同的FIR滤波系数相乘,其中所述多个符号值中的一个符号值被应用以对所述至少两个数据元素中的第一个数据元素与所述相同的FIR滤波系数相乘的乘积进行求反,但所述多个符号值中没有符号值被应用以对所述至少两个数据元素中的第二个数据元素与所述相同的FIR滤波系数相乘的乘积进行求反。
6.如权利要求1所述的处理器,其特征在于,所述解码单元用于对所述指令进行解码,所述指令用于指示等于所述FIR滤波器抽头的数量的多个符号值,并且其中所述执行单元用于存储所述结果紧缩数据操作数,其中所述经FIR滤波的数据元素中的每一个会基于所述多个乘积的组合,其中所述符号值中的不同的一个已经被应用到所述多个乘积中的每一个。
7.如权利要求1所述的处理器,其特征在于,所述结果紧缩数据操作数中的最低和最高有效的经FIR滤波的数据元素中的一个会基于所述多个FIR滤波系数与所述数据元素的不同的对应集合的多个乘积的组合,所述数据元素的不同的对应集合由数量为所述FIR滤波器抽头的第一源紧缩数据操作数中的最低和最高有效的数据元素中的所述一个组成。
8.如权利要求1所述的处理器,其特征在于,所述结果紧缩数据操作数中的最低和最高有效的经FIR滤波的数据元素中的一个会基于所述多个FIR滤波系数与所述数据元素的不同的对应集合的多个乘积的组合,所述数据元素的不同的对应集合由数量为所述FIR滤波器抽头的第一源紧缩数据操作数中的最低和最高有效的偶数位置的数据元素中的所述一个组成。
9.如权利要求1所述的处理器,其特征在于,至少一个FIR滤波系数用于所述FIR滤波器抽头中的两个,并且其中所述执行单元包括数量不多于所述第一数量与所述第二数量的和与FIR滤波系数的数量的乘积的多个乘法器。
10.如权利要求1所述的处理器,其特征在于,所述执行单元用于存储所述结果紧缩数据操作数,其中多个经FIR滤波的数据元素会基于FIR滤波系数与所述一个或多个源紧缩数据操作数中的给定的数据元素的单个乘积,所述单个乘积用来重新用于所述多个经FIR滤波的数据元素中的每一个而不需要通过乘法生成多次。
11.如权利要求1所述的处理器,其特征在于,所述执行单元包括给定的乘法器,所述给定的乘法器用于将FIR滤波系数与所述一个或多个源紧缩数据操作数中的数据元素相乘以生成乘积,并且其中所述执行单元用于存储多个经FIR滤波的数据元素,所述多个经FIR滤波的数据元素各自基于乘积与对乘积的求反的组合。
12.如权利要求1所述的处理器,其特征在于,所述紧缩FIR滤波指令具有操作码,所述操作码用于指示对称和半对称配置中的一个,所述对称和半对称配置中的一个用于生成所述多个FIR滤波系数与所述数据元素的不同的对应集合中的每一个的多个乘积。
13.如权利要求1至12中的任一项所述的处理器,其特征在于,所述解码单元用于对所述指令进行解码,所述指令用于指示具有少于16位的浮点格式的所述多个FIR滤波系数。
14.如权利要求1至12中的任一项所述的处理器,其特征在于,所述解码单元用于对所述指令进行解码,所述指令用于指示用来具有所述FIR滤波系数的操作数,并且其中所述FIR滤波系数中的每一个用来被存储在所述操作数的不同的字节对齐的边界中。
15.如权利要求1至12中的任一项所述的处理器,其特征在于,所述解码单元用于对所述指令进行解码,所述指令用于指示位移量,并且其中所述执行单元用于存储所述结果紧缩数据操作数,其中所述经FIR滤波的数据元素中的每一个会基于对所述多个乘积的组合的基于所述位移量的移位。
16.一种处理器中的方法,包括:
接收紧缩有限冲激响应FIR滤波指令,所述紧缩FIR滤波指令指示一个或多个源紧缩数据操作数、多个FIR滤波系数和目的地存储位置,所述一个或多个源紧缩数据操作数包括第一数量的数据元素和第二数量的附加数据元素,所述第二数量比FIR滤波器抽头的数量少一;以及
响应于所述紧缩FIR滤波指令将结果紧缩数据操作数存储在所述目的地存储位置中,所述结果紧缩数据操作数包括所述第一数量的经FIR滤波的数据元素,所述经FIR滤波的数据元素中的每一个基于所述多个FIR滤波系数与来自所述一个或多个源紧缩数据操作数的数据元素的不同的对应集合的多个乘积的组合,所述数据元素的不同的对应集合在数量上等于所述FIR滤波器抽头的数量,
其中,所述指令用于指示多个符号值,并且其中存储包括存储所述结果紧缩数据操作数,其中所述经FIR滤波的数据元素中的每一个会基于所述多个乘积的组合,其中所述多个乘积中的至少一个会被应用所述多个符号值中的一个符号值以改变至少一个乘积的符号。
17.如权利要求16所述的方法,其特征在于,接收包括接收所述指令,所述指令指示各自具有少于12位的浮点格式的所述多个FIR滤波系数。
18.如权利要求16所述的方法,其特征在于,接收包括接收所述指令,所述指令指示具有在操作数的不同的字节对齐的边界中的所述FIR滤波系数中的每一个的操作数。
19.如权利要求16所述的方法,其特征在于,接收包括接收所述指令,所述指令指示具有跨越第一源紧缩数据操作数的全部宽度的所述第一数量的数据元素的第一源紧缩数据操作数,并且指示具有在第二源紧缩数据操作数的一端组合在一起的所述第二数量的附加数据元素的第二源紧缩数据操作数。
20.如权利要求16所述的方法,其特征在于,存储包括存储所述结果紧缩数据操作数,其中所述经FIR滤波的数据元素中的每一个会基于所述多个乘积的组合,其中所述数据元素的不同的对应集合的两个数据元素各自已经与相同的FIR滤波系数相乘。
21.如权利要求16所述的方法,其特征在于,存储包括存储所述结果紧缩数据操作数,其中所述经FIR滤波的数据元素中的每一个会基于所述多个乘积的组合,其中所述数据元素的不同的对应集合的两个数据元素各自已经与相同的FIR滤波系数相乘但仅对两个乘积中的一个求反。
22.一种用于指令执行的设备,包括用于执行权利要求16至21中的任一项所述的方法的装置。
23.一种用于指令执行的制品,包括机器可读存储介质,所述机器可读存储介质存储第一指令,所述第一指令如果由机器执行则能操作以使所述机器执行权利要求16至21中的任一项所述的方法。
24.一种电子设备,包括:互连、与所述互连耦合的如权利要求1至12中的任一项所述的处理器、以及与所述互连耦合的动态随机存取存储器DRAM。
25.一种处理器,包括:
解码装置,用于对紧缩有限冲激响应FIR滤波指令进行解码,所述紧缩FIR滤波指令用于指示一个或多个源紧缩数据操作数、多个FIR滤波系数和目的地存储位置,所述一个或多个源紧缩数据操作数用于包括第一数量的数据元素和第二数量的附加数据元素,所述第二数量比FIR滤波器抽头的数量少一;以及
执行装置,用于响应于所述紧缩FIR滤波指令被所述解码装置解码,将结果紧缩数据操作数存储在所述目的地存储位置中,所述结果紧缩数据操作数用于包括所述第一数量的经FIR滤波的数据元素,所述经FIR滤波的数据元素中的每一个基于所述多个FIR滤波系数与来自所述一个或多个源紧缩数据操作数的数据元素的不同的对应集合的多个乘积的组合,所述数据元素的不同的对应集合在数量上等于所述FIR滤波器抽头的数量,
其中,所述解码装置用于对所述指令进行解码,所述指令用于指示多个符号值,并且其中所述执行装置用于存储所述结果紧缩数据操作数,其中所述经FIR滤波的数据元素中的每一个会基于所述多个乘积的组合,其中所述多个乘积中的至少一个会被应用所述多个符号值中的一个符号值以改变至少一个乘积的符号。
CN201680024422.XA 2015-05-05 2016-04-06 紧缩有限冲激响应(fir)滤波处理器、方法、系统和指令 Active CN107533460B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/704,633 2015-05-05
US14/704,633 US9898286B2 (en) 2015-05-05 2015-05-05 Packed finite impulse response (FIR) filter processors, methods, systems, and instructions
PCT/US2016/026121 WO2016178774A1 (en) 2015-05-05 2016-04-06 Packed finite impulse response (fir) filter processors, methods, systems, and instructions

Publications (2)

Publication Number Publication Date
CN107533460A CN107533460A (zh) 2018-01-02
CN107533460B true CN107533460B (zh) 2022-05-10

Family

ID=57217763

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680024422.XA Active CN107533460B (zh) 2015-05-05 2016-04-06 紧缩有限冲激响应(fir)滤波处理器、方法、系统和指令

Country Status (5)

Country Link
US (1) US9898286B2 (zh)
EP (1) EP3292630A4 (zh)
CN (1) CN107533460B (zh)
TW (1) TWI603262B (zh)
WO (1) WO2016178774A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9606803B2 (en) 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
US11106462B2 (en) * 2019-05-24 2021-08-31 Texas Instruments Incorporated Method and apparatus for vector sorting
US9898286B2 (en) 2015-05-05 2018-02-20 Intel Corporation Packed finite impulse response (FIR) filter processors, methods, systems, and instructions
EP3364655A4 (en) * 2015-11-11 2018-10-10 Samsung Electronics Co., Ltd. Method and apparatus for decoding video, and method and apparatus for encoding video
US9977601B2 (en) * 2016-03-17 2018-05-22 Ceva D.S.P. Ltd. Data load for symmetrical filters
US10749502B2 (en) * 2017-09-29 2020-08-18 Intel Corporation Apparatus and method for performing horizontal filter operations
EP3994796A1 (en) * 2019-07-18 2022-05-11 Huawei Technologies Co., Ltd. Advanced finite impulse response system and method for real coefficients and complex data
US11996817B2 (en) * 2021-06-10 2024-05-28 Solanium Labs Ltd. Finite impulse response filter

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6470370B2 (en) * 1995-09-05 2002-10-22 Intel Corporation Method and apparatus for multiplying and accumulating complex numbers in a digital filter
CN1694389A (zh) * 2004-05-07 2005-11-09 索尼电子有限公司 用于多描述编码的可变支持健壮变换
CN101052947A (zh) * 2004-11-03 2007-10-10 皇家飞利浦电子股份有限公司 支持simd指令的可编程数据处理电路
CN101069233A (zh) * 2004-09-16 2007-11-07 法国电信公司 通过不同子带域之间通道进行数据处理的方法
WO2014210366A1 (en) * 2013-06-28 2014-12-31 Intel Corporation Processors, methods, systems, and instructions to transcode variable length code points of unicode characters

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5500811A (en) 1995-01-23 1996-03-19 Microunity Systems Engineering, Inc. Finite impulse response filter
US6385634B1 (en) 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US6547364B2 (en) * 1997-07-12 2003-04-15 Silverbrook Research Pty Ltd Printing cartridge with an integrated circuit device
US6041404A (en) 1998-03-31 2000-03-21 Intel Corporation Dual function system and method for shuffling packed data elements
US6144710A (en) 1998-04-23 2000-11-07 Lucent Technologies, Inc. Joint maximum likelihood sequence estimator with dynamic channel description
JP3181879B2 (ja) * 1998-07-22 2001-07-03 シャープ株式会社 送信装置
US6650699B1 (en) 1999-01-21 2003-11-18 International Business Machines Corporation Methods and apparatus for timing recovery from a sampled and equalized data signal
GB2363924A (en) * 2000-06-20 2002-01-09 Virata Ltd Processor for FIR filtering
US20050004957A1 (en) 2003-07-05 2005-01-06 General Instrument Corporation Single instruction multiple data implementations of finite impulse response filters
US7529423B2 (en) 2004-03-26 2009-05-05 Intel Corporation SIMD four-pixel average instruction for imaging and video applications
US20070150697A1 (en) * 2005-05-10 2007-06-28 Telairity Semiconductor, Inc. Vector processor with multi-pipe vector block matching
US20080071851A1 (en) 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
WO2013031083A1 (ja) * 2011-09-02 2013-03-07 パナソニック株式会社 対称型フィルタ演算装置及び対称型フィルタ演算方法
KR20140084294A (ko) * 2011-10-27 2014-07-04 엘에스아이 코포레이션 복소 지수 비선형 함수와 함께 명령어를 갖는 디지털 처리
CN104011664B (zh) 2011-12-23 2016-12-28 英特尔公司 使用三个标量项的超级乘加(超级madd)指令
CN104011665B (zh) 2011-12-23 2017-05-31 英特尔公司 超级乘加(超级madd)指令
WO2013101010A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Floating point scaling processors, methods, systems, and instructions
US9329936B2 (en) 2012-12-31 2016-05-03 Intel Corporation Redundant execution for reliability in a super FMA ALU
US9813223B2 (en) * 2013-04-17 2017-11-07 Intel Corporation Non-linear modeling of a physical system using direct optimization of look-up table values
CN103414678B (zh) * 2013-08-02 2016-08-03 浙江大学 基于Vector OFDM的双选择性信道的变换域均衡方法
US9477999B2 (en) * 2013-09-20 2016-10-25 The Board Of Trustees Of The Leland Stanford Junior University Low power programmable image processor
US9898286B2 (en) 2015-05-05 2018-02-20 Intel Corporation Packed finite impulse response (FIR) filter processors, methods, systems, and instructions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6470370B2 (en) * 1995-09-05 2002-10-22 Intel Corporation Method and apparatus for multiplying and accumulating complex numbers in a digital filter
CN1694389A (zh) * 2004-05-07 2005-11-09 索尼电子有限公司 用于多描述编码的可变支持健壮变换
CN101069233A (zh) * 2004-09-16 2007-11-07 法国电信公司 通过不同子带域之间通道进行数据处理的方法
CN101052947A (zh) * 2004-11-03 2007-10-10 皇家飞利浦电子股份有限公司 支持simd指令的可编程数据处理电路
WO2014210366A1 (en) * 2013-06-28 2014-12-31 Intel Corporation Processors, methods, systems, and instructions to transcode variable length code points of unicode characters

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于FPGA的FIR数字滤波器研究与设计;岑光;《中国优秀硕士学位论文全文数据库 信息科技辑》;20110715(第7期);全文 *

Also Published As

Publication number Publication date
EP3292630A4 (en) 2019-06-26
CN107533460A (zh) 2018-01-02
TWI603262B (zh) 2017-10-21
US9898286B2 (en) 2018-02-20
US20160328233A1 (en) 2016-11-10
WO2016178774A1 (en) 2016-11-10
TW201701151A (zh) 2017-01-01
EP3292630A1 (en) 2018-03-14

Similar Documents

Publication Publication Date Title
CN107533460B (zh) 紧缩有限冲激响应(fir)滤波处理器、方法、系统和指令
US11442734B2 (en) Packed data element predication processors, methods, systems, and instructions
CN107918546B (zh) 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
EP3623941B1 (en) Systems and methods for performing instructions specifying ternary tile logic operations
CN107924308B (zh) 数据元素比较处理器、方法、系统和指令
US10749502B2 (en) Apparatus and method for performing horizontal filter operations
US10936312B2 (en) Packed data alignment plus compute instructions, processors, methods, and systems
CN107111489B (zh) 莫顿坐标调整处理器、方法、系统和指令
US10037210B2 (en) Apparatus and method for vector instructions for large integer arithmetic
CN107111484B (zh) 四维莫顿坐标转换处理器、方法、系统和指令
EP3623940A2 (en) Systems and methods for performing horizontal tile operations
US11474825B2 (en) Apparatus and method for controlling complex multiply-accumulate circuitry
US10437562B2 (en) Apparatus and method for processing sparse data
CN114721624A (zh) 用于处理矩阵的处理器、方法和系统
CN110826722A (zh) 用于通过排序来生成索引并基于排序对元素进行重新排序的系统、装置和方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant