CN111414197B - 数据处理系统、编译器、处理器的方法和机器可读介质 - Google Patents
数据处理系统、编译器、处理器的方法和机器可读介质 Download PDFInfo
- Publication number
- CN111414197B CN111414197B CN202010186166.2A CN202010186166A CN111414197B CN 111414197 B CN111414197 B CN 111414197B CN 202010186166 A CN202010186166 A CN 202010186166A CN 111414197 B CN111414197 B CN 111414197B
- Authority
- CN
- China
- Prior art keywords
- instructions
- instruction
- processor
- branch
- branches
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 161
- 238000000034 method Methods 0.000 title claims abstract description 23
- 230000000873 masking effect Effects 0.000 claims description 11
- 230000001419 dependent effect Effects 0.000 claims description 4
- 238000001514 detection method Methods 0.000 abstract description 2
- 230000015654 memory Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent 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
本申请是原案申请号为201510542611.3的发明专利申请(申请日:2015年8月28日,发明名称:数据处理系统、编译器、处理器的方法和机器可读介质)的分案申请。
技术领域
本发明涉及在处理器处高效地执行指令。
背景技术
利用一些类型的数据(诸如图形数据),大的数据块经常需要经历相同的处理操作。一个示例是当改变图像的亮度时。与串行处理相比,并行地处理这种数据能够减少处理时间。能够在单指令多线程(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个分支的程序检测到分支操作时,将来自所述分支中的一个的指令与来自其它分支中的至少一个的指令进行组合,以使得处理元件在单个周期期间执行所组合的指令。
根据第四方面,提供了一种机器可读代码,该机器可读代码用于生成上述数据处理系统。
根据第五方面,提供了一种机器可读存储介质,该机器可读存储介质具有用于生成上述数据处理系统的、编码的非暂时机器可读代码。
根据第六方面,提供了一种基本上如本文中参照图1a、图1b、图2-图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中的示例所需的八个周期。
照惯例,当出现使处理元件采用不同的路径的分支时,这些处理元件中的一些被屏蔽(mask out),因此它们在特定周期期间不参与。这能够通过在处理器的屏蔽逻辑处使用屏蔽位而实现。在图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-issue processor)并且因此处理器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 (18)
1.一种数据处理系统,该数据处理系统包括:
第一处理器,所述第一处理器能操作为执行被划分成多个离散的指令的程序,所述第一处理器包括多个处理元件,每个处理元件能够每个周期执行n个指令,其中,n大于1;以及
接口,所述接口被构造为:
在检测到程序创建各自具有不同的指令序列的m个分支的分支操作时,模拟包括多个处理元件的第二处理器,所述第二处理器的每个处理元件能够每个周期执行不超过一个指令,并且使编译器编译来自每个分支的指令序列以适合于仅能够每个周期执行一个指令的处理元件;并且
将来自所述分支中的一个的指令与来自其它分支中的至少一个的指令进行组合以形成组合的指令,从而使得至少一个处理元件在单个周期期间执行所组合的指令,其中,m大于1,来自每一个分支的指令彼此独立。
2.根据权利要求1所述的数据处理系统,其中,m小于n,或者m和n相等。
3.根据权利要求1所述的数据处理系统,其中,来自所述分支中的每一个的指令被组合,以使得各个处理元件每个周期执行来自各个分支的至少一个指令。
4.根据权利要求1所述的数据处理系统,其中,所述第一处理器被构造为使得所述第一处理器的每个处理元件每个周期执行与其它处理元件相同的指令。
5.根据权利要求1所述的数据处理系统,其中,每个分支的指令序列独立于其它分支的指令序列。
6.根据权利要求1所述的数据处理系统,其中,每个指令序列包括依赖于该指令序列中的以前的指令的至少一个指令以及独立于该指令序列中的以前的指令的至少一个指令。
7.根据权利要求1所述的数据处理系统,其中,每个指令序列包括能够被并行地执行的n个连续的指令以及不能够被并行地执行的n个连续的指令。
8.根据权利要求1所述的数据处理系统,其中,根据所述程序来创建所述分支。
9.根据权利要求1所述的数据处理系统,所述数据处理系统还包括编译器,所述编译器被构造为读取所述程序并且将所述程序编译成多个指令。
10.根据权利要求1所述的数据处理系统,其中,所述接口被构造为生成包括所述第二处理器的参数的消息,并且将所述消息发送到所述编译器。
11.根据权利要求1所述的数据处理系统,其中,所述接口包括编译器,所述编译器被构造为读取所述程序并且将所述程序编译成多个指令。
12.根据权利要求9所述的数据处理系统,其中,所述第一处理器是GPU,并且所述编译器被构造为从开放计算语言OpenCL代码生成针对所述处理元件的指令。
13.根据权利要求1所述的数据处理系统,其中,所述第一处理器能够同时支持多个线程。
14.根据权利要求1所述的数据处理系统,其中,所述接口还被构造为,在拦截与所述第一处理器的容量相关的查询时,响应于所述查询而指示所述第一处理器的所述多个处理元件中的每一个处理元件能够每个周期执行一个指令。
15.根据权利要求1所述的数据处理系统,其中,所述第一处理器包括屏蔽逻辑部件,所述屏蔽逻辑部件被构造为在单个周期期间阻止所述处理元件执行所组合的指令中的所述指令中的一个,并且允许执行所组合的指令中的其它指令。
16.一种用于将程序编译成能在包括多个处理元件的第一处理器处执行的多个指令的编译器,每个处理元件能够每个周期执行n个指令,其中,n大于1,所述编译器被构造为:
读取所述程序;
在检测到创建m个分支的分支操作并且每个分支具有不同的指令序列时,模拟包括多个处理元件的第二处理器,所述第二处理器的每个处理元件能够每个周期执行不超过一个指令,并且编译来自每个分支的指令序列以适合于仅能够每个周期执行一个指令的处理元件;并且
将来自所述分支中的一个的指令与来自其它分支中的至少一个的指令进行组合以形成组合的指令,从而使得至少一个处理元件在单个周期期间执行所组合的指令,其中,m大于1,来自每一个分支的指令彼此独立。
17.一种用于能操作为执行被划分成多个离散的指令的程序的第一处理器的方法,所述第一处理器包括多个处理元件,每个处理元件能够每个周期执行n个指令,其中,n大于1,所述方法包括以下步骤:
在检测到程序创建各自具有不同的指令序列的m个分支的分支操作时,模拟包括多个处理元件的第二处理器,所述第二处理器的每个处理元件能够每个周期执行不超过一个指令,并且编译来自每个分支的指令序列以适合于仅能够每个周期执行一个指令的处理元件,并且
将来自所述分支中的一个的指令与来自其它分支中的至少一个的指令进行组合以形成组合的指令,从而使得至少一个处理元件在单个周期期间执行所组合的指令,其中,m大于1,来自每一个分支的指令彼此独立。
18.一种机器可读介质,该机器可读介质上编码有用于生成数据处理系统的非暂时机器可读代码,所述数据处理系统具有:第一处理器,所述处理器能操作为执行被划分成多个离散的指令的程序,所述第一处理器包括多个处理元件,每个处理元件能够每个周期执行n个指令,其中,n大于1;以及接口,所述接口被构造为:
在检测到程序创建各自具有不同的指令序列的m个分支的分支操作时,模拟包括多个处理元件的第二处理器,所述第二处理器的每个处理元件能够每个周期执行不超过一个指令,并且编译来自每个分支的指令序列以适合于仅能够每个周期执行一个指令的处理元件;并且
将来自所述分支中的一个的指令与来自其它分支中的至少一个的指令进行组合以形成组合的指令,从而使得至少一个处理元件在单个周期期间执行所组合的指令,其中,m大于1,来自每一个分支的指令彼此独立。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010186166.2A CN111414197B (zh) | 2014-08-28 | 2015-08-28 | 数据处理系统、编译器、处理器的方法和机器可读介质 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1415210.2 | 2014-08-28 | ||
GB1415210.2A GB2524126B (en) | 2014-08-28 | 2014-08-28 | Combining paths |
CN201510542611.3A CN105389158B (zh) | 2014-08-28 | 2015-08-28 | 数据处理系统、编译器、处理器的方法和机器可读介质 |
CN202010186166.2A CN111414197B (zh) | 2014-08-28 | 2015-08-28 | 数据处理系统、编译器、处理器的方法和机器可读介质 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510542611.3A Division CN105389158B (zh) | 2014-08-28 | 2015-08-28 | 数据处理系统、编译器、处理器的方法和机器可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111414197A CN111414197A (zh) | 2020-07-14 |
CN111414197B true CN111414197B (zh) | 2023-09-01 |
Family
ID=51752247
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010186166.2A Active CN111414197B (zh) | 2014-08-28 | 2015-08-28 | 数据处理系统、编译器、处理器的方法和机器可读介质 |
CN201510542611.3A Active CN105389158B (zh) | 2014-08-28 | 2015-08-28 | 数据处理系统、编译器、处理器的方法和机器可读介质 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510542611.3A Active CN105389158B (zh) | 2014-08-28 | 2015-08-28 | 数据处理系统、编译器、处理器的方法和机器可读介质 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10534615B2 (zh) |
CN (2) | CN111414197B (zh) |
DE (1) | DE102015112202A1 (zh) |
GB (1) | GB2524126B (zh) |
Families Citing this family (22)
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 |
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 | 华为技术有限公司 | 程序代码变换处理方法、装置及编译系统 |
US11630666B2 (en) | 2018-02-13 | 2023-04-18 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11169803B2 (en) | 2018-02-13 | 2021-11-09 | 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 |
CN116991226A (zh) | 2018-02-14 | 2023-11-03 | 上海寒武纪信息科技有限公司 | 处理器的控制装置、方法及设备 |
WO2019218896A1 (zh) * | 2018-05-18 | 2019-11-21 | 上海寒武纪信息科技有限公司 | 计算方法以及相关产品 |
WO2020001438A1 (zh) | 2018-06-27 | 2020-01-02 | 上海寒武纪信息科技有限公司 | 片上代码断点调试方法、片上处理器及芯片断点调试系统 |
EP3640810A4 (en) | 2018-08-28 | 2021-05-05 | Cambricon Technologies Corporation Limited | DATA PRE-PROCESSING PROCESS AND APPARATUS, COMPUTER DEVICE AND STORAGE MEDIA |
US11703939B2 (en) | 2018-09-28 | 2023-07-18 | Shanghai Cambricon Information Technology Co., Ltd | Signal processing device and related products |
CN111385462A (zh) | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 信号处理装置、信号处理方法及相关产品 |
CN111832739B (zh) | 2019-04-18 | 2024-01-09 | 中科寒武纪科技股份有限公司 | 一种数据处理方法及相关产品 |
US20200334522A1 (en) | 2019-04-18 | 2020-10-22 | Cambricon Technologies Corporation Limited | Data processing method and related products |
CN112085190B (zh) | 2019-06-12 | 2024-04-02 | 上海寒武纪信息科技有限公司 | 一种神经网络的量化参数确定方法及相关产品 |
US11676029B2 (en) | 2019-06-12 | 2023-06-13 | Shanghai Cambricon Information Technology Co., Ltd | Neural network quantization parameter determination method and related products |
EP4020321A4 (en) | 2019-08-23 | 2024-01-17 | Anhui Cambricon Information Technology Co., Ltd. | DATA PROCESSING METHOD, APPARATUS, COMPUTER APPARATUS AND STORAGE MEDIUM |
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 | 南京芯瞳半导体技术有限公司 | 一种条件分支指令的融合方法、装置及计算机存储介质 |
US11900116B1 (en) | 2021-09-29 | 2024-02-13 | International Business Machines Corporation | Loosely-coupled slice target file data |
US20230097390A1 (en) * | 2021-09-29 | 2023-03-30 | International Business Machines Corporation | Tightly-coupled slice target file data |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003058433A1 (en) * | 2001-12-21 | 2003-07-17 | Hewlett-Packard Company | Multiple function unit processor using distributed variable length instruction words |
US7127590B1 (en) * | 1999-06-02 | 2006-10-24 | Canon Kabushiki Kaisha | Reconfigurable VLIW processor |
JP2008071061A (ja) * | 2006-09-13 | 2008-03-27 | Fujitsu Ltd | 情報処理装置 |
Family Cites Families (13)
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 |
US6684389B1 (en) * | 1999-08-05 | 2004-01-27 | Canon Kabushiki Kaisha | Compiler that decrypts encrypted source code |
US9038042B2 (en) * | 2012-06-29 | 2015-05-19 | Analog Devices, Inc. | Staged loop instructions |
US9851977B2 (en) * | 2012-12-06 | 2017-12-26 | Kalray | Apparatus and method for combining thread warps with compatible execution masks for simultaneous execution and increased lane utilization |
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 |
-
2014
- 2014-08-28 GB GB1415210.2A patent/GB2524126B/en active Active
-
2015
- 2015-07-27 DE DE102015112202.2A patent/DE102015112202A1/de active Pending
- 2015-08-26 US US14/836,086 patent/US10534615B2/en active Active
- 2015-08-28 CN CN202010186166.2A patent/CN111414197B/zh active Active
- 2015-08-28 CN CN201510542611.3A patent/CN105389158B/zh active Active
-
2019
- 2019-12-12 US US16/712,778 patent/US11307862B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7127590B1 (en) * | 1999-06-02 | 2006-10-24 | Canon Kabushiki Kaisha | Reconfigurable VLIW processor |
WO2003058433A1 (en) * | 2001-12-21 | 2003-07-17 | Hewlett-Packard Company | Multiple function unit processor using distributed variable length instruction words |
JP2008071061A (ja) * | 2006-09-13 | 2008-03-27 | Fujitsu Ltd | 情報処理装置 |
Also Published As
Publication number | Publication date |
---|---|
US20200117466A1 (en) | 2020-04-16 |
CN105389158A (zh) | 2016-03-09 |
GB2524126A (en) | 2015-09-16 |
GB2524126B (en) | 2016-07-27 |
GB201415210D0 (en) | 2014-10-15 |
US20160062769A1 (en) | 2016-03-03 |
CN111414197A (zh) | 2020-07-14 |
US10534615B2 (en) | 2020-01-14 |
CN105389158B (zh) | 2020-04-10 |
US11307862B2 (en) | 2022-04-19 |
DE102015112202A1 (de) | 2016-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111414197B (zh) | 数据处理系统、编译器、处理器的方法和机器可读介质 | |
CN108268278B (zh) | 具有可配置空间加速器的处理器、方法和系统 | |
US9158575B2 (en) | Multithreaded processor array with heterogeneous function blocks communicating tokens via self-routing switch fabrics | |
US8782645B2 (en) | Automatic load balancing for heterogeneous cores | |
US8683468B2 (en) | Automatic kernel migration for heterogeneous cores | |
KR101766183B1 (ko) | 벡터 소팅 알고리즘 및 다른 알고리즘들을 지원하기 위한 트리 구조를 갖춘 기능 유닛 | |
GB2520571A (en) | A data processing apparatus and method for performing vector processing | |
JP2014216021A (ja) | バッチスレッド処理のためのプロセッサ、コード生成装置及びバッチスレッド処理方法 | |
US10817309B2 (en) | Runtime optimization of configurable hardware | |
JP7495030B2 (ja) | プロセッサ、処理方法、および関連デバイス | |
US10146736B2 (en) | Presenting pipelines of multicore processors as separate processor cores to a programming framework | |
She et al. | OpenCL code generation for low energy wide SIMD architectures with explicit datapath | |
US10133578B2 (en) | System and method for an asynchronous processor with heterogeneous processors | |
Bernard et al. | Resource-agnostic programming for many-core microgrids | |
Souza et al. | Towards a dynamic and reconfigurable multicore heterogeneous system | |
Sura et al. | Using multiple threads to accelerate single thread performance | |
US20150074379A1 (en) | System and Method for an Asynchronous Processor with Token-Based Very Long Instruction Word Architecture | |
Fryza et al. | Instruction-level programming approach for very long instruction word digital signal processors | |
Merchant | Testing and validation of a prototype GPGPU design for FPGAs | |
Souza | Evaluation of heterogeneous CReAMS | |
Anjam et al. | On the Implementation of Traps for a Softcore VLIW Processor | |
Schuler et al. | Dynamic reconfiguration for irregular code using FNC-PAE processor cores | |
Benson et al. | OpenSPLySER: The Integrated OpenSPARC and DySER Design | |
US20130061028A1 (en) | Method and system for multi-mode instruction-level streaming | |
Ying et al. | A Delay Slot Scheduling Framework for VLIW Architectures in Assembly-Level |
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 |