CN104111818B - 用于批量线程处理的处理器、处理方法和代码生成设备 - Google Patents

用于批量线程处理的处理器、处理方法和代码生成设备 Download PDF

Info

Publication number
CN104111818B
CN104111818B CN201410163208.5A CN201410163208A CN104111818B CN 104111818 B CN104111818 B CN 104111818B CN 201410163208 A CN201410163208 A CN 201410163208A CN 104111818 B CN104111818 B CN 104111818B
Authority
CN
China
Prior art keywords
batch
instruction
functional unit
threads
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
CN201410163208.5A
Other languages
English (en)
Other versions
CN104111818A (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 CN104111818A publication Critical patent/CN104111818A/zh
Application granted granted Critical
Publication of CN104111818B publication Critical patent/CN104111818B/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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters

Abstract

公开用于批量线程处理的处理器、处理方法和代码生成设备。用于批量线程处理的处理器包括:中央寄存器文件;一个或更多个批量功能单元,每个批量功能单元包括两个或更多个功能单元以及一个或更多个用于访问中央寄存器文件的端口。批量功能单元中的功能单元执行包括一个或更多个指令的批量指令,以顺序地执行批量指令中的一个或更多个指令。

Description

用于批量线程处理的处理器、处理方法和代码生成设备
本申请要求于2013年4月22日提交的第10-2013-0044435号韩国专利申请的优先权,其公开通过引用完整地包含于此。
技术领域
与示例性实施例一致的方法和设备涉及一种用于批量线程处理的处理器、使用所述处理器的批量线程处理方法和用于支持批量线程处理器的代码生成设备。
背景技术
粗粒度可重构阵列(CGRA)是指具有阵列形式的多个功能单元(FU)的硬件。CGRA用于加速操作。此外,即使在数据之间存在依赖性,CGRA也可通过使用软件流水线技术来最大化吞吐量。然而,在编译阶段执行数据处理的所有调度,这增加了编译时间。此外,当执行多线程时,硬件开销很大,使得在执行具有大的、未定义的延迟时间的操作(例如,存储器访问)时操作效率降低。
作为另一示例,单指令多线程(SIMT)是与CGRA相似的包括多个功能单元的架构。SIMT在执行由每个功能单元处理的单个线程的同时使用由多个功能单元处理的单个指令。根据SIMT,多个功能单元以相同的指令顺序处理大量数据,从而使需要在同一处理中处理大量数据的大规模并行数据处理应用受益。此外,当操作延迟高时,SIMT通过执行不同线程的线程切换来提供优越的处理效率。然而,在每个数据之间的依赖性存在于数据处理中的情况下,线程处理非常困难。
发明内容
根据示例性实施例的一方面,一种处理器可包括:中央寄存器文件;第一批量功能单元,包括第一多个功能单元、第一输入端口和第一输出端口,其中,第一多个功能单元通过第一输入端口访问中央寄存器文件,并且第一多个功能单元通过第一输出端口访问中央寄存器文件;第二批量功能单元,包括第二多个功能单元、第二输入端口和第二输出端口,其中,第二多个功能单元通过第二输入端口访问中央寄存器文件,并且第二多个功能单元通过第二输出端口访问中央寄存器文件,其中,第一批量功能单元被配置为接收包括程序的一个或更多个第一指令的第一批量指令,并且顺序地执行所述一个或更多个第一指令,第二批量功能单元被配置为接收包括所述程序的一个或更多个第二指令的第二批量指令,并且顺序地执行所述一个或更多个第二指令。
第一批量功能单元还可包括一个或更多个第一本地寄存器文件,第一本地寄存器文件被配置为存储第一多个功能单元的输入/输出数据,第二批量功能单元还可包括一个或更多个第二本地寄存器文件,第二本地寄存器文件被配置为存储第二多个功能单元的输入/输出数据。
第一批量功能单元可被配置为通过使用第一多个功能单元、第一多个功能单元之间的连接以及所述一个或更多个第一本地寄存器文件而作为粗粒度可重构阵列(CGRA)操作,第二批量功能单元可被配置为通过使用第二多个功能单元、第二多个功能单元之间的连接以及所述一个或更多个第二本地寄存器文件而作为CGRA操作。
第一批量功能单元的结构可与第二批量功能单元的结构相同。
第一多个功能单元可被配置为处理所述一个或更多个第一指令,第二多个功能单元可被配置为处理所述一个或更多个第二指令。
第一批量功能单元可被配置为在特定周期期间通过使用偏移指令信息执行所述一个或更多个第二指令中的至少一个指令,第二批量功能单元可被配置为在特定周期期间通过使用偏移指令信息执行所述一个或更多个第一指令中的至少一个指令。
第一批量指令可包括第一多个批量指令,第二批量指令可包括第二多个批量指令,第一批量功能单元可被配置为,当接收到第一多个批量指令时,以包括一个或更多个线程的线程组为单位顺序地执行第一多个批量指令中的每个批量指令,并且第二批量功能单元可被配置为,当接收到第二多个批量指令时,以线程组为单位顺序地执行第二多个批量指令中的每个批量指令。
第一批量功能单元和第二批量功能单元可被配置为:如果在针对批量指令执行线程组期间在特定线程发生阻塞,并且阻塞持续到针对具有对所述批量指令的依赖性的另一批量指令执行所述线程组的时刻,则针对所述另一批量指令以所述线程组中的最后次序执行所述发生阻塞的特定线程。
第一批量功能单元和第二批量功能单元可被配置为:如果在针对批量指令执行线程组期间发生条件分支,则将所述线程组划分为两个或更多个子线程组,并且针对条件分支的多个分支分别执行划分的两个或更多个子线程组。
第一批量功能单元和第二批量功能单元可被配置为:如果条件分支的多个分支结束并且合并,则将划分的两个或更多个子线程组合并为所述线程组并执行所述线程组。
根据示例性实施例的一方面,一种处理器可包括:第一批量功能单元,包括第一多个功能单元、第一输入端口和第一输出端口,其中,第一多个功能单元通过第一输入端口访问中央寄存器文件,并且第一多个功能单元通过第一输出端口访问中央寄存器文件;第二批量功能单元,包括第二多个功能单元、第二输入端口和第二输出端口,其中,第二多个功能单元通过第二输入端口访问中央寄存器文件,并且第二多个功能单元通过第二输出端口访问中央寄存器文件;多个偏移寄存器,被分配给第一多个功能单元和第二多个功能单元中的每个功能单元,其中,使用存储在批量指令存储器中的指令,通过多个偏移寄存器中的一个生成在特定周期期间将被执行的偏移指令,并且将生成的偏移指令发送到分配了多个偏移寄存器中的一个的每个功能单元。
根据示例性实施例的另一方面,提供一种用于生成代码的设备,所述设备包括:程序分析单元,被配置为分析将在包括第一批量功能单元和第二批量功能单元的处理器中处理的预定程序,其中,第一批量功能单元包括第一多个功能单元,第二批量功能单元包括第二多个功能单元;批量指令生成单元,被配置为基于分析结果生成第一批量指令和第二批量指令,第一批量指令和第二批量指令中的每个包括将分别在第一批量功能单元和第二批量功能单元中执行的一个或更多个指令。
根据示例性实施例的另一方面,提供一种通过处理器处理批量线程的方法,包括:将由代码生成设备生成的第一批量指令和第二批量指令输入到包括第一多个功能单元的第一批量功能单元和包括第二多个功能单元的第二批量功能单元中;分别通过第一批量功能单元和第二批量功能单元顺序地执行第一批量指令和第二批量指令。
通过以下详细描述、附图和权利要求,以上和其他方面将是清楚的。
附图说明
图1是示出根据本公开的示例性实施例的处理器的示图。
图2是根据示例性实施例的程序的控制流程图。
图3是示出在一般的SIMT架构中执行图2的程序的过程的示图。
图4A、图4B和图4C是示出在一般的CGRA中执行图2的程序的过程的示图。
图5A和图5B是示出在根据本公开的示例性实施例的处理器中执行图2的程序的过程的示图。
图6A和图6B是示出在根据本公开的示例性实施例的处理器的批量功能单元中输入的偏移指令(skewed instruction)的示图。
图7A是示出根据本公开的另一示例性实施例的用于偏移指令的输入的处理器的示图。
图7B是示出根据本公开的另一示例性实施例的用于偏移指令的输入的处理器的示图。
图8是示出根据本公开的示例性实施例的支持用于批量线程处理的处理器的代码生成设备的框图。
图9是示出根据本公开的示例性实施例的使用用于批量线程处理的处理器来处理批量线程的方法的流程图。
贯穿附图和详细描述,除非另外描述,否则相同的附图标号将被理解为指示相同的元件、特征和结构。为了清楚、说明和方便,可能夸大这些元件的相对大小和描绘。
具体实施方式
提供下面的描述以帮助读者获得对这里描述的方法、设备和/或系统的全面理解。因此,将向本领域的普通技术人员推荐这里描述的方法、设备和/或系统的各种改变、修改和等同物。此外,为了增加清楚和简洁,可省略公知功能和构造的描述。此外,以下描述的术语是考虑到本公开中的功能而定义的术语,并且可根据用户或操作者或常用实践而改变。因此,必须基于整个公开中的内容来进行定义。
以下,将参照附图详细描述用于批量线程处理的处理器、使用所述处理器处理批量线程的方法和用于批量线程处理的代码生成设备。
图1是示出根据本公开的示例性实施例的处理器的示图。
参照图1,根据本公开的示例性实施例的处理器100包括中央寄存器文件110以及一个或更多个批量功能单元120a、120b、120c和120d。虽然为了便于描述各个批量功能单元120a、120b、120c和120d中的输入端口130和输出端口140,将中央寄存器文件110分开示出在图1的上部和下部,但是处理器100不包括两个中央寄存器文件110。
批量功能单元120a、120b、120c和120d中的每个包括两个或更多个功能单元FU0、FU1、FU2和FU3。批量功能单元120a、120b、120c和120d中的每个包括一个或更多个输入端口130和一个或更多个输出端口140,并且通过一个或更多个输入端口130和一个或更多个输出端口140访问中央寄存器文件110。批量功能单元120a、120b、120c和120d可通过中央寄存器文件110彼此执行通信,诸如数据共享。
批量功能单元120a、120b、120c和120d中的每个可包括一个或更多个本地寄存器文件(LR)。本地寄存器文件LR可包括在一个或更多个功能单元中,并且用作用于功能单元的输入/输出数据的存储空间,且以先进先出(FIFO)方式操作。
根据本公开的示例性实施例的处理器100可通过使用包括在批量功能单元中的功能单元、功能单元之间的连接以及功能单元的本地寄存器文件LR,而作为粗粒度可重构阵列(CGRA)操作。此外,处理器100可通过使用两个或更多个批量功能单元120a、120b、120c和120d而作为单指令多线程(SIMT)操作,其中,批量功能单元120a、120b、120c和120d中的每个包括两个或更多个功能单元FU0、FU1、FU2和FU3。
批量功能单元120a、120b、120c和120d可具有相同的结构。包括在批量功能单元120a、120b、120c和120d中的每个批量功能单元中的功能单元FU0、FU1、FU2和FU3可具有彼此不同的结构。然而,包括在批量功能单元120a、120b、120c和120d中的每个批量功能单元中的功能单元FU0、FU1、FU2和FU3不需要具有彼此不同的结构,根据需要,两个或更多个功能单元可具有相同的结构。
例如,批量功能单元120a、120b、120c和120d可包括具有同等的计算能力的功能单元FU0、FU1、FU2和FU3。这里,计算能力可表示由功能单元执行的操作(例如,加法、减法、乘法和除法),并且批量功能单元120a、120b、120c和120d中的每个可通过包括执行这种操作的功能单元而具有相同的计算能力。这样,根据本公开的示例性实施例的处理器100通过具有相同的计算能力的批量功能单元120a、120b、120c和120d而作为SIMT操作,从而支持大规模并行数据线程处理。
一般的处理器在每个功能单元的算术逻辑单元(ALU)具有一个或更多个输入端口和一个或更多个输出端口以访问中央寄存器文件,但是根据本公开的示例性实施例的处理器100具有用于批量功能单元120a、120b、120c和120d中的每个批量处理单元的一个或更多个输入端口130和一个或更多个输出端口140以访问中央寄存器文件110,从而减少了当访问中央寄存器文件110时产生的开销,并因此提高了处理器100的性能。
例如,如果设置有八个功能单元的一般的处理器具有用于每个功能单元的两个输入端口和一个输出端口,则通过十六个输入端口和八个输出端口实现对中央寄存器文件的访问。相反,如果根据本公开的示例性实施例的处理器100以两个批量功能单元中的每个包括四个功能单元的形式包括八个功能单元,并且每个批量功能单元具有两个输入端口和一个输出端口,则通过四个端口和两个输出端口实现对中央寄存器文件的访问,从而减少了用于输入和输出操作的开销。
批量功能单元120a、120b、120c和120d中的每个可执行一个或更多个通过编译生成的批量指令。在这种情况下,每个批量指令可包括一个或更多个指令,并且各个指令可通过与各个指令对应的功能单元被顺序地执行。
同时,批量功能单元120a、120b、120c和120d可以以线程组为单位执行一个或更多个输入的批量指令,其中,每个线程组包括一个或更多个线程。
在这种情况下,如果在批量功能单元120a、120b、120c和120d正针对特定的批量指令执行预定线程组的同时在特定的线程发生阻塞,并且直到针对具有对发生阻塞的所述批量指令的依赖性的另一批量指令执行所述预定线程组的线程才解除阻塞,则批量功能单元120a、120b、120c和120d针对所述另一批量指令不执行发生阻塞的线程,从而使发生阻塞的线程在结束所述预定线程组的所有线程的执行的最后时间点才被执行。
以这种方式,防止连接到在执行批量指令时被阻塞的线程的所有线程被阻塞,从而提高了处理效率。
如果在批量功能单元120a、120b、120c和120d正针对特定的批量指令执行线程组的同时发生条件分支,则将所述线程组划分为两个或更多个子线程组,并且分别针对条件分支的多个分支执行划分的子线程组。此外,如果针对各个分支的条件分支结束并且分支合并,则划分的子线程组被合并为原始的线程组。
图2是在根据图1的示例性实施例的处理器100中执行处理批量线程的过程的程序的控制流程图。在图2中,在彼此具有预定的数据依赖性的同时执行十一个指令A至K,从而在一个指令的执行之后执行具有对所述指令的数据依赖性的另一指令。在这种情况下,延迟表示执行每个指令A至K所花费的周期(cycle)。
图3是示出在一般的SIMT架构中执行图2的程序的过程的示图。当通过不同线程分别处理128条数据时,需要处理总共128个线程。可以假设具有八个ALU(ALU0至ALU7)的一般的SIMT将128个线程划分为分别包括32个线程的四个线程组,并且允许针对总共11个指令A至K执行所述四个线程组。在这种情况下,如图3所示,为了使一般的SIMT平稳地操作,每个指令A至K被设置为具有4个周期的延迟,并且SIMT针对指令A至K从指令A开始到指令K顺序地执行四个线程组。花费总共180个周期。
图4A至图4C是示出在一般的CGRA中执行图2的程序的过程的示图。图4A示出与图3的SIMT具有相同数量的功能单元的一般的CGRA的示例,并且指令从配置存储器或高速缓冲存储器CMEM被输入。图4B示出被调度以在图4A的CGRA中执行的图2的程序的示例。图4C示出执行如图4B所示调度的11个指令A至K的示例。
在这种情况下,CGRA的迭代对应于SIMT的线程,并且执行128个迭代以处理如图3所描述的总共128个线程。参照图4B,为了针对11个指令A至K执行一个迭代,需要16个周期的延迟。参照图4C,当在具有启动间隔(II)2的同时执行总共128个迭代时,需要总共272个周期。
图5A和图5B是示出在根据本公开的示例性实施例的处理器100中执行图2的程序的过程的示图。
图5A示出在编译阶段生成的三个批量指令,以使图2的示例性程序在处理器100中被执行,其中,批量指令0包括四个指令A、B、D和E,批量指令1包括四个指令C、F、G和H,并且批量指令2包括最后的三个指令I、J和K。
图5B示出在处理器100具有分别包括四个功能单元的两个批量功能单元的情况下由批量功能单元中的一个顺序执行的三个批量指令。批量指令中的每个指令由批量功能单元中的各个功能单元执行。在批量功能单元中,通过与本地寄存器文件的互连来实现批量指令内的数据移动,并且通过中央寄存器文件100来实现批量指令之间的数据移动。
当与图3中示出的内容类似地处理总共128个线程时,两个批量功能单元中的每个针对三个批量指令执行64个线程,从而需要总共202个周期。例如,当以16个线程为单位调度128个线程时,批量功能单元中的一个在以交错方案切换16个线程的同时顺序地执行三个指令。也就是说,针对16个线程执行输入的批量指令,针对所述16个线程执行下一个批量指令,并且还针对所述16个线程执行最后的批量指令。其后,从第一批量指令开始,针对16个新的线程再次执行三个批量指令,以这种方式处理所有线程。在这种情况下,通过两个批量功能单元执行128个线程的执行,并且需要总共202个周期。
图6A和图6B是示出在批量功能单元中输入的偏移指令(skewed instruction)的示图。参照图6A和图6B,利用根据本公开的示例性实施例的处理器200,当执行一个或更多个输入到每个批量功能单元中的批量指令时,每个批量功能单元作为CGRA操作,从而每个批量指令中的指令相对于时间以交叉的方式被输入到功能单元中。这里,如以下所讨论的,因为由一个批量功能单元执行的批量指令随时间改变,所以指令可以是偏移指令。
参照图6A,以如下顺序改变批量指令:A-B-D-E(周期10)、C-B-D-E(周期17)、C-F-D-E(周期21)、C-F-G-E(周期25)和C-F-G-H(周期26)。在A-B-D-E和C-F-G-H是批量指令的情况下,以在这两个批量指令之间插入偏移指令的形式输入三个偏移指令。因此,在批量功能单元中可(以流水线形式)进行连续的操作。换句话说,偏移指令可以使批量功能单元中的功能单元连续地形成流水线并且进行操作。在偏移指令的特定示例中,在周期17的情况下,四个指令C、B、D和E被输入到批量功能单元中的四个功能单元。然而,如图5A所示,指令C被包括在批量指令1中,而其余的指令B、D和E属于批量指令0。这样,当在同一周期输入的指令中的至少一个属于不同的批量指令时,在所述周期输入的指令被称为偏移指令,并且处理器100会需要偏移指令信息以精确地将偏移指令输入到各个批量功能单元中。这样,一个批量功能单元可以在特定周期期间通过使用偏移指令信息执行一个或更多个第二指令中的至少一个指令,而另一个批量功能单元可以在特定周期期间通过使用偏移指令信息执行一个或更多个第一指令中的至少一个指令。
这种偏移指令信息可以在编译阶段由代码生成设备生成。处理器200使用偏移指令信息通过每个批量功能单元的程序计数器(PC)来访问批量指令存储器(BIM),以将对应的指令发送到批量功能单元中的对应的功能单元。
图7A是示出根据本公开的另一示例性实施例的用于偏移指令的输入的处理器的示图。
参照图7A,处理器300可包括中央寄存器文件(未示出)、一个或更多个批量功能单元和一个或更多个偏移寄存器310,其中,每个批量功能单元包括两个或更多个功能单元,一个或更多个偏移寄存器310被分配给包括在每个批量功能单元中的功能单元。
根据本公开的示例性实施例的处理器300包括与功能单元对应的偏移寄存器310,以更有效地处理上述的偏移指令的输入。处理器300可使用存储在批量指令存储器BIM0、BIM1、BIM2和BIM3中的指令,通过偏移寄存器310生成将在一个周期中被执行的偏移指令,并将生成的偏移指令发送到分配的功能单元。每个批量功能单元可使用程序计数器(PC)和分配给每个功能单元的偏移寄存器值来访问批量指令存储器。
在这种情况下,如图7A所示,批量指令存储器BIM0、BIM1、BIM2和BIM3被配置为被分为两个或更多个,以对应于各个功能单元,并存储将被发送到对应的功能单元的指令。
图7B是示出根据本公开的另一示例性实施例的用于偏移指令的输入的处理器的示图。除了图7A的处理器300之外,处理器400还可包括一个或更多个内核队列420。如图7B所示,不具有多个批量指令存储器BIM0、BIM1、BIM2和BIM3,而仅使用一个批量指令存储器BIM。
参照图7B,处理器400可包括与每个批量功能单元的功能单元对应的两个或更多个内核队列420。处理器400可提取批量指令存储器BIM的内核中的至少部分指令,并将提取的指令存储在内核队列420中。此外,每个批量功能单元通过基于它的PC和分配的偏移寄存器的值访问对应的内核队列420来读取期望的指令,以生成偏移指令并将生成的偏移指令发送到功能单元。
图8是示出根据本公开的示例性实施例的支持用于批量线程处理的处理器的代码生成设备的框图。
参照图1和图8,代码生成设备500包括程序分析单元510和批量指令生成单元520,以生成支持能够处理批量线程的处理器100的批量指令。
程序分析单元510分析将被处理的预定程序,并生成分析结果。例如,程序分析单元510可分析程序中的每个数据之间的依赖性以及在程序中是否存在条件分支语句。
批量指令生成单元520可基于分析结果生成将在处理器100的一个或更多个批量功能单元120a、120b、120c和120d中执行的一个或更多个批量指令。在这种情况下,每个批量指令可包括一个或更多个指令。
批量指令生成单元520可基于分析结果的依赖性分析信息,生成允许处理器100通过使用包括在批量功能单元120a、120b、120c和120d中的功能单元而作为CGRA操作的代码。可选择地,批量指令生成单元520可生成用于一个或更多个批量指令的代码,以使功能单元在每个批量功能单元中以SIMT架构操作。
如果分析出在程序中存在条件分支语句,则批量指令生成单元520允许处理条件分支语句的分支的指令被分别包括在不同的批量指令中。例如,当在条件估计为“真”的情况下执行第一路径并且在条件估计为“假”的情况下执行第二路径时,批量指令生成单元520可允许处理第一路径的指令和处理第二路径的指令被分别包括在不同的批量指令中。
此外,代码生成设备500可生成允许批量功能单元中的一个顺序地执行由批量指令生成单元520生成的用于处理分支的批量指令或者允许不同的批量功能单元分别执行所述批量指令的指令。以这种方式,可有效地处理一般的SIMT或CGRA中的与条件分支关联的约束。
批量指令生成单元520可生成批量指令,以使每个批量指令的总延迟彼此相似。此外,批量指令生成单元520可考虑批量功能单元120a、120b、120c和120d访问中央寄存器文件110的输入/输出端口的数量而生成批量指令。例如,批量指令生成单元520可以以如下方式生成批量指令:防止特定批量指令请求读取中央寄存器文件的数量超过执行所述特定批量指令的批量功能单元的读取端口的数量,同时防止特定批量指令请求写入的数量超过执行所述特定批量指令的批量功能单元的写入端口的数量。
此外,批量指令生成单元520可以以如下方式生成批量指令:防止包括在每个批量指令中的指令的数量超过包括在每个批量功能单元中的功能单元的数量。参照图5A,批量指令0和1中的每个批量指令包括四个指令,批量指令2包括三个指令,从而包括在每个批量指令中的指令的数量不超过4,即,包括在每个批量功能单元120a、120b、120c和120d中的功能单元的数量。
同时,批量指令生成单元520可生成批量指令,以使会在特定批量指令中发生延迟的操作的结果(例如,会发生阻塞的操作的结果)在所述特定批量指令中不用作源。例如,在调度期间,批量指令生成单元520可允许发生阻塞的操作被布置在批量指令的最先(foremost)的位置,并允许所述操作的线程执行结果以批量指令的最后次序被使用。可选择地,批量指令生成单元520可允许发生阻塞的操作被布置在批量指令的最后位置并且在下一批量指令的执行之前被处理。
同时,代码生成设备500可生成这样的指令,该指令允许生成的批量指令被同等地输入到所有批量功能单元中,或者允许生成的批量指令被划分并且被分别输入到两个或更多个批量功能单元中。
代码生成设备500可将生成的批量指令信息和各种指令信息存储在配置存储器或高速缓冲存储器中。同时,批量指令生成单元520可生成如上参照图6A和图6B描述的偏移指令信息。
以上描述了批量指令生成单元520。根据示例性实施例,批量指令生成单元520不收集可被同时执行的指令,而是通过收集将被顺序地执行的指令来生成批量指令,因此在生成批量指令的过程中不存在困难,并且可实现提高的效率。因为可通过多个批量功能单元同时处理多个数据,所以这种生成方式对于实现大规模并行数据处理是有效的。
这与超长指令字(VLIW)和超标量架构形成对比。
VLIW是这样的架构,其中,编译器创建由可被同时执行的多个指令构成的超长指令字,并且多个功能单元(或执行单元)在单个时钟周期内处理VLIW。在数字信号处理中广泛使用的VLIW架构经常不能找到足够的可被同时执行的指令,这会导致效率降低。此外,因为所有功能单元应该同时访问中央寄存器文件,所以中央寄存器文件的硬件开销不利地增加。
超标量是这样一种架构,其中,硬件发现可用于在运行期间并行执行的指令,并且多个执行单元(或功能单元)处理发现的指令。这种架构也在发现可被同时执行的指令方面存在困难,并且会导致非常复杂的硬件。
另一方面,示例性实施例可使用多个批量功能单元同时处理多个数据,这对于实现大规模并行数据处理是有效的。
图9是示出根据本公开的示例性实施例的使用用于批量线程处理的处理器来处理批量线程的方法的流程图。在图9中,示出通过使用图1中示出的根据本公开的示例性实施例的处理器100来处理批量线程的方法。已经通过图1至图8描述了批量线程处理的细节,以下将简要描述批量线程处理。
首先,处理器100可将由代码生成设备生成的一个或更多个批量指令输入到一个或更多个批量功能单元120a、120b、120c和120d(610)。在这种情况下,处理器100可以以线程为单位分配所有生成的批量指令,并将分配的批量指令输入到批量功能单元120a、120b、120c和120d。即,所有批量指令被同等地输入到批量功能单元120a、120b、120c和120d中的每个,以在每个批量功能单元处理需要被处理的所有线程组的一部分的同时被顺序地执行,进而使处理器100作为SIMT操作。
可选择地,批量指令可被划分并被输入到批量功能单元120a、120b、120c和120d。例如,当生成的批量指令的数量为4时,四个批量指令可被分别输入到批量功能单元120a、120b、120c和120d,从而以MIMT方案处理线程。可选择地,相同的两个批量指令被输入到两个批量功能单元120a和120b,其余的两个批量指令被输入到其余的两个批量功能单元120c和120d,从而SIMT和MIMT彼此结合地被使用。
当批量指令被划分并被输入到批量功能单元120a、120b、120c和120d时,处理条件分支的批量指令被输入到不同的批量功能单元120a、120b、120c和120d,从而提高了处理条件分支的效率。此外,因为各个批量功能单元120a、120b、120c和120d独立地操作,所以即使在一个批量功能单元中发生阻塞,其余的批量功能单元也可不管阻塞而执行线程处理。
其后,各个批量功能单元120a、120b、120c和120d可顺序地执行输入的一个或更多个批量指令(620)。在这种情况下,各个批量功能单元120a、120b、120c和120d可以以上述交错方案,在针对输入的批量指令切换每个线程的同时执行每个批量指令。
同时,如果在批量功能单元120a、120b、120c和120d正在针对特定批量指令执行预定线程组的同时在特定线程发生阻塞,并且直到针对具有对发生阻塞的所述批量指令的依赖性的另一批量指令执行所述预定线程组才解除阻塞,则批量功能单元120a、120b、120c和120d针对所述另一批量指令不执行发生阻塞的线程,从而使发生阻塞的线程在结束所述预定线程组的所有线程的执行的最后时间点才被执行。
此外,如果当批量功能单元120a、120b、120c和120d正在针对特定批量指令执行预定线程组时发生条件分支,则线程组被划分为两个或更多个子线程组,并且划分的子线程组可分别针对条件分支的多个分支被执行。此外,当多个分支的条件分支结束并且多个分支合并时,划分的子线程组被合并为原始的线程组。
示例性实施例的功能可被实现为计算机可读记录介质中的计算机可读代码。计算机可读记录介质包括存储计算机可读数据的所有类型的记录介质。计算机可读记录介质的示例包括ROM、RAM、CD-ROM、磁带、软盘和光学数据存储器。此外,记录介质可以以载波(诸如在互联网传输中使用的载波)的形式被实现。此外,计算机可读记录介质可被分布到网络上的计算机系统,在网络中,计算机可读代码可以以分布方式被存储和执行。
本领域技术人员还将理解,可以以执行特定任务的软件和/或硬件组件(诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC))的任意组合来实现示例性实施例。单元或模块可被有利地配置为寄存在可寻址的存储介质中,并被配置为在一个或更多个处理器或微处理器上运行。因此,作为示例,模块可包括诸如软件组件、面向对象的软件组件、类组件和任务组件的组件、进程、函数、属性、过程、子程序、程序代码段、驱动程序、固件、微码、电路、数据、数据库、数据结构、表、数组和变量的组件。所述组件和单元中提供的功能可被组合为更少的组件和单元或模块,或者可被进一步分为另外的组件和单元或模块。
以上已经描述了多个示例性实施例。然而,将理解的是,可进行各种修改。例如,如果描述的技术以不同的顺序被执行和/或如果描述的系统、架构、装置或电路中的组件以不同的方式被组合和/或被其他组件或它们的等同物替换或补充,则可实现适当的结果。因此,其他实施方式包括在权利要求的范围内。

Claims (18)

1.一种处理器,包括:
中央寄存器文件;
第一批量功能单元,包括第一多个功能单元、第一输入端口和第一输出端口,其中,第一多个功能单元通过第一输入端口访问中央寄存器文件,并且第一多个功能单元通过第一输出端口访问中央寄存器文件;
第二批量功能单元,包括第二多个功能单元、第二输入端口和第二输出端口,其中,第二多个功能单元通过第二输入端口访问中央寄存器文件,并且第二多个功能单元通过第二输出端口访问中央寄存器文件,
其中,第一批量功能单元被配置为接收包括程序的一个或更多个第一指令的第一批量指令,并且顺序地执行所述一个或更多个第一指令,第二批量功能单元被配置为接收包括所述程序的一个或更多个第二指令的第二批量指令,并且顺序地执行所述一个或更多个第二指令,
其中,第一批量功能单元还被配置为在特定周期期间通过使用偏移指令信息执行所述一个或更多个第二指令中的至少一个指令,
其中,第二批量功能单元还被配置为在特定周期期间通过使用偏移指令信息执行所述一个或更多个第一指令中的至少一个指令。
2.如权利要求1所述的处理器,其中,第一批量功能单元还包括一个或更多个第一本地寄存器文件,第一本地寄存器文件被配置为存储第一多个功能单元的输入/输出数据,
其中,第二批量功能单元还包括一个或更多个第二本地寄存器文件,第二本地寄存器文件被配置为存储第二多个功能单元的输入/输出数据。
3.如权利要求2所述的处理器,其中,第一批量功能单元被配置为通过使用第一多个功能单元、第一多个功能单元之间的连接以及所述一个或更多个第一本地寄存器文件而作为粗粒度可重构阵列CGRA操作,
其中,第二批量功能单元被配置为通过使用第二多个功能单元、第二多个功能单元之间的连接以及所述一个或更多个第二本地寄存器文件而作为CGRA操作。
4.如权利要求1所述的处理器,其中,第一批量功能单元的结构与第二批量功能单元的结构相同。
5.如权利要求1所述的处理器,其中,第一多个功能单元被配置为处理所述一个或更多个第一指令,
其中,第二多个功能单元被配置为处理所述一个或更多个第二指令。
6.如权利要求1所述的处理器,其中,第一批量指令包括第一多个批量指令,第二批量指令包括第二多个批量指令,
其中,第一批量功能单元被配置为当接收到第一多个批量指令时,以包括一个或更多个线程的线程组为单位顺序地执行第一多个批量指令中的每个批量指令,并且第二批量功能单元被配置为当接收到第二多个批量指令时,以线程组为单位顺序地执行第二多个批量指令中的每个批量指令。
7.如权利要求6所述的处理器,其中,第一批量功能单元和第二批量功能单元被配置为:如果在针对批量指令执行线程组期间在特定线程发生阻塞,并且阻塞持续到针对具有对所述批量指令的依赖性的另一批量指令执行所述线程组的时刻,则针对所述另一批量指令以所述线程组中的最后次序执行发生阻塞的所述特定线程。
8.如权利要求6所述的处理器,其中,第一批量功能单元和第二批量功能单元被配置为:如果在针对批量指令执行线程组期间发生条件分支,则将所述线程组划分为两个或更多个子线程组,并且针对条件分支的多个分支分别执行划分的两个或更多个子线程组。
9.如权利要求8所述的处理器,其中,第一批量功能单元和第二批量功能单元被配置为:如果条件分支的多个分支结束并且合并,则将划分的两个或更多个子线程组合并为所述线程组并执行所述线程组。
10.一种处理器,包括:
中央寄存器文件;
第一批量功能单元,包括第一多个功能单元、第一输入端口和第一输出端口,其中,第一多个功能单元通过第一输入端口访问中央寄存器文件,并且第一多个功能单元通过第一输出端口访问中央寄存器文件;
第二批量功能单元,包括第二多个功能单元、第二输入端口和第二输出端口,其中,第二多个功能单元通过第二输入端口访问中央寄存器文件,并且第二多个功能单元通过第二输出端口访问中央寄存器文件;
多个偏移寄存器,被分配给第一多个功能单元和第二多个功能单元中的每个功能单元,
其中,使用存储在批量指令存储器中的指令,通过多个偏移寄存器中的一个生成在特定周期期间将被执行的偏移指令,并且将生成的偏移指令发送到分配了多个偏移寄存器中的一个的每个功能单元,
其中,第一批量功能单元被配置为从批量指令存储器接收包括程序的一个或更多个第一指令的第一批量指令,并且顺序地执行所述一个或更多个第一指令,第二批量功能单元被配置为从批量指令存储器接收包括所述程序的一个或更多个第二指令的第二批量指令,并且顺序地执行所述一个或更多个第二指令,
其中,第一批量功能单元还被配置为在特定周期期间通过使用偏移指令执行所述一个或更多个第二指令中的至少一个指令,
其中,第二批量功能单元还被配置为在特定周期期间通过使用偏移指令执行所述一个或更多个第一指令中的至少一个指令。
11.如权利要求10所述的处理器,其中,批量指令存储器被配置为被分为两个或更多个单元以对应于第一多个功能单元和第二多个功能单元中的每个功能单元,并存储将被发送到与批量指令存储器对应的功能单元的指令。
12.如权利要求10所述的处理器,还包括:一个或更多个内核队列,存储从批量指令存储器的内核提取的至少部分指令,
其中,使用存储在每个内核队列中的指令,通过偏移寄存器生成在特定周期期间将被执行的偏移指令,并且将生成的偏移指令发送到每个分配的功能单元。
13.一种通过处理器处理批量线程的方法,所述方法包括:
将由代码生成设备生成的第一批量指令和第二批量指令输入到包括第一多个功能单元的第一批量功能单元和包括第二多个功能单元的第二批量功能单元中;
分别通过第一批量功能单元和第二批量功能单元顺序地执行第一批量指令和第二批量指令,
其中,第一批量功能单元在特定周期期间通过使用偏移指令信息执行第二批量指令中的至少一个指令,
其中,第二批量功能单元在特定周期期间通过使用偏移指令信息执行第一批量指令中的至少一个指令。
14.如权利要求13所述的方法,其中,在输入一个或更多个批量指令时,以线程组为单位输入第一批量指令和第二批量指令。
15.如权利要求14所述的方法,其中,在执行第一批量指令和第二批量指令时,在以交错方式切换包括在线程组中的每个线程的同时,针对每个批量指令执行线程组。
16.如权利要求14所述的方法,其中,在执行第一批量指令和第二批量指令时,如果在针对批量指令执行线程组期间在特定线程发生阻塞,并且阻塞持续到针对具有对所述批量指令的依赖性的另一批量指令执行所述线程组的时刻,则针对所述另一批量指令以所述线程组中的最后次序执行发生阻塞的所述特定线程。
17.如权利要求14所述的方法,其中,在执行第一批量指令和第二批量指令时,如果在针对批量指令执行线程组期间发生条件分支,则将所述线程组划分为两个或更多个子线程组,并且针对条件分支的多个分支分别执行划分的两个或更多个子线程组。
18.如权利要求17所述的方法,其中,在执行第一批量指令和第二批量指令时,如果条件分支的多个分支结束并且合并,则将划分的两个或更多个子线程组合并为所述线程组并执行所述线程组。
CN201410163208.5A 2013-04-22 2014-04-22 用于批量线程处理的处理器、处理方法和代码生成设备 Active CN104111818B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020130044435A KR20140126195A (ko) 2013-04-22 2013-04-22 배치 쓰레드 처리 기반의 프로세서, 그 프로세서를 이용한 배치 쓰레드 처리 방법 및 배치 쓰레드 처리를 위한 코드 생성 장치
KR10-2013-0044435 2013-04-22

Publications (2)

Publication Number Publication Date
CN104111818A CN104111818A (zh) 2014-10-22
CN104111818B true CN104111818B (zh) 2019-01-18

Family

ID=50549014

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410163208.5A Active CN104111818B (zh) 2013-04-22 2014-04-22 用于批量线程处理的处理器、处理方法和代码生成设备

Country Status (5)

Country Link
US (1) US20140317626A1 (zh)
EP (1) EP2796991A3 (zh)
JP (1) JP6502616B2 (zh)
KR (1) KR20140126195A (zh)
CN (1) CN104111818B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104636206B (zh) * 2015-02-05 2018-01-05 北京创毅视讯科技有限公司 一种系统性能的优化方法和装置
US9830731B2 (en) * 2015-04-01 2017-11-28 Mediatek Inc. Methods of a graphics-processing unit for tile-based rendering of a display area and graphics-processing apparatus
JP6960479B2 (ja) 2017-03-14 2021-11-05 アズールエンジン テクノロジーズ ヂュハイ インク.Azurengine Technologies Zhuhai Inc. 再構成可能並列処理
US10733016B1 (en) * 2019-04-26 2020-08-04 Google Llc Optimizing hardware FIFO instructions
CN110609705B (zh) * 2019-09-20 2021-05-11 深圳市航顺芯片技术研发有限公司 一种提高mcu总线效率的方法、智能终端、存储介质及芯片
US11900156B2 (en) * 2019-09-24 2024-02-13 Speedata Ltd. Inter-thread communication in multi-threaded reconfigurable coarse-grain arrays
CN111026443B (zh) * 2019-11-18 2023-05-05 中国航空工业集团公司西安航空计算技术研究所 一种基于算法特征的simt系统
CN111414198B (zh) * 2020-03-18 2023-05-02 北京字节跳动网络技术有限公司 一种请求处理方法及装置
CN113285931B (zh) 2021-05-12 2022-10-11 阿波罗智联(北京)科技有限公司 流媒体的传输方法、流媒体服务器及流媒体系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007027671A2 (en) * 2005-08-29 2007-03-08 Searete Llc Scheduling mechanism of a hierarchical processor including multiple parallel clusters
WO2007143278A2 (en) * 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US7447873B1 (en) * 2005-11-29 2008-11-04 Nvidia Corporation Multithreaded SIMD parallel processor with loading of groups of threads
CN102147722A (zh) * 2011-04-08 2011-08-10 深圳中微电科技有限公司 实现中央处理器和图形处理器功能的多线程处理器及方法
US20130007415A1 (en) * 2011-07-01 2013-01-03 Babayan Boris A Method and apparatus for scheduling of instructions in a multi-strand out-of-order processor

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4968977A (en) * 1989-02-03 1990-11-06 Digital Equipment Corporation Modular crossbar interconnection metwork for data transactions between system units in a multi-processor system
DE19756591B4 (de) * 1997-12-18 2004-03-04 Sp3D Chip Design Gmbh Vorrichtung zum hierarchischen Verbinden einer Mehrzahl von Funktionseinheiten in einem Prozessor
JP4264526B2 (ja) * 2002-05-23 2009-05-20 ソニー株式会社 画像処理装置およびその方法
KR100663709B1 (ko) * 2005-12-28 2007-01-03 삼성전자주식회사 재구성 아키텍처에서의 예외 처리 방법 및 장치
JP4911022B2 (ja) * 2007-12-27 2012-04-04 富士通セミコンダクター株式会社 カウンタ制御回路、動的再構成回路およびループ処理制御方法
US20100026897A1 (en) * 2008-07-30 2010-02-04 Cinnafilm, Inc. Method, Apparatus, and Computer Software for Modifying Moving Images Via Motion Compensation Vectors, Degrain/Denoise, and Superresolution
US20100274972A1 (en) * 2008-11-24 2010-10-28 Boris Babayan Systems, methods, and apparatuses for parallel computing
BRPI0920541A2 (pt) * 2008-11-24 2018-11-06 Intel Corp sistemas, métodos e aparelho para decompor um programa sequencial em multicadeias, executar as ditas cadeias, e reconstruir a execução sequencial
KR101581882B1 (ko) * 2009-04-20 2015-12-31 삼성전자주식회사 재구성 가능한 프로세서 및 그 재구성 방법
JP5589479B2 (ja) * 2010-03-25 2014-09-17 富士ゼロックス株式会社 データ処理装置
KR20120036208A (ko) * 2010-10-07 2012-04-17 삼성전자주식회사 재구성 기반 컴퓨팅 장치 및 이의 메모리 의존성 보정방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007027671A2 (en) * 2005-08-29 2007-03-08 Searete Llc Scheduling mechanism of a hierarchical processor including multiple parallel clusters
US7447873B1 (en) * 2005-11-29 2008-11-04 Nvidia Corporation Multithreaded SIMD parallel processor with loading of groups of threads
WO2007143278A2 (en) * 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
CN102147722A (zh) * 2011-04-08 2011-08-10 深圳中微电科技有限公司 实现中央处理器和图形处理器功能的多线程处理器及方法
US20130007415A1 (en) * 2011-07-01 2013-01-03 Babayan Boris A Method and apparatus for scheduling of instructions in a multi-strand out-of-order processor

Also Published As

Publication number Publication date
JP2014216021A (ja) 2014-11-17
EP2796991A3 (en) 2015-12-02
CN104111818A (zh) 2014-10-22
JP6502616B2 (ja) 2019-04-17
US20140317626A1 (en) 2014-10-23
EP2796991A2 (en) 2014-10-29
KR20140126195A (ko) 2014-10-30

Similar Documents

Publication Publication Date Title
CN104111818B (zh) 用于批量线程处理的处理器、处理方法和代码生成设备
US11226927B2 (en) Reconfigurable parallel processing
US9672043B2 (en) Processing of multiple instruction streams in a parallel slice processor
WO2019194915A1 (en) Apparatuses, methods, and systems for unstructured data flow in a configurable spatial accelerator
CN108027769A (zh) 使用寄存器访问指令发起指令块执行
US10817344B2 (en) Directed and interconnected grid dataflow architecture
US9690590B2 (en) Flexible instruction execution in a processor pipeline
Rosière et al. An out-of-order superscalar processor on FPGA: The reorder buffer design
Jin et al. Towards dataflow-based graph accelerator
KR101292670B1 (ko) 벡터 프로세싱 장치 및 방법
US9760378B2 (en) Methods and computer systems of software level superscalar out-of-order processing
US9411582B2 (en) Apparatus and method for processing invalid operation in prologue or epilogue of loop
US20230281014A1 (en) Parallel processing of multiple loops with loads and stores
US20230221931A1 (en) Autonomous compute element operation using buffers
US20240070076A1 (en) Parallel processing using hazard detection and mitigation
US20240078182A1 (en) Parallel processing with switch block execution
US20230342152A1 (en) Parallel processing architecture with split control word caches
WO2023220099A1 (en) Parallel processing of multiple loops with loads and stores
Kovac et al. Improving ODE integration on graphics processing units by reducing thread divergence
Schneiders A Comparison of Exposed Datapath and Conventional Processor Architectures
Maschi Exploitation of Data-Flow Parallelism and Stream Processing Paradigms within Reconfigurable Processor Architectures
Nguyen Accelerating Irregular Applications with Pipeline Parallelism
WO2023183279A1 (en) Autonomous compute element operation using buffers
Parri et al. Custom instruction hardware integration within a SoC hybrid environment
Liu et al. Exploration of Spatial Pipeline Computation for Heuristic Access Coarse-Grained Reconfigurable Cells

Legal Events

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