CN106537330B - 通过使用数据索引化累加器使标量操作并行化的方法和处理器 - Google Patents

通过使用数据索引化累加器使标量操作并行化的方法和处理器 Download PDF

Info

Publication number
CN106537330B
CN106537330B CN201580039295.6A CN201580039295A CN106537330B CN 106537330 B CN106537330 B CN 106537330B CN 201580039295 A CN201580039295 A CN 201580039295A CN 106537330 B CN106537330 B CN 106537330B
Authority
CN
China
Prior art keywords
vector
write
accumulator
input data
index
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.)
Expired - Fee Related
Application number
CN201580039295.6A
Other languages
English (en)
Other versions
CN106537330A (zh
Inventor
卢西恩·科德雷斯库
艾瑞克·韦恩·马胡林
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN106537330A publication Critical patent/CN106537330A/zh
Application granted granted Critical
Publication of CN106537330B publication Critical patent/CN106537330B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/82Architectures of general purpose stored program computers data or demand driven
    • 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/30098Register arrangements
    • 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/3012Organisation of register space, e.g. banked or distributed register file

Landscapes

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

Abstract

本发明揭示通过向量处理器使用向量寄存器堆中的数据索引化累加器使标量操作并行化,以及相关电路、方法和计算机可读媒体。在一个方面中,向量处理器包括提供多个写入端口和多个向量寄存器的向量寄存器堆,每一向量寄存器提供多个累加器。所述向量处理器接收输入数据向量。对于所述多个写入端口中的每一者,所述向量处理器执行向量操作以存取所述输入数据向量的输入数据值,并且基于所述输入数据值确定所述多个向量寄存器当中的向量寄存器的寄存器索引,以及所述向量寄存器的所述多个累加器当中的累加器的累加器索引。基于所述寄存器索引,从所述寄存器索引检索寄存器值,并且基于所述寄存器值和所述累加器索引执行标量操作。

Description

通过使用数据索引化累加器使标量操作并行化的方法和处 理器
优先权主张
本申请案主张2014年7月25日申请的标题为“通过向量处理器使用向量寄存器堆中的数据索引化累加器使标量操作并行化,以及相关电路、方法和计算机可读媒体(PARALLELIZATION OF SCALAR OPERATIONS BY VECTOR PROCESSORS USING DATA-INDEXEDACCUMULATORS IN VECTOR REGISTER FILES,AND RELATED CIRCUITS,METHODS,ANDCOMPUTER-READABLE MEDIA)”的第62/029,039号美国临时专利申请案的优先权,所述美国临时专利申请案以全文引用的方式并入本文中。
本申请案还主张2014年9月15日申请的标题为“通过向量处理器使用向量寄存器堆中的数据索引化累加器使标量操作并行化,以及相关电路、方法和计算机可读媒体(PARALLELIZATION OF SCALAR OPERATIONS BY VECTOR PROCESSORS USING DATA-INDEXEDACCUMULATORS IN VECTOR REGISTER FILES,AND RELATED CIRCUITS,METHODS,ANDCOMPUTER-READABLE MEDIA)”的第14/486,326号美国专利申请案的优先权,所述美国专利申请案以全文引用的方式并入本文中。
技术领域
本发明的技术大体上涉及使用向量处理器的并行数据处理。
背景技术
现代计算机处理器遇到的一种类别的计算任务涉及基于输入数据对数个累加器中的一者执行标量操作,其中输入数据的值确定哪一累加器是每一标量操作的目标。此类别的计算任务的一非限制性实例是直方图生成。为生成直方图,处理器计算个别数据值或数据值范围在输入数据内发生的累计频率(例如,通过对每一数据值在输入数据内出现的次数进行计数)。以此方式,可确定数据值在输入数据内的总体分布,且可使用所述总体分布生成所述分布的视觉表示。
在图像处理中频繁使用直方图,以通过绘制数字图像内的每一色调值的像素数目来说明数字图像中的色调分布。举例来说,数字图像可包括各自具有8位强度值的像素。因此,从数字图像生成直方图可需要处理器使用256(即,28)个累加器,其中每一累加器对应于数字图像的像素的可能的强度值中的一者。处理器进行操作以检查数字图像的每一像素并且确定像素的强度值。接着使用像素的强度值确定应使哪一累加器递增。
例如直方图生成的计算任务可为计算密集型,这是因为对每一数据值的处理涉及接收数据值作为输入,检索对应于所述数据值的累加器的值,以及基于对所检索的值执行的标量操作将新值写入到累加器。因此,每一数据值可需要处理多个处理器时钟循环。此外,对输入数据的处理可进一步受用以更新累加器的带宽的可用性限制。举例来说,存储有累加器的数据高速缓冲存储器可在每一处理器时钟循环期间仅提供有限数目的读取路径和/或写入路径。
用于优化此类别的计算任务的一种方法涉及使用多指令多数据(MIMD)技术使标量操作并行化的多核心处理的使用。在此方法下,多核心处理器的每一处理线程提供私有累加器集合,并且处理输入数据的一段。在所有处理线程完成对输入数据的相应部分的处理之后,接着将用于处理线程中的每一者的累加器“减少”或加在一起。然而,此方法可在处理线程当中引起相依性问题和/或存储器冲突,且在使用额外处理群集时可能仅提供最小性能增加。
发明内容
详细描述中所揭示的方面包含通过向量处理器使用向量寄存器堆中的数据索引化累加器使标量操作并行化。还揭示相关电路、方法和计算机可读媒体。就此而言,在一个方面中,向量处理器经配置以提供用于使标量操作并行化的单指令多数据(SIMD)功能性。向量处理器包含提供多个向量寄存器的向量寄存器堆。每一向量寄存器逻辑上细分为多个累加器。所述多个向量寄存器中的累加器的总数目对应于预期输入数据中的可能的数据值的数目。向量寄存器堆还提供使得能够在每一处理器时钟循环期间做出到向量寄存器的多个写入的多个写入端口。为实现标量操作的并行化,向量处理器经配置以接收输入数据向量。向量处理器接着对向量寄存器堆的每一写入端口执行向量操作以存取输入数据值(例如,输入数据向量的子集)。对于每一输入数据值,确定寄存器索引和累加器索引。寄存器索引和累加器索引可一起充当到适当累加器的映射,其中寄存器索引指示含有累加器的向量寄存器,且累加器索引指示向量寄存器内的特定累加器。因此,累加器可被视为“经数据索引化”,因为输入数据值确定将作用于的累加器。对由寄存器索引指示的向量寄存器执行标量操作,其中基于寄存器索引和累加器索引进行特定标量操作。以此方式,向量处理器可利用向量寄存器堆的数据并行化能力增加处理带宽,因此改进总体处理性能。
在另一方面中,提供一种向量处理器,其包括向量寄存器堆。所述向量寄存器堆包含多个向量寄存器,每一向量寄存器经配置以提供多个累加器。所述向量寄存器堆还经配置以提供多个写入端口。所述向量处理器经配置以接收输入数据向量。对于所述多个写入端口中的每一写入端口,所述向量处理器经配置以执行一或多个向量操作以存取所述输入数据向量的输入数据值。所述向量处理器经进一步配置以对于所述多个写入端口中的每一写入端口,基于所述输入数据值确定指示所述多个向量寄存器当中的向量寄存器的寄存器索引。所述向量处理器还经配置以对于所述多个写入端口中的每一写入端口,基于所述输入数据值确定指示所述向量寄存器的所述多个累加器当中的累加器的累加器索引。所述向量处理器另外经配置以基于所述寄存器索引和所述累加器索引,对由所述寄存器索引指示的所述向量寄存器执行标量操作。
在另一方面中,提供一种向量处理器,其包括用于接收输入数据向量的装置。所述向量处理器进一步包括对于所述向量处理器的向量寄存器堆的多个写入端口中的每一写入端口,用于存取所述输入数据向量的输入数据值的装置。所述向量处理器还包括对于所述多个写入端口中的每一写入端口,用于基于所述输入数据值确定指示所述向量寄存器堆中的多个向量寄存器当中的向量寄存器的寄存器索引的装置。所述向量处理器另外包括对于所述多个写入端口中的每一写入端口,用于基于所述输入数据值确定指示所述向量寄存器的多个累加器当中的累加器的累加器索引的装置。所述向量处理器进一步包括对于所述多个写入端口中的每一写入端口,用于基于所述寄存器索引和所述累加器索引对由所述寄存器索引指示的所述向量寄存器执行标量操作的装置。
在另一方面中,提供一种用于用向量处理器使标量操作并行化的方法。所述方法包括通过向量处理器接收输入数据向量。所述方法进一步包括对于所述向量处理器的向量寄存器堆的多个写入端口中的每一写入端口,执行一或多个向量操作以存取所述输入数据向量的输入数据值。所述方法还包括对于所述多个写入端口中的每一写入端口,执行所述一或多个向量操作以基于所述输入数据值,确定指示所述向量寄存器堆中的多个向量寄存器当中的向量寄存器的寄存器索引。所述方法另外包括对于所述多个写入端口中的每一写入端口,执行所述一或多个向量操作以基于所述输入数据值,确定指示所述向量寄存器的多个累加器当中的累加器的累加器索引。所述方法进一步包括对于所述多个写入端口中的每一写入端口,执行所述一或多个向量操作基于所述寄存器索引和所述累加器索引,对由所述寄存器索引指示的所述向量寄存器执行标量操作。
在另一方面中,提供一种存储有计算机可执行指令的非暂时性计算机可读媒体。所述计算机可执行指令致使向量处理器接收输入数据向量。所述计算机可执行指令进一步致使所述向量处理器对于所述向量处理器的向量寄存器堆的多个写入端口中的每一写入端口,执行一或多个向量操作以存取所述输入数据向量的输入数据值。所述计算机可执行指令还致使所述向量处理器对于所述多个写入端口中的每一写入端口,执行所述一或多个向量操作以基于所述输入数据值,确定指示所述向量寄存器堆中的多个向量寄存器当中的向量寄存器的寄存器索引。所述计算机可执行指令另外致使所述向量处理器对于所述多个写入端口中的每一写入端口,执行所述一或多个向量操作以基于所述输入数据值,确定指示所述向量寄存器的多个累加器当中的累加器的累加器索引。所述计算机可执行指令进一步致使所述向量处理器对于所述多个写入端口中的每一写入端口,执行所述一或多个向量操作以基于所述寄存器索引和所述累加器索引,对由所述寄存器索引指示的所述向量寄存器执行标量操作。
附图说明
图1是可包含使标量操作并行化的向量处理器的示范性计算机处理器的框图;
图2是用于使标量操作并行化的图1的向量处理器内的示范性通信流和逻辑元件的框图;
图3是说明图1的向量处理器处理输入数据值的示范性结果的图示;
图4是说明用于通过图1的向量处理器使用向量寄存器堆中的数据索引化累加器使标量操作并行化的示范性过程的流程图;
图5是说明用于通过图1的向量处理器合并标量操作的进一步示范性操作的流程图;和
图6是可包含图1的向量处理器的示范性基于处理器的系统的框图。
具体实施方式
现参考各图,描述本发明的若干示范性方面。词语“示范性”在本文中用于意指“充当实例、例子或说明”。本文中描述为“示范性”的任何方面未必理解为比其它方面优选或有利。
在详细描述中所揭示的方面包含通过向量处理器使用向量寄存器堆中的数据索引化累加器使标量操作并行化。还揭示相关电路、方法和计算机可读媒体。就此而言,在一个方面中,向量处理器经配置以提供用于使标量操作并行化的单指令多数据(SIMD)功能性。向量处理器包含提供多个向量寄存器的向量寄存器堆。每一向量寄存器逻辑上细分为多个累加器。所述多个向量寄存器中的累加器的总数目对应于预期输入数据中的可能的数据值的数目。向量寄存器堆还提供使得能够在每一处理器时钟循环期间做出到向量寄存器的多个写入的多个写入端口。为实现标量操作的并行化,向量处理器经配置以接收输入数据向量。向量处理器接着对向量寄存器堆的每一写入端口执行向量操作以存取输入数据值(例如,输入数据向量的子集)。对于每一输入数据值,确定寄存器索引和累加器索引。寄存器索引和累加器索引可一起充当到适当累加器的映射,其中寄存器索引指示含有累加器的向量寄存器,且累加器索引指示向量寄存器内的累加器。因此,累加器可被视为“经数据索引化”,因为输入数据值确定将作用于的累加器。对由寄存器索引指示的向量寄存器执行标量操作,其中基于寄存器索引和累加器索引进行特定标量操作。以此方式,向量处理器可利用向量寄存器堆的数据并行化能力增加处理带宽,因此改进总体处理性能。
就此而言,图1是包含用于使标量操作并行化的示范性向量处理器12的计算机处理器10的示意图。如下文将更详细地论述,向量处理器12包含执行单元14和向量寄存器堆16,其与其它特定示范性电路和功能性一起提供包含本文中所揭示的示范性向量处理操作的向量处理操作。计算机处理器10和其向量处理器12可涵盖已知数字逻辑元件、半导体电路、处理核心和/或存储器结构以其它元件或其组合中的任一者。
在论述特定电路和经配置以由本发明中的用于使用向量寄存器堆16使标量操作并行化的向量处理器12提供的向量处理操作(其开始于图2)之前,首先描述图1中的计算机处理器10的组件。如上所述,向量处理器12包含向量寄存器堆16,其提供向量寄存器18(0)到18(X)。向量寄存器18(0)到18(X)可存储由向量处理器12以SIMD方式执行的向量指令将作用于的数据。在一些方面中,可使用多个物理寄存器堆(未示出)实施向量寄存器堆16,每一物理寄存器堆每个处理器时钟循环提供多个读取端口20(0)到20(Y)和多个写入端口22(0)到22(Z)。物理寄存器堆可包括例如快速随机存取存储器(RAM)。向量寄存器堆16可包括多于一个物理寄存器堆,每一物理寄存器堆提供其自身的读取端口和写入端口。举例来说,向量寄存器堆16可为512位宽,且可实施为四(4)个128位宽物理寄存器堆,每一物理寄存器堆每个处理器时钟循环提供八(8)个读取端口和四(4)个写入端口。为支持向量处理器12的所说明元件,计算机处理器10和/或向量处理器12可包含其它额外组件,为清楚起见,图1省略了这些额外组件。
继续参考图1,在此方面中的计算机处理器10还包含标量处理器24,以除由向量处理器12提供的向量处理之外,还在计算机处理器10提供标量处理。以此方式,计算机处理器10可经配置以支持基于所执行的指令的类型的向量和标量指令操作两者以用于高效率操作。在一些方面中,作为非限制性实例,标量处理器24可为32位精简指令集计算(RISC)标量处理器。在此实例中,标量处理器24包含用于支持标量指令处理的算术逻辑单元(ALU)26。标量处理器24还可包含供标量处理器24在执行标量指令时使用的通用寄存器(GPR)28。通用寄存器28可以通信方式耦合到ALU 26,如由箭头30指示。标量处理器24可进一步包含以通信方式耦合到ALU 26的数据高速缓冲存储器32,如由箭头34所展示。数据高速缓冲存储器32可用于ALU 26所频繁使用的数据的高速存储和恢复。
计算机处理器10进一步包含指令分配电路36,其经配置以从程序存储器38提取指令,如由箭头40指示。指令分配电路36可解码所提取的指令。基于所述指令的类型,指令分配电路36可经由标量数据路径42将所提取的指令引导到标量处理器24,或通过向量数据路径44将所提取的指令引导到向量处理器12。
如上文所论述,计算机处理器10可遇到的一种类别的计算任务涉及对数据索引化累加器(即,确定哪一累加器是标量操作的目标的输入数据的值所确定的累加器)执行标量操作。使用标量处理器24执行这些计算任务可引起次最佳处理器性能。作为一实例,每一输入数据值可需要多个处理器时钟循环以用于标量处理器24进行处理。对输入数据的处理可进一步受可用以标量处理器24更新累加器的带宽限制。举例来说,累加器可存储于数据高速缓冲存储器32中,所述数据高速缓冲存储器可在每一处理器时钟循环期间仅提供有限数目的读取端口(未示出)和/或写入端口(未示出)。
就此而言,图1的向量处理器12经配置以使用向量寄存器堆16中的数据索引化累加器提供标量操作的并行化。为说明在标量操作的并行化期间向量处理器12内的示范性通信流和逻辑元件,提供图2。出于说明的目的,将由向量处理器12执行的计算任务假设为含有各自具有8位强度值的像素的数字图像的直方图的生成。
在图2的实例中,向量处理器12的向量寄存器堆16包含总计三十二(32)个向量寄存器18,其被称为向量寄存器18(0)到18(31)。向量寄存器18中的每一者逻辑上细分为八个累加器(“ACC”)46,其中向量寄存器18(0)含有累加器46(0)到46(7),向量寄存器18(1)含有累加器46(8)到46(15),以此类推,一直到向量寄存器18(31)含有累加器46(248)到46(255)。累加器46(0)到46(255)中的每一者分别存储指示数字图像中的具有0到255的强度的像素的计数的值。因此,在此实例中将通过向量处理器12并行化的标量操作包括使存储于累加器46(0)到46(255)中的一或多者中的值递增。应理解,在一些方面中,将并行化的标量操作可包括对存储于累加器46(0)到46(255)中的一或多者中的值执行的额外和/或不同的算术和/或逻辑操作。
在此实例中的向量寄存器堆16提供总计四(4)个写入端口22(0)到22(3),使得能够在每一处理器时钟循环期间更新向量寄存器18中的多达四(4)个向量寄存器。写入端口22(0)到22(3)对应于图1的的写入端口22(0)到22(Z),且提供对应于写入端口22(0)到22(Z)的功能性的功能性。向量寄存器堆16的一些方面可提供比图2中所说明的更多或更少的写入端口22。在一些方面中,在图2中展示的向量寄存器堆16可对应于多个物理寄存器堆(未示出)中的一者,每一物理寄存器堆提供写入端口22。向量寄存器堆16因此可进一步包括图2中未示出的额外物理寄存器堆和额外写入端口22。
向量处理器12接收表示数字图像内的将用于生成直方图的像素强度值集合的输入数据向量19。在此实例中,输入数据向量19是包括编号为0到15的十六(16)个值的向量。根据一些方面,输入数据向量19可为十六(16)个8位值的128位向量。作为非限制性实例,输入数据向量19可经接收作为输入流(未示出),或可存储于向量处理器12可存取的寄存器或其它存储器(未示出)中。在一些方面中,输入数据向量19可包括比在图2中所展示的更多或更少的位和/或更多或更少的值。
对于写入端口22(0)到22(3)中的每一者,向量处理器12提供对应的多路复用器逻辑块48(0)到48(3)。在一些方面中,多路复用器逻辑块48(0)到48(3)可实施为定义用于执行本文中所描述的操作的向量指令的微码。每一多路复用器逻辑块48接收输入数据向量19的子集作为输入,并且从所述子集选择一个输入数据值50以用于在处理器时钟循环期间进行处理。在图2的实例中,多路复用器逻辑块48中的每一者从输入数据向量19接收四(4)个值,并且从所述四(4)个值选择一个输入数据值50。因此,向量处理器12可在四(4)个处理器时钟循环中处理完整输入数据向量19。
如上文所论述,当生成直方图时,输入数据值50中的每一者指示将使哪一累加器46递增。举例来说,如果输入数据值50(0)是255(指示像素强度为255),那么向量处理器12应致使对应的累加器46(255)递增。因为累加器46存储于向量寄存器18(0)到18(31)内,所以需要向量处理器12解码输入数据值50以确定哪一特定向量寄存器18含有将递增的累加器46。因此,如图2所示的向量处理器12提供分别用于多路复用器逻辑块48(0)到48(3)的寄存器解码器(“REG DEC”)52(0)到52(3)。在一些方面中,寄存器解码器52(0)到52(3)可实施为定义用于执行本文中所描述的操作的向量指令的微码。
寄存器解码器52(0)到52(3)中的每一者从对应多路复用器逻辑块48(0)到48(3)接收相应输入数据值50(0)到50(3),并且对输入数据值50(0)到50(3)分别进行操作以生成寄存器索引54(0)到54(3)。寄存器索引54(0)到54(3)中的每一者指示含有将递增的累加器46的向量寄存器18中的一者。在图2的实例中,寄存器解码器52中的每一者对对应输入数据值50进行操作以生成具有在从0到31的范围内的值的寄存器索引54。因为在此实例中的输入数据值50中的每一者是8位值,所以生成寄存器索引54可通过执行输入数据值50中的每一者的八(8)位逻辑右移三(3)位而实现。应理解,寄存器解码器52可执行额外和/或不同操作以生成寄存器索引54。
如图2中所见,向量寄存器18(0)到18(31)中的每一者含有八(8)个累加器46。因此,进一步需要向量处理器12解码输入数据值50以确定由寄存器索引54标识的向量寄存器18内的哪一特定累加器46应递增。就此而言,向量处理器12分别为多路复用器逻辑块48(0)到48(3)提供累加器解码器(“ACC DEC”)56(0)到56(3)。一些方面可提供累加器解码器56(0)到56(3)实施为定义用于执行本文中所描述的操作的向量指令的微码。
累加器解码器56(0)到56(3)从对应多路复用器逻辑块48(0)到48(3)接收相应输入数据值50(0)到50(3),并且分别对输入数据值50(0)到50(3)进行操作以生成累加器索引58(0)到58(3)。累加器索引58(0)到58(3)中的每一者指示由寄存器索引54中的对应一者标识的向量寄存器18中的一者内的累加器46中的一者。在此实例中,累加器索引58中的每一者必须为在从0到7的范围内的值(即,3位值),指示由寄存器索引54中的对应一者标识的向量寄存器18中的一者内的八(8)个累加器46中的哪一者将递增。因此,生成累加器索引58可通过掩蔽输入数据值50中的每一者的五(5)个高阶位(例如,通过执行逻辑“与”(AND)操作)而实现。应理解,累加器解码器56可执行额外和/或不同操作以生成累加器索引58。
寄存器索引54和累加器索引58一旦生成,向量处理器12便可合成向量指令(未示出)以对向量寄存器18以适当方式执行标量操作。在图2的实例中,其中所执行的计算任务是直方图生成,向量处理器12可基于寄存器索引54和对应累加器索引58执行向量指令以使累加器46递增。在一些方面中,使多个累加器46递增可包含以下操作:检索向量寄存器18中的一者的寄存器值,基于寄存器值和累加器索引58中的对应一者执行标量操作(在此实例中为加法)以生成结果值,以及将结果值存储于向量寄存器18中。应理解,一些方面可提供所述结果值可由除在此实例中论述的那些标量操作以外的额外和/或其它标量操作产生。将进一步理解,标量操作可包含例如计算加权直方图,其中被包含为输入数据值50(0)到50(3)中的一者的一部分的加权值(未示出)加到向量寄存器18中的一者的寄存器值以生成结果值。
如上文所论述,在图2的实例中,向量处理器12在每一处理器时钟循环期间可实现四(4)个标量操作(其中每一者是针对写入端口22(0)到22(3)中的一者)。在一些情况下,向量处理器12可确定可合并标量操作中的一或多者。举例来说,输入数据值50中的两者或更多者可为不同的,但其值可为足够接近的以使得在单一处理器时钟循环期间可能需要使向量寄存器18中的单一者内的累加器46中的两者或更多者递增。输入数据值50中的两者或更多者甚至可为相同的,在此情况下,在处理器时钟循环期间可能需要不止一次地使累加器46中的相同者递增。因此,在一些方面中,向量处理器12可提供冲突合并逻辑块60以用于确定标量操作中的一或多者是否可合并为单一经合并标量操作。在一些方面中,冲突合并逻辑块60可实施为定义用于执行本文中所描述的操作的向量指令的微码。
一些方面可提供冲突合并逻辑块60可确定对应于写入端口22中的两者或更多者的寄存器索引54中的两者或更多者是相同的。在此情况下,向量处理器12可合成向量指令以将对由匹配寄存器索引54指示的向量寄存器18内的多个累加器46执行的标量操作合并为单一经合并标量操作。在一些方面中,冲突合并逻辑块60可进一步确定对应于匹配寄存器索引54的累加器索引58中的两者或更多者也是相同的。因此,向量处理器12可合成向量指令以将对由匹配累加器索引58指示的累加器46执行的标量操作合并为经合并标量操作(例如,以使累加器46递增大于一)。
如上所述,在一些方面中,图1的向量寄存器堆16可实施为多个物理寄存器堆(未示出),每一物理寄存器堆提供多个写入端口22中的一或多个写入端口。在此些方面中向量处理器12可经配置以同时对所述多个物理寄存器堆中的每一者执行上文关于图2所描述的操作,从而引起甚至更大程度的并行化。作为非限制性实例,可接收输入数据向量19作为多个输入数据向量子集(未示出),所述多个输入数据向量子集中的每一者可对应于所述多个物理寄存器堆中的一者。向量处理器12接着可同时对每一物理寄存器堆的每一写入端口22执行向量操作以同时处理所述输入数据向量子集。以此方式,多个物理寄存器堆中的每一者可用作用于将输入数据的一部分的并行处理成对应于输入数据的所述部分的直方图的单独“通道”。在一些方面中,向量处理器12接着可将每一物理寄存器堆的向量寄存器18中的对应累加器46求和以产生针对输入数据的整个主体的直方图。
图3说明处理输入数据向量64的输入数据值62的图2的向量处理器12的示范性结果。为清楚起见,图3仅展示进行处理的单一输入数据值62,其对应于经由图2的向量寄存器堆16的写入端口22中的一者的标量操作。然而,应理解,向量处理器12可对图2的向量寄存器堆16的多个写入端口22并行地执行图3所说明的处理的多个例子。
在图3中,向量处理器12的向量寄存器堆16包含总计三十二(32)个向量寄存器18,其被称为向量寄存器18(0)到18(31)。向量寄存器18中的每一者逻辑上细分为八(8)个累加器(“ACC”)46,其中向量寄存器18(0)含有累加器46(0)到46(7),以此类推,一直到向量寄存器18(31)含有累加器46(248)到46(255)。累加器46中的每一者主开始处理之前初始化为值零(0)。
在图3中,向量处理器12接收输入数据向量64,并且可将包括输入数据向量64的8位值66(0)到66(3)的子集提供到多路复用器逻辑块68。多路复用器逻辑块68选择值66中的一者(在此实例中为值66(3))作为输入数据值62。如图3中所见,输入数据值62具有二进制值1111 1010(在十进制中为250),表示像素强度值为250。接着将输入数据值62提供到寄存器解码器(“REG DEC”)70和累加器解码器(“ACC DEC”)72,以将输入数据值62映射到适当的向量寄存器18和适当的累加器46。
在此实例中,寄存器解码器70通过执行输入数据值62的多个位逻辑右移三(3)位来产生输入数据值62的寄存器索引74。如图3中所见的结果是具有二进制值0001 1111(在十进制中为31)的寄存器索引74。因此,寄存器索引74指示向量寄存器18(31)含有将通过向量处理器12递增的累加器46。累加器解码器72通过掩蔽输入数据值62的五(5)个高阶位来产生累加器索引76。此是通过对输入数据值62和二进制值111(在十进制中为7)执行逻辑“与”操作而实现。所得累加器索引76具有二进制值0000 0010,或在十进制中为2。基于累加器索引76,向量处理器12可确定向量寄存器18(31)的第三累加器46(从右边从零计数)是标量操作的目标。如图3中所展示,此对应于累加器46(250)。因此,向量处理器12执行向量指令以执行标量操作(在此情况下,使累加器46(250)递增一)。
图4是说明用于通过图2的向量处理器12使用向量寄存器堆16中的累加器46使标量操作并行化的示范性过程的流程图。为清楚起见,在描述图4时引用图2和3的元件。在图4中,操作以向量处理器12接收输入数据向量64(框78)开始。向量处理器12接着执行向量指令以对向量处理器12的向量寄存器堆16的多个写入端口22中的每一写入端口22(0)到22(Z)执行操作,如由框80指示。应理解,可同时对多个写入端口22中的每一者执行框80中所说明的操作。
向量处理器12首先存取输入数据向量64的输入数据值62(框82)。如上文所论述,输入数据值62可表示输入数据向量64的子集。基于输入数据值62,向量处理器12确定指示向量寄存器堆16中的多个向量寄存器18当中的向量寄存器18(31)的寄存器索引74(框84)。在一些方面中,向量处理器12可通过执行输入数据值62的多个位的一或多个逻辑右移来确定寄存器索引74(框86)。向量处理器12还基于输入数据值62确定指示向量寄存器18的多个累加器46当中的累加器46(250)的累加器索引76(框88)。一些方面可提供向量处理器12通过将输入数据值62的一或多个高阶位掩蔽为零(0)来确定累加器索引76(框90)。应理解,向量处理器12可执行额外和/或其它操作以基于输入数据值62确定寄存器索引74和/或累加器索引76。
向量处理器12接着基于寄存器索引74和累加器索引76对由寄存器索引74指示的向量寄存器18(31)执行标量操作(框92)。作为非限制性实例,标量操作可包括用以使由累加器索引76指示的累加器46递增的操作。在一些方面中,标量操作可包含对累加器46的额外和/或其它算术和/或逻辑操作。举例来说,标量操作可包含根据被包含为输入数据值62的一部分的加权值(未示出)计算递增的累加器46中加权直方图。
如上文关于图2所论述,向量处理器12可在一些情况下通过合并将在单一处理器时钟循环期间执行的标量操作来改进其性能。就此而言,提供图5以说明用于合并标量操作的进一步示范性操作的流程图。为清楚起见,在描述图5时引用图2和3的元件。应理解,可在图4的框88和90的操作之后进行图5中所说明的操作。
在图5中,向量处理器12基于针对多个写入端口22中的每一写入端口22(0)到22(Z)的寄存器索引54和累加器索引58中的一或多者,确定可合并针对多个写入端口22中的对应两个或更多个端口22(0)到22(Z)的两个或更多个标量操作(框94)。在一些方面中,向量处理器12可确定可通过确定针对第一写入端口22(0)到22(Z)的寄存器索引54与针对多个写入端口22中的一或多个其它写入端口22(0)到22(Z)的寄存器索引54相同,来合并两个或更多个标量操作(框96)。一些方面可提供向量处理器12可确定可通过进一步确定针对第一写入端口22(0)到22(Z)的累加器索引58与针对多个写入端口22中的一或多个其它写入端口22(0)到22(Z)的累加器索引58相同,来合并两个或更多个标量操作(框98)。
向量处理器12接下来将两个或更多个标量操作组合为经合并标量操作(框100)。作为非限制性实例,使相同累加器46递增一(1)的两个标量操作可合并成经合并标量操作以使累加器46递增二(2)。向量处理器12接着通过执行经合并标量操作来执行标量操作(框102)。
根据本文中所揭示的各方面通过向量处理器使用向量寄存器堆中的数据索引化累加器使标量操作并行化可提供于任何基于处理器的装置中或集成到任何基于处理器的装置中。实例包含但不限于机顶盒、娱乐单元、导航装置、通信装置、固定位置数据单元、移动位置数据单元、移动电话、蜂窝式电话、计算机、便携式计算机、桌上型计算机、个人数字助理(PDA)、监视器、计算机监视器、电视机、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字影音光盘(DVD)播放器和便携式数字视频播放器。
就此而言,图6说明可使用图1到3中所说明的向量处理器(VP)12的基于处理器的系统104的实例。在此实例中,基于处理器的系统104包含一或多个中央处理单元(CPU)106,每一中央处理单元包含一或多个处理器108。一或多个处理器108可包含图1到3的向量处理器(VP)12。CPU 106可为主控装置。CPU 106可具有耦合到处理器108以用于快速存取暂时存储的数据的高速缓冲存储器110。CPU 106耦合到系统总线112且可为包含在基于处理器的系统104中的互耦主控和从属装置。如所熟知,CPU 106通过经由系统总线112交换地址、控制和数据信息与这些其它装置通信。举例来说,CPU 106可将总线事务请求传达到存储器控制器114(其作为从属装置的一实例)。
其它主控和从属装置可连接到系统总线112。如图6中所说明,作为实例,这些装置可包含存储器系统116、一或多个输入装置118、一或多个输出装置120、一或多个网络接口装置122,以及一或多个显示器控制器124。输入装置118可包含任何类型的输入装置,包含但不限于输入键、开关、语音处理器等。输出装置120可包含任何类型的输出装置,包含但不限于音频、视频、其它视觉指示符等。网络接口装置122可为经配置以允许将数据交换到网络126以及从网络126交换数据的任何装置。网络126可为任何类型的网络,包含但不限于有线或无线网络、私用或公共网络、局域网(LAN)、广域网(WLAN)以及因特网。网络接口装置122可经配置以支持所要的任何类型的通信协议。存储器系统116可包含一或多个存储器单元128(0到N)。
CPU 106还可经配置以经由系统总线112接入显示器控制器124以控制发送到一或多个显示器130的信息。显示器控制器124经由一或多个视频处理器132将信息发送到显示器130以进行显示,所述一或多个视频处理器132将待显示的信息处理成适合于显示器130的格式。显示器130可包含任何类型的显示器,包含但不限于阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器等。
所属领域的技术人员将进一步了解,结合本文中所揭示的各方面所描述的各种说明性逻辑块、模块、电路和算法可被实施为电子硬件、存储于存储器中或另一计算机可读媒体中且由处理器或其它处理装置执行的指令,或此两者的组合。作为实例,本文中所描述的主控和从属装置可用于任何电路、硬件组件、集成电路(IC)或IC芯片中。本文中所揭示的存储器可为任何类型和大小的存储器,并且可经配置以存储所要的任何类型的信息。为清楚地说明此可互换性,上文已大体上关于功能性描述了各种说明性组件、块、模块、电路和步骤。如何实施此功能性取决于特定应用、设计选项和/或强加于整个系统的设计约束。熟练的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但此类实施决策不应被解释为引起偏离本发明的范围。
结合本文中所揭示的方面描述的各种说明性逻辑块、模块和电路可用以下各项来实施或执行:处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件,或经设计以执行本文中所描述的功能的其任何组合。处理器可为微处理器,但在替代方案中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器、一或多个微处理器结合DSP核心,或任何其它此类配置。
本文中所揭示的各方面可以硬件和存储于硬件中的指令来体现,且可驻存于(例如)随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移除磁盘、CD-ROM或所属领域中已知的任何其它形式的计算机可读媒体中。示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息并且将信息写入到存储媒体。在替代方案中,存储媒体可集成到处理器。处理器和存储媒体可驻存于ASIC中。ASIC可驻存在远程站中。在替代方案中,处理器和存储媒体可作为离散组件驻存在远程站、基站或服务器中。
还应注意,描述本文中的示范性方面中的任一者中所描述的操作步骤以提供实例和论述。可用除了所说明的序列之外的大量不同序列执行所描述的操作。另外,在单个操作步骤中所描述的操作实际上可在许多不同步骤中执行。另外,可组合在示范性方面中所论述的一或多个操作步骤。应理解,如所属领域的技术人员将容易显而易见的是,流程图中所说明的操作步骤可以经受众多不同修改。所属领域的技术人员还将理解,可使用多种不同技术和技法中的任一者来表示信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。
提供本发明的前述描述以使所属领域的技术人员能够制造或使用本发明。对所属领域的技术人员来说,对本发明的各种修改将容易地显而易见,且本文中界定的一般原理可应用于其它变化而不背离本发明的精神或范围。因此,本发明并不意图限于本文中所描述的实例和设计,而是应被赋予与本文中所揭示的原理和新颖特征相一致的最广范围。

Claims (27)

1.一种向量处理器,其包括:
向量寄存器堆,其包括各自经配置以提供多个累加器的多个向量寄存器;
所述向量寄存器堆经配置以提供多个写入端口;且
所述向量处理器经配置以:
接收输入数据向量;和
针对所述多个写入端口中的每一写入端口,执行一或多个向量操作以:
存取所述输入数据向量的输入数据值;
基于所述输入数据值,确定指示所述多个向量寄存器当中的向量寄存器的寄存器索引;
基于所述输入数据值,确定指示所述向量寄存器的所述多个累加器当中的累加器的累加器索引;
基于所述寄存器索引和所述累加器索引,对由所述寄存器索引指示的所述向量寄存器执行标量操作;和
将所述标量操作的结果写入到由所述寄存器索引指示的所述向量寄存器。
2.根据权利要求1所述的向量处理器,其中所述向量寄存器堆包括多个物理寄存器堆,每一物理寄存器堆提供所述多个写入端口当中的一或多个写入端口;
所述向量处理器经配置以:
接收所述输入数据向量作为多个输入数据向量子集,每一输入数据向量子集对应于所述多个物理寄存器堆当中的一个物理寄存器堆;和
通过同时对所述多个物理寄存器堆当中的每一物理寄存器堆执行所述一或多个向量操作来执行所述一或多个向量操作。
3.根据权利要求1所述的向量处理器,其经配置以通过执行所述输入数据值的多个位的一或多个逻辑右移来确定所述寄存器索引。
4.根据权利要求1所述的向量处理器,其经配置以通过将所述输入数据值的一或多个高阶位掩蔽为零来确定所述累加器索引。
5.根据权利要求1所述的向量处理器,其经配置以通过使由所述累加器索引指示的所述累加器递增来执行所述标量操作。
6.根据权利要求1所述的向量处理器,经进一步配置以执行所述一或多个向量操作以:
基于针对所述多个写入端口中的每一写入端口的所述寄存器索引和所述累加器索引中的一或多者,确定可合并针对所述多个写入端口中的对应两个或更多个写入端口的两个或更多个标量操作;和
将所述两个或更多个标量操作组合为经合并标量操作;
其中所述向量处理器经配置以通过执行所述经合并标量操作来执行所述标量操作。
7.根据权利要求6所述的向量处理器,其经配置以执行所述一或多个向量操作,以确定可通过确定针对第一写入端口的所述寄存器索引与针对所述多个写入端口中的一或多个其它写入端口的所述寄存器索引相同,来合并针对所述多个写入端口中的所述对应两个或更多个写入端口的所述两个或更多个标量操作。
8.根据权利要求7所述的向量处理器,其经配置以执行所述一或多个向量操作,以确定可通过进一步确定针对所述第一写入端口的所述累加器索引与针对所述多个写入端口中的所述一或多个其它写入端口的所述累加器索引相同,来合并针对所述多个写入端口中的所述对应两个或更多个写入端口的所述两个或更多个标量操作。
9.根据权利要求1所述的向量处理器,其集成到集成电路IC中。
10.根据权利要求1所述的向量处理器,其集成到选自由以下各项组成的群组的装置中:机顶盒、娱乐单元、导航装置、通信装置、固定位置数据单元、移动位置数据单元、移动电话、蜂窝式电话、计算机、便携式计算机、桌上型计算机、个人数字助理PDA、监视器、计算机监视器、电视、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字视频光盘DVD播放器以及便携式数字视频播放器。
11.一种向量处理器,其包括:
用于接收输入数据向量的装置;和
针对所述向量处理器的向量寄存器堆的多个写入端口中的每一写入端口:
用于存取所述输入数据向量的输入数据值的装置;
用于基于所述输入数据值确定指示所述向量寄存器堆中的多个向量寄存器当中的向量寄存器的寄存器索引的装置;
用于基于所述输入数据值确定指示所述向量寄存器的多个累加器当中的累加器的累加器索引的装置;
用于基于所述寄存器索引和所述累加器索引对由所述寄存器索引指示的所述向量寄存器执行标量操作的装置;和
用于将所述标量操作的结果写入到由所述寄存器索引指示的所述向量寄存器的装置。
12.一种用于用向量处理器使标量操作并行化的方法,其包括:
通过向量处理器接收输入数据向量;和
针对所述向量处理器的向量寄存器堆的多个写入端口中的每一写入端口,执行一或多个向量操作以:
存取所述输入数据向量的输入数据值;
基于所述输入数据值,确定指示所述向量寄存器堆中的多个向量寄存器当中的向量寄存器的寄存器索引;
基于所述输入数据值,确定指示所述向量寄存器的多个累加器当中的累加器的累加器索引;
基于所述寄存器索引和所述累加器索引,对由所述寄存器索引指示的所述向量寄存器执行标量操作;和
将所述标量操作的结果写入到由所述寄存器索引指示的所述向量寄存器。
13.根据权利要求12所述的方法,其中:
所述向量寄存器堆包括多个物理寄存器堆,每一物理寄存器堆提供所述多个写入端口当中的一或多个写入端口;
所述输入数据向量包括多个输入数据向量子集,每一输入数据向量子集对应于所述多个物理寄存器堆当中的一个物理寄存器堆;和
执行所述一或多个向量操作包括同时对所述多个物理寄存器堆当中的每一物理寄存器堆执行所述一或多个向量操作。
14.根据权利要求12所述的方法,其中确定所述寄存器索引包括执行所述输入数据值的多个位的一或多个逻辑右移。
15.根据权利要求12所述的方法,其中确定所述累加器索引包括将所述输入数据值的一或多个高阶位掩蔽为零。
16.根据权利要求12所述的方法,其中执行所述标量操作包括使由所述累加器索引指示的所述累加器递增。
17.根据权利要求12所述的方法,其进一步包括:
基于针对所述多个写入端口中的每一写入端口的所述寄存器索引和所述累加器索引中的一或多者,确定可合并针对所述多个写入端口中的对应两个或更多个写入端口的两个或更多个标量操作;和
将所述两个或更多个标量操作组合为经合并标量操作;
其中执行所述标量操作包括执行所述经合并标量操作。
18.根据权利要求17所述的方法,其中确定可合并针对所述多个写入端口中的所述对应两个或更多个写入端口的所述两个或更多个标量操作包括确定针对第一写入端口的所述寄存器索引与针对所述多个写入端口中的一或多个其它写入端口的所述寄存器索引相同。
19.根据权利要求18所述的方法,其中确定可合并针对所述多个写入端口中的所述对应两个或更多个写入端口的所述两个或更多个标量操作进一步包括确定针对所述第一写入端口的所述累加器索引与针对所述多个写入端口中的所述一或多个其它写入端口的所述累加器索引相同。
20.一种非暂时性计算机可读媒体,其存储有致使向量处理器执行以下操作的计算机可执行指令:
接收输入数据向量;和
针对所述向量处理器的向量寄存器堆的多个写入端口中的每一写入端口,执行一或多个向量操作以:
存取所述输入数据向量的输入数据值;
基于所述输入数据值,确定指示所述向量寄存器堆中的多个向量寄存器当中的向量寄存器的寄存器索引;
基于所述输入数据值,确定指示所述向量寄存器的多个累加器当中的累加器的累加器索引;
基于所述寄存器索引和所述累加器索引,对由所述寄存器索引指示的所述向量寄存器执行标量操作;和
将所述标量操作的结果写入到由所述寄存器索引指示的所述向量寄存器。
21.根据权利要求20所述的非暂时性计算机可读媒体,其存储有致使所述向量处理器执行以下操作的计算机可执行指令:
接收所述输入数据向量作为多个输入数据向量子集,每一输入数据向量子集对应于所述向量寄存器堆的多个物理寄存器堆当中的物理寄存器堆;和
通过同时对所述多个物理寄存器堆当中的每一物理寄存器堆执行所述一或多个向量操作来执行所述一或多个向量操作。
22.根据权利要求20所述的非暂时性计算机可读媒体,其存储有致使所述向量处理器通过执行所述输入数据值的多个位的一或多个逻辑右移来确定所述寄存器索引的计算机可执行指令。
23.根据权利要求20所述的非暂时性计算机可读媒体,其存储有致使所述向量处理器通过将所述输入数据值的一或多个高阶位掩蔽为零来确定所述累加器索引的计算机可执行指令。
24.根据权利要求20所述的非暂时性计算机可读媒体,其存储有致使所述向量处理器通过使由所述累加器索引指示的所述累加器递增来执行所述标量操作的计算机可执行指令。
25.根据权利要求20所述的非暂时性计算机可读媒体,其存储有致使所述向量处理器进一步执行以下操作的计算机可执行指令:
基于针对所述多个写入端口中的每一写入端口的所述寄存器索引和所述累加器索引中的一或多者,确定可合并针对所述多个写入端口中的对应两个或更多个写入端口的两个或更多个标量操作;和
将所述两个或更多个标量操作组合为经合并标量操作;
其中所述计算机可执行指令致使所述向量处理器通过执行所述经合并标量操作来执行所述标量操作。
26.根据权利要求25所述的非暂时性计算机可读媒体,其存储有致使所述向量处理器确定可通过确定针对第一写入端口的所述寄存器索引与针对所述多个写入端口中的一或多个其它写入端口的所述寄存器索引相同,来合并针对所述多个写入端口中的所述对应两个或更多个写入端口的所述两个或更多个标量操作的计算机可执行指令。
27.根据权利要求26所述的非暂时性计算机可读媒体,其存储有致使所述向量处理器确定可通过进一步确定针对所述第一写入端口的所述累加器索引与针对所述多个写入端口中的所述一或多个其它写入端口的所述累加器索引相同,来合并针对所述多个写入端口中的所述对应两个或更多个写入端口的所述两个或更多个标量操作的计算机可执行指令。
CN201580039295.6A 2014-07-25 2015-06-26 通过使用数据索引化累加器使标量操作并行化的方法和处理器 Expired - Fee Related CN106537330B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462029039P 2014-07-25 2014-07-25
US62/029,039 2014-07-25
US14/486,326 US20160026607A1 (en) 2014-07-25 2014-09-15 Parallelization of scalar operations by vector processors using data-indexed accumulators in vector register files, and related circuits, methods, and computer-readable media
US14/486,326 2014-09-15
PCT/US2015/038013 WO2016014213A1 (en) 2014-07-25 2015-06-26 Parallelization of scalar operations by vector processors using data-indexed accumulators in vector register files, and related circuits, methods, and computer-readable media

Publications (2)

Publication Number Publication Date
CN106537330A CN106537330A (zh) 2017-03-22
CN106537330B true CN106537330B (zh) 2019-02-05

Family

ID=53674312

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580039295.6A Expired - Fee Related CN106537330B (zh) 2014-07-25 2015-06-26 通过使用数据索引化累加器使标量操作并行化的方法和处理器

Country Status (5)

Country Link
US (1) US20160026607A1 (zh)
EP (1) EP3172659B1 (zh)
JP (1) JP6571752B2 (zh)
CN (1) CN106537330B (zh)
WO (1) WO2016014213A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
US9875213B2 (en) * 2015-06-26 2018-01-23 Intel Corporation Methods, apparatus, instructions and logic to provide vector packed histogram functionality
US10417730B2 (en) * 2016-12-21 2019-09-17 Intel Corporation Single input multiple data processing mechanism
US10877925B2 (en) * 2019-03-18 2020-12-29 Micron Technology, Inc. Vector processor with vector first and multiple lane configuration
US11340904B2 (en) 2019-05-20 2022-05-24 Micron Technology, Inc. Vector index registers
US11327862B2 (en) 2019-05-20 2022-05-10 Micron Technology, Inc. Multi-lane solutions for addressing vector elements using vector index registers
US11507374B2 (en) 2019-05-20 2022-11-22 Micron Technology, Inc. True/false vector index registers and methods of populating thereof
US11403256B2 (en) 2019-05-20 2022-08-02 Micron Technology, Inc. Conditional operations in a vector processor having true and false vector index registers
CN110245756B (zh) * 2019-06-14 2021-10-26 第四范式(北京)技术有限公司 用于处理数据组的可编程器件及处理数据组的方法
US11119772B2 (en) 2019-12-06 2021-09-14 International Business Machines Corporation Check pointing of accumulator register results in a microprocessor
US11900116B1 (en) 2021-09-29 2024-02-13 International Business Machines Corporation Loosely-coupled slice target file data

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2216307A (en) * 1988-03-01 1989-10-04 Ardent Computer Corp Vector register file
US6931511B1 (en) * 2001-12-31 2005-08-16 Apple Computer, Inc. Parallel vector table look-up with replicated index element vector
CN1820246A (zh) * 2003-05-09 2006-08-16 杉桥技术公司 执行饱和或不执行饱和地累加多操作数的处理器还原单元
US7506135B1 (en) * 2002-06-03 2009-03-17 Mimar Tibet Histogram generation with vector operations in SIMD and VLIW processor by consolidating LUTs storing parallel update incremented count values for vector data elements
CN102197369A (zh) * 2008-10-08 2011-09-21 Arm有限公司 用于执行simd乘法-累积运算的装置及方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06105459B2 (ja) * 1988-08-11 1994-12-21 日本電気株式会社 ベクトル処理装置
AU6756500A (en) * 1999-08-02 2001-02-19 Steven G. Morton Video digital signal processor chip
US6625685B1 (en) * 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US20130212353A1 (en) * 2002-02-04 2013-08-15 Tibet MIMAR System for implementing vector look-up table operations in a SIMD processor
US8959292B1 (en) * 2005-12-22 2015-02-17 The Board Of Trustees Of The Leland Stanford Junior University Atomic memory access hardware implementations
US9513905B2 (en) * 2008-03-28 2016-12-06 Intel Corporation Vector instructions to enable efficient synchronization and parallel reduction operations
US8688957B2 (en) * 2010-12-21 2014-04-01 Intel Corporation Mechanism for conflict detection using SIMD
JP2013008270A (ja) * 2011-06-27 2013-01-10 Renesas Electronics Corp 並列演算装置及びマイクロコンピュータ
US20130185540A1 (en) * 2011-07-14 2013-07-18 Texas Instruments Incorporated Processor with multi-level looping vector coprocessor
CN104011657B (zh) * 2011-12-22 2016-10-12 英特尔公司 用于向量计算和累计的装置和方法
US9804839B2 (en) * 2012-12-28 2017-10-31 Intel Corporation Instruction for determining histograms
US9372692B2 (en) * 2012-12-29 2016-06-21 Intel Corporation Methods, apparatus, instructions, and logic to provide permute controls with leading zero count functionality

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2216307A (en) * 1988-03-01 1989-10-04 Ardent Computer Corp Vector register file
US6931511B1 (en) * 2001-12-31 2005-08-16 Apple Computer, Inc. Parallel vector table look-up with replicated index element vector
US7506135B1 (en) * 2002-06-03 2009-03-17 Mimar Tibet Histogram generation with vector operations in SIMD and VLIW processor by consolidating LUTs storing parallel update incremented count values for vector data elements
CN1820246A (zh) * 2003-05-09 2006-08-16 杉桥技术公司 执行饱和或不执行饱和地累加多操作数的处理器还原单元
CN102197369A (zh) * 2008-10-08 2011-09-21 Arm有限公司 用于执行simd乘法-累积运算的装置及方法

Also Published As

Publication number Publication date
EP3172659B1 (en) 2020-02-26
WO2016014213A1 (en) 2016-01-28
EP3172659A1 (en) 2017-05-31
JP6571752B2 (ja) 2019-09-04
CN106537330A (zh) 2017-03-22
US20160026607A1 (en) 2016-01-28
JP2017527886A (ja) 2017-09-21

Similar Documents

Publication Publication Date Title
CN106537330B (zh) 通过使用数据索引化累加器使标量操作并行化的方法和处理器
US10140123B2 (en) SIMD processing lanes storing input pixel operand data in local register file for thread execution of image processing operations
US10922294B2 (en) Methods and systems for fast set-membership tests using one or more processors that support single instruction multiple data instructions
US11048509B2 (en) Providing multi-element multi-vector (MEMV) register file access in vector-processor-based devices
CN104756090B (zh) 提供扩展的缓存替换状态信息
CN105453045B (zh) 使用动态宽度计算的壁垒同步
CN108369511A (zh) 用于基于通道的跨步存储操作的指令和逻辑
CN108369509A (zh) 用于基于通道的跨步分散操作的指令和逻辑
US10691456B2 (en) Vector store instruction having instruction-specified byte count to be stored supporting big and little endian processing
TW201723811A (zh) 於指令集架構中排序資料及合併經排序資料之技術
CN108369573A (zh) 用于设置多个向量元素的操作的指令和逻辑
US9632953B2 (en) Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
CN109478175A (zh) 在simd架构中用于通道混洗的混洗器电路
US10691453B2 (en) Vector load with instruction-specified byte count less than a vector size for big and little endian processing
CN103257931A (zh) 成形的寄存器堆读取
CN108292217A (zh) 用于结构阵列的向量存储/加载指令
CN107305486B (zh) 一种神经网络maxout层计算装置
US11030714B2 (en) Wide key hash table for a graphics processing unit
US9824012B2 (en) Providing coherent merging of committed store queue entries in unordered store queues of block-based computer processors
US9841979B2 (en) Method and apparatus for shuffling data using hierarchical shuffle units
CN107111487A (zh) 在乱序(ooo)处理器中提供早期指令执行,以及相关设备、方法和计算机可读媒体
CN115758989B (zh) 用于修复数字芯片版图设计规则时序违例的方法及系统
CN105700855B (zh) 用于改进simd knn实现的设备、方法、系统和机器可读介质
CN104335167B (zh) 用于处理计算机指令的方法和处理器
CN109690956B (zh) 电子设备和用于电子设备的方法

Legal Events

Date Code Title Description
C06 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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190205

Termination date: 20210626

CF01 Termination of patent right due to non-payment of annual fee