访问控制器、访问控制方法、计算机设备及可读存储介质与流程

文档序号:25481379发布日期:2021-06-15 21:40阅读:176来源:国知局
访问控制器、访问控制方法、计算机设备及可读存储介质与流程

本申请涉及计算机技术领域,特别是涉及一种访问控制器、访问控制方法、计算机设备及可读存储介质。



背景技术:

串行存在侦测(serialpresencedetection,spd)芯片存储有内存的关键信息,服务器中的中央处理器(centralprocessingunit,cpu)和基板管理控制器(baseboardmanagercontroller,bmc)均可以通过集成电路互联(inter-integratedcircuit,i2c)总线访问spd。

在初始化阶段cpu可以通过i2c总线读取spd中的内存配置信息,根据读取到的信息进行初始化。服务器运行阶段bmc也可以通过i2c总线访问spd,读取spd的温度数据,从而可以根据spd的温度数据控制风扇降温。在bmc读数据时,若发生系统复位,通过i2c访问spd内存的权限由bmc切换至cpu,会导致spd内存向bmc回传的数据丢失。

现有的spd芯片访问机制中,bmc与cpu存在访问竞争,可能导致bmc读取的内存数据的丢失,数据访问的可靠性较低。



技术实现要素:

本申请实施例提供一种访问控制器、访问控制方法、计算机设备及可读存储介质,能够在解决bmc和cpu对spd芯片的访问竞争同时实现对spd的可靠访问。

第一方面,提供了一种访问控制器,包括:仲裁电路和基板管理控制器bmc的控制电路;

bmc的控制电路用于,接收中央处理器cpu发送的第一信号后,根据bmc对串行存在侦测spd芯片的访问状态向仲裁电路发送第二信号;第一信号用于指示cpu对spd芯片的访问状态为待访问状态或完成访问状态,第二信号用于指示bmc对spd芯片的访问状态为使能状态或禁用状态;

仲裁电路用于,接收第一信号以及第二信号,根据第一信号以及第二信号为目标设备分配访问权限;其中,目标设备为bmc或cpu。

本申请第一方面中,根据bmc的控制电路、cpu各自发送的信号确定cpu、bmc当前对spd芯片的访问状态,再根据bmc、cpu当前对spd芯片的访问状态决策访问权限,避免由于权限切换导致任意一方正在传输的数据丢失,能够在解决bmc和cpu对spd芯片的访问竞争的同时,保证对spd的可靠访问。

结合第一方面,在第一方面的第一种实现方式中,仲裁电路具体用于:

若cpu对spd芯片的访问状态为待访问状态,且bmc对spd芯片的访问状态为禁用状态,则为cpu分配访问权限;该访问权限指的是对spd芯片的访问权限。

若cpu对spd芯片的访问状态为待访问状态,且bmc对spd芯片的访问状态为使能状态,则确定目标设备为bmc,为bmc分配访问权限;

若cpu对spd芯片的访问状态为完成访问状态,且bmc对spd芯片的访问状态为使能状态,则确定目标设备为bmc,为bmc分配访问权限。

本申请第一方面,提供了仲裁电路分配spd芯片访问权限的具体实现方式,可以确保同一时刻仅有一个主控设备访问spd芯片,避免由于spd芯片访问权限切换导致数据传输中断的问题。

本申请第一方面,访问控制器还包括cpu的控制电路。仲裁电路具体用于:若目标设备为bmc,导通bmc的控制电路与spd芯片之间的通道,为bmc分配访问权限;

或者,若目标设备为cpu,导通cpu的控制电路与spd芯片之间的通道,为cpu访问权限。

本申请第一方面提供了导通分配访问权限的具体实现方式,通过导通访问控制器中的bmc的控制电路或cpu的控制电路可以实现为bmc或cpu分配访问权限。

结合第一方面,在第一方面的一种实现方式中,仲裁电路具体用于:

在确定目标设备为bmc后的同一时刻导通bmc的控制电路与spd芯片之间的所有通道,或者,在确定目标设备为cpu后的同一时刻导通cpu的控制电路与spd芯片之间的所有通道。

本申请第一方面中,可以同时导通控制电路与spd芯片之间的所有通道,实现对spd芯片的多路同时访问,也在一定程度上缩短了对spd芯片的访问周期。

结合第一方面,在第一方面的一种实现方式中,访问控制器还包括通道控制开关,通道控制开关与spd芯片连接;

仲裁电路具体用于,控制通道控制开关导通bmc的控制电路与spd芯片之间的通道,或,控制通道控制开关导通cpu的控制电路与spd芯片之间的通道。

本申请第一方面中,可以通过控制开关导通bmc的控制电路与spd芯片之间的通道或cpu的控制电路与spd芯片之间的通道。

结合第一方面,在第一方面的一种实现方式中,bmc的控制电路还用于,在仲裁电路导通bmc的控制电路与spd芯片之间的所有通道后,通过bmc的控制电路与spd芯片之间的所有通道获取内存温度数据,向bmc发送内存温度数据;

cpu的控制电路还用于,在仲裁电路导通cpu的控制电路与spd芯片之间的所有通道后,通过cpu的控制电路与spd芯片之间的所有通道获取内存配置数据,向cpu发送所述内存配置数据。

本申请第一方面中,提供了bmc或cpu通过访问控制器获取spd芯片数据的具体实现方案。bmc的控制电路可以访问spd芯片获取内存温度数据,并向bmc发送获得的内存温度数据,使得bmc可以快速获取内存温度数据。cpu的控制电路可以访问spd芯片获取内存配置数据,并向cpu发送获得的内存配置数据,使得cpu可以获取内存配置数据。

结合第一方面,在第一方面的一种实现方式中,bmc的控制电路包括:主控制模块、滤波模块以及存储模块,主控制模块与spd芯片连接;

其中,主控制模块用于从spd芯片获取原始温度数据,并向滤波模块发送原始温度数据;

滤波模块用于,从主控制模块接收原始温度数据,对原始温度数据进行干扰数据滤除处理获得内存温度数据,将内存温度数据发送给存储模块;

存储模块用于,从滤波模块接收内存温度数据,对内存温度数据进行压缩处理,向bmc发送压缩处理后的内存温度数据。

本申请第一方面中,bmc的控制电路可以对获取到的内存温度数据进行滤波,提高内存温度数据的准确度。

结合第一方面,在第一方面的一种实现方式中,cpu的控制电路还用于,在仲裁电路导通cpu的控制电路与spd芯片之间的所有通道后,通过cpu的控制电路与spd芯片之间的所有通道获取内存配置数据,向cpu发送内存配置数据。

本申请第一方面中,cpu的控制电路可以访问spd芯片获取内存配置数据,并向cpu发送获得的内存配置数据,使得cpu可以获取内存配置数据。

第二方面,提供了一种计算机设备,包括访问控制器、中央处理器cpu、基板管理控制器bmc以及串行存在侦测spd芯片,访问控制器包括仲裁电路以及bmc的控制电路,

cpu用于,向访问控制器发送第一信号,第一信号用于指示cpu对spd芯片的访问状态为待访问状态或完成访问状态;

访问控制器用于,接收第一信号,响应于第一信号确定bmc对spd芯片的访问状态,bmc对spd芯片的访问状态包括使能状态或禁用状态;

访问控制器还用于,根据cpu对spd芯片的访问状态以及bmc对spd芯片的访问状态为目标设备分配访问权限;其中,目标设备为bmc或cpu。

结合第二方面,在第二方面的一种可能的实现方式中,访问控制器包括仲裁电路和bmc的控制电路,

cpu用于,向bmc的控制电路以及仲裁电路发送第一信号;

bmc的控制电路用于,响应于第一信号,根据bmc对串行存在侦测spd芯片的访问状态向仲裁电路发送第二信号;第二信号用于指示bmc对spd芯片的访问状态为使能状态或禁用状态;

仲裁电路用于,根据第一信号确定cpu对spd芯片的访问状态,根据第二信号确定bmc对spd芯片的访问状态,并根据cpu对spd芯片的访问状态以及bmc对spd芯片的访问状态为目标设备分配访问权限。

第三方面,提供一种访问控制方法,其特征在于,应用于上述访问控制器,该方法包括:

接收中央处理器cpu发送的第一信号,所述第一信号用于指示所述cpu对串行存在侦测spd芯片的访问状态为待访问状态或完成访问状态;

响应于所述第一信号确定所述bmc对所述spd芯片的访问状态,所述bmc对所述spd芯片的访问状态包括使能状态或禁用状态;

根据所述cpu对所述spd芯片的访问状态以及所述bmc对所述spd芯片的访问状态为目标设备分配访问权限;其中,所述目标设备为所述bmc或所述cpu。

第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时上述第三方面所述的方法的步骤。

本申请中,可以结合cpu以及bmc当前对spd芯片的访问状态,保证同一时刻仅有一个主控设备(cpu或bmc)占用i2c总线访问spd芯片。当cpu通过信号发起对spd芯片的访问时,确定bmc当前未访问spd芯片,才将访问权限分配给cpu。在解决cpu以及bmc的spd访问冲突的同时,保证bmc正在进行的数据传输不会被中断,避免内存数据的丢失,实现了对spd数据的可靠读写。

附图说明

图1为本申请实施例提供的服务器系统示意图;

图2为本申请实施例提供的spd芯片访问控制示意图;

图3~图7本申请实施例提供的访问控制器的示意图;

图8本申请实施例提供的状态转移示意图;

图9本申请实施例提供的访问控制方法的流程示意图;

图10本申请实施例提供的访问控制方法的另一流程示意图;

图11为本申请实施例提供的计算机设备的结构示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请实施例提供的方法适用于图1所示的服务器。参考图1,该服务器包括cpu、bmc以及spd芯片。spd芯片中存储有内存的关键信息,例如,内存配置信息。参考图1,cpu可以通过i2c总线读取spd芯片中的内存配置信息进行初始化,bmc可以通过i2c总线读取spd芯片的温度传感器的数据。

现有技术参考图2所示的电路实现cpu、bmc对spd芯片的访问控制。示例的,参考图2,cpu、bmc可以通过4个通道(图2所示的ch0~ch3)访问spd芯片,每个通道可以访问8个spd芯片地址。

具体地,参考图2,在系统初始化阶段,cpu通过u3向mux(u4)发送信号(bios_post_complt_n==1),指示mux选通cpu对应的总线通道(图2所示的cpu_spd_i2c)。随后,u5依次修改u5内部的控制寄存器b0~b3的值,实现cpu对ch0~ch3的依次访问。从而cpu可以依次访问到32(4*8)个spd芯片地址,获取内存配置数据,根据内存数据进行初始化设置。

当cpu执行完初始化后,通过u3向mux发送信号,(bios_post_complt_n==0),指示mux选通bmc对应的总线通道(图1所示的bmc_spd_i2c),再由u5依次修改内部控制寄存器b0~b3的值,实现bmc对ch0~ch3的依次访问,从而bmc可以依次访问到32(4*8)个spd芯片地址,获取内存温度数据,根据内存温度数据调节风扇。

图2所示的电路设计存在以下的问题:

(1)bmc与cpu存在spd芯片访问竞争,可能导致bmc读取的内存数据的丢失:在bmc读数据时,系统执行复位(reset)时访问spd芯片的权限由bmc切换至cpu,会导致spd芯片向bmc回传的数据丢失。会概率性出现spd总线阻塞,i2c总线被锁死现象,导致cpu无法正常初始化内存,系统夯机。

(2)u5依次修改内部控制寄存器b0~b3的值,才能实现bmc或cpu对ch0~ch3的依次访问。对于bmc而言spd芯片数据读取周期较长,内存读取效率不高,bmc不能及时获取内存的温度数据,导致服务器对风扇的调节滞后。

(3)电路中的器件(例如,u3、u4、u5)之间采用级联的方式,器件之间的信号传输质量有所下降,可能导致传输的误码率上升,也会影响对spd芯片数据的读取效率。

总之,目前的方案存在spd芯片数据访问的可靠性较低,spd芯片数据的读取效率不高的问题。基于此,本申请实施例提供一种访问控制器,能够提高spd芯片数据访问的可靠性,并且提高spd芯片数据的读取效率。示例性的,参考图3,所述访问控制器装设于服务器主板中,通过i2c总线分别与cpu、bmc以及spd芯片连接。cpu、bmc可以通过图3所示的访问控制器1访问spd芯片中的数据。

本申请实施例图3所示的访问控制器1为独立器件,例如,可以是复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld)。通过独立器件实现对cpu、bmc的访问控制,简化现有电路的设计,避免引入了过多器件级联。简化了cpu、bmc对spd芯片的访问链路,降低了cpu、bmc与spd芯片之间传输信号的干扰。在访问控制器(例如,cpld)中通过硬件描述语言增加u3、u4、u5的功能,不会增加额外的硬件成本。

参考图4,上述访问控制器1可以包括仲裁电路10和bmc的控制电路20,用于实现对cpu、bmc的访问控制。需要说明的是,cpu可以主动向仲裁电路10发起对spd芯片的访问,也可以在访问结束后指示仲裁电路10已完成对spd芯片的访问。本申请实施例中,cpu可以向cpld发送第一信号,该信号可以指示cpu对spd芯片的访问状态。其中,cpu对spd芯片的访问状态可以包括待访问状态或完成访问状态。

示例的,参考图4,当cpu有访问spd芯片的需求时(例如,进行初始化或系统复位),cpu向仲裁电路10发送第一信号指示cpu对spd芯片的访问状态为待访问状态。当cpu结束对spd芯片的访问时,cpu向仲裁电路10发送第一信号指示cpu对spd芯片的访问状态为完成访问状态。

一种可能的实现方式中,第一信号可以是post_complt_n信号,当post_complt_n==1(例如,post_complt_n为高电平信号),表明cpu对spd芯片有访问需求,即将访问spd芯片,cpu对spd芯片的访问状态为待访问状态。当post_complt_n==0(例如,post_complt_n为低电平信号),表明cpu已经完成对spd芯片的访问需求,cpu对spd芯片的访问状态为完成访问状态。

仲裁电路10还用于,在接收上述第一信号后,确定基板管理控制器bmc对spd芯片的访问状态,还可以根据bmc对spd芯片的访问状态以及cpu对spd芯片的访问状态确定访问spd芯片的目标设备。在确定目标设备之后,还可以为目标设备分配访问权限;其中,目标设备为bmc或cpu。

一种可能的实现方式中,若cpu对spd芯片的访问状态为待访问状态,且bmc对spd芯片的访问状态为禁用状态,则确定目标设备为cpu,为cpu分配访问权限。也就是说,当cpu发起对spd芯片的访问时,若bmc当前并未访问spd芯片,则将访问权限分配给cpu,随后由cpu访问spd芯片。

一种可能的实现方式中,若cpu对spd芯片的访问状态为待访问状态,且bmc对spd芯片的访问状态为使能状态,则确定目标设备为bmc,为bmc分配访问权限。也就是说,当cpu发起对spd芯片的访问时,bmc当前正在访问spd芯片,则拒绝或忽略cpu的访问请求,仍将访问权限分配给bmc,继续由bmc访问spd芯片。

一种可能的实现方式中,若cpu对spd芯片的访问状态为完成访问状态,则确定目标设备为bmc,为bmc分配访问权限。也就是说,当cpu向仲裁电路10指示cpu已完成对spd芯片的访问时,则可以将访问权限分配给bmc,后续可以由bmc访问spd芯片。

需要理解的是,对spd芯片的访问请求总是由cpu发起,bmc没有发起请求的权限。当cpu请求访问spd芯片时,cpu对spd芯片的访问状态为“待访问状态”;当cpu结束对spd芯片的访问时,cpu对spd芯片的访问状态为“完成访问状态”。对于bmc来说访问的权限是被动分配的,因此bmc对spd芯片的访问状态只有正在访问或者未在访问两种状态,也就是前文所述的使能状态、禁用状态。

本申请实施例中,当cpu发起请求时bmc正在访问spd芯片,则仲裁电路决策由bmc继续访问spd芯片;当cpu请求时bmc未访问spd芯片,则仲裁电路决策由cpu访问spd芯片;当cpu指示已结束对spd芯片的访问,仲裁电路可以决策后续由bmc访问spd芯片。在解决cpu以及bmc的spd访问冲突的同时,保证bmc正在进行的数据传输不会被中断,避免内存数据的丢失,实现了对spd数据的可靠读写。

本申请实施例图4所示的控制电路可以结合cpu以及bmc当前对spd芯片的访问状态,保证同一时刻仅有一个主控设备(cpu或bmc)占用i2c总线访问spd芯片。当cpu通过信号发起对spd芯片的访问时,确定bmc当前未访问spd芯片,才将访问权限分配给cpu。在解决cpu以及bmc的spd访问冲突的同时,保证bmc正在进行的数据传输不会被中断,避免内存数据的丢失,实现了对spd数据的可靠读写。

具体实现中,bmc的控制电路20可以通过在访问控制器中的电路结构上编写硬件描述语言来实现。

具体实现中,cpu在向仲裁电路10发送第一信号时,还可以同时向bmc的控制电路20发送第一信号。

bmc的控制电路20用于,接收cpu发送的第一信号后,根据bmc对上述spd芯片的访问状态向仲裁电路发送第二信号;第二信号用于指示bmc对spd芯片的访问状态。bmc对spd芯片的访问状态包括使能状态或禁用状态,当bmc正在访问spd芯片,bmc对spd芯片的访问状态为使能状态,当bmc未在访问spd芯片,bmc对spd芯片的访问状态为禁用状态。

所述仲裁电路10具体用于,接收bmc的控制电路20发送的第二信号,根据第二信号确定bmc对上述spd芯片的访问状态。

示例性的,当cpu有访问spd芯片的需求时,cpu向仲裁电路10和bmc的控制电路20分别发送post_complt_n==1,表明cpu即将访问spd芯片,即cpu对spd芯片的访问状态为待访问状态。bmc的控制电路20接收post_complt_n==1后确定bmc当前正在访问spd芯片,则向仲裁电路10发送bmc_complt_n==1,表明bmc正在访问spd芯片,即bmc当前对spd芯片的访问状态为使能状态。若bmc的控制电路20接收post_complt_n==1后确定bmc当前未访问spd芯片,则向仲裁电路10发送bmc_complt_n==0,表明bmc当前未访问spd芯片,即bmc当前对spd芯片的访问状态为禁用状态。

另一种情况中,当cpu完成对spd芯片的访问后,向仲裁电路10和bmc的控制电路20分别发送post_complt_n==0,表明cpu已经完成对spd芯片的访问,即cpu对spd芯片的访问状态为完成访问状态。bmc的控制电路20接收post_complt_n==1后确定bmc有访问spd芯片的需求,则向仲裁电路10发送bmc_complt_n==1(即第二信号),表明bmc对spd芯片的访问状态为使能状态。若bmc的控制电路20接收post_complt_n==1后确定bmc没有访问spd芯片的需求,则向仲裁电路10发送bmc_complt_n==0(即第二信号),表明bmc对spd芯片。

需要说明的是,当cpu完成对spd芯片的访问,仲裁电路可以直接将访问权限分配给bmc,也可以根据bmc的需求分配访问权限。例如,第一信号指示cpu对spd芯片的访问状态为完成访问状态,则将访问权限分配给bmc。或者,当第一信号指示cpu对spd芯片的访问状态为完成访问状态,第二信号指示bmc对spd芯片的访问状态为使能状态,则将访问权限分配给bmc。

本申请实施例中,cpu主动发起对spd芯片访问时,bmc的控制电路20向仲裁电路10上报bmc对spd芯片的访问状态,以便仲裁电路10决定访问权限的归属。当cpu主动上报结束对spd芯片访问时,bmc的控制电路20也可以向仲裁电路10上报bmc对spd芯片的访问状态,以便仲裁电路10决定访问权限的归属。使得仲裁电路10可以确定cpu、bmc当前对spd芯片的访问状态,正确进行访问权限的分配,避免错误进行访问权限切换导致spd芯片正在进行的数据传输的中断。

参考图5,上述访问控制器1可以包括cpu的控制电路30,cpu的控制电路30可以通过在访问控制器中的电路结构上编写硬件描述语言来实现。参考图5,bmc的控制电路20、cpu的控制电路30分别通过独立的通道与spd芯片连接。例如,图中虚线所示的访问通道为bmc的控制电路20与spd芯片之间的通道,图中实线所示的访问通道为cpu的控制电路30与spd芯片之间的通道。

基于图5所示的访问控制器,仲裁电路可以通过导通cpu的控制电路30或bmc的控制电路20实现对spd访问权限的分配。示例性的,上述仲裁电路10具体用于:若目标设备为bmc,则导通bmc的控制电路与spd芯片之间的通道,为bmc分配访问权限;或者,若目标设备为cpu,则导通cpu的控制电路与spd芯片之间的通道,为cpu访问权限。

具体实现中,参考图5,访问控制器还包括通道控制开关k0~kn。若目标设备为bmc,仲裁电路向控制开关k0~kn分别发送导通信号(例如,sel信号),指示控制开关k0~kn分别导通bmc的控制电路与spd芯片之间的通道,即图中虚线所示的通道。若目标设备为cpu,仲裁电路向控制开关k0~kn分别发送导通信号,指示控制开关k0~kn分别导通cpu的控制电路与cpu芯片之间的通道,即图中实线所示的通道。

一种可能的实现方式中,实现对spd芯片的快速访问,仲裁电路10可以同时导通目标设备与spd芯片之间的所有访问通道,通过各通道同时访问spd芯片,避免依次访问各个spd内存地址拉长访问周期。

上述仲裁电路10具体用于:在确定目标设备为bmc后的同一时刻导通bmc的控制电路20与spd芯片之间的所有通道,或者,在确定目标设备为cpu后的同一时刻导通cpu的控制电路与spd芯片之间的所有通道。

一种可能的实现方式中,导通目标设备在访问控制器1中的控制电路后,还可以通过对应的控制电路从spd芯片读取数据。

示例性的,bmc的控制电路20还用于,在仲裁电路10导通bmc的控制电路20与spd芯片之间的所有通道后,通过bmc的控制电路20与spd芯片之间的所有通道获取内存温度数据,向bmc发送内存温度数据。示例的,仲裁电路10向开关组件(例如,图5中的k0~kn)发送sel信号,指示各个开关组件导通图5中虚线形式的访问通道。

cpu的控制电路30还用于,在仲裁电路10导通cpu的控制电路30与spd芯片之间的所有通道后,通过cpu的控制电路30与spd芯片之间的所有通道获取内存配置数据,向cpu发送内存配置数据。示例的,仲裁电路10向开关组件(例如,图5中的k0~kn)发送sel信号,指示各个开关组件导通图6中实线形式的访问通道。

参考图6,上述bmc的控制电路20可以包括主控制模块201、滤波模块202以及存储模块203。其中,主控制模块201的数量由spd芯片的内存总线通道决定,示例的,spd芯片的内存总线包括四路通道,则控制电路20包括4个主控制模块201,分别从一路spd芯片的内存总线通道读取数据。需要说明的是,前文所述的“bmc的控制电路与spd芯片之间的通道”为主控制模块301与spd芯片之间的通道。

一种可能的实现方式中,主控制模块201用于在仲裁电路10导通主控制模块201与spd芯片之间的所有通道后,通过主控制模块201与spd芯片之间的所有通道访问spd芯片获取原始温度数据,并向滤波模块202发送原始温度数据;

滤波模块202用于,从主控制模块201接收原始温度数据,对原始温度数据进行干扰数据滤除处理获得内存温度数据,将内存温度数据发送给存储模块203;具体实现中,上述干扰数据滤除处理可以是中值滤波,对原始温度数据进行干扰数据滤除处理,可以将原始温度数据中的干扰数据滤除,提高温度数据的准确度。

存储模块203用于,从滤波模块202接收所内存温度数据。存储模块203可以将各个通道访问到的温度数据统一存储并,将所有内存温度数据统一发送给bmc。bmc可以向存储模块203发送一条多字节读取命令,完成全部温度数据的获取,避免bmc逐一发命令从spd芯片读取内存温度数据,简化了bmc数据读取流程以及缩短了数据读取周期。存储模块203还可以对获取到的内存温度数据进行压缩处理,向bmc发送压缩处理后的内存温度数据。

需要说明的是,图3~图6所示的电路结构中,spd芯片对应多个访问通道,本申请实施例中spd芯片的访问通道数量并不局限于图3~图6所示,本申请实施例提供的方法还适用于其它访问通道数量。本申请实施例中所述的cpu的控制电路、仲裁电路以及bmc的控制电路可以是cpld中按照逻辑划分的功能模块,基于实际的电路和硬件描述语言实现相应的功能。

以spd芯片对应4个访问通道(分别为ch0~ch3),且每个通道可以访问8个spd芯片地址作为示例,本申请实施例还提供图8所示的访问控制器。

参考图7,在访问控制器中,cpu的控制电路30是用硬件描述语言verilog实现的4路i2c扩展器,cpu可以通过cpu的控制电路30选通cpu_spd_i2c和spd芯片的四路通道ch0~ch3。cpu通过cpu的控制电路30访问spd芯片中的数据,示例的,可以选通cpu的控制电路30与spdbus(总线)的通道,cpu的控制电路30通过spdbus的通道直接读取spd芯片中的数据。

bmc的控制电路20扩展了4个i2c主控制器,分别为i2c_m0、i2c_m1、i2c_m2以及i2c_m3。i2c_m0、i2c_m1、i2c_m2以及i2c_m3可以分别通过四路通道ch0~ch3访问spd的温度传感器数据,得到内存温度数据。bmc的控制电路20还可以保存通过四路通道ch0~ch3访问得到的内存温度数据,bmc可以通过接口i2c_s0从bmc的控制电路20获取内存温度数据。由于i2c_m0、i2c_m1、i2c_m2以及i2c_m3可并行工作,提升了访问内存温度数据的效率。需要说明的是,上述i2c_m0、i2c_m1、i2c_m2以及i2c_m3即本申请实施例所述的主控制模块。

bmc的控制电路20还包括滤波模块,用于通过最近时刻的三组数据去掉最大值与最小值,取中间的数据来过滤掉因i2c信号受到干扰,或是信号失真导致的错误内存温度数据。i2c_m0、i2c_m1、i2c_m2以及i2c_m3从spd芯片读取内存温度数据后,将数据传输至滤波模块进行中值滤波。

bmc的控制电路20存储模块,存储模块可以是数据寄存器矩阵,把经过中值滤波后的内存温度数据由d0~15压缩为单字节的符号数d7d6d5d4d3d2d1d0,其取值范围为-128~+127。还可以用32个byte以及一个奇偶校验byte(共计33个byte)来保存内存温度数据。bmc可以通过接口i2c_s0从存储模块读取压缩存储的内存温度数据,有效降低了在对spd芯片访问过程中的数据传输量。

本申请实施例还提供了bmc的控制电路20的工作流程图。以图8所示访问控制器为例,bmc的控制电路20的工作流程包括q1~q6这六个状态,参考图8,具体如下:

q1状态:在开机初始化阶段,bmc的控制电路20的控制模块i2c_m0、i2c_m1、i2c_m2以及i2c_m3处于idle(空闲或q0)状态。当初始化结束(即cpu发出post_complt_n==0),从idle状态转移至q1状态,bmc的控制电路20的通道i2c_m0、i2c_m1、i2c_m2以及i2c_m3。

在q2状态:i2c_m0、i2c_m1、i2c_m2以及i2c_m3同步工作,读取各组spd总线上的8组内存温度数据;

在q3状态:bmc的控制电路20中的滤波模块对读取到的温度数据进行中值滤波;

在q4状态:经过中值滤波后的数据存入data_reg寄存器,供bmc通过i2c_s0读取;

在q5状态:由仲裁电路根据post_complt_n以及bmc_complt_n进行仲裁;当post_complt_n==1且bmc_complt_n==0时,即满足转移条件1,进入q6;否则,返回q2进行下一个周期的数据访问,即满足转移条件2,则进入q2状态;

在q6状态:根据post_complt_n==1且bmc_complt_n==0的条件,确定切到cpu_i2c_spd,通过四通道访问spd芯片内的内存数据。

需要说明的是,以图7所示的电路为例,对本申请实施例提供的访问控制器的优势进行说明:

(1)通过cpld的可编程逻辑电路实现了bmc对spd芯片内存温度数据的可靠读写,以及cpu对spd芯片内存配置数据的可靠读写。

(2)提升了bmc对spd芯片温度传感器的快速读取。具体的,cpld嵌入设计了多组控制模块(例如,i2c_m0~i2c_m3)同时访问spd芯片,获取内存温度数据,并将数据保存于cpld的寄存器中。此种方式下,cpld的四组i2c控制器可同时读取内存温度,可以实现四路通道的同时读取,缩短数据读取周期,提高了数据获取效率,另外,bmc不直接访问spd芯片,而是访问cpld的寄存器来获取内存温度。。

(3)cpld具备中值滤波功能,对访问到的内存温度数据进行滤波处理,有效避免传感器噪声对数据造成干扰导致bmc的控制误判。

(4)由于cpld内设计的bmc的控制电路协助bmc完成多路内存温度数据的读取、数据的滤波,简化了bmc的数据获取的计算量与数据传输量。

(5)在bmc通过i2c_s0接口获取温度数据时,只需要一条命令就可以一次读取出全部32个内存的温度数据,数据传输的字节数为:1bytespd内存地址+32byte数据+1byte奇偶校验,共计34bytes。bmc不需要逐一访问各个内存,降低了bmc读传感器数据的复杂度,节省了i2c数据访问的读写操作周期。

基于图7所示的电路结构,以下详细论述服务器对spd芯片的访问控制的过程。示例的,参考图9,包括以下步骤:

步骤s1、cpu向cpld发送信号1;信号1用于指示cpu为待访问状态。

一种可能的实现方式中,当系统开机处于bios初始化阶段时,cpu向cpld发送信号1(post_complt_n==1,表明cpu待访问spd芯片),cpld根据信号1选通cpu的内存访问通道。

具体地,参考图7,cpu向仲裁电路10、bmc的控制电路20同时发送“post_co

mplt_n==1”信号。

步骤s2、cpld根据信号1确定cpu为待访问状态,确定bmc为禁用状态,则选通cpu的内存访问通道。

具体地,参考图7,bmc的控制电路20接收“post_complt_n==1”信号,若bmc当前未占用总线访问内存,则向仲裁电路10发送“bmc_complt_n==0”信号(表明bmc不访问spd芯片)。仲裁电路10根据“post_complt_n==1”信号确定cpu为使能状态,还可以根据“bmc_complt_n==0”信号确定bmc为禁用状态。

仲裁电路10则同时发出四个指示信号(sel0~sel3,分别用于控制开关k0~k3),根据这四个指示信号同时选通ch0~ch3(图7中的实线),cpu可以同时通过ch0~ch3访问内存配置数据,获取32个spd芯片地址上的内存数据。

步骤s3、cpu读取spd芯片的数据,利用读取到的内存配置数据进行初始化。

步骤s4、cpu向cpld发送信号2;信号2用于指示cpu为完成访问状态。

具体地,参考图7,cpu向仲裁电路10、bmc的控制电路20同时发送“post_co

mplt_n==0”信号。

步骤s5、cpld根据信号2确定cpu为完成访问状态,则选通bmc的内存访问通道。

具体地,参考图7,bmc的控制电路20接收“post_complt_n==0”信号,确定cpu当前完成内存访问,则向仲裁电路10发送“bmc_complt_n==1”信号使能bmc对spd芯片的访问权限,即bmc对spd芯片的访问状态为使能状态。仲裁电路10则同时发出四个指示信号(sel0~sel3),根据这四个指示信号同时选通i2c_m0~i2c_m3。

需要说明的是,在通过bmc的内存访问通道读取内存数据时,若cpu竞争i2c总线访问内存,即cpu发起post_complt_n==1信号,bmc辅助模块接收该信号并向仲裁电路10发送bmc_complt_n==1信号表明bmc正在占用总线,仲裁电路10则发出sel0~sel3指示导通i2c_m0~i2c_m3,不会造成bmc内存访问的中断,从而不会丢失数据。

步骤s6、cpld可以通过bmc所有的内存访问通道(例如i2c_m0、i2c_m1、i2c_m2、i2c_m3),同时获取所有spd芯片的温度数据,并将温度数据存储在cpld的寄存器。

具体地,主控制模块31可以同时通过i2c_m0~i2c_m3访问内存的温度数据,获取32个spd芯片的温度数据。滤波模块32可以对主控制模块31获取到的温度数据进行滤波处理,滤除干扰数据后将其余温度数据传输给存储模块33,存储模块33对接收到的温度数据进行存储。

步骤s7、bmc从cpld的寄存器读取所有spd芯片的温度。

具体地,bmc从存储模块33读取所有spd芯片的温度数据。

本申请提供的方案,cpld内部对信号进行仲裁,同时确定cpu、bmc是否需要访问spd芯片,同一时刻仅有一个master(cpu或bmc)占用i2c总线访问spd芯片,解决了bmc和cpu的总线竞争问题,实现了bmc与cpu对spd的可靠读写。

另外,bmc和cpu均可以实现对4个通道对应内存的同步访问,缩短了内存数据读取周期。采用cpld一个元件实现cpu、bmc对spd芯片的访问,减少了元件级联引入的干扰数据。

本申请实施例提供一种访问控制方法,执行主体可以是为图3所示的访问控制器。如图10所示,所述方法包括以下步骤:

步骤1001、从中央处理器cpu接收第一信号;第一信号指示cpu对spd芯片的访问状态,cpu对spd芯片的访问状态包括待访问状态或完成访问状态;

需要说明的是,可以由cpu主动发起对spd芯片的访问。示例性的,当cpu有访问spd芯片的需求时,cpu向访问控制器发送post_complt_n==1,表明cpu即将访问spd芯片,即cpu对spd芯片的访问状态为待访问状态。

另一种情况中,当cpu完成对spd芯片的访问后,向仲裁电路10和bmc的控制电路20分别发送post_complt_n==0,表明cpu已经完成对spd芯片的访问,即cpu对spd芯片的访问状态为完成访问状态。

步骤1002、响应于第一信号,确定bmc对spd芯片的访问状态。

具体实现中,当bmc的控制电路接收到cpu发送的第一信号,bmc的控制电路触发第二信号,第二信号用于指示bmc对spd芯片的访问状态。可以根据第二信号确定bmc对spd芯片的访问状态。

其中,bmc对spd芯片的访问状态包括使能状态或禁用状态。需要说明的是,为了准确实现对spd芯片访问权限的仲裁,在通过第一信号明确cpu的访问需求后,需要确定bmc当前对spd芯片的访问状态,以便在分配访问权限事考虑到cpu、bmc二者当前的实际访问状态,避免正在传输的spd数据造成丢失。

示例性的,cpu在向仲裁电路10发送第一信号时,还可以同时向bmc的控制电路20发送第一信号。

bmc的控制电路20用于,接收cpu发送的第一信号后,根据bmc对上述spd芯片的访问状态向访问控制器的仲裁电路发送第二信号;第二信号用于指示bmc对spd芯片的访问状态。访问控制器可以根据第二信号确定bmc对上述spd芯片的访问状态。

步骤1003、根据bmc对spd芯片的访问状态以及cpu对spd芯片的访问状态确定访问spd芯片的目标设备,并为目标设备分配访问权限;其中,目标设备为bmc或cpu。

本申请实施例中,cpu主动发起对spd芯片访问时,确定bmc对spd芯片的访问状态,以便决定访问权限的归属。当cpu主动上报结束对spd芯片访问时,也可以根据bmc对spd芯片的访问状态决定访问权限的归属。访问控制器可以确定cpu、bmc当前对spd芯片的访问状态,正确进行访问权限的分配,避免错误进行访问权限切换导致spd芯片正在进行的数据传输的中断。

本申请实施例的一种实现方式中,上述根据bmc对spd芯片的访问状态以及cpu对spd芯片的访问状态确定访问spd芯片的目标设备的步骤的具体实现,包括:

若cpu对spd芯片的访问状态为待访问状态,且bmc对spd芯片的访问状态为禁用状态,则确定目标设备为cpu;

若cpu对spd芯片的访问状态为待访问状态,且bmc对spd芯片的访问状态为使能状态,则确定目标设备为bmc;

若cpu对spd芯片的访问状态为完成访问状态,且bmc对spd芯片的访问状态为使能状态,则确定目标设备为bmc。

本申请实施例的一种实现方式中,上述为目标设备分配访问权限的步骤的具体实现包括,包括:

若目标设备为bmc,则导通bmc的控制电路与spd芯片之间的通道,为bmc分配访问权限;

或者,若目标设备为cpu,则导通cpu的控制电路与spd芯片之间的通道,为cpu访问权限。

本申请实施例的一种实现方式中,上述导通bmc的控制电路与spd芯片之间的通道的步骤的具体实现,包括:

在确定目标设备为bmc后的同一时刻导通bmc的控制电路与spd芯片之间的所有通道。

本申请实施例提供的方法中,导通bmc的控制电路之后,还可以通过bmc的控制电路获取spd芯片的数据。具体的,在导通bmc的控制电路与spd芯片之间的所有通道后,通过bmc的控制电路与spd芯片之间的所有通道获取内存温度数据,向bmc发送内存温度数据。

本申请实施例提供的方法中,向bmc发送内存温度数据之前,对内存温度数据进行干扰数据滤除处理。

本申请实施例的一种实现方式中,上述导通cpu的控制电路与spd芯片之间的通道的步骤的具体实现包括,包括:

在确定目标设备为cpu后的同一时刻导通cpu的控制电路与spd芯片之间的所有通道。

本申请实施例提供的方法中,导通cpu的控制电路之后,还可以通过cpu的控制电路获取spd芯片的数据。具体的,在导通cpu的控制电路与spd芯片之间的所有通道后,通过cpu的控制电路与spd芯片之间的所有通道获取内存配置数据,向cpu发送内存配置数据。

本申请实施例还提供一种计算机设备,如图1所示,该计算机设备包括:访问控制器、中央处理器cpu、基板管理控制器bmc以及串行存在侦测spd芯片。

示例性的,cpu用于,向访问控制器发送第一信号,第一信号用于指示cpu对spd芯片的访问状态为待访问状态或完成访问状态;

访问控制器用于,接收第一信号,响应于第一信号确定bmc对spd芯片的访问状态,bmc对spd芯片的访问状态包括使能状态或禁用状态;

访问控制器还用于,根据cpu对spd芯片的访问状态以及bmc对spd芯片的访问状态为目标设备分配访问权限;其中,目标设备为bmc或cpu。

在一个实施例中,上述访问控制器包括仲裁电路和bmc的控制电路。

具体的,cpu用于,向bmc的控制电路以及仲裁电路发送第一信号;

bmc的控制电路,响应于第一信号,根据bmc对串行存在侦测spd芯片的访问状态向仲裁电路发送第二信号;第二信号用于指示bmc对spd芯片的访问状态为使能状态或禁用状态;

仲裁电路,用于根据第一信号确定cpu对spd芯片的访问状态,根据第二信号确定bmc对spd芯片的访问状态,并根据cpu对spd芯片的访问状态以及bmc对spd芯片的访问状态为目标设备分配访问权限。

本申请实施例还提供了一种计算机设备,该计算机设备可以是服务器,例如,本申请实施例前文所述的云端服务器。其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库可以存储配置信息、权限信息等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现本申请实施例图10所示的方法中由服务器执行的步骤。

从中央处理器cpu接收第一信号;第一信号指示cpu对串行存在侦测spd芯片的访问状态,cpu对spd芯片的访问状态包括待访问状态或完成访问状态;

确定基板管理控制器bmc对spd芯片的访问状态;

根据bmc对spd芯片的访问状态以及cpu对spd芯片的访问状态确定访问spd芯片的目标设备,并为目标设备分配访问权限;其中,目标设备为bmc或cpu。

在一个实施例中,还可以支持计算机设备根据bmc对spd芯片的访问状态以及cpu对spd芯片的访问状态确定访问spd芯片的目标设备,包括:

若cpu对spd芯片的访问状态为待访问状态,且bmc对spd芯片的访问状态为禁用状态,则确定目标设备为cpu;

若cpu对spd芯片的访问状态为待访问状态,且bmc对spd芯片的访问状态为使能状态,则确定目标设备为bmc;

若cpu对spd芯片的访问状态为完成访问状态,且bmc对spd芯片的访问状态为使能状态,则确定目标设备为bmc。

一种可能的实现方式中,访问控制器还包括cpu的控制电路以及bmc的控制电路。

在一个实施例中,还可以支持计算机设备为目标设备分配访问权限,包括:

导通bmc的控制电路与spd芯片之间的通道,为bmc分配访问权限;

或者,导通cpu的控制电路与spd芯片之间的通道,为cpu访问权限。

在一个实施例中,还可以支持计算机设备导通bmc的控制电路与spd芯片之间的通道,包括:

在确定目标设备为bmc后的同一时刻导通bmc的控制电路与spd芯片之间的所有通道。

在一个实施例中,还可以支持计算机设备在导通bmc的控制电路与spd芯片之间的所有通道后,通过bmc的控制电路与spd芯片之间的所有通道获取内存温度数据,向bmc发送内存温度数据。

访问控制器(例如,上述cpld)嵌入设计的四组控制器i2c_m0~i2c_m3同时访问spd芯片,获取内存温度数据,并将数据保存于cpld的寄存器中。此种方式下,bmc无需直接访问spd芯片,而是访问cpld的寄存器来获取内存温度数据。cpld的四组i2c控制器可同时读取内存温度数据,提高了数据获取效率。

在一个实施例中,还可以支持计算机设备向bmc发送内存温度数据之前,对内存温度数据进行干扰数据滤除处理。

在一个实施例中,还可以支持计算机设备导通cpu的控制电路与spd芯片之间的通道,包括:

在确定目标设备为cpu后的同一时刻导通cpu的控制电路与spd芯片之间的所有通道。

在一个实施例中,还可以支持计算机设备在导通cpu的控制电路与spd芯片之间的所有通道后,通过cpu的控制电路与spd芯片之间的所有通道获取内存配置数据,向cpu发送内存配置数据。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-onlymemory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(randomaccessmemory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(staticrandomaccessmemory,sram)或动态随机存取存储器(dynamicrandomaccessmemory,dram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

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