一种处理器中实现原子操作的系统及方法与流程

文档序号:36884311发布日期:2024-02-02 21:18阅读:24来源:国知局
一种处理器中实现原子操作的系统及方法与流程

本发明涉及处理器,特别涉及一种处理器中实现原子操作的系统及方法。


背景技术:

1、处理器架构通常采用指令对的方式实现原子操作,例如mips、risc-v分别采用load-linked/store-conditional,load-reserved/store-conditional的指令对实现原子操作,其工作机制为通过load-linked(ll)或load-reserved(lr)进行原子读操作,根据目的地址和线程信息设置保留信息,其他指令对读取的数据进行修改后,再通过store-conditional(sc)进行原子写操作,若原子读与原子写的保留信息一致,则更新目的地址的值,否则不更新目的地址的值,该原子操作的过程本质为可分离的原子操作,存在原子写(sc)失败的机制,虽然可以通过“循环执行原子操作指令流(ll-sc或lr-sc),直至sc执行成功”的方法保证原子性,但是缺乏执行效率。执行上述指令流的过程中会出现其他问题,例如(1)原子操作所在线程存在cache miss时,导致线程挂起,原子操作指令流中断,最终导致sc执行失败,需要在硬件实现上增加清除保留信息等逻辑,防止死锁;(2)在执行sc指令之前,原子操作目的地址所在的缓存行被替换,sc执行失败,需要在cache结构中增加缓存行锁定机制,防止活锁。

2、为了提高原子操作的执行效率,目前有通过数据预取和合并原子操作等方式,其中数据预取的方式,缩短了原子读和原子写的过程,但依旧存在原子操作失败的情况,需要执行清空流水线等操作以处理原子操作失败。其中合并原子操作,只能针对部分可合并的原子操作,例如原子加,原子减等操作,不适用于原子取大值,原子取小值,原子比较交换等操作,并且该合并后的原子操作,不能反馈各个原子操作执行前的原值,且目前c/c++语言,开放计算语言(opencl),开放图形库(opengl)等主流程序语言的标准中定义了需要返回原值的原子功能函数。


技术实现思路

1、本发明提供一种处理器中实现原子操作的系统及方法,旨在解决现有处理器架构进行原子操作时存在的问题。

2、本发明提供一种处理器中实现原子操作的系统,包括以下原子操作子系统,原子操作包括常规原子操作和规约原子操作;

3、核:执行原子请求处理过程,通过核内的原子执行模块进行包括接收原子操作和发射原子传输的操作;

4、设备内存:执行处理器的存储并提供地址区间;

5、最后一级缓存:根据设备内存的地址区间,将最后一级缓存映射为多个缓存体,每个缓存体对应设备内存的一段地址区间并缓存其数据,在缓存体内完成对应地址区间的原子运算;

6、拓扑网络:连接处理核与最后一级缓存,最后一级缓存和设备内存的网络结构,执行核与最后一级缓存之间两个方向上的数据传输,包括核对最后一级缓存的原子操作数据传输,最后一级缓存对核的回读数据传输;执行最后一级缓存与设备内存之间两个方向上的数据传输,包括读取设备内存的数据作为最后一级缓存的缓存数据,将最后一级的缓存数据写入设备内存。

7、作为本发明的进一步改进,所述核内的原子执行模块包括

8、原子操作接收单元:并行接收多线程的原子请求,将原子请求以线程为单位存入原子请求缓冲单元;原子请求包含原子控制信号、原子操作数的原子操作所需数据;

9、原子请求缓冲单元:缓存包含原子控制信号和原子操作数的数据;

10、原子传输发射单元:从原子请求缓冲单元取出数据,作为原子请求信息,向拓扑网络发起传输原子操作的请求和数据传输;

11、回读数据处理单元:根据拓扑网络中原子传输的回读响应,记录对应线程的回读数据,并在流水线的写回阶段取出该线程的数据作为写回数据写入到寄存器;

12、核内原子状态机:控制原子执行模块内所有单元的运作,包括五种状态,分别为atom_idle、atom_req、atom_wait、atom_rsp、atom_wb。

13、作为本发明的进一步改进,所述核内的原子请求处理过程包括:

14、核在原子执行模块进行包括接收原子操作和发射原子传输的原子请求处理操作,核内每个线程有各自的核内原子状态机,初始状态为atom_idle;

15、在atom_idle态,当线程执行原子操作时,原子操作接收单元接收包含原子控制信号和原子操作数的数据,并以线程为单位存入原子请求缓冲单元,对应线程的核内原子状态机进入atom_req;

16、在atom_req态的线程共享拓扑网络的原子传输请求,当原子请求缓冲单元存在多个原子请求,原子传输发射单元逐次向拓扑网络发起原子传输请求;

17、原子执行模块向拓扑网络发射完原子传输请求后,根据原子操作方式核内原子状态机进入不同的状态:当常规原子操作时,核内原子状态机进入atom_wait态,等待最后一级缓存返回原值;当规约原子操作时,核内原子状态机进入atom_idle,结束该线程的原子请求处理;

18、在atom_wait态,当原子执行模块接收到回读响应时,回读数据处理单元暂存该回读数据,核内原子状态机进入atom_rsp;

19、在atom_rsp态,从回读数据处理单元取出回读数据,核内原子状态机进入atom_wb,在对应线程的写回阶段将其写入寄存器;

20、写回完成,核内原子状态机进入atom_idle态,结束该线程的原子请求处理。

21、作为本发明的进一步改进,所述拓扑网络中,通过写地址通道和写数据通道进行核对最后一级缓存的原子操作数据传输,其中写地址通道传输目的地址、原子操作方式、原子操作类型、原子操作数据格式,写数据通道传输原子操作运算值;通过读数据通道传输最后一级缓存对核的回读数据,回读数据为目的地址存放的原值数据。

22、作为本发明的进一步改进,所述最后一级缓存的缓存体包括

23、原子传输缓冲单元:缓存原子操作的数据,包括原子操作的目的地址、原子操作方式、原子操作类型、原子操作数据格式、原子操作运算值数据;

24、原子运算单元:根据原子操作类型进行包括原子加、原子减、原子取大值、原子取小值、原子与、原子或、原子异或、原子交换、原子比较交换的原子运算,输出原子操作的最终结果,作为更新值并存入到原子操作的目的地址;

25、缓存体原子状态机:控制最后一级缓存的原子操作,包含五种状态,分别为atom_idle、atom_cache、atom_rsp、atom_cal、atom_rsp_cal。

26、作为本发明的进一步改进,所述最后一级缓存的原子操作过程包括:

27、最后一级缓存接收拓扑网络的所有原子传输,每个缓存体原子状态机初始状态为atom_idle;原子传输根据目的地址所属设备内存的不同地址区间,进入相应的缓存体,原子传输数据存入原子请求缓冲单元,对应的缓存体原子状态机进入atom_cache;

28、在atom_cache态,先进行缓存操作,即对目的地址所在的缓存行判断丢失或命中,根据判断结果决定是否向设备内存发起访问请求和填充缓存行,再根据原子操作方式和原子操作类型,缓存体原子状态机进入不同的状态,缓存体执行相关的操作,具体为:

29、a)原子读时,从缓存中读出相应的数据,缓存体原子状态机进入atom_rsp,对拓扑网络传输回读数据,即对核的回读响应,等待回读响应被接收后,缓存体原子状态机进入atom_idle,结束本次原子操作;

30、b) 原子写时,对缓存体所在缓存行更新值,缓存体原子状态机进入atom_idle,结束本次原子操作;

31、c) 除原子读的常规原子操作时,从缓存中读出相应的数据,缓存体原子状态机进入atom_rsp_cal,将此数据传输到两条数据通路,分别作为拓扑网络对核的回读数据传输,即对核的回读响应,作为原子运算单元的输入参与原子运算,其中完成原子运算后,将运算结果更新到对应的缓存行中,同时等待回读响应被接收后,缓存体原子状态机进入atom_idle,结束本次原子操作;

32、d) 除原子写的规约原子操作时,从缓存中读出相应的数据,缓存体原子状态机进入atom_cal,将此数据传输到一条数据通路,作为原子运算单元的输入参与原子运算,完成原子运算后,将运算结果更新到对应的缓存行中,缓存体原子状态机进入atom_idle,结束本次原子操作。

33、本发明还提供一种处理器中实现原子操作的方法,包括以下原子操作过程,原子操作包括常规原子操作和规约原子操作;

34、核的原子操作:执行核的原子请求处理过程,通过核内的原子执行模块进行包括接收原子操作和发射原子传输的操作;

35、设备内存的原子操作:执行处理器的存储并提供地址区间;

36、最后一级缓存的原子操作:根据设备内存的地址区间,将最后一级缓存映射为多个缓存体,每个缓存体对应设备内存的一段地址区间并缓存其数据,在缓存体内完成对应地址区间的原子运算;

37、拓扑网络的原子操作:连接处理核与最后一级缓存,最后一级缓存和设备内存的网络结构,执行核与最后一级缓存之间两个方向上的数据传输,包括核对最后一级缓存的原子操作数据传输,最后一级缓存对核的回读数据传输;执行最后一级缓存与设备内存之间两个方向上的数据传输,包括读取设备内存的数据作为最后一级缓存的缓存数据,将最后一级的缓存数据写入设备内存。

38、作为本发明的进一步改进,核的原子操作中,原子执行模块包括以下执行单元:

39、原子操作接收单元:并行接收多线程的原子请求,将原子请求以线程为单位存入原子请求缓冲单元;原子请求包含原子控制信号、原子操作数的原子操作所需数据;

40、原子请求缓冲单元:缓存包含原子控制信号和原子操作数的数据;

41、原子传输发射单元:从原子请求缓冲单元取出数据,作为原子请求信息,向拓扑网络发起传输原子操作的请求和数据传输;

42、回读数据处理单元:根据拓扑网络中原子传输的回读响应,记录对应线程的回读数据,并在流水线的写回阶段取出该线程的数据作为写回数据写入到寄存器;

43、核内原子状态机:控制原子执行模块内所有单元的运作,包括五种状态,分别为atom_idle、atom_req、atom_wait、atom_rsp、atom_wb。

44、作为本发明的进一步改进,核的原子操作中,执行核内的原子请求处理过程包括:

45、核在原子执行模块进行包括接收原子操作和发射原子传输的原子请求处理操作,核内每个线程有各自的核内原子状态机,初始状态为atom_idle;

46、在atom_idle态,当线程执行原子操作时,原子操作接收单元接收包含原子控制信号和原子操作数的数据,并以线程为单位存入原子请求缓冲单元,对应线程的核内原子状态机进入atom_req;

47、在atom_req态的线程共享拓扑网络的原子传输请求,当原子请求缓冲单元存在多个原子请求,原子传输发射单元逐次向拓扑网络发起原子传输请求;

48、原子执行模块向拓扑网络发射完原子传输请求后,根据原子操作方式核内原子状态机进入不同的状态:当常规原子操作时,核内原子状态机进入atom_wait态,等待最后一级缓存返回原值;当规约原子操作时,核内原子状态机进入atom_idle,结束该线程的原子请求处理;

49、在atom_wait态,当原子执行模块接收到回读响应时,回读数据处理单元暂存该回读数据,核内原子状态机进入atom_rsp;

50、在atom_rsp态,从回读数据处理单元取出回读数据,核内原子状态机进入atom_wb,在对应线程的写回阶段将其写入寄存器;

51、写回完成,核内原子状态机进入atom_idle态,结束该线程的原子请求处理。

52、作为本发明的进一步改进,拓扑网络的原子操作包括:

53、通过拓扑网络中的写地址通道和写数据通道进行核对最后一级缓存的原子操作数据传输,其中写地址通道传输目的地址、原子操作方式、原子操作类型、原子操作数据格式,写数据通道传输原子操作运算值;通过拓扑网络中的读数据通道传输最后一级缓存对核的回读数据,回读数据为目的地址存放的原值数据。

54、作为本发明的进一步改进,最后一级缓存的原子操作中,缓存体包括以下执行单元:

55、原子传输缓冲单元:缓存原子操作的数据,包括原子操作的目的地址、原子操作方式、原子操作类型、原子操作数据格式、原子操作运算值数据;

56、原子运算单元:根据原子操作类型进行包括原子加、原子减、原子取大值、原子取小值、原子与、原子或、原子异或、原子交换、原子比较交换的原子运算,输出原子操作的最终结果,作为更新值并存入到原子操作的目的地址;

57、缓存体原子状态机:控制最后一级缓存的原子操作,包含五种状态,分别为atom_idle、atom_cache、atom_rsp、atom_cal、atom_rsp_cal。

58、作为本发明的进一步改进,所述最后一级缓存的原子操作过程包括:

59、最后一级缓存接收拓扑网络的所有原子传输,每个缓存体原子状态机初始状态为atom_idle;原子传输根据目的地址所属设备内存的不同地址区间,进入相应的缓存体,原子传输数据存入原子请求缓冲单元,对应的缓存体原子状态机进入atom_cache;

60、在atom_cache态,先进行缓存操作,对目的地址所在的缓存行判断丢失或命中,根据判断结果决定是否向设备内存发起访问请求和填充缓存行,再根据原子操作方式和原子操作类型,缓存体原子状态机进入不同的状态,缓存体执行相关的操作,具体为:

61、a)原子读时,从缓存中读出相应的数据,缓存体原子状态机进入atom_rsp,对拓扑网络传输回读数据,即对核的回读响应,等待回读响应被接收后,缓存体原子状态机进入atom_idle,结束本次原子操作;

62、b) 原子写时,对缓存体所在缓存行更新值,缓存体原子状态机进入atom_idle,结束本次原子操作;

63、c) 除原子读的常规原子操作时,从缓存中读出相应的数据,缓存体原子状态机进入atom_rsp_cal,将此数据传输到两条数据通路,分别作为拓扑网络对核的回读数据传输,即对核的回读响应,作为原子运算单元的输入参与原子运算,其中完成原子运算后,将运算结果更新到对应的缓存行中,同时等待回读响应被接收后,缓存体原子状态机进入atom_idle,结束本次原子操作;

64、d) 除原子写的规约原子操作时,从缓存中读出相应的数据,缓存体原子状态机进入atom_cal,将此数据传输到一条数据通路,作为原子运算单元的输入参与原子运算,完成原子运算后,将运算结果更新到对应的缓存行中,缓存体原子状态机进入atom_idle,结束本次原子操作。

65、本发明的有益效果是:

66、(1)原子操作提供常规原子操作和规约原子操作等两种方式,给不同应用场景提供了实现原子操作功能的灵活性,以及原子操作效率的优化空间;

67、(2)规约原子操作在流水线上,减少原子操作在写回阶段对寄存器的写入操作,缩短原子操作的流水线,在总线上,减少了最后一级缓存对核的返回响应,优化了原子操作对网络带宽的访存占用;

68、(3)原子操作的数据不进入其他缓存,只进入离设备内存最近的最后一级缓存,避免了多级缓存之间的一致性需求;

69、(4)不存在原子操作执行失败的情况,可以在多核多线程下高效地执行原子操作。

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