[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN103777922B - 预测计数器 - Google Patents

预测计数器 Download PDF

Info

Publication number
CN103777922B
CN103777922B CN201310487400.5A CN201310487400A CN103777922B CN 103777922 B CN103777922 B CN 103777922B CN 201310487400 A CN201310487400 A CN 201310487400A CN 103777922 B CN103777922 B CN 103777922B
Authority
CN
China
Prior art keywords
count
predictions device
primitive
predictions
instruction
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
CN201310487400.5A
Other languages
English (en)
Other versions
CN103777922A (zh
Inventor
A·J·希格哈姆
B·勒纳
K·桑海
M·博金斯
J·L·瑞德福特
M·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.)
Analog Devices Global ULC
Analog Devices International ULC
Original Assignee
Analog Devices Technology
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
Priority claimed from US13/720,624 external-priority patent/US9201828B2/en
Priority claimed from US13/963,793 external-priority patent/US9342306B2/en
Application filed by Analog Devices Technology filed Critical Analog Devices Technology
Publication of CN103777922A publication Critical patent/CN103777922A/zh
Application granted granted Critical
Publication of CN103777922B publication Critical patent/CN103777922B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

根据示例性实施方案,诸如数字信号处理器(DSP)的处理器具备用作预测计数器的寄存器。所述预测计数器可以包括两个以上有用值,且除用作用于执行指令的条件以外,还可以追踪循环或条件分支内的嵌套级。在某些情况下,所述预测计数器可以被配置来以单指令多数据(SIMD)模式或寄存器内SIMD(SWAR)模式进行操作。

Description

预测计数器
相关申请的交叉参考
本申请要求2012年10月23日提交且名为“Predicate Counter”的美国临时申请第61/717,541号的优先权,该申请的全部内容以引用方式并入。2012年12月19日提交且名为“Memory Interconnect Network Architecture for Vector Processors”的同在申请中的美国申请第13/720,624号(“624申请”)的全部内容也以引用方式并入本文中。
技术领域
本公开大体上涉及并行处理,且更特别地说涉及一种采用预测计数器的向量处理器。
背景技术
并行处理通常是由用于最优化处理应用程序的处理器(例如,用于最优化数字信号处理应用程序的数字信号处理器(DSP))来实施。处理器可用作单指令多数据(SIMD)或数据并行处理器以实现并行处理。在SIMD操作中,将一个指令发送到处理器的多个处理元件,其中每个处理元件可独立地对不同数据执行相同操作。对持续较高产量和增加性能的要求不断增长已造成寄存器内SIMD(SWAR),其中处理元件可作用于其相关寄存器内的多组数据。例如,一个32位寄存器可以包括四个8位数据、八个4位数据或三个10位数据,其每个可由一个处理元件并行操作。
虽然在处理器的硬件中实施SWAR相对便宜,但是从编程的观点来看SWAR面临诸多挑战。例如,SWAR编程通常必需来自并非ISO C或C++标准的部分的高级语言(诸如C/C++)的固有、内联汇编和/或专有向量数据类型(诸如float2、int4、short4,等等)。因为这些编程选项(专有向量数据类型、固有和/或内联汇编)为处理器所特有,所以SWAR编程难以移植原有代码。此外,因为SWAR编程对向量处理器添加额外等级的并行处理,所以常规处理器由于确保处理器识别两个等级的并行操作(双向并行)而增加程序员的负担:(使用SWAR的)处理元件内的一个等级的并行处理和跨处理器的向量单元的处理元件的另一等级的并行处理。因此,虽然用于执行并行处理的现有处理器架构和相关方法通常适用于其希望目的,但是在所有方面其并非完全令人满意。
附图说明
在阅读附图后根据下列详述会充分了解本公开。本公开强调:根据业界标准实践,各个特征并未按比例绘制且仅用于说明目的。实际上,为了明确论述,可以任意增加或减小各个特征的尺寸。
图1是包括预测计数器的示例性数字信号处理器的方框图。
图2是被配置来执行寄存器内SIMD操作的数字信号处理器内的寄存器的方框图。
具体实施方式
概述
一方面,本发明公开了一种处理器,其包括:处理元件;序列发生器,其被配置来将条件可执行的指令提供到处理元件,其中条件是由预测计数器中编码的预测提供;和预测计数寄存器,其被配置来接收两个以上有意义的值和提供其值作为预测计数。
另一方面,本发明公开了一种由计算机执行的方法,其包括:接收与预测计数器被配置来接收两个以上有用值相关的指令;如果预测计数器是第一值,那么执行指令;和如果预测计数器不是第一值,那么忽略指令。
在另一实施方案中,本发明公开了一种有形计算机可读介质,其上存储当执行时命令处理器进行以下各项的软件指令:读取预测计数器,预测计数器具有两个以上有用值;读取条件指令;如果预测计数器是第一值,那么执行指令;如果预测计数器不是第一值,那么忽略指令并基于预测计数器的值操控预测计数器。
公开的示例性实施方案
下列公开提供用于实施本公开的不同特征的许多不同实施方案或实例。下文描述组件和配置的特定实例以简化本公开。当然,这些仅是实例且不希望进行限制。此外,本公开可以在各个实例中重复参考数字和/或字母。这种重复是出于简化和明确的目的,且本身并不指示论述的各个实施方案和/或配置之间的关系。不同实施方案可以具有不同优点,且任何实施方案均无需特定优点。
指令预测涉及线性化分支操作,这可基本上改善高速缓存性能和指令流水线。在传统的分支拓扑中,条件指令可以呈以下形式:
因为到新位置的分支会破坏流水线和存储器高速缓存,所以就时钟循环来说执行条件代码可能极为昂贵。预测通过如下线性化指令缓解分支影响:
{predicate:condition}branch-A;
{predicate:!condition}branch-B;
预测指令因此出现相互内联,但是仅在附接到每个指令的预测为真时执行。因此,预测将控制相依转变成数据相依,这使处理器能够并行执行许多操作而不危及流水线和高速缓存。
根据本公开的示例性实施方案,整数计数器可以用作指令预测,从而对指令编码预测状态和嵌套状态。例如,诸如“0”的特定值用作允许执行指令的预测,而任何非零值则指示不应执行指令。
出于下列论述目的,“预测计数器”是用作预测控制指令执行的计数器,且不同于简单的布尔“标记”,其具有两个以上有用值。预测计数器因此可在(例如)嵌套IF-ELSE-ENDIF结构或嵌套循环内编码预测状态和嵌套状态。唯一值可启用与计数器相关的指令,且所有其它值从而指示在某个嵌套级禁用相关指令。例如,如果将计数器设置成零,那么允许正常执行受计数器控制的指令,否则禁止执行指令。在其它示例性实施方案中,以非限制性实例为例,唯一值可以是1、整数寄存器的最大值(MAXINT)、符号整数寄存器的最大负值(-MAXINT)和无穷、负无穷以及可以由寄存器中的特殊代码表示的非数值。
如下文更详细描述,预测计数器有用于线性化指令和单指令SWAR操作。
现参考附图,图1是根据本公开的各个方面的示例性数字信号处理器(DSP)100的示意方框图。为明确起见且更好地理解本公开的新颖概念,图1已予以简化。可以在DSP100中添加额外特征,且在DSP100的其它实施方案中可更换或消除下文描述的特征中的一些。
DSP100可以包括控制单元110、存储器120和计算阵列130。在实例中,控制单元110和计算阵列130构成可对DSP100执行计算和数据处理功能的核心处理器。DSP100的某些实施方案包括其它组件,诸如用于执行微控制器指令的微控制器、直接存储器访问(DMA)单元和到芯片外装置的各个接口。此外,虽然存储器120在此处示为一个逻辑块,但是本领域一般技术人员将认识到:存储器120可以包括系统主存储器、不同层级的芯片上高速缓存和/或其它易失性或非易失性存储器技术。
控制单元110促进DSP100的程序执行。控制单元110可以包括算术逻辑单元和数据地址生成(ALU-DAG)单元112、程序序列发生器114和程序存储器116。控制单元110还可以包括其它组件,诸如指令高速缓存、计时器和指令寄存器。ALU-DAG单元112支持通用整数计算并对存储器地址供应地址。例如,当在存储器120与寄存器(诸如下文描述的计算阵列130的寄存器堆)之间传送数据时,ALU-DAG112提供存储器地址。ALU-DAG单元112可将地址供应给数据存储器(例如,存储器120)和/或程序存储器116。程序序列发生器114将指令地址提供到程序存储器116以进行指令取出。程序存储器116将DSP100实施的程序存储到程序数据(诸如存储在存储器120中的程序数据)且还可存储程序数据。程序包括具有一个或多个指令的指令集,且DSP100通过取出指令、解码指令和执行指令来实施程序。在实例中,程序可以包括用于实施不同DSP算法(包括依赖于预测计数器的算法)的指令集。
存储器120存储由DSP100处理的信息/数据(数据存储器)、由DSP100实施以处理信息/数据的程序(程序存储器)或其组合。在已描绘的实施方案中,存储器120具有多段交错存储器结构,使得存储器120包括存储器段M1、M2、M3、……、Mn,其中n是存储器120的存储器段的总数。在实例中,存储器120是随机访问存储器,诸如静态随机访问存储器(SRAM)、动态RAM(DRAM)、快闪或其它合适的存储器技术。在实例中,一个或多个存储器段M是单独的RAM。或者,在各个实施方案中,存储器120是另一合适类型的存储器。
互连网络140、互连网络142和互连网络144互连控制单元110、存储器120和计算阵列130,从而在控制单元110、存储器120与计算阵列130之间提供通信路径。互连网络140、互连网络142和互连网络144可以包括一根总线、多根总线、交叉开关网络、单级网络、多级网络、其它类型的互连网络或其组合。控制单元110经由互连网络142将指令和数据地址发到计算阵列130。互连网络142因此经由互连网络142将指令和数据的地址传送到计算阵列130的各个处理元件PE。互连网络144传送来自存储器(诸如存储器120、程序存储器116、其它存储器或其组合)的数据和/或指令,使得可将DSP100中任何寄存器的内容传送到任何其它寄存器或任何存储器位置,且存储器120可将数据操作数(值)提供到计算阵列130。
在某些实施方案中,计算阵列130包括多个处理元件PE1、PE2、PE3、……PEN,其中N是计算阵列130的处理元件的总数。在实例中,计算阵列110可以包括四个处理元件(PE1、PE2、PE3和PE4)。处理元件PE对(例如)DSP算法执行数值处理。处理元件PE可以独立、并行操作或作为SIMD引擎。在本实例中,每个处理元件PE可以是向量处理器。或者,处理元件PE可以是标量处理器与向量处理器的组合。
处理元件PE每个包括各自的计算单元(CU)152。在已描绘的实施方案中,计算单元152可以相同,但是本公开希望其中计算单元152不同的实施方案。本公开还希望其中一个或多个处理元件PE不包括计算单元152的配置。在本实例中,计算单元152每个包括算术逻辑单元(ALU)、乘数累加器(MAC)、移位器、其它计算单元或其组合。ALU可执行算术和逻辑运算,诸如加法、减法、求反、递增、递减、绝对值、与(AND)、或(OR)、异或(EXCLUSIVE OR)、非(NOT)、除法原语、其它算术运算、其它逻辑运算或其组合。示例性MAC可执行乘法运算以及倍乘和累加运算,诸如单循环倍乘、倍乘/加法、倍乘/减法、其它运算或其组合。移位器可执行逻辑和算术移位、位运算、正规化、反正规化、指数求导运算、其它运算或其组合。可均对固定点和浮点格式执行各个算术运算、逻辑运算和其它运算。在各个实施方案中,ALU、MAC和/或移位器包括与其相关的寄存器。
处理元件PE还可以每个包括各自的寄存器堆154。在已描绘的实施方案中,寄存器堆154可以相同,但是本公开希望其中寄存器堆154有所不同的实施方案。本公开还希望其中一个或多个处理元件PE不包括寄存器堆154的配置。寄存器堆154包括在处理元件PE与数据互连网络(诸如互连网络144)之间传送数据并存储结果的寄存器。在本实例中,寄存器堆154可包括各自的通用寄存器组155,其包括具有取决于DSP100的设计要求的宽度的通用寄存器,诸如32位通用寄存器、40位通用寄存器、64位通用寄存器、128位通用寄存器、其它宽度的通用寄存器或其组合。出于下列论述的目的,通用寄存器155包括32位通用寄存器。在本实例中,寄存器堆154每个包括各自的预测寄存器158,其可以被配置来固定预测计数器。寄存器堆154可包括遵循DSP100的设计要求的额外寄存器。此外,在各个实施方式中,预测寄存器158可以是来自通用寄存器组155的通用寄存器154。在一个示例性实施方案中,每个PE包括达32位宽的至少一个专用预测计数器158。在其它实施方案中,每个PE可以包括多个预测计数器。
DSP100可执行不同并行操作。例如,在一次循环期间,处理元件PE可以(经由互连网络142)访问指令并(经由互连网络144)访问来自存储器的N个数据操作数以便进行同步处理。在SIMD模式中,DSP100可以并行处理多个数据流。例如,当在SIMD模式中时,DSP100在一次循环中可以经由互连网络142将一个指令调度到处理元件PE中的每个或多个处理元件PE;经由互连网络144加载来自存储器(存储器120、程序存储器116、其它存储器或其组合)的N个数据集,每个处理元件PE加载一个数据集(在实例中,每个数据集可以包括两个数据操作数);在处理元件PE中同步执行所述一个指令;且将来自所述同步执行的数据结果存储在存储器120中。
在某些实施方案中,DSP100还可以执行寄存器内SIMD(SWAR),其中任何处理元件PE的寄存器(例如,通用寄存器)可分成一个以上处理信道,使得任何处理元件PE可个别地对其各自的处理信道执行并行操作。例如,在SWAR模式中,任何处理元件PE可对n个信道执行并行操作,每个信道是k/n位宽,其中k是以寄存器的位为单位的宽度。
图2示意地示出了与可实施根据本公开的各个方面的SWAR的处理元件(诸如DSP100的处理元件PE)相关的示例性寄存器组。在图2中,一组寄存器包括寄存器R1、寄存器R2和寄存器R3,其中使用寄存器R1和寄存器R2的元件(数据操作数)执行诸如加法运算的运算OP以在寄存器R3中产生结果。寄存器R1、寄存器R2和寄存器R3可能是诸如来自通用寄存器组155的通用寄存器。在本实例中,其中通用寄存器是32位宽(k=32),在SIMD模式中,任何处理元件PE可对存储在寄存器R1和R2中的32位元件执行操作并将结果置于寄存器R3中。为了促进本实例,在SWAR模式中,寄存器R可分为一个以上处理信道以便进行并行操作,使得任何处理元件PE可对存储在寄存器R1和R2中的16位元件的两个信道(L1和L2)执行并行操作并将结果置于寄存器R3中(称作2×16位SWAR处理),或对存储在寄存器R1和R2中的8位元件的四个信道(L1至L4)执行并行操作并将结果置于寄存器R3中(称作4×8位SWAR处理)。
对数字信号处理器支持更宽数据类型(诸如64位浮点、32位复数等)的高性能的要求不断增长导致增加数字信号处理器的处理元件(诸如DSP100的处理元件PE)内的计算力和寄存器宽度。这些较宽的寄存器通过实施SWAR增加较小数据类型(诸如32位浮点、16位固定点等)的数字信号处理器性能多样化。例如,DSP100可通过实施SWAR并在不添加更多处理元件的情况下尽快地执行两次至四次操作。在其中存在具有32位宽寄存器的四个处理元件PE1、PE2、PE3和PE4的实例中,DSP100可在相同时间量内以SIMD或非SIMD模式执行四个并行32位运算、以2×16位SWAR模式执行八个并行操作,或以4×8位SWAR模式执行十六个并行操作。类似地,在其中处理元件PE具有128位宽寄存器的实例中,DSP100可在相同时间量内以SIMD或非SIMD模式执行四个并行128位运算、以2×64位SWAR模式执行八个并行64位运算、以4×32位SWAR模式执行十六个并行32位运算、以8×16位SWAR模式执行三十二个并行16位运算,或以16×8位SWAR模式执行六十四个并行8位运算。
虽然在硬件中实施SWAR模式相对便宜,但是从编程的观点来看SWAR面临诸多挑战。例如,SWAR编程通常必需来自并非ISO C或C++标准的部分的高级语言(诸如C/C++)的固有、内联汇编和/或专有向量数据类型(诸如float2、int4、short4,等等)。因为这些编程选项(专有向量数据类型、固有和/或内联汇编)为处理器所特有,所以SWAR编程难以移植原有代码。此外,因为SWAR编程对向量处理器添加额外等级的并行处理,所以常规的数字信号处理器由于确保DSP100识别两个等级的并行操作(双向并行)而增加程序员的负担:(使用SWAR的)处理元件内的一个等级的并行处理和跨向量单元的处理元件的另一等级的并行处理。
有利的是,如本文中所公开且如所述‘624申请中进一步描述,本公开的示例性DSP100使程序员(和因此用于DSP100的编译器)能够将并行处理单元看作一个向量信道,其中每个处理信道(SWAR信道)被看作个别处理元件。在其中每个处理元件PE可分成相同数量的处理信道的实例中,程序员将处理元件的有效数量视为等于实际处理元件的数量乘以每个处理元件的处理(SWAR)信道的数量。因此,在其中存在支持四个处理信道(例如,支持4×8位SWAR的32位宽寄存器)的四个处理元件PE1、PE2、PE3和PE4的实例中,从程序员的观点(和因此编译器的观点)来看,处理元件的有效数量是16(PE的有效数目=PE的数量×每个PE的SWAR信道的数量=4×4=16)。在其中存在八个处理元件且每个处理元件支持两个处理信道(例如,两个32位浮点操作)的另一实例中,从程序员的观点来看,处理元件的有效数量是16(PE的有效数目=PE的数量×每个PE的SWAR信道的数量=8×2=16)。如‘624申请中更详细描述,DSP100通过实施以下各项由程序员顺利地进行SWAR处理(特别地说,双向并行):(1)基于处理信道(SWAR信道)的屏蔽,(2)基于处理信道且使用(例如)预测计数器的条件执行,(3)跨处理信道和/或跨处理元件执行归约运算,和/或(4)基于处理信道独立地生成地址。这些机制大大减小DSP100所需的编程努力。
下文描述处理器中的预测计数器的不同实施方式。为明确起见,提供某个逻辑作为示例性假代码。在各个实例中,使用如Analog Devices公司发明的混合信号和DSP设计技术(特此以引用的方式全部并入)中描述的概念和处理器实行所述实施方式。在各个实例中,下列操作实施为机器指令或还处理其它事物的机器指令的部分。例如,设置计数器预测可能对如设置标记的算术指令产生负面影响。
在各个实施方式中,一组预测计数器控制单指令多数据(SIMD)指令架构,其中每个SIMD信道受控于不同预测计数器。
IF-ELSE-ENDIF结构
在一个示例性架构中,预测计数器控制IF-ELSE-ENDIF结构。IF-ELSE-ENDIF结构受控于三个离散声明或原语操作(primitive operation):IF、ELSE和ENDIF。因为在某些情况下这些不一定是程序员可用的离散指令,所以其称作原语操作,或原语。更确切地说,其可以是其它用户可访问指令的内部操作。在其它情况下,其可以是用户可访问指令,但是其无需具有本文中定义的特定命名。所述三个操作定义如下:
IF:If取决于预测计数器(这些实例中的“计数器”)和要测试的条件(“条件”)。如果计数器是0且条件为真,那么不采取任何动作,意指计数器保持为0,这允许执行下列指令。下列任何代码将称作“真”直到碰到假条件为止。例如,计数器将在下列三个嵌套“if”声明中保持为0,假设A、B和C全部是真:
因为计数器在前文实例中保持为0,所以执行operation1()。
继续定义IF,如果计数器是0且条件为假,那么计数器递增到1,意指将不会执行下列指令且进入“假”分支(例如,如果A在先前实例中为假,那么“if(B)”和“if(C)”均属于假分支且不应执行任何代码)。在所述情况下,计数器仅使用饱和算术而递增(换句话说,计数器高端被“钳制”在最大值,例如预测计数器的最大整数值,或低端被“钳制”在0)。IF可如下写入伪代码中:
ELSE:Else仅作用于计数器。如果计数器刚好是1,那么先前指令中到达假分支中的最终嵌套级(如果存在),意指应执行“else”条件(无需执行“if”条件,因为如果执行“if”条件,那么计数器将会是0)。因此将计数器设置成0,这允许执行下列指令(即,“else”分支)。如果计数器是0,那么执行这个“else”分支的“if”分支(且展开任何后续嵌套),但不应执行这个分支。因此将计数器设置成1,这将会禁止执行下列指令。如果计数器是任何其它值,那么其不采取任何动作且将不会执行下列指令。ELSE可如下写入伪代码中:
ENDIF:如同ELSE一样,EDNIF仅作用于计数器。如果计数器非零,那么这是假循环的嵌套分支,且计数器递减。否则,不采取任何动作。ENDIF指令的结果是:当碰到ENDIF声明时一次“展开”一个条件逻辑的嵌套级。ENDIF可如下写入伪代码中:
IF、ELSE和ENDIF操作出现在具有由计数器预测的算术指令的指令流中。IF、ELSE和ENDIF操作的定位标记嵌套控制区域。
例如,在预测下可以展开简单的嵌套if-else循环。在传统的非预
测语言中,循环可以如下写入:
因此,如果A为真,那么无论B如何均仅执行operation1()。如果A为假且B为真,那么执行operation2()和operation3()。如果A为假且B为真,那么仅执行operation2()。
使用上述预测的IF-ELSE结构,可构造下表。
在其它示例性实施方案中,一组预测计数器可以控制SIMD指令集。在这种情况下,预测计数器可以由能够进行SIMD的IF、ELSE和ENDIF操作加以设置。此时,再次应用上述伪代码,其中“计数器”代表一组计数器且条件代表布尔值的向量。
阶段循环
在另一示例性实施方案中,可使用预测计数器实施SIMD阶段循环(如2012年6月29日提交且名为“Staged Loop Instructions”的同在申请中的美国专利申请第13/537,731号中公开,其以引用的方式并入本文中)。在这种情况下,对软件流水线式循环的每个阶段提供预测计数器组。对SIMD阶段循环实施方式提供两个原语,即LOOP和NEXT_STAGE。LOOP操作是在循环中的第一指令前执行。NEXT_STAGE操作分离展开循环的副本且也是在循环前执行。
LOOP:下列伪代码提供LOOP原语的行为。正如先前原语,LOOP可以是用户可访问指令或可以经提供为其它指令所固有。在下列伪代码中,NUM_LANES指示处理元件的数量,且COUNTER_GROUPS指示阶段的编号。“Iters”表示循环反复的总次数。
SIMD阶段循环中的个别操作具有阶段编号。在本实例中,每个阶段编号给预测计数器组加索引。例如,展开点积循环可能如同下文一样,其中以{}给定阶段计数:
下列说明提供实例,其中NUM_LANES=8、NUM_COUNTER_GROUPS=4、Iters=13且PredCounter[0]最初全部是零。每个阶段是在于较低编号阶段中计算其输入后执行且每个阶段最初是在信道0至7且随后在信道0至4中执行,总共反复13次。
用于对SIMD或向量处理器实施预测的另一示例性方案包括使用屏蔽寄存器,其包括预测位。每个位控制元件的计算结果。这种预测方案可用于子字SIMD和/或暂存器(SWAR)内SIMD操作。有利的是,使用预测计数器会消除对单独预测位的需要。
嵌套
本说明书的某些实施方案还实现嵌套IF-ELSE-ENDIF和SIMD阶段循环结构的嵌套。为此,可组合与SIMD IF、ELSE、ENDIF和阶段循环原语相关的操作。
在一个示例性实施方案中,SIMD阶段循环嵌套在其中阶段0的计数器用作预测的IF-ELSE-ENDIF区域内。当进入循环时保存阶段0的计数器组的初始状态,且然后用以在每个NEXT_STAGE操作中设置所述计数器并在从循环中退出时恢复所述状态。进入循环时未启用的所述信道将不会被启用。
在其它示例性实施方案中,IF-ELSE-ENDIF区域嵌套在SIMD阶段循环内。在这种情况下,语义适用于嵌套在非展开、非软件流水线式循环内的IF-ELSE-ENDIF方框。当循环呈软件流水线式时,ENDIF操作可以在晚于相应IF或ELSE的阶段中。在这种情况下,这将会修改不同的预测计数器组。ENDIF将因此错误地造成其修改的计数器递减。且只有阶段0以外的所有预测计数器可初始化为MAX。如果MAX可能大于阶段的最大编号,那么计数器将不会递减到零。例如,考虑这个非软件流水线式循环:
这个循环可以成如下的软件流水线式:
在下列示例性实施方案中,NUM_LANES=8、NUM_COUNTER_GROUPS=4、Iters=13且PredCounter[0]最初全部是零。如果阶段0中加载的值小于零,那么便执行阶段1中的存储。
寄存器内SIMD
在示例性实施方案中,预测计数器用以控制SWAR指令。示例性SWAR机器可以支持固定长度向量,其中所述长度是元件大小*元件数量。当需要不同元件大小时,预测计数器被配置来处理不同数量的元件。
在包括n个PE的示例性机器上,其中每个PE能够执行SWAR指令的l个信道,所以预测计数器组包括n×l个计数器。因此,每个组的l个计数器控制一个PE上的SWAR信道。当元件大小大于最小信道宽度且每个PE执行的信道少于l时,那么一个计数器可以用作每个信道的预测。
具有少于n*l个元件的条件的IF操作可修改所有计数器,因此可预测具有不同数量个元件的指令预测。
可写入不同循环以计算每个PE的不同元件大小和不同数量的SWAR信道。在其中支持SWAR的一个示例性实施方式中,重新定义LOOP原语以将l看作参数。
在这个实施方案中,NEXT_STAGE原语的伪代码可保留如之前一样。
应注意,上文参考附图论述的活动可应用于涉及信号处理的任何集成电路(尤其是可执行专有软件程序或算法的集成电路),其中的一些可与处理数字化实时数据相关。某些实施方案可涉及多DSP信号处理、浮点处理、信号/控制处理、固定功能处理、微控制器应用程序等等。
在某些背景下,本文中论述的特征可应用于医疗系统、科学仪器、无线和有线通信、雷达、工业程序控制、音频和视频设备、电流感应、仪器(可具有极高精确度)和其它基于数字处理的系统。此外,在用于医疗成像、患者监控、医疗仪器和家用护理的数字信号处理技术中可规定上文论述的某些实施方案。这可包括心肺监护仪、加速计、心率监视器、起搏器等等。其它应用可涉及安全系统(例如,稳定性控制系统、驾驶员辅助系统、刹车系统、任何种类的娱乐和内部应用)的自动化技术。此外,在进行电池监控、控制系统、报告控制、维护活动等等时,(例如,混合和电动车中的)动力系系统可使用高精确度的数据转换产品。
在另外其它示例性案例中,本公开的教学内容可应用于包括有助于提高生产率、能量效率和可靠性的程序控制系统的工业市场。在消费者应用中,上文论述的信号处理电路的教学内容可用于(例如,数字照相机、摄影机(等)的)图像处理、自动聚焦和图像稳定。其它消费者应用可包括家庭剧院系统、DVD录像机和高分辨率电视机的音频和视频处理器。另外其它消费者应用可涉及(例如,任何类型的便携式医疗装置的)先进的触摸屏控制器。因此,这些技术可容易成为智能手机、平板电脑、安全系统、个人计算机(PC)、游戏技术、虚拟实境、模拟训练等等的部分。
结合本文中公开的各个方面描述的各个说明性逻辑块、模块、核心和电路可实施于集成电路(IC)、接入终端或接入点内或由集成电路(IC)、接入终端或接入点执行。IC可以包括通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件、电组件、光学组件、医疗组件或其被设计来执行本文中描述的功能的任何组合,且可以执行驻存在IC内、IC外部或其二者的代码或指令。逻辑块、模块、核心和电路可以包括与网络或装置内的各个组件通信的天线和/或收发机。通用处理器可以是微处理器,但是在备选方案中,处理器可以是任何处理器、控制器、微控制器或状态机。处理器还可以被实施为计算装置的组合,例如DSP与微处理器的组合、多个微处理器、搭配DSP核心的一个或多个微处理器或任何其它这样的配置。模块或核心的功能可以按如本文中教学的方式的某种其它方式实施。此外,本文中描述的功能(例如,关于附图中的一个或多个)可以在某些方面对应于随附权利要求中经类似指定的“用于…的工具”功能。
已描述的功能可以实施于硬件、软件、固件或其任何组合中。如果实施于软件中,那么所述功能可作为一个或多个指令或代码存储在非暂时性计算机可读介质上或通过所述非暂时性计算机可读介质传输。计算机可读介质包括计算机存储介质和通信介质二者,通信介质包括促进计算机程序从一处传送到另一处的任何介质。存储介质可以是可由计算机访问的任何可用介质。例如且无限制,这种计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用以携带或存储呈指令或数据结构的形式的所希望程序代码且可由计算机访问的任何其它介质。计算机可读介质可以呈非暂时性或暂时性计算机可读介质的形式。此外,任何连接可以被适当地称作计算机可读介质。例如,如果所述软件是传输自网站、服务器或使用同轴电缆、光缆、双绞线、数字用户线路(DSL)或诸如红外线、无线电和微波的无线技术的其它远程数据源,那么所述同轴电缆、光缆、双绞线、数字用户线路或诸如红外线、无线电和微波的无线技术包括在介质的定义中。如本文使用,光盘和磁盘包括光盘(CD)、激光碟、光盘、数字通用光盘(DVD)、软盘和其中光盘通常磁性地复制数据而磁盘用激光光学地复制数据的蓝光光盘。上述组合也应包括在计算机可读介质之范围内。总的来说,机器可读介质可以实施于任何适当的计算机程序产品中。
前文概括多个实施方案的特征使得本领域一般技术人员可以更好地理解本公开的各个方面。本领域一般技术人员应明白,他们可以随意地使用本公开作为用于设计或修改用于实行相同目的和/或实现本文中介绍的实施方案的相同优点的其它程序或结构的基础。本领域一般技术人员还应意识到这样等效的构造没有违背本公开的精神和范围,且他们可以在不等效的构造没有违背本公开的精神和范围的情况下在本文中作出各种改变、替代和更改。
本公开的特定实施方案可以随意地包括芯片上系统(SOC)、中央处理单元(CPU)封装。SOC表示将计算机或其它电子系统的组件集成到一个芯片中的集成电路(IC)。其可以包括数字、模拟、混合信号和射频功能:其全部可以被提供在一个芯片基板上。其它实施方案可以包括多芯片模块(MCM),其中多个芯片位于一个电子封装内且被配置来通过电子封装相互紧密交互。在各个其它实施方案中,数字信号处理功能可以实施于专用集成电路(ASIC)、现场可编程门阵列(FPGA)和其它半导体芯片中的一个或多个硅心中。
在示例性实施方式中,本文中概括的处理活动的至少一些部分也可以实施于软件中。在某些实施方案中,这些特征中的一个或多个可以实施于提供在已公开的附图的元件外部的硬件中或可以按任何适当方式合并以实现所希望的功能。各个组件可以包括可合并以实现如本文中概括的操作的软件(或往复式软件)。在另外其它实施方案中,这些元件可以包括任何适当的算法、硬件、软件、组件、模块、接口或促进其的操作的物体。
此外,可以移除或以其它方式合并与已描述的微处理器相关的组件中的一些。一般意义上,附图中描绘的配置在其表示上更具逻辑性,而物理架构则可以包括这些元件的各种排列、组合和/或混合。必须注意,可使用无数种可能的设计配置以实现本文中概括的操作目标。因此,关联的基础设施具有大量替代配置、设计选择、装置可能性、硬件配置、软件实施方式、设备选项等等。
任何经适当配置的处理器组件可执行与数据相关的任何类型的指令以实现本文中详述的操作。本文中公开的任何处理器可将元件或物件(例如,数据)从一个状态或状况转变到另一状态或状况。在另一实例中,本文中概括的某些活动可以使用固定逻辑或可编程逻辑(例如,由处理器执行的软件和/或计算机指令)实施,且本文中认定的元件可能是某种类型的可编程处理器、可编程数字逻辑(例如,现场可编程门阵列(FPGA)、可抹除可编程只读存储器(EPROM)、电可抹除可编程只读存储器(EEPROM))、包括数字逻辑、软件、代码、电子指令、闪存、光盘、CD-ROM、DVD ROM、磁卡或光卡、适用于存储电子指令的其它类型的机器可读介质的ASIC,或其任何适当组合。在操作中,处理器可以将信息存储在任何适当类型的非暂时性存储介质(例如,随机访问存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)、可抹除可编程只读存储器(EPROM)、电可抹除可编程ROM(EEPROM)等等)、软件、硬件或任何其它适当组件、装置中或在适当情况下且基于特定需要存储在物体中。此外,正被追踪、发送、接收或存储在处理器中的信息可基于特定需要和实施方式而被提供在任何数据库、寄存器、表格、高速缓存、队列、控制清单或存储结构中,其全部以任何适当时间表加以引用。本文中论述的任何存储器项应被解释为包括在广义的术语“存储器”中。类似地,本文中描述的任何可能处理元件、模块和机器应被解释为包括在广义的术语“微处理器”或“处理器”中。
实施本文中描述的功能的所有或部分的计算机程序逻辑是以各种形式(包括(但绝不限于)源代码形式、计算机可执行形式和各种中间形式(例如,由汇编器、编译器、链接程序或定位程序产生的形式))具体实施。在实例中,源代码包括以各种编程语言(诸如目标代码、汇编语言或高级语言(诸如搭配各种操作系统或操作环境使用的OpenCL、公式翻译程式语言、C、C++、JAVA或HTML))实施的一系列计算机程序指令。源代码可以定义和使用各种数据结构和通信讯息。源代码可以(例如,经由解译器)呈现计算机可执行形式,或源代码可以(例如,经由转译器、汇编程序或编译器)而转换为计算机可执行形式。
在上文实施方案的论述中,可随意更换、替代或以其它方式修改电容器、缓冲器、图形元件、互连板、时钟、DDR、相机感应器、分配器、电感器、电阻器、放大器、开关、数字核心、晶体管和/或其它组件以适应特定电路系统需要。此外,应注意,使用互补电子装置、硬件、非暂时性软件等等提供用于实施本公开的教学内容的同样可行的选项。
在一个示例性实施方案中,附图的任何数量的电路可实施于相关电子装置的插件板上。所述插件板可能是可固定电子装置的内部电子系统的各个组件且还对其它周边装置提供连接器的通用电路板。更具体地说,所述插件板可提供可让系统的其它组件进行电通信的电连接。任何适当的处理器(包含数字信号处理器、微处理器、支持芯片组等等)、存储器元件等等可基于特定配置需要、处理要求、计算机设计等等而适当地连接到所述插件板。诸如外部存储装置、额外感应器、用于音频/视频显示的控制器和周边装置的其它组件可以经由电缆作为插件附接到所述插件板,或集成到其自身的插件板中。在另一示例性实施方案中,附图的电路可实施为独立模块(例如,具有被配置来执行特定应用程序或功能的相关组件和电路系统的装置)或作为插件模块实施于电子装置的专用硬件中。
应注意,在本文中提供的多个实例中,可以就两个、三个、四个或更多个电组件描述交互。然而,这样做的目的仅是为了简洁和举例。应明白,所述系统可以任何适当方式合并。附图中已说明的任何组件、模块和元件可连同类似设计备选方案组合成各种可能配置,其全部明确地属于这份说明书的广义范围内。在某些情况下,通过仅参照有限数量的电元件可能更加容易地描述给定组的流程的功能中的一个或多个。应明白,附图的电路及其教学内容可随意扩展且可容纳大量组件以及更复杂/精细的配置和构造。因此,已提供的实例在可能应用于大量其它架构时不应限制所述电路的范围或禁止所述电路的广义教学内容。
本领域一般技术人员可以确认多种其它变化、替代、变动、更改和修改,且希望本公开包括属于随附权利要求的范围内的所有这些变化、替代、变动、更改和修改。为辅助美国专利商标局(USPTO)且此外辅助关于本申请发布的任何专利的任何读者解译附属于本申请的权利要求,申请人希望其注意:(a)除非特定权利要求中具体使用单词“用于…的工具”或“用于…的步骤”,否则不希望任何随附权利要求调用35U.S.C.第112章第六(6)段,因为35U.S.C.第112章第六(6)段的存在是关于提交日期;和(b)不希望通过说明书中的任何声明以随附权利要求中未以其它方式反映出来的任何方式限制本公开。

Claims (18)

1.一种处理器,其包括:
处理元件;
序列发生器,其被配置来将条件可执行的指令提供到所述处理元件;和
预测计数器寄存器,其被配置来接收多于两个有用值并提供其值作为预测计数器;
其中所述预测计数器的预定值指示启用所述指令的执行,并且所述预测计数器的其它值指示禁用所述指令的执行并指示循环或条件分支内的嵌套级。
2.根据权利要求1所述的处理器,其还包括:
多个处理元件,其中每个处理元件包括预测计数器寄存器,且其中所述处理器被配置来以单指令多数据模式进行操作。
3.根据权利要求2所述的处理器,其中:
每个处理元件分成多个l信道;
所述处理器被配置来以寄存器内单指令多数据模式进行操作;且
所述处理器还包括预测计数器组,其中所述预测计数器组包括至少n×l个预测计数器,其中n是处理元件的数量。
4.根据权利要求1所述的处理器,其中所述处理器被配置来以寄存器内单指令多数据模式进行操作。
5.根据权利要求4所述的处理器,其中所述处理器包括用于提供取决于所述预测计数器的与所述条件分支相关的IF原语、ELSE原语和ENDIF原语的电路系统。
6.根据权利要求5所述的处理器,其中所述IF原语包括:
接收条件;
如果所述预测计数器不是零,则所述预测计数器递增;
如果所述预测计数器是零且所述条件为假,则将所述预测计数器设置成1。
7.根据权利要求5所述的处理器,其中所述ELSE原语包括:
如果所述预测计数器是零,则将所述预测计数器设置成1;和
如果所述预测计数器是1,则将所述预测计数器设置成零。
8.根据权利要求5所述的处理器,其中所述ENDIF原语包括:
如果所述预测计数器不是零,则所述预测计数器递减。
9.根据权利要求1所述的处理器,其中所述处理器包括用于实施与所述循环相关的LOOP原语和NEXT_STAGE原语的电路系统,其中:
所述LOOP原语被配置来在展开阶段循环的第一指令前执行;和
所述NEXT_STAGE原语被配置来在流水线式阶段循环的阶段之间执行。
10.根据权利要求9所述的处理器,其中所述LOOP原语被配置来以寄存器内单指令多数据模式进行操作,且其中所述LOOP原语被配置来接收多个寄存器内单指令多数据信道作为参数。
11.一种由计算机执行的方法,其包括:
接收与被配置来接收多于两个有用值的预测计数器相关的指令;
如果所述预测计数器是第一值,则执行所述指令;和
如果所述预测计数器是除了所述第一值的值,则忽略所述指令,其中所述除了所述第一值的值指示循环或条件分支内的嵌套级。
12.根据权利要求11所述的方法,其中所述第一值是零。
13.根据权利要求11所述的方法,其中所述第一值选自由零、1、MAXINT、-MAXINT、无穷、负无穷和非数值组成的组。
14.根据权利要求11所述的方法,其还包括:
如果所述预测计数器不是所述第一值,则采取额外动作。
15.根据权利要求11所述的方法,其还包括:
执行取决于所述预测计数器的与所述条件分支相关的IF原语、ELSE原语和ENDIF原语。
16.根据权利要求15所述的方法,其中:
所述IF原语包括:
接收条件;
如果所述预测计数器不是零,则所述预测计数器递增;
如果所述预测计数器是零且所述条件为假,则将所述预测计数器设置成1,
所述ELSE原语包括:
如果所述预测计数器是零,则将所述预测计数器设置成1;和
如果所述预测计数器是1,则将所述预测计数器设置成零;且
所述ENDIF原语包括:
如果所述预测计数器不是零,则所述预测计数器递减。
17.根据权利要求11所述的方法,其还包括:
在流水线式阶段循环中于第一指令前执行与所述循环相关的LOOP原语且在展开循环的阶段之间执行与所述循环相关的NEXT_STAGE原语,所述LOOP原语和NEXT_STAGE原语的执行每个均取决于所述预测计数器。
18.一种计算机,包括如权利要求1-10任意一项所述的处理器。
CN201310487400.5A 2012-10-23 2013-10-17 预测计数器 Active CN103777922B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201261717541P 2012-10-23 2012-10-23
US61/717,541 2012-10-23
US13/720,624 US9201828B2 (en) 2012-10-23 2012-12-19 Memory interconnect network architecture for vector processor
US13/720,624 2012-12-19
US13/963,793 2013-08-09
US13/963,793 US9342306B2 (en) 2012-10-23 2013-08-09 Predicate counter

Publications (2)

Publication Number Publication Date
CN103777922A CN103777922A (zh) 2014-05-07
CN103777922B true CN103777922B (zh) 2018-05-22

Family

ID=50570211

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310487400.5A Active CN103777922B (zh) 2012-10-23 2013-10-17 预测计数器

Country Status (2)

Country Link
KR (1) KR101602020B1 (zh)
CN (1) CN103777922B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107659305A (zh) * 2017-10-19 2018-02-02 郑州云海信息技术有限公司 一种基于cpld的时钟计数方法、装置及介质
TWI783310B (zh) * 2020-11-26 2022-11-11 華邦電子股份有限公司 計數方法以及計數裝置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078852B2 (en) * 2009-05-28 2011-12-13 International Business Machines Corporation Predictors with adaptive prediction threshold

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7127593B2 (en) * 2001-06-11 2006-10-24 Broadcom Corporation Conditional execution with multiple destination stores
US20080016320A1 (en) * 2006-06-27 2008-01-17 Amitabh Menon Vector Predicates for Sub-Word Parallel Operations
US20090327674A1 (en) * 2008-06-27 2009-12-31 Qualcomm Incorporated Loop Control System and Method
US9182959B2 (en) * 2008-08-15 2015-11-10 Apple Inc. Predicate count and segment count instructions for processing vectors
US8464031B2 (en) * 2008-08-15 2013-06-11 Apple Inc. Running unary operation instructions for processing vectors

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078852B2 (en) * 2009-05-28 2011-12-13 International Business Machines Corporation Predictors with adaptive prediction threshold

Also Published As

Publication number Publication date
CN103777922A (zh) 2014-05-07
KR20140051805A (ko) 2014-05-02
KR101602020B1 (ko) 2016-03-25

Similar Documents

Publication Publication Date Title
CN104050025B (zh) 在存在可能的存储器别名的情况下并行化循环的方法
US12254316B2 (en) Vector processor architectures
US8595280B2 (en) Apparatus and method for performing multiply-accumulate operations
EP3614259A1 (en) Processing apparatus and processing method
US9201828B2 (en) Memory interconnect network architecture for vector processor
CN105453045B (zh) 使用动态宽度计算的壁垒同步
CN109213723A (zh) 用于具有安全、功率降低和性能特征的可配置空间加速器的处理器、方法和系统
CN104115113B (zh) 用于循环剩余掩码指令的系统、装置和方法
CN104919432B (zh) 用于将多个位向左移并将多个1拉入较低有效位的指令
US10997102B2 (en) Multidimensional address generation for direct memory access
CN101799760A (zh) 生成任意目标架构的并行单指令多数据代码的系统和方法
CN103777924A (zh) 用于简化寄存器中对单指令多数据编程的处理器体系结构和方法
CN103221933A (zh) 从通用寄存器文件向simd寄存器文件移动数据的方法和装置
CN103547999A (zh) 利用专用元件实施有限状态机
CN107077329A (zh) 用于通过无序硬件软件协同设计处理器中的栈同步指令来实现和维持判定值的栈的方法和设备
US8725486B2 (en) Apparatus and method for simulating a reconfigurable processor
Sano et al. Scalable streaming-array of simple soft-processors for stencil computations with constant memory-bandwidth
CN103946797B (zh) 用于转换矢量指令的系统、装置和方法
CN108369510A (zh) 用于以无序加载的置换的指令和逻辑
US8769244B2 (en) SIMD parallel computer system, SIMD parallel computing method, and control program
CN106796502A (zh) 从3d坐标计算3d z曲线索引的机器级指令
CN108269226A (zh) 用于处理稀疏数据的装置和方法
CN110333867A (zh) 一种多方安全计算数据处理方法、装置及系统
CN107257955A (zh) 快速向量动态存储器冲突检测
Cho et al. AB9: A neural processor for inference acceleration

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: ANALOG DEVICES, INC.

Free format text: FORMER OWNER: ANALOG DEVICES TECHNOLOGY COMPANY

Effective date: 20141231

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

Effective date of registration: 20141231

Address after: Bermuda (UK) Hamilton

Applicant after: ANALOG DEVICES GLOBAL

Address before: Bermuda (UK) Hamilton

Applicant before: Analog Devices Global

GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Limerick

Patentee after: Analog Devices Global Unlimited Co.

Address before: Bermuda (UK) Hamilton

Patentee before: Analog Devices Global

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210805

Address after: Limerick

Patentee after: ANALOG DEVICES INTERNATIONAL UNLIMITED Co.

Address before: Limerick

Patentee before: Analog Devices Global Unlimited Co.