CN115016953A - 存储有程序的机器可读介质、计算机系统和一种操作方法 - Google Patents
存储有程序的机器可读介质、计算机系统和一种操作方法 Download PDFInfo
- Publication number
- CN115016953A CN115016953A CN202210624232.9A CN202210624232A CN115016953A CN 115016953 A CN115016953 A CN 115016953A CN 202210624232 A CN202210624232 A CN 202210624232A CN 115016953 A CN115016953 A CN 115016953A
- Authority
- CN
- China
- Prior art keywords
- instruction
- data
- instructions
- barrier
- executed
- 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
Links
- 238000000034 method Methods 0.000 title claims description 10
- 230000004888 barrier function Effects 0.000 claims abstract description 159
- 230000001419 dependent effect Effects 0.000 abstract 1
- 238000011017 operating method Methods 0.000 abstract 1
- 101150101019 PI21 gene Proteins 0.000 description 31
- 239000011159 matrix material Substances 0.000 description 25
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 101001080429 Homo sapiens Proteasome inhibitor PI31 subunit Proteins 0.000 description 1
- 102100027565 Proteasome inhibitor PI31 subunit Human genes 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明提供一种存储有程序的机器可读介质、计算机系统及其执行单元的操作方法。所述机器可读介质存储的程序在被执行时,使得数据处理集成电路的一个执行单元执行多个线程组中的第一线程组以及第二线程组。这些线程组包括存在依赖关系且通过同一个指令屏障绑定在一起的数据提供指令与数据取用指令。在数据提供指令被执行时,指令屏障的计数值被对应调整。当数据取用指令作为目前待执行指令时,指令屏障的计数值被对应调整。数据取用指令被暂停执行,直到指令屏障的计数值已表示“多个相关联指令中的所有数据提供指令皆已被执行,以及这些相关联指令中的所有数据取用指令皆已作为目前待执行指令”。
Description
技术领域
本发明涉及一种计算机系统,且特别涉及一种存储有程序的机器可读介质、计算机系统及其执行单元(executionunit)的操作方法。
背景技术
诸如中央处理器(central processing unit,CPU)、图形处理器(graphicsprocessing unit,GPU)、通用计算型GPU(general-purpose computing on GPU,GPGPU)等数据处理集成电路,其可以执行程序(program)而完成诸如卷积神经网络(ConvolutionalNeural Network,CNN)运算、人工智能(artificial intelligence)运算等各种功能。一般而言,程序包括多个工作组(workgroup),每一个工作组包括多个线程组(warp),而每一个线程组包括多个线程(thread)。同一个工作组中的线程可以按照调度单位分组,然后一组一组地调度至硬件去执行。这个调度单位称作线程组。
一般而言,GPU包括多个计算单元(computing unit,CU),而每一个计算单元(computing unit,CU)包括多个执行单元(executionunit,EU)。一个执行单元可以执行多个线程组。如何安排在同一个执行单元中不同线程组之间的数据同步机制是计算机系统领域的诸多技术课题之一。举例来说,在一个生产者线程组(producerwarp)中的一个矩阵加载指令(数据提供指令)可以提供矩阵数据至在执行单元中的寄存器堆(register file),而在一个消费者线程组(consumerwarp)中的一个矩阵乘算指令(数据取用指令)可以从寄存器堆取用矩阵加载指令所提供的矩阵数据。数据同步机制可以保证在矩阵加载指令将矩阵数据加载至寄存器堆后矩阵乘算指令才去寄存器堆取用矩阵数据。如何安排不同线程组之间的数据同步机制来降低数据同步的延迟(latency),是计算机系统领域的诸多技术课题之一。
发明内容
本发明提供一种存储有程序的机器可读介质、计算机系统及其执行单元的操作方法,以实现在同一个执行单元(execution unit,EU)中不同线程组(warp)之间的数据同步机制。
在根据本发明的实施例中,所述机器可读介质存储的程序在被执行时,使得数据处理集成电路的一个执行单元:执行多个线程组中的第一线程组以及第二线程组。所述多个线程组包括存在依赖关系的多个相关联指令。所述多个相关联指令通过同一个指令屏障(instruction barrier)绑定在一起。第一线程组包括所述多个相关联指令中的一个第一数据提供指令。第一数据提供指令用以提供数据至存储空间。在第一数据提供指令被执行时,指令屏障的计数值被对应调整以表示“所述多个相关联指令中的第一数据提供指令已被执行”。第二线程组包括所述多个相关联指令中的一个第一数据取用指令。当第一数据取用指令作为目前待执行指令时,指令屏障的计数值被对应调整以表示“所述多个相关联指令中的第一数据取用指令已作为目前待执行指令”。第一数据取用指令被暂停执行,直到指令屏障的计数值已表示“所述多个相关联指令中的所有数据提供指令皆已被执行,以及所述多个相关联指令中的所有数据取用指令皆已作为目前待执行指令”。当第一数据取用指令被执行时,第一数据取用指令从存储空间取用所述多个相关联指令所提供的数据。当指令屏障的计数值已表示“所述多个相关联指令中的所有数据提供指令皆已被执行,以及所述多个相关联指令中的所有数据取用指令皆已作为目前待执行指令”时,指令屏障的计数值被重置为初始值。
在根据本发明的实施例中,所述计算机系统包括机器可读介质以及数据处理集成电路。机器可读介质存储有程序。数据处理集成电路执行机器可读介质的程序,使得数据处理集成电路的一个执行单元执行多个线程组中的第一线程组以及第二线程组。所述多个线程组包括存在依赖关系的多个相关联指令。所述多个相关联指令通过同一个指令屏障绑定在一起。第一线程组包括所述多个相关联指令中的一个第一数据提供指令。第一数据提供指令用以提供数据至存储空间。在第一数据提供指令被执行时,指令屏障的计数值被对应调整以表示“所述多个相关联指令中的第一数据提供指令已被执行”。第二线程组包括所述多个相关联指令中的一个第一数据取用指令。当第一数据取用指令作为目前待执行指令时,指令屏障的计数值被对应调整以表示“所述多个相关联指令中的第一数据取用指令已作为目前待执行指令”。第一数据取用指令被暂停执行,直到指令屏障的计数值已表示“所述多个相关联指令中的所有数据提供指令皆已被执行,以及所述多个相关联指令中的所有数据取用指令皆已作为目前待执行指令”。当第一数据取用指令被执行时,第一数据取用指令从存储空间取用所述多个相关联指令所提供的数据。当指令屏障的计数值已表示“所述多个相关联指令中的所有数据提供指令皆已被执行,以及所述多个相关联指令中的所有数据取用指令皆已作为目前待执行指令”时,指令屏障的计数值被重置为初始值。
在根据本发明的实施例中,所述操作方法包括:由一个执行单元执行多个线程组,其中所述多个线程组包括存在依赖关系的多个相关联指令,所述多个相关联指令通过同一个指令屏障绑定在一起,所述多个线程组中的第一线程组包括所述多个相关联指令中的一个第一数据提供指令,第一数据提供指令用以提供数据至存储空间,所述多个线程组中的第二线程组包括所述多个相关联指令中的一个第一数据取用指令;在第一数据提供指令被执行时,对应调整指令屏障的计数值以表示“所述多个相关联指令中的第一数据提供指令已被执行”;当第一数据取用指令作为目前待执行指令时,对应调整指令屏障的计数值以表示“所述多个相关联指令中的第一数据取用指令已作为目前待执行指令”;暂停执行所述第一数据取用指令,直到指令屏障的计数值已表示“所述多个相关联指令中的所有数据提供指令皆已被执行,以及所述多个相关联指令中的所有数据取用指令皆已作为目前待执行指令”;当第一数据取用指令被执行时,第一数据取用指令从存储空间取用所述多个相关联指令所提供的数据;以及当指令屏障的计数值已表示“所述多个相关联指令中的所有数据提供指令皆已被执行,以及所述多个相关联指令中的所有数据取用指令皆已作为目前待执行指令”时,重置指令屏障的计数值为初始值。
基于上述,机器可读介质所存储的程序可以实现在同一个执行单元中不同线程组之间的数据同步机制。在计算机系统执行程序时,数据处理集成电路的一个执行单元可以执行多个线程组。在目前数据提供指令被执行完成后,亦即在目前数据提供指令将数据提供至存储空间后,目前数据提供指令所对应的指令屏障的计数值会被对应调整,以表示“多个相关联指令中的目前数据提供指令已被执行”,或表示“目前数据提供指令的相关联数据已经提供至存储空间”。目前数据取用指令会被暂停执行,直到指令屏障的计数值已表示“这些相关联指令中的所有数据提供指令皆已被执行,以及这些相关联指令中的所有数据取用指令皆已作为目前待执行指令(亦即等待中)”。因此,数据同步机制可以保证在存在依赖关系的多个相关联指令中所有数据提供指令将相关联数据加载至存储空间后,这些相关联指令中所有数据取用指令才去存储空间取用相关联数据。该数据同步机制可以有效降低数据同步的延迟。
附图说明
图1是依照本发明的一实施例的一种计算机系统的电路方块(circuit block)示意图。
图2是依照本发明的一实施例所绘示,不同线程组对寄存器堆存取数据的时序示意图。
图3是依照本发明的另一实施例所绘示,多个并行线程组的指令时序示意图。
附图标记说明
100:计算机系统
110:机器可读介质
120:数据处理集成电路
121:加载存储单元
122_1、122_n:执行单元
CI21、CI22、CI31_1、CI33_1、CI34_1:数据取用指令
D1、D2、D3、D4:数据
EC:执行核
ibar1、ibar2、ibar3:指令屏障
PI21、PI22、PI23、PI24、PI31_1、PI31_2、PI32_1、PI32_2:数据提供指令
RF:寄存器堆
W1:第一线程组
W2:第二线程组
W31、W32、W33、W34:线程组
具体实施方式
现将详细地参考本发明的示范性实施例,示范性实施例的实例说明于附图中。只要有可能,相同组件符号在附图和描述中用来表示相同或相似部分。
在本案说明书全文(包括权利要求)中所使用的“耦接(或连接)”一词可指任何直接或间接的连接手段。举例而言,若文中描述第一装置耦接(或连接)于第二装置,则应该被解释成该第一装置可以直接连接于该第二装置,或者该第一装置可以透过其他装置或某种连接手段而间接地连接至该第二装置。本案说明书全文(包括权利要求)中提及的“第一”、“第二”等用语是用以命名组件(element)的名称,而并非用来限制组件数量的上限或下限,亦非用来限制组件的次序。另外,凡可能之处,在附图及实施方式中使用相同标号的组件/构件/步骤代表相同或类似部分。不同实施例中使用相同标号或使用相同用语的组件/构件/步骤可以相互参照相关说明。
图1是依照本发明的一实施例的一种计算机系统100的电路方块(circuit block)示意图。图1所示计算机系统100包括机器可读介质110以及数据处理集成电路120。依照实际应用,机器可读介质110可以包括任何类型的“非临时的可读取介质(non-transitoryreadable medium)”。举例来说,在一些实施例中,所述非临时的可读取介质例如包括半导体内存、可程序设计的逻辑电路以及(或是)存储装置。机器可读介质110存储有程序。数据处理集成电路120耦接至机器可读介质110以读取程序。为了图式简洁,图1并未画出在机器可读介质110以及数据处理集成电路120之间的数据传输接口电路,因为机器可读介质110的数据传输接口电路乃属公知电路。
依照实际设计,数据处理集成电路120可以包括任何类型的集成电路。举例来说,数据处理集成电路120可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)、通用图形处理器(General-Purpose GPU,GPGPU)、控制器、微控制器、微处理器、特殊应用集成电路(Application-specific integratedcircuit,ASIC)、数字信号处理器(digital signal processor,DSP)、场可程序逻辑门阵列(Field Programmable GateArray,FPGA)及/或其他数据处理电路。在图1所示实施例中,数据处理集成电路120包括加载存储单元(load/store unit,LSU)121以及多个执行单元(execution unit,EU)122_1、…、122_n。数据处理集成电路120可以执行机器可读介质110的所述程序,使得任何一个执行单元122_1~122_n可以执行一个或多个线程组(warp)。
应当理解,线程组(warp)所包含的线程的数量为线程组的大小(warp size),线程组的大小通常小于或等于128。例如,线程组的大小可以为4、16、32、64和128等。此外,一个线程群组(thread group)可以包括多个线程组(warp)。
在另一些示例中,warp还可以称为线程束。对应的,thread group则可以称为线程组。一个线程组(thread group)可以包括多个线程束(warp)。
在图1所示实施例中,执行单元122_1包括执行核EC以及寄存器堆(registerfile)RF。在数据处理集成电路120中的其他执行单元,例如执行单元122_n,可以参照执行单元122_1的相关说明并且加以类推,故不再赘述。在执行单元122_1中,执行核EC可以执行一个或多个线程组。加载存储单元121可以将数据从内存(未绘示)加载至寄存器堆RF,以及/或是将数据从寄存器堆RF存储至内存。执行核EC耦接至寄存器堆RF,以存取寄存器堆RF的数据。
示例性的,存储空间可以如图1所示集成在每个执行单元内部,或设于执行单元的外部,以及任意的其他位置,本发明的实施例对存储空间的具体位置不作限制。
具体地,集成在执行单元内部的存储空间可以是寄存器堆,例如为通用寄存器(General Purpose Register,GPR)。存储空间还可以是其他任意的数据结构,本发明的实施例对存储空间的具体形态不作限制。
数据处理集成电路120执行机器可读介质110的所述程序,使得执行单元122_1执行多个线程组。这些线程组包括存在依赖关系的多个相关联指令。这些相关联指令通过同一个指令屏障(instruction barrier)绑定在一起。举例来说,执行单元122_1可以执行包括这些相关联指令中的一个数据提供指令的第一线程组以及包括这些相关联指令中的一个数据取用指令的第二线程组。数据提供指令可以提供数据至在执行单元122_1中的寄存器堆RF。数据取用指令可以从寄存器堆RF取用这些相关联指令所提供的数据。
虽然不限于此,为了方便说明,包括数据提供指令的第一线程组可以被称为生产者线程组(producer warp),而包括数据取用指令的第二线程组可以被称为消费者线程组(consumerwarp)。举例来说,在一个生产者线程组中的一个矩阵加载指令(数据提供指令)可以提供矩阵数据至在执行单元122_1中的寄存器堆RF,而在一个消费者线程组中的一个数据取用指令(例如矩阵乘算指令、浮点数加法指令等)可以从寄存器堆RF取用矩阵加载指令所提供的矩阵数据。
需要说明的是,第二线程组(或第一线程组)还可以包括多个数据取用指令组,数据取用指令可以是指每个数据取用指令组中的一条指令。优选地,数据取用指令为每个数据取用指令组中的第一条指令。
图2是依照本发明的一实施例所绘示,不同线程组对寄存器堆RF存取数据的时序示意图。图2的纵轴表示时间。图2可以展现执行单元122_1的操作方法的一个实施范例。在图2所示实施例中,执行单元122_1所执行的多个线程组包括第一线程组W1以及第二线程组W2。第一线程组W1包括多个指令,例如图2所示数据提供指令PI21、PI22、PI23与PI24。这些数据提供指令PI21~PI24的每一个用以提供数据D1、D2、D3与D4至在执行单元122_1中的寄存器堆RF,如图2所示。举例来说,数据提供指令PI21可以是矩阵加载指令,而数据D1可以是矩阵数据。当执行单元122_1中的执行核EC执行数据提供指令PI21时,执行核EC可以提供矩阵数据(数据D1)至在执行单元122_1中的寄存器堆RF。第二线程组W2包括多个指令,例如图2所示数据取用指令CI21与CI22。这些数据取用指令CI21~CI22可以从寄存器堆RF取用数据。
可以理解,第一线程组W1中还可以包括数据取用指令(图未示),第二线程组W2还可以包括数据提供指令(图未示)。本发明对多个线程组所包括的线程组的数量、每个线程组所包括的指令数量及指令类型不作限制。
在图2所示实施例中,第一线程组W1以及第二线程组W2包括,存在依赖关系的数据提供指令PI21、数据提供指令PI22与数据取用指令CI21(多个相关联指令),以及存在另一个依赖关系的数据提供指令PI23、数据提供指令PI24与数据取用指令CI22(另外的多个相关联指令)。在图2所示实施例中,数据取用指令CI21可以从寄存器堆RF取用相关联指令(数据提供指令PI21、数据提供指令PI22)所提供的数据D1与D2,而数据取用指令CI22可以从寄存器堆RF取用相关联指令(数据提供指令PI23、数据提供指令PI24)所提供的数据D3与D4。数据提供指令PI21、数据提供指令PI22与数据取用指令CI21通过同一个指令屏障ibar1绑定在一起,而数据提供指令PI23、数据提供指令PI24与数据取用指令CI22通过另一个指令屏障ibar2绑定在一起,以实现在同一个执行单元中不同线程组之间的数据同步机制。
在数据提供指令PI21被执行时,执行核EC可以对应调整指令屏障ibar1的计数值,以表示“相关联指令PI21、PI22与CI21中的数据提供指令PI21已被执行”,或表示“目前数据提供指令PI21的相关联数据D1已经提供至寄存器堆RF”。在数据提供指令PI22被执行时,执行核EC可以再一次对应调整指令屏障ibar1的计数值,以表示“相关联指令PI21、PI22与CI21中的数据提供指令PI22已被执行”,或表示“目前数据提供指令PI22的相关联数据D2已经提供至寄存器堆RF”。当数据取用指令CI21作为目前待执行指令时,执行核EC可以再一次对应调整指令屏障ibar1的计数值,以表示“相关联指令PI21、PI22与CI21中的数据取用指令CI21已作为目前待执行指令”。基于指令屏障ibar1,执行核EC可以暂停执行数据取用指令CI21,直到指令屏障ibar1的计数值已表示“相关联指令PI21、PI22与CI21中的所有数据提供指令PI21与PI22皆已被执行,以及相关联指令PI21、PI22与CI21中的所有数据取用指令CI21皆已作为目前待执行指令”。当指令屏障ibar1的计数值符合此条件时,执行核EC可以执行目前待执行指令CI21,以及重置指令屏障ibar1的计数值为初始值。当执行核EC执行数据取用指令CI21时,数据取用指令CI21可以从寄存器堆RF取用相关联指令PI21与PI22所提供的数据D1与D2。因此,数据同步机制可以保证在存在依赖关系的相关联指令PI21、PI22与CI21中所有数据提供指令PI21与PI22将相关联数据D1与D2加载至寄存器堆RF后,这些相关联指令PI21、PI22与CI21中所有数据取用指令CI21才去寄存器堆RF取用相关联数据D1与D2。
举例来说(但不限于此),假设指令屏障ibar1的计数值在初始化(initialization)阶段被重置为初始值“0”。在数据提供指令PI21被执行时,执行核EC可以将指令屏障ibar1的计数值增1。在数据提供指令PI22被执行时,执行核EC可以再一次将指令屏障ibar1的计数值增1。当数据取用指令CI21作为目前待执行指令时,执行核EC可以再一次将指令屏障ibar1的计数值增1。执行核EC可以比对指令屏障ibar1的计数值与相关联指令PI21、PI22与CI21的数量。当指令屏障ibar1的计数值未达“3”(相关联指令PI21、PI22与CI21的指令数量)时,执行核EC可以暂停执行数据取用指令CI21。数据取用指令CI21被暂停执行,直到指令屏障ibar1的计数值已达“3”(相关联指令PI21、PI22与CI21的指令数量)。在数据提供指令PI22被执行时,执行核EC可以再一次将指令屏障ibar1的计数值增1。当指令屏障ibar1的计数值已达“3”(相关联指令PI21、PI22与CI21的指令数量)时,执行核EC可以执行数据取用指令CI21,以从寄存器堆RF取用相关联指令PI21与PI22所提供的数据D1与D2。
图2所示另一群相关联指令PI23、PI24与CI22可以参照上述相关联指令PI21、PI22与CI21的相关说明并且加以类推。基于数据提供指令PI23、数据提供指令PI24与数据取用指令CI22被调用的时间点,执行核EC可以对应调整指令屏障ibar2的计数值。执行核EC可以检查指令屏障ibar2的计数值,以决定数据取用指令CI22被执行的时间点。当指令屏障ibar2的计数值已达“3”(相关联指令PI23、PI24与CI22的指令数量)时,执行核EC可以执行数据取用指令CI22,以从寄存器堆RF取用相关联指令PI23与PI24所提供的数据D3与D4。
这些指令屏障可以使用硬件计数器(hardware counter)去记录计数值。执行核EC可以用任意寻址方法去设置调整指令屏障的计数值与重置指令屏障的计数值。举例来说,这些指令屏障的每一个包括识别号(地址),而所述识别号包括基址(base)与偏移量(offset)。以指令屏障ibar1作为说明例,当指令屏障ibar1的偏移量为某一个指定值时,调用指令屏障ibar1的目前指令(数据取用指令CI21)不会被暂停执行。依照实际设计,所述指定值可以是0或是其他值。当指令屏障ibar1的偏移量不为所述指定值时,调用指令屏障ibar1的目前指令(数据取用指令CI21)可以被暂停执行(直到指令屏障ibar1的计数值已达相关联指令PI21、PI22与CI21的指令数量“3”)。
此外,当指令屏障ibar1的基址为某一个特定值时,指令屏障ibar1可以为线程组内部(例如第一线程组W1内部或者第二线程组W2内部)的同步类型。当指令屏障ibar1的基址不为所述特定值时,指令屏障ibar1可以为线程组之间(例如第一线程组W1和第二线程组W2之间)的同步类型。依照实际设计,所述特定值可以是0或是其他值。
以下以伪代码(pseudo code)说明指令行为范例。执行核EC可以进行执行单元初始化(initialization),以将所有指令屏障的计数值重置为初始值(例如“0”)。数据提供指令(例如矩阵加载指令)完成后接着执行下述伪代码中的指令屏障ibar(可以作为指令屏障ibar1的一个范例),以通知硬件数据已经生成。其中,参数pass表示“不等待或不暂停执行”,id表示指令屏障的识别号,而isa_total表示“相关联指令的数量”。“ibar.pass id,isa_total”可以作为在图2所示第一线程组W1中的指令屏障ibar1或ibar2的一个范例。以图2所示指令屏障ibar1为例,isa_total为“3”。在执行核EC完成下述伪代码后,识别号为id的指令屏障的计数值会被增1。
ibar.pass id,isa_total
下述伪代码可以作为数据提供指令的另一个范例。在下述伪代码中,ldm表示矩阵加载指令(可以作为数据提供指令PI21或PI22的一个范例),而sc1表示识别号的偏移量。在这个范例中,数据提供指令“ldm.sc1”自带有“调整指令屏障的计数值”的功能。在执行核EC完成下述伪代码后,识别号的偏移量为sc1的指令屏障的计数值会被增1,而矩阵加载指令“ldm”会将矩阵数据加载至寄存器堆RF。
ldm.sc1
下述伪代码可以作为数据提供指令的又一个范例。在下述伪代码中,shuff表示串行重新乱序指令(可以作为数据提供指令PI21或PI22的一个范例),而sc1表示识别号的偏移量。在这个范例中,用来作为指令屏障的指令“shuff.sc1”自带有“调整指令屏障的计数值”的功能。在执行核EC完成下述伪代码后,识别号的偏移量为sc1的指令屏障的计数值会被增1。
shuff.sc1
下述伪代码可以作为数据取用指令的一个范例。在下述伪代码中,alu表示算术指令(可以作为数据取用指令CI21的一个范例),ibar表示指令屏障(可以作为指令屏障ibar1的一个范例),参数sync表示“暂停执行”,id表示指令屏障的识别号,而isa_total表示“相关联指令的数量”。“ibar.sync id,isa_total”可以作为在图2所示第二线程组W2中的指令屏障ibar1或ibar2的一个范例。以图2所示指令屏障ibar1为例,isa_total为“3”。执行核EC会因为指令屏障“ibar.sync id,isa_total”而暂停往下执行,直到识别号为id的指令屏障的计数值已达“isa_total”。
ibar.sync id,isa_total
alu
图3是依照本发明的另一实施例所绘示,多个并行线程组的指令时序示意图。图3的横轴表示时间。图3可以展现执行单元122_1的操作方法的另一个实施范例。在图3所示实施例中,执行单元122_1所执行的多个线程组包括线程组W31、线程组W32、线程组W33与线程组W34。图3所示不同箭线表示线程组W31、W32、W33与W34的时间轴(timeline)。线程组W31包括多个指令,例如图3所示数据提供指令PI31_1、数据提供指令PI31_2与数据取用指令CI31_1。线程组W32包括多个指令,例如图3所示数据提供指令PI32_1与数据提供指令PI32_2。线程组W33包括多个指令,例如图3所示数据取用指令CI33_1。线程组W34包括多个指令,例如图3所示数据取用指令CI34_1。
在图3所示实施例中,线程组W31~W34包括,存在依赖关系的数据提供指令PI31_1、数据提供指令PI31_2、数据提供指令PI32_1、数据提供指令PI32_2、数据取用指令CI31_1、数据取用指令CI33_1与数据取用指令CI34_1(多个相关联指令)。这些数据提供指令PI31_1、PI31_2、PI32_1与PI32_2的每一个用以提供数据至在执行单元122_1中的寄存器堆RF。这些数据取用指令CI31_1、CI33_1与CI34_1可以从寄存器堆RF取用相关联指令(数据提供指令PI31_1、PI31_2、PI32_1与PI32_2)所提供的数据。在图3所示实施例中,这些相关联指令(数据提供指令PI31_1、PI31_2、PI32_1与PI32_2以及数据取用指令CI31_1、CI33_1与CI34_1)通过同一个指令屏障ibar3绑定在一起,以实现在同一个执行单元中不同线程组之间的数据同步机制。
在数据提供指令PI31_1、PI31_2、PI32_1与PI32_2的任何一个被执行时,执行核EC可以对应调整指令屏障ibar3的计数值。举例来说,在数据提供指令PI31_1、PI31_2、PI32_1与PI32_2的任何一个被执行时,执行核EC可以使指令屏障ibar3的计数值增1。数据提供指令PI31_1、PI31_2、PI32_1与PI32_2可以参照图2所示数据提供指令PI21与PI22的相关说明并且加以类推,故不再赘述。当数据取用指令CI31_1、CI33_1与CI34_1的任何一个作为目前待执行指令时,执行核EC可以再一次对应调整指令屏障ibar3的计数值。举例来说,当数据取用指令CI31_1、CI33_1与CI34_1的任何一个作为目前待执行指令时,执行核EC可以使指令屏障ibar3的计数值增1。数据取用指令CI31_1、CI33_1与CI34_1可以参照图2所示数据取用指令CI21的相关说明并且加以类推,故不再赘述。基于指令屏障ibar3,执行核EC可以暂停执行数据取用指令CI31_1、CI33_1与CI34_1,直到指令屏障ibar3的计数值已表示“相关联指令PI31_1、PI31_2、PI32_1、PI32_2、CI31_1、CI33_1与CI34_1中的所有数据提供指令PI31_1、PI31_2、PI32_1与PI32_2皆已被执行,以及相关联指令PI31_1、PI31_2、PI32_1、PI32_2、CI31_1、CI33_1与CI34_1中的所有数据取用指令CI31_1、CI33_1与CI34_1皆已作为目前待执行指令”。
下述伪代码可以作为线程组W31的部分内容的一个范例。在下述伪代码中,base表示用以存储基址的寄存器,smovs表示数据搬移指令(将数据“4”搬移至寄存器base作为指令屏障ibar3的识别号的基址),ldm表示矩阵加载指令(可以作为数据提供指令PI31_1与PI31_2的一个范例),而sc1表示指令屏障ibar3的识别号的偏移量“1”。“ldm.sc1”表示,执行矩阵加载指令ldm,以及将识别号为“5”(基址“4”加上偏移量“1”)的指令屏障ibar3的计数值增1。ibar表示指令屏障(可以作为指令屏障ibar3的一个范例),而参数sync表示“暂停执行”。“ibar.sync 5,7”表示,指令屏障ibar3的识别号为“5”(亦即基址“4”加上偏移量“1”),而指令屏障ibar3的“相关联指令(亦即图3所示指令PI31_1、PI31_2、PI32_1、PI32_2、CI31_1、CI33_1与CI34_1)的数量”为“7”。alu表示算术指令(可以作为数据取用指令CI31_1的一个范例)。因为指令屏障“ibar.sync”的参数为“sync”,所以接下来的指令(例如算术指令“alu”)可以被暂停执行,直到识别号为“5”的指令屏障ibar3的计数值已达相关联指令的数量“7”。算术指令“alu”的参数sc0表示指令屏障的识别号的偏移量“0”。因为指令屏障的偏移量为指定值“0”,所以算术指令“alu”不会被暂停执行。
//W31
smovs base,4;
ldm.sc1;
ldm.sc1;
ibar.sync 5,7;
alu.sc0;
下述伪代码可以作为线程组W32的部分内容的一个范例。在下述伪代码中,base表示用以存储基址的寄存器,smovs表示数据搬移指令(将数据“4”搬移至寄存器base作为指令屏障ibar3的识别号的基址),ldm表示矩阵加载指令(可以作为数据提供指令PI32_1与PI32_2的一个范例),sc1表示指令屏障ibar3的识别号的偏移量“1”。“ldm.sc1”表示,执行矩阵加载指令ldm,以及将识别号为“5”(基址“4”加上偏移量“1”)的指令屏障ibar3的计数值增1。
//W32
smovs base,4;
ldm.sc1;
ldm.sc1;
下述伪代码可以作为线程组W33的部分内容的一个范例。在下述伪代码中,alu表示算术指令(可以作为数据取用指令CI33_1的一个范例),而ibar表示指令屏障(可以作为指令屏障ibar3的一个范例)。指令屏障“ibar”的参数sync表示“暂停执行”。“ibar.sync 5,7”表示,指令屏障ibar3的识别号为“5”(亦即基址“4”加上偏移量“1”),而指令屏障ibar3的“相关联指令(亦即图3所示指令PI31_1、PI31_2、PI32_1、PI32_2、CI31_1、CI33_1与CI34_1)的数量”为“7”。因为指令屏障“ibar”的参数为“sync”,所以接下来的指令(例如算术指令“alu”)可以被暂停执行,直到识别号为“5”的指令屏障ibar3的计数值已达相关联指令的数量“7”。算术指令“alu”的参数sc0表示指令屏障的识别号的偏移量“0”。因为指令屏障的偏移量为指定值“0”,所以算术指令“alu”不会被暂停执行。
//W33
ibar.sync 5,7;
alu.sc0;
下述伪代码可以作为线程组W34的部分内容的一个范例。在下述伪代码中,alu表示算术指令(可以作为数据取用指令CI34_1的一个范例),而ibar表示指令屏障(可以作为指令屏障ibar3的一个范例)。下述线程组W34的伪代码范例可以参照上述线程组W33的伪代码范例的相关说明并且加以类推,故不再赘述。
//W34
ibar.sync 5,7;
alu.sc0;
综上所述,机器可读介质110所存储的程序可以实现在同一个执行单元122_1中不同线程组之间的数据同步机制。在计算机系统100执行程序时,数据处理集成电路120的一个执行单元122_1可以执行多个线程组。在目前数据提供指令被执行完成后,亦即在目前数据提供指令将数据提供至寄存器堆RF后,目前数据提供指令所对应的指令屏障的计数值会被对应调整,以表示“多个相关联指令中的目前数据提供指令已被执行”,或表示“目前数据提供指令的相关联数据已经提供至寄存器堆”。目前数据取用指令会被暂停执行,直到指令屏障的计数值已表示“这些相关联指令中的所有数据提供指令皆已被执行,以及这些相关联指令中的所有数据取用指令皆已作为目前待执行指令(亦即等待中)”。因此,数据同步机制可以保证在存在依赖关系的多个相关联指令中所有数据提供指令将相关联数据加载至寄存器堆RF后,这些相关联指令中所有数据取用指令才去寄存器堆RF取用相关联数据。
本发明的数据同步机制可以实现多个不同线程组之间(或线程组内)的数据同步,相比于传统的工作组(workgroup)范围的同步屏障,本发明通过配置基于指令的指令屏障,使得数据提供指令之间无需相互等待,从而可以有效降低数据同步的延迟。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (12)
1.一种存储有程序的机器可读介质,其特征在于,所述程序在被执行时使得数据处理集成电路的一个执行单元:
执行多个线程组中的第一线程组,其中所述多个线程组包括存在依赖关系的多个相关联指令,所述多个相关联指令通过同一个指令屏障绑定在一起,所述第一线程组包括所述多个相关联指令中的一个第一数据提供指令,所述第一数据提供指令用以提供数据至存储空间,以及在所述第一数据提供指令被执行时所述指令屏障的计数值被对应调整以表示所述多个相关联指令中的所述第一数据提供指令已被执行;以及
执行所述多个线程组中的第二线程组,其中所述第二线程组包括所述多个相关联指令中的一个第一数据取用指令,当所述第一数据取用指令作为目前待执行指令时所述指令屏障的所述计数值被对应调整以表示所述多个相关联指令中的所述第一数据取用指令已作为目前待执行指令,所述第一数据取用指令被暂停执行直到所述指令屏障的所述计数值已表示所述多个相关联指令中的所有数据提供指令皆已被执行,以及所述多个相关联指令中的所有数据取用指令皆已作为目前待执行指令,当所述第一数据取用指令被执行时所述第一数据取用指令从所述存储空间取用所述多个相关联指令所提供的数据,以及当所述指令屏障的所述计数值已表示所述多个相关联指令中的所有数据提供指令皆已被执行,以及所述多个相关联指令中的所有数据取用指令皆已作为目前待执行指令时所述指令屏障的所述计数值被重置为初始值。
2.根据权利要求1所述的机器可读介质,其特征在于,在所述第一数据提供指令被执行时所述指令屏障的所述计数值增1,当所述第一数据取用指令作为目前待执行指令时所述指令屏障的所述计数值增1,以及所述第一数据取用指令被暂停执行直到所述指令屏障的所述计数值已达所述多个相关联指令的数量。
3.根据权利要求2所述的机器可读介质,其特征在于,所述第一线程组还包括第二数据取用指令,当所述第二数据取用指令作为所述目前待执行指令时所述指令屏障的所述计数值增1,所述第二数据取用指令被暂停执行直到所述指令屏障的所述计数值已达所述多个相关联指令的数量,以及当所述第二数据取用指令被执行时所述第二数据取用指令从所述存储空间取用所述多个相关联指令所提供的数据。
4.根据权利要求2所述的机器可读介质,其特征在于,所述第一线程组还包括第二数据提供指令,所述第二数据提供指令用以提供数据至存储空间,以及在所述第二数据提供指令被执行时所述指令屏障的所述计数值增1。
5.根据权利要求1所述的机器可读介质,其特征在于,所述指令屏障包括识别号,所述识别号包括基址与偏移量,
当所述指令屏障的所述偏移量为一个指定值时,调用所述指令屏障的一个目前指令不会被暂停执行;以及
当所述指令屏障的所述偏移量不为所述指定值时,调用所述指令屏障的所述目前指令被暂停执行直到所述指令屏障的所述计数值已表示所述多个相关联指令中的所有数据提供指令皆已被执行,以及所述多个相关联指令中的所有数据取用指令皆已作为目前待执行指令。
6.一种计算机系统,包括:
机器可读介质,存储有程序;以及
数据处理集成电路,执行所述机器可读介质的所述程序,使得所述数据处理集成电路的一个执行单元:
执行多个线程组中的第一线程组,其中所述多个线程组包括存在依赖关系的多个相关联指令,所述多个相关联指令通过同一个指令屏障绑定在一起,所述第一线程组包括所述多个相关联指令中的一个第一数据提供指令,所述第一数据提供指令用以提供数据至存储空间,以及在所述第一数据提供指令被执行时所述指令屏障的计数值被对应调整以表示所述多个相关联指令中的所述第一数据提供指令已被执行;以及
执行所述多个线程组中的第二线程组,其中所述第二线程组包括所述多个相关联指令中的一个第一数据取用指令,当所述第一数据取用指令作为目前待执行指令时所述指令屏障的所述计数值被对应调整以表示所述多个相关联指令中的所述第一数据取用指令已作为目前待执行指令,所述第一数据取用指令被暂停执行直到所述指令屏障的所述计数值已表示所述多个相关联指令中的所有数据提供指令皆已被执行,以及所述多个相关联指令中的所有数据取用指令皆已作为目前待执行指令,当所述第一数据取用指令被执行时所述第一数据取用指令从所述存储空间取用所述多个相关联指令所提供的数据,以及当所述指令屏障的所述计数值已表示所述多个相关联指令中的所有数据提供指令皆已被执行,以及所述多个相关联指令中的所有数据取用指令皆已作为目前待执行指令时所述指令屏障的所述计数值被重置为初始值。
7.根据权利要求6所述的计算机系统,其特征在于,在所述第一数据提供指令被执行时所述指令屏障的所述计数值增1,当所述第一数据取用指令作为目前待执行指令时所述指令屏障的所述计数值增1,以及所述第一数据取用指令被暂停执行直到所述指令屏障的所述计数值已达所述多个相关联指令的数量。
8.根据权利要求7所述的计算机系统,其特征在于,所述第一线程组还包括第二数据取用指令,当所述第二数据取用指令作为所述目前待执行指令时所述指令屏障的所述计数值增1,所述第二数据取用指令被暂停执行直到所述指令屏障的所述计数值已达所述多个相关联指令的数量,以及当所述第二数据取用指令被执行时所述第二数据取用指令从所述存储空间取用所述多个相关联指令所提供的数据。
9.根据权利要求7所述的计算机系统,其特征在于,所述第一线程组还包括第二数据提供指令,所述第二数据提供指令用以提供数据至存储空间,以及在所述第二数据提供指令被执行时所述指令屏障的所述计数值增1。
10.根据权利要求6所述的计算机系统,其特征在于,所述指令屏障包括识别号,所述识别号包括基址与偏移量,
当所述指令屏障的所述偏移量为一个指定值时,调用所述指令屏障的一个目前指令不会被暂停执行;以及
当所述指令屏障的所述偏移量不为所述指定值时,调用所述指令屏障的所述目前指令被暂停执行直到所述指令屏障的所述计数值已表示所述多个相关联指令中的所有数据提供指令皆已被执行,以及所述多个相关联指令中的所有数据取用指令皆已作为目前待执行指令。
11.根据权利要求6所述的计算机系统,其特征在于,所述数据处理集成电路包括图形处理器或通用图形处理器。
12.一种执行单元的操作方法,其特征在于,所述操作方法包括:
由一个执行单元执行多个线程组,其中所述多个线程组包括存在依赖关系的多个相关联指令,所述多个相关联指令通过同一个指令屏障绑定在一起,所述多个线程组中的第一线程组包括所述多个相关联指令中的一个第一数据提供指令,所述第一数据提供指令用以提供数据至存储空间,所述多个线程组中的第二线程组包括所述多个相关联指令中的一个第一数据取用指令;
在所述第一数据提供指令被执行时,对应调整所述指令屏障的计数值以表示所述多个相关联指令中的所述第一数据提供指令已被执行;
当所述第一数据取用指令作为目前待执行指令时,对应调整所述指令屏障的所述计数值以表示所述多个相关联指令中的所述第一数据取用指令已作为目前待执行指令;
暂停执行所述第一数据取用指令,直到所述指令屏障的所述计数值已表示所述多个相关联指令中的所有数据提供指令皆已被执行,以及所述多个相关联指令中的所有数据取用指令皆已作为目前待执行指令;
当所述第一数据取用指令被执行时,所述第一数据取用指令从所述存储空间取用所述多个相关联指令所提供的数据;以及
当所述指令屏障的所述计数值已表示所述多个相关联指令中的所有数据提供指令皆已被执行,以及所述多个相关联指令中的所有数据取用指令皆已作为目前待执行指令时,重置所述指令屏障的所述计数值为初始值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210624232.9A CN115016953B (zh) | 2022-06-02 | 2022-06-02 | 存储有程序的机器可读介质、计算机系统和一种操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210624232.9A CN115016953B (zh) | 2022-06-02 | 2022-06-02 | 存储有程序的机器可读介质、计算机系统和一种操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115016953A true CN115016953A (zh) | 2022-09-06 |
CN115016953B CN115016953B (zh) | 2024-03-22 |
Family
ID=83073479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210624232.9A Active CN115016953B (zh) | 2022-06-02 | 2022-06-02 | 存储有程序的机器可读介质、计算机系统和一种操作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115016953B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7788468B1 (en) * | 2005-12-15 | 2010-08-31 | Nvidia Corporation | Synchronization of threads in a cooperative thread array |
US20110078417A1 (en) * | 2009-09-25 | 2011-03-31 | Brian Fahs | Cooperative thread array reduction and scan operations |
CN110647404A (zh) * | 2018-06-27 | 2020-01-03 | 英特尔公司 | 用于多线程处理器中的屏障同步的系统、设备和方法 |
CN113284038A (zh) * | 2021-03-05 | 2021-08-20 | 上海壁仞智能科技有限公司 | 用于执行计算的方法、计算设备、计算系统和存储介质 |
CN113721987A (zh) * | 2021-09-02 | 2021-11-30 | 海光信息技术股份有限公司 | 指令执行方法和指令执行装置 |
CN113760495A (zh) * | 2020-06-03 | 2021-12-07 | 英特尔公司 | 分层线程调度 |
US20220020108A1 (en) * | 2020-07-17 | 2022-01-20 | Arm Limited | Graphics processors |
-
2022
- 2022-06-02 CN CN202210624232.9A patent/CN115016953B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7788468B1 (en) * | 2005-12-15 | 2010-08-31 | Nvidia Corporation | Synchronization of threads in a cooperative thread array |
US20110078417A1 (en) * | 2009-09-25 | 2011-03-31 | Brian Fahs | Cooperative thread array reduction and scan operations |
CN110647404A (zh) * | 2018-06-27 | 2020-01-03 | 英特尔公司 | 用于多线程处理器中的屏障同步的系统、设备和方法 |
CN113760495A (zh) * | 2020-06-03 | 2021-12-07 | 英特尔公司 | 分层线程调度 |
US20220020108A1 (en) * | 2020-07-17 | 2022-01-20 | Arm Limited | Graphics processors |
CN113284038A (zh) * | 2021-03-05 | 2021-08-20 | 上海壁仞智能科技有限公司 | 用于执行计算的方法、计算设备、计算系统和存储介质 |
CN113721987A (zh) * | 2021-09-02 | 2021-11-30 | 海光信息技术股份有限公司 | 指令执行方法和指令执行装置 |
Non-Patent Citations (2)
Title |
---|
刘晓娴;赵荣彩;丁锐;: "面向DSWP并行的OpenMP任务调度机制的扩展与实现", 计算机科学, no. 09, 15 September 2013 (2013-09-15) * |
朱燕;衷璐洁;: "基于LLVM中间表示的数据依赖并行计算方法", 计算机应用研究, no. 02, 31 December 2020 (2020-12-31) * |
Also Published As
Publication number | Publication date |
---|---|
CN115016953B (zh) | 2024-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9690581B2 (en) | Computer processor with deferred operations | |
EP2140347B1 (en) | Processing long-latency instructions in a pipelined processor | |
US6944850B2 (en) | Hop method for stepping parallel hardware threads | |
US8424021B2 (en) | Event-based bandwidth allocation mode switching method and apparatus | |
TWI493452B (zh) | 非對稱多處理器系統中之二進制轉譯技術 | |
KR100617357B1 (ko) | 태스크 스위칭에 의한 제로 오버헤드 컴퓨터 인터럽트 | |
US20050108711A1 (en) | Machine instruction for enhanced control of multiple virtual processor systems | |
CN110678847A (zh) | 用于gpu任务调度的连续分析任务 | |
US10861125B2 (en) | Preparing and executing command streams in data processing systems | |
US10019283B2 (en) | Predicting a context portion to move between a context buffer and registers based on context portions previously used by at least one other thread | |
US7991985B2 (en) | System and method for implementing and utilizing a zero overhead loop | |
WO2007076190A2 (en) | Efficient task scheduling by assigning fixed registers to scheduler | |
US7987347B2 (en) | System and method for implementing a zero overhead loop | |
KR100210205B1 (ko) | 스톨캐쉬를 제공하기 위한 장치 및 방법 | |
US7797683B2 (en) | Decoupling the number of logical threads from the number of simultaneous physical threads in a processor | |
JP2015184706A (ja) | 半導体装置及び命令読み出し制御方法 | |
US20170060582A1 (en) | Arbitrary instruction execution from context memory | |
CN115016953A (zh) | 存储有程序的机器可读介质、计算机系统和一种操作方法 | |
US9323575B1 (en) | Systems and methods for improving data restore overhead in multi-tasking environments | |
CN114035847B (zh) | 用于并行执行核心程序的方法和装置 | |
US20130166887A1 (en) | Data processing apparatus and data processing method | |
US20150293766A1 (en) | Processor and method | |
US7890740B2 (en) | Processor comprising a first and a second mode of operation and method of operating the same | |
CN117667787B (zh) | 运算装置及其操作方法和机器可读存储介质 | |
CN114968361B (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 | ||
CP03 | Change of name, title or address |
Address after: 201100 room 1302, 13 / F, building 16, No. 2388, Chenhang highway, Minhang District, Shanghai Patentee after: Shanghai Bi Ren Technology Co.,Ltd. Country or region after: China Address before: 201100 room 1302, 13 / F, building 16, No. 2388, Chenhang highway, Minhang District, Shanghai Patentee before: Shanghai Bilin Intelligent Technology Co.,Ltd. Country or region before: China |
|
CP03 | Change of name, title or address |