掌桥专利:专业的专利平台
掌桥专利
首页

一种处理器间的数据交互方法、装置以及服务器

文献发布时间:2023-06-19 11:32:36


一种处理器间的数据交互方法、装置以及服务器

技术领域

本说明书涉及通信技术领域,尤其涉及一种处理器间的数据交互方法、装置以及服务器。

背景技术

随着大数据、云计算技术的应用与发展,人们对于服务器的需求也越来越高,因此,服务器的运行状态需要随时被关注。

在服务器中可以通过设置BMC(基板管理控制器,Board Management Controller)对服务器的硬件状态进行监控,并实现对于服务器的管理。其中,BMC对服务器的硬件状态进行监控和管理通过与服务器的主板上的BIOS(基础输入输出系统,Basic Input OutputSystem)之间的实现。BIOS是电子设备(如个人电脑和服务器等)上,固化在BIOS芯片中的一个小系统,能够实现电子设备对最底层的、硬件的检测与控制。

在BMC和BIOS进行通信的过程中,交互的数据会写入到共享内存的一段存储空间,并通过交互IPMI命令以通知对端读取共享内存中所写入的数据,该共享内存可以是VGA(视频图像阵列,Video Graphics Array)所对应的共享内存。在此过程中,BMC和BIOS的处理器除了将数据写入共享内存之外,还需要通过构造IPMI(智能平台管理接口,IntelligentPlatform Management Interface)等命令进行相互的通知,因此,需要处理器消耗更多的资源实现,对服务器的处理器造成更多的负担,降低了服务器中资源的使用效率。

发明内容

为克服相关技术中存在的问题,本说明书提供了一种处理器间的数据交互方法、装置以及服务器。

结合本说明书实施方式的第一方面,本申请提供了一种处理器间的数据交互方法,应用于服务器,包括:

第一处理器获取硬件状态信息;

第一处理器将所获取的硬件状态信息写入到共享内存的第一预留空间;

第一处理器将第一预留空间中的数据标识标记为有效状态,以使第二处理器在检测到第一预留空间中的数据标识为有效状态时,从第一预留空间中读取硬件状态信息。

可选的,共享内存还包括第二预留空间;

该方法,还包括:

若第一处理器检测到第二预留空间中的数据标识被标记为有效状态,则从第二预留空间中读取硬件状态信息;

第一处理器将第二预留空间中的数据标识标记为失效状态。

可选的,数据标识包括至少两个比特;

至少两个比特中的第一比特用于标记第一预留空间中写入的硬件状态信息由第一处理器写入;

至少两个比特中的第二比特用于标记第一预留空间中写入的硬件状态信息由第二处理器写入。

可选的,第一处理器为服务器的主板上的处理器和基板管理控制器BMC中的一者,第二处理器为服务器的主板上的处理器和BMC中的另一者。

可选的,共享内存为VGA共享内存。

结合本说明书实施方式的第二方面,本申请提供了一种处理器间的数据交互装置,应用于服务器的第一处理器,包括:

获取单元,用于获取硬件状态信息;

写入单元,用于将所获取的硬件状态信息写入到共享内存的第一预留空间;

标记单元,用于将第一预留空间中的数据标识标记为有效状态,以使服务器中的第二处理器检测到数据标识为有效状态时,从预留空间中读取硬件状态信息,并将预留空间中的数据标识标记为失效状态。

可选的,共享内存还包括第二预留空间;

该装置,还包括:

读取单元,用于若检测到第二预留空间中的数据标识被标记为有效状态,则从第二预留空间中读取硬件状态信息;

标记单元,还用于将第二预留空间中的数据标识标记为失效状态。

可选的,数据标识包括至少两个比特;

至少两个比特中的第一比特用于标记第一预留空间中写入的硬件状态信息由第一处理器写入;

至少两个比特中的第二比特用于标记第一预留空间中写入的硬件状态信息由第二处理器写入。

可选的,第一处理器为服务器的主板上的处理器和BMC中的一者,第二处理器为服务器的主板上的处理器和BMC中的另一者。

可选的,共享内存为VGA共享内存。

结合本说明书实施方式的第三方面,本申请提供了一种服务器,包括BMC模组、共享内存和主板,主板上设置有处理器,BMC模组上设置有BMC,共享内存设置于主板或BMC模组中的一者;

处理器或BMC中的一者获取服务器中所设置的器件的硬件状态信息;

处理器或BMC中的一者向共享内存的预留空间中写入所获取的硬件状态信息,并预留空间中的数据标识标记为有效状态,以使处理器或BMC中的另一者在检测到预留空间中的数据标识被标记为有效状态,则从预留空间中读取处理器所获取的硬件状态信息,并将预留空间中的数据标识标记为失效状态。

可选的,预留空间包括第一预留空间和第二预留空间;

第一预留空间,用于第一处理器写入所获取的硬件状态信息以及第二处理器读取第一处理器写入的硬件状态信息;

第二预留空间,用于第二处理器写入所获取的硬件状态信息以及第一处理器读取第二处理器写入的硬件状态信息。

本说明书的实施方式提供的技术方案可以包括以下有益效果:

本说明书实施方式中,在两个处理器都能够访问的共享内存中设置包含有数据标识的预留空间,在一个处理器向预留空间中写入硬件状态信息后,将数据标识置为有效状态,另一个处理器在感知到数据标识被置位后,从预留空间中读取出该硬件状态信息,避免了处理器之间进行数据交互的过程中构造并向对端的处理器发送通知命令的过程,降低了服务器的处理器的负担,提升了服务器中的资源使用效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施方式,并与说明书一起用于解释本说明书的原理。

图1是本申请所涉及的一种处理器间的数据交互方法的流程图;

图2是本申请所涉及的一种实施方式中的共享内存的示意图,其中,共享内存中包含第一预留空间;

图3是本申请所涉及的另一种实施方式中的共享内存的示意图,其中,共享内存中包含第一预留空间和第二预留空间;

图4是本申请所涉及的一种实施方式中的共享内存的示意图,其中,共享内存中包含第一预留空间,且第一预留空间中设置有两个比特的数据标识;

图5是本申请所涉及的一种服务器的结构示意图;

图6是本申请所涉及的一种实施方式中的共享内存的示意图,其中,共享内存中包含预留空间1和预留空间2;

图7是本申请所涉及的一种处理器间的数据交互装置的结构示意图。

具体实施方式

这里将详细地对示例性实施方式进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施方式中所描述的实施方式并不代表与本说明书相一致的所有实施方式。

在本申请所涉及的一种处理器间的数据交互方法,应用于服务器,该方法如图1所示,包括:

S100、第一处理器获取硬件状态信息。

在服务器中可以包括有主板和用于实现服务器的监控和管理的监控板,比如,设置有BMC的BMC模组。在主板上设置有处理器、存储器和总线等结构。BMC模组与主板之间通过连接器连接,比如PCIE(Peripheral Component Interconnect Express)连接器。

在监控板和主板连接后,通过主板上的总线监控板上的处理器可以实现对于主板上所设置桥接芯片访问共享内存,该共享内存可以是VGA共享内存。这样一来,监控板和主板之间就可以通过共享内存进行数据交互。该共享内存可以是监控板上的内存,也可以是主板上所设置的内存。

在主板上还部署有其他器件,这些器件可以为温度传感器、内存、风扇、和指示灯等等。主板的处理器在服务器运行的过程中,可以获取到主板上所设置的器件的状态(包括处理器),该器件的状态后续称为硬件状态信息,比如CPU型号、CPU主频、内存的容量、风扇转速和指示灯的闪亮情况。

需要说明的是,所提及的第一处理器和第二处理器可以分别是BMC和主板上的处理器,即第一处理器为服务器的主板上的处理器和BMC中的一者,第二处理器为服务器的主板上的处理器和BMC中的另一者。

S101、第一处理器将所获取的硬件状态信息写入到共享内存的第一预留空间。

第一预留空间中可以包含至少两个区域,如图2所示,第一区域用于容纳写入的硬件状态信息,第二区域用于容纳数据标识。

在第一处理器获取到硬件状态信息后,通过主板上的总线访问共享内存,并将所获取的硬件状态信息写入到共享内存的第一预留空间,具体的,第一处理器将被写入到第一预留空间的第一区域。

S102、第一处理器将第一预留空间中的数据标识标记为有效状态,以使第二处理器在检测到第一预留空间中的数据标识为有效状态时,从第一预留空间中读取硬件状态信息。

在第一处理器在通过总线将硬件状态信息写入到第一预留空间后,需要通知第二处理器从第一预留空间中读取。

此时,第一处理器将向第一预留空间的第二区域写入有效状态。比如,当第二区域为一个比特时,该比特为0时,数据标识为失效状态,表示第一处理器未写入硬件状态信息,该比特被置为1时,数据标识为有效状态,表示已经有新的硬件状态信息被写入到第一预留空间。

第二处理器会持续的检测第一预留空间中的数据标识,当检测到该数据标识被置为有效状态时,则从第一预留空间的第二区域读取出已经被第一处理器写入的硬件状态信息。

这样一来,在第一处理器和第二处理器通过共享内存进行数据交互时,就可以通过预留空间中的数据标识让对端的处理器感知到硬件状态信息的写入,以从该共享内存的预留空间中获取到硬件状态信息,从而使处理器之间通过共享内存进行数据交互时,处理器无需单独构建通知命令并向对端的处理器发送,降低了服务器的处理器的负担,提升了服务器中的资源使用效率。

需要说明的是,本申请除了应用于包含有多个处理器的服务器中之外,还可以应用于其他电子设备,例如,设置了监控板和主板的个人电脑等。另外,在BMC和CPU进行数据交互时,BMC一般会获取动态的硬件状态信息,比如温度和指示灯等的相关信息,CPU一般会获取静态的硬件状态信息,比如内存的容量、CPU的主频和CPU的型号等,对于实际获取到的信息以及进行交互的信息不做限制。

可选的,在共享内存中还可以包括第二预留空间,如图3所示。

上述的方法,还包括:

S103、若第一处理器检测到第二预留空间中的数据标识被标记为有效状态,则从第二预留空间中读取硬件状态信息。

S104、第一处理器将第二预留空间中的数据标识标记为失效状态。

在共享内存中,除了第一预留空间用于第一处理器写入硬件状态信息,以使第二处理器从其中读取硬件状态信息之外,还可以设置另一个预留空间(即成为第二预留空间)。该第二预留空间可以用于第二处理器写入其所获取的硬件状态信息,以使第一处理器从第二预留空间中读取。

在第一处理器向共享内存中写入一次硬件状态信息,且该硬件状态信息已经被第二处理器读出后,第二处理器仍可能对数据标识进行检测。此时,如果第一处理器并未进行第二次的写入操作,那么,第二处理器可能会重复地获取第一处理器写入的硬件状态信息,从而导致第二处理器获取到过时的硬件状态信息,进而造成服务器资源的浪费。此时,可以通过设置定时器的方式,使第二处理器在经过一段时间后才开始第二次硬件状态信息的获取,以使第一处理器在第二次或第三次写入硬件状态信息后覆盖第一次的硬件状态信息。虽然这样可以一定程度地降低第二处理器重复获取的可能性,但是这样也无法完全避免第二处理器重复获取的问题。

为了避免上面所提到的处理器重复获取硬件状态信息的问题。

在第一处理器从第二预留空间中读取出来后,第一处理器需要将该数据标识置为失效状态,比如当数据标识为一比特时,将该比特从1置为0,以使数据标识变为失效状态,直至第二处理器下一次向第二预留空间中写入硬件状态信息。当然,在第一处理器向第一预留空间写入的硬件状态信息被第二处理器读出时,第二处理器也可以将第一预留空间中的数据标识标记为失效状态,以等待下一次第一处理器写入硬件状态信息。

通过处理器对预留空间中的数据标识进行切换,能够避免在处理器未写入硬件状态信息的情况下,频繁地读取共享内存,或者在新的硬件状态信息未被写入的情况下,重复地读取共享内存的问题,进一步地降低了处理器的负担,提高了服务器资源的使用效率。

在另一种情况下,也可以仅通过在共享内存中设置一个预留空间实现处理器之间的相互读写,此时,在预留空间中需要能够区分硬件状态信息是由那一侧写入的。

为了解决上述问题,可以为数据标识预留至少两个比特,如图4所示。

所预留的至少两个比特中的第一比特用于标记第一预留空间中写入的硬件状态信息由第一处理器写入;所预留的至少两个比特中的第二比特用于标记第一预留空间中写入的硬件状态信息由第二处理器写入。

在第一预留空间的第二区域中可以配置有两个比特。

在第一处理器向第一预留空间写入硬件状态信息后,会将第一比特置于有效状态,比如置为1,第二处理器会持续检测该第一比特,当该第一比特被置为有效状态时,将从第一预留空间中读出硬件状态信息,并且,可以在读取完成后,将该第一比特置为0,即失效状态。

在第二处理器向第一预留空间写入硬件状态信息后,会将第二比特置于有效状态,比如置为1,第一处理器会持续检测该第二比特,当该第二比特被置为有效状态时,将从第一预留空间中读出硬件状态信息,并且,可以在读取完成后,将该第二比特置为0,即失效状态。

第一处理器会持续检测第二比特以确定第二处理器是否向第一预留空间写入硬件状态信息,而第二处理器会持续检测第一比特以确定第一处理器是否向第一预留空间中写入硬件状态信息。并且,第一处理器可以在读出硬件状态信息后将第二比特重新置为0,即失效状态,相对应的,第二处理器可以在读出硬件状态信息后将第一比特重新置为0,即失效状态,以准备下一次的写入。

下面以一个具体的实施方式,对本申请所涉及的一种处理器间的数据交互方法进行说明,应用于如图5所示的服务器中,其中,该服务器至少包括BMC模组和主板,在主板上设置有CPU(中央处理器,Central Processing Unit),在BMC模组上设置有BMC。

在BMC模组上还设置有VGA共享内存,该VGA共享内存中分为两个预留空间,如图6所示,即预留空间1和预留空间2。预留空间1设置有区域1和区域2这两个区域,预留空间2设置有区域3和区域4。其中,区域1和区域3用于存储写入的硬件状态信息,区域2和区域4用于存储数据标识,并且,区域2用于表示CPU是否向预留空间1写入了硬件状态信息,区域4用于表示BMC是否向预留空间2写入了硬件状态信息。在本实施方式中,数据标识为一比特,当数据标识被置为1时,表示数据标识处于有效状态,写入了硬件状态信息,当数据标识被置为0时,表示数据标识处于失效状态,硬件状态信息被读出。具体的,可以分别为预留空间1和预留空间2设置1MB(兆字节,MByte)的存储空间用于数据交互。

在BMC模组上,BMC可以通过AHB总线(高级高性能总线,Advanced HighPerformance Bus)连接到BMC模组上的VGA共享内存,主板上的CPU通过PCH(PlatformController Hub,平台控制器集线器)经过P2A(PCIE to AHB)桥连接到BMC模组上的AHB总线,以实现主板对VGA共享内存的访问。这样一来,BMC模组上的BMC和主板上的CPU都可以对BMC模组上的VGA共享内存进行访问。

一种处理器间的数据交互方法,包括:

S1、CPU和BMC进行初始化。

在CPU和BMC中需要分别调用用户态在应用程序中注册信号处理函数,即,分别在主板和BMC模组上进行初始化。

在BMC模组和主板上可以分别运行有Linux系统,在Linux系统中,包括内核态和用户态,在用户态中生成有多个应用程序的进程。应用程序在一些情况下需要获取服务器中的器件所对应的硬件状态信息,因此,CPU和BMC需要在运行的用户态的应用程序进程中注册一个信号处理函数用于在内核态中的进程接收到异步通知(SIGIO)时,获取VGA共享内存中的数据。并且,需要在用户态的应用程序中支持异步通知,即在内核态中设置检测到数据标识被置为1时,通知哪一个应用程序的进程调用信号处理函数去读取VGA共享内存中的硬件状态信息。

另外,在CPU和BMC中需要进行配置,在运行过程中对特定的器件的运行状态进行检测,并通过内核态按照预定时间检测器件的状态,生成硬件状态信息。其中,CPU被配置为将硬件状态信息写入到VGA共享内存的预留空间1,BMC被配置为将硬件状态信息写入到VGA共享内存的预留空间2,并将预留空间2中的数据标识置为1。

在各自的信号处理函数中,CPU检测到预留空间2中的数据标识被置为1时,从预留空间2中读取数据,BMC检测到预留空间1中的数据标识被置为1时,从预留空间1中读取数据。

下面以CPU获取硬件状态信息为例进行描述。

S2、CPU将获取到的硬件状态信息写入到对应的预留空间中,并将预留空间的数据标识置为有效状态。

在CPU根据检测获取到主板上的器件的硬件状态信息后,根据配置将硬件状态信息写入到预留空间1的区域1中进行保存。

在硬件状态信息被写入后到预留空间1的区域1后,将预留空间1的区域2的数据标识置为1。

S3、BMC检测到预留空间中的数据标识被置为有效状态,从预留空间中读取CPU写入的硬件状态信息。

当CPU将预留空间1的数据标识置为1时,通过异步通知向应用程序的进程通知这一变化,并以使应用程序的进程调用信号处理函数从预留空间1中读取CPU写入的硬件状态信息。这样一来,便可以通过BMC的VGA共享内存完成CPU和BMC之间的数据交互。

BMC在获取到硬件状态信息后,将预留空间1的数据标识置为0,表示BMC已经读取了预留空间1中的硬件状态信息,以便于CPU下一次写入时硬件状态信息时可以准确的进行读取。并且,BMC可以通过BMC模组自身的处理功能对获取到的硬件状态信息进行处理,还可以基于BMC模组自身的显示功能,向显示器输出这一结果。

相对应的,BMC也可以向预留空间2中写入其获取的硬件状态信息,以使CPU进行读取,因为过程类似在此不再赘述。

相对应的,本申请还提供了一种处理器间的数据交互装置,如图7所示,应用于服务器的第一处理器,包括:

获取单元,用于获取硬件状态信息;

写入单元,用于将所获取的硬件状态信息写入到共享内存的第一预留空间;

标记单元,用于将第一预留空间中的数据标识标记为有效状态,以使服务器中的第二处理器检测到数据标识为有效状态时,从预留空间中读取硬件状态信息,并将预留空间中的数据标识标记为失效状态。

可选的,共享内存还包括第二预留空间;

该装置,还包括:

读取单元,用于若检测到第二预留空间中的数据标识被标记为有效状态,则从第二预留空间中读取硬件状态信息;

标记单元,还用于将第二预留空间中的数据标识标记为失效状态。

可选的,数据标识包括至少两个比特;

至少两个比特中的第一比特用于标记第一预留空间中写入的硬件状态信息由第一处理器写入;

至少两个比特中的第二比特用于标记第一预留空间中写入的硬件状态信息由第二处理器写入。

可选的,第一处理器为服务器的主板上的处理器和BMC中的一者,第二处理器为服务器的主板上的处理器和BMC中的另一者。

可选的,共享内存为VGA共享内存。

相对应的,本申请还提供了一种服务器,如图5所示,包括BMC模组、共享内存和主板,主板上设置有处理器(即CPU),BMC模组上设置有BMC,共享内存设置于主板或BMC模组中的一者;

处理器或BMC中的一者获取服务器中所设置的器件的硬件状态信息;

处理器或BMC中的一者向共享内存的预留空间中写入所获取的硬件状态信息,并预留空间中的数据标识标记为有效状态,以使处理器或BMC中的另一者在检测到预留空间中的数据标识被标记为有效状态,则从预留空间中读取处理器所获取的硬件状态信息,并将预留空间中的数据标识标记为失效状态。

可选的,预留空间包括第一预留空间和第二预留空间;

第一预留空间,用于第一处理器写入所获取的硬件状态信息以及第二处理器读取第一处理器写入的硬件状态信息;

第二预留空间,用于第二处理器写入所获取的硬件状态信息以及第一处理器读取第二处理器写入的硬件状态信息。

本说明书实施方式中,在两个处理器都能够访问的共享内存中设置包含有数据标识的预留空间,在一个处理器向预留空间中写入硬件状态信息后,将数据标识置为有效状态,另一个处理器在感知到数据标识被置位后,从预留空间中读取出该硬件状态信息,避免了处理器之间进行数据交互的过程中构造并向对端的处理器发送通知命令的过程,降低了服务器的处理器的负担,提升了服务器中的资源使用效率。

应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。

以上所述仅为本说明书的较佳实施方式而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

相关技术
  • 一种处理器间的数据交互方法、装置以及服务器
  • 一种基带处理器和应用处理器间的数据交互方法和系统
技术分类

06120112966147