一种多核处理器的数据处理方法、服务器、产品及介质与流程

文档序号:39786453发布日期:2024-10-29 16:57阅读:9来源:国知局
一种多核处理器的数据处理方法、服务器、产品及介质与流程

本发明涉及多核处理器,特别是涉及一种多核处理器的数据处理方法、服务器、产品及介质。


背景技术:

1、随着单核处理器的性能提升逐渐趋缓,多核处理器已经成为提高计算机性能的重要途径,特别是在提升计算机系统性能、能效和并行处理方面展示了巨大潜力。主节点(home node,hn)在多核片上网络中起着协调和管理的重要作用。研究重点包括提高缓存一致性管理、内存访问控制、调度关键任务的效率等。通过优化hn节点的设计,可构建高度可扩展、且性能卓越的多核系统。

2、然而,在传统的hn节点设计中,研究侧重于通过直接的数据处理方式来管理和优化数据流。但在需要高性能和复杂并行处理的环境下,这些方法可能无法满足目前的计算需求。

3、由此可见,如何提高多核处理器的性能和效率是本领域人员亟需解决的技术问题。


技术实现思路

1、本发明的目的是提供一种多核处理器的数据处理方法、服务器、产品及介质,以解决多核处理器性能和效率低的技术问题。

2、为了解决上述技术问题,本发明提供一种多核处理器的数据处理方法,应用于主节点,所述方法包括:

3、获取当前请求节点发送的报文请求;其中,所述报文请求中至少包括报文请求内容和报文请求类型,所述报文请求类型中至少包括读请求类型、无数据请求类型和写请求类型之一;所述主节点和请求节点均带有缓存;

4、根据所述报文请求确定所述主节点中的目录一的命中情况和目录二的命中情况;其中,所述目录一中记录所述主节点中存储的数据地址和所述主节点的缓存状态,所述目录二中记录各所述请求节点中存储的数据地址和各所述请求节点的缓存状态;

5、根据所述目录一的命中情况、所述目录二的命中情况、所述报文请求类型、所述主节点的缓存状态和/或所述请求节点的缓存状态采用不同的处理策略响应所述当前请求节点发送的报文请求;其中,所述处理策略至少包括发送所述主节点缓存中的数据至所述当前请求节点,或接收其他请求节点发送的数据并将所述其他请求节点发送的数据发送至所述当前请求节点;所述其他请求节点为所有请求节点中除所述当前请求节点外的请求节点。

6、一方面,在所述根据所述报文请求确定所述主节点中的目录一的命中情况和目录二的命中情况之前,还包括:

7、获取所述报文请求对应的地址;

8、判断所述报文请求对应的地址是否处于占用状态;

9、若否,则进入所述根据所述报文请求确定所述主节点中的目录一的命中情况和目录二的命中情况;

10、若是,则将所述报文请求存放在缓存中,返回所述判断所述报文请求对应的地址是否处于占用状态的步骤。

11、另一方面,所述主节点支持的输入信道包括请求信道、响应信道和数据信道;所述主节点对应的输入缓存至少包含三个先进先出队列,且请求信道、响应信道和数据信道分别对应至少一个先进先出队列。

12、另一方面,所述根据所述目录一的命中情况、所述目录二的命中情况、所述报文请求类型、所述主节点的缓存状态和/或所述请求节点的缓存状态采用不同的处理策略响应所述当前请求节点发送的报文请求包括:

13、根据所述目录二的命中情况确定命中的请求节点;

14、在检测到所述报文请求类型为读请求类型、所述目录一命中、所述目录二命中、所述主节点的缓存状态为共享态或独占态且所述命中的请求节点中未包含脏数据的情况下,或,在检测到所述报文请求类型为读请求类型、所述目录一命中、所述目录二未命中和所述主节点的缓存状态为独占态的情况下,从所述主节点的缓存中读取数据返回至所述当前请求节点;

15、在检测到所述报文请求类型为读请求类型、所述目录一未命中和所述目录二命中的情况下,若检测到目标请求节点缓存中包含脏数据,则接收所述包含脏数据的目标请求节点发送的数据,并将所述目标请求节点发送的数据返回至所述当前请求节点;若检测到目标请求节点缓存中有数据且数据干净,则接收任一请求节点发送的数据,并将接收到的任一请求节点发送的数据返回至所述当前请求节点;其中,所述目标请求节点为所述命中的请求节点中的节点;

16、在检测到所述报文请求类型为读请求类型、所述目录一未命中和所述目录二未命中的情况下,则向所有请求节点发送监听请求,若检测到请求节点缓存中有脏数据,则接收含有脏数据的请求节点发送的数据并将数据返回至所述当前请求节点;若检测到所有的请求节点缓存中有数据且数据干净,则接收任一请求节点发送的数据,并将接收到的任一请求节点发送的数据返回至所述当前请求节点。

17、另一方面,所述根据所述目录一的命中情况、所述目录二的命中情况、所述报文请求类型、所述主节点的缓存状态和/或所述请求节点的缓存状态采用不同的处理策略响应所述当前请求节点发送的报文请求包括:

18、在检测到所述报文请求类型为读请求类型、所述目录一未命中和所述目录二命中的情况下,若检测到目录请求节点缓存中未包含数据,或检测到所有的请求节点缓存中均未包含数据,则接收内存发送的数据,并将接收到的所述内存发送的数据返回至所述当前请求节点。

19、另一方面,所述根据所述目录一的命中情况、所述目录二的命中情况、所述报文请求类型、所述主节点的缓存状态和/或所述请求节点的缓存状态采用不同的处理策略响应所述当前请求节点发送的报文请求包括:

20、在检测到所述报文请求类型为读请求类型、所述目录一命中、所述目录二命中、所述主节点的缓存状态为共享态和所述命中的请求节点中包含脏数据的情况下,接收所述命中的请求节点发送的数据,并将接收到的所述命中的请求节点发送的数据返回至所述当前请求节点。

21、另一方面,所述根据所述目录一的命中情况、所述目录二的命中情况、所述报文请求类型、所述主节点的缓存状态和/或所述请求节点的缓存状态采用不同的处理策略响应所述当前请求节点发送的报文请求包括:

22、根据所述目录二的命中情况确定命中的请求节点;

23、在检测到所述报文请求类型为无数据请求类型、所述目录一命中和所述目录二命中的情况下,或,在检测到所述报文请求类型为无数据请求类型、所述目录一未命中和所述目录二命中的情况下,获取各命中的请求节点的当前缓存状态;根据具体无数据事务类型,响应所述当前请求节点发送的报文请求,并根据接收的响应报文和数据报文更新主节点与请求节点的缓存状态;

24、在检测到所述报文请求类型为无数据请求类型、所述目录一命中和所述目录二未命中的情况下,或,在检测到所述报文请求类型为无数据请求类型、所述目录一未命中和所述目录二未命中的情况下,向所有请求节点发送监听请求,获取所有请求节点的当前缓存状态,并根据接收的响应报文和数据报文更新主节点与请求节点的缓存状态。

25、另一方面,在检测到所述报文请求类型为无数据请求类型、所述目录一命中和所述目录二命中的情况下,在所述根据具体无数据事务类型,响应所述当前请求节点发送的报文请求之后,或,在检测到所述报文请求类型为无数据请求类型、所述目录一命中和所述目录二未命中的情况下,在所述向所有请求节点发送监听请求之后,还包括:

26、更新所述目录一的内容和所述目录二的内容;

27、在检测到所述报文请求类型为无数据请求类型、所述目录一未命中和所述目录二命中的情况下,在所述根据具体无数据事务类型,响应所述当前请求节点发送的报文请求之后,或,在检测到所述报文请求类型为无数据请求类型、所述目录一未命中和所述目录二未命中的情况下,所述向所有请求节点发送监听请求之后,还包括:

28、更新所述目录二的内容。

29、另一方面,所述根据所述目录一的命中情况、所述目录二的命中情况、所述报文请求类型、所述主节点的缓存状态和/或所述请求节点的缓存状态采用不同的处理策略响应所述当前请求节点发送的报文请求包括:

30、根据所述目录二的命中情况确定命中的请求节点;

31、在检测到所述报文请求类型为写请求类型、所述目录一命中和所述目录二命中的情况下,根据具体写事务类型与目录二记录信息,响应所述当前请求节点发送的报文请求;在接收到请求节点发送的响应报文和数据报文后,更新主节点本地缓存、目录一与目录二缓存状态;

32、在检测到所述报文请求类型为写请求类型、所述目录一命中和所述目录二未命中的情况下,根据具体写事务类型,向所有请求节点发送监听请求,在接收到请求节点发送的响应报文和数据报文后,更新主节点本地缓存、目录一与目录二缓存状态;

33、在检测到所述报文请求类型为写请求类型、所述目录一未命中和所述目录二命中的情况下,根据具体写事务,响应所述当前请求节点发送的请求报文;在接收到请求节点发送的响应报文和数据报文后,更新主节点本地缓存、目录一与目录二缓存状态;

34、在检测到所述报文请求类型为写请求类型、所述目录一未命中和所述目录二未命中的情况下,根据具体事务,向所有请求节点发送监听请求,在接收到请求节点发送的响应报文和数据报文后,更新主节点本地缓存、目录一与目录二缓存状态。

35、另一方面,在所述根据所述目录一的命中情况、所述目录二的命中情况、所述报文请求类型、所述主节点的缓存状态和/或所述请求节点的缓存状态采用不同的处理策略响应所述当前请求节点发送的报文请求之后,还包括:

36、自响应所述当前请求节点发送的报文请求开始,判断预设时长内是否接收到所述当前请求节点发送的用于表征接收到与所述报文请求对应的数据;

37、若是,则结束;

38、若否,则向所述当前请求节点发送用于表征重新发送报文请求的信息,并返回所述获取当前请求节点发送的报文请求的步骤。

39、另一方面,所述主节点中包括依次连接的输入缓存模块、取指模块、地址状态模块、目录控制模块、报文处理模块和输出缓存模块;

40、所述取指模块用于调度输入缓存中缓存的报文;

41、所述地址状态模块用于查询地址的占用情况;

42、所述目录控制模块中包含所述目录一、所述目录二和缓存;

43、所述取指模块、地址状态模块、目录控制模块和报文处理模块分别对应不同的时钟周期;不同的报文请求处于不同的时钟周期。

44、另一方面,所述取指模块用于在检测到响应信道报文处理完成后,处理数据信道报文;在检测到数据信道报文处理完成后,处理缓存冲突地址报文;在检测到缓存冲突地址报文处理完成后,处理请求信道报文。

45、另一方面,在接收到请求节点发送的数据报文后,还包括:

46、在接收到当前请求节点发送的数据报文时,将所述数据报文缓存在所述主节点的缓存中以及保持内存中的数据不变。

47、为了解决上述技术问题,本发明还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述的多核处理器的数据处理方法的步骤。

48、为了解决上述技术问题,本发明还提供一种服务器,包括:

49、存储器,用于存储计算机程序;

50、处理器,用于执行所述计算机程序时实现上述的多核处理器的数据处理方法的步骤。

51、为了解决上述技术问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的多核处理器的数据处理方法的步骤。

52、本发明所提供的应用于主节点的多核处理器的数据处理方法,首先获取当前请求节点发送的报文请求,然后根据报文请求确定主节点中的目录一的命中情况和目录二的命中情况;最后根据目录一的命中情况、目录二的命中情况、报文请求类型、主节点的缓存状态和/或请求节点的缓存状态采用不同的处理策略响应当前请求节点发送的报文请求。

53、本发明的有益效果在于,首先,该多核处理器的数据处理方法中的主节点中带有缓存,且由于主节点中包含的目录一中记录主节点中存储的数据地址和主节点的缓存状态,目录二中记录各请求节点中存储的数据地址和各请求节点的缓存状态,使得当读报文请求命中主节点的目录一和/或命中目录二的情况下,主节点可以直接利用其缓存中的数据或利用其接收到的其他请求节点发送的数据响应报文请求,而不需要利用片外内存响应报文请求,故而提高了数据处理的效率以及提升了系统的性能;其次,该数据处理方法中,在响应请求报文时,考虑了目录一的命中情况、目录二的命中情况、报文请求类型、主节点的缓存状态和/或请求节点的缓存状态,使得能够准确合理地确定处理策略,进而实现了利用合理的处理策略响应报文请求;且,针对不同类型的报文请求(读请求类型、无数据请求类型和写请求类型)通过不同的方式进行响应,实现了对各种类型报文请求的针对性地处理。

54、此外,在根据报文请求确定主节点中的目录一的命中情况和目录二的命中情况之前,对于报文请求对应的地址被占用的情况,先存入缓存中,待地址释放后,再对报文进行处理,避免了报文请求的阻塞。

55、考虑到了不同信道报文长度可能不同,该方法中对主节点的输入信道均设置对应的先进先出队列,通过各先进先出队列实现了每种信道报文的统一存储。

56、在各种报文请求类型(读请求报文类型、无数据请求报文类型和写请求报文类型)下,针对不同的命中情况(如目录一命中和目录二均命中的情况、目录一未命中和目录二命中的情况、目录一未命中和目录二未命中的情况以及目录一未命中和目录二命中的情况)采用不同的响应方式,使得采用的响应方式更加符合实际情况。

57、在响应当前请求节点发送的报文请求后,对预设时长内是否接收到当前请求节点发送的用于表征接收到与报文请求对应的数据进行判断,保证了请求处理的完整性。

58、在主节点中取指模块、地址状态模块、目录控制模块、报文处理模块分别对应不同的时钟周期,不同的报文请求处于不同的时钟周期,即主节点采用流水线的方式处理不同的报文请求,提高了报文吞吐量,减少报文处理延迟;取指模块用于检测输入缓存中有数据时,按优先级读取先入先出队列中的报文,优先级为响应信道优先于数据信道优先于地址冲突缓存优先于请求信道。只有在响应信道、数据信道和地址冲突缓存对应的先入先出队列读空时,再会读取请求信道对应的先入先出队列中的报文,因为事务结束标志均为响应报文,此优先级排序保证了事务在主节点内的处理效率。

59、在有数据写回内存时,优先缓存在主节点本地缓存中,并不第一时间写回内存,保证再次读请求时会命中主节点缓存,在提高处理效率的同时由于写回数据减少了与内存交互的频率进一步提升了整体系统性能。

60、另外,本发明还提供一种计算机程序产品、服务器和计算机可读存储介质,与上述提到的多核处理器的数据处理方法具有相同或相对应的技术特征,效果同上。

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