零功率状态下的低延迟引导的制作方法

文档序号:18414190发布日期:2019-08-13 19:07阅读:259来源:国知局
零功率状态下的低延迟引导的制作方法

实施例总体上涉及计算设备。更具体地,实施例涉及从零功率状态的低延迟引导。



背景技术:

计算系统或平台可以利用各种存储器布置。两级存储器(two-levelmemory,2lm)系统可以包括近存储器(nearmemory,nm)和远存储器(farmemory,fm)。引导时间可以指电源转换与将控制转移到操作系统(os)之间的时间量。通常,更快的引导时间是优选的。

附图说明

通过阅读以下的说明和所附权利要求并通过参考附图,实施例的各种优点对于本领域技术人员就将变得显而易见,在附图中:

图1是根据实施例的电子处理系统的示例的框图;

图2是根据实施例的半导体封装装置的示例的框图;

图3a至3c是根据实施例的唤醒操作系统的方法的示例的流程图。

图4是根据实施例的电子处理系统的另一示例的框图;

图5是根据实施例的唤醒操作系统的方法的另一示例的流程图;

图6是根据实施例的唤醒操作系统的方法的另一示例的流程图;

图7是根据实施例的唤醒操作系统的方法的另一示例的流程图;

图8是根据实施例的电子处理系统的另一示例的框图;

图9a和9b是根据实施例的零功率低延迟引导装置的示例的框图;

图10是根据实施例的处理器的示例的框图;以及

图11是根据实施例的系统的示例的框图。

具体实施方式

许多计算设备包括引导过程,引导过程可以指将机器从零功率状态或低功率状态带到运行时状态的过程,其中设备准备好用于其预定目的。对于垂直集成设备(例如,其中制造商为设备提供硬件和软件两者),引导过程可以相对封闭,因为制造商控制硬件和软件需要如何一起操作的所有方面。对于水平集成的设备(例如,其中制造商仅为设备提供硬件和/或软件的一部分),引导过程可能更开放,因为其他硬件和/或软件提供商可能需要理解将设备从零/低功率状态带到运行时状态的过程,以便所提供的硬件/软件在引导过程之后工作。因此,水平集成的产品可以提供更多的钩子或指示符(例如,诸如唤醒向量)作为引导过程的一部分。

对于垂直或水平集成的设备,一些实施例可以减少或消除对引导过程的需要。例如,一些实施例可以包括完全支持运行时状态的非易失性存储器。一些实施例可以固有地总是在有效的运行时状态下操作,或者可提供可以指示运行时状态有效的指示符或标志。因此,当设备断电、处于低功率状态或处于挂起状态时,运行时状态可以始终被充分地保持,使得当设备唤醒时(例如,当电源恢复时,按下按钮时,打开盖子时,或者一些其他动作指示设备应该返回运行时状态时),设备可以仅仅恢复操作。例如,一些实施例可以基于设备的组件/部件的成功上电/操作的指示来确定运行时是有效的。在一些实施例中,设备可以读取指示运行时状态有效的标志。有利地,具有完全支持运行时状态的非易失性存储器的设备的一些实施例可以看起来是基本上在从零功率状态(例如,可与从低功率/挂起状态恢复)接通之后立即准备好操作。

对于一些实施例(例如,对于传统兼容性),设备仍然可以遵循引导过程,但是可以通过绕过一些传统的引导过程来继续更快地引导。例如,一些设备可以包括运行时状态中涉及的易失性和非易失性存储器。一些实施例可以在转换到零功率状态之前将易失性存储器刷新为非易失性,使得当从零功率状态唤醒时可以快速恢复运行时状态。在运行时期间,标志可以指示运行时状态无效,无法从零功率状态唤醒。当转换到零功率状态时,如果易失性存储器被成功刷新成非易失性存储器,则可以设置标志以指示运行时状态有效,可以从零功率状态唤醒。

一些实施例可有利地在2lm机器上提供零功率低延迟引导流。在一些系统中,高级配置与电源接口(acpi)s3系统状态可以提供在计算设备上具有非常快速的恢复的低功率挂起。s3低功率状态可以与诸如s4和/或s5状态这样的零功率系统状态非常不同(例如,在功耗方面)。在一些应用(例如,汽车应用、移动应用等)中,零功率可能是一个重要要求(例如,减少或消除电池消耗)。一些系统可以支持系统连接待机(cs)状态。例如,当在支持cs的平台上安装了微软视窗操作系统时,平台可能不支持s3。提供的s状态转换可以包括s0ix(连接待机)状态、s4状态和s5状态(例如,后两者是零功率状态)。在一些其他系统中,从s4和/或s5状态转换为正常操作状态可能涉及冗长的恢复时间。有利地,一些实施例可以提供2lm机器从零功率状态的非常快速的唤醒。

一些实施例可以在小于5秒的恢复时间内从零功率状态恢复,并且一些实施例可以实现小于2秒的恢复时间(例如,与从低功率状态恢复的时间相当)。例如,一些实施例可以支持零功率状态,零功率状态保持唤醒系统的能力并且使系统在小于5秒内完全可用(例如,从cpu重置到os初始化完成所测得的)。有利地,这种更快的引导流的实施例可以应用于广泛类别的计算设备,包括,例如,个人计算机、服务器、客户端、移动设备等。用于汽车应用的一些实施例可以支持维持唤醒系统能力的零功率状态,并且使系统在不到2秒钟内可使用(例如,从点火开启且向嵌入式车辆计算机(例如,导航/信息娱乐系统)供电时以及当倒车相机显示图像时开始测量)。有利地,一些实施例可以提供低延迟和零功率的引导流(例如,由计算设备导致电池的零额外耗尽)。

本文描述的各种实施例可以包括存储器组件和/或存储器组件的接口。这种存储器组件可以包括易失性和/或非易失性存储器。非易失性存储器可以是不需要电力来维持介质存储的数据状态的存储介质。在一个实施例中,存储器设备可以包括块可寻址存储器设备(诸如,基于nand或nor技术的那些存储器设备)。存储器设备还可以包括下一代非易失性设备(诸如三维(3d)交叉点存储器设备)或其他字节可寻址的就地写入(write-in-place)的非易失性存储器设备。在一个实施例中,存储器设备可以是或可以包括使用硫属化物玻璃、多阈值电平nand闪存、nor闪存、单级或多级相变存储器(pcm)、电阻存储器、纳米线存储器、铁电晶体管随机存取存储器(fetram)、反铁电存储器、结合忆阻技术的磁阻随机存取存储器(mram),包括金属氧化物基底、氧空位基底和导电桥随机存取存储器(cb-ram)的电阻存储器,或自旋转移力矩(stt)-mram,基于自旋电子磁结存储器的设备、基于磁隧道结(mtj)的设备、基于dw(畴壁)和sot(自旋轨道传输)的设备、基于晶闸管的存储器设备或上述任一种存储器的组合,或其他存储器。存储器设备可以指管芯本身和/或封装的存储器产品。在特定实施例中,具有非易失性存储器的存储器组件可遵从联合电子设备工程委员会(jointelectrondeviceengineeringcouncil,jedec)颁布的一个或多个标准(诸如jesd218、jesd219、jesd220-1、jesd223b、jesd223-1或其他合适的标准(此处引用的jedec标准可在jedec.org上获得)。

易失性存储器可以是需要电力来维持介质存储的数据状态的存储介质。易失性存储器的非限制性示例可以包括各种类型的ram,例如动态随机存取存储器(dram)或静态随机存取存储器(sram)。可以在存储器模块中使用的一种特定类型的dram是同步动态随机存取存储器(sdram)。在特定实施例中,存储器组件的dram可遵从jedec颁布的标准(诸如用于ddrsdram的jesd79f、用于ddr2sdram的jesd79-2f、用于ddr3sdram的jesd79-3f、用于ddr4sdram的jesd79-4a、用于低功率ddr(lpddr)的jesd209、用于lpddr2的jesd209-2、用于lpddr3的jesd209-3和用于lpddr4的jesd209-4(这些标准可在jedec.org上获得)。这些标准(和类似标准)可以被称为基于ddr的标准,并且存储设备的实现这种标准的通信接口可以被称为基于ddr的接口。

现在转到图1,电子处理系统10的实施例可以包括处理器11、通信地耦合到处理器11的存储器12、和通信地耦合到处理器11的逻辑13,以确定唤醒事件是否对应于(例如,电子处理系统10的操作系统(os)的)零功率状态,确定运行时状态是否有效,以便可以从零功率状态唤醒,如果确定运行时状态有效,则从零功率状态唤醒到运行时状态。例如,逻辑13可以被配置为确定唤醒向量是否可用(例如,唤醒向量包括与os到零功率状态的转换有关的信息),并且如果唤醒向量被确定为可用,则基于唤醒向量将os从零功率状态唤醒。在一些实施例中,逻辑13可被配置成如果唤醒向量被确定为可用,则从零功率状态重放初始化序列。在一些实施例中,逻辑13可以进一步被配置成确定存储器12是否包括具有非易失性存储器(nvm)的至少一个级别的多级存储器。例如,逻辑13还可以被配置成,如果存储器12被确定包括具有nvm的至少一个级别的多级存储器,则接收转换到零功率状态的指示,并且创建唤醒向量。在一些实施例中,逻辑13可以进一步被配置成基于所接收的转换到零功率状态的指示,发起易失性存储器到多级存储器的nvm的刷新。例如,nvm可以包括pcm(例如,3d交叉点存储器(诸如英特尔3dxpoint存储器))。在一些实施例中,逻辑13可以位于包括处理器11在内的各种组件中,或者与包括处理器11在内的各种组件共同定位(例如,在同一个管芯上)。

上述处理器11、存储器12、逻辑13和其他系统组件中的每一个的实施例可以以硬件、软件或其任何合适的组合来实现。例如,硬件实现可以包括可配置逻辑(诸如例如可编程逻辑阵列(pla)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld)),或使用电路技术(诸如例如专用集成电路(asic)、互补金属氧化物半导体(cmos)或晶体管-晶体管逻辑(ttl)技术,或其任何组合)的固定功能逻辑硬件。

替代地,或另外,这些组件的全部或部分可以在一个或多个模块中实现为存储在机器或计算机可读存储介质(诸如随机存取存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、固件、闪存等)中的由处理器或计算设备执行的一组逻辑指令。例如,用于执行组件操作的计算机程序代码可以以一种或多种操作系统(os)适用/适当的编程语言的任何组合来编写,所述一种或多种编程语言包括面向对象的编程语言(诸如python、perl、java、smalltalk、c++、c#等)以及常规过程性的编程语言(诸如“c”编程语言或类似的编程语言)。例如,存储器12、持久性存储介质或其他系统存储器可以存储一组指令,当处理器11执行时,所述指令使系统10实现系统10的一个或多个组件、特征或方面(例如,逻辑13,确定唤醒事件是否来自零功率状态,确定运行时状态是否有效,从零功率状态唤醒到运行时状态等)。

现在转到图2,半导体封装装置20的实施例可以包括一个或多个基板21和耦合到一个或多个基板21的逻辑22,其中逻辑22至少部分地在一个或多个可配置逻辑和固定功能硬件逻辑中实现。耦合到一个或多个基板21的逻辑22可以被配置为确定唤醒事件是否对应于(例如,os的)零功率状态,确定运行时状态有效,以便可以从零功率状态唤醒,以及如果运行时状态被确定是有效的,从零功率状态唤醒到运行时状态。例如,逻辑22可以被配置为确定唤醒向量是否可用(例如,唤醒向量包括与os到零功率状态的转换有关的信息),并且如果唤醒向量被确定为可用,则基于唤醒向量将os从零功率状态唤醒。在一些实施例中,逻辑22可被配置成,如果唤醒向量被确定为可用,则从零功率状态重放初始化序列。在一些实施例中,逻辑22可以进一步被配置以确定系统存储器12是否包括具有nvm的至少一个级别的多级存储器。例如,逻辑22还可以被配置成接收转换到零功率状态的指示,并且如果系统存储器被确定为包括具有nvm的至少一个级别的多级存储器,则创建唤醒向量。在一些实施例中,逻辑22可以进一步被配置成基于所接收的转换到零功率状态的指示,发起易失性存储器到多级存储器的nvm的刷新。例如,nvm可以包括pcm。在一些实施例中,耦合到一个或多个基板21的逻辑22可以包括位于一个或多个基板21内的晶体管沟道区。

逻辑22的实施例和装置20的其他组件可以硬件、软件或其任何组合来实现,包括至少部分以硬件来实现。例如,硬件实现可以包括可配置逻辑(诸如例如,pla、fpga、cpld)或使用电路技术(诸如例如,asic、cmos或ttl技术)的固定功能逻辑硬件,或它们的任何组合。替代地,这些组件的部分可以在一个或多个模块中实现为存储在机器或计算机可读存储介质(诸如ram、rom、prom、固件、闪存等)中的要由处理器或计算设备执行的一组逻辑指令。例如,用于执行组件操作的计算机程序代码可以以一种或多种os适用/适当的编程语言的任何组合来编写,所述一种或多种编程语言包括面向对象的编程语言(诸如python、perl、java、smalltalk、c++、c#等)和常规过程性的编程语言(诸如“c”编程语言或类似的编程语言)。

装置20可实现方法28的一个或多个方面(图3a到3c),或本文讨论的任何实施例。在一些实施例中,所示装置20可包括一个或多个基板21(例如,硅、蓝宝石、砷化镓)以及耦合到基板21的逻辑22(例如,晶体管阵列和其他集成电路/ic组件)。逻辑22可以至少部分地以可配置逻辑或固定功能逻辑硬件来实现。在一个实例中,逻辑22可包括位于(例如,嵌入)(多个)基板21内的晶体管沟道区。因此,逻辑22和(多个)基板21之间的接口可以不是突变结。逻辑22还可被认为包括在(多个)基板21的初始晶片上生长的外延层。

现在转到图3a到3c,唤醒os的方法28的实施例可以包括:在框29处确定唤醒事件是否对应于(例如,os的零功率状态的)零功率状态,在框30处确定运行时状态是否有效,以便可以从零功率状态唤醒,以及在框31处如果运行时状态被确定为是有效的,则从零功率状态唤醒到运行时状态。例如,方法28可以包括在框32处确定唤醒向量是否可用(例如,唤醒向量包括与os到零功率状态的转换有关的信息),并且在框33处,如果唤醒向量被确定为可用,则基于唤醒向量将os从零功率状态唤醒。方法28的一些实施例可以包括在框34处,如果唤醒向量被确定为可用,则从零功率状态重放初始化序列。方法28的一些实施例还包括在框35处确定系统存储器是否包括具有nvm的至少一个级别的多级存储器。例如,方法28可以包括:在框36处,接收转换到零功率状态的指示;以及在框37处,如果系统存储器被确定包括具有nvm的至少一个级别的多级存储器,则创建唤醒向量。方法28的一些实施例可以进一步包括在框38处基于所接收的转换到零功率状态的指示,发起易失性存储器到多级存储器的nvm的刷新。例如,在框39处,nvm可以包括pcm。

方法28的实施例可以在系统、装置、计算机、设备等中实现,例如诸如本文所描述的那些。更具体地,方法28的硬件实现可以包括可配置逻辑(诸如例如,pla、fpga、cpld)或使用电路技术(诸如例如,asic、cmos或ttl技术)的固定功能逻辑硬件,或它们的任何组合。替代地或另外地,方法28可以在一个或多个模块中实现为存储在机器或计算机可读存储介质(诸如ram、rom、prom、固件、闪存等)中的要由处理器或计算设备执行的一组逻辑指令。例如,用于执行组件操作的计算机程序代码可以以一种或多种os适用/适当的编程语言的任何组合来编写,所述一种或多种编程语言包括面向对象的编程语言(诸如python、perl、java、smalltalk、c++、c#等)和常规过程性的编程语言(诸如“c”编程语言或类似的编程语言)。

例如,方法28可在如结合以下示例23至29所描述的计算机可读介质上实现。方法28的实施例或部分可以在固件、应用程序(例如,通过应用程序编程接口(api))或在操作系统(os)上运行的驱动程序软件中实现。

现在转向图4,一些实施例可以在物理上或逻辑上被布置成一个或多个模块或组件。例如,电子处理系统40的实施例可以包括处理器41、通信地耦合到处理器41的持久存储介质42(例如,硬盘驱动器(hdd)、固态驱动器(ssd)等)、通信地耦合到处理器的引导逻辑43,以及通信地耦合到处理器41和引导逻辑43的存储器控制器44。存储器控制器44还可以通信地耦合到包括第一级存储器46和第二级存储器47的两级存储器(2lm)45。在各种实施例中,第一级存储器46和第二级存储器47中的任何一个可包括nvm和/或易失性存储器。例如,2lm45可以对应于具有近存储器和远存储器的系统存储器或主存储器。第一级存储器46可以对应于近存储器并且包括更小、更快的dram。第二级存储器47可以对应于远存储器并且包括更大存储容量的nvm(例如,字节可寻址的3d交叉点存储器)。在一些实施例中,引导逻辑43可以被配置为确定唤醒事件是否对应于零功率状态,确定唤醒向量是否可用,以及如果确定唤醒向量可用,基于唤醒向量将os从零功率状态唤醒。

在一些实施例中,引导逻辑43可被配置成如果唤醒向量被确定为可用,则从零功率状态重放初始化序列。在一些实施例中,引导逻辑43可以进一步被配置成确定系统存储器包括2lm45,2lm45包括用于第二级存储器47的nvm。例如,引导逻辑43还可以被配置为接收转换到零功率状态的指示,并创建唤醒向量(例如,因为2lm45包括用于第二级存储器47的nvm)。在一些实施例中,引导逻辑43可进一步被配置成基于所接收的转换到零功率状态的指示来发起第一级存储器46(例如,dram)到2lm45的第二级存储器47(例如,nvm)的刷新。例如,引导逻辑43的部分或方面可以与系统40的各种其他组件集成(例如,与处理器41、存储器控制器44等中的一个或多个在相同的管芯上)。

处理器41、永久存储介质42、引导逻辑43、存储器控制器44、2lm45、第一级存储器46、第二级存储器47以及系统40的其他组件的实施例可以是可以用硬件、软件或其任何组合来实现,包括至少部分用硬件实现。例如,硬件实现可以包括可配置逻辑(诸如例如,pla、fpga、cpld)或使用电路技术(诸如例如,asic、cmos或ttl技术)的固定功能逻辑硬件,或它们的任何组合。替代地,这些组件的部分可以在一个或多个模块中实现为存储在机器或计算机可读存储介质(诸如ram、rom、prom、固件、闪存等)中的要由处理器或计算设备执行的一组逻辑指令。例如,用于执行组件操作的计算机程序代码可以以一种或多种os适用/适当的编程语言的任何组合来编写,所述一种或多种编程语言包括面向对象的编程语言(诸如python、perl、java、smalltalk、c++、c#等)和常规过程性的编程语言(诸如“c”编程语言或类似的编程语言)。

现在转到图5,引导操作系统的方法50的实施例可以包括由点线所示的基本输入/输出系统(bios)执行的部分和由虚线所示的os执行的部分。在框51处当bios在启动时(例如,在唤醒事件之后),bios可以写入脚本数据,在框52这些脚本数据可以被捕获以在正常引导期间保留硬件(hw)初始化序列的输入/输出(io)重放数据库。在框53处,bios可以将控制移交给os加载器,在框54处os加载器可以执行hw/sw的os初始化以在框55处将os置于运行时状态。在框55处当os运行时,一些动作或软件触发可以发起到低功率或零功率状态的转换。然后,在框56处os可以确定是否应该进入s0ix(cs)状态。如果是,则在框57处监视等待(mwait)指令可以将os置于低功率cs状态,直到检测到监视条件,并且在框55处os恢复运行。否则,在框58处os可以确定是否存在对s4的请求。如果不存在对s4的请求,则在框55处os可以继续运行。如果存在对s4的请求,则在框59处基于os电源管理(ospm)策略和是否支持从s4唤醒,在框60处os可以跳过休眠文件(hiberfile)创建并且将唤醒向量的地址设置为非零值(例如,s4唤醒向量的零值可以指示从s4唤醒是不可用的)并建立s4唤醒向量。否则,在框61处os可以创建休眠(hiber)文件。在框60或框61之后,在框62处os可以调用睡眠寄存器s4转换,并且在框63处,bios可以调用s4处理程序以执行系统关闭(例如,这可能会检取重放脚本数据)。在系统关闭之后(例如,s4、s5等),在唤醒事件(如打开盖子、电源按钮等)发生之际,bios可以检查关闭原因(例如s4),并且在框64处检查s4唤醒向量的地址是否是非零。如果不是,bios可以从框51重新开始。如果是,则在框65处bios可以发起存储器参考码(mrc)初始化和io重放,并且在框66处然后可以跳转到s4os唤醒向量以在框67处唤醒os并在框55处将os置于运行时状态。

有利地,通过向os提供提示,一些实施例可以使os绕过一些耗时的s4/零功率状态转换动作(例如,写入休眠文件)并建立唤醒向量。另外,在一些实施例中,bios可以利用底层的iohw重放支持(例如,通常不在s4状态下使用)来快速初始化hw,然后跳转到os建立的唤醒向量。将这两种改进一起使用,并且通过利用底层hw的特性(例如,2lm中的持久性介质),一些实施例可以有利地提供零功率/低延迟引导流。例如,一些实施例可以允许已经被置于零功率状态的平台以类似于已经仅仅被静默的平台的方式恢复。一些实施例可以有利地提供当用户打开盖子或按下电源按钮时近乎瞬间启动的感觉。

现在转向图6,唤醒os的方法70的实施例可包括由点线所示的bios执行的部分、由虚线所示的os执行的部分、以及由点和划交替线所示的微代码(诸如处理器代码(pcode))执行的部分。在bios在框71处启动之后(例如,在硬复位之后),在框72处bios可以将控制权移交给os加载器,在框73处os加载器可以执行hw/sw的os初始化以在框74处将os置于运行时状态。在框74处当os运行时,一些动作或软件触发可以发起到低功率或零功率状态的转换。然后,在框75处os可以确定是否应该进入s0ix(cs)状态。如果是,则在框76处监视等待(mwait)指令可以将os置于低功率cs状态,直到检测到监视状态,并且在框74处os继续运行。否则,在框77处os可以确定是否存在对s4的请求。如果不存在对s4的请求,则在框74处os可以继续运行。如果存在对s4的请求,在框78处,os可以跳过休眠文件(hiberfile)创建,并且在框79处建立唤醒向量。然后,在框80处,os可以调用睡眠寄存器s4转换。然后,在框81处,pcode可以在写入用于s状态转换的睡眠启用指示符(例如,slp_en)时发起刷新,并且在框82处,bios可以调用s4处理程序来执行系统关闭。系统关闭后,在唤醒事件(例如,打开盖子、电源按钮等)发生时,在框83处,bios可以发起从零功率的恢复,并且在框84处跳转到唤醒向量以在框85处唤醒os,并在框74处将os置于运行时状态。

现在转向图7,唤醒os的方法90的实施例可包括由点线所示的bios执行的部分、由虚线所示的os执行的部分、以及由点划交替线所示的pcode执行的部分。方法90可包括使用提示和/或信息(诸如,指向唤醒向量的指针(例如,#1=x_firmware_waking_vector)、指示系统是否启用了cs的标志(例如,#2=low_power_s0_idle_capable)以及指示系统是否支持从s4状态开始的低延迟唤醒的标志(例如,#3=s4_wake_supported)。当bios在框91处启动时(例如,在硬复位之后),可扩展固件接口(efi)(例如,2017年5月发布的统一efi(uefi)版本2.7,uefi.org)可以包括预efi初始化(pre-efiinitialization,pei)阶段(例如,包括mrc的早期hw初始化),其中可以写入s3脚本数据,在框92处这些脚本数据可以被捕获以在正常引导期间保持hw初始化序列的io重放数据库。在框93处,uefi驱动程序执行环境(dxe)阶段可以加载驱动程序并初始化io、总线等。对于微软视窗环境,在框94处,bios/uefi可以将控制权移交给os加载程序,在框95处,该os加载程序可以执行os初始化并读取#2和#3的值,以在框96处将os置于运行时状态。在框96处当os运行时,一些动作或软件触发可以发起到低功率或零功率状态的转换。在框97处,os可以首先确定#2是否为真。如果不为真,则在框98处os可以指示cs不活动,并且在框96处os可以继续运行。如果为真,则在框99处os可以指示cs为活动,然后在框100处确定是否应该进入s0ix状态。如果是,则在框101处mwait指令可以将os置于低功率cs状态,直到检测到监视条件,并且在框96处os恢复运行。否则,在框102处,os可以确定#3是否为真。如果不是,则在框96处os可以继续运行。如果是,在框103处,os可以挂起应用和设备(例如,跳过休眠文件写入)并在框104处为唤醒向量设置#1的地址,发起s4睡眠寄存器写入,并建立唤醒向量。然后,在框105处,pcode可以在写入用于s状态转换的睡眠启用指示符(例如,slp_en)时发起刷新,之后系统可能关闭。系统关闭后,在唤醒事件(例如,打开盖子、电源按钮等)发生时,在框106处,bios可以使用io重放数据(例如,检索s3脚本数据)发起从零功率的恢复,并且在框107处跳转到唤醒向量以在框108处唤醒os,并在框96处将os置于运行时状态。

现在转向图8,电子处理系统110的实施例可包括耦合到平台控制器集线器(pch)112的中央处理器单元(cpu)111。cpu111可以包括耦合到一个或多个dram设备113的集成近存储器(nm)控制器111a和耦合到一个或多个nvm设备114的集成远存储器(fm)控制器111b(例如,英特尔3dxpoint存储器介质、英特尔奥坦存储器等)。dram113和nvm114可以被配置成用于系统110的2lm主存储器系统。pch112可以耦合到一个或多个大容量持久存储介质设备115(例如,诸如ssd或hdd)。例如,系统110的技术可以包括3dxpoint存储介质、英特尔存储器和/或存储控制器,英特尔互连ip和英特尔软件的组合,这些可以被称为英特尔奥坦技术。

系统110的一些实施例可以包括标志和/或附加信息,以实现零功率低延迟引导流的各个方面。一些实施例可以利用和/或重新利用来自其他引导流程的标志和/或信息。例如,一些系统可以包括由acpi指定的固件唤醒向量(fwv)值,该固件唤醒向量(fwv)值可以由s3(待机)状态使用。在一些实施例中,bios可以建立可以暴露给os的被置零的fwv值。如果在s4恢复期间,bios确定fwv值已从其被置零状态改变为除此之外的状态,则bios可以使用fwv值来唤醒os(例如,当且仅当bios知道或确定该平台是2lm并且启用了s4唤醒功能时)。例如,os可以有利地在进入s4状态时建立唤醒向量(通常仅对s3状态进行)并且将fwv值设置为零功率唤醒向量的物理存储器地址。

另外,在一些实施例中,bios可以暴露os可以用来确定机器实际上是否是2lm机器(例如,包括2lm中的nvm)的标志/位。通常,2lm机器可能是软件不可见的。一些实施例可以使用该平台提示来做出可以包括在引导流中的策略决定。例如,os通常可以在操作期间作出这样的选择:如果机器空闲,则机器可以进入s0ix模式以节省电力。然而,通常当发生热或电池事件时,os可以进入s4模式以进入零功率状态。通过使用由平台提供的提示,os然后可以交替地选择建立唤醒向量并通过更新(通常由s3使用的)标准fwv值将选择传送回bios。有利地,由2lm型系统的一些实施例提供的标志/信息可以提供可以从零功率状态非常快速地恢复的改进的或最佳的模式。

图9a示出了零功率低延迟引导装置132(132a-132g),该装置132可以实现方法28(图3a至3c)、方法50(图5)、方法70(图6)和/或方法90(图7)的一个或多个方面。零功率低延迟引导装置132可以包括逻辑指令、可配置逻辑、固定功能硬件逻辑,该装置132可以容易地替换已经讨论过的逻辑13(图1)和/或引导逻辑43。唤醒检测器132a可以包括检测唤醒事件的技术。唤醒向量检测器132b可以包括检测零功率唤醒向量是否可用的技术。os唤醒器132c可以包括使用零功率唤醒向量唤醒os的技术。例如,唤醒检测器132a可以包括用于确定唤醒事件是否对应于零功率状态的技术。唤醒向量检测器132b可以包括确定唤醒向量是否可用的技术。os唤醒器132c可以包括如果确定唤醒向量可用则基于唤醒向量将os从零功率状态唤醒的技术。在一些实施例中,os唤醒器132c可以被配置为如果确定唤醒向量可用,则从零功率状态重放初始化序列。在一些实施例中,唤醒向量检测器132b还可以被配置为确定系统存储器是否包括具有nvm的至少一个级别的多级存储器。例如,os唤醒器132c还可以被配置成接收转换到零功率状态的指示,并且如果系统存储器被确定包括具有nvm的至少一个级别的多级存储器,则创建唤醒向量。在一些实施例中,os唤醒器132c可以进一步被配置成基于所接收的转换到零功率状态的指示来发起易失性存储器到多级存储器的nvm的刷新。例如,nvm可以包括pcm。

现在转到图9b,示出了零功率低延迟引导装置134(134a,134b),其中逻辑134b(例如,晶体管阵列和其他集成电路/ic组件)耦合到基板134a(例如硅、蓝宝石、砷化镓)。逻辑134b通常可以实现方法28(图3a至3c)、方法50(图5)、方法70(图6)和/或方法90(图7)的一个或多个方面。因此,逻辑134b可以确定唤醒事件是否对应于零功率状态,确定唤醒向量是否可用,以及如果确定唤醒向量可用,则基于唤醒向量将os从零功率状态唤醒。在一些实施例中,如果确定唤醒向量为可用,则逻辑134b可从零功率状态重放初始化序列。在一些实施例中,逻辑134b还可以确定存储器是否包括具有nvm的至少一个级别的多级存储器。例如,逻辑134b还可以接收转换到零功率状态的指示,并且如果确定系统存储器包括具有nvm的至少一个级别的多级存储器,则创建唤醒向量。在一些实施例中,逻辑134b可以基于所接收的转换到零功率状态的指示,发起易失性存储器到多级存储器的nvm的刷新。例如,nvm可以包括pcm。在一个示例中,装置134是半导体管芯、芯片和/或封装。

图10展示了根据一个实施例的处理器核200。处理器核200可以是用于任何类型的处理器的核,处理器诸如微处理器、嵌入式处理器、数字信号处理器(dsp)、网络处理器或用于执行代码的其他装置。尽管图10展示了仅一个处理器核200,处理元件可以可替代地包括多于一个图10所展示的处理器核200。处理器核200可以是单线程核,或者,对于至少一个实施例,处理器核200可以是多线程的,因为它可以包括每个核多于一个硬件线程上下文(或“逻辑处理器”)。

图10还展示了耦合至处理器核200的存储器270。存储器270可以是如本领域的技术人员已知的或以其他方式可获得的多种多样的存储器(包括存储器层级的不同层)中的任何存储器。存储器270可以包括由处理器核200执行的一个或多个代码213指令,其中,代码213可以实现已经讨论的方法28(图3a到3c)、方法50(图5)、方法70(图6)和/或方法90(图7)的一个或多个方面。处理器核200遵循由代码213指示的指令的程序序列。每个指令可以进入前端部分210并且由一个或多个解码器220处理。解码器220可以生成呈预定义格式的微操作(如固定宽度微操作)作为其输出,或者可以生成反映出原始码指令的其他指令、微指令、或控制信号。所展示的前端部分210还包括寄存器重命名逻辑225和调度逻辑230,它们总体上分配资源并且对与用于执行的转换指令相对应的操作进行排队。

处理器核200被示出为包括具有一组执行单元255-1至255-n的执行逻辑250。一些实施例可以包括专用于指定功能或功能集合的大量执行单元。其他实施例可以仅包括一个执行单元或一个可执行特定功能的执行单元。所展示的执行逻辑250执行由码指令指定的操作。

在完成由码指令指定的操作的执行之后,后端逻辑260使代码213的指令引退。在一个实施例中,处理器核200允许指令的无序执行但要求指令的有序引退。引退逻辑265可以采取本领域的技术人员已知的多种形式(例如,重排序缓冲器等)。以此方式,在代码213的执行过程中,至少就由解码器、寄存器重命名逻辑225所利用的硬件寄存器和表、以及由执行逻辑250修改的任何寄存器(未示出)生成的输出而言,处理器核200被变换。

尽管图10未展示,但处理元件可以包括其他与处理器核200同在芯片上的元件。例如,处理元件可以包括存储器控制逻辑连同处理器核200。处理元件可以包括i/o控制逻辑、和/或可以包括与存储器控制逻辑集成的i/o控制逻辑。处理元件还可以包括一个或多个高速缓存。

现在参照图11,所示出的是根据实施例的系统1000实施例的框图。图11示出了多处理器系统1000,所述多处理器系统1000包括第一处理元件1070和第二处理元件1080。虽然示出了两个处理元件1070和1080,但应当理解的是,系统1000的实施例还可以包括仅一个此类的处理元件。

系统1000被展示为点对点互连系统,其中,第一处理元件1070和第二处理元件1080经由点对点互连1050耦合。应当理解的是,图11所展示的任何或所有互连可以被实现为多站式总线而非点对点互连。

如图11所示,处理元件1070和1080中的每一个都可以是多核处理器,包括第一和第二处理器核(即,处理器核1074a与1074b以及处理器核1084a与1084b)。此类核1074a、1074b、1084a、1084b可以被配置成用于以与以上关于图10讨论的方式类似的方式执行指令代码。

每个处理元件1070、1080可以包括至少一个共享高速缓存1896a、1896b(例如,静态随机存取存储器/sram)。共享高速缓存1896a、1896b可以存储分别由处理元件的一个或多个组件(如核1074a、1074b和1084a、1084b)使用的数据(例如,对象、指令)。例如,共享高速缓存1896a、1896b可以对存储在存储器1032、1034中的数据进行本地高速缓存,以便由处理器的组件更快地访问。在一个或多个实施例中,共享高速缓存1896a、1896b可以包括一个或多个中级高速缓存,如二级(l2)、三级(l3)、四级(l4)、或其他级别的高速缓存、终极高速缓存(llc)、和/或其组合。

虽然仅以两个处理元件1070、1080来示出,但应理解实施例的范围不限于此。在其他实施例中,给定处理器中可以存在一个或多个附加处理元件。可替代地,处理元件1070、1080中的一个或多个可以是处理器之外的元件,比如加速器或现场可编程门阵列。例如,(多个)附加的处理元件可以包括与第一处理器1070相同的(多个)附加的处理器、与第一处理器1070异构或非对称的(多个)附加的处理器、加速器(诸如,例如图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列、或任何其他处理元件。就一系列品质量度(包括体系结构、微体系结构、热、功耗特性等)而言,处理元件1070、1080之间存在多种差异。这些差异可以有效地将其本身表现为处理元件1070、1080之间的不对称性和异构性。对于至少一个实施例,各种处理元件1070、1080可以驻留在同一管芯封装中。

第一处理元件1070可以进一步包括存储器控制器逻辑(mc)1072以及点对点(p-p)接口1076和1078。类似地,第二处理元件1080可以包括mc1082以及p-p接口1086和1088。如图11所示,mc的1072和1082将处理器耦合至相应的存储器(即存储器1032和存储器1034)上,所述存储器可以是本地附连到相应的处理器的主存储器的部分。虽然mc1072和1082被展示为集成到处理元件1070、1080中,但对于替代性实施例,mc逻辑可以是位于处理元件1070、1080外部而不是集成在其中的离散逻辑。

第一处理元件1070和第二处理元件1080可以分别地经由p-p互连件1076、1086耦合至i/o子系统1090。如图11所示,i/o子系统1090包括tee1097(例如,安全控制器)以及p-p接口1094和1098。此外,i/o子系统1090包括用于将i/o子系统1090与高性能图形引擎1038耦合的接口1092。在一个实施例中,总线1049可以用于将图形引擎1038耦合至i/o子系统1090。可替代地,点对点互连可以耦合这些组件。

进而,i/o子系统1090可以经由接口1096耦合至第一总线1016。在一个实施例中,第一总线1016可以是外围组件互连(pci)总线,或如快速pci总线或另一种第三代i/o互连总线的总线,尽管实施例的范围不限于此。

如图11所示,各种i/0设备1014(例如,相机、传感器)可连同总线桥接器1018一起耦合至第一总线1016,所述总线桥接器1018可以将第一总线1016耦合至第二总线1020。在一个实施例中,第二总线1020可以是低引脚数(lpc)总线。在一个实施例中,各种设备可以耦合到第二总线1020,所述设备包括例如键盘/鼠标1012、(多个)网络控制器/通信设备1026(其进而可以与计算机网络通信)、以及数据存储单元1019(诸如磁盘驱动器或其他可包括代码1030的大容量存储设备)。代码1030可以包括用于执行以上所描述方法中的一种或多种的实施例的指令。因此,所示代码1030可以实现已经讨论过的方法28(图3a至3c)、方法50(图5)、方法70(图6)和/或方法90(图7)的一个或多个方面,并且可以类似于已经讨论过的代码213(图10)。进一步地,音频i/o1024可以耦合至第二总线1020。

注意的是,设想了其他实施例。例如,系统可以实现多站式总线或另一个此类通信拓扑,而不是图11的点对点体系结构。

附加说明和示例:

示例1可以包括电子处理系统,所述电子处理系统包括处理器、通信地耦合到处理器的存储器,以及通信地耦合到处理器的逻辑,以确定唤醒事件是否对应于从零功率状态的唤醒,确定运行时状态是否有效以便从零功率状态唤醒,以及如果确定运行时状态有效,则从零功率状态唤醒到运行时状态。

示例2可以包括示例1的系统,其中,逻辑进一步用于:确定唤醒向量是否可用,以及如果唤醒向量被确定为可用,则基于唤醒向量将操作系统从零功率状态唤醒。

示例3可以包括示例2的系统,其中,逻辑进一步用于:如果确定唤醒向量可用,则从零功率状态重放初始化序列。

示例4可以包括示例2的系统,其中,逻辑进一步用于确定存储器是否包括具有非易失性存储器的至少一个级别的多级存储器。

示例5可以包括示例4的系统,其中,逻辑进一步用于:接收转换到零功率状态的指示,以及如果确定存储器包括具有非易失性存储器的至少一个级别的多级存储器,则创建唤醒向量。

示例6可以包括示例5的系统,其中,逻辑进一步用于:基于所接收的转换到零功率状态的指示,发起易失性存储器到多级存储器的非易失性的刷新。

示例7可以包括示例4至6中任一个的系统,其中非易失性存储器包括相变存储器。

示例8可以包括半导体封装装置,该装置包括一个或多个基板,以及耦合到一个或多个基板的逻辑,其中逻辑至少部分地在可配置逻辑和固定功能硬件逻辑中的一个或多个中实现,逻辑耦合到一个或多个基板以确定唤醒事件是否对应于零功率状态,确定运行时状态是否有效以便从零功率状态唤醒,如果确定运行时状态有效,则从零功率状态唤醒到运行时状态。

示例9可以包括示例8的装置,其中,逻辑进一步用于:确定唤醒向量是否可用,以及如果唤醒向量被确定为可用,则基于唤醒向量将操作系统从零功率状态唤醒。

示例10可以包括示例9的装置,其中,逻辑进一步用于:如果确定唤醒向量可用,则从零功率状态重放初始化序列。

示例11可以包括示例9的装置,其中,逻辑进一步用于:确定存储器是否包括具有非易失性存储器的至少一个级别的多级存储器。

示例12可以包括示例11的装置,其中,逻辑进一步用于:接收转换到零功率状态的指示,以及如果确定存储器包括具有非易失性存储器的至少一个级别的多级存储器,则创建唤醒向量。

示例13可以包括示例12的装置,其中,逻辑进一步用于:基于所接收的转换到零功率状态的指示,发起易失性存储器到多级存储器的非易失性存储器的刷新。

示例14可以包括:示例11至13中任一个的装置,其中非易失性存储器包括相变存储器。

示例15可以包括:示例8至14中任一个的装置,其中耦合到一个或多个基板的逻辑包括位于一个或多个基板内的晶体管沟道区。

示例16可以包括唤醒操作系统的方法,包括确定唤醒事件是否对应于零功率状态,确定运行时状态是否有效以便从零功率状态唤醒,以及如果运行时状态被确定为有效,则从零功率状态唤醒到运行时状态。

示例17可以包括示例16的方法,进一步包括:确定唤醒向量是否可用,以及如果唤醒向量被确定为可用,则基于唤醒向量将操作系统从零功率状态唤醒。

示例18可以包括示例17的方法,进一步包括:如果确定唤醒向量可用,则从零功率状态重放初始化序列。

示例19可以包括示例17的方法,进一步包括:确定存储器是否包括具有非易失性存储器的至少一个级别的多级存储器。

示例20可以包括示例19的方法,进一步包括:接收转换到零功率状态的指示,以及如果确定存储器包括具有非易失性存储器的至少一个级别的多级存储器,则创建唤醒向量。

示例21可以包括示例20的方法,进一步包括基于所接收的转换到零功率状态的指示,发起易失性存储器到多级存储器的非易失性存储器的刷新。

示例22可以包括示例19至21中任一个的方法,其中非易失性存储器包括相变存储器。

示例23可以包括至少一种计算机可读介质,该计算机可读介质包括一组指令,当由计算设备执行该组指令时,使得计算设备用于:确定唤醒事件是否对应于零功率状态,确定运行时状态是否有效以便从零功率状态唤醒,如果确定运行时状态有效,则从零功率状态唤醒到运行时状态。

示例24可以包括示例23的至少一种计算机可读介质,该计算机可读介质包括另一组指令,当由计算设备执行该另一组指令时,使得计算设备用于:确定唤醒向量是否可用,如果唤醒向量被确定为可用,则将操作系统从零功率状态唤醒。

示例25可以包括示例24的至少一种计算机可读介质,该计算机可读介质包括另一组指令,当由计算设备执行该另一组指令时,使得计算设备用于:如果唤醒向量被确定为可用,则从零功率状态重放初始化序列。

示例26可以包括示例24的至少一种计算机可读介质,该计算机可读介质包括另一组指令,当由计算设备执行该另一组指令时,使得计算设备用于:确定系统存储器是否包括具有非易失性存储器的至少一个级别的的多级存储器。

示例27可以包括示例26的至少一种计算机可读介质,该计算机可读介质包括另一组指令,当由计算设备执行该另一组指令时,使得计算设备用于:接收到零功率状态的转换的指示,以及如果确定系统存储器包括具有非易失性存储器的至少一个级别的多级存储器,则创建唤醒向量。

示例28可以包括示例27的至少一种计算机可读介质,该计算机可读介质包括另一组指令,当由计算设备执行该另一组指令时,使得计算设备用于:基于所接收的转换到零功率状态的指示,发起易失性存储器到多级存储器的非易失性存储器的刷新。

示例29可以包括示例26至28中任一个的至少一种计算机可读介质,其中非易失性存储器包括相变存储器。

示例30可以包括计算设备,包括:用于确定唤醒事件是否对应于零功率状态的装置,用于确定运行时状态是否有效以便从零功率状态唤醒的装置,以及用于如果确定运行时状态有效,则从零功率状态唤醒到运行时状态的装置。

示例31可以包括示例30的设备,进一步包括:用于确定唤醒向量是否可用的装置,以及如果唤醒向量被确定为可用,则基于唤醒向量将操作系统从零功率状态唤醒的装置。

示例32可以包括示例31的设备,进一步包括:用于如果确定唤醒向量可用,则从零功率状态重放初始化序列的装置。

示例33可以包括示例31的设备,进一步包括:用于确定存储器是否包括具有非易失性存储器的至少一个级别的多级存储器的装置。

示例34可以包括示例33的设备,进一步包括:用于接收转换到零功率状态的指示的装置,以及用于如果确定系统存储器包括具有非易失性存储器的至少一个级别的多级存储器,则创建唤醒向量的装置。

示例35可以包括示例34的设备,进一步包括用于基于所接收的转换到零功率状态的指示,发起易失性存储器到多级存储器的非易失性存储器的刷新的装置。

示例36可以包括示例33至35中任一个的设备,其中非易失性存储器包括相变存储器。

实施例适用于供所有类型的半导体集成电路(ic)芯片使用。这些ic芯片的示例包括但不限于:处理器、控制器、芯片集组件、可编程逻辑阵列(pla)、存储器芯片、网络芯片、片上系统(soc)、ssd/nand控制器asic等。另外,在一些附图中,利用线条表示信号导体线。一些线条可以是不同的以指示更多组成的信号通路,具有数字标记以指示多个组成的信号通路和/或在一端或多端具有箭头以指示主要信息流方向。然而,这不应当被解释为限制性方式。相反,这种附加的细节可以与一个或多个示例性实施例结合使用以帮助更容易地理解电路。任何所表示的信号线,无论是否有附加信息,都实际可以包括可以在多个方向行进的一个或多个信号,并且可以利用任何适当类型的信号方案实现,例如利用差分对、光纤线路和/或单端线路实现的数字或模拟线路。

可能已经给出了示例大小/模型/值/范围,尽管实施例不限于此。随着制造技术(例如,光刻技术)随时间推移而成熟,预期可以制造出更小尺寸的器件。另外,为了简化图示和讨论以及为了不使实施例的一些方面不清晰,可以在图内示出或不示出到ic芯片和其他组件的公知的电力/接地连接。此外,安排可以以框图的形式示出,以避免模糊实施例,并且还鉴于以下事实:关于这样的框图安排的实施方式的细节高度依赖于在其中实现实施例的平台,即,这样的细节应当完全处在本领域技术人员的视界中。在阐述具体细节(例如电路)以描述示例实施例的情况下,对于本领域技术人员来说应当显而易见的是,可以在没有这些具体细节或具有这些具体细节的变化的情况下实践实施例。因此,描述被认为是说明性的,而不是限制性的。

术语“耦合”在本文中可以用于指代所讨论的组件之间的任何类型的直接或间接关系,并且可以应用于电学、机械、流体、光学、电磁、机电或其他连接。另外,此处使用的术语“第一”,“第二”等只帮助讨论,除非另外指明,其不带有特殊的时间或时间顺序意义。

如在本申请和权利要求书中所使用的,由术语“…中的一项或多项”联接的一系列项目可意指所列术语的任何组合。例如,短语“a、b和c中的一个或多个”和短语“a、b或c中的一个或多个”两者都可能意味着a、b、c、a和b、a和c、b和c、或者a、b和c。

本领域技术人员将从前面的描述中认识到,可以用各种形式来实现实施例的广泛技术。因此,尽管已经结合其特定示例描述了实施例,但是实施例的实际范围不应由此受限,因为其他的修改在本领域技术人员研习了附图、说明书和所附权利要求之后就将变得显而易见。

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