CN108292230A - 硬件访问计数器以及用于协调多线程处理的事件产生 - Google Patents
硬件访问计数器以及用于协调多线程处理的事件产生 Download PDFInfo
- Publication number
- CN108292230A CN108292230A CN201680070290.4A CN201680070290A CN108292230A CN 108292230 A CN108292230 A CN 108292230A CN 201680070290 A CN201680070290 A CN 201680070290A CN 108292230 A CN108292230 A CN 108292230A
- Authority
- CN
- China
- Prior art keywords
- instruction
- synchronization component
- hardware synchronization
- thread
- state
- 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 claims description 41
- 238000012545 processing Methods 0.000 claims description 29
- 230000004044 response Effects 0.000 claims description 16
- 230000008859 change Effects 0.000 claims description 5
- 238000006116 polymerization reaction Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 10
- 230000015654 memory Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 230000009471 action Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000005314 correlation function Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009466 transformation 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/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/3009—Thread control 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
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/521—Atomic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/522—Manager
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Advance Control (AREA)
Abstract
计算机系统包含硬件同步组件(HSC)。多个同时的执行线程发布指令以更新所述HSC的状态。多个线程可以在相同时钟循环中更新所述状态,并且线程不需要在更新其状态之前接收所述HSC的控制。聚合参考在所述相同时钟循环期间接收到的所述状态的指令,并且根据所述指令的数目更新所述状态。相对于阈值条件评估所述状态。如果符合阈值条件,则所述HSC将事件输出到处理器。所述处理器随后识别受所述事件影响的线程,并且基于所述事件(例如,所述线程的阻塞、分支化、解除阻塞)采取预定措施。
Description
技术领域
本发明涉及用于协调多个同时执行的线程之间的动作的系统和方法。
背景技术
在常规的计算机系统中,可以实施执行多个线程,以便获取处理资源的最佳优势。然而,在多个应用中,需要在单独的执行线程之间进行协调。通过在与其它线程共享的线程内产生事件,可容易地为少量线程执行此协调,随后基于事件采取适当措施。然而,此方法导致延迟和高处理开销。
本文所描述的系统和方法提供一种用于在线程之间协调的改进方法。
附图说明
为了使得将容易理解本发明的优点,将参考附图中所说明的具体实施例呈现对上文简述的本发明的更具体描述。在理解这些图式仅描绘本发明的典型实施例且因此不应认为其限制本发明的范围的情况下,将通过使用附图来以额外特异性和细节来描述并解释本发明,在附图中:
图1是适合于实施根据本发明的实施例的方法的计算机系统的示意性框图;
图2是根据本发明的实施例的用于实施硬件事件产生的组件的示意性框图;
图3是根据本发明的实施例的用于更新用于事件产生的硬件计数器的方法的过程流程图;
图4是根据本发明的实施例的用于基于硬件计数器产生事件的方法的过程流程图;以及
图5是根据本发明的实施例的用于处理硬件产生事件的方法的过程流程图。
具体实施方式
容易理解的是,如本文中大体描述且在图中说明的本发明的组件可以各种不同配置来布置和设计。因此,图中表示的本发明的实施例的以下更详细描述并不意图限制所要求的本发明的范围,而是仅表示根据本发明的当前设想的实施例的某些实例。参考图式将最好地理解当前所描述的实施例,其中通篇中用相同数字表示相同部分。
根据本发明的实施例可以实施为设备、方法或计算机程序产品。因此,本发明可以采用完全硬件实施例、完全软件实施例(包含固件、驻留软件、微码等)或组合软硬件方面的实施例(在本文中可以全部总称为“模块”或“系统”)的形式。此外,本发明可以采用实施于任何有形表达媒体中的计算机程序产品的形式,所述有形表达媒体具有实施于媒体中的计算机可用程序代码。
可以利用一个或多个计算机可用媒体或计算机可读媒体的任何组合,包含非暂时性媒体。例如,计算机可读介质可以包含便携式计算机磁盘、硬盘、随机存取存储器(RAM)装置、只读存储器(ROM)装置、可擦除可编程只读存储器(EPROM或闪存存储器)装置、便携式压缩光盘只读存储器(CDROM)、光学存储装置和磁性存储装置中的一个或多个。在所选的实施例中,计算机可读介质可以包括任何非暂时性介质,所述非暂时性介质可以容纳、存储、传送、传播或传递通过或结合指令执行系统、设备或装置使用的程序。
可以通过一种或多种编程语言的任何组合编写用于执行本发明的操作的计算机程序代码,所述一种或多种编程语言包含例如Java、Smalltalk、C++等等面向对象的编程语言,以及例如“C”编程语言或类似编程语言的常规程序性编程语言。所述程序代码可以作为单独的软件包完全在计算机系统上执行,在单独硬件单元上执行,部分地在与计算机隔开某一距离的远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种场景中,远程计算机可以通过任何类型的网络,包含局域网(LAN)或广域网(WAN))连接到计算机,或者可以对外部计算机进行连接(例如,使用互联网服务提供商通过互联网)。
下文参考根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或框图描述本发明。应理解,可以通过计算机程序指令或代码实施流程图说明和/或框图中的每一块,以及流程图说明和/或框图中的块的组合。可以将这些计算机程序指令提供到通用计算机、专用计算机或其它可编程数据处理设备的处理器以产生机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实施在流程图和/或框图块中指定的功能/动作的装置。
这些计算机程序指令还可以存储在非暂时性计算机可读介质中,所述非暂时性计算机可读介质可以指导计算机或其它可编程数据处理设备用特定方式运行,使得存储在计算机可读介质中的指令产生包含实施在流程图和/或框图块中指定的功能/动作的指令装置的制品。
计算机程序指令还可以加载到计算机或其它可编程数据处理设备上,以使在计算机或其它可编程设备上执行一系列操作步骤以产生计算机实施的过程,使得在计算机或其它可编程设备上执行的指令提供用于实施在流程图和/或框图块中指定的功能/动作的过程。
图1是说明实例计算装置100的框图。计算装置100可以用于执行各种程序,例如本文中论述的那些程序。计算装置100可以充当服务器、客户端或任何其它计算实体。计算装置可以执行本文中论述的各种监测功能,并且可以执行一个或多个应用程序,例如本文所述的应用程序。计算装置100可以是多种多样的计算装置中的任一种,例如桌上型计算机、笔记本计算机、服务器计算机、手持型计算机、平板计算机等等。
计算装置100包含一个或多个处理器102、一个或多个存储器装置104、一个或多个接口106、一个或多个大容量存储装置108、一个或多个输入/输出(I/O)装置110和显示装置130,所有装置连接到总线112。处理器102包含执行存储在存储器装置104和/或大容量存储装置108中的指令的一个或多个处理器或控制器。处理器102还可以包含各种类型的计算机可读媒体,例如,高速缓冲存储器。
存储器装置104包含不同计算机可读媒体,例如,易失性存储器(例如,随机存取存储器(RAM)114)和/或非易失性存储器(例如,只读存储器(ROM)116)。存储器装置104还可以包含可重写ROM,例如,闪存存储器。
大容量存储装置108包含不同计算机可读媒体,例如,磁带、磁盘、光盘、固态存储器(例如,闪存存储器)等。如图1所示,特定的大容量存储装置是硬盘驱动器124。不同驱动器还可以包含在大容量存储装置108中,以实现从不同计算机可读媒体读取和/或写入到不同计算机可读媒体。大容量存储装置108包含可装卸媒体126和/或非可装卸媒体。
I/O装置110包含允许数据和/或其它信息输入到计算装置100或从计算装置100检索的各种装置。实例I/O装置110包含光标控制装置、键盘、小键盘、麦克风、监视器或其它显示装置,例如,扬声器、打印机、网络接口卡、调制解调器、镜头、CCD或其它图像捕获装置等。
显示装置130包含能够向计算装置100的一个或多个用户显示信息的任何类型的装置。显示装置130的实例包含监视器、显示终端、视频投影装置等。
图形处理单元(GPU)132可以连接到处理器102和/或显示装置130。GPU可以用于再现计算机生成图像并且执行其它图形处理。GPU可以包含通用处理器,例如处理器102的功能性中的一些或全部。GPU还可以包含特定于图形处理的额外功能性。GPU可以包含与坐标变换、阴影化、纹理化、光栅化有关的硬编码和/或硬接线图形功能,以及有助于再现计算机生成图像的其它功能。
接口106包含允许计算装置100与其它系统、装置或计算环境交互的各种接口。例如,接口106包含任何数目的不同网络接口120,例如局域网(LAN)、广域网(WAN)、无线网络和互联网的接口。其它接口包含用户接口118以及外围装置接口122。接口106还可以包含一个或多个用户接口元件118。接口106还可以包含一个或多个外围接口,例如,用于打印机、指向装置(鼠标、触控板等)、键盘等的接口。
总线112允许处理器102、存储器装置104、接口106、大容量存储装置108和I/O装置110与彼此,以及连接到总线112的其它装置或组件通信。总线112表示若干类型的总线结构,例如,系统总线、PCI总线、IEEE 1394总线、USB总线等等中的一个或多个。
出于说明的目的,程序和其它可执行程序组件在本文中示为离散块,但是应理解,此类程序和组件可以在不同时间驻留在计算装置100的不同存储组件中并且通过处理器102执行。或者,本文所描述的系统和程序可以在硬件,或硬件、软件和/或固件的组合中实施。例如,一个或多个专用集成电路(ASIC)可以被编程为执行本文所述的系统和程序中的一个或多个。
参考图2,处理装置102可以执行一个或多个线程200。如上所述,计算机系统100可以包含多个处理装置102。处理装置102中的任一个或处理装置102的组合可以执行下文归因于“处理装置”102的功能。线程可以通过由处理装置102执行的应用程序实例化。处理器可以通过常规方式分配处理资源并且将执行从一个线程200切换到另一线程。线程200可以向硬件同步组件(HSC)202发布指令。HSC 202接收指令并且更新其状态。基于HSC 202的状态,HSC 202可以将事件204输出到线程调度器206。线程调度器206随后可以改变一个或多个处理器线程200的执行。例如,线程调度器206可以响应于事件204而使线程200中的一个阻塞、解除阻塞或分叉。
HSC 202可以包含聚合器208。HSC 202可以包含多个状态,所述状态中的每一个可以单独进行寻址。每个状态可以包含限定状态的一个或多个值。因此,聚合器208可以聚合参考处理器102、HSC 202、总线112或其它组件的一个周期,例如一个时钟循环期间接收到的每个状态的每个值的指令。
对于每个状态的每个值,可以更新计数器210a-210b。具体来说,每个计数器210a-210b可以对在时钟循环期间参考个别状态以及状态的值的指令数进行计数。
可以针对每个状态周期性地,例如每个时钟循环执行一次关联函数212。关联函数212可以产生每个状态的输出值。输出值随后输入到阈值比较器214。阈值比较器将另一输入作为阈值216。阈值216对于每个状态可以相同,或一个或多个状态可以具有不同阈值216。
如果阈值比较器214确定输出值满足由阈值216指定的状态的阈值条件,则产生事件204。在一些实施例中,阈值比较器214可以保持产生的事件204的记录并且在不满足阈值条件时清除事件。例如,在迭代地执行关联函数212时,由于满足阈值条件216,比较器214可以引起针对状态产生事件204。在后续迭代中,关联函数212的输出值可以不再符合阈值条件216。因此,响应于检测到不再符合阈值条件216,可以产生指示此事实的事件204。
如上所述,HSC可以实施多个状态。因此,一个或多个MUX 218a-218b可以选择性地将每个状态的计数器210a-210b的值耦合到关联函数212和比较器214,使得相同电路可以用于评估多个状态。
图2的所说明组件可以用于在同时实行的线程之间执行任何类型的同步。从以上描述中显而易见,多个线程可以更新HSC 202的状态中的一个,而不是各自必须等待另一线程完成更新HSC 202的状态。
在一个实例中,状态可以实施先进先出缓冲器。在此实例中,计数器210a可以对FIFO缓冲器的写入指令进行计数,并且计数器210b可以对FIFO缓冲器的读取指令进行计数。关联函数212可以从计数器210a中减去计数器210b的值。比较器214可以相对于一或多个阈值评估此差值。如果差为零,则FIFO缓冲器为空。如果差小于第一阈值,则FIFO缓冲器接近空。如果差等于FIFO缓冲器的大小,则FIFO缓冲器为满。如果差大于高于第一阈值的第二阈值(例如,缓冲器大小的90%),则FIFO缓冲器接近空。因此,阈值216可以指定指示接近空条件的低值,以及指示接近满条件的高值。阈值比较器214随后可以基于满足上述情况中的任一个的差值而产生一些或全部空、接近空、满和接近满事件。
在其它实例中,状态可以包括单个值,并且响应于所述值符合阈值条件(例如,大于或小于阈值)产生事件。
参考图3,所说明方法300可以通过HSC 202执行。如上所述,可以每个时钟循环执行一次方法300。可以针对HSC 202的每个状态的每个值执行方法300。方法300包含在时钟循环期间接收302零个或更多个指令;聚合(例如,计数)304在循环期间接收到的指令数;以及针对每个状态的每个值更新306计数器,例如,通过使计数器递增步骤304处的指令数。
参考图4,所说明方法400可以通过HSC 202执行。可以每个时钟循环或每隔N个时钟循环执行一次方法400,其中N大于1。可以针对HSC 202的每个状态执行方法400。在一些实施例中,仅当在时钟循环期间或紧接在时钟循环前已改变状态时,才针对状态执行方法400。
方法400包含执行402关于状态的值的关联函数。关联函数可以包含从另一计数器减去一个计数器的值、求和计数值、乘以计数值,或将计数值输入到任何任意函数。关联函数的输出随后与阈值条件相比较404。如果发现406符合此条件,则输出指示符合阈值条件的事件。如果不符合,则方法400结束。在一些实施例中,可以针对状态限定多个阈值条件。因此,产生的事件408可以参考满足的阈值条件。阈值条件可以包含函数值的输出大于或小于阈值,或位于阈值范围内。
参考图5,所说明方法500可以通过处理装置102或连接到处理装置102的组件执行,并且被编程为执行线程调度功能。方法500可以包含评估502是否已通过HSC 202产生事件。如果是,则可以识别504一个或多个受影响线程。例如,应用程序可以实例化HSC状态,并且进一步向线程调度器206注册应用程序的一个或多个线程以从HSC状态接收事件。应用程序可以进一步指定响应于事件而将通过线程调度器206执行的动作。例如,应用程序可以指定响应于针对HSC状态产生的特定事件,线程将被阻塞或分叉到不同线程。
因此,识别504受事件影响的线程可以包含识别由应用程序注册为与产生和/或注册事件的HSC状态相对应的线程,以接收在步骤502处接收到的事件的事件类型。方法500随后可以包含识别506响应于事件(例如,阻塞、解除阻塞、分叉、结束等)将执行的动作。当为特定状态的特定事件注册线程时,待执行的动作可以由应用程序指定给线程调度器。因此,在步骤506处,指定动作可以通过线程调度器检索。随后可以执行508指定动作。因此,对于每个受影响线程,受影响线程可以根据指定的动作被阻塞、解除阻塞、分叉、结束等。
在不脱离本发明的精神或基本特征的情况下,可以其它特定形式实施本发明。所描述的实施例应视为在所有方面均仅为说明性而非限制性的。因此,本发明的范围由所附权利要求书而不是由前述描述指示。在权利要求书等效物的含义和范围内的所有变化均涵盖在权利要求书的范围内。
Claims (20)
1.一种方法,包括:
提供存储可执行数据的存储器装置;
提供处理装置,所述处理装置连接到所述存储器装置并且可用于检索和执行所述可执行数据;
提供可操作地连接到所述处理装置的硬件同步组件;
通过所述处理装置同时执行多个执行线程;
通过所述多个执行线程将指令发布到所述硬件同步组件;
响应于所述指令,通过所述硬件同步组件更新所述硬件同步组件的状态;
通过所述硬件同步组件确定所述硬件同步组件的所述状态是否符合阈值条件;
响应于确定所述硬件同步组件的所述状态符合所述阈值条件,通过所述硬件同步组件将事件输出到所述处理装置;
响应于从所述硬件同步组件接收所述事件,通过所述处理装置改变所述多个执行线程中的至少一个线程的执行。
2.根据权利要求1所述的方法,进一步包括:
通过所述处理装置将所述事件输入到线程调度器;以及
响应于所述事件,通过所述线程调度器,引起改变所述至少一个线程的所述执行。
3.根据权利要求1所述的方法,其中改变所述至少一个线程的执行包括阻塞所述至少一个线程。
4.根据权利要求1所述的方法,其中改变所述至少一个线程的执行包括指导所述至少一个线程分叉。
5.根据权利要求1所述的方法,其中响应于所述指令而更新所述硬件同步组件的所述状态包括使计数器递增所述指令的数目。
6.根据权利要求5所述的方法,其中确定所述硬件同步组件的所述状态符合所述阈值条件包括确定所述计数器符合所述阈值条件。
7.根据权利要求1所述的方法,其中所述指令是在一个时钟循环期间接收到的指令,并且包含第一指令和第二指令;
其中更新所述硬件同步组件的所述状态包括:使第一计数器递增所述第一指令的数目;以及
使第二计数器递增所述第二指令的数目。
8.根据权利要求7所述的方法,其中确定所述硬件同步组件的所述状态符合所述阈值条件包括:
将所述第一计数器的第一值和所述第二计数器的第二值输入到函数中以获得函数输出;以及
确定所述函数输出符合所述阈值条件。
9.根据权利要求8所述的方法,其中所述函数是所述第一值与所述第二值之间的差。
10.根据权利要求9所述的方法,其中第一指令是写入指令并且第二指令是读取指令,所述读取指令和所述写入指令引用先进先出缓冲器。
11.一种系统,包括:
存储器装置,所述存储器装置存储可执行数据;
处理装置,所述处理装置连接到所述存储器装置并且可用于检索和执行所述可执行数据;
硬件同步组件,所述硬件同步组件可操作地连接到所述处理装置;
其中所述处理装置被编程为—
通过所述处理装置同时执行多个执行线程;
向所述硬件同步组件发布指令;
其中所述硬件同步组件被编程为—
响应于所述指令,更新所述硬件同步组件的状态;
确定所述硬件同步组件的所述状态符合阈值条件;
响应于确定所述硬件同步组件的所述状态符合所述阈值条件,将事件输出到所述处理装置;
其中所述处理装置进一步被编程为响应于所述事件而改变所述多个执行线程中的至少一个线程的执行。
12.根据权利要求11所述的系统,其中所述处理装置进一步被编程为:
将所述事件输入到线程调度器;以及
响应于所述事件,通过所述线程调度器,引起改变所述至少一个线程的所述执行。
13.根据权利要求11所述的系统,其中处理器被编程为通过阻塞所述至少一个线程来改变所述至少一个线程的执行。
14.根据权利要求11所述的系统,其中所述处理器被编程为通过通知所述至少一个线程分叉来改变所述至少一个线程的执行。
15.根据权利要求11所述的系统,其中所述硬件同步组件被编程为,响应于使计数器递增所述指令的数目的所述指令,更新所述硬件同步组件的所述状态。
16.根据权利要求15所述的系统,其中所述硬件同步组件被编程为通过确定所述计数器符合所述阈值条件来确定所述硬件同步组件的所述状态符合所述阈值条件。
17.根据权利要求11所述的系统,其进一步包括具有时钟周期的时钟;
其中所述硬件同步组件被编程为通过以下操作更新所述硬件同步组件的所述状态:
使第一计数器递增在所述时钟的一个时钟循环期间接收到的指令中的第一指令的数目;以及
使第二计数器递增在所述时钟循环期间接收到的所述指令中的第二指令的数目。
18.根据权利要求17所述的系统,其中所述硬件同步组件被编程为通过以下操作确定所述硬件同步组件的所述状态符合所述阈值条件:
将所述第一计数器的第一值和所述第二计数器的第二值输入到函数中以获得函数输出;以及
确定所述函数输出符合所述阈值条件。
19.根据权利要求18所述的系统,其中所述函数是所述第一值与所述第二值之间的差。
20.根据权利要求19所述的系统,其中第一指令是写入指令并且第二指令是读取指令,所述读取指令和所述写入指令引用先进先出缓冲器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/966,867 US9928117B2 (en) | 2015-12-11 | 2015-12-11 | Hardware access counters and event generation for coordinating multithreaded processing |
US14/966,867 | 2015-12-11 | ||
PCT/US2016/066110 WO2017100749A1 (en) | 2015-12-11 | 2016-12-12 | Hardware access counters and event generation for coordinating multithreaded processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108292230A true CN108292230A (zh) | 2018-07-17 |
CN108292230B CN108292230B (zh) | 2022-06-10 |
Family
ID=59013415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680070290.4A Active CN108292230B (zh) | 2015-12-11 | 2016-12-12 | 硬件访问计数器以及用于协调多线程处理的事件产生 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9928117B2 (zh) |
EP (1) | EP3387524B1 (zh) |
JP (1) | JP6966999B2 (zh) |
KR (1) | KR102651864B1 (zh) |
CN (1) | CN108292230B (zh) |
WO (1) | WO2017100749A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114490001A (zh) * | 2022-02-17 | 2022-05-13 | 支付宝(杭州)信息技术有限公司 | 一种聚合事件流的执行方法、装置以及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7260735B2 (en) * | 2003-12-18 | 2007-08-21 | Lsi Corporation | Method and system for maintaining a running count of events updated by two asynchronous processes |
CN101051266A (zh) * | 2005-03-02 | 2007-10-10 | 英特尔公司 | 具有虚拟多线程的处理器 |
CN101689154A (zh) * | 2007-06-27 | 2010-03-31 | 微软公司 | 利用事务存储器硬件来加速虚拟化和仿真 |
US20140380020A1 (en) * | 2013-06-24 | 2014-12-25 | Honeywell International Inc. | System and methods for synchronization of redundant processing elements |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4531826A (en) | 1982-04-30 | 1985-07-30 | Danyl Corporation | Event counter and access controller |
US5430850A (en) | 1991-07-22 | 1995-07-04 | Massachusetts Institute Of Technology | Data processing system with synchronization coprocessor for multiple threads |
US5901302A (en) * | 1995-01-25 | 1999-05-04 | Advanced Micro Devices, Inc. | Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions |
US5889947A (en) * | 1996-12-16 | 1999-03-30 | International Business Machines Corporation | Apparatus and method for executing instructions that select a storage location for output values in response to an operation count |
US6263410B1 (en) | 1998-09-15 | 2001-07-17 | Industrial Technology Research Institute | Apparatus and method for asynchronous dual port FIFO |
US20040193693A1 (en) * | 2001-06-29 | 2004-09-30 | Gangwal Om Prakash | Data processing apparatus and method fo operating a data processing apparatus |
JP2005528671A (ja) * | 2001-12-14 | 2005-09-22 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 多重プロセッサデータ処理システムにおけるデータ処理方法及び対応するデータ処理システム |
US7587584B2 (en) * | 2003-02-19 | 2009-09-08 | Intel Corporation | Mechanism to exploit synchronization overhead to improve multithreaded performance |
JP2005284749A (ja) * | 2004-03-30 | 2005-10-13 | Kyushu Univ | 並列処理コンピュータ |
US7543136B1 (en) | 2005-07-13 | 2009-06-02 | Nvidia Corporation | System and method for managing divergent threads using synchronization tokens and program instructions that include set-synchronization bits |
GB0524720D0 (en) | 2005-12-05 | 2006-01-11 | Imec Inter Uni Micro Electr | Ultra low power ASIP architecture II |
US7788468B1 (en) | 2005-12-15 | 2010-08-31 | Nvidia Corporation | Synchronization of threads in a cooperative thread array |
US7426253B2 (en) | 2006-08-21 | 2008-09-16 | International Business Machines Corporation | Low latency counter event indication |
US8381203B1 (en) | 2006-11-03 | 2013-02-19 | Nvidia Corporation | Insertion of multithreaded execution synchronization points in a software program |
US8108659B1 (en) | 2006-11-03 | 2012-01-31 | Nvidia Corporation | Controlling access to memory resources shared among parallel synchronizable threads |
US7958333B2 (en) | 2007-05-30 | 2011-06-07 | XMOS Ltd. | Processor with memory access stage adapted to fetch an instruction of a thread when no memory access operation is detected |
US8161250B2 (en) | 2009-05-20 | 2012-04-17 | Sharp Laboratories Of America, Inc. | Methods and systems for partially-transacted data concurrency |
US8499305B2 (en) | 2010-10-15 | 2013-07-30 | Via Technologies, Inc. | Systems and methods for performing multi-program general purpose shader kickoff |
US9146746B2 (en) | 2011-03-01 | 2015-09-29 | University Of Washington Through Its Center Of Commercialization | Systems and methods for providing deterministic execution |
US8689237B2 (en) * | 2011-09-22 | 2014-04-01 | Oracle International Corporation | Multi-lane concurrent bag for facilitating inter-thread communication |
US8345816B1 (en) | 2011-12-06 | 2013-01-01 | International Business Machines Corporation | RAM-based event counters using transposition |
US20130198419A1 (en) | 2012-01-30 | 2013-08-01 | Stephen Jones | Lock-free fifo |
US8904067B2 (en) * | 2012-03-13 | 2014-12-02 | Microsoft Corporation | Adaptive multi-threaded buffer |
US9424099B2 (en) | 2012-06-01 | 2016-08-23 | Advanced Micro Devices, Inc. | Method and system for synchronization of workitems with divergent control flow |
US9229721B2 (en) | 2012-09-10 | 2016-01-05 | Qualcomm Incorporated | Executing subroutines in a multi-threaded processing system |
US9021493B2 (en) | 2012-09-14 | 2015-04-28 | International Business Machines Corporation | Management of resources within a computing environment |
-
2015
- 2015-12-11 US US14/966,867 patent/US9928117B2/en active Active
-
2016
- 2016-12-12 JP JP2018529224A patent/JP6966999B2/ja active Active
- 2016-12-12 KR KR1020187018994A patent/KR102651864B1/ko active IP Right Grant
- 2016-12-12 WO PCT/US2016/066110 patent/WO2017100749A1/en active Application Filing
- 2016-12-12 CN CN201680070290.4A patent/CN108292230B/zh active Active
- 2016-12-12 EP EP16874039.7A patent/EP3387524B1/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7260735B2 (en) * | 2003-12-18 | 2007-08-21 | Lsi Corporation | Method and system for maintaining a running count of events updated by two asynchronous processes |
CN101051266A (zh) * | 2005-03-02 | 2007-10-10 | 英特尔公司 | 具有虚拟多线程的处理器 |
CN102968302A (zh) * | 2005-03-02 | 2013-03-13 | 英特尔公司 | 利用同步开销以改善多线程性能的机制 |
CN101689154A (zh) * | 2007-06-27 | 2010-03-31 | 微软公司 | 利用事务存储器硬件来加速虚拟化和仿真 |
US20140380020A1 (en) * | 2013-06-24 | 2014-12-25 | Honeywell International Inc. | System and methods for synchronization of redundant processing elements |
Also Published As
Publication number | Publication date |
---|---|
WO2017100749A1 (en) | 2017-06-15 |
US20170168875A1 (en) | 2017-06-15 |
US9928117B2 (en) | 2018-03-27 |
CN108292230B (zh) | 2022-06-10 |
EP3387524B1 (en) | 2021-09-08 |
EP3387524A4 (en) | 2019-07-17 |
JP2019505039A (ja) | 2019-02-21 |
KR102651864B1 (ko) | 2024-03-26 |
EP3387524A1 (en) | 2018-10-17 |
KR20180105130A (ko) | 2018-09-27 |
JP6966999B2 (ja) | 2021-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3191964B1 (en) | Memory leak analysis by usage trends correlation | |
US8549478B2 (en) | Graphical user interface input element identification | |
WO2017107086A1 (en) | Touch gesture detection assessment | |
KR102683211B1 (ko) | 다중 스레드 액세스를 위한 소프트웨어로 한정된 fifo 버퍼 | |
CN108292277B (zh) | 用于存储器存取命令的传送描述符 | |
KR101969623B1 (ko) | 병렬 검출과 추적, 및/또는 그룹화된 피처 모션 시프트 추적을 이용한 얼굴 인식 | |
US20140365833A1 (en) | Capturing trace information using annotated trace output | |
CN109426912B (zh) | 风控系统优化方法、系统、装置以及电子设备 | |
CN114116405A (zh) | 应用程序的进程控制方法、装置、计算机设备和存储介质 | |
US20180336122A1 (en) | Generating application flow entities | |
CN108292230A (zh) | 硬件访问计数器以及用于协调多线程处理的事件产生 | |
US20170177302A1 (en) | Generation of distinctive value based on true random input | |
CN113190427A (zh) | 卡顿监控方法、装置、电子设备及存储介质 | |
JP2022549147A (ja) | 描画ディスパッチ識別子をサンプリングするための例外ハンドラ | |
US20200342912A1 (en) | System and method for generating a compression invariant motion timeline | |
CN112860779A (zh) | 一种批量数据导入方法及装置 | |
US20230215215A1 (en) | Systems And Methods For Analyzing Computational Architectures | |
KR20240061670A (ko) | 부적합 정보 기반의 환경 부하 선별 시험의 비용 효과 최적 설계 방법 및 장치 | |
CN115543566A (zh) | 利用多线程执行计算图的方法和系统 | |
CN109614525A (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 |