CN108292230B - 硬件访问计数器以及用于协调多线程处理的事件产生 - Google Patents

硬件访问计数器以及用于协调多线程处理的事件产生 Download PDF

Info

Publication number
CN108292230B
CN108292230B CN201680070290.4A CN201680070290A CN108292230B CN 108292230 B CN108292230 B CN 108292230B CN 201680070290 A CN201680070290 A CN 201680070290A CN 108292230 B CN108292230 B CN 108292230B
Authority
CN
China
Prior art keywords
synchronization component
hardware synchronization
instructions
thread
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680070290.4A
Other languages
English (en)
Other versions
CN108292230A (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.)
Vivante Corp
Original Assignee
Vivante Corp
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 Vivante Corp filed Critical Vivante Corp
Publication of CN108292230A publication Critical patent/CN108292230A/zh
Application granted granted Critical
Publication of CN108292230B publication Critical patent/CN108292230B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/521Atomic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/522Manager

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所述的系统,其中第一指令是写入指令并且第二指令是读取指令,所述读取指令和所述写入指令引用先进先出缓冲器。
CN201680070290.4A 2015-12-11 2016-12-12 硬件访问计数器以及用于协调多线程处理的事件产生 Active CN108292230B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/966,867 2015-12-11
US14/966,867 US9928117B2 (en) 2015-12-11 2015-12-11 Hardware access counters and event generation for coordinating multithreaded processing
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 CN108292230A (zh) 2018-07-17
CN108292230B true 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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114490001A (zh) * 2022-02-17 2022-05-13 支付宝(杭州)信息技术有限公司 一种聚合事件流的执行方法、装置以及设备

Citations (3)

* Cited by examiner, † Cited by third party
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 微软公司 利用事务存储器硬件来加速虚拟化和仿真

Family Cites Families (27)

* Cited by examiner, † Cited by third party
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
WO2003003232A2 (en) * 2001-06-29 2003-01-09 Koninklijke Philips Electronics N.V. Data processing apparatus and a method of synchronizing a first and a second processing means in a data processing apparatus
EP1459181A2 (en) * 2001-12-14 2004-09-22 Koninklijke Philips Electronics N.V. Method for data processing in a multi-processor data processing system and a corresponding data processing system
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
US20140380020A1 (en) * 2013-06-24 2014-12-25 Honeywell International Inc. System and methods for synchronization of redundant processing elements

Patent Citations (4)

* Cited by examiner, † Cited by third party
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 微软公司 利用事务存储器硬件来加速虚拟化和仿真

Also Published As

Publication number Publication date
EP3387524A4 (en) 2019-07-17
EP3387524A1 (en) 2018-10-17
WO2017100749A1 (en) 2017-06-15
CN108292230A (zh) 2018-07-17
JP2019505039A (ja) 2019-02-21
US9928117B2 (en) 2018-03-27
US20170168875A1 (en) 2017-06-15
EP3387524B1 (en) 2021-09-08
JP6966999B2 (ja) 2021-11-17
KR20180105130A (ko) 2018-09-27
KR102651864B1 (ko) 2024-03-26

Similar Documents

Publication Publication Date Title
CN108292162B (zh) 用于多线程访问的软件定义fifo缓冲器
CN108292277B (zh) 用于存储器存取命令的传送描述符
US9703670B2 (en) Performance state machine control with aggregation insertion
US9658832B2 (en) Multi-factor entropy sourcing for random number generators
CN110018914B (zh) 基于共享内存的消息采集方法及装置
US10013290B2 (en) System and method for synchronizing threads in a divergent region of code
US8621479B2 (en) System and method for selecting task allocation method based on load balancing and core affinity metrics
CN108292230B (zh) 硬件访问计数器以及用于协调多线程处理的事件产生
US9122800B1 (en) System and method of non-intrusive measurement of memory access profiles of threads in a multi-core processor
JP2018508865A (ja) アプリケーションイベントの追跡
US9286137B2 (en) Achieving deterministic execution of time critical code sections in multi-core systems
CN114691448A (zh) 应用程序卡顿监测方法、装置、设备及存储介质
US9645637B2 (en) Managing a free list of resources to decrease control complexity and reduce power consumption
CN107645541B (zh) 数据存储方法、装置及服务器
US11294788B2 (en) Predicting performance of a computer system
JP2017107486A (ja) 処理リソース制御プログラム、処理リソース制御装置、および処理リソース制御方法
KR20130141259A (ko) 화면 분할에 의한 실행영상 처리 방법 및 그 방법을 실행하는 프로그램이 기록된 기록매체

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