CN110647404A - 用于多线程处理器中的屏障同步的系统、设备和方法 - Google Patents
用于多线程处理器中的屏障同步的系统、设备和方法 Download PDFInfo
- Publication number
- CN110647404A CN110647404A CN201910447713.5A CN201910447713A CN110647404A CN 110647404 A CN110647404 A CN 110647404A CN 201910447713 A CN201910447713 A CN 201910447713A CN 110647404 A CN110647404 A CN 110647404A
- Authority
- CN
- China
- Prior art keywords
- barrier
- core
- processor
- pipeline
- threads
- 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.)
- Pending
Links
- 230000004888 barrier function Effects 0.000 title claims abstract description 406
- 238000000034 method Methods 0.000 title claims description 68
- 230000015654 memory Effects 0.000 claims description 64
- 230000004044 response Effects 0.000 claims description 22
- 230000000694 effects Effects 0.000 claims description 19
- 238000003860 storage Methods 0.000 claims description 13
- 230000008878 coupling Effects 0.000 claims description 4
- 238000010168 coupling process Methods 0.000 claims description 4
- 238000005859 coupling reaction Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 33
- 230000002776 aggregation Effects 0.000 description 20
- 238000004220 aggregation Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 14
- 229910003460 diamond Inorganic materials 0.000 description 13
- 239000010432 diamond Substances 0.000 description 13
- 238000007667 floating Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 239000004065 semiconductor Substances 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 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
- G06F9/522—Barrier synchronisation
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
在一个实施例中,第一处理器核包括:多个执行流水线,每个执行流水线用于执行一个或多个线程的指令;多个流水线屏障电路,耦合到多个执行流水线,多个流水线屏障电路中的每一个流水线屏障电路与多个执行流水线中的一个执行流水线相关联,以维持多个屏障组的状态信息,多个屏障组中的每一个屏障组由至少两个线程形成;以及核屏障电路,用于控制多个流水线屏障电路的操作,并且用于当多个屏障组中的第一屏障组已到达第一屏障时,通知多个流水线屏障电路。描述了其他实施例,并要求它们的权利。
Description
技术领域
实施例涉及多个线程的同步。
背景技术
随着数据集的增长和应用利用工作负载和算法中的并行性,大规模多线程机器有更高的可能性作为适当的解决方案。在多线程编程模型的情况下,线程之间的同步成为问题。为了保持同步,程序员可以在代码中实现屏障。当线程到达屏障时,它会等待所有其他参与线程也到达屏障,此时线程可以继续。屏障具有许多实际用途,从调试期间的步骤点到允许在应用中进行算法分区。
屏障同步的典型方法包括软件和硬件技术。基本的软件方法是让每个线程原子地递增存储器中的计数器值,检查该计数器值,并且如果尚未达到计数,则线程等待。一旦计数器值等于参与屏障的线程数,就会设置一个由所有线程观察到的标志。此时,所有线程都继续前进。硬件实现的范围从在处理器之间连接线以便传输单个屏障信号到在处理器之间创建算法树结构以便通过网络以更高性能的方式发送屏障分组。虽然这些技术对于有限数量的线程可能是实用的,但它们不能扩展到更大数量的线程。
附图说明
图1是根据本发明的实施例的处理器的框图。
图2是根据本发明的实施例的处理器核的框图。
图3是根据本发明的实施例的方法的流程图。
图4是根据本发明的另一个实施例的方法的流程图。
图5是根据本发明的另一实施例的其他方法的流程图。
图6是根据本发明的又一实施例的方法的流程图。
图7是根据本发明的又另一实施例的方法的流程图。
图8是根据本发明的实施例的核集合引擎的框图。
图9A是示出根据本发明的实施例的示例性有序流水线和示例性寄存器重命名、乱序发布/执行流水线的框图。
图9B是示出根据本发明的实施例的要包括在处理器中的有序架构核和示例性寄存器重命名、乱序发布/执行架构核两者的示例性实施例的框图。
图10A和图10B示出了更具体的示例性有序核架构的框图,该核是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核)之一。
图11是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器的框图。
图12是根据本发明一个实施例的系统的框图。
图13是根据本发明的实施例的第一更具体的示例性系统的框图。
图14是根据本发明的实施例的第二更具体的示例性系统的框图。
图15是根据本发明的实施例的SoC的框图。
图16是根据本发明的实施例的对比使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
在各种实施例中,处理器提供有硬件电路以实现屏障的硬件管理。利用该屏障电路,可以在硬件中有效地执行同步操作。如本文所述,给定核可以具有屏障硬件电路的分层布置,包括流水线屏障电路和至少一个核屏障电路。利用此布置,核可以被配置有至少两级屏障电路。当然,在其他实施例中,可以存在多于两级的屏障电路。这些屏障硬件电路在这里也可以称为所谓的“集合引擎”。在特定实施例中,核可以包括与核的相应流水线相关联的一个或多个流水线集合引擎以及耦合到这些单独流水线集合引擎的核集合引擎。
利用如本文所述的分布式屏障管理操作,编程人员可以配置由这些集合引擎管理的多组线程的并发屏障。进而,这些配置的集合引擎使线程能够以低延迟、减少通信和最小复杂性在屏障点处高效同步。在实施例中,编程人员可以利用包括参与线程的计数和响应机制的可编程性(例如,推送或轮询模式)的信息来配置这些集合引擎。此外,通过提供如本文所述的可配置性,该硬件电路可以支持具有用于每个并发屏障的任意数量的线程参与者的多个并发屏障。另外,实施例通过在多个核(例如,多核处理器)中利用该硬件电路来实现跨核屏障同步。实施例可以进一步扩展到处理器插槽,包括多个管芯,每个管芯具有一个或多个核以实现跨插槽屏障同步。并且进一步的实施例使得能够将本文的技术扩展到一个或多个处理节点,每个处理节点由一个或多个插槽形成,从而也实现跨节点屏障同步。
现在参照图1,示出的是根据本发明的实施例的处理器的框图。更具体地,如图1所示,处理器100是多核处理器,利用单个半导体管芯实现。应理解,尽管在图1中出于说明的目的示出了单个半导体管芯,但实施例不限于该方面。在其他情况下,多核处理器可以在具有多个半导体管芯的集成电路封装中实现。如图1所示,处理器100包括多个核1100-1107。尽管出于说明的目的示出了8个核,但是多核处理器的实施例可包括更多或更少的单个核。实施例可以结合许多不同的核类型使用,包括许多不同架构的有序处理器和乱序处理器,包括精简指令集计算(RISC)和复杂指令集计算(CISC)处理器类型等。在一个示例中,处理器100可以是基于可编程统一存储器架构(PUMA)的系统,该系统可以实现为多线程处理器。
在图1所示的特定示例中,每个核110可以支持多达66个硬件线程。当然,应当理解,本发明的范围在此方面不受限制,并且在其他实施例可以支持更多或更少的硬件线程。在特定实施例中,每个管芯具有八个核110的处理器(诸如处理器100)可以被实现在具有例如32个管芯的插槽中。反过来,可以在处理器节点内实现多个(例如16个)插槽。利用以这种方式布置的系统的分层配置,每个节点可能出现超过256,000个线程。特别是对于多节点系统,实施例可以实现有效的屏障同步操作。
虽然具有多个处理器100的系统可以用于许多不同类型的工作负载,但是在一个示例实施例中,系统可以用于大规模图形应用。可以对此类应用进行分区以在线程子集上运行。例如,在页面排名算法中,在每次迭代期间,每个顶点基于由其邻居推送给它的先前值重新计算其自己的重要性值。在迭代结束时,所有顶点原子地将它们各自的值推送到它们的邻居。
为了确保所有顶点在开始下一次迭代之前已从其邻居接收到最新值,可以在每次迭代结束时针对所有相邻顶点放置屏障。在不同的实现中,这种相邻顶点的范围可以从单个数字到数千个。在每个顶点被实现为线程的情况下,实施例可以提供屏障同步技术,该技术对于少量本地线程(在相同核上执行)以及在跨越系统的各个节点执行的更大数量的线程是有效的。
如图1的插图所示,示出了代表性核1100的细节。如图所示,核1100包括多个处理器流水线。理解的是,此类流水线可以采取许多不同的形式。出于说明的目的,示出了多个多线程流水线1120-1123以及单线程流水线1140-1141。在各种实施例中,流水线112、114可以包括各种电路,包括:用于获取和解码指令的前端电路、用于执行此类指令的执行电路、以及后端电路,诸如用于引退执行的指令并将结果提交到处理器的上下文的引退电路。应理解,尽管流水线112被示出为16线程流水线,但实施例同样适用于其他多线程流水线,作为示例,包括两个、四个或八个线程的流水线。尽管图1的实施例中以这种较高层次示出,但许多变体和替代方案是可能的。
现在参照图2,示出的是根据本发明的实施例的处理器核的框图。如图2所示,处理器核110包括多个流水线112、114。此外,核110包括用于执行如本文所述的有效屏障的硬件。更具体地,如所示出的,每个流水线112、114与多个流水线集合引擎(PCE)1150-1155中的相应的一个相关联。在实施例中,可以在硬件中实现的这些集合引擎提供相应流水线和集合引擎之间的紧密耦合。以这种方式,可以以低开销发生屏障状态的低等待时间报告。
如图2中进一步所示,为了能够在PCE 115和其他电路之间传送屏障状态信息,PCE115可以经由核本地网络120与核集合引擎(CCE)130通信。在实施例中,本地网络120可以实现为交叉开关、结构等。
在实施例中,CCE 130可以实现为主硬件电路以用于执行如本文所述的有效屏障同步操作。为此,实施例提供了用于实现针对所期望的操作模式的CCE 130的编程和配置的技术。反过来,CCE 130可以基于操作的模式来配置PCE 115。然后,在正常操作期间,当在执行期间编程并到达屏障时,状态信息可以在PCE 115和CCE 130(反之亦然)之间传送以监视不同屏障操作的状态。此外,当给定屏障组的所有线程已到达所编程的同步屏障时,CCE130可以控制同步操作。对于仅存在于流水线或核级别处的线程之间的屏障,最高优先级用于尽可能有效地提供同步。为此,可以使用集合引擎在层级的每个级别处跟踪屏障组。更具体地,如图2所示,每个流水线112、114具有相应的PCE 115以提供对轮询指令的快速响应。反过来在核级别处,CCE 130被配置成用于在流水线之间同步。
PCE 115和CCE 130具有跟踪多个屏障ID的能力。如果不同的线程组具有发生的屏障操作,则可以同时跟踪所有线程组。例如,八个不同的线程组可以都存在,并由编程人员用唯一的屏障ID引用。假设没有软件创建的依赖性,则屏障组之间没有硬件依赖性,并且所有屏障组都可以被并行服务。
注意,其他的CCE 130可以与其他核进行通信。更具体地,CCE 130可以(例如经由专用链路)与其他核的CCE进行通信。注意,流水线112、114和PCE 115之间的通信可以经由专用互连,该专用互连与流水线和其他核电路之间的主要通信信道分开。然而,应理解,本地网络120可以是共享互连结构(诸如系统结构)。理解尽管在图2的实施例中以这种较高层次示出,但许多变体和替代方案是可能的。
为了向编程人员公开屏障功能,可以在指令集架构(ISA)中提供特殊机器指令。现在参考表1,示出了根据实施例的示例屏障指令。如图所示,这些指令中的每一个指令都包括屏障配置ID的参数。barrier.init指令表明线程已经遇到屏障。在实施例中,线程可以执行barrier.init指令,该指令使线程向其对应的PCE发送完成通知,该PCE转而将相同的状态信息传送给CCE。barrier.wait和barrier.poll指令允许线程分别以阻塞或非阻塞方式检查状态。在实施例中,线程可以执行barrier.wait指令以等待直到它在进行向前进展之前接收到所有线程已到达屏障的通知。因此,该指令操作以阻塞线程,直到同步成功发生。反过来,线程可以执行barrier.poll指令以轮询其PCE以获取状态信息,以便指示所有线程已到达屏障点并且已成功发生同步。利用该非阻塞指令,线程可以执行与屏障无关的指令,直到所有线程到达屏障点。
表1
参与者的可配置性可以通过目标存储提供给机器特定寄存器(MSR),该机器特定寄存器(MSR)例如存在于相应的集合引擎中。这些MSR存在于系统的地址映射中,并且每个PCE和CCE具有可用于支持多个不同集合配置的MSR空间。MSR空间的每个子集对应于唯一配置或屏障ID。在实施例中,可以执行配置操作,该配置操作包括到CCE MSR的各个存储指令,以设置核中的参与线程的数量、轮询/推送返回模式、以及启用操作。CCE中的与每个屏障操作相关的MSR如表2所示。
表2
如表2所示,在给定MSR中可以存在多个字段以使得位或指示符的存储,包括:启用指示符,用于使集合引擎准备好接收传入的barrier.init指令;完成指示符,用于指示给定的屏障ID是否准备好开始下一个操作;以及模式指示符,用于指示是否将根据推送模式或轮询模式来传送状态信息。如进一步所示,MSR可以包括用于存储对应于用户定义的参与线程数的计数的配置计数以及提供已到达屏障的线程计数的活动计数的字段。
在实施例中,PCE可以被不同地配置,并且仅包括这些MSR的子集,如表3中所示。
表3
如表3所示,在实施例中,在其中计数被维持在核集合引擎级别处的实现中,流水线集合引擎可以包括与核集合引擎中存在的相同的启用、完成和模式字段,但是不包括计数字段。在其他情况下,理解PCE可能包括这些计数字段以维持本地计数信息,然后可以将本地计数信息传递给核集合引擎。
为了开始屏障的配置,程序被配置成用于首先执行到一个或多个CCE MSR的CONFIG_COUNT、LOCAL_ENABLE和模式(MODE)字段的定向存储。设置计数以便CCE可以确定所有参与者何时到达屏障。启用(ENABLE)位指示核集合引擎是否已正确配置并准备好接受来自线程的barrier.init指令。模式(MODE)位用于识别操作是否根据推送或轮询屏障通知方法。
一旦配置了计数MSR,则当线程到达屏障时,参与线程使用表1中详述的'barrier.init'机器指令调用CCE。对于CCE接收的每个“barrier.init”指令,它递增ACTIVE_COUNT。当ACTIVE_COUNT等于CONFIG_COUNT时,CCE利用所有参与者已到达屏障的指示对每个PCE进行响应。
相反,如果通知方法被配置为推送,则CCE经由中断机制发送已完成具有所分配的屏障ID的操作的警报。如果通知方法已被配置为轮询方法,则参与线程可以周期性地向本地PCE发送“barrier.poll”指令。因为PCE经由其自己的内部MSR状态(例如,经由DONE MSR字段)知道状态,所以它可以快速响应此类轮询查询。一旦所有参与者都到达屏障,则对于每个成功的轮询,PCE都会向CCE发出警报,然后CCE递减ACTIVE_COUNT。一旦计数返回到零,CCE就会解除断言其DONE寄存器并向PCE发警报以便也取消断言它们的寄存器。此时,屏障ID插槽已准备好开始下一个操作。在实施例中,CONFIG_COUNT和ENABLE MSR不被重置,从而允许编程人员使用相同的屏障ID而无需任何重新配置。
现在参照图3,示出的是根据本发明的实施例的方法的流程图。更具体地,图3中所示的方法200是根据实施例的用于执行屏障操作的方法。因此,方法200可以由硬件电路、固件、软件和/或其组合来执行。在特定实施例中,方法200可用于执行配置操作以对一个或多个集合引擎进行编程,并且然后用于使软件执行能够在被编程用于有效屏障同步操作的处理器内进行。
如图所示,方法200开始于对集合引擎执行写入操作(框210)。更具体地,该写入操作可以是对核集合引擎的定向写入操作,以配置其以用于屏障操作。出于本文讨论的目的,应理解该定向写入可以包括各种配置信息,包括参与者的计数和各种指示符(诸如启用指示符和模式指示符)。参与者的计数表示给定屏障操作的线程数。可以利用屏障标识符(ID)来标识此类线程组。更具体地,这里描述的同步硬件可以提供对N个不同屏障ID的支持,同时使屏障同步能够针对N个不同的线程组进行。每个线程组可以由两个或更多个线程形成,可能具有不同的线程分组。
响应于此写入操作,核集合引擎可以配置自身,例如,通过在CCE的一个或多个MSR中写入各种配置信息。进而,CCE可以向本PCE提供该配置信息的至少一部分。注意,在实施例中,CCE可以将该配置信息发送到所有PCE,如同软件可以在流水线中移动线程的线程迁移一样,可以调用所有PCE来访问该信息。此时,分层屏障管理硬件被配置并准备好正常执行。
因此,如图3中进一步所示,软件可以在多个流水线上执行(框220)。该软件是多线程软件,使得不同的线程可以在一个或多个流水线上执行。在操作期间,可以确定给定的线程是否到达屏障(菱形230)。在一个实施例中,该确定可以响应于给定线程到达指示到达屏障的预定指令(即barrier.init指令)。否则,如果线程未到达屏障,则继续指令的正常执行。
当确定线程到达屏障时,下一个控制传递到菱形240以确定该线程是否是其组的最后一个到达屏障的线程。如本文将描述的,该确定可以经由集合引擎的分层硬件布置以低等待时间进行。如果该线程不是其组的最后一个到达屏障的线程,则控制传递到菱形250以确定是否该组的所有线程已到达屏障。应理解,在一些实施例中,该确定可以至少以非阻塞方式进行,使得线程可以继续执行代码并且循环回以用于该确定,例如根据预定的时间表。
如图3中进一步所示,在框260处,一旦所有线程都已到达屏障,就可以执行屏障同步操作。在一个实施例中,屏障同步操作可以包括确认所有线程已经到达屏障,允许线程继续进行进一步的代码执行,以及清除屏障同步硬件内与到达的屏障相关联的的状态。此后,软件可以在框270处继续屏障之后的执行。应理解,尽管图3的实施例中以这种高级别示出,但实施例不限于此。
现在参照图4,示出的是根据本发明的另一个实施例的方法的流程图。更具体地,如图4所示,方法300是根据实施例的用于在核集合引擎内执行屏障操作的方法。因此,方法300可以由硬件电路、固件、软件和/或其组合来执行。
在特定实施例中,CCE可以执行方法300。如所示出的,方法300开始于在核集合引擎中接收屏障到达指示(框310)。应理解,此屏障到达指示被发出以指示在与流水线集合引擎相关联的流水线上执行的给定线程已到达屏障。接下来,在框320处,CCE可以更新活动计数。此活动计数是已到达屏障点的多个线程。控制接下来传递到菱形330以确定活动计数是否等于配置的计数。在实施例中,该配置的计数存储在CCE的MSR中,该配置的计数指示给定线程组的线程数。
如果在菱形330处确定活动计数不等于配置的计数,则控制传递回到以上讨论的框310。否则,当活动计数等于配置的计数时,这表示所有线程已成功到达屏障。此时,CCE可以执行进一步的操作以通知屏障组的线程已经到达屏障,并且因此成功的屏障同步已发生。
取决于配置的模式,该通知可以通过推送模式或轮询模式。因此,控制接下来传递到菱形340以确定CCE是否被配置以用于轮询模式。如果是,则控制传递到框350,其中可以向流水线集合引擎发送屏障完成指示,使得它们可以以低等待时间通知该组的各个线程:所有线程已成功到达屏障。在该轮询模式中,当请求来自线程的轮询请求时,进而接收该屏障完成指示的PCE可以向给定线程提供相同的状态信息。
仍然参考图4,如果确定CCE被配置成用于推送操作模式,则控制替代地转移到框360。在框360处,CCE可以向中断控制器发送中断。更具体地说,该中断指示成功的屏障完成,这进而导致中断处理程序执行以便警告线程关于屏障同步。在一个实施例中,如果需要的话,中断处理程序可以与CCE或PCE交互以执行任何屏障相关或后屏障相关的动作。在另一实施例中,中断处理程序可以作用于软件状态以执行适当的屏障或后屏障相关的动作。又一个实施例可以依赖于由这两种方法形成的混合解决方案。应理解尽管在图4的实施例中以这种较高层次示出,但许多变体和替代方案是可能的。
现在参照图5,示出了根据本发明的又另一个实施例的方法的流程图。更具体地,如图5所示,方法400是根据另一实施例的用于在核集合引擎内执行屏障操作的方法。因此,方法400可以由硬件电路、固件、软件和/或其组合来执行。
在特定实施例中,CCE可以执行方法400。如所示出的,方法400开始于在核集合引擎中接收轮询通知(框410)。此轮询通知用于指示线程已轮询其流水线集合引擎,并已通知所有线程已到达屏障点。接下来,在框420处,CCE可以更新活动计数,即通过递减该计数来更新。控制接下来传递到菱形430以确定活动计数是否等于预定值,例如零。
如果在菱形430处确定活动计数不等于该预定值,则控制传递回到以上讨论的框410。否则,当活动计数等于预定值时,这指示屏障组的所有线程都已被通知所有线程已成功到达屏障,并且因此已发生成功的屏障同步。因此,控制接下来传递到框440,其中完成指示符被解除断言并被发送到框450处的流水线集合引擎,因此它们可以释放该屏障组的相应屏障ID。应理解,尽管在图5中示出了此高级别,但本发明的范围不仅限于这方面。
现在参照图6,示出的是根据本发明的又另一实施例的方法的流程图。如图6所示,方法500是根据实施例的用于在流水线集合引擎内执行屏障操作的方法。因此,方法500可以由硬件电路、固件、软件和/或其组合来执行。
在操作期间,线程可以到达屏障,例如,当它执行第一屏障指令(例如,barrier.init)时。更具体地,该指令是线程已经到达屏障的指示,即与屏障组的第一屏障指令的给定屏障ID相关联的屏障。响应于该第一屏障指令,线程向其对应的流水线集合引擎发送屏障到达指示。因此,如图6所示,流水线集合引擎从线程接收该屏障到达指示(框510)。接下来,控制传递到框520,其中流水线集合引擎将该屏障到达指示发送到核集合引擎(框520)。如上面进一步描述的,核集合引擎可以基于该屏障到达指示来更新(例如,递增)该屏障ID的活动计数。注意,此时,在非阻塞实现中,线程可以在等待屏障组的其他线程到达屏障并且发生屏障同步操作的同时继续执行与屏障无关的指令。还要注意,在响应于接收到barrier.init指令的实施例中,当CCE中的屏障ID MSR未被正确地配置并且未设置PCE ENABLE指示符时,PCE向流水线做出异常响应,指示软件执行了不正确的动作。应理解尽管在图6的实施例中以这种较高层次示出,但许多变体和替代方案是可能的。
现在参照图7,示出了根据本发明的又另一个实施例的方法的流程图。更具体地,图7的方法600是根据实施例的用于执行流水线集合引擎中的屏障操作的方法。因此,方法600可以由硬件电路、固件、软件和/或其组合来执行。
如所示出的,方法600开始于从CCE接收PCE中的屏障完成指示(框610)。应理解,方法600中的该屏障完成指示可以以轮询操作模式进行。在该轮询模式中,当PCE接收到该屏障完成指示时,控制传递到框620,其中它可以例如在PCE的MSR中设置完成指示符,以指示所有线程已完成屏障。更具体地,可以设置与所接收的屏障完成指示的屏障ID相关联的给定完成指示符。下一个控制传递到菱形630以确定PCE是否已从给定线程接收到针对该屏障ID的轮询查询。如果是,则控制传递到框640,其中PCE可以向该线程发送完成通知。应理解,由于PCE和流水线之间的紧密耦合,可以以低等待时间(例如,在单个时钟周期中)发送该完成通知。除了将该完成通知发送到线程之外,PCE可以进一步向CCE发送轮询通知(框650)。如上面进一步描述的,CCE可以基于该轮询通知更新(例如,递减)该屏障ID的活动计数。
仍参考如图7所示,控制接下来传递到菱形660(直接来自菱形630或来自框650)。在菱形660处,确定是否已从CCE接收到针对该屏障ID的完成解除断言指示符。若否,则控制传递回到到上面讨论的菱形630。相反,当接收到该完成解除断言指示符时,控制传递到框670,其中PCE可以重置其完成指示符。因此,此时屏障同步已经完成,并且给定的屏障ID可以重新用于另一个屏障操作。应理解尽管在图7的实施例中以这种较高层次示出,但许多变体和替代方案是可能的。
现在参照图8,示出了根据本发明的实施例的核集合引擎的框图。如图8所示,示出了核集合引擎700。核集合引擎700包括耦合到通信电路720的控制电路710。通过通信电路720,可以接收包括配置信息、状态更新等的传入信息。并且类似地,通信电路720可以传送例如配置信息以配置流水线集合引擎和状态信息。控制电路710可以被配置成用于执行如本文所述的配置操作和屏障同步操作。为此,控制电路710可以被配置成用于在不同的实施例中执行如图3至图7中所示的此类操作。
仍然参考图8,核集合引擎700进一步包括多个MSR 7301-730n,每个MSR用于给定屏障ID的同步操作。如所示出的,每个MSR 730包括多个字段以存储用于执行硬件屏障管理的各种信息。如图所示,这些字段包括用于指示关联MSR的给定屏障组的屏障ID字段、启用字段、完成字段、模式字段、配置的计数字段和活动计数字段。通过存储在这些字段中的信息,可以基于如本文所述的计数信息来配置、启用和控制特定屏障组。应理解尽管在图8的实施例中以这种较高层次示出,但许多变体和替代方案是可能的。
如上所述,硬件屏障电路可以是分层格式,在层级的多个级别具有不同的屏障硬件电路。在图8中,核集合引擎700是核级硬件屏障电路的代表性示例。应理解,在一些实施例中,可以类似地配置其他级别的屏障硬件电路,或者可以将它们实现为核集合引擎700中的组件的子集。例如,在一些实施例中,流水线集合引擎可以实现为与图8所示的基本相同,除了提供较少量的MSR字段和/或控制电路之外。
利用如本文所述的屏障的硬件管理,与在存储器中原子地递增计数值的纯软件方法相比,可以提高性能。此外,实施例实现比同步多个核的单个屏障信号更大的可扩展性。利用本文的实施例,所公开的基于硬件的屏障技术可以缩放到数千个线程,同时在本地级别保持有效,使得编程开销不会超过性能益处。
相比于传统方法,多线程核内的屏障的硬件管理允许减少编程开销。通过向可寻址的MSR提供一次性可配置性以及通过存储的重新,多个并发操作(每个具有唯一的屏障ID)和推送与轮询配置,实施例可以减少软件开销。
与在存储器位置上原子地递增和轮询的传统软件方法相比,实施例可以实现更好的性能。这是因为如本文所述,实施例提供对轮询的快速响应并且不利用长等待时间存储器位置或占用任何高速缓存/一致性带宽。通过跟踪在每个流水线本地和核级别处的状态,可以进一步解决硬件性能瓶颈问题。通过这种方式,来自流水线的轮询请求不必通过核网络行进,从而保留网络带宽并在对轮询的响应中节省多个等待时间周期。实施例还可以随着核内流水线数量的增加而容易地扩展。实施例还可以管理参与者计数大于硬件线程限制的屏障,允许流水线的超额订阅。当由给定硬件线程执行barrier.init指令时,软件和/或硬件机制可以存储任何适当的软件和/或硬件状态,以便由硬件线程执行新的执行线程。新的执行线程可能参与前一个执行线程所参与的相同屏障,从而实现超额订阅。在实施例中,轮询或推送通知机制允许检测屏障完成并启用适当的动作以继续程序执行。实施例可以用于诸如图形分析之类的应用,以实现高度多线程的架构。
在一些实施例中,可以通过在每个流水线处配置本地参与线程计数来进一步节省网络带宽。通过这种方式,可以在通过网络将单个消息发送到核集合引擎之前合并线程。这可能潜在地减少网络上的barrier.init指令,可能显著地减少(例如,减少16倍)。在此类实现中,编程人员可以用配置的计数配置每个PCE处的MSR。此外,与基本情况相反,线程迁移可能不会在核中的流水线之间发生。如果编程人员想要在给定时间点超额订阅具有比硬件可以支持的线程更多线程的核,则这些线程被置于休眠并在可能是不同流水线的空闲硬件资源上被唤醒。
注意,利用这里描述的分层布置,核可以被超额订阅,并且对参与屏障的核内的线程数量的唯一限制是CONFIG_COUNT MSR的容量。
如上所述,用于屏障同步的硬件机制可以集成在处理器或其他SoC内。此类处理器可以包括处理器核,该处理器核可以以不同的方式、出于不同的目的实现在不同的处理器中。例如,这样的核的实施方式可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实施方式可以包括:1)CPU,包括旨在用于通用计算的一个或多个通用有序核和/或用于通用计算的一个或多个通用乱序核;以及2)协处理器,包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,所述计算机系统架构可以包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同封装中的分开的管芯上的协处理器;3)在与CPU相同管芯上的协处理器(在这种情况下,此类协处理器有时被称为专用逻辑(诸如集成图形和/或科学(吞吐量)逻辑),或称为专用核);以及4)片上系统,可包括在相同管芯上的所描述的CPU(有时被称为(多个)应用核或(多个)应用处理器)、上文描述的协处理器和附加功能性。接下来描述示例性核架构,之后是对示例性处理器和计算机架构的描述。
图9A是示出根据本发明的实施例的示例性有序流水线和示例性寄存器重命名、乱序发布/执行流水线的框图。图9B是示出根据本发明的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性寄存器重命名、乱序发布/执行架构核两者。图9A和图9B中的实线框示出了有序流水线和有序核,而虚线框的可选添加示出了寄存器重命名、乱序发布/执行流水线和核。假定有序方面是乱序方面的子集,将描述乱序方面。
在图9A中,处理器流水线900包括获取级902、长度解码级904、解码级906、分配级908、重命名级910、调度(也称为分派或发布)级912、寄存器读取/存储器读取级914、执行级916、写回/存储器写入级918、异常处理级922以及提交级924。注意,如本文所述,在给定实施例中,核可以包括多个处理流水线(诸如流水线900),每个流水线可以耦合到如本文所述的PCE。
图9B示出了处理器核990,该处理器核包括耦合到执行引擎单元950的前端单元930,并且所述执行引擎单元和前端单元都耦合到存储器单元970。核990可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或可替代核类型。作为又另一个选项,核990可以是专用核,如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元930包括耦合至指令高速缓存单元934的分支预测单元932,该指令高速缓存单元934耦合至指令转换后备缓冲器(TLB)936,该指令转换后备缓冲器耦合至指令获取单元938,该指令获取单元938耦合到解码单元940。解码单元940(或解码器)可以对指令进行解码并且生成从原始指令中解码出的、或以其他方式反映原始指令或从原始指令衍生出的一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出。解码单元940可以使用各种不同的机制来实现。合适的机制的示例包括但不限于:查找表、硬件实施方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核990包括存储用于某些宏指令的微代码(例如,存储在解码单元940中或以其他方式存储在前端单元930内)的微代码ROM或其他介质。解码单元940耦合至执行引擎单元950中的重命名/分配器单元952。
执行引擎单元950包括耦合到引退单元954的重命名/分配器单元952和一组一个或(多个)调度器单元956。(多个)调度器单元956表示任何数目的不同调度器,包括保留站、中央指令窗等。(多个)调度器单元956耦合至(多个)物理寄存器堆单元958。(多个)物理寄存器单元958各自表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型,比如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为有待执行的下一指令的地址的指令指针)等。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、以及通用寄存器。(多个)物理寄存器堆单元958与引退单元954重叠以示出可以实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来堆、(多个)历史缓冲区、以及(多个)引退寄存器堆;使用寄存器映射和寄存器池等)。引退单元954和(多个)物理寄存器(多个)堆单元958被耦合到(多个)执行群集960。所述(多个)执行群集960包括一组一个或多个执行单元962和一组一个或多个存储器存取单元964。执行单元962可以执行各种操作(例如,移位、加法、减法、乘法)并对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)进行操作。虽然一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其他实施例可以仅包括执行所有功能的一个执行单元或多个执行单元。(多个)调度器单元956、(多个)物理寄存器文件单元958、以及(多个)执行集群960被示为可能是多个,因为特定实施例为特定类型的数据/操作创建分离的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或各自具有其自己的调度器单元、物理寄存器文件单元和/或执行集群的存储器存取流水线-并且在单独的寄存器存取流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器存取单元964的特定实施例)。还应当理解,在使用单独的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,而其他流水线可以是有序发布/执行。
一组存储器存取单元964被耦合到存储器单元970,该存储器单元包括耦合到数据高速缓存单元974的数据TLB单元972,该数据高速缓存单元被耦合到2级(L2)高速缓存单元976。在一个示例性实施例中,存储器访问单元964可以包括各自耦合至存储器单元970中的数据TLB单元972的加载单元、存储地址单元、以及存储数据单元。指令高速缓存单元934进一步耦合至存储器单元970中的2级(L2)高速缓存单元976。L2高速缓存单元976被耦合到一个或多个其他级的高速缓存并且最终被耦合到主存储器。
作为示例,示例性寄存器重命名、乱序发布/执行核架构可以如下实现流水线900:1)指令获取938执行获取级902和长度解码级904;2)解码单元940执行解码级906;3)重命名/分配器单元952执行分配级908和重命名级910;4)(多个)调度器单元956执行调度级912;5)(多个)物理寄存器(多个)堆单元958和存储器单元970执行寄存器读/存储器读取级914;执行集群960执行执行级916;6)存储器单元970和(多个)物理寄存器(多个)堆单元958执行写回/存储器写入级918;7)各个单元可能涉及异常处理级922;以及8)引退单元954和(多个)物理寄存器(多个)堆单元958执行提交级924。
如图9B进一步所示,PCE 965可以耦合到执行(多个)集群960以提供如本文所述的屏障操作的基于线程的状态。进而,PCE 965耦合到CCE980,CCE 980可以进一步耦合到与核990的其他流水线相关联的附加PCE,以及与其他核的其他CCE接口。
核990可支持一个或多个指令集(例如,x86指令集(具有已经使用较新版本增加的一些扩展)、加利福尼亚州森尼维尔市MIPS技术公司的MIPS指令集、加利福尼亚州森尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON之类的任选的附加扩展)),包括本文中所描述的指令。在一个实施例中,核990包括逻辑,用于支持打包数据指令集扩展(例如,AVX1、AVX2)的,从而允许使用打包数据来执行许多多媒体应用所使用的操作。
应当理解,核可以支持多线程(执行并行的两组或多组并行操作或线程)),并且可以以各种方式来完成所述多线程,所述各种方式包括时间分片多线程、同步多线程(其中,单个物理核为物理核正同步多线程的各线程中的每一个线程提供逻辑核)、或其组合(例如,时间切片的提取和解码以及此后诸如超线程化技术中的同步多线程)。
虽然在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。虽然处理器的所示实施例还包括单独的指令和数据高速缓存单元934/974和共享的L2高速缓存单元976,但替代实施例可以具有用于指令和数据两者的单个内部缓存,例如1级(L1)内部高速缓存、或多级内部高速缓存。在一些实施例中,系统可以包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。可替代地,所有高速缓存都可以在所述核和/或处理器的外部。
图10A和图10B示出了更具体的示例性有序核架构的框图,该核是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核)之一。取决于应用,逻辑块通过具有某些固定功能逻辑、存储器I/O接口和其他必需I/O逻辑的高带宽互连网络(例如,环形网络)进行通信。
图10A是根据本发明的实施例的单个处理器核、和其与管芯上互连网络1002的连接以及其2级(L2)高速缓存1004的本地子集的框图。在一个实施例中,指令解码器1000支持具有打包数据指令集扩展的x86指令集。L1高速缓存1006允许对标量和向量单元中的高速缓存存储器的低等待时间访问。虽然在一个实施例中(为了简化设计),标量单元1008和向量单元1010使用分开的寄存器组(分别为标量寄存器1012和向量寄存器1014),并且在它们之间传送的数据被写入存储器并且然后从1级(L1)高速缓存1006中回读,但本发明的替代实施例可以使用不同的途径(例如,使用单个寄存器组或者包括允许数据在两个寄存器堆之间传送而未被写入和回读的通信路径)。
L2高速缓存1004的本地子集是全局L2高速缓存的一部分,该全局L2高速缓存被划分为多个单独的本地子集,每个处理器核一个本地子集。每个处理器核具有到其本身的L2高速缓存1004的本地子集的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存子集1004中并且可以被快速访问,与其他处理器核并行地访问其本地L2的高速缓存子集。由处理器核写入的数据被存储在其本身的L2高速缓存子集1004中,并且如果需要,则从其他子集冲刷掉。所述环形网络确保共享数据的相干性。所述环形网络是双向的,允许代理(诸如处理器核、L2高速缓存和其他逻辑块)在芯片内彼此通信。每个环形数据路径在每个方向为1012位宽。
图10B是根据本发明的实施例的图10A中的处理器核的一部分的放大视图。图10B包括L1高速缓存1004的L1数据高速缓存1006A部分、以及关于向量单元1010和向量寄存器1314的更多细节。具体地,向量单元1010是16位宽向量处理单元(VPU)(参见16位宽ALU1028),所述向量处理单元执行整数、单精度浮点和双精度浮点指令中的一者或多者。VPU支持利用混合单元1020对寄存器输入进行混合、利用数字转换单元1,022A-B进行数字转换、以及利用复制单元1024对存储器输入进行复制。写掩码寄存器1026允许预测结果向量写入。
图11是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器1100的框图。图11中的实线框展示了具有单个核1102A、系统代理单元1110、一组一个或多个总线控制器单元1116的处理器1100,而虚线框的可选添加展示了具有多个核1102A-N、系统代理单元1110中的一组一个或多个集成存储器控制器单元以及专用逻辑1108的替代处理器1100。
因此,处理器1100的不同实施方式可以包括:1)具有专用逻辑1108的CPU,其集成有图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核),并且核1,102A-N是一个或多个通用核(例如,通用有序核、通用乱序核、两者的组合);2)具有核1,102A-N的协处理器,其是主要用于图形和/或科学(吞吐量)的大量的专用核;以及3)具有核1,102A-N的协处理器,其是大量的通用有序核。因此,处理器1100可以是通用处理器、协处理器或专用处理器,诸如,例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(MIC)协处理器(包括30个或更多个核)、嵌入式处理器等。所述处理器可以在一个或多个芯片上实现。处理器1100可以是一个或多个基底的一部分和/或可以使用诸如例如BiCMOS、CMOS或NMOS的多种处理技术中的任何一种技术在一个或多个基底上实施。
存储器层级结构包括核内的一个或多个级别的高速缓存单元1104A-N、一组或者一个或多个共享高速缓存单元1106、以及外部存储器(未示出),该外部存储器耦合至所述一组集成存储器控制器单元1114。所述一组共享高速缓存单元1106可以包括一个或多个中级高速缓存(诸如2级(L2)、3级(L3)、4级(L4)、或其他级别的高速缓存、终极高速缓存(LLC)、和/或其组合)。虽然在一个实施例中,基于环的互连单元1112将互连专用逻辑1108、所述一组共享高速缓存单元1106、以及系统代理单元1110/(多个)集成存储器控制器单元1114互连,但替代实施例可以使用任何数量的用于互连此类单元的已知技术。在一个实施例中,在一个或多个高速缓存单元1106与核1102A-N之间保持一致性。
在一些实施例中,所述核1102A-N中的一个或多个核能够进行多线程。为此,核1102A-N可以包括多个对应的PCE和至少一个CCE,在图11中共同地展示为PCE/CCE 1105A-N,以执行如本文所述的屏障同步操作的硬件管理。系统代理单元1110包括协调和操作核1102A-N的那些组件。系统代理单元1110可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调节核1,102A-N和集成图形逻辑1108的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
就架构指令集而言,核1,102A-N可以是同构的或异构的;也就是说,核1,102A-N中的两个或更多个核能够执行相同的指令集,而其他核可能仅能够执行该指令集的子集或不同的指令集。
图12至图15是示例性计算机架构的框图;本领域已知的用于膝上型计算机、台式机,手持PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、以及各种其他电子设备的其他系统设计和配置也是合适的。一般而言,能够纳入本文中所公开的处理器和/或其他执行逻辑的多个系统和电子设备一般都是合适的。
现在参考图12,示出了根据本发明的一个实施例的系统1500的框图。系统1200可以包括耦合到控制器中枢1210的一个或多个处理器1215、1220。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢(GMCH)1290和输入/输出中枢(IOH)1250(其可以在单独的芯片上);GMCH 1290包括用于控制所耦合的存储器内的SRP操作的存储器控制器和用于供存储器1240和协处理器1245耦合的图形控制器;IOH 1250将输入/输出(I/O)设备1260耦合到GMCH 1290。可替代地,存储器和图形控制器中的一者或两者被集成在处理器(如本文所述)内,存储器1240和协处理器1245通过IOH 1250直接耦合到单个芯片中的处理器1210和控制器中枢1220。
图12中用虚线表示附加处理器1215的可选性质。每个处理器1210、1215可以包括本文描述的一个或多个处理核,并且可以是处理器1100的某个版本。
存储器1240可以例如是动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一个实施例,控制器中枢1220经由多点总线(例如,前端总线(FSB)、如快速路径互连(QPI)等点对点接口或类似连接件1295)与(多个)处理器1210、1215通信。
在一个实施例中,协处理器1245是专用处理器,诸如,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中枢1220可以包括集成图形加速器。
在包括架构、微架构、热学、功率消耗特性等等的指标度量范围方面,在物理资源1210、1215之间可以存在各种差异。
在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。协处理器指令可以被嵌入在所述指令中。处理器1210将这些协处理器指令识别为应由附连的协处理器1245执行的类型。相应地,处理器1210将协处理器总线或其他互连上的这些协处理器指令(或表示协处理器指令的控制信号)发布到协处理器1245。(多个)协处理器1245接受并执行接收到的协处理器指令。
现在参考图13,示出了根据本发明的实施例的第一更具体的示例性系统1600的框图。如图13所示,多处理器系统1300是点对点互连系统,且包括经由点对点互连1350耦合的第一处理器1370和第二处理器1380。处理器1370和1380中的每一个处理器可以是处理器1100的某个版本。在本发明的一个实施例中,处理器1370和1380分别是处理器1210和1215,而协处理器1338是协处理器1245。在另一实施例中,处理器1370和1380分别是处理器1210和协处理器1245。
处理器1370和1380被示出为分别包括集成存储器控制器(IMC)单元1372和1382。处理器1370还包括作为其总线控制器单元的一部分的点对点(P-P)接口1376和1378;类似地,第二处理器1380包括P-P接口1386和1388。处理器1370、1380可以使用P-P接口电路1378、1388经由点对点(P-P)接口1350交换信息。如图13中所示出的,IMC 1372和1382将处理器耦合到对应存储器、即存储器1332和存储器1334上,所述存储器可以是主存储器的本地附接到对应处理器上的部分。
处理器1370、1380可以各自使用点对点接口电路1376、1394、1386、1398经由单独的P-P接口1352、1354来与芯片组1390交换信息。芯片组1390可以可选地经由高性能接口1339与协处理器1338交换信息。在一个实施例中,协处理器1338是专用处理器,诸如,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可以包括在任一处理器中或者在两个处理器外部但经由P-P互连与所述处理器相连接,使得如果处理器被置于低功耗模式中,则任一或两个处理器的局部高速缓存信息可以被存储在所述共享高速缓存中。
芯片组1390可以经由接口1396耦合至第一总线1316。在一个实施例中,第一总线1316可以是外围组件互连(PCI)总线,或如PCI快速总线或另一种第三代I/O互连总线等总线,尽管本发明的范围不限于此。
如图13中所示出的,不同I/O设备1314可以连同总线桥接器1318耦合到第一总线1316,所述总线桥接器可以将第一总线1316耦合到第二总线1320。在一个实施例中,一个或(多个)附加处理器1315(例如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如,例如,图形加速器或数字信号处理(DSP)单元)、字段可编程门阵列、或任何其他处理器)被耦合到第一总线1316。在一个实施例中,第二总线1320可以是低引脚数(LPC)总线。在一个实施例中,各个设备可以耦合至第二总线1320,所述设备包括例如键盘和/或鼠标1322、多个通信设备1327、以及可以包括指令/代码数据1330的存储单元1328(如磁盘驱动器或者其他大容量存储设备)。进一步地,音频I/O 1324可以耦合至第二总线1320。应注意的是,其他架构是可能的。例如,替代图13的点对点架构,系统可以实施多点分支总线或其他这样的架构。
现在参考图14,示出了根据本发明的实施例的第二更具体的示例性系统1400的框图。图13和图14中的相同元件具有相同的参考数字,并且已经从图14中省略了图13的某些方面以避免使图14的其他方面模糊。
图14展示了处理器1370、1380可以分别包括集成存储器和I/O控制逻辑(“CL”)1372和1382。因此,CL 1372、1382包括集成存储器控制器单元并且包括I/O控制逻辑。图14示出了不仅存储器1332、1334耦合到CL 1372、1382,而且I/O设备1414也耦合到控制逻辑1372、1382。传统I/O设备1415被耦合至芯片组1390。
现在参考图15,示出了根据本发明的实施例的SoC 1500的框图。图11中的相似元件具有相同的参考数字。此外,虚线框是关于更先进的SoC的可选特征。在图15中,(多个)互连单元1502被耦合到:应用处理器1510,包括一组一个或多个核1102A-N(包括组成高速缓存单元1104A-N和PCE/CCE1105A-N)以及(多个)共享高速缓存单元1106;系统代理单元1110;(多个)总线控制器单元1116;(多个)集成存储器控制器单元1114;一组一个或多个协处理器1520,其可以包括集成图形逻辑、图像处理器、音频处理器、及视频处理器;静态随机存取存储器(SRAM)单元1530;直接存储器存取(DMA)单元1532;以及显示单元1540,用于耦合至一个或多个外部显示器。在一个实施例中,所述(多个)协处理器1520是专用处理器,诸如,例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
可以以硬件、软件、固件或此类实现方法的组合来实现本文公开的机制的实施例。本发明的实施例可以被实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。
诸如图13所示的代码1330的程序代码可以被应用于输入指令以执行本文所描述的功能并且生成输出信息。输出信息能够以已知的方式应用于一个或多个输出设备。出于此应用的目的,处理系统包括具有处理器(诸如,例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器)的任何系统。
程序代码可以以高级程序或面向对象的编程语言来实现以便与处理系统通信。如果期望的话,程序代码还可以以汇编或机器语言来实现。事实上,本文描述的机制的保护范围不限于任何特定的编程语言。在任何情况下,所述语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可通过存储在机器可读介质上的代表性指令来实现,该机器可读介质表示处理器内的各种逻辑,这些指令在由机器读取时使得该机器制备逻辑以执行本文中所描述的技术。称为“IP核”的这些表示可被存储在有形的机器可读介质上且供应给各种客户或制造设施以加载到实际上制作逻辑或处理器的制备机器。
这种机器可读存储介质可以包括但不限于:由机器或设备制造或形成的物品的非瞬态有形安排,包括如硬盘等存储介质;任何其他类型的盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)和磁光盘;半导体设备,例如只读存储器(ROM);随机存取存储器(RAM),例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM);可擦除可编程只读存储器(EPROM);闪存存储器;电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或者适合于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括包含指令或包含设计数据(比如,硬件描述语言(HDL))的非瞬态有形机器可读介质,所述非暂态有形机器可读介质限定本文描述的结构、电路、设备、处理器和/或系统特征。这种实施例也可以被称为程序产品。
在一些情况下,可以使用指令转换器将指令从源指令集转换到目标指令集。例如,指令转换器可以将指令转换(例如,使用静态二进制转换、包括动态编译的动态二进制转换)、变形、仿真、或以其他方式转换为有待由核处理的一个或多个其他指令。指令转换器能够以软件、硬件、固件或其组合来实现。指令转换器可以位于处理器上、处理器外、或者部分在处理器上并且部分在处理器外。
图16是根据本发明的实施例的对比使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示实施例中,指令转换器是软件指令转换器,然而可替代地,指令转换器能够以软件、固件、硬件或其各种组合来实现。图16示出了可以使用x86编译器1604来编译高级语言1602中的程序以生成x86二进制代码1606,所述x86二进制代码1606可以由具有至少一个x86指令集核1616的处理器本机执行。具有至少一个x86指令集核的处理器1616表示可以通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核的英特尔处理器基本相同功能的任何处理器:(1)英特尔x86指令集核的指令集的实质部分、或(2)目标代码版本的应用或目标是在具有至少一个x86指令集核的英特尔处理器上运行的其他软件,以便实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1604表示可操作用于生成x86二进制代码1606(例如,目标代码)的编译器,所述x86二进制代码可以在具有或不具有附加链接处理的情况下在具有至少一个x86指令集核1616的处理器上执行。类似地,图16示出了可以使用替代性指令集编译器1602来编译高级语言1608的程序以生成替代性指令集二进制代码1610,可以由不具有至少一个x86指令集核的处理器1614(例如,具有执行加利福尼亚州桑尼维尔的MIPS技术公司的MIPS指令集和/或执行加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集的多个核的处理器)本机执行所述替代性指令集二进制代码。指令转换器1612用于将x86二进制代码1606转换为可由不具有x86指令集核1614的处理器本机执行的代码。该转换后的代码不太可能与替代指令集二进制代码1610相同,因为能够实现这一点的指令转换器很难制作;但是,转换后的代码将完成一般操作,并由替换指令集中的指令组成。因此,指令转换器1612表示通过仿真、模拟或任何其他过程允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1606的软件、固件、硬件或其组合。
以下示例涉及进一步的实施例。
在一个示例中,处理器包括第一核,该第一核包括:多个执行流水线,每个执行流水线执行一个或多个线程的指令;多个流水线屏障电路,耦合到多个执行流水线,多个流水线屏障电路中的每一个流水线屏障电路与多个执行流水线中的一个执行流水线相关联,以维持多个屏障组的状态信息,多个屏障组中的每一个屏障组由至少两个线程形成;以及核屏障电路,用于控制多个流水线屏障电路的操作,并且当多个屏障组中的第一屏障组已到达第一屏障时,通知多个流水线屏障电路。
在示例中,处理器进一步包括:本地网络,用于将多个流水线屏障电路耦合到核屏障电路。
在示例中,核屏障电路用于接收配置消息以对第一屏障组的多个流水线屏障电路进行编程,该配置消息包括第一屏障组的至少两个线程的计数。
在示例中,第一屏障组的至少两个线程的第一线程用于在执行第一屏障指令时到达第一屏障,第一屏障指令用于使得第一线程发送完成通知到核屏障电路。
在示例中,核屏障电路用于响应于完成通知来更新与第一屏障组相关联的第一计数。
在示例中,核屏障电路用于当第一计数等于对应于第一屏障组的至少两个线程的计数的配置值时,确定第一屏障组的至少两个线程已到达第一屏障。
在示例中,响应于确定第一屏障组的至少两个线程已经到达第一屏障,核屏障电路用于向多个流水线屏障电路指示第一屏障组已到达同步点。
在示例中,响应于第二屏障指令,第一线程用于轮询多个流水线屏障电路中的第一流水线屏障电路以确定第一屏障组是否已到达同步点。
在示例中,第一线程用于响应于确定第一屏障组尚未到达同步点,执行与第一屏障不相关的一个或多个指令。
在示例中,核屏障电路被耦合到第二核的第二核屏障电路,该第二核耦合到第一核,以使第一屏障组能够包括至少一个在第一核上执行的第一线程以及至少一个在第二个核上执行的第二线程。
在示例中,核屏障电路用于耦合到第二核的第二核屏障电路,以使第一屏障组能够包括至少一个在第一核上执行的第一线程和至少一个在第二核上执行的第二线程,以使得能够发生跨插槽屏障操作,第二核包括在第二处理器插槽中,第一核包括在第一处理器插槽中。
在另一示例中,一种方法包括:在处理器的第一核的核屏障电路中接收来自第一核的第一流水线屏障电路的屏障到达指示,该屏障到达指示用于指示具有多个线程的第一屏障组的第一线程已到达第一屏障;基于该屏障到达指示,经由核屏障电路来更新第一屏障组的活动计数;在核屏障电路中确定活动计数是否对应于第一屏障组的配置的计数;并且响应于确定活动计数对应于配置的计数,通知第一屏障组的多个线程以下情况:所述多个线程已经到达第一屏障。
在示例中,通知多个线程包括向包括第一流水线屏障电路的多个流水线屏障电路发送屏障完成指示,其中多个流水线屏障电路用于通知多个线程。
在示例中,通知多个线程包括向中断控制器发送中断以使得中断控制器发出中断以通知多个线程。
在示例中,该方法进一步包括在核屏障电路中接收来自处理器的第二核的第二流水线屏障电路的第二屏障到达指示,第二屏障到达指示用于指示第一屏障组的第二线程已到达第一屏障,第二线程在第二核上执行。
在示例中,该方法进一步包括在核屏障电路中接收来自第二处理器的第一核的第二流水线屏障电路的第二屏障到达指示,该第二屏障到达指示用于指示第一屏障组的第二线程已到达第一屏障,第二线程用于在第二处理器的第一核上执行,其中第一处理器插槽包括处理器,并且第二处理器插槽包括第二处理器。
在另一个示例中,一种包括指令的计算机可读介质用于执行以上示例中任一项所述的方法。
在另一个示例中,一种包括数据的计算机可读介质用于由至少一台机器使用以便制造用于执行以上示例中任一项所述的方法的至少一个集成电路。
在另一个示例中,一种设备包括用于执行以上示例中任一项所述的方法的装置。
在另一示例中,系统包括:第一处理器,具有多个第一核,所述多个第一核中的每一个第一核包括多个执行流水线,以及分层屏障电路,用于监视具有多个线程的屏障组的操作,分层屏障电路包括:第一多个屏障电路,用于向多个执行流水线提供同步状态信息;以及第二屏障电路,用于向第一多个屏障电路提供同步状态信息;以及存储器,耦合到第一处理器。
在实施例中,该方法进一步包括:第一处理器插槽,包括第一处理器;以及第二处理器插槽,包括第二处理器,其中屏障组的多个线程中的至少一个线程用于在第二处理器插槽上执行。
在示例中,第二屏障电路用于控制第一多个屏障电路的操作,并且用于当屏障组已经到达第一屏障时通知第一多个屏障电路。
在示例中,屏障组的多个线程中的第一线程用于在执行第一屏障指令时到达第一屏障,第一屏障指令用于使第一线程向第二屏障电路发送完成通知,其中响应于确定屏障组的多个线程已到达第一屏障,核屏障电路用于向第一多个屏障电路指示屏障组已到达同步点,并且响应于第二屏障指令,第一线程用于轮询第一多个屏障电路的第一屏障电路以确定屏障组是否已到达同步点。
应当理解,以上示例的各种组合是可能的。
注意,术语“电路”和“电路系统”在本文中可互换使用。如本文中所使用的,这些术语和术语“逻辑”用于单独或以任何组合的方式指代模拟电路系统、数字电路系统、硬接线电路系统、可编程电路系统、处理器电路系统、微控制器电路系统、硬件逻辑电路系统、状态机电路系统和/或任何其他类型的物理硬件组件。实施例可以用于多种不同类型的系统中。例如,在一个实施例中,通信设备可以被布置为执行本文中所描述的各种方法和技术。当然,本发明的范围不限于通信设备,而是,其他实施例可以涉及用于处理指令的其他类型的设备,或者包括指令的一种或多种机器可读介质,所述指令响应于在计算设备上被执行而使所述设备执行本文中所描述的方法和技术中的一者或多者。
实施例可以在代码中实现并且可存储在非瞬态存储介质上,所述非瞬态存储介质具有存储在其上的指令,所述指令可用于对系统编程来执行所述指令。实施例还可以在数据中实现并且可存储在非瞬态存储介质上,所述非瞬态存储介质如果由至少一台机器使用则使所述至少一台机器制造用于执行一个或多个操作的至少一个集成电路。仍进一步实施例可以在包括信息的计算机可读存储介质中实现,所述计算机可读存储介质当被制造在SoC或其他处理器中时将配置SoC或其他处理器执行一个或多个操作。存储介质可以包括但不限于任何类型的磁盘,包括:软盘、光盘、固态驱动器(SSD)、压缩盘只读存储器(CD-ROM)、可复写压缩盘(CD-RW)和磁光盘;诸如只读存储器(ROM)等半导体设备、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等随机存取存储器(RAM);可擦可编程只读存储器(EPROM);闪存;电可擦可编程只读存储器(EEPROM);磁卡或光卡;或者适合于存储电子指令的任何其他类型的介质。
虽然已经关于有限数量的实施例对本发明进行了描述,但是本领域技术人员将理解来自其中的许多修改和变体。旨在使得所附权利要求书覆盖所有此类落在本发明的真实精神和范围内的修改和变体。
Claims (25)
1.一种处理器,包括:
第一核,包括:
多个执行流水线,每个执行流水线用于执行一个或多个线程的指令;
多个流水线屏障电路,所述多个流水线屏障电路耦合到所述多个执行流水线,所述多个流水线屏障电路中的每一个流水线屏障电路与所述多个执行流水线中的一个执行流水线相关联,以维持多个屏障组的状态信息,所述多个屏障组中的每一个屏障组由至少两个线程形成;以及
核屏障电路,用于控制所述多个流水线屏障电路的操作,并且用于当所述多个屏障组中的第一屏障组已到达第一屏障时,通知所述多个流水线屏障电路。
2.如权利要求1所述的处理器,进一步包括:本地网络,用于将所述多个流水线屏障电路耦合到所述核屏障电路。
3.如权利要求1所述的处理器,其特征在于,所述核屏障电路用于接收配置消息以对所述第一屏障组的所述多个流水线屏障电路进行编程,所述配置消息包括所述第一屏障组的所述至少两个线程的计数。
4.如权利要求3所述的处理器,其特征在于,所述第一屏障组的所述至少两个线程的第一线程用于在执行第一屏障指令时到达所述第一屏障,所述第一屏障指令用于使得所述第一线程发送完成通知到所述核屏障电路。
5.如权利要求4所述的处理器,其特征在于,所述核屏障电路用于响应于所述完成通知来更新与所述第一屏障组相关联的第一计数。
6.如权利要求5所述的处理器,其特征在于,所述核屏障电路用于当所述第一计数等于对应于所述第一屏障组的所述至少两个线程的计数的配置值时,确定所述第一屏障组的所述至少两个线程已到达所述第一屏障。
7.如权利要求6所述的处理器,其特征在于,响应于确定所述第一屏障组的所述至少两个线程已经到达所述第一屏障,所述核屏障电路用于向所述多个流水线屏障电路指示所述第一屏障组已到达同步点。
8.如权利要求7所述的处理器,其特征在于,响应于第二屏障指令,所述第一线程用于轮询所述多个流水线屏障电路中的第一流水线屏障电路以确定所述第一屏障组是否已到达所述同步点。
9.如权利要求7所述的处理器,其特征在于,所述第一线程用于响应于确定所述第一屏障组尚未到达所述同步点,执行与所述第一屏障不相关的一个或多个指令。
10.如权利要求1所述的处理器,其特征在于,所述核屏障电路被耦合到第二核的第二核屏障电路,所述第二核耦合到所述第一核,以使所述第一屏障组能够包括至少一个用于在所述第一核上执行的第一线程以及至少一个用于在所述第二核上执行的第二线程。
11.如权利要求1所述的处理器,其特征在于,所述核屏障电路用于耦合到第二核的第二核屏障电路,以使所述第一屏障组能够包括至少一个用于在所述第一核上执行的第一线程和至少一个用于在所述第二核上执行的第二线程,以使得能够发生跨插槽屏障操作,所述第二核包括在第二处理器插槽中,所述第一核包括在第一处理器插槽中。
12.一种方法,包括:
在处理器的第一核的核屏障电路中接收来自所述第一核的第一流水线屏障电路的屏障到达指示,所述屏障到达指示用于指示具有多个线程的第一屏障组的第一线程已到达第一屏障;
基于所述屏障到达指示,经由所述核屏障电路来更新所述第一屏障组的活动计数;
在所述核屏障电路中确定所述活动计数是否对应于所述第一屏障组的配置计数;以及
响应于确定活动计数对应于所述配置计数,通知所述第一屏障组的所述多个线程以下情况:所述多个线程已经到达所述第一屏障。
13.如权利要求12所述的方法,其特征在于,通知所述多个线程包括向包括所述第一流水线屏障电路的多个流水线屏障电路发送屏障完成指示,其中所述多个流水线屏障电路用于通知所述多个线程。
14.如权利要求12所述的方法,其特征在于,通知所述多个线程包括向中断控制器发送中断以使得所述中断控制器发出中断以便通知所述多个线程。
15.如权利要求12所述的方法,进一步包括:在所述核屏障电路中接收来自所述处理器的第二核的第二流水线屏障电路的第二屏障到达指示,所述第二屏障到达指示用于指示所述第一屏障组的第二线程已到达所述第一屏障,所述第二线程用于在所述第二核上执行。
16.如权利要求12所述的方法,进一步包括:在所述核屏障电路中接收来自第二处理器的第一核的第二流水线屏障电路的第二屏障到达指示,所述第二屏障到达指示用于指示所述第一屏障组的第二线程已到达所述第一屏障,所述第二线程用于在所述第二处理器的所述第一核上执行,其中第一处理器插槽包括所述处理器,并且第二处理器插槽包括所述第二处理器。
17.一种计算机可读存储介质,包括计算机可读指令,所述指令当被执行时用于实现如权利要求12至16中任一项所述的方法。
18.一种系统,包括:
第一处理器,具有多个第一核,所述多个第一核中的每一个第一核包括多个执行流水线以及分层屏障电路,该分层屏障电路用于监视具有多个线程的屏障组的操作,所述分层屏障电路包括:第一多个屏障电路,用于向所述多个执行流水线提供同步状态信息;以及第二屏障电路,用于向所述第一多个屏障电路提供所述同步状态信息;以及
存储器,耦合到所述第一处理器。
19.如权利要求18所述的系统,进一步包括:
第一处理器插槽,所述第一处理器插槽包括所述第一处理器;以及
第二处理器插槽,所述第二处理器插槽包括第二处理器,其中所述屏障组的所述多个线程中的至少一个线程用于在所述第二处理器插槽上执行。
20.如权利要求18所述的系统,其特征在于,所述第二屏障电路用于控制所述第一多个屏障电路的操作,并且用于当所述屏障组已经到达第一屏障时通知所述第一多个屏障电路。
21.如权利要求20所述的系统,其特征在于,所述屏障组的所述多个线程中的第一线程用于在执行第一屏障指令时到达所述第一屏障,所述第一屏障指令用于使得所述第一线程向所述第二屏障电路发送完成通知,其中响应于确定所述屏障组的所述多个线程已到达所述第一屏障,所述核屏障电路用于向所述第一多个屏障电路指示所述屏障组已到达同步点,并且响应于第二屏障指令,所述第一线程用于轮询所述第一多个屏障电路的第一屏障电路以确定所述屏障组是否已到达所述同步点。
22.一种处理器,包括:
第一核装置,包括:
多个执行流水线装置,每个执行流水线装置用于执行一个或多个线程的指令;
多个流水线屏障装置,所述多个流水线屏障装置耦合到所述多个执行流水线装置,所述多个流水线屏障装置中的每一个流水线屏障装置与所述多个执行流水线装置中的一个执行流水线装置相关联,以维持多个屏障组的状态信息,所述多个屏障组中的每一个屏障组由至少两个线程形成;以及
核屏障装置,用于控制所述多个流水线屏障装置的操作,并且用于当所述多个屏障组中的第一屏障组已到达第一屏障时,通知所述多个流水线屏障装置。
23.如权利要求22所述的处理器,进一步包括:本地网络装置,用于将所述多个流水线屏障装置耦合到所述核屏障装置。
24.如权利要求22所述的处理器,其特征在于,所述核屏障装置用于接收配置消息以对所述第一屏障组的所述多个流水线屏障装置进行编程,所述配置消息包括所述第一屏障组的所述至少两个线程的计数。
25.如权利要求24所述的处理器,其特征在于,所述第一屏障组的所述至少两个线程的第一线程用于在执行第一屏障指令时到达所述第一屏障,所述第一屏障指令用于使得所述第一线程发送完成通知到所述核屏障装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/019,685 | 2018-06-27 | ||
US16/019,685 US11061742B2 (en) | 2018-06-27 | 2018-06-27 | System, apparatus and method for barrier synchronization in a multi-threaded processor |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110647404A true CN110647404A (zh) | 2020-01-03 |
Family
ID=66630169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910447713.5A Pending CN110647404A (zh) | 2018-06-27 | 2019-05-27 | 用于多线程处理器中的屏障同步的系统、设备和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11061742B2 (zh) |
EP (1) | EP3588297A1 (zh) |
CN (1) | CN110647404A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114706813A (zh) * | 2022-05-05 | 2022-07-05 | 上海壁仞智能科技有限公司 | 多核异构片上系统、非对称同步方法、计算设备和介质 |
CN114896079A (zh) * | 2022-05-26 | 2022-08-12 | 上海壁仞智能科技有限公司 | 指令执行方法、处理器和电子装置 |
CN115016953A (zh) * | 2022-06-02 | 2022-09-06 | 上海壁仞智能科技有限公司 | 存储有程序的机器可读介质、计算机系统和一种操作方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11106494B2 (en) * | 2018-09-28 | 2021-08-31 | Intel Corporation | Memory system architecture for multi-threaded processors |
GB2580428B (en) * | 2019-01-11 | 2021-08-25 | Graphcore Ltd | Handling exceptions in a machine learning processor |
US20210382717A1 (en) * | 2020-06-03 | 2021-12-09 | Intel Corporation | Hierarchical thread scheduling |
US11977895B2 (en) | 2020-06-03 | 2024-05-07 | Intel Corporation | Hierarchical thread scheduling based on multiple barriers |
US11790590B2 (en) | 2021-03-31 | 2023-10-17 | Advanced Micro Devices, Inc. | Multi-accelerator compute dispatch |
US11892972B2 (en) * | 2021-09-08 | 2024-02-06 | Arm Limited | Synchronization mechanisms for a multi-core processor using wait commands having either a blocking or a non-blocking state |
CN113535664B (zh) * | 2021-09-14 | 2021-12-31 | 深圳兆瑞优品科技有限公司 | 一种基于数据页预加载的数据库数据同步方法 |
US20230205608A1 (en) * | 2021-12-27 | 2023-06-29 | Advanced Micro Devices, Inc. | Hardware supported split barrier |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7100021B1 (en) * | 2001-10-16 | 2006-08-29 | Cisco Technology, Inc. | Barrier synchronization mechanism for processors of a systolic array |
US7937709B2 (en) | 2004-12-29 | 2011-05-03 | Intel Corporation | Synchronizing multiple threads efficiently |
US20100110089A1 (en) * | 2008-11-06 | 2010-05-06 | Via Technologies, Inc. | Multiple GPU Context Synchronization Using Barrier Type Primitives |
US20120179896A1 (en) | 2011-01-10 | 2012-07-12 | International Business Machines Corporation | Method and apparatus for a hierarchical synchronization barrier in a multi-node system |
US8601485B2 (en) * | 2011-05-25 | 2013-12-03 | Arm Limited | Data processing apparatus and method for processing a received workload in order to generate result data |
US9652300B2 (en) * | 2012-06-28 | 2017-05-16 | Intel Corporation | Systems, methods, and computer program products for preemption of threads at a synchronization barrier |
US9710275B2 (en) * | 2012-11-05 | 2017-07-18 | Nvidia Corporation | System and method for allocating memory of differing properties to shared data objects |
US9442755B2 (en) * | 2013-03-15 | 2016-09-13 | Nvidia Corporation | System and method for hardware scheduling of indexed barriers |
US9405724B2 (en) * | 2013-06-28 | 2016-08-02 | Intel Corporation | Reconfigurable apparatus for hierarchical collective networks with bypass mode |
US9477628B2 (en) * | 2013-09-28 | 2016-10-25 | Intel Corporation | Collective communications apparatus and method for parallel systems |
CN104035751B (zh) * | 2014-06-20 | 2016-10-12 | 深圳市腾讯计算机系统有限公司 | 基于多图形处理器的数据并行处理方法及装置 |
US10191748B2 (en) | 2015-11-30 | 2019-01-29 | Intel IP Corporation | Instruction and logic for in-order handling in an out-of-order processor |
GB2569271B (en) * | 2017-10-20 | 2020-05-13 | Graphcore Ltd | Synchronization with a host processor |
-
2018
- 2018-06-27 US US16/019,685 patent/US11061742B2/en active Active
-
2019
- 2019-05-21 EP EP19175809.3A patent/EP3588297A1/en not_active Ceased
- 2019-05-27 CN CN201910447713.5A patent/CN110647404A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114706813A (zh) * | 2022-05-05 | 2022-07-05 | 上海壁仞智能科技有限公司 | 多核异构片上系统、非对称同步方法、计算设备和介质 |
CN114896079A (zh) * | 2022-05-26 | 2022-08-12 | 上海壁仞智能科技有限公司 | 指令执行方法、处理器和电子装置 |
CN114896079B (zh) * | 2022-05-26 | 2023-11-24 | 上海壁仞智能科技有限公司 | 指令执行方法、处理器和电子装置 |
CN115016953A (zh) * | 2022-06-02 | 2022-09-06 | 上海壁仞智能科技有限公司 | 存储有程序的机器可读介质、计算机系统和一种操作方法 |
CN115016953B (zh) * | 2022-06-02 | 2024-03-22 | 上海壁仞智能科技有限公司 | 存储有程序的机器可读介质、计算机系统和一种操作方法 |
Also Published As
Publication number | Publication date |
---|---|
US20200004602A1 (en) | 2020-01-02 |
US11061742B2 (en) | 2021-07-13 |
EP3588297A1 (en) | 2020-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110647404A (zh) | 用于多线程处理器中的屏障同步的系统、设备和方法 | |
JP7052170B2 (ja) | プロセッサおよびシステム | |
CN105144082B (zh) | 基于平台热以及功率预算约束,对于给定工作负荷的最佳逻辑处理器计数和类型选择 | |
US20190012266A1 (en) | Apparatuses and methods for a processor architecture | |
US9448940B2 (en) | Multiple core computer processor with globally-accessible local memories | |
CN108885586B (zh) | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 | |
EP3588288B1 (en) | A multithreaded processor core with hardware-assisted task scheduling | |
US9361233B2 (en) | Method and apparatus for shared line unified cache | |
CN115454586A (zh) | 用于异构计算的系统、方法和装置 | |
US9575806B2 (en) | Monitoring accesses of a thread to multiple memory controllers and selecting a thread processor for the thread based on the monitoring | |
CN108369553B (zh) | 用于范围保护的系统、方法和装置 | |
CN106293894B (zh) | 执行事务性功率管理的硬件设备和方法 | |
US10241885B2 (en) | System, apparatus and method for multi-kernel performance monitoring in a field programmable gate array | |
CN111880925A (zh) | 用于提供带外处理器遥测的技术 | |
US9886396B2 (en) | Scalable event handling in multi-threaded processor cores | |
EP2860643A2 (en) | Collective communications apparatus and method for parallel systems | |
JP2016532233A (ja) | アドレスへの書き込みに対する監視命令を実行するスケーラブル機構 | |
CN112148106A (zh) | 用于处理器的混合预留站的系统、装置和方法 | |
US20230418750A1 (en) | Hierarchical core valid tracker for cache coherency | |
US20240004808A1 (en) | Optimized prioritization of memory accesses | |
US20180349137A1 (en) | Reconfiguring a processor without a system reset |
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 |