用于存储器验证的方法、装置及系统的制作方法

文档序号:6485173阅读:202来源:国知局
用于存储器验证的方法、装置及系统的制作方法
【专利摘要】用于保证计算机平台的存储器中的一个或多个可寻址位置从潜在无效状态转移到已知有效状态的技术和机制。在一个实施例中,与计算机平台的处理器分离的存储器验证代理响应于功率状态转移的指示来执行存储器验证写入。在另一个实施例中,存储器验证代理确定要被包括在实现存储器验证的写入命令中的信息,其中确定所述信息与处理器的操作分开。
【专利说明】用于存储器验证的方法、装置及系统
【背景技术】
[0001]1.【技术领域】
本文所讨论的实施例大体上涉及计算机存储系统。更特别地,某些实施例不同地涉及在功率状态转移之后对存储设备的配置。
[0002]2.背景领域
启动计算机平台、或以其它方式将平台从用于较低功耗的状态转移到用于较高功耗的状态经常花费比期望长的时间。此外,技术改进持续推动(例如,用于平板和各种其它手持设备的)更小平台的实现,针对提高的功率效率的需求和针对从低功率状态更快地恢复的需求彼此越来越矛盾。
[0003]因此,当设备需要被加快激活时,与功率转移关联的延迟会是无法维持的。对于提供足够快的启动(或其它功率转移)的一个约束是需要准备用于功率状态之后的操作的易失性存储器,所述功率状态已经允许在此类易失性存储器中存储的信息退化(degrade)。在此类功率状态之后,诸如当一个或多个存储单元处于逻辑“高”和逻辑“低”之间的不确定的逻辑状态时,存储器中的一个或多个位置可以处于潜在无效状态。
[0004]保证存储设备处于已知有效状态的操作减慢了启动操作和其它转移,并且至少由于该原因,是对某些计算机平台在各种应用中的有用性的约束。因此,存在对例如允许与计算机系统的功率状态转移关联的更快的启动或其它操作的机制的需要。
【专利附图】

【附图说明】
[0005]在附图的图中,以示例的方式并不以限制的方式图示了本发明的各种实施例,并且在所述附图中:
图1是图示了用于提供存储器验证的根据实施例的计算机平台的元件的框图。
[0006]图2A-2C是图示了根据相应实施例的用于提供存储器验证的各种架构的元件的框图。
[0007]图3是图示了根据实施例的执行存储器验证的存储器验证代理的元件的框图。
[0008]图4是图示了根据实施例的用于存储器验证代理执行对存储器的写入的算法的元素的流程图。
[0009]图5是图示了根据实施例的用于将软件代码加载到经验证的存储器中的算法的元素的流程图。
[0010]图6是图示了根据实施例的用于将软件代码加载到经验证的存储器中的算法的元素的流程图。
【具体实施方式】
[0011]图1是图示了根据实施例的提供存储器验证的计算机平台100的选择元件的框图。计算机平台100可以包括例如台式计算机、便携式计算机(诸如,膝上型或手持设备一例如,平板、个人数字助理(PDA)、智能电话、消息传送设备、数字音乐播放器、数字摄像机等)的平台、或用于数据存储、处理、发送、接收和/或等的其它此类计算机平台。
[0012]在一个实施例中,计算机平台100包括具有运行软件(例如,在其上实现一个或多个应用的操作系统)的一个或多个处理器核的处理单元105。例如,处理单元105可以包括中央处理单元(CPU)、专用指令集处理器(ASIP)、或运行操作系统指令、启动软件指令、可选ROM指令、固件接口指令和/或等中的一个或多个的其它处理器。以说明并非限制的方式,处理单元105的处理器可以运行基本输入/输出系统(BIOS)代码、诸如统一可扩展固件接口(UEFI)代码之类的可扩展固件接口(EFI)代码、和/或其它固件接口指令。各种类型的固件接口代码、操作系统代码、应用代码等中的任何一个(按照本文所讨论的技术)可以由处理单元105来运行。
[0013]计算机平台可以包括(例如,经由存储器控制器110)耦合到处理单元105的存储器120,其中存储器120存储指令或其它数据,以便支持由处理单元105的软件运行。存储器120可以例如包括一个或多个易失性存储设备的各种组合中的任何一个。以说明并非限制的方式,存储器120可以包括随机存取存储器(RAM),诸如动态RAM (DRAM)、静态RAM(SRAM)中的一个或多个,诸如双倍数据速率(DDR) SDRAM和/或等。存储器120可以例如包括一个或多个双列直插式存储模块(DIMM)设备,不过某些实施例不限于该方面。
[0014]在一个实施例中,存储器120包括存储信息(例如,指令、数据、地址信息和/或等)的多个可寻址位置122a、...、122n以供处理单元105访问。可寻址位置122a、...、122n可以例如被配置成存储表示要由处理单元105所运行的一个或多个软件过程的状态的信息。
[0015]一些或所有的可寻址位置122a、…、122η可以均包括或以其它方式对应于存储器120的相应的误差校正位置124a、…、124η,不过某些实施例不限于该方面。误差校正位置124a、…、124η可以均可用于存储用于在可寻址位置122a、…、122η的对应一个中存储的
信息的相应的误差校正码(ECC)或其它误差校正值-例如,奇偶校验位、校验和、散列值
和/或等。要理解的是,存储器120可以包括图1中未示出的各种附加或可替代的可寻址位置(和/或误差校正位置)中的任何一个。
[0016]在某些时候,计算机平台100可以不同地操作于允许在存储器120中存储的一些或所有数据的退化的一个或多个功率状态——例如,关机状态、休眠状态、睡眠状态等。在此类功率状态下,可以为了降低计算机平台100的功耗的目的而禁用例如一个或多个存储器刷新机制、误差检测机制、误差校正机制和/或等。因此,当计算机平台100转移离开此类功率状态(例如,通过通电或唤醒计算机平台100)而到达支持此类机制的操作的功率状态时,在存储器120中存储的数据可能已经失去其部分或全部的完整性。例如,可寻址位置122a、…、122η中的和/或误差校正位置124a、…、124η中的信息可能处于不确定状态,可能具有计算机平台100无法从中恢复的误差,可能具有造成较大的误差校正开销的误差,和/或等。
[0017]在一个实施例中,计算机平台100包括改写(write over)可寻址位置122a、…、122η中的一些或所有的信息的一个或多个机制(例如,作为从此类功率状态的转移的部分),所述写入利用公知为有效的信息(本文称为“已知有效信息”)来替换存储器中的潜在退化的信息。
[0018] 为了简便,本文将利用已知有效信息来改写存储器中的潜在无效信息称为“存储器验证”。尽管术语“存储器洗涤”可替代地描述此类写入,但该术语过去也被用来指代读取信息并校正所读取的信息中检测到的误差的技术。反之,本文所讨论的某些实施例不要求要被改写的信息的实际读取、或此类所读取的信息中的评估或校正或误差。
[0019]在一个实施例中,计算机平台100包括存储器验证代理115,包括为一些或所有的可寻址位置122a、…、122η执行存储器验证的逻辑。存储器验证代理115可以驻存于处理单元105之外。以说明并非限制的方式,存储器验证代理115可以驻存于存储器控制器110内。在某些实施例中,存储器验证代理115和/或存储器控制器110可以驻存于包括处理单元105的计算机平台100的集成电路(IC)封装或其它组件设备(例如,片上系统(SoC)设备)内。在此类设备中,存储器验证代理115可以与要执行启动过程、主机OS过程、或支持计算机平台100转移离开低功率状态的其它初始化过程的处理单元105的一个或多个处理器核不同(例如,与此类组件设备的所有的处理器核不同)。要理解的是,根据不同的实施例,各种架构中的任何一个可以将存储器验证代理115耦合到处理单元105。
[0020]在一个实施例中,存储器验证代理115包括硬件、软件、和/或固件的各种组合中的任何一个,以执行每个针对可寻址位置122a、…、122η的相应一个的多个写入。例如,存储器验证115可以包括状态机或其它硬件引擎,以生成用于对存储器120的相应位置的写入的多个写入命令。可替代地或另外,存储器验证代理115可以包括协处理器、微控制器、或其它代理以生成此类写入命令。在一个实施例中,存储器验证代理115包括专用于实现与处理器操作分开的存储器验证的DFX(针对X的设计,其中X是某种内建设计、测试、验证或其它功能)模块。[0021]存储器验证代理115的存储器验证操作可以响应于指示计算机平台100从允许可寻址位置122a、…、122η中的数据的退化的功率状态的转移的信号——例如,来自处理单元105的消息。对所述信号的检测可以发生在转移发生之后、期间、或甚至之前。在一个实施例中,用于激活维持可寻址位置122a、…、122η中的和(可选地)误差校正位置124a、…、124η中的数据完整性的一个或多个机制的功率状态转移可以是较大的平台范围的功率状态转移的一个分量。
[0022]在一个实施例中,存储器验证代理115的存储器验证操作可以包括继从此类功率状态的转移之后执行对可寻址位置122a、…、122η的最早的写入。
[0023]由存储器验证代理115生成此类写入命令可以在一个或多个方面独立于处理单元105。更特别地,由存储器验证代理115实现存储器验证的操作可以与处理单元105的并行操作分开。以说明并非限制的方式,存储器验证代理115可以确定要为可寻址位置122a、…、122η执行存储器验证,其中所述确定独立于处理单元105对存储器验证代理115指定要为其执行存储器验证的特定可寻址位置中的每个(或在一个实施例中,任何一个)。例如,存储器验证代理115可以生成或以其它方式确定要为其执行存储器验证的多个存储器地址,其中,此类生成/确定独立于由处理单元105自讨论中的功率状态转移以来所传送的任何特定寻址信息。可替代地或另外,存储器验证代理115可以生成或以其它方式确定要被写入到可寻址位置122a、…、122η的一个或多个值,其中生成/确定此类一个或多个值独立于处理单元105对存储器验证代理115指定任何此类值一例如,至少自讨论中的功率状态转移以来。
[0024]在某些实施例中,存储器验证代理115可以仅响应于来自处理单元105的通信而执行存储器验证,其中任何此类通信通用于所有的可寻址位置122a、…、122η。例如,存储器验证可以独立于提供特定于可寻址位置122a、…、122η的特定一个的信息(地址、数据、指令和/或等)的任何此类通信。
[0025]存储器验证可以为将软件指令和/或软件状态信息加载到可寻址位置122a、…、122η中做准备。在一个实施例中,存储器验证过程将占位符信息写入到可寻址位置122a、…、122η中——例如,其中此类占位符信息自身不对应于要由处理单元105所运行的任何代码。此类占位符信息的写入可以降低可寻址位置122a、…、122η中的任何位处于逻辑不确定状态的可能性。例如,写入此类占位符信息可以对先前具有处于用于逻辑“I”值的阈值电平和用于逻辑“O”值的阈值电平之间的电荷的电平的位断言逻辑“I”或逻辑“O”。可替代地或另外,此类占位符信息的写入可以包括写入误差校正信息,其与通过存储器验证所写入的其它占位符信息对应并且对于所述其它占位符信息而言是正确的。因此,被写入到存储器120的信息至少在此类信息清楚地表示布尔逻辑状态的程度上可以说成是已知有效的。在某些实施例中,已知有效信息包括具有、或对应于误差校正信息的信息,所述误差校正彳目息对于其它已知有效彳目息而目是准确的。
[0026]在一个实施例中,执行存储器验证来为自从允许存储器120中的数据退化的功率状态的转移以来最早将软件指令、状态等加载到可寻址位置122a、…、122η中做准备。例如,在存储器验证之后,可以将用于计算机平台100的BIOS代码130的代码加载到存储器120中。在一个实施例中,BIOS 130被存储在计算机平台100的非易失性存储中,诸如电可擦除可编程只读存储器(EEPROM)或其它只读存储器、NAND闪速或其它闪速设备和/或等。在一个实施例中,在存储器验证之后,可以加载各种附加或可替代的软件中的任何一个,包括但不限于,启 动软件、EFI或其它固件接口软件、操作系统等中的一个或多个。
[0027]除以上所讨论的特征之外,计算机平台100被示出为包括以下所讨论的附加的元件,其不限于某些实施例的存储器验证机制和/或技术。本领域一般技术人员将根据本文的讨论而理解:根据不同的实施例,计算机平台100可以包括各种此类附加元件中的任何一个(以下讨论)。
[0028]计算机平台100可以包括用于与处理单元105和/或存储器120交换信息的各种设备中的任何一个。以说明并非限制的方式,计算机平台100可以包括耦合到存储器控制器110的I/O控制器125,其中可以经由I/O控制器125和存储器控制器110将BIOS 130(或各种其它此类软件)加载到存储器120中。可替代地或另外,I/O控制器125可以耦合到计算机平台100的一个或多个其它组件而到处理单元105和/或存储器120。以说明并非限制的方式,I/O控制器125可以控制向数据存储135 (例如,固态驱动器(SSD)、硬盘驱动器(HDD)和/或等中的一个或多个)的输入和/或来自所述数据存储135的输出。数据存储135可以包括NAND闪速存储介质、NOR闪速存储介质、磁阻式随机存取存储介质、纳米线存储介质、相变存储介质和/或等中的一个或多个。在一个可替代的实施例中,BIOS 130(或其它此类软件)可以存储在数据存储135中。
[0029]I/O控制器125可以控制向诸如无线接口 140之类的网络接口的输入和/或来自所述网络接口的输出。无线接口 140可以包括操作(例如,用于计算机平台100与耦合到其的网络(未示出)之间的通信的)一个或多个无线信道的电路逻辑的各种组合中的任何一个。以说明并非限制的方式,无线接口 140可以实现根据电气与电子工程师协会(IEEE)802.11 WLAN标准、IEEE802.16无线宽带标准和/或等的网络通信。无线接口 140可以包括或耦合到用于实现此类无线通信的一个或多个天线(未示出)。
[0030]可替代地或另外,I/O控制器125可以控制向(例如,用于由计算机平台100的本地用户的交互的)一个或多个其它输入/输出设备145的输入和/或来自所述其它输入/输出设备145的输出。以说明并非限制的方式,一个或多个其它输入/输出设备145可以包括鼠标、键盘、扬声器、监视器、触摸板、触摸屏和/或等中的一个或多个。可替代地或另外,I/O控制器125可以控制向用于经由至网络的有线连接的通信的网络控制器150 (诸如网络接口卡)、支持与通用串行总线(USB)的通信的串行扩展端口 155、或其它外围设备和/或等的输入和/或来自所述网络控制器150、串行扩展端口 155、或其它外围设备和/或等的输出。
[0031]图2A和2C图示了根据各种实施例的用于提供存储器验证的不同的相应架构200a、200b、200c。图2A示出其中处理器205经由存储器控制器210耦合到存储器220的架构200a,其中架构200a的存储器验证代理215在存储器控制器210的外部。在架构200a中,存储器控制器210耦合到处理器205、存储器220和存储器验证代理215,每个均经由单独的相应通信路径。在一个实施例中,处理器205、存储器220、存储器控制器210和存储器验证代理215的各种功能可以分别与处理器105、存储器120、存储器控制器110和存储器验证代理115的各种功能相对应。
[0032]图2B示出了其中处理器235经由存储器控制器240耦合到存储器250的架构200b,其中架构200b的存储器验证代理245在存储器控制器240的外部。在架构200b中,存储器验证代理245耦合在存储器控制器240和处理器235之间。在一个实施例中,处理器235、存储器250、存储器控制器240和存储器验证代理245的各种功能可以分别与处理器105、存储器120、存储器控制器110和存储器验证代理115的各种功能相对应。
[0033]图2C示出了其中处理器265经由存储器控制器270耦合到存储器280的架构200c,其中架构200c的存储器验证代理275在存储器控制器270的外部。在架构200c中,存储器验证代理275耦合在存储器控制器270和存储器280之间。在一个实施例中,处理器265、存储器280、存储器控制器270和存储器验证代理275的各种功能可以分别与处理器105、存储器120、存储器控制器110和存储器验证代理115的各种功能相对应。
[0034]就存储器验证代理115而言,存储器验证代理215、245、275的任何一个可以与存储器控制器210、245、270的对应一个和/或处理器205、235、265的对应一个一起并入到组件设备(例如,SoC硬件或其它此类IC封装)中。在此类实例中,存储器验证代理可以与组件设备的一些或所有处理器核不同一例如,与要执行用于平台初始化的启动或主机OS过程以便支持功率状态转移的核不同。
[0035]图3图示了用于利用已知有效信息来改写存储器中的潜在无效信息的根据实施例的存储器验证代理300的某些元件。在一个实施例中,存储器验证代理300包括存储器验证115的一些或所有的特征。例如,存储器验证代理300可以在包括计算机平台100的一些或所有的特征的系统中执行一个或多个存储器验证写入。
[0036] 本文关于执行存储器120的存储器验证来讨论说明性的存储器验证代理300的某些特征一例如,通过将已知有效信息写入到多个可寻址位置122a、…、122η中的一个或多个(并且在某些实施例中,写入到误差校正位置124a、…、124η的相应一个)。本领域一般技术人员将根据本即时公开而领会:根据不同的实施例,此类讨论可以扩展到应用于计算机平台的各种一个或多个附加或可替代的存储设备中的任何一个。
[0037]存储器验证代理300可以包括控制逻辑320 (例如,状态机或其它电路逻辑)以确定是否和/或如何执行对存储器120的存储器验证写入。以说明并非限制的方式,控制逻辑320可以检测被提供给存储器验证代理300的消息,该信号指示计算机平台从其间存储器120中的信息被允许退化的功率状态的转移。可以例如经由存储器验证代理300的第一接口 340提供此类信号——例如,其中所述信号从处理单元105直接或间接地发送。
[0038]另外地或可替代地,存储器验证代理300可以包括耦合到控制逻辑320的存储器写入逻辑330。响应于检测到功率状态转移的指示,控制逻辑320可以引导存储器验证代理300的存储器写入逻辑330以传送各种写入命令。在一个实施例中,存储器写入逻辑330包括生成写入命令的电路逻辑(例如,用于经由存储器验证代理的接口 350而发送),所述写入命令对存储器120不同地指定:将已知有效信息存储在多个可寻址位置122a、…、122η的相应一个中。此类写入命令的特定格式可以根据各种常规格式中的任何一个,并且不限于某些实施例。接口 340和接口 350可以是相同的接口,不过某些实施例不限于该方面。如图1中所示,在一个实施例中,存储器验证代理300可以驻存于存储器控制器单元内部,因而其可以在不需要逻辑复制的情况下,利用存储器控制器的存储器写入逻辑和其它相关逻辑来执行其验证活动。因此,存储器验证代理300的一些特征(例如,存储器写入逻辑330、第一接口 340和/或第二接口 350)可以与此类存储器控制器的其它逻辑共享。
[0039]在一个实施例中,由存储器写入逻辑330单独发送的多个写入命令响应于对控制逻辑320指示功率状态转移的相同的所检测的信号。此类多个写入可以例如包括自所指示的从功率状态的转移以来发生的对多个可寻址位置122a、…、122η的最早的写入。
[0040]存储器验证代理300可以包括和/或耦合到生成要被包括在由存储器写入逻辑330所发送的写入命令中的信息的逻辑。以说明并非限制的方式,存储器验证代理300可以包括或耦合到包括随机数发生器或其它创建信息(例如,缺省值或其它占位符信息)的逻辑的信息确定逻辑370,该信息的写入将多个可寻址位置122a、…、122η中的一个或多个和/或多个误差校正位置124a、…、124η中的一个或多个之一带到已知有效状态。在一个实施例中,存储器验证代理300可以进一步包括或耦合到(例如,信息确定逻辑370中的)逻辑,以生成用于被写入到多个可寻址位置122a、…、122η的信息的误差校正值。以说明并非限制的方式,存储器验证代理300可以包括执行对利用信息确定逻辑370所生成的信息的奇偶校验、散列、或其它操作的逻辑或能够利用该逻辑。
[0041]由存储器写入逻辑330所发送的写入命令可以包括写入某一给定值以将存储器中的可寻址位置带到已知有效状态的命令,其中在一个实施例中,该命令(或由存储器写入逻辑330所发送的某一其它命令)进一步向存储器120写入对于该给定值而言准确的误差校正信息。
[0042] 可替代地或另外,存储器验证代理300可以包括或耦合到地址确定逻辑360,包括用于向存储器写入逻辑330提供用于多个可寻址位置122a、…、122η中的各个位置的相应地址的电路或其它逻辑。存储器写入逻辑330可以将由信息生成逻辑370所提供的信息与由地址确定逻辑360所提供的地址的相应地址不同地合并,以生成多个写入命令。存储器写入逻辑330可以向存储器120后续地传送此类写入命令一例如,以将多个可寻址位置122a、…、122η的相应位置均带到已知有效状态。因此,尽管生成写入命令信息(并且写入命令包括此类写入命令信息)可以响应于控制逻辑320检测到功率状态转移,但此类响应的生成本身可以独立于由计算机平台的处理器对此类写入命令信息的任何传送而实现。在至少该意义上,存储器验证可以说成与处理器操作分开。
[0043]存储器验证代理300可以包括一个或多个寄存器310或能够利用一个或多个寄存器310,以帮助实现以上所描述的存储器验证功能的部分或全部。以说明并非限制的方式,一个或多个寄存器310可以包括专用于作为用于功率状态转移的标记来操作的寄存器。在一个实施例中,计算机平台的处理器、功率管理单元或一些其它代理可以为了指示平台从特定的低功率状态的转移的目的,而向此类标记寄存器写入值。控制逻辑320可以例如响应于对标记寄存器的此类写入而自动地触发存储器验证序列,所述存储器验证序列将部分或全部的存储设备从潜在无效状态转移到已知有效状态。在一个实施例中,此类标记寄存器可以在控制逻辑320检测到对标记寄存器的写入之后,自动地重置为某一缺省值。重置标记寄存器可以为检测从允许存储器中的信息退化的功率状态的后续转移而准备存储器验证代理300。
[0044]可替代地或另外,一个或多个寄存器310可以包括地址确定逻辑360利用其来生成要提供给存储器写入逻辑330的地址的参考信息。以说明并非限制的方式,一个或多个寄存器310可以包括标识或以其它方式描述一个或多个存储设备、一个或多个存储块(例如,存储页等)、可寻址位置的大小、存储块的首地址和末地址、存储块的首地址和大小和/或等的信息。在一个实施例中,在由控制逻辑320所检测的功率状态转移之前,可以向一个或多个寄存器310提供一些或所有的此类参考信息。在一个可替代的实施例中,在功率状态转移之后(例如,在系统上电之后或当系统退出深度睡眠状态时),可以向一个或多个寄存器310提供此类参考信息,其中先前所有的寄存器310由于在先前的低功率状态期间被断电而被清除。处理器可以继续下去,在发布执行存储器验证的命令(例如,通过在一个或多个存储器310中设置“开始测试”标记)之前,重新配置一个或多个寄存器310。在此类可替代的实施例中,存储器验证单元300在设置“开始测试”标记之后,在不具有处理器的帮助的情况下,还是生成用于实现存储器验证的单独的写入命令。
[0045]地址确定逻辑360可以解析或以其它方式处理一个或多个寄存器310中的此类信息,以得到例如地址范围中的多个地址,每个地址针对一个或多个存储设备中的不同位置。另外,一个或多个寄存器310可以包括信息确定逻辑370利用其来生成要提供给存储器写入逻辑330的数据值的参考信息。以说明并非限制的方式,一个或多个寄存器310可以包括标识或以其它方式描述一个或多个数据值、数据值的一个或多个序列、用于生成数据值的一个或多个规则或规范和/或等的信息。例如,提供给存储器写入逻辑330的数据值可以基于存储器地址来生成(例如,使用存储器地址的功能映射或散列、通过从初始种子值算出和/或等)。另外,一个或多个寄存器310可以包括存储器验证代理300的检验逻辑380可以利用其来可选地回读并验证由存储器写入逻辑330写入到存储器的数据值的标记和参考信息。以说明并非限制的方式,用户可以可选地设置寄存器310中的标记值,以使得检验逻辑380能够回读并检验由存储器写入逻辑330写入到存储器120的包括其对应的误差校正值的所有的数据值是正确且一致的。在某些实施例中,存储器验证代理300不包括检验逻辑380的功能。
[0046]在一个实施例中,存储器验证代理300可以由用户可选地启用或禁用(例如,通过对一个或多个寄存器310中的标记的设置),以回读并检验数据通过存储器验证写入被正确地写入到存储器。在从低功率状态转移之后,此类存储器检验可以例如被用来对存储器完整性进行测试(即,用来保证存储位置仍然处于良好的操作状况)。例如,存储器验证可以包括以确定性(非随机)的方式(例如,通过访问描述用于确定地址和/或数据信息的确定性过程的信息)来执行数据写入,其中此类数据能够使用预定义的算法来检验。以说明并非限制的方式,可以利用与该存储器地址的功能映射对应的相应数据值来对多个地址位置中的每个进行写入一一例如,在一种简单的情况下,其中将值0x0写入到存储位置0x0,将值0x4写入到存储位置0x4中,…,将值OxN写入到存储位置OxN等。在后续的存储器检验阶段期间,所期望的数据值可以由存储器验证代理300使用相同的功能映射算法来重新计算,并且后续地与从存储器中为多个地址位置中的每个位置所读取的实际值进行比较。
[0047]在一个实施例中,存储器验证代理300包括中断或以其它方式向处理器(诸如处理单元105)发信号通知存储器验证完成的(例如,控制逻辑320中的)电路逻辑。在此类中断之前,存储器验证代理300的存储器验证操作可以与处理器的不需要访问存储器的被分开的操作并行地进行。此类中断信号可以例如使得处理器能够在等待存储器验证完成时,与存储器验证并行地执行其它处理任务(例如,在存储器不必不断地针对其完成状态而轮询存储器验证代理300的情况下)。在一个实施例中,用户可以能够选择性地配置存储器验证代理300,以在所有的存储器验证写入(并且可选地,所有的存储器检验)完成之后提供此类中断。
[0048]图4是图示了根据实施例的用于提供存储器验证的方法400的某些元素的流程图。可以例如在具有存储器验证代理300的一些或所有的特征的代理处(例如,在与计算机平台的处理器分离的该计算机平台的代理处)执行方法400。在一个实施例中,为诸如计算机平台100之类的系统中的存储器验证而提供方法400。
[0049]在410处,方法400可以包括存储器验证代理检测指示计算机平台从第一功率状态的转移的信号,其中计算机平台的存储设备中的数据被在第一功率状态期间退化。所检测的信号可以例如由存储器控制器的外部逻辑、由处理器、由功率管理单元、和/或由计算机平台的某一其它代理来直接或间接地提供。
[0050]响应于检测到的信号,在420处,方法400可以执行对存储设备的多个可寻址位置的多个写入。420处的多个写入可以例如改写一个或多个存储设备的多个可寻址位置中的任何和所有的潜在无效信息。例如,420处的多个写入可以改写先前潜在地处于不确定的逻辑状态的存储单元。在某些实施例中,420处的多个写入可以进一步写入误差校正值,其对应于也通过420处的多个写入而写入到存储器的其它信息并且对于所述其它信息而言是准确的。
[0051]420处的多个写入中的每个可以例如响应于410处检测到的信号。例如,410处检测到的信号可以使 代理自动地生成多个写入命令,每个写入命令针对多个写入的相应一个。此类多个写入命令的生成可以包括该代理生成或以其它方式确定要被不同地包括在多个写入命令的相应命令中的写入命令信息。
[0052]在一个实施例中,生成或以其它方式确定此类写入命令信息可以在一个或多个方面独立于来自处理器的至少某些类型的通信。以说明并非限制的方式,代理可以确定此类写入命令信息独立于来自处理器的任何通信(例如,至少是继所指示的功率状态转移之后的任何通信),所述处理器指定要被写入的特定信息以保证对存储器中的可寻址位置的存储器验证。可替代地或另外,代理可以确定此类写入命令信息独立于来自处理器的任何通信(例如,至少是继所指示的功率状态转移之后的任何通信),所述处理器指定为存储器验证而要将信息写入到的存储器中的位置的地址。在一个实施例中,写入命令信息可以基于在对于独立于计算机平台的处理器的该代理的控制逻辑而言是可访问的储存库(例如,诸如一个或多个寄存器310)中存储的参考信息来确定。在一个实施例中,可以在410处所检测的功率状态转移之前,向储存库提供一些或所有的此类参考信息。
[0053]在一个实施例中,420处的多个写入可以包括对多个可寻址位置的最早的写入。以说明并非限制的方式,可以执行420处的多个写入以初始化存储器,以供后续加载固件接口代码、选项ROM代码、启动代码、操作系统代码和/或等之一。
[0054]对于420处的多个写入中的一个或多个而言,存储器验证代理可以放弃从存储器中回读由此被写入的该信息——例如,其中此类回读操作原本被执行以验证此类写入的成功。例如,存储器验证代理可以在420处的多个写入之一中包括存储器要避免实现此类回读的互逆通信的指示。可替代地或另外,存储器验证代理可以确定要放弃发送明确地请求此类互逆通信来实现回读的消息。
[0055]本领域一般技术人员将根据本文的讨论而领会:某些实施例不同地包括互逆方法,针对方法400的互逆方法,其中此类互逆方法由代理(例如,中央处理单元)来执行以向存储器管理代理发送由方法400在410处所检测的信号。此类互逆方法可以例如通过由处理器所运行的软件指令来执行。以下所讨论的图5和6的元素图示了两种此类互逆方法的特征。要理解的是,各种其它方法中的任何一个可以根据不同的实施例来执行一例如,由各种其它平台代理中的任何一个。
[0056]图5是图示了根据实施例的用于将软件指令加载到经验证的存储器中的方法500的流程图。方法500可以例如由具有计算机平台100的一些或所有的特征的系统来执行。
[0057]在一个实施例中,方法500作为包括将存储器从特定功率状态转移的计算机平台的启动、唤醒、或其它过程的部分来执行。在此类功率状态期间,在计算机平台的易失性存储器中存储的信息可以被允许退化。以说明并非限制的方式,此类功率状态可以包括原本维持一个或多个存储设备的存储单元中的电荷电平的非活动刷新机制。可替代地或另外,此类功率状态可以包括原本保证奇偶校验值、散列值、和或其它误差校正值对于在存储器中存储的对应信息而言保持最新的非活动误差检测和/或误差校正机制。
[0058]在510处,方法500可以包括取出自通电事件以来的第一指令的平台的处理器(例如,在处理单元105中)。方法500可以包括取出510之前的附加操作(未示出),诸如将处理器带出重置、确保功率轨是稳定的、配置处理器的一个或多个寄存器和/或等的一个或多个处理器初始化操作。
[0059]510处的取出可以例如针对处理器将响应于RESET (重置)事件而取出的代码的第一行,诸如用户点击“Reset”或其它此类按钮以触发功率转移。以说明并非限制的方式,在510处可以从计算机平台的EEPR0M、闪速驱动器或其它非易失性存储设备的一些预定义的地址(例如,OxFFFFO)中取出第一指令。例如,处理器可以被硬连线或以其它方式配置成从具有预定义地址的存储位置中缺省地取出第一指令。在一个实施例中,510处的第一处理器指令定义或以其它方式确定向要由处理器所运行的软件的跳转。某些实施例不限于要由处理器所运行的特定类型的软件(例如,固件接口代码、OS代码、远程启动代码或其它指令)。
[0060]基于第一处理器指令,在520处,方法500可以实现向软件的起始地址的跳转。然而,某些实施例不限于该方面。例如,在另一个实施例中,此类软件的起始地址可以存储在510处所取出的指令中。处理器可以至少最初从非易失性存储中检索用于此类软件的指令(例如,在计算机平台的存储设备中的一些可寻址位置被置于已知有效状态之前)。
[0061]继在520处跳转到起始软件地址之后,可以执行方法500的一个或多个操作515——例如,响应于处理器运行此类软件的指令。后续的操作515可以包括执行用于计算机平台的一个或多个芯片集组件(例如,不同于存储设备)的初始化操作530。另外地或可替代地,在540处,后续操作515可以包括执行一个或多个其它非存储器相关的软件功能。操作515的特征仅是说明性并且不限于某些实施例。
[0062]在550处,方法500可以进一步包括执行存储器初始化,来为将一个或多个可寻址存储位置从潜在无效状态转移到已知有效状态做准备。存储器初始化550可以包括例如确定存储器验证代理和存储设备之间的通信被启用,确定对存储器验证代理和/或存储设备的功率输送是稳定的,并且确保用于开始对存储设备的读取和/或写入的任何其它要求被满足。
[0063]在550处的初始化之后,在560处,方法500可以利用向维持在存储设备中存储的信息的完整性的功率状态的转移的某一指示来向存储器验证代理发信号通知。作为响应,存储器验证代理开始存储器验证操作一例如,根据方法400的一些或所有的特征。常规的系统通电序列依赖于平台处理器生成并传送写入命令以执行存储器验证。然而,此类方法占据处理器周期来实现此类存储器验证。此外,在来自处理器的信息能够到达存储设备之前,其可能必须通过处理器自身的高速缓存和/或一个或多个中间通信总线。此外,存储器控制器单元通常必须在对存储设备自身写入之前首先拦截处理器写入命令。反之,存储器验证模块可以具有与存储设备相对较短的通信路径,并且可以为一个或多个其它初始化过程而空出处理器周期。
[0064]在存储器验证已经开始之后,在570处,方法500可以执行测试以检查此类存储器验证操作的结束。570处的测试可以响应于指示存储器验证还未完成的测试结果而重复。在一个可替代的实施例中,在软件过程不必针对存储器验证操作的完成进行轮询的情况下,信号或中断可以由存储器验证代理来提供。在根据测试570检测到存储器验证已经完成的指示之后,在580处,方法500可以将一个或多个软件指令拷贝到存储器中(例如,到已经从潜在无效状态转移到已知有效状态的位置中)。
[0065]在580处被拷贝到存储器中之后,如与处理器从非易失性存储中检索此类指令相t匕,软件指令(例如,固件接口代码、OS代码、启动代码和/或等)可被处理器快得多地访问。
[0066]图6是图示了根据实施例的用于将软件指令加载到经验证的存储器中的方法600的流程图。方法600可以例如由具有计算机平台100的一些或所有的特征的系统来执行。
[0067]在一个实施例中,方法600作为包括将存储器从特定功率状态转移的启动、唤醒、或其它过程的部分来执行。在此类功率状态期间,在计算机平台的易失性存储器中存储的信息可以被允许退化。
[0068]在605处,方法600可以包括取出自通电事件以来的第一指令的平台的处理器(例如,在处理单元105中)。方法600可以包括取出605之前的附加操作(未示出),诸如将处理器带出重置、确保功率轨是稳定的、配置处理器的一个或多个寄存器和/或等的一个或多个处理器初始化操作。
[0069]605处的取出可以例如针对处理器将响应于RESET事件而取出的代码的第一行,诸如用户点击“Reset”或其它此类按钮以触发功率转移。基于第一处理器指令,在610处,方法600可以实现向软件的起始地址的跳转。然而,某些实施例不限于该方面。例如,在另一个实施例中,此类软件的起始地址可以存储在605处所取出的指令中。处理器可以至少最初从非易失性存储中检索用于此类软件的一些指令(例如,在计算机平台的存储设备中的一些可寻址位置被置于已知有效状态之前)。
[0070]继跳转到起始软件地址610之后,在615处,方法600可以执行存储器初始化,来为将一个或多个可寻址存储位置从潜在无效状态转移到已知有效状态做准备。在一个实施例中,在其它初始化操作之前(例如,在任何芯片集组件(例如,不同于讨论中的存储设备的组件)的初始化之前),开始存储器初始化615。存储器初始化615可以包括例如确定存储器验证代理和存储设备之间的通信被启用,确定对存储器验证代理和存储设备的功率输送是稳定的,和/或确保用于开始对存储设备的写入的任何其它条件被满足。在615处的初始化之后,在620处,方法600可以利用向将维持在存储设备中存储的信息的完整性的功率状态的转移的某一指示来向存储器验证代理发信号通知。作为响应,在650处,存储器验证代理(MVA)可以执行存储器验证操作一例如,根据方法400的一些或所有的特征。
[0071]650处的存储器有效操作的执行可以例如与跟在620处的存储器验证代理的发信号通知之后的处理器操作分开。以说明并非限制的方式,方法600可以包括由处理器所执行的一个或多个操作625——例如,响应于处理器运行其从非易失性存储中检索的指令。操作625可以例如包括执行用于计算机平台的一个或多个芯片集组件(例如,不同于在650处所验证的存储设备的组件)的初始化操作630。初始化操作630可以例如包括主处理器设置或以其它方式确定USB控制器、外围组件互连(PCI)和/或PCIe控制器、串行高级技术附件(SATA)控制器、网络控制器和/或等的配置。另外地或可替代地,在635处,后续操作625可以包括执行一个或多个其它非存储器相关的软件功能。操作625仅是说明性并且不限于某些实施例。
[0072]在存储器验证代理所进行的存储器验证已经开始之后,在640处,方法600可以确定此类存储器验证操作的结束。640处的确定可以例如包括针对存储器验证已经完成的指示进行重复地测试。在一个实施例中,640处的确定基于存储器验证代理,在660处,将存储器验证的完成发信号通知给存储器控制器的其它逻辑和/或在处理器上运行的过程。
[0073]在640处的确定之后,在645处,方法600可以将一个或多个软件指令拷贝到位置存储器(例如,存储器验证已经从潜在无效状态转移到已知有效状态的位置)中。在645处被拷贝到存储器中之后,如与处理器从非易失性存储中检索此类指令相比,软件指令(例如,固件接口代码、OS代码、启动代码和/或等)可被处理器快得多地访问。
[0074]本文描述了用于访问计算机存储器的技术和结构。在以上描述中,为了解释的目的,阐述了许多特定细节,以便提供对某些实施例的透彻理解。然而,对于本领域技术人员而言将明显的是,能够在不具有这些特定细节的情况下实施某些实施例。在其它实例中,结构和设备以框图形式来示出,以避免使描述晦涩难懂。
[0075]本说明书中的对“一个实施例”或“实施例”的引用意指结合实施例所描述的特定的特征、结构、或特性被包括在本发明的至少一个实施例中。本说明书中的各处中的短语“在一个实施例中”的出现不必都指代相同的实施例。
[0076]本文的详细描述的一些部分按照对计算机存储器内的数据位的操作的符号表示和算法来呈现。这些算法描述和表示是由计算领域技术人员用来向本领域其他技术人员最高效地传达其工作实质的手段。在本文中并且通常算法被构思成导致期望结果的步骤的前后一致的序列。所述步骤是需要物理操纵物理量的步骤。通常但未必,这些量采取能够被存储、传递、合并、比较、和以其它方式操纵的电或磁信号的形式。主要由于共同使用的原因,有时已经证明很方便地将这些信号称为位、值、元素、符号、字符、项、数字等。
[0077]然而,应该牢记所有的这些和类似的项要与适当的物理量相关联并且仅是应用于这些量的方便标注。除非另有明确陈述,如根据本文的讨论而明显的,要领会的是,遍及描述,利用诸如“处理”或“计算”或“运算”或“确定”或“显示”等之类的术语的讨论指代计算机系统、或类似的电子计算设备的动作和过程,所示动作和过程将计算机系统的寄存器和存储器内的表示为物理(电子)量的数据操纵并转换成计算机系统存储器或寄存器或其它此类信息存储、传输或显示设备内的类似地表示为物理量的其它数据。
[0078]某些实施例还涉及用于执行本文的操作的装置。该装置可以被特别地构造用于所需的目的,或者其可以包括由在计算机中存储的计算机程序来选择性地激活或重新配置的通用计算机。此类计算机程序可以存储在计算机可读存储介质中,诸如但不限于任何类型的盘,包括软盘、光盘、CD-ROM、和磁光盘、只读存储器(ROM)、诸如动态RAM (DRAM)之类的随机存取存储器(RAM)、EPROM、EEPR0M、磁或光卡、或者适于存储电子指令和耦合到计算机系统总线的任何类型的介质。
[0079]本文所呈现的算法和显示不与任何特定的计算机或其它装置固有地相关。可以利用根据本文的教导的程序来使用各种通用系统,或者可以证明方便构造更专门的装置来执行所需的方法步骤。用于各种这些系统的所需结构将根据本文的描述而出现。另外,某些实施例不参考任何特定的编程语言来描述。将领会的是,各种编程语言可以被用来实现如本文所描述的此类实施例的教导。
[0080]除了本文所描述的之外,可以在不背离其范围的情况下对所公开的实施例和其实现做出各种修改。因而,本文的说明和示例应该在说明性并且非局限性意义上解释。本发明的范围应该仅通过参考跟着的权利要求来度量。
【权利要求】
1.一种装置,包括: 存储器验证代理,操作在计算机平台中,其中所述存储器验证代理耦合到计算机平台的处理器,所述存储器验证代理包括: 写入逻辑,访问所述计算机平台的存储设备;以及 控制逻辑,检测被发送到所述存储器验证代理的信号,所述信号指示所述计算机平台从第一功率状态的转移,其中当所述计算机平台处于所述第一功率状态时,所述计算机平台的存储设备中的数据被允许退化,所述控制逻辑进一步使所述写入逻辑执行每个针对所述存储设备的多个可寻址位置的相应一个的多个写入,所述多个写入中的每个响应于检测到的信号,其中所述多个写入包括继从所述第一功率状态的转移之后对所述多个可寻址位置的最早的写入。
2.根据权利要求1所述的装置,其中所述装置包括存储器控制器,并且其中所述存储器验证代理驻存于所述存储器控制器中。
3.根据权利要求1所述的装置,其中所述写入逻辑执行所述多个写入包括: 所述写入逻辑生成多个写入命令,其中所述存储器验证代理确定要在所述写入命令的相应命令中包括的命令信息,其中对所述命令信息的确定与所述处理器的操作分开。
4.根据权利要求3所 述的装置,所述存储器验证代理确定所述命令信息包括所述存储器验证代理确定要被写入到所述存储设备的位置的值,其中所述存储器验证代理确定所述值独立于所述处理器在所述功率状态转移之后对所述存储器验证代理指定所述值。
5.根据权利要求4所述的装置,其中所述存储器验证代理确定所述值包括以下之一: 随机数发生器提供所述值;以及 所述存储器验证代理访问描述用于生成所述值的确定性过程的信息。
6.根据权利要求4所述的装置,其中所述存储器验证代理确定所述命令信息进一步包括所述存储器验证代理确定与所述值对应的误差校正值。
7.根据权利要求3所述的装置,其中所述存储器验证代理确定所述命令信息包括所述存储器验证代理确定所述存储器的位置的地址,其中对所述地址的确定独立于所述处理器在所述功率状态转移之后对所述存储器验证代理指定所述地址。
8.一种方法,包括: 在计算机平台的存储器验证代理处检测被发送到所述存储器验证代理的信号,所述存储器验证代理耦合到所述计算机平台的处理器,所述信号指示所述计算机平台从第一功率状态的转移,其中当所述计算机平台处于所述第一功率状态时,所述计算机平台的存储设备中的数据被允许退化;以及 利用所述存储器验证代理来执行每个针对所述存储设备的多个可寻址位置的相应一个的多个写入,所述多个写入中的每个响应于检测到的信号,其中所述多个写入包括继从所述第一功率状态的转移之后对所述多个可寻址位置的最早的写入。
9.根据权利要求8所述的方法,其中执行所述多个写入包括: 生成多个写入命令,包括确定要在所述写入命令的相应命令中包括的命令信息,其中确定所述命令信息与所述处理器的操作分开。
10.根据权利要求9所述的方法,其中确定所述命令信息包括确定要被写入到所述存储设备的位置的值,其中确定所述值独立于所述处理器在所述功率状态转移之后对所述存储器验证代理指定所述值。
11.根据权利要求10所述的方法,确定所述值包括以下之一: 随机数发生器提供所述值;以及 访问描述用于生成所述值的确定性过程的信息。
12.根据权利要求10所述的方法,其中确定所述命令信息进一步包括确定与所述值对应的误差校正值。
13.根据权利要求9所述的方法,其中确定所述命令信息包括确定所述存储器的位置的地址,其中确定所述地址独立于所述处理器在所述功率状态转移之后对所述存储器验证代理指定所述地址。
14.根据权利要求8所述的方法,其中所述多个写入在所述功率状态转移之后在任何将固件接口代码或启动代码加载到所述存储设备中之前。
15.一种计算机系统,包括: 处理器,执行一个或多 个初始化过程,以便支持由所述计算机系统从第一功率状态的转移; 存储器验证代理,耦合到所述处理器,所述存储器验证代理包括: 写入逻辑,访问计算机平台的存储设备; 控制逻辑,检测从所述处理器发送到所述存储器验证代理的信号,所述信号指示所述计算机平台从所述第一功率状态的转移,其中当所述计算机平台处于所述第一功率状态时,所述计算机平台的存储设备中的数据被允许退化,所述控制逻辑进一步使所述写入逻辑执行每个针对所述存储设备的多个可寻址位置的相应一个的多个写入,所述多个写入中的每个响应于检测到的信号,其中所述多个写入包括继从所述第一功率状态的转移之后对所述多个可寻址位置的最早的写入;以及 无线网络接口,包括在所述计算机系统和网络之间交换通信的一个或多个天线。
16.根据权利要求15所述的计算机系统,进一步包括存储器控制器,并且其中所述存储器验证代理驻存于所述存储器控制器中。
17.根据权利要求15所述的计算机系统,其中所述写入逻辑执行所述多个写入包括: 所述写入逻辑生成多个写入命令,其中所述存储器验证代理确定要在所述写入命令的相应命令中包括的命令信息,其中对所述命令信息的确定与所述处理器的操作分开。
18.根据权利要求17所述的计算机系统,所述存储器验证代理确定所述命令信息包括所述存储器验证代理确定要被写入到所述存储设备的位置的值,其中所述存储器验证代理确定所述值独立于所述处理器在所述功率状态转移之后对所述存储器验证代理指定所述值。
19.根据权利要求18所述的计算机系统,其中所述存储器验证代理确定所述值包括以下之一: 随机数发生器提供所述值;以及 所述存储器验证代理访问描述用于生成所述值的确定性过程的信息。
20.根据权利要求17所述的计算机系统,其中所述存储器验证代理确定所述命令信息包括所述存储器验证代理确定所述存储器的位置的地址,其中对所述地址的确定独立于所述处理器在所述功率状态转移之后对所述存储器验证代理指定所述地址。
【文档编号】G06F13/14GK103930878SQ201180074896
【公开日】2014年7月16日 申请日期:2011年11月17日 优先权日:2011年11月17日
【发明者】周原祥 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1