用于支持任务间通信的基于硬件的原子操作制造技术

技术编号:13974625 阅读:53 留言:0更新日期:2016-11-11 04:35
本发明专利技术描述用于支持并行计算系统中的任务间通信的技术。所述用于支持任务间通信的技术可使用基于硬件的原子操作来维持管线的状态。管线可指代先入先出FIFO组织的缓冲器,其允许各种任务作为数据产生者或数据消费者而与缓冲器交互。各种管线实施方案可使用多个状态参数来界定管线的状态。本发明专利技术中所描述的所述基于硬件的原子操作可以原子方式修改多个管线状态参数。以原子方式修改多个管线状态参数可避免竞态条件,当多个产生者和/或多个消费者同时尝试修改管线的状态时原本将发生所述竞态条件。以此方式,可在并行计算系统中支持基于管线的任务间通信。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及计算系统,且更具体地说涉及并行计算系统。
技术介绍
并行编程模型可支持任务并行度和数据并行度中的一者或两者以便解决计算问题。任务并行度可允许将计算问题划分为多个任务。所述任务可循序地、同时地和/或并行地在一或多个处理器核心上执行。数据并行度可允许通过将数据分布到不同处理元件且致使处理元件中的每一者对其经指派数据集合执行相同操作集合而对不同数据集合并行地执行相同操作集合。多核处理器可用以支持任务并行度,其中每一核心经配置以执行特定任务。在某些情况下,多核处理器中的核心中的一或多者可为单指令多数据(SIMD)处理器或单程序多数据(SPMD)处理器,其可包含多个处理元件以支持数据并行度。在此些情况下,支持数据层级并行度的任务可能够在多核处理器上循序或并行地执行。若干不同类型的处理器可支持任务并行度和/或数据并行度,包含多核中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)、Cell宽带引擎(Cell/B.E.)处理器等。虽然GPU传统地经设计以支持三维(3D)图形到显示器的再现,但许多现代的GPU中包含的可编程着色器架构可用以有效支持在使用并行编程模型编程的通用非图形特定程序中发现的任务并行度和数据并行度两者。使用GPU的并行架构来执行非图形特定程序可被称为图形处理单元上的通用计算(GPGPU)。
技术实现思路
本专利技术描述用于支持并行计算系统中的任务间通信的技术。所述用于支持任务间通信的技术可使用基于硬件的原子操作来维持管线的状态。管线可指代允许各种任务作为数据产生者或数据消费者而与缓冲器交互的缓冲器。各种管线实施方案可使用多个状态参数来界定管线的状态,且这些状态参数可能需要在每次数据产生者或消费者与管线交互时进行修改。本专利技术中所描述的所述基于硬件的原子操作可以原子方式修改多个管线状态参数。以原子方式修改多个管线状态参数可避免竞态条件,当多个产生者和/或多个消费者同时尝试修改管线的状态时原本将发生所述竞态条件。以此方式,可在并行计算系统中支持基于管线的任务间通信。在一个实例中,本专利技术描述一种方法,其包含:以一或多个处理器执行修改指示管线的状态的两个或更多个管线状态参数的基于硬件的原子读取-修改-写入操作。所述管线对应于用于支持任务间通信的数据缓冲器。在另一实例中,本专利技术描述一种装置,包含:一或多个处理器,其经配置以执行修改指示管线的状态的两个或更多个管线状态参数的基于硬件的原子读取-修改-写入操作。所述管线对应于用于支持任务间通信的数据缓冲器。在另一实例中,本专利技术描述一种设备,其包含用于存储指示管线的状态的两个或更多个管线状态参数的装置。所述管线对应于用于支持任务间通信的数据缓冲器。所述设备进一步包含用于执行修改所述两个或更多个管线状态参数的基于硬件的原子读取-修改-写入操作的装置。在另一实例中,本专利技术描述一种存储指令的非暂时性计算机可读存储媒体,所述指令在执行时致使一或多个处理器执行修改指示管线的状态的两个或更多个管线状态参数的基于硬件的原子读取-修改-写入操作。所述管线对应于用于支持任务间通信的数据缓冲器。在附图及以下描述中阐述本专利技术的一或多个实例的细节。本专利技术的其它特征、目标和优点将从所述描述和图式以及权利要求书显而易见。附图说明图1是说明实施本专利技术的基于硬件的原子操作的实例计算系统的框图。图2是说明根据本专利技术的界定实例原子保留写入命令的接口和功能性的实例伪码的概念图。图3是说明根据本专利技术的界定实例原子提交写入命令的接口和功能性的实例伪码的概念图。图4是说明根据本专利技术的界定实例原子保留读取命令的接口和功能性的实例伪码的概念图。图5是说明根据本专利技术的界定实例原子提交读取命令的接口和功能性的实例伪码的概念图。图6是图1的实例并行计算系统的框图,其中更详细说明图1的原子操作单元的实例。图7是说明根据本专利技术的与数据存储系统交互的实例原子操作数据路径的概念图。图8是说明可用以实施本专利技术的基于硬件的原子操作的实例计算装置的框图。图9是说明根据本专利技术的可在图形处理单元(GPU)或其它计算装置中使用的实例计算单元的框图。图10是说明图1的计算系统的一部分的框图,其中更详细说明实例GPU和存储器配置。图11是说明用于执行根据本专利技术的基于硬件的原子操作的实例技术的流程图。图12是说明用于执行根据本专利技术的基于硬件的原子操作的另一实例技术的流程图。图13是说明用于执行根据本专利技术的原子保留写入操作和原子保留读取操作的实例技术的流程图。图14是说明用于执行根据本专利技术的原子提交写入操作和原子提交读取操作的实例技术的流程图。具体实施方式本专利技术描述用于支持并行计算系统中的任务间通信的技术。用于支持任务间通信的技术可使用基于硬件的原子操作来维持管线的状态。管线可指代先入先出(FIFO)组织的缓冲器,其允许各种任务作为数据产生者或数据消费者而与缓冲器交互。各种管线实施方案可使用多个状态参数来界定管线的状态,且这些状态参数可能需要在每次数据产生者或消费者与管线交互时进行修改。本专利技术中所描述的基于硬件的原子操作可以原子方式修改多个管线状态参数。以原子方式修改多个管线状态参数可避免竞态条件,当多个产生者和/或多个消费者同时尝试修改管线的状态时原本将发生所述竞态条件。以此方式,可在并行计算系统中支持基于管线的任务间通信。计算问题可划分为在一或多个处理器核心上循序地、同时地和/或并行地执行的多个任务。任务可指代由并行计算系统执行的程序。线程可指代由并行计算系统中的单个处理元件执行的任务的实例。任务可替代地在本文中被称作内核,且线程可替代地在本文中被称作工作项目。在某些情况下,由并行计算系统执行的不同任务可能需要彼此通信。例如,一个任务可基于由另一任务产生的数据而产生数据。管线可用以允许不同任务彼此通信。从编程者的观点,管线可提供FIFO组织的缓冲器,其允许各种任务作为数据产生者或数据消费者而与缓冲器交互。FIFO组织的缓冲器可指代其中写入接口和读取接口根据FIFO原理操作的缓冲器。根据FIFO原理操作的写入接口可指代附加数据以写入到已经存储在缓冲器中的任何数据的末尾的接口。根据FIFO原理操作的读取接口可指代从缓冲器选择且移除最早的未读数据以写入到缓冲器的接口。因为管线可实施FIFO组织的缓冲器,所以管线也可以称为具有根据FIFO原理操作的写入和读取接口。从编程者的观点,对于具有根据FIFO原理操作的写入接口的管线,将数据写入到管线的任务可能不一定指定写入数据的管线中的特定位置。实际上,管线可附加数据以写入到已经存储在管线中的任何数据的末尾。类似地,对于具有根据FIFO原理操作的读取接口的管线,从管线读取数据的任务可能不一定指定读取数据的管线中的特定位置。实际上,管线可选择且返回存储在管线中的作为最早未读数据的数据以写入到管线。通过提供根据FIFO原理操作的读取和写入接口,管线可提供抽象数据结构,借此产生者和消费者任务可有效地彼此通信而不需要编程者关注用以存储数据的存储器的内部组织。本专利技术中所描述的管线可在一些实例中使用数据包作为用于对管线写入和读取数据的基本数据单元。不是空的管线可含有一或多个包的序列。管线的起始包可指代对应于存储在管线中的包的序列中的第一包的包。管线的结束包可指代对应于存储本文档来自技高网...

【技术保护点】
一种方法,其包括:以一或多个处理器执行修改指示管线的状态的两个或更多个管线状态参数的基于硬件的原子读取‑修改‑写入操作,所述管线对应于用于支持任务间通信的数据缓冲器。

【技术特征摘要】
【国外来华专利技术】2014.03.19 US 14/219,6961.一种方法,其包括:以一或多个处理器执行修改指示管线的状态的两个或更多个管线状态参数的基于硬件的原子读取-修改-写入操作,所述管线对应于用于支持任务间通信的数据缓冲器。2.根据权利要求1所述的方法,其中所述管线状态参数包括指示所述管线的保留状态的一或多个管线保留状态参数。3.根据权利要求2所述的方法,其中所述保留状态参数包括指示多少未提交保留当前对于所述管线待决的参数以及指示多少包条目当前保留在所述管线中的参数中的至少一者。4.根据权利要求1所述的方法,其中以所述一或多个处理器执行所述基于硬件的原子读取-修改-写入操作包括:执行非可中断操作集合,所述非可中断操作集合包括:从存储器子系统读取对应于所述管线状态参数的值的操作;产生所述管线状态参数的经修改值的操作;以及将所述管线状态参数的所述经修改值写入到所述存储器子系统的操作。5.根据权利要求4所述的方法,其中所述两个或更多个管线状态参数包括第一管线状态参数和第二管线状态参数,且其中产生所述管线状态参数的所述经修改值的所述操作包括:基于第一修改功能产生所述第一管线状态参数的经修改值的操作;以及基于第二修改功能产生所述第二管线状态参数的经修改值的操作,所述第二修改功能不同于所述第一修改功能。6.根据权利要求4所述的方法,其中所述两个或更多个管线状态参数包括第一管线状态参数和第二管线状态参数,其中从所述存储器子系统读取对应于所述管线状态参数的所述值的所述操作包括读取对应于第一管线状态参数的第一值的操作,且其中产生所述管线状态参数的经修改值的所述操作包括:基于对应于所述第一管线状态参数的所述第一值产生所述第二管线状态参数的经修改值的操作。7.根据权利要求4所述的方法,其中产生所述管线状态参数的所述经修改值的所述操作包括:基于所述管线状态参数中的一或多者而确定所述管线是否具有足够的未提交和未保留条目来支持写入保留请求的操作;以及响应于确定所述管线具有足够的未提交和未保留条目来支持所述写入保留请求而产生所述管线状态参数的所述经修改值以使得所述经修改值反映针对所述管线已做出写入保留的操作。8.根据权利要求4所述的方法,其中产生所述管线状态参数的所述经修改值的所述操作包括:基于所述管线状态参数中的一或多者而确定所述管线是否具有其中存储包数据的足够的未读取和未保留包条目来支持读取保留请求的操作;以及响应于确定所述管线具有其中存储包数据的足够的未读取和未保留包条目来支持所述读取保留请求而产生所述管线状态参数的经修改值以使得所述经修改值反映针对所述管线已做出读取保留的操作。9.根据权利要求4所述的方法,其中产生所述管线状态参数的所述经修改值的所述操作包括:产生所述管线状态参数值的第一管线状态参数的经修改值以使得所述第一管线状态参数的所述经修改值反映所述管线具有相对于在执行所述基于硬件的原子读取-修改-写入操作之前所述管线具有的未提交保留的数目来说少一个的未提交保留的操作;基于所述管线状态参数中的一或多者确定是否已经提交用于所述管线的全部保留的操作;以及响应于确定已经提交用于所述管线的全部保留而产生所述管线状态参数的所述经修改值以使得所述经修改值反映所提交条目已经放置到所述管线中的操作。10.根据权利要求4所述的方法,其中产生所述管线状态参数的所述经修改值的所述操作包括:产生所述管线状态参数值的第一管线状态参数的经修改值以使得所述第一管线状态参数的所述经修改值反映所述管线具有相对于在执行所述基于硬件的原子读取-修改-写入操作之前所述管线具有的未提交保留的数目来说少一个的未提交保留的操作;基于所述管线状态参数中的一或多者确定是否已经提交用于所述管线的全部保留的操作;以及响应于确定已经提交用于所述管线的全部保留而产生所述管线状态参数的经修改值以使得所述经修改值反映所提交条目已经从所述管线移除的操作。11.根据权利要求1所述的方法,其中所述方法进一步包括:以包含在所述一或多个处理器中的硬件单元接收来自第一线程的执行原子操作的第一请求,其中所述基于硬件的原子读取-修改-写入操作是第一基于硬件的原子读取-修改-写入操作,其中以所述一或多个处理器执行所述基于硬件的原子读取-修改-写入操作包括:响应于接收到所述第一请求,以所述硬件单元执行所述第一基于硬件的原子读取-修改-写入操作以服务于所述第一请求,且其中所述方法进一步包括:在完成所述第一基于硬件的原子读取-修改-写入操作之前,以所述硬件单元接收来自第二线程的执行原子操作的第二请求;响应于接收到所述第二请求,以所述硬件单元等待开始用于服务于所述第二请求的第二基于硬件的原子读取-修改-写入操作的执行直到所述第一基于硬件的原子读取-修改-写入操作的执行完成为止;以及在所述第一基于硬件的原子读取-修改-写入操作的执行完成之后,以所述硬件单元执行修改两个或更多个管线状态参数的所述第二基于硬件的原子读取-修改-写入操作以服务于所述第二请求。12.根据权利要求1所述的方法,其中所述一或多个处理器包括图形处理单元GPU,且其中以所述一或多个处理器执行所述基于硬件的原子读取-修改-写入操作包括以所述GPU执行修改指示所述管线的所述状态的所述两个或更多个管线状态参数的所述基于硬件的原子读取-修改-写入操作。13.根据权利要求1所述的方法,其中所述管线状态参数包括指示多少包当前存储在所述管线中的参数、指示存储所述管线的起始包的包条目的参数、指...

【专利技术属性】
技术研发人员:阿列克谢·弗拉狄米罗维奇·布尔德司瓦浦奈尔·普拉迪普库尔马·沙克哈雪特徐飞
申请(专利权)人:高通股份有限公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1