用于支持任务间通信的基于硬件的原子操作的制作方法

文档序号:17849953发布日期:2019-06-11 22:06阅读:来源:国知局

技术特征:

1.一种用于基于硬件的原子操作的方法,其包括:

以一或多个处理器执行基于硬件的原子读取-修改-写入操作,所述基于硬件的原子读取-修改-写入操作在单个存储器事务中修改指示管线的状态的两个或更多个管线状态参数,所述管线对应于用于支持任务间通信的数据缓冲器,其中所述两个或更多个管线状态参数包括以下参数中的至少两个参数:识别多少包当前存储在所述管线中的参数、识别存储所述管线的起始包的包条目的参数、识别多少未提交保留当前对于所述管线待决的参数、或者识别多少包条目当前保留在所述管线中的参数,其中以所述一或多个处理器执行所述基于硬件的原子读取-修改-写入操作包括执行非可中断操作集合,所述非可中断操作集合包括:

从存储器子系统读取对应于所述两个或更多个管线状态参数的值的操作,其中所述从存储器子系统读取对应于所述两个或更多个管线状态参数的值的操作包括在所述单个存储器事务中,在寄存器的四重寄存器群组内的三个连续寄存器中读取和返回三个管线状态参数的数据的操作,所述寄存器的四重寄存器群组包括四个寄存器;

产生所述两个或更多个管线状态参数的经修改值的操作;以及

将所述两个或更多个管线状态参数的所述经修改值写入到所述存储器子系统的操作。

2.根据权利要求1所述的方法,其中所述两个或更多个管线状态参数包括第一管线状态参数和第二管线状态参数,且其中产生所述两个或更多个管线状态参数的所述经修改值的所述操作包括:

基于第一修改功能产生所述第一管线状态参数的经修改值的操作;以及

基于第二修改功能产生所述第二管线状态参数的经修改值的操作,所述第二修改功能不同于所述第一修改功能。

3.根据权利要求1所述的方法,其中所述两个或更多个管线状态参数包括第一管线状态参数和第二管线状态参数,其中从所述存储器子系统读取对应于所述两个或更多个管线状态参数的所述值的所述操作包括读取对应于第一管线状态参数的第一值的操作,且其中产生所述两个或更多个管线状态参数的经修改值的所述操作包括:

基于对应于所述第一管线状态参数的所述第一值产生所述第二管线状态参数的经修改值的操作。

4.根据权利要求1所述的方法,其中产生所述两个或更多个管线状态参数的所述经修改值的所述操作包括:

基于所述两个或更多个管线状态参数中的一或多者而确定所述管线是否具有足够的未提交和未保留条目来支持写入保留请求的操作;以及

响应于确定所述管线具有足够的未提交和未保留条目来支持所述写入保留请求而产生所述两个或更多个管线状态参数的所述经修改值以使得所述经修改值反映针对所述管线已做出写入保留的操作。

5.根据权利要求1所述的方法,其中产生所述两个或更多个管线状态参数的所述经修改值的所述操作包括:

基于所述两个或更多个管线状态参数中的一或多者而确定所述管线是否具有其中存储包数据的足够的未读取和未保留包条目来支持读取保留请求的操作;以及

响应于确定所述管线具有其中存储包数据的足够的未读取和未保留包条目来支持所述读取保留请求而产生所述两个或更多个管线状态参数的经修改值以使得所述经修改值反映针对所述管线已做出读取保留的操作。

6.根据权利要求1所述的方法,其中产生所述两个或更多个管线状态参数的所述经修改值的所述操作包括:

产生所述两个或更多个管线状态参数值的第一管线状态参数的经修改值以使得所述第一管线状态参数的所述经修改值反映所述管线具有相对于在执行所述基于硬件的原子读取-修改-写入操作之前所述管线具有的未提交保留的数目来说少一个的未提交保留的操作;

基于所述两个或更多个管线状态参数中的一或多者确定是否已经提交用于所述管线的全部保留的操作;以及

响应于确定已经提交用于所述管线的全部保留而产生所述两个或更多个管线状态参数的所述经修改值以使得所述经修改值反映所提交条目已经放置到所述管线中的操作。

7.根据权利要求1所述的方法,其中产生所述两个或更多个管线状态参数的所述经修改值的所述操作包括:

产生所述两个或更多个管线状态参数值的第一管线状态参数的经修改值以使得所述第一管线状态参数的所述经修改值反映所述管线具有相对于在执行所述基于硬件的原子读取-修改-写入操作之前所述管线具有的未提交保留的数目来说少一个的未提交保留的操作;

基于所述两个或更多个管线状态参数中的一或多者确定是否已经提交用于所述管线的全部保留的操作;以及

响应于确定已经提交用于所述管线的全部保留而产生所述两个或更多个管线状态参数的经修改值以使得所述经修改值反映所提交条目已经从所述管线移除的操作。

8.根据权利要求1所述的方法,

其中所述方法进一步包括,以包含在所述一或多个处理器中的硬件单元接收来自第一线程的执行原子操作的第一请求,

其中所述基于硬件的原子读取-修改-写入操作是第一基于硬件的原子读取-修改-写入操作,

其中以所述一或多个处理器执行所述第一基于硬件的原子读取-修改-写入操作包括以所述硬件单元响应于接收到所述第一请求而执行所述第一基于硬件的原子读取-修改-写入操作以服务于所述第一请求,其中所述方法进一步包括:

在完成所述第一基于硬件的原子读取-修改-写入操作之前,以所述硬件单元接收来自第二线程的执行原子操作的第二请求;

响应于接收到所述第二请求,以所述硬件单元等待开始用于服务于所述第二请求的第二基于硬件的原子读取-修改-写入操作的执行直到所述第一基于硬件的原子读取-修改-写入操作的执行完成为止;以及

在所述第一基于硬件的原子读取-修改-写入操作的执行完成之后,以所述硬件单元执行修改两个或更多个管线状态参数的所述第二基于硬件的原子读取-修改-写入操作以服务于所述第二请求。

9.根据权利要求1所述的方法,

其中所述一或多个处理器包括图形处理单元GPU,且

其中以所述一或多个处理器执行所述基于硬件的原子读取-修改-写入操作包括以所述GPU执行修改指示所述管线的所述状态的所述两个或更多个管线状态参数的所述基于硬件的原子读取-修改-写入操作。

10.根据权利要求1所述的方法,其中所述数据缓冲器包括用于支持任务间通信的先入先出FIFO组织的数据缓冲器。

11.根据权利要求1所述的方法,其中:所述两个或更多个管线状态参数包含四个管线状态参数,所述四个管线状态参数中的每一者都由位于128位块中的一个不同的32位值所表示,所述四个管线状态参数包括:所述识别多少包当前存储在所述管线中的参数、所述识别存储所述管线的起始包的包条目的参数、所述识别多少未提交保留当前对于所述管线待决的参数、以及所述识别多少包条目当前保留在所述管线中的参数。

12.一种用于基于硬件的原子操作的装置,其包括:

先入先出FIFO组织的数据缓冲器;

一或多个处理器,其经配置以执行基于硬件的原子读取-修改-写入操作,所述基于硬件的原子读取-修改-写入操作在单个存储器事务中修改指示管线的状态的两个或更多个管线状态参数,所述管线对应于用于支持任务间通信的所述先入先出FIFO组织的数据缓冲器,其中所述两个或更多个管线状态参数包括以下参数中的至少两个参数:识别多少包当前存储在所述管线中的参数、识别存储所述管线的起始包的包条目的参数、识别多少未提交保留当前对于所述管线待决的参数、或者识别多少包条目当前保留在所述管线中的参数,其中所述一或多个处理器经配置以执行所述基于硬件的原子读取-修改-写入操作包括所述一或多个处理器经配置以执行非可中断操作集合,所述非可中断操作集合包括:

从存储器子系统读取对应于所述两个或更多个管线状态参数的值的操作,其中所述从存储器子系统读取对应于所述两个或更多个管线状态参数的值的操作包括在所述单个存储器事务中,在寄存器的四重寄存器群组内的三个连续寄存器中读取和返回三个管线状态参数的数据的操作,所述寄存器的四重寄存器群组包括四个寄存器;

产生所述两个或更多个管线状态参数的经修改值的操作;以及

将所述两个或更多个管线状态参数的所述经修改值写入到所述存储器子系统的操作。

13.根据权利要求12所述的装置,其中所述两个或更多个管线状态参数包括第一管线状态参数和第二管线状态参数,且其中产生所述两个或更多个管线状态参数的经修改值的所述操作包括:

基于第一修改功能产生所述第一管线状态参数的经修改值的操作;以及

基于第二修改功能产生所述第二管线状态参数的经修改值的操作,所述第二修改功能不同于所述第一修改功能。

14.根据权利要求12所述的装置,其中所述两个或更多个管线状态参数包括第一管线状态参数和第二管线状态参数,其中从所述存储器子系统读取对应于所述两个或更多个管线状态参数的所述值的所述操作包括读取对应于所述第一管线状态参数的第一值的操作,且其中产生所述两个或更多个管线状态参数的经修改值的所述操作包括:

基于对应于所述第一管线状态参数的所述第一值产生所述第二管线状态参数的经修改值的操作。

15.根据权利要求12所述的装置,其中产生所述两个或更多个管线状态参数的所述经修改值的所述操作包括:

基于所述两个或更多个管线状态参数中的一或多者而确定所述管线是否具有足够的未提交和未保留条目以支持写入保留请求的操作;以及

响应于确定所述管线具有足够的未提交和未保留条目来支持所述写入保留请求而产生所述两个或更多个管线状态参数的所述经修改值以使得所述经修改值反映针对所述管线已做出写入保留的操作。

16.根据权利要求12所述的装置,其中产生所述两个或更多个管线状态参数的所述经修改值的所述操作包括:

基于所述两个或更多个管线状态参数中的一或多者而确定所述管线是否具有其中存储包数据的足够的未读取和未保留包条目来支持读取保留请求的操作;以及

响应于确定所述管线具有其中存储包数据的足够的未读取和未保留包条目来支持所述读取保留请求而产生所述两个或更多个管线状态参数的经修改值以使得所述经修改值反映针对所述管线已做出读取保留的操作。

17.根据权利要求12所述的装置,其中产生所述两个或更多个管线状态参数的所述经修改值的所述操作包括:

产生所述两个或更多个管线状态参数值的第一管线状态参数的经修改值以使得所述第一管线状态参数的所述经修改值反映所述管线具有相对于在执行所述基于硬件的原子读取-修改-写入操作之前所述管线具有的未提交保留的数目来说少一个的未提交保留的操作;

基于所述两个或更多个管线状态参数中的一或多者确定是否已经提交用于所述管线的全部保留的操作;以及

响应于确定已经提交用于所述管线的全部保留而产生所述两个或更多个管线状态参数的所述经修改值以使得所述经修改值反映所提交条目已经放置到所述管线中的操作。

18.根据权利要求12所述的装置,其中产生所述两个或更多个管线状态参数的所述经修改值的所述操作包括:

产生所述两个或更多个管线状态参数值的第一管线状态参数的经修改值以使得所述第一管线状态参数的所述经修改值反映所述管线具有相对于在执行所述基于硬件的原子读取-修改-写入操作之前所述管线具有的未提交保留的数目来说少一个的未提交保留的操作;

基于所述两个或更多个管线状态参数中的一或多者确定是否已经提交用于所述管线的全部保留的操作;以及

响应于确定已经提交用于所述管线的全部保留而产生所述两个或更多个管线状态参数的经修改值以使得所述经修改值反映所提交条目已经从所述管线移除的操作。

19.根据权利要求12所述的装置,

其中所述一或多个处理器包括图形处理单元GPU,且

其中所述一或多个处理器进一步经配置以执行修改指示所述管线的所述状态的所述两个或更多个管线状态参数的所述基于硬件的原子读取-修改-写入操作。

20.根据权利要求12所述的装置,其中所述装置包括无线通信装置和移动电话手持机中的至少一者。

21.一种用于基于硬件的原子操作的设备,其包括:

用于在单个存储器事务中存储指示管线的状态的两个或更多个管线状态参数的装置,所述管线对应于用于支持任务间通信的先入先出FIFO组织的数据缓冲器,其中所述两个或更多个管线状态参数包括以下参数中的至少两个参数:识别多少包当前存储在所述管线中的参数、识别存储所述管线的起始包的包条目的参数、识别多少未提交保留当前对于所述管线待决的参数、或者识别多少包条目当前保留在所述管线中的参数;以及

用于以非可中断操作集合执行修改所述两个或更多个管线状态参数的基于硬件的原子读取-修改-写入操作的装置,所述非可中断操作集合包括:

从存储器子系统读取对应于所述两个或更多个管线状态参数的值的操作,其中所述从存储器子系统读取对应于所述两个或更多个管线状态参数的值的操作包括在所述单个存储器事务中,在寄存器的四重寄存器群组内的三个连续寄存器中读取和返回三个管线状态参数的数据的操作,所述寄存器的四重寄存器群组包括四个寄存器;

产生所述两个或更多个管线状态参数的经修改值的操作;以及

将所述两个或更多个管线状态参数的所述经修改值写入到所述存储器子系统的操作。

22.一种非暂时性计算机可读存储媒体,具有存储于其上的指令,所述指令在执行时致使一或多个处理器:

执行基于硬件的原子读取-修改-写入操作,所述基于硬件的原子读取-修改-写入操作在单个存储器事务中修改指示管线的状态的两个或更多个管线状态参数,所述管线对应于用于支持任务间通信的先入先出FIFO组织的数据缓冲器,其中所述两个或更多个管线状态参数包括以下参数中的至少两个参数:识别多少包当前存储在所述管线中的参数、识别存储所述管线的起始包的包条目的参数、识别多少未提交保留当前对于所述管线待决的参数、或者识别多少包条目当前保留在所述管线中的参数,其中所述基于硬件的原子读取-修改-写入操作包括非可中断操作集合,所述非可中断操作集合包括:

从存储器子系统读取对应于所述两个或更多个管线状态参数的值的操作,其中所述从存储器子系统读取对应于所述两个或更多个管线状态参数的值的操作包括在所述单个存储器事务中,在寄存器的四重寄存器群组内的三个连续寄存器中读取和返回三个管线状态参数的数据的操作,所述寄存器的四重寄存器群组包括四个寄存器;

产生所述两个或更多个管线状态参数的经修改值的操作;以及

将所述两个或更多个管线状态参数的所述经修改值写入到所述存储器子系统的操作。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1