CN113205838A - 用于在其他处理器保持复位时配置子系统的处理器 - Google Patents
用于在其他处理器保持复位时配置子系统的处理器 Download PDFInfo
- Publication number
- CN113205838A CN113205838A CN202110118069.4A CN202110118069A CN113205838A CN 113205838 A CN113205838 A CN 113205838A CN 202110118069 A CN202110118069 A CN 202110118069A CN 113205838 A CN113205838 A CN 113205838A
- Authority
- CN
- China
- Prior art keywords
- processor
- instruction
- instructions
- memory
- processing core
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4405—Initialisation of multiprocessor systems
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/20—Memory cell initialisation circuits, e.g. when powering up or down, memory clear, latent image memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/24—Resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1056—Simplification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
本公开提供了用于在其他处理器保持复位时配置子系统的处理器。一种装置,包括子系统、第一处理器、存储器、电路和第二处理器。所述第一处理器用于执行引导指令,并且所述存储器用于存储第二指令。所述电路用于响应于所述装置上电而使所述第一处理器保持复位;并且所述第二处理器用于在所述第一处理器保持复位时执行所述第二指令以对所述子系统进行初始化。
Description
背景技术
专用集成电路(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。
主处理器的非易失性存储器也可以存储case指令,其中对特定case指令的执行基于提供给嵌入式处理系统的数据位向量指示主处理核选择要执行的特定指令组。以此方式,如本文中进一步描述的,根据一些实施方式,如可编程逻辑设备(PLD)等嵌入式处理系统外部的部件可以存储表示数据位向量的数据,并且PLD在嵌入式处理系统上电复位后向嵌入式处理系统提供数据位向量。如本文中进一步描述的,根据示例实施方式,case指令识别数据位向量的特定位位置,并且与所识别的位相对应的位选择要执行(在case指令之后的)的特定指令组。
根据示例实施方式,主处理核可以执行包含操作数(operand)的指令,所述操作数共同表示针对特定从处理器的指令。更具体地,根据一些实施方式,主处理器可以经由指令总线连接到从处理器;并且指令总线可以包含用于选择各种从处理器的解码信号。更具体地,由主处理核执行的特定指令可以包含说明要由特定从处理器执行的嵌入式指令的操作数,并且主处理核可以向指令总线提供嵌入式指令并断言适当的解码信号,使得从处理器可以从指令总线取得指令并且然后执行指令。
根据一些实施方式,从处理器可以包括从处理核(例如,嵌入式微控制器),以及存储用于由从处理器执行的指令的存储器(例如,非易失性存储器)。根据一些实施方式,从处理器可以执行经由指令总线转发给从处理器的指令。
参考图1,作为更具体的示例,根据一些实施方式,电子系统可以包括嵌入式处理系统,所述嵌入式处理系统包括用于目的是初始化或配置嵌入式处理系统的一个或多个子系统150的配置器140。对于图1中描绘的示例实施方式,电子系统是计算机系统100,如服务器、客户端、台式计算机、膝上型计算机、平板计算机、智能电话、可穿戴计算机、机架安装模块等等。对于图1中描绘的示例实施方式,嵌入式处理系统是基板管理控制器130,但是根据进一步的实施方式,嵌入式处理系统可以是多个其他嵌入式处理系统中的任何嵌入式处理系统,如除其他基板管理控制器外的ASIC、SoC、微处理器、微控制器等等。
如本文所使用的,“基板管理控制器”是专用服务处理器,所述专用服务处理器使用传感器监测服务器或其他硬件的物理状态,并通过管理网络与管理系统通信。基板管理控制器也可以通过输入/输出控制器(IOCTL)接口驱动程序、表述性状态转移(REST)应用程序接口(API)或促进基板管理控制器与应用程序之间通信的某种其他系统软件代理与在操作系统级别执行的应用程序通信。基板管理控制器可以具有对位于服务器机箱(包括系统存储器)中的硬件设备的硬件级访问。基板管理控制器可以能够直接修改硬件设备。基板管理控制器可以独立于其中布置了基板管理控制器的系统的操作系统而操作。基板管理控制器可以位于服务器或要被监测的其他设备的主板或主电路板上。基板管理控制器安装在受管理服务器/硬件的主板上或以其他方式连接或附接到受管理服务器/硬件的事实并不能防止基板管理控制器被认为与服务器/硬件“分离”。如本文所使用的,基板管理控制器具有对计算设备的子系统的管理能力,并且与执行计算设备的操作系统的处理资源分离。基板管理控制器与在系统上执行高级操作系统或管理程序的处理器(如中央处理单元)分离。
根据示例实施方式,计算机系统100包括一个或多个中央处理单元(CPU)102(例如,CPU处理核、包含CPU处理器核的半导体)以及连接到(多个)CPU以形成系统存储器104的存储器设备。(多个)CPU 102可以耦接到输入/输出(I/O)桥106。此外,同样如图1中描绘的,计算机系统100可以包括一个或多个快速外围部件互连(PCIe)设备110(例如,PCIe扩展卡),所述PCIe设备可以通过对应的(多个)单独的PCIe总线108耦接到(多个)CPU 102。根据进一步示例实施方式,(多个)PCIe设备110可以耦接到I/O桥106,而不是耦接到(多个)CPU102。
通常,形成系统存储器104的存储器设备以及本文中描述的其他存储器设备可以由非暂态存储器设备形成,如半导体存储设备、闪速存储器设备、忆阻器、相变存储器设备、上述存储技术中的一种或多种的组合等等。此外,除非本文中另有说明,否则存储设备可以是易失性存储设备(例如,动态随机存取存储器(DRAM)设备、静态随机存取(SRAM)设备等等)或非易失性存储设备(例如,闪速存储器设备、只读存储器(ROM)设备等等)。
通常,I/O桥106可以将(多个)CPU 102连接到基板管理控制器130、一个或多个存储设备122、一个或多个网络接口控制器(NIC)124、一个或多个通用串行总线(USB)设备126等等。
通常,基板管理控制器130包含(多个)通用处理核154(例如,ARM处理核),基板管理控制器130在上电复位时使所述通用处理核保持复位。在执行信任安全检查以及其他检查(例如,硬件故障检查)的初始根之后,基板管理控制器130将(多个)通用处理核154从复位释放。更具体地,根据示例实施方式,基板管理控制器130耦接到外部非易失性存储器168,所述外部非易失性存储器存储由基板管理控制器130验证并由CPU 102执行以启动计算机系统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的(多个)CPU 102配置的视频控制器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发生故障(例如,由于硬件故障引起的故障、密码密钥检查失败等等),则(多个)CPU 102可以检测故障并使用基板管理控制器130内的视频控制器131在显示器105上显示错误消息(由于存储器控制器和物理存储器接口都由配置器140初始化为基本级别)。
同样如图1中描述的,根据示例实施方式,可编程逻辑设备(PLD)160(例如,复杂PLD(cPLD))可以连接至基板管理控制器130,并且如本文中进一步描述的,可以用于响应于基板管理控制器130从上电复位转变而将表示数据位向量的数据传送至基板管理控制器130。如本文中进一步描述的,此数据位向量可以用于控制将(多个)通用处理核154从复位释放,并且可以用于识别要由配置器140执行的指令组,以定制如何配置特定子系统150。此外,同样如本文中描述的,PLD 160可以存储表示“补丁表”的数据,其中补丁表的记录可以由(在(多个)核154从复位释放后)(多个)通用处理核154执行以进一步配置一个或多个子系统150。
图2描绘了基板管理控制器130的具体示例架构,但是根据进一步的实施方式,基板管理控制器130可以具有不同于图2所示出的架构的多个架构中的任何架构。对于图2中描绘的实施方式,基板管理控制器130使用CIF总线引擎280经由cPLD接口(在本文中称为“CIF总线212”)与外部PLD 160通信。基板管理控制器130包括用于控制(多个)通用处理核154何时保持复位的复位控制电路284;以及允许基板管理控制器130与存储固件170的外部存储器168通信的串行外围接口(SPI)引擎290。
如图2中描绘的,根据示例实施方式,固件170包括启动指令294,所述指令包括由RoT引擎143加载到存储器297中并在从复位释放时由(多个)通用处理核154执行的指令的初始部分。如上所述,根据示例实施方式,(多个)通用处理核154从安全存储器297中获取指令并执行指令以验证固件170的下一部分,所述下一部分可以从存储器168执行,或者在完成执行补丁指令(本文中进一步描述)后可以从易失性存储器164复制并执行。
如图2中描绘的,固件170可以包括系统管理指令296,所述系统管理指令296从存储器168被复制到存储器164(其中指令296由(多个)通用处理核154执行)中以执行基板管理控制器130的运行时系统管理功能,如与远程管理服务器通信;与计算机系统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的物理存储器接口。作为示例,如果要改变为存储器控制器设置参数与接合物理存储器接口之间的时间延迟,则可以相对容易地更新主ROM 232,而不会影响基板管理控制器130的后续释放时间表。
根据进一步的示例实施方式,主处理器230(和主处理核236)可以用于配置除存储器控制器之外的子系统。例如,根据示例实施方式,可以由配置器140(经由主处理器230或如本文进一步描述的从处理器260)配置的子系统150可以包括物理存储器接口、视频控制器131或电压供应。此外,根据一些实施方式,基板管理控制器130的高速串行通信接口292可以是由配置器140配置的子系统150。以此方式,例如,高速串行通信接口292可以具有一个物理层和多个链路层,这些层可以(经由CSR寄存器)被编程为实施多个不同协议中的任何协议,如PCIe和无限带宽协议。根据一些实施方式,(多个)CPU 102可以经由通信接口292与如视频控制器131等基板管理控制器130的部件通信。
例如,根据一些实施方式,主ROM 232可以具有84位的宽度并且可以具有128个条目的深度,这允许128个指令234被存储到主ROM 232中。根据进一步的实施方式,主ROM 232可以具有其他宽度和条目深度。
如图2中描绘的,根据一些实施方式,主处理核236可以使用高级高性能总线(Advanced High-performance Bus,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。
根据示例实施方式,存储在主ROM 232中的指令234可以具有在图3的表300中描绘的指令格式。参考图3,结合图2,指令的前三位(CMD[2:0])表示命令,并且示例命令以及与每个命令相对应的示例位编码在表300的列302中描绘。参考列302,“RMW”对应于读取-修改-写入命令;“POL”对应于轮询命令;“JMP”对应于跳转命令;“DLY”对应于延迟命令;“NOP”对应于无操作命令;“CAS”对应于case指令的case命令(在下文中进一步描述);并且“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中描绘),所述字段可以(根据位的值)用于放在要作为组来执行的特定指令集的两端或为其加标签。
通常,case指令(即,具有CAS命令的指令234)的执行会导致主处理核236在紧接case指令的指令组当中选择一组特定的指令234以供核236执行。更具体地,根据示例实施方式,case指令的六位操作数字段Op1[9:4]识别位向量282(参见图2)的起始位位置,并且所述操作数字段的两位操作数字段Op1[11:10]识别位向量282的连续位位置(以起始位位置开始)的长度或数量。因此,case指令的Op1[9:4]和Op1[11:10]操作数字段的组合识别位向量282的一组连续位。由这组位表示的值进而是识别主处理核236要执行的特定指令组的索引或选择器。Op1[11:10]字段中的位表示的位数还表示case指令之后的指令组的数量(2长度)。例如,如果位数是“3”,则主处理核236假设在case指令之后有23=8个指令组;并且作为另一个示例,如果位数是“2”,则主处理核236假设在case指令之后有22=4个指令组。
根据示例实施方式,主处理核236以遍历二进制顺序遍历指令组并执行与选择器匹配的指令组。每个指令组的末尾可以用位LC[3]位字段来界定或在其两端加标签。因此,根据示例实施方式,分组中的指令数在主ROM 232的大小的边界内是可变的。根据示例实施方式,主处理核236继续遍历已执行指令组之后的任何(多个)剩余的指令组。
作为更具体的示例,下文阐述了示例case指令:
CMD[2:0]=CAS,Op1[9:4]=6′d22,Op1[11:10]=2′d2
在此记法中,“6′d22”表示共同对应于十进制值“22”的六位;并且“2′d2”表示共同对应于十进制值“2”的两位。因此,对于此示例,数据位向量282的位位置22和23对应于组指令选择器。此外,由于选择器是由两位构成的,因此在case指令之后有四组指令。因此,case指令可以用伪代码表示如下:
case(SSTRAP[23:22])
2′b00:Execute Instruction-group 1
2′b01:Execute Instruction-group 2
2′b10:Execute Instruction-group 3
2′b11:Execute Instruction-group 4
如上所述,主ROM 232具有128个条目的深度,但是根据示例实施方式,ROM 232可以具有其他深度。根据示例实施方式,主处理核236将主ROM 232的最后地址(例如,用于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指令可以存储在主ROM 232中,并且出于表示要由特定从处理器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可以控制相关联的交换机141或多路复用器270,所述交换机或多路复用器将从处理核262耦接到相关联的亚子系统150。多路复用器270具有连接到APB段272的一个输入端,以及连接到APB总线段224的另一个输入端,所述APB总线段通过桥267连接到AHB总线段244。多路复用器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可以不执行case指令。根据示例实施方式,从处理核262可以执行读取-修改-写入指令、读取指令、写入指令、无操作指令、跳转指令和轮询指令以及可能的其他指令。
如图2中描绘的,PLD 160可以存储与提供给主处理器230的数据位向量282相对应的数据位向量215。根据示例实施方式,响应于基板管理控制器的上电复位,基板管理控制器130的引擎280(经由CIF总线212)与PLD 160通信以取得数据位向量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从复位释放的特定问题(例如,硬件故障、密码检查失败等等),则(多个)CPU 102可以检测故常并使用基板管理控制器130内的视频控制器131在显示器105上显示错误消息。
根据示例实施方式,基板管理控制器130允许在(多个)通用处理核154从复位释放后(并且在配置器140配置子系统150后)对子系统150进行进一步配置。更具体地,根据示例实施方式,PLD 160存储补丁数据214,所述补丁数据表示包含要由(多个)通用处理核154出于进一步配置子系统150的目的执行的补丁记录的补丁表。例如,特定补丁记录可以包含用于出于优化存储器控制器的系统总线性能的目的设置存储器控制器中各种结果质量(QoR)字段的指令。可以通过执行补丁表记录中包含的指令,针对存储器控制器以及其他子系统执行其他相对低级别的优化。作为另一个示例,补丁记录可以包含允许包括时间元素的初始化例程的延迟操作。
根据一些实施方式,当引导指令294被(多个)通用处理核154执行时,所述引导指令形成记录解释器,所述记录解释器处理补丁表的记录,并获得与初始化一个或多个子系统150的设置和/或为其打补丁相关的信息。根据示例实施方式,存在可以被补丁表记录引导的许多不同类型的操作。记录解释器出于了解补丁表中存在多少有效记录的目的切断(key off)补丁表中的头部数据。根据示例实施方式,记录解释器由(多个)通用处理核154在启动指令开始执行时执行。当记录解释器完成对补丁表记录的处理后,(多个)通用处理核154然后可以继续执行附加的引导指令294。
参考图4,根据示例实施方式,补丁表可以包含头部,如图4中的表400图示的头部。表400图示了示例头部字段(在列402中)和头部字段的定义(在列404中)。如所示出的,补丁表的头部可以包含含有表示补丁表字节数的数据的字段(UNM_PATCH_SET_BYTES[15:0]);含有表示补丁表的条目或记录数的数据的字段(NUM_PATCH_SET_ENTRIES[15:0]);含有表示补丁表和头部校验和的数据的字段(MEM_CONFIG_CHECKSUM[31:0]);含有表示架构生成(schema generation)的数据的字段(MEM_CONFIG_GEN_REV[15:0]);以及含有表示补丁表的修订号的数据的字段(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中描述的,从而允许针对并入了基板管理控制器130的计算机系统的特定环境对配置器140进行配置时的灵活性。根据经由决策框604、决策框612和决策框616选择的特定指令序列234,分别在框606、框614和框618中将指令指针(CMD_PTR)设置为适当的值,并且控制转变到INIT_CMD状态608。
图6A进一步描绘了响应于在主ROM 232中选择的下一个指令而向INIT_CMD状态608的转变;以及响应于命令未被识别但是命令指针不在主ROM 232的末尾(决策框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)命令指针在主ROM 232的末尾,则控制返回框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)命令指针是否在主ROM 232的末尾(即,在决策框661中,“[END]”是指主ROM 232中的最终条目),并且如果是,则控制返回框624(图6A)。否则,如果命令指针不在主ROM 232的末尾,则主处理核236按照框662使命令指针增加并设置CAS计数器标志,并将控制返回INIT_CMD状态608。如果主处理核236确定(决策框664)命令是DFI命令,则主处理核236根据框666、框668和框670请求指令总线250,并且一旦被授予,所述主处理核就根据框672将嵌入式指令发送到从处理器260。参考图6E,主处理核236然后确定(决策框693)命令指针是否在主ROM 232的末尾,并且如果否,则根据框699使命令指针增加,然后返回INIT_CMD状态608。否则,如果主处理核236确定(决策框693)命令指针在主ROM 232的末尾,则主处理核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以处理写入命令。否则,如果还没有到达主ROM 232的末尾,则主处理核236通过框620和框622(如下所述)转变回INIT_CMD状态308。
返回参考图6A,如果主处理核236确定(决策框622)命令指针不在主ROM 232的末尾,则主处理核236执行无操作(框620)并返回INIT_CMD状态608。否则,如果主处理核236检测到主ROM 232的末尾,则主处理核236设置(框624)适当的序列结束标志并返回IDLE状态602。
根据示例实施方式,从处理核262(参见图2)可以以与主处理核236类似的方式处理指令,除了由从处理核262处理的指令可以被修改以省略不被从处理核262处理的(多个)特定指令,如例如包含DFI命令和/或CAS命令的指令。
参考图7,根据示例实施方式,装置700包括子系统704、第一处理器708、存储器712、电路720和第二处理器724。第一处理器708执行引导指令以启动装置700。存储器712存储第二指令716。电路720响应于装置700上电而使第一处理器708保持复位;并且第二处理器724在第一处理器708保持复位时执行第二指令716以对子系统704进行初始化。
参考图8,根据示例实施方式,系统800包括装置810、在装置810外部的第二存储器840以及在装置810外部的第三存储器850。装置810包括子系统814、处理核818、电路822、配置器826和第一存储器830。子系统814提供由装置810在装置810的启动期间和之后使用的功能。电路822响应于装置810上电而使处理核818保持复位;并且第一存储器830存储第一指令834,所述第一指令在处理核818保持复位时由配置器826执行以配置子系统814。第二存储器840存储固件启动图像844,所述固件启动图像响应于处理核818从复位释放而由处理核818执行以启动装置810。第三存储器850存储第二指令852,所述第二指令在处理核818从复位释放之后由处理核818执行并由处理核818使用固件启动图像844解释,以进一步配置子系统814。
参考图9,根据示例实施方式,过程900包括:响应于嵌入式处理系统上电而使(框904)嵌入式处理系统的第一处理器保持复位状态;以及当第一处理器保持复位状态时,嵌入式处理系统的第二处理器执行(框908)存储在嵌入式处理系统的存储器中的指令以配置嵌入式处理系统的子系统。过程900包括:使第一处理器从复位状态释放(框912);以及响应于从复位状态中被释放,第一处理器执行(框916)引导指令,其中,执行引导指令包括第一处理器访问子系统。
根据示例实施方式,第二处理器访问存储在存储器中且响应于对装置的上电而传输到装置的数据。所述数据表示对一组第二指令的选择;并且第二处理器响应于所述数据而执行所述一组第二指令。这种布置的具体优点在于,可以在不修改存储在装置中的指令的情况下控制被执行用于配置特定子系统的指令。
根据示例实施方式,第一处理器响应于第一处理器从复位释放而扫描装置外部的存储器以获取补丁指令。这种布置的具体优点在于,通用处理核可以进一步配置子系统(如存储器控制器或存储器接口),在通用处理核从复位释放之前,已针对基础功能级别对所述子系统进行了初始化。
根据示例实施方式,第一指令是存储在第一存储器中的多个指令的一部分,并且所述多个指令包括case指令以及与所述case指令相关联的指令组。指令组中的给定指令组对应于第一指令,并且配置器响应于执行case指令而基于装置所接收的识别所述给定组的向量来选择所述第一指令以供执行。这种布置的具体优点在于,可以在不修改存储在装置的存储器中的指令的情况下向装置提供向量以选择特定一组指令以供执行。
根据示例实施方式,所述子系统可以包括存储器接口、存储器控制器、总线控制器、串行总线接口或电压供应。这种布置的具体优点在于,配置器可以被定制成配置各种子系统。
尽管已经关于有限数量的实施方式描述了本公开,但受益于本公开的本领域技术人员将了解本公开的许多修改和变化。所附权利要求旨在覆盖所有这些修改和变化。
Claims (20)
1.一种装置,包括:
子系统;
第一处理器,所述第一处理器用于执行引导指令;
存储器,所述存储器用于存储第二指令;
电路,所述电路用于响应于所述装置上电而使所述第一处理器保持复位;以及
第二处理器,所述第二处理器用于在所述第一处理器保持复位时执行所述第二指令以对所述子系统进行初始化。
2.如权利要求1所述的装置,其中:
所述第二处理器访问存储在存储器中且响应于所述装置的上电而传输到所述装置的数据;
所述数据表示对一组所述第二指令的选择;并且
所述第二处理器响应于所述数据而执行所述一组第二指令。
3.如权利要求2所述的装置,其中:
所述子系统包括存储器控制器或存储器接口;
所述选择对应于所述存储器控制器或所述存储器接口的可配置特征;并且
所述执行所述一组第二指令配置所述特征。
4.如权利要求1所述的装置,其中,所述子系统包括存储器接口、存储器控制器、总线控制器、串行总线接口或电压供应。
5.如权利要求1所述的装置,其中,响应于所述第一处理器从复位释放,所述第一处理器扫描所述装置外部的存储器以获取补丁指令。
6.如权利要求1所述的装置,其中:
所述装置进一步包括存储不可变指纹的信任根引擎;并且
所述信任根引擎基于所述不可变指纹对所述第一指令进行验证。
7.如权利要求1所述的装置,其中:
所述第一处理器访问存储在所述装置外部的存储器中的数据;
所述数据表示补丁记录,所述补丁记录包括第三指令;并且
所述第一处理器执行所述第三指令以进一步配置所述子系统。
8.如权利要求7所述的装置,其中:
所述补丁记录包括包含所述第三指令的数量的头部,并且
所述第一处理器响应于从复位释放而访问所述数据并执行所述第三指令。
9.一种系统,包括:
装置,所述装置包括:
子系统,所述子系统用于提供由所述装置在所述装置的启动期间和之后使用的功能;
处理核;
电路,所述电路用于响应于所述装置上电而使所述处理核保持复位;
配置器;以及
第一存储器,所述第一存储器用于存储第一指令,所述第一指令在所述处理核保持复位时由所述配置器执行以配置所述子系统;
在所述装置外部的第二存储器,所述第二存储器用于存储固件启动图像,所述固件启动图像响应于所述处理核从复位释放而由所述处理核执行;以及
在所述装置外部的第三存储器,所述第三存储器用于存储第二指令,所述第二指令在所述处理核从复位释放之后由所述处理核执行并由所述处理核使用所述固件启动图像解释,以进一步配置所述子系统。
10.如权利要求9所述的系统,其中,所述装置包括基板管理控制器。
11.如权利要求9所述的系统,其中,
所述第一指令是存储在所述第一存储器中的多个指令的一部分;
所述多个指令包括case指令以及与所述case指令相关联的指令组;
所述指令组中的给定指令组对应于所述第一指令;以及
所述配置器响应于执行所述case指令而基于所述装置所接收的识别所述给定组的向量来选择所述第一指令以供执行。
12.如权利要求9所述的系统,其中:
所述子系统包括存储器控制器;
所述配置器执行所述第一指令以配置所述存储器控制器;并且
所述处理核执行所述第二指令以配置所述存储器控制器的结果质量字段。
13.如权利要求9所述的系统,其中:
所述装置进一步包括存储不可变指纹的信任根引擎;并且
所述信任根引擎基于所述不可变指纹对所述启动图像进行验证。
14.如权利要求9所述的系统,其中:
其中,所述装置用于在与所述装置相关联的故障阻止所述处理器核从复位释放之后,使用由所述配置器所配置的所述子系统来提供服务。
15.一种方法,包括:
响应于嵌入式处理系统上电而使所述嵌入式处理系统的第一处理器保持复位状态;
当所述第一处理器保持所述复位状态时,所述嵌入式处理系统的第二处理器执行存储在所述嵌入式处理系统的存储器中的第一指令以配置所述嵌入式处理系统的子系统;
将所述第一处理器从所述复位状态释放;以及
响应于从所述复位状态释放,所述第一处理器执行引导指令,其中,执行所述引导指令包括所述第一处理器在所述子系统中进行访问。
16.如权利要求15所述的方法,其中,所述第一处理器包括通用处理核,所述通用处理核具有相关联的第一指令集大小,并且所述第二处理器包括寄存器传输逻辑(RTL)有限状态机,所述寄存器传输逻辑有限状态机具有小于所述第一指令集大小的相关联的第二指令集大小。
17.如权利要求15所述的方法,其中,所述第二处理器执行所述指令包括:
所述第二处理器访问识别所述第一指令的子集的向量。
18.如权利要求17所述的方法,进一步包括响应于所述嵌入式处理系统上电而向所述嵌入式处理系统传输表示所述向量的数据。
19.如权利要求15所述的方法,其中,执行所述引导指令包括所述第一处理器扫描所述嵌入式处理系统外部的存储器以获取补丁指令,所述方法进一步包括所述第一处理器执行所述补丁指令以进一步配置所述子系统。
20.如权利要求15所述的方法,其中,所述子系统包括存储器接口、存储器控制器、总线控制器、串行总线接口或电压供应。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/779,230 US11360782B2 (en) | 2020-01-31 | 2020-01-31 | Processors to configure subsystems while other processors are held in reset |
US16/779,230 | 2020-01-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113205838A true CN113205838A (zh) | 2021-08-03 |
CN113205838B CN113205838B (zh) | 2023-01-06 |
Family
ID=76853740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110118069.4A Active CN113205838B (zh) | 2020-01-31 | 2021-01-28 | 用于在其他处理器保持复位时配置子系统的处理器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11360782B2 (zh) |
CN (1) | CN113205838B (zh) |
DE (1) | DE102021101460A1 (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060236032A1 (en) * | 2005-04-13 | 2006-10-19 | Campbell Brian K | Data storage system having memory controller with embedded CPU |
CN101441607A (zh) * | 2007-04-10 | 2009-05-27 | 标准微系统公司 | 在计算机系统中嵌入式控制器和处理器之间共享非共享的设备 |
US20160291985A1 (en) * | 2015-03-31 | 2016-10-06 | Western Digital Technologies, Inc. | Communication interface initialization |
US20180349609A1 (en) * | 2017-06-02 | 2018-12-06 | Apple Inc. | Method and Apparatus for Boot Variable Protection |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7092980B1 (en) | 2000-10-26 | 2006-08-15 | Cypress Semiconductor Corporation | Programming architecture for a programmable analog system |
US20020138225A1 (en) | 2001-01-25 | 2002-09-26 | Wong Isaac H. | Automatic configuration of delay parameters for memory controllers of slave processors |
US7174463B2 (en) * | 2001-10-04 | 2007-02-06 | Lenovo (Singapore) Pte. Ltd. | Method and system for preboot user authentication |
US20050102573A1 (en) | 2003-11-03 | 2005-05-12 | Macronix International Co., Ltd. | In-circuit configuration architecture for embedded configurable logic array |
US20070139074A1 (en) | 2005-12-19 | 2007-06-21 | M2000 | Configurable circuits with microcontrollers |
US9448964B2 (en) | 2009-05-04 | 2016-09-20 | Cypress Semiconductor Corporation | Autonomous control in a programmable system |
US9558012B2 (en) * | 2013-02-21 | 2017-01-31 | Applied Micro Circuits Corporation | System boot with external media |
US10114550B2 (en) | 2016-01-07 | 2018-10-30 | Samsung Electronics Co., Ltd. | Data storage device and data processing system including the data storage device |
US20190114433A1 (en) * | 2017-06-02 | 2019-04-18 | Apple Inc. | Method and Apparatus for Boot Variable Protection |
US11150910B2 (en) * | 2018-02-02 | 2021-10-19 | The Charles Stark Draper Laboratory, Inc. | Systems and methods for policy execution processing |
-
2020
- 2020-01-31 US US16/779,230 patent/US11360782B2/en active Active
-
2021
- 2021-01-25 DE DE102021101460.3A patent/DE102021101460A1/de active Pending
- 2021-01-28 CN CN202110118069.4A patent/CN113205838B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060236032A1 (en) * | 2005-04-13 | 2006-10-19 | Campbell Brian K | Data storage system having memory controller with embedded CPU |
CN101441607A (zh) * | 2007-04-10 | 2009-05-27 | 标准微系统公司 | 在计算机系统中嵌入式控制器和处理器之间共享非共享的设备 |
US20160291985A1 (en) * | 2015-03-31 | 2016-10-06 | Western Digital Technologies, Inc. | Communication interface initialization |
US20180349609A1 (en) * | 2017-06-02 | 2018-12-06 | Apple Inc. | Method and Apparatus for Boot Variable Protection |
Also Published As
Publication number | Publication date |
---|---|
DE102021101460A1 (de) | 2021-08-05 |
CN113205838B (zh) | 2023-01-06 |
US20210240485A1 (en) | 2021-08-05 |
US11360782B2 (en) | 2022-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9459810B2 (en) | Storage module and method for configuring command attributes | |
US8838950B2 (en) | Security architecture for system on chip | |
US20030018892A1 (en) | Computer with a modified north bridge, security engine and smart card having a secure boot capability and method for secure booting a computer | |
EP2587376B1 (en) | Systems and methods for semaphore-based protection of shared system resources | |
CN110785759B (zh) | 用于多核处理器的远程认证 | |
KR100947125B1 (ko) | 강화된 보안을 위하여 보안 디바이스의 직접 접속을구비한 내장형 프로세서 | |
TWI537748B (zh) | 用於網路基本輸入輸出系統管理之設備、方法與非暫態電腦可讀取媒體 | |
US9886408B2 (en) | Data access protection for computer systems | |
KR102570943B1 (ko) | PCIe 디바이스 및 그 동작 방법 | |
KR20040060965A (ko) | 매입형 마이크로컨트롤러를 가진 마이크로컴퓨터 브리지아키텍처 | |
US11157625B2 (en) | Verifying basic input/output system (BIOS) boot block code | |
US7080164B2 (en) | Peripheral device having a programmable identification configuration register | |
CN113204518B (zh) | 用于配置子系统的装置、系统和方法 | |
TW201525870A (zh) | 可更新積體電路無線電 | |
WO2008030727A2 (en) | Access control of memory space in microprocessor systems | |
US11768941B2 (en) | Non-ROM based IP firmware verification downloaded by host software | |
CN113205838B (zh) | 用于在其他处理器保持复位时配置子系统的处理器 | |
KR100977267B1 (ko) | 신뢰할 수 있는 플랫폼에서의 물리적 존재 판정 방법 | |
US7266680B1 (en) | Method and apparatus for loading configuration data | |
WO2023121815A1 (en) | Dynamic provisioning of pcie devices at run time for bare metal servers | |
CN113515414B (zh) | 数据处理系统和非暂态机器可读介质 | |
JP2021012679A (ja) | フラッシュエミュレーション機能を有するコントローラ及びコントロール方法 | |
TW201423590A (zh) | 電腦系統及其操作方法 | |
JPH10247187A (ja) | 1チップマイクロコンピュータ | |
US20170206099A1 (en) | Circuitry for configuring entities |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |