本发明涉及计算机,更具体的说是涉及一种内存通道控制权的动态切换系统、方法、装置及介质。
背景技术:
1、当前服务器领域,随着信息技术的发展,大容量高带宽的ddr5内存正逐步替换ddr4,随之而得到应用的是频率更快的i3c通信协议,用于cpu等主设备访问内存上的spd(serial presence detect,串行存在检测)等信息。同时,新一代的bmc(比如aspeed、ast2600)也支持了i3c通信协议,因此只要有硬件连接,bmc端也具备了通过i3c访问内存spd的能力,由此对spd访问权限不同的应用场景也随之产生,其一的场景需求是只能cpu端保有对spd的带内访问,带外的bmc不具备访问权限,其二是bmc端可以从cpu端接过spd的访问权进行带外访问,其三是cpu端访问spd完成必要的内存初始化后,cpu或bmc都不允许继续访问spd。对一次启动过程而言,不同的应用场景软件行为必然不同,由于同一根内存的i3c通道,同一时间只能有一个主设备master占用,因此如何提供一种方法在一次启动中实现动态切换内存i3c通道的控制权是当前亟需解决的问题。
2、现有技术中,申请号为cn202111154341.0的发明专利公开了一种基于i3c的设备管理方法、装置、设备及可读介质,提供了一个通道让bmc通过i3c访问dimm设备,监控设备状态,在debug时获取dimm设备的error信息。首先将第一i3c连接节点的第一主端口分别连接至cpu和bmc,将第一i3c连接节点的第一从端口根据cpu的通道数量连接至内存设备,bmc通过i3c通信获取对内存设备的第一监控信息。然后将第二i3c连接节点的第二主端口分别连接至cpu和bmc,将第二i3c连接节点的第二从端口分别连接至若干监控设备,bmc通过i3c通信获取若干监控设备的第二监控信息。最后将第三i3c连接节点的第三主端口分别连接至bmc和具有prf功能的cpld,将第三i3c连接节点的第三从端口连接至平台控制器,bmc通过i3c通信获取cpld通过prf验证firmware的第三监控信息。
3、但是,该技术方案仅提供了一条i3c通道让bmc可以访问内存的spd信息,没有考虑内存i3c通道控制权切换的问题,由于同一时间只能有一个主设备master来占有这条通道,cpu或bmc无法随时获取这条通道的控制权。
技术实现思路
1、针对以上问题,本发明的目的在于提供一种内存通道控制权的动态切换系统、方法、装置及介质,实现了cpu端的bios使用完内存的spd信息后,可以选择性地动态切换i3c通道的控制权给其他的使用者。
2、本发明为实现上述目的,通过以下技术方案实现:一种内存通道控制权的动态切换系统,包括:cpu、cpld、bmc、bois、数据选择器和dimm插槽;cpu分别与cpld、bmc、bois连接,数据选择器分别通过i3c总线与cpu、cpld、bmc数据连接,cpu的控制信号输出端与数据选择器的信号输入端连接。
3、进一步,cpu的控制信号输出端gpio0与数据选择器的信号输入端s0连接,所述cpu的控制信号输出端gpio1与数据选择器的信号输入端s1连接。
4、进一步,数据选择器设有数据传输端口d0、数据传输端口d1、数据传输端口d2和数据传输端口d3;数据传输端口d0通过i3c总线与cpu数据连接,数据传输端口d1通过i3c总线与bmc数据连接,数据传输端口d2通过i3c总线与cpld数据连接,数据传输端口d3接地。
5、进一步,bmc用于在内存的h2b sram区域内存储json文件,json文件内记录有用于设置当前内存i3c通道控制权的master值,cpu通过读取master值生成相应的控制信号通过控制信号输出端gpio0和控制信号输出端gpio1发送至数据选择器,数据选择器根据控制信号对数据传输端口d0、数据传输端口d1和数据传输端口d2进行切换控制。
6、相应的,本发明还公开了一种内存通道控制权的动态切换方法,包括:bmc在内存的h2b sram区域以json文件的方式存储代表当前内存i3c通道控制权的master值;
7、用户根据需求通过带外的命令调整内存的h2b sram区域内存储的master值;在启动阶段,通过bios设置,利用cpu完成内存的初始化;
8、通过bios进行bmc h2b设备的初始化,使其sram区域能够访问,并通过解析json文件读取master值;
9、根据master值确定拥有当前内存i3c通道控制权的主设备,进行相应的控制权切换,并在启动过程中进行访问控制。
10、进一步,所述master值为gpio0信号和gpio1信号组成的信号组合值;当gpio0信号为0,gpio1信号为0时,master值为00,cpu为拥有当前内存i3c通道控制权的主设备;当gpio0信号为0,gpio1信号为1时,master值为01,bmc为拥有当前内存i3c通道控制权的主设备;当gpio0信号为1,gpio1信号为0时,master值为10,cpld为拥有当前内存i3c通道控制权的主设备。
11、进一步,在启动阶段,通过bios设置,利用cpu完成内存的初始化,包括:在启动阶段,通过bios初始化gpio0信号和gpio1信号组成的信号组合值为00,让cpu拥有当前内存i3c通道控制权;在cpu端,利用bios通过i3c总线读取内存spd信息,完成内存的初始化。
12、进一步,根据master值确定拥有当前内存i3c通道控制权的主设备,进行相应的控制器切换,并在启动过程中进行访问控制,包括:
13、当master值为00时,通过bios保持gpio0信号和gpio1信号组成的信号组合值为00,cpu继续拥有i3c通道的控制权;在后续的启动过程以及进入系统后,cpu继续访问和设置内存spd信息;
14、当master值为01时,通过bios将gpio0信号和gpio1信号组成的信号组合值更改为01,数据选择器接收到控制信号后,将i3c通道的控制权切换给bmc;在后续的启动过程以及进入系统后,只有cpu具有访问和设置内存spd信息的权限;当master值为10时,通过bios将gpio0信号和gpio1信号组成的信号组合值更改为10,数据选择器接收到控制信号后,将i3c通道的控制权切换给cpld;在后续的启动过程以及进入系统后,没有设备具有访问和设置内存spd信息的权限。
15、相应的,本发明公开了一种内存通道控制权的动态切换装置,包括:
16、存储器,用于存储内存通道控制权的动态切换程序;
17、处理器,用于执行所述内存通道控制权的动态切换程序时实现如上文任一项所述内存通道控制权的动态切换方法的步骤。
18、相应的,本发明公开了一种可读存储介质,所述可读存储介质上存储有内存通道控制权的动态切换程序,所述内存通道控制权的动态切换程序被处理器执行时实现如上文任一项所述内存通道控制权的动态切换方法的步骤。
19、对比现有技术,本发明有益效果在于:本发明公开了一种内存通道控制权的动态切换系统、方法、装置及介质,通过增加内存i3c通道控制权的切换电路以及在bios中增加了切换逻辑,利用bmc h2b sram空间存储用户的切换需求,在启动过程中解析用户的需求,进而动态切换内存i3c通道的控制权为cpu、bmc或cpld,切换方法灵活高效,可适应对内存spd访问权限需求不同的应用场景。
20、由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。