CN105389158A - 组合路径 - Google Patents

组合路径 Download PDF

Info

Publication number
CN105389158A
CN105389158A CN201510542611.3A CN201510542611A CN105389158A CN 105389158 A CN105389158 A CN 105389158A CN 201510542611 A CN201510542611 A CN 201510542611A CN 105389158 A CN105389158 A CN 105389158A
Authority
CN
China
Prior art keywords
instruction
branch
data handling
processor
treatment element
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.)
Granted
Application number
CN201510542611.3A
Other languages
English (en)
Other versions
CN105389158B (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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies 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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Priority to CN202010186166.2A priority Critical patent/CN111414197B/zh
Publication of CN105389158A publication Critical patent/CN105389158A/zh
Application granted granted Critical
Publication of CN105389158B publication Critical patent/CN105389158B/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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch 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 or 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • 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/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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • 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
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Abstract

组合路径。一种数据处理系统包括:处理器,所述处理器可操作为执行被划分成多个离散的指令的程序,所述处理器包括多个处理元件,每个处理元件能够每个周期执行n个指令,其中,n大于1;以及接口,所述接口被构造为读取第一程序,并且在由创建各自具有不同的指令序列的m个分支的程序检测到分支操作时,将来自所述分支中的一个的指令与来自其它分支中的至少一个的指令进行组合,以使得处理元件在单个周期期间针对至少一个分支来执行所组合的指令。

Description

组合路径
技术领域
本发明涉及在处理器处高效地执行指令。
背景技术
利用一些类型的数据(诸如图形数据),大的数据块经常需要经历相同的处理操作。一个示例是当改变图像的亮度时。与串行处理相比,并行地处理这种数据能够减少处理时间。能够在单指令多线程(SIMT)或单指令多数据(SIMD)处理器上执行并行处理,所述SIMT或SIMD处理器是像任何其它处理器一样具有执行单元、高速缓存存储器和存储器的微处理器,但是附加地并入了并行地执行多个线程或数据流的概念。然而,代替使各个线程从存储器单独地提取数据,各个线程通过用于提取携带针对线程中的每一个的数据块的单个提取操作来在能够被提供给所述线程的不同的数据上执行相同的指令集。与传统的单指令单数据(SISD)处理相比,SIMT和SIMD处理能够提供提高的处理效率。
SIMT和SIMD处理器包括能够同时执行相同的指令的多个处理元件。每个处理元件支持它自己的线程,并且每个线程运行相同的程序代码,但是具有不同的数据。SIMT和SIMD处理的一个问题是分支操作(如可能由程序代码中的IF()语句导致)的高成本,这导致块中的一些数据正由指令的一个分支操作,而剩余的数据由指令的另一分支操作。这种操作能够导致处理元件的空闲和未充分利用以及程序的处理时间的增加。因此,需要更高效地并行处理具有分支操作的程序。
发明内容
根据第一方面,提供了一种数据处理系统,该数据处理系统包括:处理器,所述处理器能操作为执行被划分成多个离散的指令的程序,所述处理器包括多个处理元件,每个处理元件能够每个周期执行n个指令,其中,n大于1;以及接口,所述接口被构造为在由创建各自具有不同的指令序列的m个分支的程序检测到分支操作时,将来自所述分支中的一个的指令与来自其它分支中的至少一个的指令进行组合,以使得处理元件在单个周期期间执行所组合的指令。
m可以大于1。
m可以小于n。另选地,m和n可以相等。
来自所述分支中的每一个的指令可以被组合,以使得各个处理元件每个周期执行来自各个分支的至少一个指令。
所述处理器可以被构造为使得每个处理元件每个周期执行与其它处理元件相同的指令。
每个分支的指令序列可以独立于其它分支的指令序列。
每个指令序列可以包括依赖于所述序列中的以前的指令的至少一个指令以及独立于所述序列中的以前的指令的至少一个指令。
每个指令序列可以包括能够被并行地执行的n个连续的指令以及不能够被并行地执行的n个连续的指令。
可以根据所述程序来创建所述分支。
所述数据处理系统还可以包括编译器,所述编译器被构造为读取所述程序并且将所述程序编译成多个指令。
所述接口可以被构造为模拟包括多个处理元件的处理器,每个处理元件能够每个周期执行不超过一个指令。
所述接口可以被构造为生成包括所述被模拟的处理器的参数的消息,并且将所述消息发送到所述编译器。
所述接口可以包括编译器,所述编译器被构造为读取所述程序并且将所述程序编译成多个指令。
所述处理器可以是GPU,并且所述编译器可以被构造为从OpenCL代码生成针对所述处理元件的指令。
所述处理器可以能够同时支持多个线程。
所述处理器可以是单指令多线程SIMT处理器。
所述处理器可以是n向VLIW处理器。
所述数据处理系统还可以包括屏蔽逻辑,所述屏蔽逻辑被构造为在单个周期期间阻止所述处理元件执行所组合的指令中的所述指令中的一个,并且允许执行所组合的指令中的其它指令。
根据第二方面,提供了一种用于将程序编译成能在包括多个处理元件的处理器处执行的多个指令的编译器,每个处理元件能够每个周期执行n个指令,其中,n大于1,所述编译器被构造为:读取所述程序,并且在检测到创建m个分支的分支操作并且每个分支具有不同的指令序列时,将来自所述分支中的一个的指令与来自其它分支中的至少一个的指令进行组合,以使处理元件在单个周期期间执行所组合的指令。
根据第三方面,提供了一种用于能操作为执行被划分成多个离散的指令的程序的处理器的方法,所述处理器包括多个处理元件,每个处理元件能够每个周期执行n个指令,其中,n大于1,所述方法包括以下步骤:在由创建各自具有不同的指令序列的m个分支的程序检测到分支操作时,将来自所述分支中的一个的指令与来自其它分支中的至少一个的指令进行组合,以使得处理元件在单个周期期间执行所组合的指令。
根据第四方面,提供了一种机器可读代码,该机器可读代码用于生成上述数据处理系统。
根据第五方面,提供了一种机器可读存储介质,该机器可读存储介质具有用于生成上述数据处理系统的、编码的非暂时机器可读代码。
根据第六方面,提供了一种基本上如本文中参照图1-5中的任一幅描述的数据处理系统和/或方法。
附图说明
现在将参照附图通过示例的方式来详细地描述本发明。在附图中:
图1a例示了示例程序的分支;
图1b例示了示例程序的常规处理;
图2例示了示例程序的更快的处理方式;
图3例示了示例程序的另一更快的处理方式;
图4是能够处理程序的数据处理系统的示意图;以及
图5是处理程序的流程图。
具体实施方式
通过示例的方式来提供以下描述,以使得任何本领域技术人员能够获得并且使用本发明。本发明不限于本文中描述的实施方式,并且对公开的实施方式的各种修改对于本领域技术人员是容易显而易见的。
图1a和图1b例示了在具有4个处理元件的示例SIMT处理器处由分支分叉导致的问题。该示例中的每个处理元件是超长指令字(VLIW)处理器。在该示例中,每个处理元件是能够每个周期执行两个指令的双向VLIW。
图1a例示了当程序具有诸如if-then-else语句这样的条件语句时,从示例程序编译的指令如何分叉。首先在101,将程序编译成指令序列0至5。然后,分支操作创建两个分支,各个分支具有不同的指令并且彼此独立。第一分支102具有指令序列6至11,并且第二分支103具有不同的指令序列12至17。然后,这些分支在104处汇聚,以具有相同的指令序列18-20。
图1b例示了将在上述SIMT处理器上如何常规地执行图1a的指令。各个线程105至108在其自己的相应处理元件上被执行。最初,当每个处理元件针对指令0至5在每个周期执行相同的指令时,各个线程相同。
由于每个处理元件是双向VLIW,因此能够在单个周期时间期间执行两个指令,如在执行指令1和指令2的第二周期以及执行指令3和指令4的第三周期例示的。指令2和指令4分别独立于以前的指令1和指令3,因此能够分别与指令1和指令3并行地执行指令2和指令4。一些指令可能依赖于以前的指令,因此只有当已经执行以前的依赖的指令时,才能够执行这些指令。例如,指令1依赖于指令0,因此不能并行地执行指令0和指令1,所以即使处理元件各自能够每个周期执行两个指令,在第一周期在所述处理元件处也执行单个指令。这意味着,一般而言,当执行程序时,可能并不总是利用每个处理元件的全部资源。
如上所述,然后在指令5之后出现分支。线程105分支到具有指令序列6至11的第一分支102,并且线程106至108分支到具有指令序列12至17的第二分支103。在每个周期期间,SIMT处理器的处理元件不能执行对于其它元件是不同的指令(即,处理元件以锁步(lockstep)方式工作)。因此,在线程105中执行指令6至11的周期期间,针对其它线程106至108的处理元件不执行任何指令。这能够通过使用使得针对线程106至108的处理元件在周期6至11期间不参与的屏蔽逻辑而实现。一旦已经执行针对第一分支102的指令,针对第二分支103的指令能够针对线程106至108而开始。在执行指令12至17的周期期间,屏蔽逻辑被翻转(flip),并且针对线程105的处理元件不执行任何指令。因此,针对SIMT处理器的分支使得处理元件中的一些没有被利用,这导致周期时间的增加。
一旦已经完成针对第二分支103的指令,分支就汇聚以执行相同的指令18至20。
如上所述,能够并行地执行一些指令,并且只有在执行以前的、依赖的指令之后,才能够执行其它指令。这展示于图1b中,在图1b中,指令6和指令7彼此独立,因此能够被并行处理。类似地,指令9和指令10、指令14和指令15以及指令16和指令17能够被并行地执行。指令9、指令13和指令14分别依赖于以前的指令8、指令12和指令13,因此不能与它们以前的指令一起被执行,所以它们在下一周期被执行。因此,当执行一些指令时,没有充分地利用处理元件的所有资源。
图2例示了执行来自图1a的分支程序的指令的更高效的方法。像以前那样,在分支之前,在4个周期上,在每个线程以锁步方式来执行指令0至5。还像以前那样,线程105采用第一分支101的路径,并且线程106至108采用第二分支102的路径。在该示例中,分支102和分支103被合并,使得在每个周期,每个处理元件执行来自第一分支102的指令以及来自第二分支103的指令。因为这些分支是独立的(即,一个分支中的每个指令独立于另一分支中的任何指令),所以来自每个分支的指令能够与来自另一分支的指令合并,并且在同一周期期间在处理元件处被并行地处理。因此,与使用在图1b中描述的常规方法来执行相同的分支所需的八个周期相比,在六个周期中完成针对分支102和分支103的指令的执行。因此,能够减少具有分支操作的程序的处理时间。
在分支处理的最后周期(第十周期),每个线程保持其分支路径的数据,并且丢弃其它分支的数据。例如,遵循分支102的线程105保持来自执行指令11的数据,并且丢弃来自执行指令17的数据。类似地,遵循分支103的线程106至108各自保持来自执行指令17的数据,并且丢弃来自执行指令11的数据。然后,分支102和分支103汇聚,使得各个线程105至108同时执行指令18和指令19。虽然使用该方法丢弃了数据,但是减少了执行来自分支102和分支103二者的指令所需的周期的数目,这导致程序的更快的处理。
图3例示了合并来自分支102和分支103的指令的另一方法。在第五周期,每个处理元件最初执行来自第一分支102的指令6和指令7。然后,在第六周期,在每个处理元件处将来自第一分支102的指令8与来自第二分支的指令12一起来执行。因为指令9依赖于指令8,因此它们不能被并行地被处理,所以指令8与指令12而不指令9一起来执行。来自执行指令12的数据被存储在存储器中,并且在更后的周期中被使用。然后,针对每个线程,继续执行来自第一分支102的剩余指令。在第八周期,将来自第一分支102的最后指令(指令11)与来自第二分支103的、还要执行的第一指令(指令13)一起来执行。指令13依赖于指令12,指令12在以前已经被执行并且由此产生的数据在不同的周期(第六周期)被存储,因此能够将指令13与指令11一起来执行。因此,在第六周期和第八周期,每个处理元件执行来自每个分支的指令。然后,针对各个线程105至108,执行第二分支103的剩余指令。合并指令的这种方式也导致这些分支在六个周期被执行,而不是图1b中的示例所需的八个周期。
照惯例,当出现使处理元件采用不同的路径的分支时,这些处理元件中的一些被屏蔽(maskout),因此它们在特定周期期间不参与。这能够通过在处理器的屏蔽逻辑处使用屏蔽位而实现。在图2和图3的示例中,当出现分支时(例如,在周期5-10),处理器处的屏蔽逻辑被构造为使得所有处理元件都参与执行指令。
在上述示例中,每个处理元件能够每个周期执行两个指令。然而,处理元件能够每个周期执行多于两个指令。例如,处理元件可以是分别能够每个周期处理3、4、5或8个指令的3向、4向、5向或8向VLIW处理器。
能够将来自各个分支的指令进行合并,使得在来自按照周期处理的各个分支的指令的数目上存在相等的拆分。例如,在具有4向VLIW处理元件的处理器以及要处理的两个分支的情况下,能够在每个周期在每个处理元件处执行来自这两个分支中的每一个的两个指令。来自各个分支的指令的数目可以不相等。使用相同的示例,可以存在在每个周期在每个处理元件处被执行的来自一个分支的三个指令以及来自另一分支的一个指令。将来自不同分支的指令进行合并的方式可能取决于是否能够并行地执行指令。换句话说,来自每个分支的指令的拆分可能取决于指令是依赖于还是独立于针对每个分支的序列中的前一指令。
在上述示例中,程序分支为两个分支。然而,程序可以分支为多于两个分支。能够由本文中描述的方法高效地执行的分支的数目取决于每个处理元件能够每个周期执行的指令的数目。在最低程度上,优选的是,每个处理元件能够每个周期执行的指令的数目与由程序创建的分支的数目相同。通常,能够通过提供能够每个周期执行更多数目的指令的处理元件来减少用于处理分支的周期的数目。
各个分支可以具有不相等的数目的指令。在这种情况下,在已经执行来自较短的分支的所有指令之后,继续在各个处理元件处执行具有更大数目的指令的分支。
图4是能够执行本文中描述的执行来自分支程序的指令的方法的数据处理系统400的示意图。
数据处理系统400包括能够执行指令的处理器410。数据处理系统400可以包括使得能够在处理器410处执行程序430的接口420。接口420可以包括能够将程序编译成用于在处理器410处执行的指令的编译器425。编译器425能够读取程序430,并且将该程序430分割成能够由处理器410执行的离散的指令序列。编译器425可以直接地读取程序430,或者通过将程序语言转换成可由编译器425读取的语言来间接地读取程序430。可以使用诸如OpenCL、OpenGL、GLSL、C、C++、Fortran等这样的编程语言来对程序430进行编码。接口420可以是诸如OpenCL、OpenGL、CUDA等这样的框架,并且编译器可以被构造为根据该框架来操作。例如,接口420可以是由主机CPU(该主机CPU可以与处理器410不同)控制的OpenCL框架。当需要在处理器410处编译并且执行程序430时,主机CPU能够调用适当的OpenCL功能。
处理器410可以是图形处理单元(GPU)或中央处理单元(CPU)。处理器410可以是SIMT或SIMD处理器或者能够同时执行相同指令的多次执行的任何类型的并行处理器。处理器410包括多个处理元件。在该示例中,处理器包括四个处理元件411至414。各个处理元件411至414能够包括用于根据指令来执行操作的多个算术逻辑单元(ALU)和/或浮点单元(FPU)。各个处理元件411至414可以是n向VLIW处理器,其中n大于1。各个处理元件411至414能够在一个处理器时钟周期执行n个指令或者小于n个指令。
处理器410还包括屏蔽逻辑415。屏蔽逻辑415能够被构造为在存在分支操作时使得所有处理元件411至414能够参与执行本文中描述的指令。
在一个实施方式中,屏蔽逻辑可以被构造为屏蔽各个处理元件411至414的ALU和/或FPU中的一个或更多个,以选择性地阻止执行指令。例如,在图2中,虽然要在各个线程105至108上执行指令6和指令12、指令7和指令13、…、指令11和指令17,但是屏蔽逻辑可以屏蔽与该线程不相关的指令。在周期5,屏蔽逻辑能够屏蔽针对线程105的指令12,并且屏蔽针对线程106至108的指令6。类似地,在周期6,屏蔽逻辑能够屏蔽针对线程105的指令13,并且屏蔽针对线程106至108的指令7。类似地,针对周期10,以这种方式来执行屏蔽。这样,能够避免执行针对与该线程不相关的分支的指令。
数据处理系统400还包括位于接口420和处理器410之间的处理器接口440。处理器接口440能够使编译器425以下面的方式来编译指令:即使各个处理元件411-414能够每个周期执行多个指令,该方式也适合于仅能够每个周期执行一个指令的处理元件。当接口420或编译器425查询处理器410以确定其容量时,处理器接口440拦截该查询,并且利用具有模拟具有能够每个周期执行一个指令的多个处理元件的处理器的参数的消息来响应于该查询。换句话说,处理器接口440使接口420和编译器425相信处理器410是单线程处理器(single-issueprocessor)并且因此处理器410相应地编译指令。
经编译的指令被发送到处理器接口440或者由处理器接口440拦截,该处理器接口440然后将这些指令合,使得在各个处理元件411-414处按照以上参照图2和图3描述的方式来执行多个指令。例如,对于在图2和图3中要处理的程序,当使程序(例如,指令0-5)汇聚时,处理器接口440接收指令并且将独立的指令(指令1和指令2以及指令3和指令4)合并,使得它们能够由处理元件执行。然后,处理器接口440将未合并的指令(指令0和指令5)以及合并的指令(指令1和指令2以及指令3和指令4)提供到处理器410。当由于分支操作而使程序分叉时,处理器接口440接收针对每个分支的指令(分别为指令6-11和指令12-17),并且如上所述地将它们合并。然后,将合并的指令发送到处理器410。
通过提供处理器接口440,能够在不需要修改的情况下使用标准编译器(例如,OpenCL编译器)。另选地,可以省去处理器接口440,并且接口420的编译器425可以被构造为使得其以如上所述的方式编译指令。可以由编译器425来执行由处理器接口440执行的功能的一些或全部。例如,编译器425可以包括前端(该前端可以包括解析和操纵语法和语义以及生成中间表示)、中端(用于例如提供功能优化)和后端(用于例如提供机器特定优化和最终二进制代码生成)。可以在编译器425的后端部处实现处理器接口440(或接口440的功能的一些)。
在上述示例中,处理元件是VLIW处理器。然而,处理元件可以是能够每个周期执行多个指令的超标量处理器。对于超标量处理器,在运行时动态地且自动地搜索可用的处理资源,并且能够由硬件指令调度器来执行在上述分支期间的指令合并。
图5是描述处理程序430的方法的流程图。在步骤501,读取程序,以确定该程序是否具有分支操作。当检测到分支操作时,处理移动到步骤502。如果在程序中不存在分支操作,则处理结束,并且像正常那样处理程序(步骤503)。在步骤504,如上所述地将来自分支的经编译的指令进行组合。在如上所述地在编译器处被编译或组合之后,指令能够(在接口440处)被组合。在步骤505,将经组合的指令发送到处理器。在步骤506,处理器的处理元件如上所述地执行经组合的指令。可以在要执行的每个程序中针对每个分支操作来重复所述处理。
图4的数据处理系统被示出为包括诸如接口420、编译器425和接口440这样的多个功能块。这仅是示意性的,并且不旨在限定数据处理系统的不同的逻辑元件之间的严格划分。能够以任何适当的方式来提供每个功能块。
如本文中使用的术语软件和计算机可读代码包括处理器(例如,CPU和/或GPU)可执行的代码、固件、字节代码、编程语言代码(诸如C、OpenCL或OpenGL)和可重构逻辑器件(诸如FPGA)的模块。机器可读代码和指令包括用于限定任何级别(包括寄存器传送级(RTL))的集成电路的硬件表示、高级别电路表示(诸如Verilog或VHDL)和低级别表示(诸如OASIS和GDSII)的软件和代码。
可以由一个或更多个物理处理单元来执行本文中描述的算法和方法,所述一个或更多个物理处理单元执行使所述单元执行所述算法/方法的软件。所述物理处理单元或每个物理处理单元可以是任何适当的处理器,诸如CPU或GPU(或其核)或者固定功能或可编程硬件。软件可以以非暂时形式存储在诸如集成电路存储器或者光学存储器或磁存储器这样的机器可读介质中。机器可读介质可以包括多种存储器,诸如芯片上存储器(on-chipmemory)、计算机工作存储器和非易失性存储装置。
本申请人据此独立地公开了本文中描述的每个独立特征和两个或更多个这种特征的任和组合,使得这些特征或组合能够根据本领域技术人员的公知常识基于作为整体的本说明书来实现,而无论这些特征或特征的组合是否解决本文中公开的任何问题,并且不限制权利要求的范围。本申请人指出,本发明的方面可以包括任何这种独立特征或特征的组合。考虑到上述描述,将对本领域技术人员显而易见的是,可以在本发明的范围内做出各种修改。

Claims (23)

1.一种数据处理系统,该数据处理系统包括:
处理器,所述处理器能操作为执行被划分成多个离散的指令的程序,所述处理器包括多个处理元件,每个处理元件能够每个周期执行n个指令,其中,n大于1;以及
接口,所述接口被构造为在由创建各自具有不同的指令序列的m个分支的程序检测到分支操作时,将来自所述分支中的一个的指令与来自其它分支中的至少一个的指令进行组合,以使得处理元件在单个周期期间执行所组合的指令。
2.根据权利要求1所述的数据处理系统,其中,m大于1。
3.根据权利要求1或2所述的数据处理系统,其中,m小于n。
4.根据权利要求1或2所述的数据处理系统,其中,m和n相等。
5.根据前述权利要求中的任一项所述的数据处理系统,其中,来自所述分支中的每一个的指令被组合,以使得各个处理元件每个周期执行来自各个分支的至少一个指令。
6.根据前述权利要求中的任一项所述的数据处理系统,其中,所述处理器被构造为使得每个处理元件每个周期执行与其它处理元件相同的指令。
7.根据前述权利要求中的任一项所述的数据处理系统,其中,每个分支的指令序列独立于其它分支的指令序列。
8.根据前述权利要求中的任一项所述的数据处理系统,其中,每个指令序列包括依赖于所述序列中的以前的指令的至少一个指令以及独立于所述序列中的以前的指令的至少一个指令。
9.根据前述权利要求中的任一项所述的数据处理系统,其中,每个指令序列包括能够被并行地执行的n个连续的指令以及不能够被并行地执行的n个连续的指令。
10.根据前述权利要求中的任一项所述的数据处理系统,其中,根据所述程序来创建所述分支。
11.根据前述权利要求中的任一项所述的数据处理系统,所述数据处理系统还包括编译器,所述编译器被构造为读取所述程序并且将所述程序编译成多个指令。
12.根据权利要求11所述的数据处理系统,其中,所述接口被构造为模拟包括多个处理元件的处理器,每个处理元件能够每个周期执行不超过一个指令。
13.根据权利要求12所述的数据处理系统,其中,所述接口被构造为生成包括所述被模拟的处理器的参数的消息,并且将所述消息发送到所述编译器。
14.根据权利要求1至10中的任一项所述的数据处理系统,其中,所述接口包括编译器,所述编译器被构造为读取所述程序并且将所述程序编译成多个指令。
15.根据权利要求11至14中的任一项所述的数据处理系统,其中,所述处理器是GPU,并且所述编译器被构造为从OpenCL代码生成针对所述处理元件的指令。
16.根据前述权利要求中的任一项所述的数据处理系统,其中,所述处理器能够同时支持多个线程。
17.根据前述权利要求中的任一项所述的数据处理系统,其中,所述处理器是单指令多线程SIMT处理器。
18.根据前述权利要求中的任一项所述的数据处理系统,其中,所述处理器是n向VLIW处理器。
19.根据前述权利要求中的任一项所述的数据处理系统,所述数据处理系统还包括屏蔽逻辑,所述屏蔽逻辑被构造为在单个周期期间阻止所述处理元件执行所组合的指令中的所述指令中的一个,并且允许执行所组合的指令中的其它指令。
20.一种用于将程序编译成能在包括多个处理元件的处理器处执行的多个指令的编译器,每个处理元件能够每个周期执行n个指令,其中,n大于1,所述编译器被构造为:
读取所述程序,并且在检测到创建m个分支的分支操作并且每个分支具有不同的指令序列时,将来自所述分支中的一个的指令与来自其它分支中的至少一个的指令进行组合,以使处理元件在单个周期期间执行所组合的指令。
21.一种用于能操作为执行被划分成多个离散的指令的程序的处理器的方法,所述处理器包括多个处理元件,每个处理元件能够每个周期执行n个指令,其中,n大于1,所述方法包括以下步骤:
在由创建各自具有不同的指令序列的m个分支的程序检测到分支操作时,将来自所述分支中的一个的指令与来自其它分支中的至少一个的指令进行组合,以使得处理元件在单个周期期间执行所组合的指令。
22.一种机器可读代码,该机器可读代码用于生成根据权利要求1至19中的任一项所述的数据处理系统。
23.一种机器可读存储介质,该机器可读存储介质具有用于生成根据权利要求1至19中的任一项所述的数据处理系统的、编码的非暂时机器可读代码。
CN201510542611.3A 2014-08-28 2015-08-28 数据处理系统、编译器、处理器的方法和机器可读介质 Active CN105389158B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010186166.2A CN111414197B (zh) 2014-08-28 2015-08-28 数据处理系统、编译器、处理器的方法和机器可读介质

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1415210.2 2014-08-28
GB1415210.2A GB2524126B (en) 2014-08-28 2014-08-28 Combining paths

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202010186166.2A Division CN111414197B (zh) 2014-08-28 2015-08-28 数据处理系统、编译器、处理器的方法和机器可读介质

Publications (2)

Publication Number Publication Date
CN105389158A true CN105389158A (zh) 2016-03-09
CN105389158B CN105389158B (zh) 2020-04-10

Family

ID=51752247

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201510542611.3A Active CN105389158B (zh) 2014-08-28 2015-08-28 数据处理系统、编译器、处理器的方法和机器可读介质
CN202010186166.2A Active CN111414197B (zh) 2014-08-28 2015-08-28 数据处理系统、编译器、处理器的方法和机器可读介质

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202010186166.2A Active CN111414197B (zh) 2014-08-28 2015-08-28 数据处理系统、编译器、处理器的方法和机器可读介质

Country Status (4)

Country Link
US (2) US10534615B2 (zh)
CN (2) CN105389158B (zh)
DE (1) DE102015112202A1 (zh)
GB (1) GB2524126B (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109725903A (zh) * 2017-10-30 2019-05-07 华为技术有限公司 程序代码变换处理方法、装置及编译系统
WO2019218896A1 (zh) * 2018-05-18 2019-11-21 上海寒武纪信息科技有限公司 计算方法以及相关产品
US11397579B2 (en) 2018-02-13 2022-07-26 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US11513586B2 (en) 2018-02-14 2022-11-29 Shanghai Cambricon Information Technology Co., Ltd Control device, method and equipment for processor
US11544059B2 (en) 2018-12-28 2023-01-03 Cambricon (Xi'an) Semiconductor Co., Ltd. Signal processing device, signal processing method and related products
US11609760B2 (en) 2018-02-13 2023-03-21 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11676028B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US11675676B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US11703939B2 (en) 2018-09-28 2023-07-18 Shanghai Cambricon Information Technology Co., Ltd Signal processing device and related products
US11762690B2 (en) 2019-04-18 2023-09-19 Cambricon Technologies Corporation Limited Data processing method and related products
US11789847B2 (en) 2018-06-27 2023-10-17 Shanghai Cambricon Information Technology Co., Ltd On-chip code breakpoint debugging method, on-chip processor, and chip breakpoint debugging system
US11847554B2 (en) 2019-04-18 2023-12-19 Cambricon Technologies Corporation Limited Data processing method and related products
US11966583B2 (en) 2018-08-28 2024-04-23 Cambricon Technologies Corporation Limited Data pre-processing method and device, and related computer device and storage medium
US12001955B2 (en) 2019-08-23 2024-06-04 Anhui Cambricon Information Technology Co., Ltd. Data processing method, device, computer equipment and storage medium

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2524126B (en) * 2014-08-28 2016-07-27 Imagination Tech Ltd Combining paths
US10440137B2 (en) * 2016-04-08 2019-10-08 International Business Machines Corporation Efficient usage of resources in multiple middleware environments
US11301252B2 (en) * 2020-01-15 2022-04-12 Arm Limited Executing mutually exclusive vector instructions according to a vector predicate instruction
CN111930428B (zh) * 2020-09-27 2021-01-15 南京芯瞳半导体技术有限公司 一种条件分支指令的融合方法、装置及计算机存储介质
US20230097390A1 (en) * 2021-09-29 2023-03-30 International Business Machines Corporation Tightly-coupled slice target file data
US11900116B1 (en) 2021-09-29 2024-02-13 International Business Machines Corporation Loosely-coupled slice target file data

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6684389B1 (en) * 1999-08-05 2004-01-27 Canon Kabushiki Kaisha Compiler that decrypts encrypted source code
CN103530088A (zh) * 2012-06-29 2014-01-22 美国亚德诺半导体公司 分级循环指令
US20140164737A1 (en) * 2012-12-06 2014-06-12 Kalray Execution efficiency in a single-program, multiple-data processor

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
US5721854A (en) * 1993-11-02 1998-02-24 International Business Machines Corporation Method and apparatus for dynamic conversion of computer instructions
US5669001A (en) * 1995-03-23 1997-09-16 International Business Machines Corporation Object code compatible representation of very long instruction word programs
US5974535A (en) * 1997-05-09 1999-10-26 International Business Machines Corporation Method and system in data processing system of permitting concurrent processing of instructions of a particular type
US6170051B1 (en) * 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US6112299A (en) * 1997-12-31 2000-08-29 International Business Machines Corporation Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
US20010042187A1 (en) * 1998-12-03 2001-11-15 Marc Tremblay Variable issue-width vliw processor
AUPQ070599A0 (en) * 1999-06-02 1999-06-24 Canon Kabushiki Kaisha Reconfigurable vliw processor
US7024538B2 (en) * 2001-12-21 2006-04-04 Hewlett-Packard Development Company, L.P. Processor multiple function units executing cycle specifying variable length instruction block and using common target block address updated pointers
JP2008071061A (ja) * 2006-09-13 2008-03-27 Fujitsu Ltd 情報処理装置
KR20140126189A (ko) * 2013-04-22 2014-10-30 삼성전자주식회사 프로세서의 멀티 실행 모드 지원 장치 및 방법
US9519479B2 (en) * 2013-11-18 2016-12-13 Globalfoundries Inc. Techniques for increasing vector processing utilization and efficiency through vector lane predication prediction
GB2524126B (en) * 2014-08-28 2016-07-27 Imagination Tech Ltd Combining paths

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6684389B1 (en) * 1999-08-05 2004-01-27 Canon Kabushiki Kaisha Compiler that decrypts encrypted source code
CN103530088A (zh) * 2012-06-29 2014-01-22 美国亚德诺半导体公司 分级循环指令
US20140164737A1 (en) * 2012-12-06 2014-06-12 Kalray Execution efficiency in a single-program, multiple-data processor

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
CN109725903A (zh) * 2017-10-30 2019-05-07 华为技术有限公司 程序代码变换处理方法、装置及编译系统
US11740898B2 (en) 2018-02-13 2023-08-29 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11663002B2 (en) 2018-02-13 2023-05-30 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11720357B2 (en) 2018-02-13 2023-08-08 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11709672B2 (en) 2018-02-13 2023-07-25 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11704125B2 (en) 2018-02-13 2023-07-18 Cambricon (Xi'an) Semiconductor Co., Ltd. Computing device and method
US11507370B2 (en) 2018-02-13 2022-11-22 Cambricon (Xi'an) Semiconductor Co., Ltd. Method and device for dynamically adjusting decimal point positions in neural network computations
US11397579B2 (en) 2018-02-13 2022-07-26 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11609760B2 (en) 2018-02-13 2023-03-21 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11620130B2 (en) 2018-02-13 2023-04-04 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11513586B2 (en) 2018-02-14 2022-11-29 Shanghai Cambricon Information Technology Co., Ltd Control device, method and equipment for processor
WO2019218896A1 (zh) * 2018-05-18 2019-11-21 上海寒武纪信息科技有限公司 计算方法以及相关产品
US11442785B2 (en) 2018-05-18 2022-09-13 Shanghai Cambricon Information Technology Co., Ltd Computation method and product thereof
US11409575B2 (en) 2018-05-18 2022-08-09 Shanghai Cambricon Information Technology Co., Ltd Computation method and product thereof
US11442786B2 (en) 2018-05-18 2022-09-13 Shanghai Cambricon Information Technology Co., Ltd Computation method and product thereof
US11789847B2 (en) 2018-06-27 2023-10-17 Shanghai Cambricon Information Technology Co., Ltd On-chip code breakpoint debugging method, on-chip processor, and chip breakpoint debugging system
US11966583B2 (en) 2018-08-28 2024-04-23 Cambricon Technologies Corporation Limited Data pre-processing method and device, and related computer device and storage medium
US11703939B2 (en) 2018-09-28 2023-07-18 Shanghai Cambricon Information Technology Co., Ltd Signal processing device and related products
US11544059B2 (en) 2018-12-28 2023-01-03 Cambricon (Xi'an) Semiconductor Co., Ltd. Signal processing device, signal processing method and related products
US11762690B2 (en) 2019-04-18 2023-09-19 Cambricon Technologies Corporation Limited Data processing method and related products
US11847554B2 (en) 2019-04-18 2023-12-19 Cambricon Technologies Corporation Limited Data processing method and related products
US11934940B2 (en) 2019-04-18 2024-03-19 Cambricon Technologies Corporation Limited AI processor simulation
US11675676B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US11676029B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US11676028B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US12001955B2 (en) 2019-08-23 2024-06-04 Anhui Cambricon Information Technology Co., Ltd. Data processing method, device, computer equipment and storage medium

Also Published As

Publication number Publication date
CN105389158B (zh) 2020-04-10
US10534615B2 (en) 2020-01-14
DE102015112202A1 (de) 2016-03-03
US11307862B2 (en) 2022-04-19
US20160062769A1 (en) 2016-03-03
CN111414197A (zh) 2020-07-14
GB201415210D0 (en) 2014-10-15
US20200117466A1 (en) 2020-04-16
CN111414197B (zh) 2023-09-01
GB2524126B (en) 2016-07-27
GB2524126A (en) 2015-09-16

Similar Documents

Publication Publication Date Title
CN105389158A (zh) 组合路径
TWI758770B (zh) 靜止可重組態的資料處理器
JP7015249B2 (ja) 再構成可能アルゴリズムによるパイプラインコアおよびアルゴリズムマッチングパイプラインコンパイラを有するプロセッサ
EP2710467B1 (en) Automatic kernel migration for heterogeneous cores
US9590629B2 (en) Logical elements with switchable connections
US20170277567A1 (en) Efficient work execution in a parallel computing system
JP2016526220A (ja) プログラム可能な最適化を有するメモリネットワークプロセッサ
WO2016100142A2 (en) Advanced processor architecture
US20160321039A1 (en) Technology mapping onto code fragments
KR20220042424A (ko) 재구성가능 아키텍처들을 위한 컴파일러 플로우 로직
CN104375804A (zh) 多线程执行处理器及其操作方法
JP7183197B2 (ja) 高スループットプロセッサ
CN104111912A (zh) 用于支持处理器的多模式的设备和方法
US20170179958A1 (en) Logical elements with switchable connections for multifunction operation
JP7245833B2 (ja) 構成可能なハードウェアの実行時の最適化
Bergmann et al. QUKU: a dual-layer reconfigurable architecture
EP3384377A1 (en) Data processing
KR101603752B1 (ko) 멀티 모드 지원 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법
Nourian et al. Optimizing complex OpenCL code for FPGA: A case study on finite automata traversal
US10146736B2 (en) Presenting pipelines of multicore processors as separate processor cores to a programming framework
KR102668340B1 (ko) 설정가능한 하드웨어 런타임 최적화
Nabi et al. An intermediate language and estimator for automated design space exploration on fpgas
Cazzaniga et al. On the development of a runtime reconfigurable multicore system-on-chip
Sura et al. Using multiple threads to accelerate single thread performance
de Assumpção et al. Adapting processor grain via reconfiguration

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