多主机拓扑系统的CPLD快取应用的制作方法

文档序号:18755247发布日期:2019-09-24 22:10阅读:165来源:国知局
本公开涉及一种多节点系统的命令码,且特别涉及一种在多节点系统中使用复杂可编程逻辑装置作为命令代码(commandcode),以避免多主机问题(multi-masterissues)。
背景技术
::电子装置,例如服务器,包括多个电子元件连接到各种总线以传送和接收数据和命令。许多服务器具有多个节点连接到背板,以用于共用电源供应器(commonpowersupply)。背板所连接的总线允许在节点和背板之间交换数据和命令以监视电源供应器。图1绘示典型现有技术的多节点系统10,多节点系统10可以是服务器或其他大型网络装置。多节点系统10具有连接到两个电源供应单元14和16的背板12。背板12分别经由系统管理(systemmanagement,sm)总线线路24和26连接到系统节点20和22。在此例中,两个系统节点20和22都包括各自的基板管理控制器(baseboardmanagementcontroller,bmc)30和32。bmc30和32处理通过总线线路24和26的通信。节点20和22通过总线线路24和26以传送信号到背板12。共用smbus协议(commonsmbusprotocol)是内部集成电路(inter-integratedcircuit,i2c)总线协议。i2c协议是分组交换、单端、串行计算机总线协议。此协议适用于主机或主装置(master)向从装置(slave)传送命令的主从式配置。当在多节点系统中使用i2c协议时,可以有多个主机,因为每个节点(例如节点20和22)可以随时控制连接至背板12的总线线路24和26。背板12经由电源管理总线34向电源供应单元14和16传送命令,并从电源供应单元14和16接收数据。bmc30和32通过相应的总线(例如smbus)线路24和26传送和接收来自电源供应单元14和16的命令。因此,系统10是i2c协议环境的范例,其中多个主机可以驱动连接至背板12的总线。当在i2c拓扑设计中存在两个或更多个可能的主机连接到一个从装置时,可能会出现多主机问题。在这种情况下,每个节点都需要能够存取总线,尽管另一个节点可能正在与背板通信使得总线是忙碌的。为了解决这个问题,在服务器产业中,解决方案是在背板上提供微控制器。微控制器控制来自每个节点的通信,并因此当有多个节点试图使用总线时,微控制器可仲裁争执。此微控制器通常被称为中央讯息控制器(centralmessagecontroller,cmc)。图2是使用cmc防止多主机问题的另一现有技术多节点系统50的方块图。多节点系统50的背板52连接到两个电源供应单元54和56。背板52分别经由总线线路64和66连接到系统节点60和62。在这个例子中,系统50的总线线路64和66使用i2c协议。在这个例子中,系统节点60和62都包括各自的bmc70和72。背板52传送命令给电源供应单元54和56,并接收来自电源供应单元54和56的数据。背板52包括cmc80,cmc80执行软件以仲裁来自节点60和62的主机命令之间的争执,从而避免多主机问题。使用cmc解决多主机问题也引起潜在的问题。由于图2中的cmc80的操作基本上由纯软件构成,若用于仲裁命令的软件进入死锁(deadlock)状态,cmc通常会导致多节点系统(例如服务器)强制关闭。由于cmc执行软件的潜在不可靠性,此类事件阻碍了服务器连续运行。因此,需要一种设备能成功地仲裁由系统管理总线所连接的多个节点所发出的多主机命令。还需要一个不依赖软件但能仲裁多主机命令的系统。再者,还需要一种系统,允许多节点系统中的节点获得电源供应单元数据,而不会对节点的基板管理控制器造成额外处理负载。技术实现要素:所公开的一种范例为多节点系统,避免多主机问题出现在共用总线上。系统具有第一节点及第二节点。背板经由系统处理总线耦接至第一节点及第二节点。复杂可编程逻辑装置耦接至系统处理总线。复杂可编程逻辑装置的硬件逻辑对来自第一节点和第二节点的多个总线命令之间进行仲裁。另一范例的方法用以在来自两节点的多个总线命令之间进行仲裁,两节点经由系统处理总线耦接至背板。复杂可编程逻辑装置耦接至系统处理总线。第一命令经由系统处理总线而接收。第二命令经由系统处理总线而接收。复杂可编程总线装置的硬件总线操作,以仲裁第一节点或第二节点是否构成系统管理总线的主机。为了对本发明的上述及其他方面有更佳的了解,下文特举实施例,并配合附图详细说明如下:附图说明图1绘示现有技术的多主机系统的方块图。图2绘示使用cmc解决多主机问题的现有技术的多主机系统的方块图。图3绘示使用cpld装置解决多主机问题的范例性多主机系统的方块图。图4绘示图3的cpld装置、电源供应单元及基板处理控制器的功能方块图。图5绘示可由图3的cpld执行的i2c命令的表格。图6及图7绘示依照本公开各种范例的范例性系统的示意图。【符号说明】10、50、100:多节点系统12、52、102:背板14、16、54、56、104、106:电源供应单元20、22、60、62、120、122:节点24、26、64、66、124、126:总线线路30、32、70、72、130、132:基板管理控制器34、74、108:电源管理总线80:cmc140:复杂可编程逻辑装置(cpld)402:主机模块404、406:从模块410:快取存储器600、700:计算系统602:系统总线604:存储器606:rom608、718:ram610:控制器612、716:存储装置614:第一模块616:第二模块618:第三模块620:输入装置622、714:输出装置624、708:通信接口626:传感器628:快取630、710:处理器632:快闪存储器634:固件636:显示器702:芯片组704:桥接器706:使用者接口元件712:固件具体实施方式本发明可以以许多不同的形式实施。代表性实施例绘示于附图中,并且将在此处详细描述。本公开为本公开的原理示例或范例,并且非用以将本公开的广泛方面限制于所述实施例。就此而言,例如在摘要、
发明内容和实施方式部分中公开但未在权利要求书中明确阐述的要素和限制,不应通过暗示、推断而单独或集体被并入权利要求书中,或被以其他方式限制。为了实施方法详细描述的目的,单数包括复数,反之亦然,除非明确否认;并且用语“包括”意味着“包括但不限于”。再者,近似用语例如“大约”、“几乎”、“基本上”、“近似”等可以在本文中用于表示“正好在”、“接近”、“靠近在”、或“在3-5%之内”、或“在可接收的制造公差内”或其任何逻辑组合。本公开通过添加复杂可编程逻辑装置(complexprogrammablelogicdevice,cpld)来仲裁不同节点之间的总线通信,以解决多节点系统中的多主机问题。cpld添加于i2c连接的中间,位于每个节点的基板管理控制器和至少一个电源供应单元(powersupplyunit,psu)之间。提供用于配置cpld上的硬件逻辑门的正确cpld代码,以处理节点和psu之间的i2c连接上所发生的多主机情况。因此,仰赖软件进行操作的一般机架管理集成电路可被省略。因此,cpld及其存储器快取可用于解决具有多主机拓扑的任何系统上的多主机问题,例如使用pmbus的系统,如下面的范例。图3绘示范例性多节点系统100的方块图,多节点系统100使用cpld来避免与背板102的节点通信之间的多主机问题。背板102连接到两个psu104和106。psu104和106通过电源管理(powermanagement,pm)总线108连接到背板102。电源管理总线108允许背板102接收来自psu104和106的数据。电源管理总线108还允许背板102将控制信号传送到psu104和106以管理系统100的电力。背板102分别经由总线(例如smbus)线路124和126连接到系统节点120和122。在此例中,系统100的总线线路124和126使用i2c协议。在此例中,系统节点120和122都包括各自的基板管理控制器(baseboardmanagementcontroller,bmc)130和132。bmc130和132直接连接到总线线路124和126。在此例中,bmc130和132通过总线线路124和126处理它们各自节点120和122的通信。bmc130和132通过总线(例如smbus)线路124和126向背板102传送命令,并通过总线(例如smbus)线路124和126接收来自背板102的数据。背板102包括复杂可编程逻辑装置(cpld)140,其通过总线(例如smbus)线路124和126来仲裁来自节点120和122的主机命令之间的争执,藉以避免多主机问题。复杂可编程逻辑装置(cpld)140是包括许多硬件逻辑门的硬件设备,以允许实现适度复杂的数据处理功能。硬件逻辑门的配置通过代码而实现,以允许cpld140执行不同的功能,例如解决多主机问题。cpld140包括存储配置代码的非易失性配置存储器。因此,cpld140可以在系统启动时立即发生作用。由于cpld140的功能嵌入在硬件逻辑中,因此相较于执行软件的通用控制器,复杂可编程逻辑装置例如cpld140是更稳定的装置。在系统100中使用cpld(例如cpld140)可解决在例如系统10(在图1中)的传统多节点系统中所发生的多主机问题。cpld140作为bmc130和132与psu104和106的通信之间的媒介。cpld140接收来自节点120和节点122的命令,然后决定哪些命令优先。在决定优先顺序之后,cpld140接着将命令传递到psu104和106。cpld140的硬件逻辑也解决已知软件解决方案的不稳定实现方案(例如系统50中使用cmc80(在图2中))。例如,cpld140可以经由系统管理总线线路124从节点120接收第一命令。cpld140可以经由系统管理总线线路126从第二节点122接收第二命令。cpld140操作硬件逻辑门以仲裁第一节点120或第二节点122是否构成连接至背板102的系统管理总线的主机。图4是关于psu104及bmc130和132(在图3中)的cpld140配置的方块图。在此例中,bmc130和132分别将来自cpld140的i2c命令中继(relay)到节点120和122的相应主板,而且bmc130和132也分别将来自节点120和122的相应主板的i2c命令中继至cpld140。在这种i2c配置中,cpld140包括主机模块402,主机模块402向代表节点120和122的从(slave)模块404和406发出命令。在此例中,从模块404和406分别接收来自bmc130和132的命令。主机模块402传送命令至psu104和106。在此例中,标准电源管理总线(powermanagementbuscommandcodes,pmbus)命令代码被存储在cpld140的快取存储器410中。因此,cpld140可当成系统100的psu(例如图4中的psu104)的存储器快取。如图3所示,cpld140通过电源管理总线108使用pmbus命令代码进行通信。如图4所示,例如bmc130的主机可通过标准pmbus命令代码以存取cpld140而获得psu信息。图5是范例性标准电源管理总线命令代码的表格,可用于多个bmc(例如bmc130或132(在第3和4图中))的其中一个,以从psu(例如从图3中的psu104和106)获得性能数据。图5绘示不同命令的命令代码和命令名称,这些命令可用于从psu104和106获得状态数据。如图5的表格所示,bmc可以通过使用正确的电源管理总线命令来请求数据,例如特定psu的电压输出、电流输出、温度和风扇状态。笫6图绘示范例计算系统600,其中计算系统的元件通过总线602而彼此电性通信。系统600包括处理单元(cpu或处理器)630和系统总线602,系统总线602耦接各种系统元件至处理器630,各种元件包括系统存储器604(例如只读存储器(readonlymemory,rom)606和随机存取存储器(randomaccessmemory,ram)608)。系统600可包括高速存储器快取,其直接连接至处理器630、或紧密接近处理器630或为处理器630的一部分。如此,系统600可将来自存储器604和/或存储装置612的数据复制到快取628以供处理器630快速存取。以此方式,快取可提供处理器630在等待数据时的性能提升。这些和其他模块可以控制或被配置为控制处理器630以执行各种动作。其他系统存储器604也可供使用。存储器604可以包括具有不同性能特征的多种不同类型的存储器。处理器630可以包括嵌入在存储装置612中的任何一般用途处理器和硬件模块或软件模块,例如第一模块614、第二模块616、和第三模块618。硬件模块或软件模块被配置为控制处理器630,以及将软件命令整合入实际处理器设计的特殊用途处理器。处理器630可以是实质上完全独立的计算系统,其包含多个内核或处理器、总线、存储器控制器、快取等。多内核处理器可以是对称的或不对称的。为了让使用者能够与计算装置600进行互动,输入设备620被提供作为输入机制。输入装置620可包括用于语音的麦克风、用于手势或图形输入的触控屏幕、键盘、鼠标、动作输入等等。在一些情况下,多模式系统可以让使用者能够提供多种类型的输入,以与系统600通信。此例中也提供输出装置622。通信接口624可以主宰和管理使用者输入和系统输出。存储装置612可以是用于存储可由计算机存取数据的非易失性存储器。存储装置612可以是磁带盒、快闪存储卡、固态记忆装置、数字多功能碟、卡带(cartridge)、随机存取存储器(ram)608、只读存储器(rom)606及其混合。控制器610可以是系统600上的特殊用途微控制器或处理器,例如bmc。在一些情况下,控制器610可以是智能平台管理接口(intelligentplatformmanagementinterface,ipmi)的一部分。再者,在一些情况下,控制器610可以嵌入在系统600的主机板或主电路板上。控制器610可以管理系统管理软件和平台硬件之间的接口。控制器610还可以与各种系统装置和元件(内部和/或外部)进行通信,例如控制器或周边元件,如下面进一步描述。控制器610可以产生通知、警报和/或事件的特定响应,并与远端装置或元件(例如,电子邮件讯息,网络讯息等)通信,以产生用于自动硬件恢复程序的或命令等。管理员还可以与控制器610远端通信,以发起或执行特定的硬件恢复程序或操作,如下面进一步描述。控制器610还可以包括系统事件日志控制器和/或存储器,用于管理和维护控制器610所接收的事件、警报和通知。例如,控制器610或系统事件日志控制器可以接收来自一个或多个装置及元件的警报或通知,并将警报或通知维护在系统事件日志存储元件中。快闪存储器632可以是可由系统600用于存储和/或数据传输的电子非易失性计算机存储媒介或芯片。快闪存储器632可以被电性抹除和/或重新编程。例如,快闪存储器632可以包括可抹除可编程只读存储器(erasableprogrammableread-onlymemory,eprom)、电性可抹除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、rom、nvram或互补金属氧化物半导体(complementarymetal-oxidesemiconductor,cmos)。快闪存储器632可存储当系统600首次通电时由系统600执行的固件634、及特定于固件634的一组配置。快闪存储器632还可以存储固件634所使用的配置。固件634可以包括基本输入/输出系统或均等物,例如可扩展固件接口(extensiblefirmwareinterface,efi)或统一可扩展固件接口(unifiedextensiblefirmwareinterface,uefi)。每当系统600启动时,固件634可作为顺序程序而被载入和执行。固件634可基于此组配置来识别、初始化、及测试系统600中存在的硬件。固件634可在系统600上执行自检(例如开机自检(power-on-self-test,post))。此自检可以测试各种硬件元件的功能,例如硬盘驱动器、光学读取装置、冷却装置、存储器模块、延伸卡等。固件634可以定址和分配存储器604、rom606、ram608、和/或存储装置612中的区域,以存储操作系统(operatingsystem,os)。固件634可以载入启动载入器(bootloader)和/或os,并将系统600的控制权交给os。系统600的固件634可以包括固件配置,固件配置定义固件634如何控制系统600中的各种硬件元件。固件配置可以决定系统600中的各种硬件元件的启动顺序。固件634可以提供允许设置各种不同参数的接口,例如uefi,其可以不同于固件预设配置中的参数。例如,使用者(例如管理员)可以使用固件634来指定时钟和总线速度;定义连接到系统600的周边;设置健康监测(例如,风扇速度和cpu温度限制);和/或提供影响系统600的整体性能和功率使用的各种其他参数。虽然固件634被绘示为存储在快闪存储器632中,但本领域的具有通常知识将容易认识到固件634可以存储在其他存储器元件中,例如存储器604或rom606。系统600可以包括一个或多个传感器626。一个或多个传感器626可以包括例如一个或多个温度传感器、热体(thermal)传感器、氧传感器、化学传感器、噪声传感器、热能(heat)传感器、电流传感器、电压检测器、气流传感器、流量传感器、红外温度计、热通量传感器、温度计、高温计等。一个或多个传感器626可以与处理器、快取628、快闪存储器632、通信接口624、存储器604、rom606、ram608,控制器610、及存储装置612,例如经由总线602进行通信。一个或多个传感器626与系统中的其他元件之间的通信也可以经由一个或多个不同方式,例如经由i2c、一般用途输出(generalpurposeoutput,gpo)及类似物。系统600上不同类型的传感器(例如传感器626)也可以向控制器610报告例如冷却风扇速度、电力状态、os状态、硬件状态等的参数。系统600可以使用显示器636来提供与控制器610或处理器630所执行的应用有关的图形。图7绘示具有芯片组架构的范例计算系统700的示意图,可用于执行所述方法或运作,以及产生和显示图形化使用者接口(graphicaluserinterface,gui)。计算系统700可以包括可用来实现所公开的技术的计算机硬件、软件和固件。系统700可以包括处理器710,处理器710代表各种物理和/或逻辑资源,其能够执行软件、固件和硬件,以进行上述运算。处理器710可以与芯片组702通信,芯片组702可以控制处理器710的输出入。在此范例中,芯片组702将讯息输出到输出装置714,例如显示器,并且可以读取讯息并将讯息写入存储装置716,存储装置716可以包括例如磁媒介和固态媒介。芯片组702还可以从ram718读取数据并将数据写入到ram718中。桥接器704接口(interface)于各种使用者接口元件706,以接口于芯片组702。使用者接口元件706可以包括键盘、麦克风、触碰检测-处理电路,以及例如鼠标的指向设备。芯片组702也可以接口于一个或多个通信接口708,通信接口708可具有多种物理接口。该通信接口可以包括有线和无线局域网络的接口、宽带带无线网络的接口、和个人局域网络的接口。再者,机器可以通过使用者接口元件706接收来自使用者的输入并执行适当的功能,例如通过使用处理器710解译输入的浏览功能。再者,芯片组702也可以与固件712通信,固件712可以在通电时由计算系统700执行。固件712可以基于固件配置来识别、初始化和测试存在于计算机系统700中的硬件。固件712可以在系统700上执行自检(例如post)。自检可以测试各种硬件元件702-718的功能。固件712可以定址和分配ram存储器718中的区域以存储os。固件712可以载入启动载入器和/或os,并且将系统700的控制权交给os。在一些情况下,固件712可以与硬件元件702-710和714-718通信。于此,固件712可以通过芯片组702而通信于硬件元件702-710和714-718,和/或通过一个或多个其他元件而通信于硬件元件702-710和714-718。在一些情况下,固件712可以直接通信于硬件元件702-710和714-718。可以理解的是,范例系统600和700可以具有多于一个的处理器(例如630、710),或者可以是一组或一群(cluster)连网在一起的计算机装置的其中一部分,以提供更强的处理能力。如在本申请中所使用的术语“元件”、“模块”、“系统”或类似用语,通常是指与计算机相关的实体,或者硬件(例如电路)、硬件和软件、软件或与具有一个或多个特定功能的操作机器相关的实体。例如,元件可以是但不限于是在处理器(例如,数字信号处理器)上运行的行程(process)、处理器、物件、执行文件(executable)、线程(threadofexecution)、程序、和/或计算机。为了说明,在控制器上运行的应用程序以及控制器都可以是元件。一个或多个元件可以驻留在行程和/或线程内,并且元件可以位于一台计算机上和/或分布在两台或多台计算机之间。此外,“装置”可以以特别设计的硬件形式出现;通过在其上执行软件而特别制造的通用硬件,此软件使得硬件执行特定功能;存储在计算机可读取媒介上的软件;或其组合。此处所使用的术语仅用于描述特定实施例的目的,而不用意于限制本发明。如本文所使用的,除非上下文另外清楚地指出,否则单数形式“一”、“一个”和“该”也意于包括复数形式。此外,就在详细描述和/或权利要求书中使用术语“包括”、“包含”、“具”、“具有”、“有”或其变体的范围而言,这些术语用意在于包括以类似于术语“包括”的方式。除非另外定义,否则此处使用的所有术语(包括技术和科学术语)具有与本发明所属领域的技术人员通常理解的相同含义。应进一步理解的是,例如在常用字典中定义的那些术语应被解释为具有与其在相关领域的上下文中的含义一致的含义,并且不会被理解为理想化或过度形式化的意义,除非明确如此定义。综上所述,虽然本发明已以实施例公开如上,然其并非用以限定本发明。本发明所属领域技术人员,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视所附权利要求书界定范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1