用于配置子系统的主处理器和从处理器的制作方法

文档序号:26139537发布日期:2021-08-03 14:23阅读:80来源:国知局

背景技术
::专用集成电路(asic)是为特定用途而设计的集成电路(ic)。出于减少电路板面积的目的,嵌入式处理子系统(如包括片上系统(soc)、基板管理控制器(bmc)或多功能微处理器的子系统)可以包括一个或多个asic。一般来说,asic通常可以是“硬化的”,并且一旦制造出就很难改变。自旋(spin)(即,重建,包括重新设计和重新制造)新的或经修改的asic的资金和人力资源成本可能会很大。附图说明图1是根据示例实施方式的计算机系统的示意图。图2是根据示例实施方式的图1的计算机系统的基板管理控制器的示意图。图3是根据示例实施方式的描绘指令的表,该指令可以由图2的基板管理控制器的主处理核执行。图4是根据示例实施方式的描绘补丁集表头部的字段的表。图5是根据示例实施方式的描绘补丁表记录的字段的表。图6a、图6b、图6c、图6d和图6e描绘了根据示例实施方式的图2的基板管理控制器的主处理核的状态图。图7是根据示例实施方式的具有用于配置装置的子系统的主处理器和从处理器的装置的示意图。图8是根据示例实施方式的计算机系统的示意图,该计算机系统包括具有用于配置计算机系统的子系统的主处理器和从处理器的基板管理控制器。图9是根据示例实施方式的示出了使用主处理器和从处理器来配置嵌入式处理系统的子系统的过程的流程图。具体实施方式给定的专用集成电路(asic)可以用于产品的不同版本,这些版本中的每个版本为asic呈现了不同的环境。出于各种原因(例如,资金成本、人力资源成本和产品设计时间),在没有asic自旋(即,不经过另一个设计、工程和制造往返周期)的情况下,针对特定环境修改asic可能是有利的。作为更具体的示例,asic可以是基板管理控制器,该基板管理控制器可以在多个计算机系统环境中使用,如与合并基板管理控制器的多个不同服务器模型相对应的环境。基板管理控制器可以包括与基板管理控制器外部的环境交互的各种组件。例如,基板管理控制器的存储器控制器和物理存储器接口允许基板管理控制器访问(例如,读取和写入)连接到基板管理控制器的外部存储器设备。存储器控制器和存储器接口可以具有取决于外部存储器设备的特定特性的相对大量的设置。例如,存储器接口的设置可以取决于以下:外部存储器设备是双数据速率3(ddr3)设备还是ddr4设备;所使用的纠错码(ecc);存储器的动态随机存取存储器(dram)类型;存储器等待时间;终端强度;等等。此外,除了与不同的组件接口连接并适应这些组件的特性外,存储器接口的设置可能由于其他原因而因环境的不同而改变。例如,基板管理控制器和连接的存储设备之间的不同物理封装放置可能会导致存储器接口的不同设置。允许自定义asic配置的一种方法是使asic的微控制器或处理器执行设置asic的子系统的各种参数的固件指令。例如,基板管理控制器可以包括一个或多个通用处理核(例如,高级risc机器(arm)处理核),该一个或多个通用处理核执行基板管理控制器的固件。可以针对特定计算机系统环境来修改固件,使得经修改固件适合于针对该特定环境配置基板管理控制器的子系统。然而,使用这样的固件修改可能会遇到某些挑战。例如,由基板管理控制器执行的固件通常相对复杂,并且针对每个计算机系统环境修改固件可能会带来风险,引入额外的负担并且增加用于将基板管理控制器并入产品中的时间。使用(多个)通用处理核来配置基板管理控制器的子系统可能会使计算机系统暴露于安全相关问题。例如,如果依赖于固件来初始化基板管理控制器的存储器控制器或存储器接口,则在存储器初始化之前将(多个)通用处理核从复位释放以执行固件可能会带来安全问题,并且可能不会允许依赖于存储器来实现特定功能。此外,在上电时,基板管理控制器可能会遇到阻止通用处理核从复位释放的问题(与信任根相关的密码失败、硬件故障等等)。如果发生这种情况,则基板管理控制器的子系统不由固件配置,这可能导致报告问题的能力。例如,基板管理控制器可以包括访问连接到基板管理控制器的视频存储器的视频控制器。视频控制器可以由计算机系统的中央处理单元(cpu)访问。尽管计算机系统的cpu可能检测到基板管理控制器已发生故障,但如果尚未配置基板控制器的存储器接口(由于基板管理控制器的(多个)通用处理核未从复位释放),则cpu无法访问视频存储器以报告错误消息。根据示例实施方式,嵌入式处理系统(例如,基板管理控制器、片上系统(soc)等等)可以包括配置器和一个或多个通用处理核。上电后,当(多个)通用处理核保持复位时,配置器会自主地配置嵌入式处理系统的一个或多个子系统。在此上下文中,“嵌入式处理系统”是指基于处理器的系统,该系统包括一个或多个通用处理核,并且在如计算机系统(例如,台式机、膝上型计算机、服务器等等)等更大的系统中执行更专用的功能之一。根据一些实施方式,嵌入式处理系统可以包括一个或多个半导体封装体(或“芯片”),并且(多个)半导体封装体可以包括一个或多个半导体管芯。此外,在本申请的上下文中,“自主地”运行的配置器是指与嵌入式处理系统的(多个)通用处理核中的任何通用处理核分开或独立地操作的配置器。根据示例实施方式,配置器包括配置嵌入式处理系统的特定子系统的主处理器,并且配置器包括配置嵌入式处理系统的一个或多个其他子系统的一个或多个从处理器。例如,根据一些实施方式,主处理器可以配置嵌入式处理系统的存储器控制器,并且特定从处理器可以配置嵌入式处理系统的物理存储器接口。主处理器和从处理器可以与不同的总线通信协议相关联,使得例如主处理器可以使用一种特定的总线协议(例如,高级高性能总线(ahb)协议)进行通信以配置嵌入式处理系统的存储器控制器,然而,特定的从处理器可以通过另一种总线协议(例如,高级外围总线(apb)协议)进行通信以配置嵌入式处理系统的物理存储器接口。如本文所使用的,“子系统”是指嵌入式处理系统的执行嵌入式功能的特定功能的特定部分,例如,存储器控制器、物理存储器接口、视频或显示控制器、电压调节子系统、高速串行接口(例如,快速外围组件互连(pcie)接口、以太网接口、串行附接的scsi(sas)接口、串行at附件(sata)接口或通用串行总线(usb)3接口)等等。通常,如本文所述,配置器针对其中使用嵌入式处理系统的特定计算机系统环境配置嵌入式处理系统的子系统。根据示例实施方式,主处理器可以包含主处理核(例如,嵌入式微控制器),该主处理核执行存储在主处理器的非易失性存储器(例如,只读存储器(rom))中的机器可执行指令。在此上下文中,“指令”是指由处理器(例如,处理核)处理或执行以使得处理器执行功能的一组位。指令包含表示要执行的功能或动作的命令以及表示被操作以执行功能或动作的一个或多个实体(例如,地址、数据、掩码)的一个或多个运算对象。此外,如本文所述,指令运算对象还可以包含用于从处理器的嵌入式命令。主处理器的非易失性存储器可以存储指令组,其中该组可以对应于由主处理器配置的子系统的不同潜在配置。例如,一组指令可以例如对应于:对于包含嵌入式处理系统的一个版本的服务器,设置嵌入式处理系统的存储器接口的一个或多个配置和状态寄存器(csr),并且,另一组指令可以对应于:对于包含嵌入式处理系统的另一版本的服务器,设置csr。主处理器的非易失性存储器也可以存储实例指令,其中,基于提供给嵌入式处理系统的数据位向量,对特定实例指令的执行指示主处理核选择要执行的特定指令组。以此方式,如本文中进一步描述的,根据一些实施方式,如可编程逻辑设备(pld)等嵌入式处理系统外部的组件可以存储表示数据位向量的数据,并且pld在嵌入式处理系统上电复位后向嵌入式处理系统提供数据位向量。如本文中进一步描述的,根据示例实施方式,实例指令标识数据位向量的特定位位置,并且与所标识的位相对应的位选择要执行的特定指令组(在实例指令之后)。根据示例实施方式,主处理核可以执行包含运算对象的指令,该运算对象共同表示针对特定从处理器的指令。更具体地,根据一些实施方式,主处理器可以经由指令总线连接到从处理器;并且指令总线可以包含用于选择各种从处理器的解码信号。更具体地,由主处理核执行的特定指令可以包含说明要由特定从处理器执行的嵌入式指令的运算对象,并且主处理核可以向指令总线提供嵌入式指令并断言适当的解码信号,使得从处理器可以从指令总线取得指令并且然后执行指令。根据一些实施方式,从处理器可以包括从处理核(例如,嵌入式微控制器),以及存储用于由从处理器执行的指令的存储器(例如,非易失性存储器)。根据一些实施方式,从处理器可以执行经由指令总线转发给从处理器的指令。参考图1,作为更具体的示例,根据一些实施方式,电子系统可以包括嵌入式处理系统,该嵌入式处理系统包括用于初始化或配置嵌入式处理系统的一个或多个子系统150的配置器140。对于图1中描绘的示例实施方式,电子系统是计算机系统100,如服务器、客户端、台式计算机、膝上型计算机、平板计算机、智能电话、可穿戴计算机、机架安装模块等等。对于图1中描绘的示例实施方式,嵌入式处理系统是基板管理控制器130,但是根据进一步的实施方式,嵌入式处理系统可以是多个其他嵌入式处理系统中的任何嵌入式处理系统,如除其他基板管理控制器外的asic、soc、微处理器、微控制器等等。如本文所使用的,“基板管理控制器”是专用服务处理器,该专用服务处理器使用传感器监测服务器或其他硬件的物理状态,并通过管理网络与管理系统通信。基板管理控制器也可以通过输入/输出控制器(ioctl)接口驱动程序、表述性状态转移(rest)应用程序接口(api)、或者促进基板管理控制器与应用程序之间通信的某种其他系统软件代理,与在操作系统级别执行的应用程序通信。基板管理控制器可以具有对位于服务器机箱(包括系统存储器)中的硬件设备的硬件级访问。基板管理控制器可以能够直接修改硬件设备。基板管理控制器可以独立于其中布置了基板管理控制器的系统的操作系统而操作。基板管理控制器可以位于服务器或要被监测的其他设备的主板或主电路板上。基板管理控制器安装在受管理服务器/硬件的主板上或以其他方式连接或附接到受管理服务器/硬件的事实并不能防止基板管理控制器被认为与服务器/硬件“分离”。如本文所使用的,基板管理控制器具有对计算设备的子系统的管理能力,并且与执行计算设备的操作系统的处理资源分离。基板管理控制器与在系统上执行高级操作系统或管理程序的处理器(如中央处理单元)分离。根据示例实施方式,计算机系统100包括一个或多个中央处理单元(cpu)102(例如,cpu处理核、包含cpu处理器核的半导体)以及连接到(多个)cpu以形成系统存储器104的存储器设备。(多个)cpu102可以耦接到输入/输出(i/o)桥106。此外,同样如图1中描绘的,计算机系统100可以包括一个或多个快速外围组件互连(pcie)设备110(例如,pcie扩展卡),该pcie设备可以通过对应的(多个)单独的pcie总线108耦接到(多个)cpu102。根据进一步示例实施方式,(多个)pcie设备110可以耦接到i/o桥106,而不是耦接到(多个)cpu102。通常,形成系统存储器104的存储器设备以及本文中描述的其他存储器设备可以由非暂态存储器设备形成,如半导体存储设备、闪速存储器设备、忆阻器、相变存储器设备、上述存储技术中的一种或多种的组合等等。此外,除非本文中另有说明,否则存储设备可以是易失性存储设备(例如,动态随机存取存储器(dram)设备、静态随机存取(sram)设备等等)或非易失性存储设备(例如,闪速存储器设备、只读存储器(rom)设备等等)。通常,i/o桥106可以将(多个)cpu102连接到基板管理控制器130、一个或多个存储设备122、一个或多个网络接口控制器(nic)124、一个或多个通用串行总线(usb)设备126等等。通常,基板管理控制器130包含(多个)通用处理核154(例如,arm处理核),基板管理控制器130在上电复位时使该通用处理核保持复位。在执行信任安全校验以及其他校验(例如,硬件故障校验)的初始根之后,基板管理控制器130将(多个)通用处理核154从复位释放。更具体地,根据示例实施方式,基板管理控制器130耦接到外部非易失性存储器168,该外部非易失性存储器168存储由基板管理控制器130验证并由cpu102执行以启动计算机系统100的固件170。根据示例实施方式,基板管理控制器130包含硬件信任根(rot)引擎143。根据示例实施方式,rot引擎143存储用于验证机器可执行指令的不可变指纹。更具体地,响应于基板管理控制器130被启动,rot引擎143加载固件170的一部分并将该固件的该部分放入基板管理控制器130的存储器297中,保护存储器297,验证固件170的所述部分(使用不可变指纹),并且锁定存储器297的内容,使得该内容无法被改变。当(多个)通用处理核154退出复位时,(多个)核154获取安全存储器297(已经过验证并且被锁定以免于将来的修改)中的指令。存储器297中的固件指令由(多个)通用处理核执行,以验证固件170的下一部分,该下一部分可以从存储器168执行,或者在完成补丁指令的执行后(在本文中进一步描述),可以从基板管理控制器130外部的易失性存储器164(例如,由双倍数据速率(ddr)4dram设备形成的存储器)复制和执行。根据示例实施方式,可以以阶段式方式执行对计算机系统100的组件的验证(部分1在部分2被允许执行之前对部分2进行验证等),并且进程的“根”在硬件中通过rot引擎143执行。同样如图1中描绘的,基板管理控制器130可以包含可以由计算机系统100的(多个)cpu102配置的视频控制器131。存储器164可以由视频控制器131和(多个)通用处理核154共享,使得根据示例实施方式,视频控制器帧缓冲器可以存储在存储器164中。根据示例实施方式,视频控制器131耦接到显示器105。如本文所述,根据示例实施方式,配置器140相对于基板管理控制器130的(多个)通用处理核154自主地或独立地操作,以初始化或配置基板管理控制器130的子系统150。更具体地,根据示例实施方式,当基板管理控制器130在基板管理控制器130上电或启动时将(多个)通用处理核154保持在复位状态时,配置器140操作以配置子系统150。此外,如本文中进一步描述的,当配置器140配置子系统150时,基板管理控制器130控制控制器130的开关141以将配置器140耦接到子系统150并将(多个)通用处理核154与子系统150隔离。如此,基板管理控制器130的(多个)通用处理核154不能访问子系统150,直到子系统150被配置器140配置为对应的基本功能级别。此基本功能级别对于避免使基板管理控制器130“砖块化(bricking)”(并且可能使计算机系统100砖块化)而无需任何原因的目的可能是有益的。例如,子系统150可以是允许经由存储器164向最终用户显示信息和错误消息的接口(例如,物理存储器接口和存储器控制器)。更具体地,根据示例实施方式,如果基板管理控制器130发生故障(例如,由于硬件故障引起的故障、密码密钥校验失败等等),则(多个)cpu102可以检测故障并使用基板管理控制器130内的视频控制器131在显示器105上显示错误消息(由于存储器控制器和物理存储器接口都由配置器140初始化为基本级别)。同样如图1中描述的,根据示例实施方式,可编程逻辑设备(pld)160(例如,复杂pld(cpld))可以连接至基板管理控制器130,并且如本文中进一步描述的,可以用于响应于基板管理控制器130从上电复位转变而将表示数据位向量的数据传送至基板管理控制器130。如本文中进一步描述的,此数据位向量可以用于控制将(多个)通用处理核154从复位释放,并且可以用于标识要由配置器140执行的指令组,以定制如何配置特定子系统150。此外,同样如本文中描述的,pld160可以存储表示“补丁表”的数据,其中补丁表的记录可以由(多个)通用处理核154执行(在(多个)核154从复位释放后)以进一步配置一个或多个子系统150。图2描绘了基板管理控制器130的具体示例架构,但是根据进一步的实施方式,基板管理控制器130可以具有不同于图2所示出的架构的多个架构中的任何架构。对于图2中描绘的实施方式,基板管理控制器130使用cif总线引擎280经由cpld接口(在本文中称为“cif总线212”)与外部pld160通信。基板管理控制器130包括:复位控制电路284,该复位控制电路284用于控制(多个)通用处理核154何时保持复位;以及串行外围接口(spi)引擎290,该串行外围接口(spi)引擎290允许基板管理控制器130与存储固件170的外部存储器168通信。如图2中描绘的,根据示例实施方式,固件170包括启动指令294,该指令包括由rot引擎143加载到存储器297中并在从复位释放时由(多个)通用处理核154执行的指令的初始部分。如上所述,根据示例实施方式,(多个)通用处理核154从安全存储器297中获取指令并执行指令以验证固件170的下一部分,该下一部分可以从存储器168执行,或者在完成执行补丁指令(本文中进一步描述)后可以从易失性存储器164复制并执行。如图2中描绘的,固件170可以包括系统管理指令296,该系统管理指令被从存储器168复制到存储器164(其中指令296由(多个)通用处理核154执行)中以执行基板管理控制器130的运行时(runtime)系统管理功能,如与远程管理服务器通信;与计算机系统100的硬件组件通信、对其进行监测和可能的修改;与在计算机系统100上执行的应用程序通信;等等。根据示例实施方式,配置器140包括主处理器230,该主处理器可以被具体地构造为配置或初始化基板管理控制器130的n个子系统150中的特定子系统150(在此为子系统150-1,针对图2中描绘的示例)。这种初始化可以涉及将数据写入子系统150-1的配置和状态寄存器248的某些字段或子字段。根据示例实施方式,主处理器230包括主处理核236,该主处理核可以是相对于(多个)通用处理核154自主地或独立地操作的嵌入式微控制器。根据示例实施方式,可以使用硬件设计语言(hdl)中的寄存器传输语言(rtl)抽象来实施主处理核236。通常,主处理核236可以针对配置特定子系统150(如图2中描绘的子系统150-1)的特定任务相对高度地定制。根据示例实施方式,主处理核236执行存储在主处理器230的非易失性存储器(如图2中描绘的主只读存储器(rom)232)中的指令234。例如,与针对处理核236的硬编码指令相反,将可执行指令234存储在可被更新的非易失性存储器(如主rom232)中允许针对无需进行全金属层自旋(即,不经历另一个设计、工程制造往返周期)而修改子系统150-1的配置的灵活性。作为更具体的示例,根据一些实施方式,子系统150-1可以是用于外部存储器164的存储器控制器,并且另一个子系统150(如子系统150-n)可以是用于存储器164的物理存储器接口。作为示例,如果要改变为存储器控制器设置参数与接合物理存储器接口之间的时间延迟,则可以相对容易地更新主rom232,而不会影响基板管理控制器130的后续释放时间表。根据进一步的示例实施方式,主处理器230(和主处理核236)可以用于配置除存储器控制器之外的子系统。例如,根据示例实施方式,可以由配置器140(经由主处理器230或如本文进一步描述的从处理器260)配置的子系统150可以包括物理存储器接口、视频控制器131或电压供应。此外,根据一些实施方式,基板管理控制器130的高速串行通信接口292可以是由配置器140配置的子系统150。以此方式,例如,高速串行通信接口292可以具有一个物理层和多个链路层,这些层可以(经由csr寄存器)被编程为实施多个不同协议中的任何协议,如pcie和无限带宽协议。根据一些实施方式,(多个)cpu102可以经由通信接口292与如视频控制器131等基带管理控制器130的组件通信。例如,根据一些实施方式,主rom232可以具有84位的宽度并且可以具有128个条目的深度,这允许128个指令234被存储到主rom232中。根据进一步的实施方式,主rom232可以具有其他宽度和条目深度。如图2中描绘的,根据一些实施方式,主处理核236可以使用高级高性能总线(ahb)与子系统150-1通信,并且主处理核236可以以时间多路复用的方式与(多个)通用处理核154共享ahb。以此方式,根据示例实施方式,主处理核236可以出于以下目的控制开关或多路复用器242(开关141之一):1.控制主处理核236是否连接到与子系统150-1相连接的ahb段246,或者2.替代性地,控制(多个)通用处理核154是否连接到ahb段246。更具体地,根据示例实施方式,主处理核236耦接到ahb段240,该ahb段为多路复用器242的一个输入;并且(多个)通用处理核154耦接到对应于多路复用器242的另一个输入的另一个ahb段244。子系统150-1耦接到与多路复用器242的输出耦接的另一个ahb段246。在上电复位的初始阶段期间,其中配置器140配置子系统150(并且在该阶段,(多个)通用处理核154保持复位),主处理核236控制多路复用器242将ahb总线段240和246耦接在一起,并且将(多个)通用处理核154与子系统150-1隔离。利用这种多路复用器配置,主处理核236可以出于配置子系统150-1的目的与子系统150-1通信,即,对子系统150-1的控制和状态寄存器248进行读取和写入。以类似的方式,主处理核236可以控制其他多路复用器(即,控制其他交换机141)以将其他子系统150与通用处理核150隔离,并允许这些其他子系统的配置,如本文进一步描述的。根据示例实施方式,当子系统150的配置完成时,主处理核236可以进一步控制多路复用器将配置器140的组件与子系统150隔离并且将(多个)通用处理核154物理地连接到子系统150,使得(多个)核154可以使用现在配置的子系统150。根据示例实施方式,存储在主rom232中的指令234可以具有在图3的表300中描绘的指令格式。参考图3,结合图2,指令的前三位(cmd[2:0])表示命令,并且在表300的列302中描绘示例命令以及与每个命令相对应的示例位编码。参考列302,“rmw”对应于读取-修改-写入命令;“pol”对应于轮询命令;“jmp”对应于跳转命令;“dly”对应于延迟命令;“nop”对应于无操作命令;“cas”对应于实例指令的实例命令(在下文中进一步描述);并且“dfi”对应于包含针对从处理器260的嵌入式命令的指令(在下文中进一步描述)的命令。根据示例实施方式,列306、308和310描绘了指令的运算对象字段;并且列312包含对读取-修改-写入、写入和轮询指令的描述。例如,对于跳转指令,十六位运算对象字段op1[19:4](在列306中描绘)包含表示指向要执行的下一个指令的指针的位。作为另一个示例,对于延迟命令,运算对象字段[5:4]包含表示特定延迟的位,如微秒数的延迟(即,[5:4]=“b10”,其中“b”指示二进制表示),其微秒数由三十二位运算对象字段op2[51:20]中的位设置。如列310中图示的,另一个三十二位运算对象字段op3[83:52]可以包含表示三十二位数据掩码的位。根据示例实施方式,指令可以包含一位字段(lc[3],在列304中描绘),该字段可以(根据位的值)用于放在要作为组来执行的特定指令集的两端或为该要作为组来执行的特定指令集加标签。通常,实例指令(即,带有cas命令的指令234)的执行会使得主处理核236在紧接实例指令的指令组当中选择一组特定的指令234,以供核236执行。更具体地,根据示例实施方式,实例指令的六位运算对象字段op1[9:4]标识位向量282(参见图2)的起始位位置,并且所述运算对象字段的两位运算对象字段op1[11:10]标识位向量282的连续位位置(以起始位位置开始)的长度或数量。因此,实例指令的op1[9:4]和op1[11:10]运算对象字段的组合标识位向量282的一组连续位。由这组位表示的值进而是标识主处理核236要执行的特定指令组的索引或选择器。op1[11:10]字段中的位表示的位数还表示实例指令之后的指令组的数量(2长度)。例如,如果位数是“3”,则主处理核236假设在实例指令之后有23=8个指令组;并且作为另一个示例,如果位数是“2”,则主处理核236假设在实例指令之后有22=4个指令组。根据示例实施方式,主处理核236以遍历二进制顺序遍历指令组并执行与选择器匹配的指令组。可以用位lc[3]位字段来界定每个指令组的末尾或在每个指令组两端加标签。因此,根据示例实施方式,分组中的指令数在主rom232的大小的边界内是可变的。根据示例实施方式,主处理核236继续遍历已执行指令组之后的任何(多个)其余的指令组。作为更具体的示例,下文阐述了示例实例指令:cmd[2:0]=cas,op1[9:4]=6′d22,op1[11:10]=2′d2在此记法中,“6′d22”表示共同对应于十进制值“22”的六位;并且“2′d2”表示共同对应于十进制值“2”的两位。因此,对于此示例,数据位向量282的位位置22和23对应于组指令选择器。此外,由于选择器是由两位构成的,因此在实例指令之后有四组指令。因此,实例指令可以用伪代码表示如下:case(sstrap[23:22])2′b00:执行指令组12′b01:执行指令组22′b10:执行指令组32′b11:执行指令组4如上所述,主rom232具有128个条目的深度,但是根据示例实施方式,rom232可以具有其他深度。根据示例实施方式,主处理核236将主rom232的最后地址(例如,128条目实施方式的第128个rom地址)视为特殊,因为主处理核236在执行最后地址处的任何指令后停止执行,并在执行最终rom行内的指令时返回到空闲状态。此外,根据示例实施方式,主处理核236可以在到达最后条目时并且在返回到空闲状态之前,控制多路复用器242的选择输入,将主处理器230与子系统150-1解耦并将子系统150-1耦接到ahb总线段245,使得可以随后连接(多个)通用处理核154,以访问子系统150-1。参考图2,如本文中进一步描述的,根据示例实施方式,配置器140可以包含被定制成配置基板管理控制器130的对应子系统150的零个、一个或多个从处理器260(参见图2)。作为示例,由从处理器260配置的子系统150可以对应于存储器物理接口、总线控制器、电压供应等等。此外,特定从处理器260可以使用与其他从处理器260和/或主处理器230中的任何处理器所使用的协议不同的总线协议与其子系统150通信。以此方式,对于图2中描绘的示例实施方式,从处理器260通过高级外围总线(apb)与子系统150-n通信情况可能如此,例如,当从处理器260配置物理存储器接口时。从处理器260通过指令总线250与主处理器230通信。通常,指令总线250包含可以由主处理核236用于将特定指令传送到特定从处理器260的通信线,并且包含解码线,该解码线由主处理核236用于选择特定从处理器260,使得从处理器260可以接收用于执行的指令。以此方式,主处理核236可以能够控制从处理器260。参考图3,结合图2,根据示例实施方式,“dfi”指令(具有“dfi”命令)是指令的示例,该指令在其运算对象中编码要由配置器140的特定从处理器260执行的独立指令。dfi指令可以存储在主rom232中,并且出于表示要由特定从处理器260执行的经编码指令的目的由主处理核236执行。根据一些实施方式,从处理器260可以执行对应于rmw、wr、poll和nop命令的指令。作为示例,指令(本文中称为“嵌入式指令”)从处理器260可以被编码成如下的dfi指令。两位op1[5:4]运算对象字段包含表示嵌入式指令的命令的位,并且其他运算对象字段可以适当地包含表示嵌入式指令的地址、数据和掩码的位。例如,对于嵌入式读取-修改-写入指令,op1[5:4]运算对象字段可以包含用于表示rmw命令的值“00b”(其中“b”指示二进制表示);dfi指令的其他运算对象字段可以表示嵌入式读取-修改-写入指令的10位地址、16位数据和16位掩码、最后命令位字段以及运算对象字段,该运算对象字段包含表示用于执行嵌入式读取-修改-写入指令的特定从处理器260的位。作为dfi指令的其他示例,op1[5:4]运算对象字段可以包含表示另一个命令(例如,wr写入命令、poll轮询命令和nop无操作命令)的另一组位值;dfi指令的其他运算对象字段可以适当地表示嵌入式命令的运算对象,例如地址、数据、掩码等等;并且dfi指令还可以包括运算对象字段,该运算对象字段包含表示嵌入式命令是否为最后命令的位以及表示用于执行嵌入式指令的特定从处理器260的位。根据示例实施方式,基板管理控制器130可以包含多个具有相同设置和配置的重复子系统150;并且这些重复子系统150中的每一个都可以由对应的从处理器260配置。对于这些实施方式,主处理核236可以处理包含针对所有这些从处理器260进行解码的嵌入式指令的dfi指令。返回参考图2,根据示例实施方式,从处理器260包括存储器264和从处理核262,该从处理核出于自主地或独立地配置相关联的子系统150的目的,执行存储在存储器264中的指令266。根据示例实施方式,存储器264存储由主处理核236传送到从处理器260的指令266,如以上所讨论的。根据一些实施方式,存储器264可以是易失性存储器,该易失性存储器不包含除经由指令总线250(例如,响应于主处理核236执行dfi指令)传送到从处理器260的指令外的任何指令。根据进一步的示例实施方式,存储器264可以包括非易失性存储器,该非易失性存储器用要由从处理核262执行的特定指令264预编码。与主处理器230类似,根据某些实施方式,从处理核262可以控制将从处理核262耦接到相关联的子系统150的相关联的开关141或多路复用器270。多路复用器270具有连接到apb段272的一个输入端,以及连接到通过桥267连接到ahb总线段244的apb总线段224的另一个输入端。多路复用器270的输出端与连接到相关联的子系统150的apb段276连接。从处理核262可以出于以下目的控制多路复用器270:1.控制从处理核262是否连接到apb段276,或者2.替代性地,控制(多个)通用处理核154是否连接到apb段276。根据一些实施方式,从处理核262可以具有与主处理核236类似的设计。在这方面,根据示例实施方式,处理核236和262都可以例如使用hdl中的rtl抽象来实施。根据一些实施方式,从处理核262可以具有比主处理核236的指令集更小的相关联的指令集。例如,根据一些实施方式,从处理核262不执行具有如dfi指令等嵌入式指令的指令。根据一些实施方式,从处理核262可以不执行实例指令。根据示例实施方式,从处理核262可以执行读取-修改-写入、读取、写入、无操作、跳转和轮询指令以及可能的其他指令。如图2中描绘的,pld160可以存储数据位向量215,该数据位向量215对应于提供给主处理器230的数据位向量282。根据示例实施方式,响应于基板管理控制器的上电复位,基板管理控制器130的引擎280与pld160通信(经由cif总线212)以取得数据位向量282。同样如附图标记281所指示的,引擎280还可以进一步表示数据位向量的数据到基板管理控制器的复位控制电路284。根据示例实施方式,复位控制电路284响应于基板管理控制器130的上电复位而将(多个)通用处理核154置于复位,并且复位控制电路284使(多个)通用处理核154保持复位直到满足特定条件。根据示例实施方式,数据位向量281可以建立一个或多个这样的条件。作为示例,数据位向量281可以具有一个或多个指定的位位置,这允许配置器140在特定条件下配置子系统150以允许(多个)通用处理核154从复位释放(诸如,配置器140的所有处理器230和260都返回空闲状态)、经过特定量的时间、要轮询以指示子系统150的配置器的配置已完成的标志等等。根据示例实施方式,复位控制电路284可以施加用于将(多个)通用处理核154从复位释放的条件,该条件独立于配置器140的动作,例如,与确定是否存在任何硬件故障有关的条件,与是否已经通过信任根安全校验有关的条件,等等。根据示例实施方式,配置器140至少在一定程度上对子系统150进行配置,以将子系统150带到基本功能级别以进行简单的操作。例如,根据一些实施方式,子系统150可以包括存储器控制器(一个子系统150)和物理存储器接口(另一个子系统150),并且当通用处理核154保持复位时,配置器140将存储器控制器和物理存储器接口配置为基本功能级别。因此,如果出现阻止(多个)通用处理核154从复位释放的特定问题(例如,硬件故障、密码校验失败等等),则(多个)cpu102可以检测故常并使用基板管理控制器130内的视频控制器131在显示器105上显示错误消息。根据示例实施方式,基板管理控制器130允许在(多个)通用处理核154从复位释放后(并且在配置器140配置子系统150后)对子系统150进行进一步配置。更具体地,根据示例实施方式,pld160存储补丁数据214,该补丁数据表示包含要由(多个)通用处理核154出于进一步配置子系统150的目执行的补丁记录的补丁表。例如,特定补丁记录可以包含用于出于优化存储器控制器的系统总线性能的目的设置存储器控制器中各种结果质量(qor)字段的指令。可以通过执行补丁表记录中包含的指令,针对存储器控制器以及其他子系统执行其他相对低级别的优化。作为另一个示例,补丁记录可以包含允许包括时间元素的初始化例程的延迟操作。根据一些实施方式,当引导指令294被(多个)通用处理核154执行时,该引导指令形成记录解释器,该记录解释器处理补丁表的记录,并获得与初始化一个或多个子系统150的设置和/或为一个或多个子系统150打补丁相关的信息。根据示例实施方式,存在可以被补丁表记录引导的许多不同类型的操作。记录解释器出于了解补丁表中存在多少有效记录的目,切断补丁表中的头部数据。根据示例实施方式,记录解释器由(多个)通用处理核154在启动指令开始执行时执行。当记录解释器完成对补丁表记录的处理后,(多个)通用处理核154然后可以继续执行附加的引导指令294。参考图4,根据示例实施方式,补丁表可以包含头部,如图4中的表400图示的头部。表400图示了示例头部字段(在列402中)和头部字段的定义(在列404中)。如所示出的,补丁表的头部可以包含含有表示补丁表字节数的数据的字段(num_patch_set_eytes[15:0]);含有表示补丁表的条目或记录数的数据的字段(num_patch_set_entries[15:0]);含有表示补丁表和头部的校验和的数据的字段(mem_config_checksum[31:0]);含有表示方案生成(schemageneration)的数据的字段(mem_config_gen_rev[15:0]);以及含有表示补丁表的修订号(revisionnumber)的数据的字段(mem_config_table_rev[15:0])。根据示例实施方式,图5是表示补丁表条目或记录的字段(列502)和描述(列504)的表500。如所示出的,补丁表记录可以包含限定记录类别的字段(reg_class[2:0]);限定要修改的寄存器248的起始位位置的字段(field_start_bit[4:0]);限定要执行的命令(例如,rmw、poll和delay)的字段(reg_op_code[2:0]);限定配置寄存器248内所写入的或补丁的字段的长度(以位为单位)的字段(field_bit_length[4:0]);限定寄存器偏移或延迟(取决于是rmw命令还是delay命令)的字段(reg_offset[15:0]);以及限定要写入的数据或延迟(取决于是rmw命令还是delay命令)的字段(field_patch_data[31:0])。图6a、图6b、图6c、图6d和图6e分别描绘了根据示例实施方式的状态图的对应部分600a、600b、600c和600e,其图示了主处理核236对指令的处理。根据示例实施方式,主处理核236具有以下状态:idle状态602(图6a和图6c),该状态是主处理核236处于空闲并且不执行指令的状态;init_cmd状态608(图6a和图6b),该状态是主处理核236解析来自指令的命令的状态;stall状态632(图6b);delay状态638(图6b);waccess状态613(图6b和图6c),在该状态下主处理核236执行写入访问;以及raccess状态683(图6b和图6c),在该状态下主处理核236执行读取访问。在图6a、图6b和图6c中,“ai”是指给定子系统的功能,“cnd”是指给定条件序列门;“seq”是指要执行的给定指令组或指令序列;“n”表示序列的运算对象的数量;“z”表示cas命令支持的数据位向量的最大连续位数;并且“sstraps”表示数据位向量282。参考图6a,部分600a描绘了与转变到init_cmd状态608有关的决策,在该状态下主处理核236开始处理指令,包括解析来自指令的命令。具体地,图6a描绘了主处理核236作出的从idle状态602转变到init_cmd状态608的决策。如图6a中描绘的,基板管理控制器130上电复位601后,主处理核236转变到idle状态602。从idle状态602,主处理核236可以从idle状态602转变到init_cmd状态608,以执行多个不同指令序列234中的任何指令序列,如框604、框612和框616中描述的,从而允许对于计算机系统的特定环境对配置器140进行配置的灵活性,该计算机系统的特定环境并入了基板管理控制器130。根据经由决策框604、决策框612和决策框616选择的特定指令序列234,分别在框606、框614和框618中将指令指针(cmd_ptr)设置为适当的值,并且控制转变到init_cmd状态608。图6a进一步描绘了响应于在主rom232中选择的下一个指令而向init_cmd状态608的转变;以及响应于命令未被识别但是命令指针不在主rom232的末尾(决策框622)而向init_cmd状态608的转变。同样,如组合逻辑625、倒计时计时器626和命令过滤器627所描绘的,主处理核236响应于执行对应于数据选择器位向量的匹配的一组指令而转变到init_cmd状态。图6b描绘了由主处理核236在init_cmd状态下基于对指令命令的解析而作出的决策。具体地,如果命令是暂停(stall)命令(如在决策框630确定的),则主处理核236转变到stall状态632。根据示例实施方式,控制将在一个时钟之后从stall状态632转变回到先前状态,但是为了清楚起见未在图中示出。如果主处理核236确定(决策框634)命令是延迟命令,则如框636、框640和框642表示的,主处理核236针对特定计数保持在delay状态638,然后确定(决策框697)(图6d)命令指针是否在主rom232的末尾。如果否,则主处理核236使命令指针增加(框698)(图6d)并返回init_cmd状态608。否则,如果主处理核236确定(决策框697)命令指针在主rom232的末尾,则控制返回框624(图6a)。如果主处理核236确定(决策框644)(图6b)命令是jmp命令,则主处理核236将命令指针设置(框646)到指令的运算对象所表示的位置,并返回init_cmd状态608。如本文进一步描述的,如果主处理核236确定(决策框650)命令是wr写入命令,则主处理核236转变到waccess状态613以执行写入访问。如果主处理核236确定(决策框654)命令是poll命令或rmw命令,则主处理核236适当地设置(框656)轮询计时器标志,并转变到raccess状态683,这将在本文中进一步描述。如果主处理核236确定(决策框660)命令是cas命令,则主处理核236确定(决策框661)命令指针是否在主rom232的末尾(即,在决策框661中,“[end]”是指主rom232中的最终条目),并且如果是,则控制返回框624(图6a)。否则,如果命令指针不在主rom232的末尾,则主处理核236按照框662使命令指针增加并设置cas计数器标志,并将控制返回init_cmd状态608。如果主处理核236确定(决策框664)命令是dfi命令,则主处理核236根据框666、框668和框670请求指令总线250,并且一旦被授予,该主处理核就根据框672将嵌入式指令发送到从处理器260。参考图6e,主处理核236然后确定(决策框693)命令指针是否在主rom232的末尾,并且如果否,则在返回init_cmd状态608之前,根据框699使命令指针增加。否则,如果主处理核236确定(决策框693)命令指针在主rom232的末尾,则主处理核236返回框624(图6a)。图6c描绘了在waccess状态613和raccess状态683下采取的动作。在waccess状态613下,主处理核236确定(决策框675)命令是否为rmw命令,并且如果是,则执行(框677)将经修改数据写入指定地址。否则,如果主处理核236确定(决策框675)命令是wr命令,则主处理核236(决策框676)将指定数据写入指定地址。响应于主处理核236确定(决策框681)写入已经完成,主处理核236继续到决策框697(图6d)。如果主处理核236确定(决策框679)写入操作是异常的长写入(即,如通过使计数器递减所指示的,超过预定持续时间,如框695中描绘的),则主处理核236根据框680设置错误标志并返回idle状态602。在raccess状态683下,主处理核236执行指定地址的读取请求(框684)并确定(决策框685)读取是否完成。在此确定中,主处理核236可以确定(决策框686)计时器是否超时(根据框687),并且如果是,则设置(框688)错误标志并返回idle状态602。如果主处理核236确定(决策框689)读取与poll指令相关联,则主处理核236确定(决策框690)读取数据是否与作为对应指令的一部分的数据相匹配,如果是,则返回决策框697(图6d)。否则,如果读取数据不匹配(决策框690),则主处理核236等待计时器的持续时间(如决策框691和决策框692表示的)以执行后续的读取,直到poll数据匹配为止。如果轮询计时器超时(如在决策框691中确定的),则主处理核236设置(框694)错误标志并返回idle状态602。同样如图6c中描绘的,如果读取是读取-修改-写入命令的一部分(如在决策框693中决定的),则主处理核236转变到waccess状态613以处理写入命令。否则,如果还没有到达主rom232的末尾,则主处理核236通过框620和框622(如下所述)转变回init_cmd状态308。返回参考图6a,如果主处理核236确定(决策框622)命令指针不在主rom232的末尾,则主处理核236执行无操作(框620)并返回init_cmd状态608。否则,如果主处理核236检测到主rom232的末尾,则主处理核236设置(框624)适当的序列结束标志并返回idle状态602。根据示例实施方式,从处理核262(参见图2)可以以与主处理核236类似的方式处理指令,除了由从处理核262处理的指令可以被修改以省略不被从处理核262处理的(多个)特定指令,诸如,包含dfi命令和/或cas命令的指令。参考图7,根据示例实施方式,装置700包括多个子系统710,多个子系统包括第一子系统710-1和第二子系统710-2。装置700包括主处理器714,该主处理器用于响应于装置700的上电而执行用于配置第一子系统710-1并提供第二指令的第一指令。装置700进一步包括从处理器718,该从处理器用于在装置700启动之前接收来自主处理器714的第二指令并执行用于配置第二子系统710-2的第二指令。参考图8,根据示例实施方式,计算机系统800包括多个中央处理单元(cpu)804、系统存储器808和基板管理控制器810。基板管理控制器810包括多个子系统840,多个子系统包括第一子系统840-1和第二子系统840-2。基板管理控制器810的至少一个处理核814执行用于执行计算机系统800的系统管理任务的指令。基板管理控制器810进一步包括主配置器818和从配置器820。主配置器818响应于基板管理控制器810的上电而执行第一指令,该第一指令用于配置第一子系统840-1并提供第二指令;并且从配置器820接收第二指令并执行用于配置第二子系统840-2的第二指令。参考图9,根据示例实施方式,技术900包括:嵌入式处理系统的通用处理核响应于通用处理核从复位释放而执行指令(根据框904);以及响应于嵌入式处理系统的上电而使通用处理核保持复位(框908)。技术900包括:根据框910,当通用处理核保持复位时,嵌入式处理系统的主处理器执行第一指令,其中,执行第一指令会配置嵌入式处理系统的第一子系统,并使主处理器将第二指令传送到嵌入式处理系统的从处理器;以及从处理器执行用于配置第二子系统的第二指令。根据示例实施方式,第一指令包括给定第一指令,该给定第一指令具有表示第二指令中的给定第二指令的运算对象;并且主处理器对给定第一指令的执行使得主处理器将给定第二指令传送到从处理器。这种布置的具体优点是主处理器能够远程控制从处理器,该从处理器可以被定制成配置特定子系统。根据示例实施方式,主处理器使用第一总线通信协议与第一子系统通信,并且从处理器使用不同于该第一总线通信协议的第二总线通信协议与第二子系统通信。这种布置的具体优点是主处理器和从处理器可以专门针对被配置的特定子系统进行定制。根据示例实施方式,第一子系统可以包括存储器控制器,并且第二子系统可以包括存储器接口。这种布置的具体优点是用于访问存储器的基本功能可以在通用处理核从复位释放之前被设置,从而在问题阻止核从复位状态释放时提供方法来报告错误消息。根据示例实施方式,该装置可以包括总线多路复用器,并且主处理器控制总线多路复用器,使得总线多路复用器将主处理器耦接到第一子系统以配置第一系统,并将通用处理器耦接到第一子系统以允许通用处理器在该通用处理器从复位释放时与第一子系统通信。这种布置的具体优点是当第一子系统由主处理器初始配置时,第一子系统可以与通用处理器隔离,从而阻止未通过信任根校验的通用处理器访问第一子系统。根据示例实施方式,该装置可以存储多个指令,其中该多个指令包括第一指令、实例指令以及与实例指令相关联的指令组。指令组中的给定指令组对应于第一指令,并且主处理器响应于执行实例指令而选择第一指令,以供主处理器基于装置接收到的标识给定组的数据向量来执行。这种布置的具体优点是提供了灵活性以允许外部数据用于由主处理器控制第一子系统的配置。根据示例实施方式,密码校验失败会阻止通用处理核从复位释放,并且该技术进一步包括使用已配置第一子系统和第二已配置子系统中的至少一个来传送表示密码校验失败的消息。这种技术的具体优点是错误或信息消息可以使用已配置到基本功能级别的(多个)子系统来报告而不依赖于通用处理核。尽管已经关于有限数量的实施方式描述了本公开,但受益于本公开的本领域技术人员将了解本公开的许多修改和变化。所附权利要求旨在覆盖所有这些修改和变化。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1