用于在易失性存储器与非易失性存储器之间分布代码和数据存储的方法和设备的制作方法

文档序号:6485401阅读:162来源:国知局
用于在易失性存储器与非易失性存储器之间分布代码和数据存储的方法和设备的制作方法
【专利摘要】本发明描述了用于在易失性和非易失性存储器之间分布代码和数据存储的方法、设备和系统。在一个实施例中,所述方法包括:将软件应用的一个或多个静态代码段存储在相变存储器和开关(PCMS)设备中;将软件应用的一个或多个静态数据段存储在PCMS设备中;以及将软件应用的一个或多个易失性数据段存储在易失性存储器设备中。所述方法然后分配地址映射表,其具有指向所述一个或多个静态代码段中的每一个的至少第一地址指针、指向所述一个或多个静态数据段中的每一个的至少第二地址指针,以及指向所述一个或多个易失性数据段中的每一个的至少第三地址指针。
【专利说明】用于在易失性存储器与非易失性存储器之间分布代码和数据存储的方法和设备
【技术领域】
[0001]本发明涉及分配易失性存储器和非易失性存储器的组合以用于软件应用的代码和数据段的储存。
【背景技术】
[0002]存储器性能和容量要求跨计算工业的许多方面持续增加。另外,存储器功率要求和存储器成本已经分别成为范围从智能电话到服务器的给定计算系统的整体功率和成本的重要组成部分。取决于实现细节,存储器和储存子系统可能增加或降低计算设备的整体性能。因为总体上期望具有利用较少功率和较少成本的更快执行的计算设备,所以存在各种各样的存储器和储存子系统的设计试图最大化终端用户感知的性能同时使成本和功耗最小化。
[0003]当前的操作系统提供应用编程接口(API)来允许应用和驱动器从已分页和未分页池请求存储器。未分页池典型地用于必须不被分页到大容量储存驱动的数据(例如,预期硬件在应用的执行期间访问的页)。因为当前所有分配的页均当在DRAM中时被访问,所以在页分配时间不需要额外的信息,无论将要在所分配的缓冲器内存储的数据被预期仅用于读取还是用于读取和写入。
【专利附图】

【附图说明】
[0004]以下描述和附图用于说明本发明的实施例。在这些图中:
图1图示了存储器布置的实施例,其允许计算机系统针对处理器以及针对嵌入式系统而利用代码和数据储存的混合存储器结构。
[0005]图2描述了当利用软件应用混合代码和数据储存系统时的易失性和非易失性存储器空间的实施例。
[0006]图3是为软件应用的代码和数据段分配易失性和非易失性存储器的过程的实施例的流程图。
[0007]图4图示了包括嵌入式控制器的计算机系统的实施例,该嵌入式控制器具有对I/O子系统内部的PCMS设备的直接访问。
[0008]图5描述了当利用混合固件代码和数据储存系统时在I/O子系统中的易失性和非易失性存储器空间的实施例。
【具体实施方式】
[0009]下面描述的许多实施例通过在不同的存储器技术之间细分性能要求和容量要求来解决引入到计算设备的存储器和储存子系统的代码和数据使用挑战。该方法关注于在使用显著较便宜和较密集的非易失性存储器来实现大部分系统存储器的同时,为相对少量的较高速存储器(诸如动态随机访问存储器(DRAM))提供性能。下面描述的若干实施例定义了这样的平台配置,其实现分层存储器子系统组织以由计算设备中的一个或多个图形处理器使用某种类型的非易失性存储器(特别地称为非易失性随机访问存储器(NVRAM))来增强易失性存储器。存储器分层中NVRAM的使用附加地允许非易失性存储器大容量储存实现作为标准大容量储存驱动的替代。
[0010]图1图示了存储器布置的实施例,其允许计算机系统针对处理器以及针对嵌入式系统而利用代码和数据储存的混合存储器结构。
[0011 ] 根据若干实施例,可以向中央处理单元(CPU)、图形处理单元(GPU)和嵌入式处理器提供对易失性和非易失性这两种形式的存储器的访问。CPU和GPU贯穿本文档也可以称为“处理器”。利用了这些不同的命名法。
[0012]图1示出了多个逻辑单元,它们可以或可以不位于相同或不同半导体管芯(die)上或者相同或不同半导体封装上。图1中的逻辑单元包括具有一个或多个核以及高速缓存的CPU、也具有一个或多个核以及高速缓存的GPU、存储器子系统以及I/O子系统。这些单元被虚线分开以示出这些逻辑块中的每一个可以或可以不位于相同半导体管芯和/或封装中的可能性。
[0013]现在转到图1的详细元件,给出了 CPU 100。该CPU包括一个或多个核102。尽管未示出,但是每个核可以在内部包括一个或多个指令/数据高速缓存、执行单元、预取缓冲器、指令队列、分支地址计算单元、指令解码器、浮点单元、引退单元等。在未示出的其他实施例中,系统可以包括多个CPU,每个CPU具有其自己的在图1中显示的逻辑单元的集合。
[0014]CPU 100包括至少一个低级高速缓存,诸如高速缓存104。这可以是通用高速缓存,其能够存储从易失性存储器106和/或NVRAM 108中的存储器位置获取的大量数据。在不同实施例中,可以在所有核间共享高速缓存104,或者每个核可以具有其自己的低级高速缓存。
[0015]CPU 100还可以包括未示出的、协调和操作至少一个或多个核102的附加逻辑。在一些实施例中,该附加逻辑可以称为归属代理。例如,归属代理可以包括功率控制单元(P⑶)。除了其他任务以外,P⑶还可以包括调节一个或多个核102的功率状态所需的逻辑和组件。
[0016]根据若干实施例,图1中的计算机系统附加地包括GPU 110。GPU 110还可以包括一个或多个核112。每个核可以包括一个或多个执行单元,和用于向执行单元馈送信息以处理的一个或多个指令和数据高速缓存。另外,除其他外,GPU 110还可以包含未在图1中示出的其他图形逻辑单元,诸如一个或多个顶点处理单元、光栅化单元、媒体处理单元以及编解码器。出于简明性的缘故,一个或多个核112内的特定逻辑以及GPU 110内的其他图形相关逻辑单元未被示出。
[0017]在GPU 110中也可以存在一个或多个低级高速缓存,诸如高速缓存114。该高速缓存可以用作通用高速缓存或者特定于一种或多种具体类型的图形数据(例如,顶点数据)的高速缓存。未示出其他低级高速缓存,但是在一些实施例中,像高速缓存114的多个高速缓存存在于GPU 110内。
[0018]根据许多实施例,显示控制器116通信地耦合到GPU 110。显示控制器124接收要在显示设备(例如,监视器、电视、投影仪等)上显示的信息。在许多实施例中,显示控制器116具体地接收帧缓冲。每个帧缓冲由包括随后被显示控制器解释的像素的图像组成,并且该图像被馈送到显示设备以供查看。取决于显示设备的刷新频率,可以每秒特定次地将帧缓冲馈送到显示控制器116。例如,60Hz的刷新速率每秒利用60个图像(图像信息的帧缓冲)。不同的显示设备可以利用较高频率的刷新速率,并且简单地在将信息的新帧缓冲用于显示之前将相同帧缓冲重采样两次或更多次。
[0019]在图1中还给出存储器子系统118。存在易失性存储器控制器120,其可以用于提供对易失性存储器106的访问。易失性存储器控制器120可以从CPU核102或GPU核112接收存储器访问请求并将该请求路由到易失性存储器106,易失性存储器控制器120在不同实施例中集成在CPU封装中或者与CPU封装分立。类似地,非易失性(NV)存储器控制器122可以从CPU核102或GPU核112接收存储器访问请求并将该请求路由到NVRAM 108。在一些实施例中,易失性存储器控制器120和非易失性存储器控制器122集成在一个大存储器控制器中。在其他实施例中,它们是单独的控制器。
[0020]在许多实施例中,输入/输出(I/O)子系统124存在于图1中的系统中,用于与诸如一个或多个I/o设备126之类的I/O设备通信。在I/O子系统124内,存在一个或多个I/O适配器128用于将CPU 100内利用的主机通信协议转换成与特定I/O设备兼容的协议。除其他外,适配器可以用于转换的一些协议还包括快速外围组件互连(PCI) (PC1-E) 3.0 ;通用串行总线(USB) 3.0 ;串行高级技术附件(SATA) 3.0 ;小型计算机系统接口(SCSI),Ultra-640 ;以及电气与电子工程师协会(IEEE) 1394 “火线”。
[0021]另外,可以存在一个或多个无线协议I/O适配器。除了其他以外,无线协议的示例还用在以下各项中:个域网,诸如IEEE 802.15和蓝牙4.0 ;无线局域网,诸如基于IEEE802.11的无线协议;以及蜂窝协议。
[0022]基本输入/输出系统(BIOS)闪速130设备可以附加地存在于系统中,用于在系统上电或重新引导时提供引导指令集。对于BIOS闪速130设备,除其他外,I/O适配器128可以转换的一些协议还包括串行外围接口(SPI)和微细线(Microwire)。
[0023]返回NVRAM 108,下面提供了 NVRAM的概览。
[0024]1.非易失性随机访问存储器概览
对于NVRAM存在许多可能的技术选择,包括:PCM、相变存储器和开关(PCMS)(后者是前者更具体的实现)、字节可寻址持久性存储器(BPRAM)、存储级存储器(SCM)、通用存储器、Ge2Sb2Te5、可编程金属化单元(PMC)、电阻存储器(RRAM)、RESET (无定形)单元、SET (晶体)单元、PCME、奥弗辛斯基存储器、铁电存储器(也称为聚合物存储器和聚(N-乙烯基咔唑))、铁磁存储器(也称为自旋电子学,SPRAM (自旋转移矩RAM))、STRAM (自旋隧穿RAM)、磁阻存储器、磁存储器、磁随机访问存储器(MRAM)以及半导体-氧-氮-氧-半导体(S0N0S,也称为电介质存储器)。
[0025]NVRAM具有以下特性:
其即使在电力被移除的情况下也维持其内容,类似于固态盘(SSD)中使用的闪速存储器,并且不同于为易失性的SRAM和DRAM ;
其与诸如SRAM和DRAM之类的易失性存储器相比具有更低的总体功耗;
其类似于SRAM和DRAM具有随机访问(也称为随机可寻址);
其与SSD中存在的闪存相比在更低粒度级别(例如,字节级别)是可重写和可擦除的(SSD中存在的闪存一次仅可以被重写或擦除一个“块”~一对于NOR闪存大小最小为64千字节并且对于NAND闪存大小最小为16千字节);
其用作系统存储器,并且被分配系统存储器地址空间的全部或一部分;
其能够通过总线(也可互换地称为互连或链路)耦合到CPU,所述总线使用事务协议(支持事务标识符(ID)来区分不同事务使得那些事务可以完全乱序的协议)并且允许以足够小的粒度级别进行访问以支持作为系统存储器的NVRAM的操作(例如,诸如64或128字节的高速缓存线(cache line)大小)。例如,总线/互连可以是存储器总线(例如,诸如DDR3、DDR4等的双倍数据速率(DDR)总线),与通常使用的非事务协议相对的事务协议运行在该存储器总线上。作为另一示例,总线可以是在其上通常运行事务协议(原生事务协议)的总线,诸如快速PCI (PCIE)总线、桌面管理接口(DMI)总线,或利用事务协议和足够小的事务有效载荷大小的任何其他类型的总线(例如,诸如64或128字节的高速缓存线大小);以及其还具有一个或多个以下特性:
其具有比诸如闪存之类的非易失性存储器/储存技术更快的写入速度;
其具有非常高的读取速度(比闪存更快,并且接近或等于DRAM读取速度);
其是直接可写的(而非像SSD中使用的闪速存储器那样在写数据之前需要擦除(用Is的覆与));和/或
其在失败之前允许更大数量的写入(比SSD中使用的闪存和引导ROM更多)。
[0026]如上面所提及的,与必须一次被重写和擦除一个完整“块”的闪速存储器相对地,在任何给定实现中访问NVRAM所处的粒度级别可以取决于具体存储器控制器和具体存储器总线或NVRAM耦合到的其他类型的总线。例如,在其中NVRAM用作系统存储器的一些实现中,可以以高速缓存线的粒度(例如,64字节或128字节高速缓存线)来访问NVRAM,尽管固有能力为以字节粒度来访问,这是因为高速缓存线是存储器子系统访问存储器所处的级另O。因此,当在存储器子系统内部署NVRAM时,可以以与相同存储器子系统中使用的DRAM相同的粒度级别来对其进行访问。即便如此,存储器控制器和存储器总线或其他类型的总线来访问NVRAM的粒度级别小于闪存所使用的块大小以及I/O子系统的控制器和总线的访问大小。
[0027]NVRAM还可以并入磨损均衡算法(wear leveling algorithm),以考虑这样的事实:在多次写入访问之后,特别是在诸如系统存储器实现中可能发生大量写入的情况下,储存单元开始磨损。因为高周期计数块最可能以该方式磨损,所以磨损均衡通过交换高周期计数块与低周期计数块的地址来将写入散布到远存储器单元中。注意,典型地,大多数地址交换对于应用程序是透明的,因为其由硬件、低级软件(例如,低级驱动器或操作系统)或二者的组合来处理。
[0028]NVRAM在其特性和/或其在存储器/储存分层中的应用方面是与其他指令和数据存储器/储存技术可区分的。例如,NVRAM不同于以下:
静态随机访问存储器(SRAM),其可以用于专用于处理器内的每个核的O级和I级内部处理器高速缓存以及由处理器内的核共享的低级高速缓存(LLC);
动态随机访问存储器(DRAM),其被配置为处理器管芯内部的高速缓存(例如,在与处理器相同的管芯上)、配置为处理器管芯外部的一个或多个高速缓存(例如,在与处理器管芯相同或不同的封装中)或在处理器封装外部的通用系统存储器;以及闪速存储器/磁盘/光学盘,其被应用为大容量储存;以及 诸如闪速存储器或其他只读存储器(ROM)之类应用为固件存储器的存储器(其可以指代引导ROM、BIOS闪存和/或TPM闪存)。
[0029]在图1中,NVRAM 108可以用作指令和数据储存,与应用为大容量储存的闪存/磁盘/光学盘相对地,其是由CPU 100可直接寻址的并且能够与CPU 100充分地保持同步。直接可寻址性是指诸如CPU或GPU之类的处理器能够向NVRAM发送存储器请求,仿佛其是标准DRAM (例如,通过标准存储器存储和加载命令)。此外,如上面所讨论和下文详细描述的,NVRAM 108可以放置在存储器总线上,并且可以与存储器控制器直接通信,存储器控制器继而与处理器100直接通信。
[0030]NVRAM 108可以与其他指令和数据储存技术(例如,DRAM)相组合以形成混合存储器(也称为共置PCM和DRAM ;第I级存储器和第2级存储器;FLAM (闪存和DRAM))。注意,包括PCM/PCMS的至少一些以上技术可以用于大容量储存以取代或附加于系统存储器,并且当以该方式应用时不需要是由处理器可随机访问的、可字节寻址的或可直接寻址的。
[0031 ] 为了便于解释,本申请剩余的大部分将把“NVRAM”或更具体地“PCM”或“PCMS”称为针对非易失性存储器的技术选择。这样,在以下讨论中,术语NVRAM、PCM和PCMS可以可互换地使用。然而,应当认识到,如上文所讨论的,也可以利用不同的技术。
[0032]2.易失性存储器概览
“易失性存储器”106是结合NVRAM 108配置的中间级存储器,其相对于NVRAM 108具有更低的读取/写入访问等待时间和/或更对称的读取/写入访问等待时间(即,具有大致等于写入时间的读取时间)。在一些实施例中,易失性存储器106具有比NVRAM 108显著更低的写入等待时间但是具有类似(例如,稍低或相等)的读取等待时间;例如,易失性存储器106可以是诸如易失性随机访问存储器(VRAM)之类的易失性存储器,并且可以包括DRAM或其他高速基于电容器的存储器。然而,注意,本发明的基本原理并不限于这些特定的存储器类型。另外,与NVRAM 108相比,易失性存储器106可能具有相对更低的密度和/或可能制造起来更昂贵。
[0033]在一些实施例中,易失性存储器106配置在NVRAM 108与内部处理器高速缓存之间。在下文描述的一些实施例中,易失性存储器106用于掩蔽NVRAM 108的性能和/或使用限制,例如,包括读取/写入等待时间限制和存储器降级限制。在这些实现中,易失性存储器106和NVRAM 108的组合以接近、等于或超过仅使用DRAM作为系统存储器的系统的性能级别而操作。
[0034]在不同实施例中,易失性存储器106可以位于处理器管芯上、位于处理器管芯外部而在位于CPU封装上的单独管芯上、以至CPU封装的高带宽链路而位于CPU封装之外,例如,位于存储器的双列直插式存储模块(DIMM)上、立管(riser) /小背板(mezzanine)上或计算机母板上。在图1中,易失性存储器106被示出为位于CPU封装的外部。易失性存储器106可以使用诸如DDR或其他事务高带宽链路之类的单个或多个高带宽链路与CPU 100通信地耦合。设备的通信耦合是指通过电、光学、无线或其他形式的链路或链路组合来耦合,以允许信息在相互耦合的设备之间来回传递。在一些实施例中,耦合是直接的,并且允许信息从第一设备直接传递到第二设备,并且反过来也是可能的。在其他实施例中,耦合是间接的,并且当信息在讨论中两个通信耦合的设备之间传送时,需要信息传递通过沿信息采取的路线驻留的一个或多个附加设备。[0035]3.用于处理器的混合存储器代码和数据储存
根据许多实施例,公开了在计算机系统中将DRAM和PCMS储存或另一类型的NVRAM相组合的混合存储器解决方案,其可以用于访问正在执行的软件应用的代码和数据段二者。如上文所提及的,尽管其他形式的NVRAM可以适用于这些解决方案,但是PCMS的技术规范使其是非易失性存储器/储存的合格候选技术。因此,示出的示例将利用PCMS,但是在其他实施例中,可以利用另一形式的NVRAM。
[0036]在计算机系统中,包括一些PCMS存储器/储存。在计算机系统上运行的软件应用和操作系统二者均可以利用PCMS设备的快速读取能力。快速读取可以允许软件应用和操作系统直接从处理器上的PCMS执行代码。
[0037]在许多实施例中,在计算机系统上运行的操作系统可以知道PCMS储存并且将直接从物理PCMS地址空间中执行操作系统二进制文件。该执行不同于其他形式的非易失性存储器,诸如大容量储存解决方案,其替代地在执行代码之前需要将代码(二进制文件)加载到诸如DRAM之类的易失性存储器中。
[0038]操作系统将建立用于在操作系统上运行的软件应用和任何驱动器软件的接口。根据许多实施例,应用和/或驱动器将向操作系统发送针对缓冲器存储二进制可执行代码的请求,所述二进制可执行代码在执行期间将不被改变。然后,操作系统准予这些缓冲器,并在软件应用的和/或驱动器的分配的存储器地址空间中提供指向它们的指针。因为这些缓冲器中的二进制文件不被修改,所以一般存在源自软件、驱动器和/或操作系统的显式指示/标示以使缓冲器不可修改。
[0039]在系统上运行的操作系统可以将PCMS储存视为物理DRAM,并且将构成操作系统和软件应用的文件的部 分映射到存储器管理单元(MMU)中。当在MMU中时,这些文件位置可以类似于转换旁视缓冲器(translation lookaside buffer, TLB)条目那样被转换和存储以及被寻址,仿佛它们是标准DRAM存储器位置。从操作系统的逻辑地址空间到物理PCMS设备地址位置可以存在多个页移动(page walk),以首先从操作系统利用的逻辑地址到达基础通用存储器管理硬件用于主DRAM存储器的平台物理地址(PPA),并最终到达直接物理PCMS设备地址。为了实现这样,可以存在一个或多个地址映射表132(也称为地址间接表)。在许多实施例中,地址映射表132存储在DRAM (易失性存储器106)中。
[0040]除了 PCMS中的二进制代码储存之外,存在可以物理PCMS空间中被适当地存储的软件应用、驱动器以及操作系统信息的其他部分。具体地,软件的(与代码相对的)某些数据段可以是可存储在PCMS中的,当该数据是静态或几乎静态时。因此,在许多实施例中,至少每个数据元素存在比特标示,其表明要存储的特定数据元素是还是不是静态的。静态标示的数据元素可以存储在静态(即,不可修改)缓冲器中,而非静态标示的数据元素可以存储在易失性(即,可修改)缓冲器中。每个缓冲器的该特定标示允许OS:
?确定何时在实际的DRAM相对PCMS储存中分配缓冲器,其中,如果缓冲器被标示为易失性的,则在DRAM中分配缓冲器,并且当缓冲器被标示为静态的时,在PCMS中分配缓冲器。
[0041].当在DRAM中分配缓冲器时,操作系统可以简单地遵从传统页分配过程。
[0042].当在PCMS中分配缓冲器(即,不要求修改的缓冲器)时,操作系统可以将物理PCMS设备地址空间映射到其页表以允许对PCMS设备的直接存储器访问。
[0043].可选地,操作系统可以通过针对PCMS缓冲器设置只读许可来实施缓冲器的只读特性。
[0044]图2描述了当利用软件应用混合代码和数据储存系统时的易失性和非易失性存储空间的实施例。
[0045]在图2中,存在DRAM存储器空间200 (例如,4GB的空间)和NVRAM存储器空间202(例如,64GB的空间)。可以存在附加的存储器空间,包括其中操作系统控制的逻辑存储器空间,但是为了清楚的缘故未示出那些存储器空间。操作系统204驻留在DRAM存储器空间200中并且在CPU 100上被执行。在许多实施例中,驱动器软件206也驻留在DRAM存储器空间200中并且在CPU 100上结合操作系统204来执行。在操作期间的某点处,操作系统204将软件应用208加载到DRAM存储器空间200中。所述加载操作包括操作系统204为软件应用208保留存储器空间。保留的存储器空间包括用于存储软件应用的二进制可执行代码(“代码”)的空间以及用于存储软件应用208用来运行的任何可修改数据(“数据”)的空间。
[0046]如上文所提及的,根据许多实施例,代码一般是静态的,因为二进制文件在执行期间不改变。另一方面,数据可以改变或者其可以不改变,这取决于数据的类型。例如,静态数据(例如,常数)将不改变,而易失性数据(例如,基于不断改变的输入而重新计算的存储的变量)要改变。因此,代码和静态数据可以放置在存储器的只读段中,而易失性数据将通常放置在存储器的读取/写入段中。在许多实施例中,可以向软件应用208给出用储存类型比特来预置数据和代码部分的机会。例如,如果结构被软件应用定义为易失性的(意指该结构中的数据是可修改的),则软件应用可以通过为该结构设置“易失性”比特来明确中继该情况。然后,当操作系统204在分配存储器空间来存储该结构时,其将看到如所设置的“易失性”比特并知道在DRAM存储器空间的易失性数据段中分配结构。可替代地,如果数据变量被声明为常数值,则软件应用可以清除“易失性”比特以告知操作系统将如静态的一样分配该数据。
[0047]在基于PCMS的系统中,整体看似合理地将代码和静态数据存储在PCMS (BP,NVRAM)存储器空间中,而仍然将易失性数据存储在DRAM存储器中。因此,根据许多实施例,操作系统建立保持驻留在DRAM存储器空间200中的地址映射表132。在加载软件应用208时,操作系统特别地将代码(例如,代码I (210)和代码2 (212))和静态数据214存储在NVRAM存储器空间202中,而将易失性数据216存储在DRAM存储器空间200中。一旦加载,操作系统在地址映射表132中创建一组代码指针218,以指向在NVRAM存储器空间202中存储的每个代码块。操作系统204还在地址映射表132中创建一组数据指针220以指向在NVRAM存储器空间202中存储的每个数据块以及在DRAM存储器空间200中存储的每个数据块。
[0048]图3是为软件应用的代码和数据段分配易失性和非易失性存储器的过程的实施例的流程图。该过程由处理逻辑执行,所述处理逻辑可以包括硬件、软件、固件或这些所列形式的处理逻辑中的两个或更多个的组合。
[0049]该过程以处理逻辑接收为软件应用的一部分分配存储器的请求开始(处理框300)。请求可以以自动化的或用户发起的执行软件应用的决定的形式出现。一旦请求启动和执行软件应用,处理逻辑接收软件应用的代码(诸如二进制可执行文件)和数据(诸如数据文件)元素以加载到在软件应用的执行期间能够访问的一种或多种形式的存储器。[0050]对于软件应用的要分配的给定部分,处理逻辑然后确定该部分包括代码还是数据(处理框302)。如果该部分包括代码,则处理逻辑为代码的储存分配NVRAM存储器空间的区段(处理框304)。如果该部分包括数据,则处理逻辑接着确定数据是否是易失性的(处理框306)。
[0051]在许多实施例中,存在“易失性”比特,其可以针对任何给定数据部分被设置或清除以通知处理逻辑是否数据可以在软件应用的执行期间改变。在未示出的其他实施例中,不存在可用的易失性比特,而代替地处理逻辑最初将所有数据加载到NVRAM存储器空间中,并且无论何时数据部分被重写过,处理逻辑然后就确定该部分是易失性的并且将该数据元素从NVRAM分配的储存位置移动到DRAM分配的储存位置。
[0052]返回到框306,如果未设置易失性比特,则处理逻辑为静态数据的部分的储存分配NVRAM存储器空间的区段(处理框308)。可替代地,如果设置了易失性比特,则处理逻辑为易失性数据的储存分配DRAM存储器空间的区段(处理框310)。
[0053]在任何情况下,一旦(从处理框304、308或310的任何一个)分配了存储器空间,则处理逻辑以指向存储器的三个分配的段(即,易失性数据段、静态数据段或代码段)之一中的分配的存储器区段的指针来更新驻留在DRAM中的地址映射表。
[0054]尽管将应用软件用作示例,但是NVRAM和DRAM的该特定混合使用不限于应用软件。操作系统和驱动器二进制文件也可以类似地被划分,并且静态部分被放置在NVRAM中而易失性部分被放置在DRAM中。这在以下方面提供了显著的益处:缩短了从低功率状态恢
复所需的时间量-当从挂起到磁盘(hibernate-to-disk)状态恢复时操作系统和/或驱
动器的部分将不再需 要拷贝回DRAM中。
[0055]4.用于嵌入式控制器的混合存储器代码和数据储存
许多计算平台具有用于广泛应用的多个嵌入式处理器。嵌入式处理器也可以称为“微控制器”。除其他外,嵌入式处理器的示例还包括管理性引擎(其管理计算机系统的安全性和带外通信)以及图形嵌入式控制器。这些嵌入式控制器在运行时(runtime)期间使用固件作为指令来执行它们的许多核心功能。该固件典型地存储在计算机系统的闪速存储器(例如,BIOS)或大容量储存驱动器(例如,硬盘驱动器、固态驱动器等)上。在系统引导时,通常将固件加载到嵌入式控制器中的内部SRAM中以供执行。
[0056]将固件外部地存储在系统闪速存储器硬盘驱动器上存在诸如以下的重大问题:
?固件可能被篡改,从而嵌入式微控制器通常需要在加载时执行认证以在执行之前验证固件的完整性。
[0057].存储在系统闪速存储器或硬盘驱动器中的固件经受恶化,这可能削弱嵌入式微控制器的功能。
[0058].执行之前必须将固件拷贝到本地SRAM中,这是耗时的。
[0059]为了解决嵌入式控制器的这些限制,根据许多实施例,基于PCMS的储存与嵌入式控制器封装在一起。用于用PCMS存储器的本地化部分有效地替换系统闪存和/或硬盘驱动器的逻辑将包括:
?在对于嵌入式控制器可访问的组件内部的少量基于PCMS的储存。
[0060].留出用于固件代码的基于PCMS的储存的区段。
[0061].留出用于存储持久性数据的基于PCMS的储存的区段,应用可能希望跨引导会话存储所述持久性数据(例如,数字版权管理密钥、离线电影使用记录等)。
[0062].密码验证模块,其仅在PCMS固件镜像(firmware image)为真时才允许该镜像被覆写。
[0063].可选的SRAM可以在PCMS写入等待时间不利地影响性能的情况下被添加到嵌入式引擎以用于运行时数据储存(例如,局部变量、栈等)。
[0064].在计算机系统的引导期间,嵌入式控制器可以直接从内部PCMS储存执行固件代码。使直接从PCMS的该执行成为可能的原因是PCMS读取等待时间与DRAM相匹配,这不同于系统闪存或硬盘驱动器。
[0065]图4图示了计算机系统的实施例,该计算机系统包括具有对I/O子系统内部的PCMS设备的直接访问的嵌入式控制器。
[0066]除了 I/O子系统124中的改变之外,图4中示出的计算机系统总体上可以等同于图1中描述的计算机系统。因此,对于其他组件的详细描述,请参照图1。在I/o子系统124内,存在在图4中给出的嵌入式控制器400和内部PCMS存储器402。内部PCMS 402存储与嵌入式控制器400执行的固件相关的静态信息。在引导期间,嵌入式控制器400可以从内部PCMS 402中存储的只读(R-O)代码区404直接执行固件代码。另外,内部PCMS 402还可以存储其他信息406,诸如固定(B卩,静态)数据、用于安全性应用(例如,数字版权管理)的密钥、以及在随后的时间要保存的使用信息(例如,用户在计算机系统上观看给定电影的次数)。该存储的信息406是整体静态或者很少更新的数据,并且还可以包括要求通过对计算机系统电力循环的非易失性的数据。
[0067]此外,在许多实施例中,嵌入式控制器400具有存储器的内部SRAM 408部分,用于储存局部变量、栈和/或贯穿固件的执行而动态改变的其他信息。因此,该信息受益于SRAM的快速写入能力,而与受限于PCMS写入速度相反。
[0068]根据许多实施例,附加地存在在I/O子系统124中给出的密码验证(CV)硬件模块410。CV模块能够利用硬件安全性验证密钥技术来要求对PCMS上存储的固件的、要通过任何实现形式的安全性验证(例如,使用密钥的公共和私有认证模块)来认证的任何区域的任
何更新/覆写。
[0069]图5描述了当利用混合固件代码和数据储存系统时的I/O子系统中的易失性和非易失性存储器空间的实施例。
[0070]在图5中,嵌入式控制器400具有存储运行时数据储存502的内部SRAM存储器空间500。嵌入式控制器400附加地通信地耦合到内部PCMS存储器空间504,其存储固件代码区506和其他储存508,其他储存508存储固定/静态数据、密钥以及所需的非易失性使
用信息。
[0071]在以下描述中,阐述了许多特定细节以提供对本发明的更透彻的理解,所述特定细节诸如:逻辑实现、用于指定操作数的装置、资源分区/共享/复制实现、系统组件的类型和相互关系,以及逻辑分区/集成选择。然而,本领域技术人员将意识到,可以在没有这样的特定细节的情况下实践本发明。在其他实例中,未详细示出控制结构、门级电路和完整软件指令序列以免模糊本发明。本领域普通技术人员用所包括的描述将能够在不用进行过度实验的情况下实现适当的功能性。
[0072]在说明书中引用的“ 一个实施例”、“实施例”或“示例性实施例”等指示所描述的实施例可以包括特定特征、结构或特性,但是,每个实施例可以不一定包括所述特定特征、结构或特性。此外,这些短语并不一定指同一实施例。此外,当结合实施例来描述特定特征、结构或特性时,认为无论是否明确描述,本领域技术人员在其知识范围内都可以结合其他实施例来实现这样的特征、结构或特性。
[0073]在以下说明书和权利要求书中,可以使用术语“耦合”和“连接”以及它们的派生词。应该理解,并不意图将这些术语用作彼此的同义词。“耦合”用于指示可以或可以不相互直接物理接触或电接触的两个或更多个元件彼此协作或交互。“连接”用于指示彼此耦合的两个或更多个元件之间通信的建立。
[0074]本发明的实施例还可以被提供为计算机程序产品,其可以包括其上存储有指令的非临时机器可读介质,所述指令可以用于对计算机(或其他电子设备)进行编程以执行处理。非临时机器可读介质可以包括但不限于:软盘、光学盘、CD-ROM和磁光盘、ROM、RAM、EPROM、EEPR0M、磁或光卡、传播介质或适于存储电子指令的其他类型的介质/机器可读介质。本发明的实施例也可以被下载为计算机程序产品,其中,所述程序可以经由通信链路(例如,调制解调器或网络连接)通过体现在载波或其他传播介质中的数据信号的方式从远程计算机(例如,服务器)被传送到请求计算机(例如,客户端)。
[0075]尽管已经关于若干实施例描述了本发明,但是本领域技术人员将认识到,本发明并不限于所描述的实施例,可以用在所附权利要求的精神和范围内的修改和改变来实践。因此,该描述被视为是说明性而非限制性的。
【权利要求】
1.一种方法,包括: 将软件应用的一个或多个静态代码段存储在带开关的相变存储器(PCMS)设备中; 将软件应用的一个或多个静态数据段存储在PCMS设备中; 将软件应用的一个或多个易失性数据段存储在易失性存储器设备中; 分配地址映射表,其具有指向所述一个或多个静态代码段中的每一个的至少第一地址指针、指向所述一个或多个静态数据段中的每一个的至少第二地址指针,以及指向所述一个或多个易失性数据段中的每一个的至少第三地址指针。
2.如权利要求1所述的方法,其中,静态代码段、静态数据段和易失性数据段的存储是在加载软件应用以供执行期间执行的。
3.如权利要求1所述的方法,还包括: 读取对于一组数据段中的每一个可变的易失性比特,其中,当易失性比特被清除时,该组数据段的给定数据段被存储为静态数据段,并且其中,当易失性比特被设置时,该组数据段的给定数据段被存储为易失性数据段。
4.如权利要求1所述的方法,还包括: 最初将软件应用的所有数据段存储在PCMS设备中; 对于所有数据段内的给 定数据段,当在软件应用的执行期间接收到对于给定数据段的重写请求时,将给定数据段转移到易失性存储器设备。
5.如权利要求1所述的方法,还包括: 在不转移到易失性存储器设备的情况下,直接从PCMS设备执行每个静态代码段和静态数据段。
6.如权利要求1-5中任何一项所述的方法,其中,所述软件应用包括固件,并且所述易失性存储器设备包括集成到嵌入式控制器中的静态随机访问存储器(SRAM)设备。
7.—种设备,包括: 嵌入式控制器,用于: 直接从带开关的相变存储器(PCMS)设备执行固件中的一个或多个静态代码段;直接从PCMS设备执行所述固件中的一个或多个静态数据段;以及从集成到嵌入式控制器中的静态随机访问存储器设备执行所述固件中的一个或多个易失性数据段。
8.如权利要求7所述的设备,还包括: 密码验证模块,用于对从外部源接收的新固件代码或数据段进行认证; 其中,嵌入式控制器要求在允许执行新固件代码或数据段之前进行认证。
9.一种系统,包括: 处理器; 易失性存储器设备,用于存储存储器分配逻辑;以及 带开关的相变存储器(PCMS)设备; 其中,当存储器分配逻辑被处理器执行时其使得处理器进行以下动作: 将软件应用的一个或多个静态代码段和软件应用的一个或多个静态数据段存储在PCMS设备中; 将软件应用的一个或多个易失性数据段存储在易失性存储器设备中;以及在易失性存储器中分配地址映射表,其具有指向所述一个或多个静态代码段中的每一个的至少第一地址指针、指向所述一个或多个静态数据段中的每一个的至少第二地址指针,以及指向所述一个或多个易失性数据段中的每一个的至少第三地址指针。
10.如权利要求9所述的系统,其中,所述处理器在加载软件应用以供执行期间存储静态代码段、静态数据段和易失性数据段。
11.如 权利要求9所述的系统,其中,所述处理器读取对于一组数据段中的每一个可变的易失性比特,其中,当易失性比特被清除时,该组数据段的给定数据段被存储为静态数据段,并且其中,当易失性比特被设置时,该组数据段的给定数据段被存储为易失性数据段。
12.如权利要求9所述的系统,其中,所述处理器: 最初将软件应用的所有数据段存储在PCMS设备中; 对于所有数据段内的给定数据段,当在软件应用的执行期间接收到对于给定数据段的重写请求时,将给定数据段转移到易失性存储器设备。
13.如权利要求9所述的系统,其中,所述处理器: 在不转移到易失性存储器设备的情况下,直接从PCMS设备执行每个静态代码段和静态数据段。
14.如权利要求9-13中任何一项所述的系统,其中,所述处理器包括嵌入式控制器,所述软件应用包括固件,并且所述易失性存储器设备包括集成到嵌入式控制器中的静态随机访问存储器(SRAM)设备。
【文档编号】G06F12/00GK103999038SQ201180075997
【公开日】2014年8月20日 申请日期:2011年12月28日 优先权日:2011年12月28日
【发明者】B.文布, M.拉马多斯 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1