CN110050259B - 矢量处理器及其控制方法 - Google Patents

矢量处理器及其控制方法 Download PDF

Info

Publication number
CN110050259B
CN110050259B CN201780074579.8A CN201780074579A CN110050259B CN 110050259 B CN110050259 B CN 110050259B CN 201780074579 A CN201780074579 A CN 201780074579A CN 110050259 B CN110050259 B CN 110050259B
Authority
CN
China
Prior art keywords
input data
shuffling
register
unit
data
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
CN201780074579.8A
Other languages
English (en)
Other versions
CN110050259A (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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN110050259A publication Critical patent/CN110050259A/zh
Application granted granted Critical
Publication of CN110050259B publication Critical patent/CN110050259B/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
    • 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/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/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
    • 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)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)

Abstract

公开了一种矢量处理器。矢量处理器包括提供给多个单指令多数据(SIMD)通道中的每一个、存储多条数据中的每一个、并且分别输出在多条数据当中的要在当前周期中使用的输入数据的多个寄存器文件;混洗单元,用于接收从多个寄存器文件输出的多条输入数据,并执行混洗使得所接收的多条输入数据分别对应于多个SIMD通道,并输出多条输入数据;以及,命令运行单元,用于通过接收从混洗单元输出的输入数据来执行并行操作。

Description

矢量处理器及其控制方法
技术领域
本公开涉及矢量处理器及其控制方法,更具体地,涉及用于利用一个指令同时处理若干值的矢量处理器及其控制方法。
背景技术
单指令多数据(Single Instruction Multiple Data,SIMD)是用于通过一个个指令处理若干数据的一类并行操作。具体地,SIMD是多个运行单元对多个数据应用相同或类似的操作并同时处理这些操作的方法。
在相关技术中,多个数据存储在矢量寄存器文件中,并且这多个数据中的要在当前周期中使用的数据被混洗(shuffle)并再次存储在矢量寄存器文件中。换句话说,除了多个数据之外,矢量寄存器文件还另外存储有对多个数据进行混洗的单独的数据,以及重复使用后的删除步骤。因此,存在功耗巨大的问题。
此外,当对多个数据执行混洗时,每个周期的混洗方法存在差异,因此需要用于在每个周期执行混洗的单独的指令。结果,存在程序代码加长的问题。
发明内容
技术问题
本公开提供了一种用于提高冗余操作的处理速度的矢量处理器及其控制方法。
技术方案
根据本公开的实施例,一种矢量处理器包括多个寄存器文件,其中,多个寄存器文件中的每一个提供给单指令多数据(SIMD)通道中的每一个,存储多个数据,并且输出多个数据当中的要在当前周期中使用的输入数据;混洗单元,用于接收从多个寄存器文件输出的多个输入数据,并且执行混洗使得接收到的多个输入数据分别对应于多个SIMD通道并输出多个输入数据;运行单元,用于接收从混洗单元输出的输入数据,并对输入数据执行并行操作。
混洗单元可以包括在多个SIMD通道中的每一个中提供的多个多路复用器,并且多个多路复用器中的每一个可以接收从多个寄存器文件输出的多个输入数据,并且输出接收到的多个输入数据当中的与提供有对应的多路复用器的通道相对应的一个输入数据。
矢量处理器还可以包括混洗控制单元,用于基于输入指令周期性地控制多个寄存器文件和混洗单元。
混洗控制单元可以将多个SIMD通道中的每一个的参考寄存器地址发送到多个寄存器文件中的每一个,并且参考寄存器地址是被存储在每个寄存器文件中的多个数据当中的在当前周期中使用的输入数据的地址。
混洗控制单元可以将关于多个输入数据的混洗信息发送到混洗单元,并且混洗信息是关于要从多个SIMD通道中的每一个输出的输入数据的信息。
混洗控制单元可以包括:用于将要在当前周期中使用的输入数据的参考寄存器地址提供给多个寄存器文件中的每一个的地址多路复用器,以及用于控制地址多路复用器的控制单元。
混洗控制单元还可以包括用于存储多个SIMD通道中的每一个的参考寄存器地址的至少一个地址寄存器,并且控制单元可以控制地址多路复用器以将从指令解码单元和至少一个地址寄存器提供的多个参考寄存器地址中的一个提供给对应的寄存器文件。
输入指令可以包括要由运行单元处理的操作的类型、操作方法以及关于水平方向上的增量和垂直方向上的增量的信息中的至少一种。
矢量处理器还可以包括标量寄存器文件,并且运行单元可以使用从标量寄存器文件输出的标量数据对从混洗单元输出的输入数据执行并行操作。
根据本公开的实施例,一种矢量处理器的控制方法包括:将多个数据存储到提供给SIMD通道中的每一个的多个寄存器文件中的每一个中,并输出多个数据当中的要在当前周期中使用的输入数据;接收从多个寄存器文件输出的多个输入数据,并执行混洗使得接收到的多个输入数据分别对应于多个SIMD通道并输出多个输入数据;以及,接收从混洗单元输出的输入数据,并对输入数据执行并行操作。
通过执行混洗进行输出包括:在混洗单元中,通过在多个SIMD中的每一个中提供的多个多路复用器中的每一个接收从多个寄存器文件输出的多个输入数据,并输出接收到的多个输入数据当中的与提供有对应多路复用器的通道相对应的一个输入数据。
控制方法还可以包括基于输入指令周期性地控制多个寄存器文件和混洗单元。
控制可以包括将多个SIMD通道中的每一个的参考寄存器地址发送到多个寄存器文件中的每一个,并且参考寄存器地址可以是被存储在每个寄存器文件中的多个数据当中的在当前周期中使用的输入数据的地址。
控制可以包括将关于多个输入数据的混洗信息发送到混洗单元,并且混洗信息可以是关于要从多个SIMD通道中的每一个输出的输入数据的信息。
控制可以包括控制地址多路复用器以将要在当前周期中使用的输入数据的参考寄存器地址提供给多个寄存器文件中的每一个。
控制可以包括存储多个SIMD通道中的每一个的参考寄存器地址,并且控制地址多路复用器以将从指令解码单元和至少一个地址寄存器提供的多个参考寄存器地址中的一个提供给相应的寄存器文件。
输入指令可以包括要由运行单元处理的操作的类型、操作方法以及关于水平方向上的增量和垂直方向上的增量的信息中的至少一个。
执行并行操作可以包括使用从标量寄存器文件输出的标量数据对从混洗单元输出的输入数据执行并行操作。
根据本公开的实施例,一种可记录介质,其存储用于运行向量处理器的操作方法的程序,其中,操作方法包括:将多个数据存储到提供给SIMD通道中的每一个的多个寄存器文件中的每一个中,并分别输出多个数据当中的要在当前周期中使用的输入数据;由混洗单元接收从多个寄存器文件输出的多个输入数据,并执行混洗使得接收到的多个输入数据分别对应于多个SIMD通道并输出多个输入数据;以及,通过接收从混洗单元输出的输入数据来对输入数据执行并行操作。
技术效果
如上所述,根据本公开的各种实施例,矢量处理器可以通过对输入数据执行混洗,然后在不重新存储的情况下执行操作来提高处理速度和能量效率。
附图说明
图1是示出根据本公开的实施例的矢量处理器的配置的框图。
图2是具体示出根据本公开的实施例的图1的矢量处理器的配置的框图。
图3A是描述根据本公开的实施例的在应用滤波器的情况下的操作的视图。
图3B是描述根据本公开的实施例的在应用滤波器的情况下的操作的视图。
图3C是描述根据本公开的实施例的在应用滤波器的情况下的操作的视图。
图4A是描述根据本公开的实施例的多个寄存器文件的n个操作的视图。
图4B是描述根据本公开的实施例的多个寄存器文件的n个操作的视图。
图5A是描述根据本公开的实施例的混洗单元的操作的视图。
图5B是描述根据本公开的实施例的混洗单元的操作的视图。
图6是描述根据本公开另一实施例的二维(two-dimensional,2D)操作的视图。
图7是描述根据本公开的实施例的程序代码的简化的视图。
图8是描述根据本公开的实施例的矢量处理器的控制方法的流程图。
具体实施方式
在下文中,将参考附图更详细地描述本公开的各种实施例。
图1是示出根据本公开的实施例的矢量处理器100的配置的框图。
如图1所示,矢量处理器100包括多个寄存器文件110、混洗单元120和运行单元130。
矢量处理器100表示具有用于处理称为矢量的多个数据的指令的处理器。例如,矢量处理器100可以处理用于矢量处理的单指令多数据(SIMD)指令以处理多个数据。这里,SIMD表示利用一个指令同时计算多个值的方法。
多个寄存器文件110中的每一个可以提供在多个SIMD通道中的每一个中。换句话说,每个SIMD通道可以具有一个寄存器文件。这里,多个SIMD通道可以对应于并行处理单元。换句话说,矢量处理器100最多可以执行与多个SIMD通道的数量一样多的并行处理。
多个寄存器文件110可以由多个标量寄存器文件而不是矢量寄存器文件组成。矢量寄存器文件可以具有其中多个数据存储在一个地址中的体系结构,并且标量寄存器文件可以具有其中一个数据存储在一个地址中的体系结构。换句话说,用于输出存储在多个寄存器文件110中的数据的寄存器地址可以包括SIMD通道信息和与SIMD通道相对应的标量寄存器文件的数据要被输出到的地址。
多个寄存器文件110中的每一个可以存储多个数据,并且输出在这多个数据当中的在当前周期中使用的输入数据。例如,一个寄存器文件可以存储两个数据,并输出在当前周期中使用的输入数据。其余的寄存器文件可以以相同的方式存储两个数据,并输出在当前周期中使用的输入数据。换句话说,在一个周期内,从多个寄存器文件110输出的数据的数量可以等于多个寄存器文件110的数量。
本公开的实施例不限于此,并且当并行处理单元小于多个寄存器文件110的数量时,在一个周期内从多个寄存器文件110输出的数据的数量可以小于多个寄存器文件110的数量。
混洗单元120可以连接到多个寄存器文件110,并且接收从多个寄存器文件输出的多个输入数据。换句话说,对于每个SIMD通道,混洗单元120可以接收一个输入数据。
混洗单元120可以执行混洗并输出多个接收到的输入数据以对应于多个SIMD通道中的每一个。例如,混洗单元120可以分别从第一寄存器文件、第二寄存器文件、第三寄存器文件和第四寄存器文件接收数据a、数据b、数据c和数据d。这里,第一寄存器文件、第二寄存器文件、第三寄存器文件和第四寄存器文件中的每一个可以提供在第一SIMD通道、第二SIMD通道、第三SIMD通道和第四SIMD通道中。混洗单元120可以执行混洗并且分别输出要在第二SIMD通道、第三SIMD通道、第四SIMD通道和第一SIMD通道中处理的接收到的数据a、数据b、数据c和数据d。混洗方法可以是预定的,或者可以由用户根据操作类型输入。
运行单元130可以接收从混洗单元120输出的输入数据并且执行并行操作。运行单元130可以在每个周期对多个输入数据执行并行处理。
运行单元130可以执行四种基本算术运算、逻辑运算等。然而,本公开的实施例不限于此,并且运行单元130可以执行任何其他操作。
运行单元130可以包括在多个SIMD通道中的每一个中提供的多个运行单元。可替换地,运行单元130可以被实施为同时处理多个操作的一个硬件。
图2是具体示出根据本公开的实施例的图1的矢量处理器100的配置的框图。
如图2所示,矢量处理器100可以包括多个SIMD通道中的第一SIMD通道10-1、混洗控制单元140和指令解码单元150。在图2中,为了便于描述,仅示出了多个SIMD通道中的第一SIMD通道10-1。将省略与图1的配置重叠的图2的配置的描述。
第一SIMD通道10-1可以包括第一寄存器文件110-1、第一混洗数据路径120-1和运行单元130-1。第一混洗数据路径120-1可以是混洗单元120的配置。也就是说,混洗单元120可以包括多个混洗数据路径,并且每个混洗数据路径可以提供在每个SIMD通道中。
混洗单元120可以包括在多个SIMD通道中的每一个中提供的多个多路复用器。也就是说,第一混洗数据路径120-1可以实施为多路复用器。多个多路复用器中的每一个可以接收从多个寄存器文件110输出的多个输入数据,并且输出在接收到的多个输入数据当中的与提供有多路复用器的通道相对应的一个输入数据。
例如,第一混洗数据路径120-1可以用第一多路复用器实施,第一多路复用器不仅可以接收从第一寄存器文件110-1输出的输入数据,还可以接收从在其他SIMD通道中提供的其余寄存器文件输出的输入数据。也就是说,多路复用器的输入端口的数量可以与多个SIMD通道的数量相同。
此外,在第二SIMD通道(未示出)中提供的第二混洗数据路径(未示出)可以用第二多路复用器实施,并且第二多路复用器不仅可以接收从第二寄存器文件(未示出)输出的输入数据,还可以接收从在其他SIMD通道中提供的其余寄存器文件输出的输入数据。
也就是说,多个多路复用器中的每一个可以从多个寄存器文件110接收多个输入数据。此外,每个寄存器文件110不仅可以向对应的SIMD通道中提供的混洗数据路径提供输入数据,还可以向另一个SIMD通道中提供的混洗数据路径提供输入数据。
第一混洗数据路径120-1可以将从第一寄存器文件110-1输出的输入数据提供给在除第一SIMD通道10-1之外的SIMD通道中提供的运行单元。此外,第一混洗数据路径120-1可以将从除第一寄存器文件110-1之外的寄存器文件输出的多个输入数据中的一个提供给第一运行单元130-1。
然而,实施例不限于此,并且混洗数据路径120-1可以输出多个接收到的输入数据而不执行混洗。例如,第一混洗数据路径120-1可以将从第一寄存器文件110-1输出的输入数据提供给第一运行单元130-1。可替换地,可以将从第一寄存器文件110-1输出的输入数据直接提供给第一运行单元130-1,而不经过第一混洗数据路径120-1。
混洗控制单元140可以基于输入指令在每个周期控制多个寄存器文件110和混洗单元120。可替换地,混洗控制单元140可以基于输入指令和当前状态在每个周期控制多个寄存器文件110和混洗单元120。此时,混洗控制单元140可以存储当前状态。此外,每当一个周期过去时,混洗控制单元140就可以更新当前状态。
混洗控制单元140可以将多个SIMD通道中的每一个的参考寄存器地址传送到多个寄存器文件110中的每一个。这里,参考寄存器地址可以是存储在每个寄存器文件中的多个数据当中的在当前周期中使用的输入数据的地址。
例如,第一寄存器文件110-1可以将数据a存储在寄存器地址R0中,并且将数据b存储在寄存器地址R1中。在这种状态下,当混洗控制单元140将第一SIMD通道10-1的参考寄存器地址R1发送到第一寄存器文件110-1时,第一寄存器文件110-1可以输出寄存器地址R1中的数据b。混洗控制单元140可以发送与其余寄存器文件相对应的参考寄存器地址。
混洗控制单元140可以将多个输入数据的混洗信息发送到混洗单元120。即,混洗控制单元140可以将多个输入数据的混洗信息发送到在混洗单元120中提供的多个混洗数据路径。这里,混洗信息可以是关于要在多个SIMD通道中的每一个中输出的输入数据的信息。
例如,混洗控制单元140可以向第一多路复用器提供关于输入在输入到第一多路复用器的多个输入端口的多个输入数据当中的要从当前周期输出的输入数据的输入端口的信息。混洗控制单元140还可以提供与其余的多路复用器中的每一个相对应的信息。
混洗控制单元140可以基于输入指令和当前状态中的至少一个来生成多个输入数据的混洗信息。如上所述,多个寄存器文件110和混洗单元120可以根据混洗控制单元140的控制来操作。在下文中,将更详细地描述混洗控制单元140的配置。
混洗控制单元140可以包括地址多路复用器141、地址寄存器142、控制单元143和配置寄存器144。
地址多路复用器141可以将要在当前周期中使用的输入数据的参考寄存器地址提供给多个寄存器文件110中的每一个。尽管图2示出存在一个地址多路复用器141,但是实施例不限于此。例如,地址多路复用器141可以被实施为多个以对应于多个寄存器文件110中的每一个。
至少一个地址寄存器142可以存储多个SIMD通道中的每一个的参考寄存器地址。至少一个地址寄存器142可以从指令解码单元150接收并存储参考寄存器地址。
控制单元143可以控制地址多路复用器141和混洗数据路径120-1。已经描述了控制混洗数据路径120-1的方法,并且将不再进一步描述。
控制单元143可以控制地址多路复用器141以将从指令解码单元150和至少一个地址寄存器142提供的多个参考寄存器地址中的一个提供给对应的寄存器文件。
配置寄存器144可以存储输入指令中包括的信息。此外,配置寄存器144可以存储当前状态。例如,配置寄存器144可以包括用于存储当前状态的计数器。
控制单元143可以基于存储在配置寄存器144中的信息来控制其他单元。这里,输入指令可以包括要由运行单元130处理的操作的类型、操作方法以及关于水平和垂直方向上的增量的信息中的至少一种。
另外,矢量处理器100还可以包括指令存储器(未示出)、指令获取单元(未示出)、指令解码单元150、标量寄存器文件(未示出)等。
指令存储器可以存储指令。指令获取单元可以基于输入指令从指令存储器读取要在当前周期中使用的指令。指令解码单元150可以通过对获取到的指令进行解码来确定指令的类型、指令的输入数据的地址等。
与多个寄存器文件分开提供的标量寄存器文件是用于存储标量数据的寄存器文件。多个寄存器文件是用于存储矢量数据的寄存器文件。
运行单元130可以使用从标量寄存器文件输出的标量数据对从混洗单元120输出的多个输入数据执行并行操作。
也就是说,从标量寄存器文件输出的标量数据可以被发送到包括在运行单元130中的所有多个运行单元。运行单元可以操作标量数据和输入到每个运行单元的输入数据。也就是说,多个运行单元可以使用一个标量数据执行并行操作。
如上所述,运行单元130直接从混洗单元120接收输入数据,而不是从多个寄存器文件110接收输入数据,因此可以提高处理速度和能量效率。在下文中,将参考附图描述矢量处理器100的操作的示例。
图3A至3C是描述根据本公开的实施例的应用滤波器的情况下的操作的视图。
图3A示出了可以应用于图像的滤波器的示例。尽管图3A示出了3×3矩阵滤波器,但是不限于此,并且滤波器可以具有任何其他类型。此外,本公开的技术可以应用于即使不是滤波器但是也可以应用并行操作的所有情况。
矢量处理器100可以将滤波器应用于如图3B所示的图像。在图3B中,上部图像示出了图像的每个像素的数据,下部图像示出了应用了滤波器的图像。滤波器可以存储在标量寄存器文件中。
为了便于描述,首先将描述在没有并行操作的情况下应用滤波器的情况。当图3A的滤波器应用于图3B的上部图像时,处理器可以通过将w0、w1、...、w8中的每一个乘以上部图像的(0,0)、(0,1)、(0,2)、(1,0)、(1,1)、(1,2)、(2,0)、(2,1)和(2,2)像素并将所有乘积的值相加来确定图3B的下部图像的(0,0)像素的数据。
处理器可以通过将w0、w1、...、w8中的每一个应用于图3B的上部图像的(0,1)、(0,2)、(0,3)、(1,1)、(1,2)、(1,3)、(2,1)、(2,2)和(2,3)像素来确定图3B的下部图像的(0,1)像素的数据。处理器可以对所有像素重复该过程并生成图3B的下部图像。
当执行并行操作时,矢量处理器100将w0乘以上部图像中的(0,0)、(0,1)、(0,2)和(0,3)中的每一个。具体地,可以在每个SIMD通道中执行w0乘以上部图像中的(0,0)、(0,1)、(0,2)和(0,3)中的每一个的乘法操作。例如,可以在第一SIMD通道中执行w0乘以上部图像的(0,0)的乘法操作,可以在第二SIMD通道中执行w0乘以上部图像的(0,1)的乘法操作,可以在第三SIMD通道中执行w0乘以上部图像的(0,2)的乘法操作,并且可以在第四SIMD通道中执行w0乘以上部图像的(0,3)的乘法操作。可以在T0的周期中执行上述操作。
此后,可以在第一SIMD通道中执行w1乘以上部图像的(0,1)的乘法操作,并且可以将该乘法结果和w0乘以上部图像的(0,0)的乘法结果相加。可以在其余的SIMD通道中执行相同的操作。可以在T1的周期中执行上述操作。在图3A和3B中,分别显示T0、T1和T8周期所需的数据。
也就是说,矢量处理器100可以通过对每个SIMD通道执行重复的乘法和加法操作来执行并行操作。在图3C中,每个周期的操作由SIMD通道指示,并且将参考以下附图详细描述矢量处理器100中的每个配置的操作。
图4A和4B是描述根据本公开的实施例的多个寄存器文件110的n个操作的视图。
如图4A所示,多个寄存器文件110中的每一个可以存储多个数据。这里,多个数据可以是图3B的上部图像。第0个寄存器文件(通道0)可以存储(0,0)和(0,4),第一个寄存器文件(通道1)可以存储(0,1)和(0,5),第二个寄存器文件(通道2)可以存储(0,2)和(0,6),并且第三寄存器文件(通道3)可以存储(0,3)和(0,7)。
在T0周期中,第0寄存器文件可以输出(0,0)作为输入数据,第一寄存器文件可以输出(0,1)作为输入数据,第二寄存器文件可以输出(0,2)作为输入数据,并且第三寄存器文件可以输出(0,3)作为输入数据。
多个寄存器文件110可以确定要由混洗控制单元140提供的参考寄存器地址输出的输入数据。也就是说,混洗控制单元140可以在每个周期向多个寄存器文件110中的每一个提供参考寄存器地址。例如,混洗控制单元140可以在T0周期中将参考寄存器地址R0提供给第0寄存器文件,将参考寄存器地址R0提供给第一寄存器文件,将参考寄存器地址R0提供给第二寄存器文件,并且将参考寄存器地址R0提供给第三寄存器文件。
然后,如图4B所示,在T1周期中,第0寄存器文件可以输出(0,4)作为输入数据,第一寄存器文件可以输出(0,1)作为输入数据,第二寄存器文件可以输出(0,2)作为输入数据,并且第三寄存器文件可以输出(0,3)作为输入数据。
此时,混洗控制单元140可以在T1周期中将参考寄存器地址R1提供给第0寄存器文件,将参考寄存器地址R0提供给第一寄存器文件,将参考寄存器地址R0提供给第二寄存器文件,并且将参考寄存器地址R0提供给第三个寄存器文件。
为了便于描述,图4A和4B示出了四个并行操作可用,因为存在四个SIMD通道,但是可以提供任何其他数量的SIMD通道。
在图4A和4B中,描述了(0,0)到(0,7)的数据存储在多个寄存器文件110中,但是不限于此。例如,多个寄存器文件110可以存储更多数据。
当多个寄存器文件110存储(0,0)到(0,7)的数据时,每个参考寄存器地址可以由一位组成。然而,当多个寄存器文件110存储更多数据时,每个参考寄存器地址可以由更多个位组成。也就是说,参考寄存器地址的位的数量可以由存储在多个寄存器文件中的数据的大小确定。
可替换地,如果参考寄存器地址的位的数量是预定的,则也可以基于参考寄存器的位的数量来确定存储在多个寄存器文件110中的数据。
图5A和5B是描述根据本公开的实施例的混洗单元120的操作的视图。
如图5A所示,在T0周期中,最左边的多路复用器可以接收从多个寄存器文件110输出的输入数据(0,0)、(0,1)、(0,2)和(0,3)的输入。最左边的多路复用器可以输出(0,0)作为输入数据。其余的多路复用器可以以类似的方式操作。
此时,混洗控制单元140可以提供关于每个多路复用器必须在每个周期中输出的数据的信息。例如,在T0周期中,混洗控制单元140可以控制最左边的多路复用器输出通过最左边的多路复用器的第一输入端口输入的输入数据。
然后,如图5B所示,在T1周期中,最左边的多路复用器可以接收从多个寄存器文件110输出的输入数据(0,0)、(0,1)、(0,2)和(0,3)。最左边的多路复用器可以输出(0,1)作为输入数据。其余的多路复用器可以以类似的方式操作。
此时,在T1周期中,混洗控制单元140可以控制最左边的多路复用器输出通过最左边的多路复用器的第二输入端口输入的输入数据。
也就是说,混洗单元120可以用多个多路复用器实施,并且每个多路复用器可以接收多个输入数据并输出输入数据中的一个。通过上述操作,可以改变在其中要操作多个输入数据中的每一个的SIMD通道。
混洗单元120可以接收并对多个输入数据执行混洗,以及然后立即将数据提供给运行单元130。因此,可以减少再次将混洗数据存储在寄存器文件110中的功耗,并且可以提高操作速度。此外,硬件的大小也可以减小。
图6是描述根据本公开另一实施例的二维(2D)操作的视图。例如,如果在图3B的上部图像中的T0周期内操作(0,0)、(0,1)、(0,2)和(0,3)的像素数据,则当执行2D操作时,可以在T0周期内操作(0,0)、(0,1)、(1,0)和(1,1)的像素数据。2D计算是众所周知的技术,并且与图3B的描述非常相似,并且将不再进一步描述。
如图6所示,至少一个地址寄存器142可以包括底部地址、右侧地址和对角地址。例如,指令解码单元可以将涉及(0,0)、(0,1)、(1,0)和(1,1)的像素数据的参考寄存器地址R0提供给地址多路复用器141。至少一个地址寄存器142可以向地址多路复用器141提供涉及(2,0)、(2,1)、(2,2)和(2,3)的像素数据的底部地址R1、涉及(0,2)、(0,3)、(1,2)和(1,3)的像素数据的右侧地址R2和涉及(2,2)、(2,3)、(3,2)和(3,3)的像素数据的对角地址R3。
同时,配置寄存器144可以根据如下所示的指令存储输入数据。
[指令1]
sf_set2d$bottom、$right、$diagonal、num_row、num_col、row_stride、col_stride
这里,$bottom、$right和$diagonal可以分别是底部地址、右侧地址和对角地址。num_row和num_col可以分别是垂直方向上的最大值和水平方向上的最大值。row_stride和col_stride可以分别是垂直增量或水平增量。也就是说,配置寄存器144可以接收垂直方向上的最大值、水平方向上的最大值、垂直增量和水平增量作为列大小reg.、行大小reg.、行索引reg.和列索引reg.。模式(pattern)reg.可以作为指令本身输入并表示参考模式。
这里,参考模式表示数据访问顺序。例如,参考模式可以是1D增大、2D增大和2D Z字形之一。
控制单元143可以接收上述数据的输入并控制地址多路复用器141和混洗数据路径120-1。
此外,可以使用乘法操作或乘加(multiply and add,MAC)运算之后的状态更新指令,如下所示。
[指令2]
sf_mul$res、$multiplicand、$multiplier
sf_mac$acc、$multiplicand、$multiplier
在指令2中,被乘数可以是图像,并且乘数(multiplier)可以是滤波器。这里,res可以是被乘数和乘数的乘法结果,acc可以是将被乘数和乘数相乘的结果与先前的值相加的结果。
如上所述,当使用指令1和指令2时,可以简化程序代码。
图7是描述根据本公开的实施例的程序代码的简化的视图。
图7的左侧示出了根据相关技术的程序代码,以及图7的右侧示出了根据本公开的程序代码。
根据相关技术,将存储在矢量寄存器文件中的数据混洗,以及然后再次存储为矢量寄存器文件。因此,根据相关技术的程序代码可以包括用于混洗的指令,例如hcat和vcat。此外,每个周期都需要数据混洗,因此,每个周期都可能需要hcat或vcat。
根据本公开,在对存储在多个寄存器文件110中的数据进行混洗之后,可以立即执行操作而不必将这些数据存储在多个寄存器文件110中。也就是说,不需要诸如hcat和vcat的混洗指令,而仅需要上面描述的sf_set2d指令。也就是说,指令sf_set2d的初始输入被存储为混洗方法,并且多个寄存器文件110可以对每个周期所需的数据执行混洗并提供数据。
根据本公开,可使用上面描述的sf_mul或sf_mac来执行并行操作,而不必在每个周期使用hcat或vcat。
图8是描述根据本公开的实施例的矢量处理器的控制方法的流程图。
首先,在步骤S810中,将多个数据存储在多个SIMD通道中的每一个中提供的多个寄存器文件中的每一个中,并且输出在这多个数据中的用于当前周期的输入数据。在步骤S820中,通过混洗单元,可以接收从多个寄存器文件输出的多个输入数据,并且可以混洗并输出接收到的多个输入数据以对应于多个SIMD通道中的每一个。然后,在步骤S830中,可以接收从混洗单元输出的输入数据,并且可以执行并行操作。
这里,步骤S820中的混洗和输出步骤可包括:在混洗单元中,由在多个SIMD通道中的每一个中提供的多个多路复用器中的每一个接收从多个寄存器文件输出的多个输入数据,以及输出在多个接收到的输入数据当中的与提供对应的多路复用器的通道相对应的一个输入数据。
该方法还可以包括基于输入指令在每个周期控制多个寄存器文件和混洗单元。此时,可以将多个寄存器文件和混洗单元控制一个特定的周期,以及然后可以存储当前状态。也就是说,当一个周期结束时,可以更新存储的当前状态。
这里,控制步骤可以包括将多个SIMD通道中的每一个的参考寄存器地址发送到多个寄存器文件中的每一个,并且参考寄存器地址可以是存储在每个寄存器文件当中的多个数据中的用于当前周期的输入数据的地址。
另外,控制步骤可以包括将多个输入数据的混洗信息发送到混洗单元,并且混洗信息可以是关于要在多个SIMD通道中的每一个中输出的输入数据的信息。
控制步骤可以包括控制地址多路复用器以将要在当前周期中使用的输入数据的参考寄存器地址提供给多个寄存器文件中的每一个。
这里,控制步骤可以包括将多个SIMD通道中的每一个的参考寄存器地址存储到至少一个地址寄存器,并且控制地址多路复用器以将从指令解码单元和至少一个地址寄存器提供的多个参考寄存器地址中的一个提供给对应的寄存器文件。
输入指令可以包括要由运行单元处理的操作的类型、操作方法以及关于水平和垂直增量的信息中的至少一种。
在步骤S830中执行并行操作的步骤可以包括使用从标量寄存器文件输出的标量数据对从混洗单元输出的输入数据执行并行操作。
根据如上所述的本公开的各种实施例,矢量处理器可以执行输入数据的混洗,并且然后在不重新存储的情况下执行操作,从而提高处理速度和能量效率。
同时,根据各种实施例的方法可以被编程并存储在各种存储介质中。因此,根据上述各种实施例的方法可以在运行存储介质的各种类型的电子设备中实现。
具体地,可以提供存储顺序运行控制方法的程序的非暂时性计算机可读介质。
非暂时性计算机可读介质是半永久性地存储数据并且可由设备从中读取数据的介质,但不是短时间存储数据的介质,诸如寄存器、高速缓存、存储器等等。详细地,上述各种应用或程序可以存储在非暂时性计算机可读介质中,例如,光盘(compact disc,CD)、数字通用光盘(digital versatile disc,DVD)、硬盘、固态硬盘(Solid State Drive,SSD)、蓝光光盘、通用串行总线(universal serial bus,USB)、存储卡、只读存储器(ROM)等等,并且可以被提供。
前述示例性实施例和优点仅是示例性的,而不应被解释为限制本公开。本教导可以容易地应用于其他类型的装置。此外,本公开的示例性实施例的描述旨在说明,而不是限制权利要求的范围,并且许多替换、修改和变化对于本领域技术人员而言将是显而易见的。

Claims (15)

1.一种矢量处理器,包括:
多个寄存器文件,其中,所述多个寄存器文件中的每一个被提供给多个单指令多数据SIMD通道中的相应的通道,存储多个数据,并且输出所述多个数据当中的要在当前周期中使用的输入数据;
混洗单元,用于接收从所述多个寄存器文件输出的多个输入数据,执行对所接收到的多个输入数据的混洗使得所接收到的多个输入数据分别对应于所述多个SIMD通道并输出经混洗的多个输入数据,其中,所述混洗单元包括多个多路复用器,所述多个多路复用器在所述多个SIMD通道中的每一个中提供,被配置为接收所述多个输入数据并输出所述经混洗的多个输入数据,并且由所述混洗单元输出的所述经混洗的多个输入数据的数量与由所述混洗单元接收到的多个输入数据的数量相同;
运行单元,用于接收从所述混洗单元输出的所述经混洗的多个输入数据,并对所述经混洗的多个输入数据执行并行操作;和
混洗控制单元,用于控制所述多个多路复用器彼此输出不同的数据。
2.如权利要求1所述的矢量处理器,其中,所述多个多路复用器中的每一个接收从所述多个寄存器文件输出的所述多个输入数据,并且输出在所接收到的多个输入数据当中的与提供有所述多个多路复用器中的对应的多路复用器的所述多个SIMD通道中的通道相对应的一个输入数据。
3.如权利要求1所述的矢量处理器,其中,所述混洗控制单元基于输入指令按周期控制所述多个寄存器文件和所述混洗单元。
4.如权利要求3所述的矢量处理器,其中,所述混洗控制单元将所述多个SIMD通道中的每一个的参考寄存器地址发送到所述多个寄存器文件中的每一个,并且
其中,所述参考寄存器地址是被存储在所述多个寄存器文件中的每个寄存器文件中的所述多个数据当中的在当前周期中使用的输入数据的地址。
5.如权利要求3所述的矢量处理器,其中,所述混洗控制单元将关于所述多个输入数据的混洗信息发送到所述混洗单元,并且
其中,所述混洗信息是关于要从所述多个SIMD通道中的每一个输出的输入数据的信息。
6.如权利要求3所述的矢量处理器,其中,所述混洗控制单元包括:
地址多路复用器,用于将要在当前周期中使用的输入数据的参考寄存器地址提供给所述多个寄存器文件中的每一个;和
控制单元,用于控制所述地址多路复用器。
7.如权利要求6所述的矢量处理器,其中,所述混洗控制单元还包括:
至少一个地址寄存器,用于存储所述多个SIMD通道中的每一个的参考寄存器地址,并且
其中,所述控制单元控制所述地址多路复用器以将从指令解码单元和所述至少一个地址寄存器提供的多个参考寄存器地址中的一个提供给对应的寄存器文件。
8.如权利要求3所述的矢量处理器,其中,所述输入指令包括要由所述运行单元处理的操作的类型、操作方法以及关于水平方向上的增量和垂直方向上的增量的信息中的至少一种。
9.如权利要求1所述的矢量处理器,还包括:
标量寄存器文件,
其中,所述运行单元使用从所述标量寄存器文件输出的标量数据对从所述混洗单元输出的所述经混洗的多个输入数据执行并行操作。
10.一种矢量处理器的控制方法,所述方法包括:
将多个数据存储到提供给多个单指令多数据SIMD通道中的相应通道的多个寄存器文件中的每一个中,并输出在所述多个数据当中的要在当前周期中使用的输入数据;
由混洗单元接收从所述多个寄存器文件输出的多个输入数据,由混洗单元执行对所接收到的多个输入数据的混洗使得所接收到的多个输入数据分别对应于所述多个SIMD通道并由所述混洗单元输出经混洗的多个输入数据,其中,所述混洗单元包括多个多路复用器,所述多个多路复用器在所述多个SIMD通道中的每一个中提供,被配置为接收所述多个输入数据并输出所述经混洗的多个输入数据,并且从所述混洗单元输出的所述经混洗的多个输入数据的数量与由所述混洗单元接收的所述多个输入数据的数量相同;以及
接收从所述混洗单元输出的所述经混洗的多个输入数据,并对所述经混洗的多个输入数据执行并行操作,
其中,输出所述经混洗的多个输入数据包括由所述多个多路复用器彼此输出不同的数据。
11.如权利要求10所述的控制方法,其中,接收所述多个输入数据包括:通过所述多个多路复用器中的每一个接收从所述多个寄存器文件输出的所述多个输入数据,并且输出所述经混洗的多个输入数据包括输出在所接收到的多个输入数据当中的与提供有所述多个多路复用器中的对应的多路复用器的所述多个SIMD通道中的通道相对应的一个输入数据。
12.如权利要求10所述的控制方法,还包括:
基于输入指令按周期控制所述多个寄存器文件和所述混洗单元。
13.如权利要求12所述的控制方法,其中,所述控制包括:
将所述多个SIMD通道中的每一个的参考寄存器地址发送到所述多个寄存器文件中的每一个,并且
其中,所述参考寄存器地址是被存储在所述多个寄存器文件中的每个寄存器文件中的所述多个数据当中的在当前周期中使用的输入数据的地址。
14.如权利要求12所述的控制方法,其中,所述控制包括将关于所述多个输入数据的混洗信息发送到所述混洗单元,并且
其中,所述混洗信息是关于要从所述多个SIMD通道中的每一个输出的输入数据的信息。
15.如权利要求12所述的控制方法,其中,所述控制包括控制地址多路复用器以将要在当前周期中使用的输入数据的参考寄存器地址提供给所述多个寄存器文件中的每一个。
CN201780074579.8A 2016-12-02 2017-10-23 矢量处理器及其控制方法 Active CN110050259B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR10-2016-0163399 2016-12-02
KR1020160163399A KR102659495B1 (ko) 2016-12-02 2016-12-02 벡터 프로세서 및 그 제어 방법
PCT/KR2017/011725 WO2018101607A1 (ko) 2016-12-02 2017-10-23 벡터 프로세서 및 그 제어 방법

Publications (2)

Publication Number Publication Date
CN110050259A CN110050259A (zh) 2019-07-23
CN110050259B true CN110050259B (zh) 2023-08-11

Family

ID=62242214

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780074579.8A Active CN110050259B (zh) 2016-12-02 2017-10-23 矢量处理器及其控制方法

Country Status (4)

Country Link
US (1) US11263018B2 (zh)
KR (1) KR102659495B1 (zh)
CN (1) CN110050259B (zh)
WO (1) WO2018101607A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10877925B2 (en) * 2019-03-18 2020-12-29 Micron Technology, Inc. Vector processor with vector first and multiple lane configuration
JP2021135984A (ja) * 2020-02-28 2021-09-13 京セラドキュメントソリューションズ株式会社 データ連携システムおよびデータ蓄積システム
CN115061731B (zh) * 2022-06-23 2023-05-23 摩尔线程智能科技(北京)有限责任公司 混洗电路和方法、以及芯片和集成电路装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103221933A (zh) * 2010-11-18 2013-07-24 德克萨斯仪器股份有限公司 从通用寄存器文件向simd寄存器文件移动数据的方法和装置
CN103970509A (zh) * 2012-12-31 2014-08-06 英特尔公司 对条件循环进行矢量化的指令和逻辑

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6115812A (en) * 1998-04-01 2000-09-05 Intel Corporation Method and apparatus for efficient vertical SIMD computations
US6665790B1 (en) 2000-02-29 2003-12-16 International Business Machines Corporation Vector register file with arbitrary vector addressing
US7818356B2 (en) 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US7933405B2 (en) * 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
US7676647B2 (en) 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
US8156310B2 (en) * 2006-09-11 2012-04-10 International Business Machines Corporation Method and apparatus for data stream alignment support
US8078836B2 (en) * 2007-12-30 2011-12-13 Intel Corporation Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits
US9141386B2 (en) 2010-09-24 2015-09-22 Intel Corporation Vector logical reduction operation implemented using swizzling on a semiconductor chip
CN103189837B (zh) * 2011-10-18 2016-12-28 松下知识产权经营株式会社 混洗模式生成电路、处理器、混洗模式生成方法、命令
US8984499B2 (en) 2011-12-15 2015-03-17 Intel Corporation Methods to optimize a program loop via vector instructions using a shuffle table and a blend table
CN107741861B (zh) * 2011-12-23 2022-03-15 英特尔公司 用于混洗浮点或整数值的装置和方法
US20130339649A1 (en) 2012-06-15 2013-12-19 Intel Corporation Single instruction multiple data (simd) reconfigurable vector register file and permutation unit
US9606797B2 (en) 2012-12-21 2017-03-28 Intel Corporation Compressing execution cycles for divergent execution in a single instruction multiple data (SIMD) processor
WO2014108749A1 (en) 2013-01-10 2014-07-17 Freescale Semiconductor, Inc. Data processor and method for data processing
EP3037957A4 (en) * 2013-08-19 2017-05-17 Shanghai Xinhao Microelectronics Co. Ltd. Buffering system and method based on instruction cache
EP3001307B1 (en) * 2014-09-25 2019-11-13 Intel Corporation Bit shuffle processors, methods, systems, and instructions
US10296489B2 (en) * 2014-12-27 2019-05-21 Intel Corporation Method and apparatus for performing a vector bit shuffle

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103221933A (zh) * 2010-11-18 2013-07-24 德克萨斯仪器股份有限公司 从通用寄存器文件向simd寄存器文件移动数据的方法和装置
CN103970509A (zh) * 2012-12-31 2014-08-06 英特尔公司 对条件循环进行矢量化的指令和逻辑

Also Published As

Publication number Publication date
US11263018B2 (en) 2022-03-01
KR20180063542A (ko) 2018-06-12
CN110050259A (zh) 2019-07-23
KR102659495B1 (ko) 2024-04-22
US20200272478A1 (en) 2020-08-27
WO2018101607A1 (ko) 2018-06-07

Similar Documents

Publication Publication Date Title
KR101202445B1 (ko) 프로세서
JP7253506B2 (ja) レジスタ・ベースの行列乗算
EP3631622B1 (en) Tensor register files
JP2023103392A5 (zh)
CN100410919C (zh) 处理器
CN110050259B (zh) 矢量处理器及其控制方法
US20070130444A1 (en) Integrated processor array, instruction sequencer and I/O controller
JP7253492B2 (ja) データ処理装置における乗累算
KR101956197B1 (ko) 그래픽 처리 유닛을 이용한 데이터 처리 방법 및 장치
EP3326060B1 (en) Mixed-width simd operations having even-element and odd-element operations using register pair for wide data elements
KR102584031B1 (ko) 데이터 처리장치에서의 요소 바이 벡터 연산
CN113032723B (zh) 一种矩阵乘法器的实现方法及矩阵乘法器装置
US11409840B2 (en) Dynamically adaptable arrays for vector and matrix operations
KR102649933B1 (ko) 벡터 자리올림이 있는 가산 명령
KR102591988B1 (ko) 데이터 처리장치에서의 벡터 인터리빙
WO2020059156A1 (en) Data processing system, method, and program
WO2023199014A1 (en) Technique for handling data elements stored in an array storage
WO2023199015A1 (en) Technique for handling data elements stored in an array storage
US20180067895A1 (en) Electronic device, reconfigurable processor and controlling methods thereof
CN112579971A (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