使用嵌入式非易失性存储器在计算系统中进行自修复的制作方法

文档序号:18899511发布日期:2019-10-18 21:44阅读:146来源:国知局
使用嵌入式非易失性存储器在计算系统中进行自修复的制作方法

本文描述的示例总体上涉及用于使用嵌入式非易失性存储器来处理处理器中的错误的技术。



背景技术:

一些计算系统包括具有多个处理核心的处理器。在一些处理器中,处理核心的数量可能很大。在计算系统的操作期间,处理核心中的一个或多个可能由于无法克服或纠正的硬件错误而故障。在一些情况下,处理核心的故障导致整个多核心处理器的故障,从而需要替换多核心处理器。在服务器的情况下,替换多核心处理器对于例如可以容纳多核心处理器的服务器刀片导致显著的停机时间,因为技术人员必须物理地移除服务器刀片,将服务器刀片带到修理位置,替换多核心处理器,以及将服务器刀片返回到服务器中其先前的插座处。在诸如大型服务器中心之类的期望向客户提供高水平服务的一些处理环境中,这种停机时间可能是不可接受的。

附图说明

图1示出了具有嵌入式非易失性随机存取存储器(nvram)的示例多核心处理器半导体芯片。

图2示出了在计算系统中使用嵌入式nvram来执行对多核心处理器半导体芯片的自修复的逻辑流程的示例。

图3示出了可以使用多核心处理器半导体芯片上的嵌入式nvram来执行处理器自修复的示例计算系统。

图4示出了示例存储介质。

具体实施方式

如在本公开中设想的,可以通过执行存储在处理半导体芯片上的嵌入式nvram中的自修复组件的指令来执行对多核心处理器半导体芯片的自修复。当针对多核心处理的核心检测到不可恢复的错误时,可以执行自修复组件。自修复组件可以分析在制造处理器半导体芯片时存储在nvram中的处理器配置信息,以确定如何重新配置处理器配置以用于继续操作。修改后的处理器配置信息可以由自修复组件在nvram中更新。在实施例中,自修复组件可以从处理器半导体芯片的一组有效且可操作的核心中移除故障核心。在实施例中,如果存在备用核心,则自修复组件可以将备用核心添加到处理器半导体芯片的该组有效且可操作的核心。

可以通过将基本输入/输出系统(bios)固件架构(例如,统一可扩展固件接口(uefi)bios)存储在处理器半导体芯片上的嵌入式nvram中来执行对计算系统的引导。由于bios位于处理器半导体芯片内的管芯上并且可以安全地访问存储在其中的组件配置信息,因此可以在现有计算系统上获得引导和后续操作的效率。

bios是在完成上电自检(post)动作之后对计算系统初始化并加载用于计算系统的操作系统(os)的计算机程序。在硬重新引导进程内,bios在完成自检后运行。在本发明的实施例中,bios从诸如嵌入式nvram之类的持久存储器加载到主存储器中。然后,bios加载并执行完成对计算系统的引导的进程。与post进程一样,bios代码来自“硬连线”且持久的位置;在这种情况下是嵌入式nvram中的特定地址。bios用作在计算机硬件与os之间的接口。bios包括用于初始化并启用计算系统的低级别硬件服务(例如,基本键盘、视频、磁盘驱动器、i/o端口和存储器控制器)的指令。

bios对计算系统的初始化和配置在预引导阶段期间发生。在系统重置之后,处理器参考预先确定的地址,该预先确定的地址被映射到处理器半导体芯片中(即,管芯上)的存储bios的nvram。处理器从nvram顺序取出bios指令。这些指令使计算系统初始化其计算硬件,初始化其外围设备,并且引导os。

一旦计算系统运行,则自修复组件可以管理当前的一组有效且可操作的核心。在一个实施例中,自修复组件可以是bios的一部分。在其他实施例中,自修复组件可以与bios分离,但也与处理器配置信息一起存储在嵌入式nvram中。

图1示出了具有嵌入式非易失性随机存取存储器(nvram)的示例处理器。图1示出了一种改进的方法,其中处理器半导体芯片100包括用于存储在处理器100上执行的bios106的信息和指令的嵌入式非易失性存储器。在实施例中,非易失性存储器可以是嵌入式nvram101,并且bios106包括用于管理计算系统的启动进程的指令。在实施例中,bios106可以符合日期为2017年9月的uefi规范版本2.7a,或如在www.uefi.org处公开的其他后来的版本。nvram101可以包括对安装在计算系统中的组件进行描述的组件配置信息(ccinfo)108。在实施例中,ccinfo108可以包括安装在计算系统的系统存储器中的存储器设备(例如,dimm)的序列号。在其他实施例中,存储器设备或外围设备的其他标识信息可以包含于ccinfo108中。

nvram101还可以包括自修复组件109。自修复组件109包括用于管理处理器半导体芯片100内的一组有效且可操作的核心的指令。nvram101还可以包括处理器配置信息(pci)110。处理器配置信息110可以包括标识一组有效且可操作的核心、一组故障核心以及一组备用核心的信息。最初,在制造处理器半导体芯片时,可以将该组有效且可操作的核心设置为预先确定的第一数量,该组故障核心可以是空的,并且可以将该组备用核心设置为预先确定的第二数量。有效且可操作的核心、故障核心以及备用核心的数量的总和可以等于处理器半导体芯片中物理地存在的核心的数量。pci110可以由自修复组件109、bios106、os或其他系统软件中的一个或多个使用,以更新该组有效且可操作的核心、该组故障核心以及该组备用核心。

这里,如本领域中已知的,处理器半导体芯片包括支持完整计算系统的其他组件。例如,如图1中可见的,处理器半导体芯片100包括多个中央处理单元(cpu)处理核心102_1至102_n(其执行程序代码指令),其经由互连107耦合到以下中的一个或多个:主存储器控制器103(用于与计算系统的主存储器相接合)、外围控制中心104(用于与计算系统的外围设备(例如,显示器、键盘、打印机、非易失性大容量存储装置、网络接口(例如,以太网接口和/或无线网络接口)等)相接合)、高速缓存105以及可能地用于从cpu核心卸载专门的和/或数字密集的计算的专用处理器(例如,图形处理单元(gpu)和/或数字信号处理器(dsp),其未在图1中描绘)。

在本发明的实施例中,图1的处理器半导体芯片100包括嵌入式nvram101。nvram101可以是新兴的非易失性存储器技术中的一种或多种,例如,铁电随机存取存储器(feram)、电介质随机存取存储器、电阻随机存取存储器(reram)、忆阻器随机存取存储器、相变随机存取存储器、三维交叉点随机存取存储器(例如,可从intel公司购得的3dxpointtm)、磁性随机存取存储器(mram)以及自旋移矩磁性随机存取存储器(stt-mram)。在一个实施例中,nvram101是三维交叉点ram。

许多这些技术可以集成到高密度逻辑电路制造过程中,例如,用于制造如图1描绘的处理器半导体芯片100的制造过程。例如,新兴的非易失性存储器的存储单元可以存储不同的电阻状态(例如,单元取决于它是否已经编程有1或0而表现出较高的电阻或较低的电阻),并且位于在半导体衬底上方的半导体芯片的冶金中。

这里,例如,存储单元可以位于正交指向的金属线之间,并且可以通过在半导体芯片的冶金中堆叠单元及其相关联的正交布线来实现三维交叉点结构。另外,访问粒度可以比传统的非易失性存储装置(其传统上仅在大扇区中访问数据或基于块的访问)更细粒度。也就是说,新兴的非易失性存储器可以被设计为用作真正的随机存取存储器,其可以支持以施加于存储器的每个地址值的字节级粒度或其某种适度倍数的数据访问。

显著地,由于管芯上nvram101的位置,与将bios和/或自修复组件以及保存的数据留存在处理器半导体芯片外(例如,在eeprom或闪速存储器中)并且使其可经由外围控制中心104以及相关联的组件和接口访问的方法相比,访问bios106和/或自修复组件109的时间以及保存由bios和/或自修复组件读取或写入的任何数据(例如,组件配置信息(ccinfo)108和/或处理器配置信息(pci)110)的时间显著减少。

在各种实施例中,嵌入式nvram101的地址空间(至少部分地)被保留以供bios和/或自修复组件使用。也就是说,嵌入式nvram101可以被视为特殊存储器资源,例如,与bios和/或自修复组件认为它有权访问以便读取/写入其特定的数据结构的主存储器(其在处理器半导体芯片100外部并且耦合到主存储器控制器103)不同。

因此,在各种实施例中,处理器的cpu核心102中的一个或多个的指令集架构包括以嵌入式nvram101而非主存储器或其他存储器为目标的特殊存储器访问指令。因此,在各种实施例中,bios和/或自修复组件可以主要从主存储器执行其相应指令中的至少一些(例如,程序代码指令可以从nvram101转移到主存储器中),但是用于访问nvram101以得到其数据中的至少一些数据的bios和/或自修复组件的程序代码可以包括以嵌入式nvram101为目标的特殊读取指令。在另外的实施例中,bios106和/或自修复组件109能够写入nvram101,以便利用以嵌入式nvram101为目标的另一特殊写入指令来更新/保存任何这样的数据。

这里,可以将存储器访问指令的以嵌入式nvram101为目标的特殊性质设计到处理器cpu核心102的指令集架构的指令格式中,其中特殊操作码或立即操作数指定存储器访问是指向嵌入式nvram101而非主存储器的。可替代地,nvram101的地址空间可以被视为主存储器地址空间的特权区域。在这种情况下,可以利用名义上的存储器访问指令来访问nvram101,但是必须给予bios和/或自修复组件特殊的特权状态以对nvram101进行访问。

根据各种实施例,bios106、组件配置信息(ccinfo)108、自修复组件109和处理器配置信息(pci)110可以作为处理器半导体芯片制造过程的一部分直接编程到嵌入式nvram101中。因此,每次处理器进行计算系统启动时,计算系统不需要从闪速存储器或其他大容量存储装置访问bios或管芯外自修复代码,所有这些典型地通过外围控制中心或其他较慢接口来访问。由于自修复组件109包括要由一个或多个核心执行的指令,不是硬连线到处理器半导体芯片的电路中的,并且处理器配置信息可以以编程方式更新,本发明的实施例在管理核心时提供更大的灵活性。

利用具有嵌入式(管芯上)nvram101的处理器100,因此可以针对bios106和/或自修复组件109实现更加架构紧凑的解决方案。

图2示出了使用嵌入式nvram的逻辑流程的示例。在一些示例中,如图2中所示的过程描绘了在计算系统中实现对处理器的自修复的过程。对于这些示例,该过程可以通过或使用图1中所示的处理器100的组件或元件来实现。然而,该过程不限于仅通过或使用系统100的这些组件或元件来实现。

本文中包括一组逻辑流程,其表示用于执行所公开的架构的新颖方面的示例方法。虽然为了简化说明的目的,本文所示的一种或多种方法被示出并描述为一系列动作,但是本领域技术人员将理解并认识到,这些方法不受动作的次序的限制。据此,一些动作可以以与本文示出和描述的次序不同的次序发生和/或与其他动作并发地发生。例如,本领域技术人员将理解并认识到,方法可以可替代地表示为一系列相互关联的状态或事件,例如,在状态图中。此外,并非方法中所示的所有动作都是新颖的实现方式要求的。

可以用软件、固件和/或硬件来实现逻辑流程。在软件和固件实施例中,逻辑流程可以由存储在至少一种非暂时性计算机可读介质或机器可读介质(例如,光存储装置、磁存储装置或半导体存储装置)上的计算机可执行指令来实现。实施例不限于此上下文。

现在转到图2,处理开始于框202。在框202处,可以对处理器半导体芯片100进行重置和初始化。在框204处,bios106指令和/或数据可以从nvram101读取,并且由cpu核心102_1、102_2、102_3至102_n中的一个或多个执行。在实施例中,bios106可以执行计算系统初始化步骤,如在日期为2017年9月的uefi规范版本2.7a或如在www.uefi.org处公开的其他后来的版本中描述的。在制造包括处理器半导体芯片的计算系统时,计算系统制造商可以获得唯一地标识每个系统存储器设备(例如,dimm)的序列号或其他标识信息,并且使用bios106将该信息作为ccinfo108存储到nvram101中。之后每当系统存储器改变时,例如,当最终用户添加附加dimm或将其置换为新的dimm时,可以由bios106更新ccinfo108中的存储器信息。在另一实施例中,关于除存储器设备之外的系统组件的信息也可以存储在nvram101中。

在实施例中,在制造处理器半导体芯片时,可能在验证测试期间,描述在处理器半导体芯片中存在有效且可操作的核心的信息可以存储在nvram101中的处理器配置信息(pci)110中。在实施例中,pci110可以包括标识一组有效且可操作的核心、一组故障核心以及一组保持预留作为备用的核心的信息。在实施例中,该组故障核心最初包括在制造之后未通过验证测试的核心(如果有的话)。在实施例中,该组故障核心最初可以为空。作为引导进程的一部分,bios可以在对计算系统进行初始化时使用处理器配置信息,特别是该组有效且可操作的核心。在框206处,可以加载os。计算系统进行的处理通过运行如本领域已知的os和应用程序来继续。

当计算系统启动并运行时,自修复组件109可以由核心中的一个或多个核心执行,以在框208处检测和/或处理在处理器半导体芯片中发生的任何运行时错误(例如,机器检查)。在实施例中,自修复组件可以周期性地运行,或者可以仅当在核心中发生不可恢复的错误时执行。在实施例中,当在框210处检测到导致核心故障的错误时,自修复组件109更新存储在nvram中的处理器配置信息(pci)110中的核心配置。例如,如果核心已经故障,则自修复组件从该组有效且可操作的核心中移除该核心,并且将该故障核心添加到pci中的该组故障核心。如果备用核心可用,则自修复组件将备用核心添加到该组有效且可操作的核心,并且从该组备用核心中移除该备用核心。由于核心已经故障,所以必须使用更新后的处理器配置信息重启处理器半导体芯片(即,计算机系统将不再使用故障核心,而是替代地将使用备用核心)。在实施例中,作为重启进程的一部分,自修复组件可以指示处理器半导体芯片中的一个或多个核心保存由处理器半导体芯片的一个或多个核心完成的任何工作中进展(如果可能的话)。然后,处理在框202处继续,以重置并重新初始化处理器半导体芯片。在实施例中,如果在计算系统中运行的虚拟机(vm)或管理程序由于核心故障而暂停,则可以在处理器被重新引导时重新开始这些程序。因此,可以使由于故障核心导致的停机时间最小化。

在实施例中,可以由于系统管理员的动作或通过计算系统的远程管理来执行对处理器配置信息的更新(即,按需)。例如,处理器半导体芯片可以制造有多个备用核心。在销售处理器和/或计算系统时,可以在处理器配置信息中启用预先确定的第一数量的有效且可操作的核心,其中将预先确定的第二数量的核心保持作为备用。稍后,当处理器在计算系统中使用时,用户可能期望计算系统可以使用附加的核心来增加处理器的性能特性。在这种情况下,os例如可以指示自修复组件109将备用核心移至该组有效且可操作的核心。在实施例中,可以收费地执行通过启用备用核心来提供增加的处理能力。因为处理器配置信息和自修复组件存储在nvram中,所以对处理器的处理能力进行调整的能力可以比已知系统灵活,在已知系统中,处理器配置信息在处理器电路中是硬连线的。

图3示出了可以利用处理器半导体芯片上的嵌入式nvram执行自修复的示例计算系统。根据一些示例,计算系统可以包括但不限于服务器、服务器阵列或服务器群、web服务器、网络服务器、互联网服务器、工作站、小型计算机、大型计算机、超级计算机、网络装置、web装置、分布式计算系统、个人计算机、平板计算机、智能电话、多处理器系统、基于处理器的系统或其组合。

如图3中观察到的,计算系统300可以包括处理器半导体芯片301(其可以包括例如多个通用处理核心315_1至315_x和设置在多核心处理器或应用处理器上的主存储器控制器(mc)317)、系统存储器302、显示器303(例如,触摸屏、平板)、本地有线点对点链路(例如,usb)接口304、各种网络i/o功能355(例如,以太网接口和/或蜂窝调制解调器子系统)、无线局域网(例如,wifi)接口306、无线点对点链路(例如,蓝牙(bt))接口307和全球定位系统(gps)接口308、各种传感器309_1至309_y、一个或多个相机350、电池311、功率管理控制单元(pwrmgt)312、扬声器和麦克风(spkr/mic)313以及音频编码器/解码器(编解码器)314。功率管理控制单元312通常控制系统300的功耗。

应用处理器或多核心处理器301可以包括处理器半导体芯片301内的一个或多个通用处理核心315、一个或多个图形处理单元(gpu)316、存储器管理功能317(例如,存储器控制器(mc))和i/o控制功能318。通用处理核心315执行计算系统的操作系统和应用软件。图形处理单元316执行图形密集的功能,用于例如生成在显示器303上呈现的图形信息。存储器控制功能317与系统存储器302相接合,用于向系统存储器302写入/从系统存储器302读取数据。处理器301还可以包括如上面描述的嵌入式nvram319,用于改进在cpu核心315中的一个或多个上执行的bios106和自修复组件109的整体操作。

触摸屏显示器303,通信接口304、355、306、307,gps接口308,传感器309,(多个)相机310和扬声器/麦克风编解码器313以及编解码器314中的每一个都可以相对于整体计算系统被视为各种形式的i/o(输入和/或输出),在适当的情况下,也包括集成的外围设备(例如,一个或多个相机310)。取决于实现方式,这些i/o组件中的各种i/o组件可以集成在应用处理器/多核心处理器301上,或者可以位于管芯外或应用处理器/多核心处理器301的封装外。计算系统还包括非易失性存储装置320,其可以是系统的大容量存储组件。

图4示出了第一存储介质的示例。如图4所示,第一存储介质包括存储介质400。存储介质400可以包括制品。在一些示例中,存储介质400可以包括任何非暂时性计算机可读介质或机器可读介质,例如,光存储装置、磁存储装置或半导体存储装置。存储介质400可以存储各种类型的计算机可执行指令,例如,用于实现逻辑流程200和/或bios106以及自修复组件109的指令。计算机可读或机器可读存储介质的示例可以包括能够存储电子数据的任何有形介质,包括易失性存储器或非易失性存储器、可移除或不可移除存储器、可擦除或不可擦除存储器、可写或可重写存储器等。计算机可执行指令的示例可以包括任何合适类型的代码,例如,源代码、编译代码、解释代码、可执行代码、静态代码、动态代码、面向对象的代码、可视代码等。示例不限于此上下文。

可以使用硬件元件、软件元件或两者的组合来实现各种示例。在一些示例中,硬件元件可以包括设备、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、asic、pld、dsp、fpga、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。在一些示例中,软件元件可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、api、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定是否使用硬件元件和/或软件元件来实现示例可以根据任何数量的因素而变化,例如,期望的计算速率、功率水平、热容差、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计或性能约束,如对于给定实现方式期望的。

可以使用表达“在一个示例中”或“示例”及其衍生词来描述一些示例。这些术语意味着结合该示例描述的特定特征、结构或特性包括在至少一个示例中。在说明书中各处出现的短语“在一个示例中”不一定都指代相同的示例。

可以使用表达“耦合”和“连接”及其衍生词来描述一些示例。这些术语不一定旨在彼此同义。例如,使用术语“连接”和/或“耦合”的描述可以指示两个或更多个元件彼此直接物理或电接触。然而,术语“耦合”还可以表示两个或更多个元件彼此不直接接触,但仍然彼此协作或交互。

需要强调的是,提供本公开的摘要以符合37c.f.r.第1.72(b)节,要求允许读者快速确定技术公开的性质的摘要。提交时应理解摘要不会用于解释或限制权利要求的范围或含义。另外,在前面的具体实施方式中,可以看出,出于使本公开流畅的目的,在单个示例中将各种特征组合在一起。这种公开方法不应被解释为反映所要求保护的示例要求比每项权利要求中明确记载的更多的特征的意图。而是,如所附权利要求反映的,发明主题在于少于单个公开示例的所有特征。因此,所附权利要求在此并入具体实施方式中,其中每项权利要求独立地作为单独的示例。在所附权利要求中,术语“包括(including)”和“其中(inwhich)”分别用作相应术语“包括(comprising)”和“其中(wherein)”的简明英语等同物。此外,术语“第一”、“第二”、“第三”等仅用作标记,而并不旨在对其对象施加数字要求。

虽然用特定于结构特征和/或方法动作的语言描述了主题,但应理解,所附权利要求中定义的主题不一定限于上描描述的具体特征或动作。而是,公开了上面描述的具体特征和动作作为实现权利要求的示例形式。

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