用于反向存储器备份的方法和装置与流程

文档序号:11161320阅读:1041来源:国知局
用于反向存储器备份的方法和装置与制造工艺

技术领域

本发明总体涉及计算机处理器领域。更具体地,本发明涉及用于反向存储器备份(sparing)的方法和装置。

相关技术描述

动态随机存取存储器(DRAM)被组织成行与列,并且通过称为“选通(strobes)”的电信号被访问,电信号沿着行被传送到列。为了访问存储器,存储器控制器激活行访问选通线以指示将在其中找到数据的行(高位),并且列访问选通指定列(低位)。然后将数据提供到输出线并且在下一时钟周期上提供到数据的目的地。

DRAM器件具有高失效率。当前的存储器架构解决方案使用“备份”技术以通过物理地标出失效区来降低存储器子系统的年服务率(ASR)。存储器以未失效状态开始。硬件和/或固件标识硬DRAM失效并且调用备份资源以标出失效,将存储器移到n失效状态。后续的硬失效可以调用附加的备份,如果可用的话,其将存储器移到n+1失效状态。这在本说明书中被称为“前向”,或更一般地在工业中简单地被称为“备份”。在使用所有前向备份资源之后,必须发起服务调用。

附图说明

结合以下附图,从以下具体实施方式中可获得对本发明更好的理解,其中:

图1A是示出根据本发明的实施例的示例性有序取出、解码、引退流水线以及示例性寄存器重命名的乱序发布/执行流水线两者的框图;

图1B是示出根据本发明的各实施例的要包括在处理器中的有序取出、解码、引退核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图;

图2是根据本发明的实施例的具有集成的存储器控制器和图形器件的单核处理器和多核处理器的框图。

图3示出根据本发明的一个实施例的系统的框图;

图4示出根据本发明的实施例的第二系统的框图;

图5示出根据本发明的实施例的第三系统的框图;

图6示出根据本发明的实施例的芯片上系统(SoC)的框图;

图7示出根据本发明的实施例的、对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图;

图8示出包括具有存储器备份逻辑的存储器控制器的处理器架构的一个实施例;

图9示出存储器备份等级的层次结构,每个等级具有不同的粒度;

图10示出存储器控制器中的将系统地址解码为物理存储器地址的示例性地址解码器;

图11示出在双列直插存储器模块(DIMM)的前部和后部上的存储器器件;

图12A-C示出包括多个存储器区块的存储器器件和用于将区块物理地映射到总线的不同方法的一个实施例;

图13A示出根据本发明的一个实施例的用于写入到备份存储器器件的存储器备份逻辑;

图13B示出根据本发明的一个实施例的用于读取备份存储器器件的存储器备份逻辑;

图14A-C示出一个实施例,其中以第一粒度和第二粒度执行前向存储器备份,被反向存储器备份操作分开;以及

图15示出根据本发明的一个实施例的方法。

具体实施方式

在下面的描述中,为了进行解释,阐述了众多具体细节以便提供对以下描述的本发明的多个实施例的透彻理解。然而,对本领域技术人员显而易见的是,可以在没有这些具体细节中的一些细节的情况下实施本发明的各实施例。在其他实例中,公知的结构和设备以框图形式示出,以避免使本发明的多个实施例的基本原理模糊。

示例性处理器架构和数据类型

图1A是示出根据本发明的各实施例的示例性有序取出、解码、引退流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图1B是示出根据本发明的各实施例的要包括在处理器中的有序取出、解码、引退核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图1A-B中的实线框示出了流水线和核的有序部分,而可选增加的虚线框示出了寄存器重命名的、乱序发布/执行流水线和核。

在图1A中,处理器流水线100包括取出级102、长度解码级104、解码级106、分配级108、重命名级110、调度(也称为分派或发布)级112、寄存器读取/存储器读取级114、执行级116、写回/存储器写入级118、异常处理级122以及提交级124。

图1B示出处理器核190,其包括耦合到执行引擎单元150的前端单元130,执行引擎单元150和前端单元130两者都耦合到存储器单元170。核190可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,核190可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等等。

前端单元130包括耦合到指令高速缓存单元134的分支预测单元132,指令高速缓存单元134耦合到指令转换后备缓冲器(TLB)136,指令转换后备缓冲器136耦合到指令取出单元138,指令取出单元138耦合到解码单元140。解码单元140(或解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元140可使用各种不同的机制来实现。合适的机制的示例包括但不仅限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等等。在一个实施例中,核190包括(例如,在解码单元140中或以其他方式在前端单元130内的)用于存储某些宏指令的微代码的微代码ROM或其他介质。解码单元140耦合至执行引擎单元150中的重命名/分配器单元152。

执行引擎单元150包括耦合到引退单元154的重命名/分配器单元152和一个或多个调度器单元的集合156。调度器单元156表示任意数量的不同调度器,包括预留站、中心指令窗等。调度器单元156耦合到物理寄存器组单元158。每个物理寄存器组单元158表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器组单元158包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。物理寄存器组单元158由隐退单元154重叠以示出可实现寄存器重命名和乱序执行的各种方式(例如,使用重排序缓冲器和引退寄存器组;使用未来文件(future file)、历史缓冲器和引退寄存器组;使用寄存器映射和寄存器池,等等)。引退单元154和物理寄存器组单元158耦合到执行群集160。执行群集160包括一个或多个执行单元162的集合和一个或多个存储器访问单元164的集合。执行单元162可以对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能集的数个执行单元,但是其他实施例可以仅包括一个执行单元或全部都执行所有功能的多个执行单元。调度器单元156、物理寄存器组单元158和执行群集160被示为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,各自具有其自身的调度器单元、物理寄存器组单元和/或执行群集的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线——以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集具有存储器访问单元164的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行的,而其余的是有序的。

存储器访问单元的集合164耦合到存储器单元170,该存储器单元170包括耦合到数据高速缓存单元174的数据TLB单元172,其中数据高速缓存单元174耦合到第2级(L2)高速缓存单元176。在一个示例性实施例中,存储器访问单元164可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元170中的数据TLB单元172。指令高速缓存单元134还耦合到存储器单元170中的第二级(L2)高速缓存单元176。L2高速缓存单元176耦合到一个或多个其他层级的高速缓存,并最终耦合到主存储器。

作为示例,示例性寄存器重命名的乱序发布/执行核架构可以如下方式实现流水线100:1)指令取出138执行取出和长度解码级102和104;2)解码单元140执行解码级106;3)重命名/分配器单元152执行分配级108和重命名级110;4)调度器单元156执行调度级112;5)物理寄存器组单元158和存储器单元170执行寄存器读取/存储器读取级114;执行群集160执行执行级116;6)存储器单元170和物理寄存器组单元158执行写回/存储器写入级118;7)各单元可牵涉到异常处理级122;以及8)引退单元154和物理寄存器组单元158执行提交级124。

核190可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON之类的可选的附加扩展)),其中包括本文中所描述的指令。在一个实施例中,核190包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2和/或下文描述的一些形式的通用向量友好指令格式(U=0和/或U=1))的逻辑,从而使用紧缩数据来执行由许多多媒体应用使用的操作。

应当理解,核可支持多线程操作(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程操作,各种方式包括时分多线程操作、同步多线程操作(其中,单个物理核为物理核正在同步进行多线程操作的多个线程中的每一个线程提供逻辑核)或其组合(例如,时分取出和解码以及此后诸如利用超线程技术的同步多线程操作)。

尽管在乱序执行的上下文中描述了寄存器重命名,但是,应当理解,寄存器重命名可以用于有序架构中。尽管所示出的处理器的实施例还包括分开的指令和数据高速缓存单元134/174以及共享L2高速缓存单元176,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个层级的内部高速缓存。在一些实施例中,系统可以包括内部高速缓存以及在核和/或处理器外部的外部高速缓存的组合。或者,全部高速缓存都可以在核和/或处理器的外部。

图2是根据本发明的各实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器200的框图。图2中的实线框示出具有单个核202A、系统代理210、一个或多个总线控制器单元216的集合的处理器200,而虚线框的可选附加示出具有多个核202A-N、系统代理单元210中的一个或多个集成存储器控制器单元214的集合以及专用逻辑208的替代处理器200。

因此,处理器200的不同实现可包括:1)CPU,其中,专用逻辑208是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核202A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中,核202A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中,核202A-N是大量通用有序核。因此,处理器200可以是通用处理器、协处理器或专用处理器,专用处理器诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)或嵌入式处理器等。处理器可以实现在一个或多个芯片上。处理器200可以是一个或多个基板的部分,和/或可以使用数种工艺技术中的任何技术来将处理器1500实现在一个或多个基板上,数种工艺技术诸如,BiCMOS、CMOS或NMOS。

存储器层次结构包括核内的一个或多个层级的高速缓存,一组或一个或多个共享高速缓存单元206以及耦合到集成存储器控制器单元的集合214的外部存储器(未示出)。共享高速缓存单元的集合206可以包括一个或多个中级高速缓存,诸如,第2级(L2)、第3级(L3)、第4级(L4),或其他层级的高速缓存,末级高速缓存(LLC),和/或上述各项的组合。尽管在一个实施例中,基于环的互连单元212将集成图形逻辑208、共享高速缓存单元的集合206以及系统代理单元210/集成存储器控制器单元214互连,但替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,可维护一个或多个高速缓存单元206和核202A-N之间的一致性(coherency)。

在一些实施例中,核202A-N中的一个或多个能够进行多线程操作。系统代理210包括协调并操作核202A-N的那些组件。系统代理单元210可包括例如功率控制单元(PCU)和显示单元。PCU可以是或可包括用于调节核202A-N和集成图形逻辑208的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个从外部连接的显示器。

核202A-N在架构指令集方面可以是同构或异构的;也就是说,这些核202A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能仅能够执行该指令集的子集或不同的指令集。在一个实施例中,核202A-N是异构的并且包括下述“小型”核和“大型”核。

图3-6是示例性计算机架构的框图。本领域中已知的用于膝上型计算机、台式机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形器件、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般而言,能够涵盖本文中所公开的处理器和/或其他执行逻辑的多种系统和电子设备通常都是合适的。

现在参考图3,所示出的是根据本发明一个实施例的系统300的框图。系统300可以包括一个或多个处理器310、315,这些处理器耦合到控制器中枢320。在一个实施例中,控制器中枢320包括图形存储器控制器中枢(GMCH)390和输入/输出中枢(IOH)350(其可以在分开的芯片上);GMCH 390包括存储器和图形控制器,存储器340和协处理器345耦合到该存储器和图形控制器;IOH 350将输入/输出(I/O)设备360耦合到GMCH 390。或者,存储器和图形控制器中的一个或两者可以被集成在处理器内(如本文中所描述的),存储器340和协处理器345直接耦合到处理器310以及控制器中枢320,该控制器中枢与IOH 350处于单个芯片中。

在图3中以虚线表示附加的处理器315的任选的性质。每一个处理器310、315可包括本文中描述的处理核中的一个或多个,并且可以是处理器200的某一版本。

存储器340可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢320经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口或者类似的连接395与处理器310、315进行通信。

在一个实施例中,协处理器345是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU或嵌入式处理器,等等。在一个实施例中,控制器中枢320可以包括集成图形加速器。

在物理资源310、315之间可以存在包括架构、微架构、热、和功耗特征等的一系列品质度量方面的各种差异。

在一个实施例中,处理器310执行控制通用类型的数据处理操作的指令。协处理器指令可嵌入在这些指令中。处理器310将这些协处理器指令识别为应当由附连的协处理器345执行的类型。因此,处理器310在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器345。协处理器345接受并执行所接收的协处理器指令。

现在参考图4,所示为根据本发明的实施例的更具体的第一示例性系统400的框图。如图4所示,多处理器系统400是点对点互连系统,并且包括经由点对点互连450耦合的第一处理器470和第二处理器480。处理器470和480中的每一个都可以是处理器200的某一版本。在本发明的一个实施例中,处理器470和480分别是处理器310和315,而协处理器438是协处理器345。在另一实施例中,处理器470和480分别是处理器310和协处理器345。

处理器470和480示出为分别包括集成存储器控制器(IMC)单元472和482。处理器470还包括点对点(P-P)接口476和478作为其总线控制器单元的部分;类似地,第二处理器480包括P-P接口486和488。处理器470、480可以经由使用点对点(P-P)接口电路478、488的P-P接口450来交换信息。如图4所示,IMC 472和482将处理器耦合到相应的存储器,即,存储器432和存储器434,它们可以是本地连接到相应的处理器的主存储器的部分。

处理器470、480可各自经由使用点对点接口电路476、494、486、498的各个P-P接口452、454与芯片组490交换信息。芯片组490可以任选地经由高性能接口439与协处理器438交换信息。在一个实施例中,协处理器438是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU或嵌入式处理器,等等。

共享高速缓存(未示出)可被包括在任一处理器中,或在两个处理器的外部但经由P-P互连与这些处理器连接,从而如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在该共享的高速缓存中。

芯片组490可经由接口496耦合至第一总线416。在一个实施例中,第一总线416可以是外围组件互连(PCI)总线,或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。

如图4所示,各种I/O设备414可连同总线桥418被耦合到第一总线416,总线桥418将第一总线416耦合到第二总线420。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器之类的一个或多个附加处理器415耦合到第一总线416。在一个实施例中,第二总线420可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线420,在一个实施例中,各种设备包括例如,键盘和/或鼠标422、通信设备427以及存储单元428,该存储单元428诸如可包括指令/代码和数据430的盘驱动器或其他大容量存储设备。此外,音频I/O 424可以耦合至第二总线420。注意,其他架构是可能的。例如,系统可实现多分支总线或者其他此类架构,而不是图4中的点对点架构。

现在参考图5,所示为根据本发明的实施例的更具体的第二示例性系统500的框图。图4和图5中的相同部件用相同附图标记表示,并从图5中省去了图4中的某些方面,以避免使图5的其他方面变得模糊。

图5示出处理器470、480可分别包括集成存储器和I/O控制逻辑(“CL”)472和482。因此,CL 472、482包括集成存储器控制器单元,并包括I/O控制逻辑。图5示出不仅存储器432、434耦合到CL 472、482,而且I/O设备514也耦合到控制逻辑472、482。传统I/O设备515耦合至芯片组490。

现在参考图6,所示出的是根据本发明的实施例的SoC 600的框图。图2中的类似的元素具有同样的参考编号。另外,虚线框是更先进的SoC的可选特征。在图6中,互连单元602耦合到:应用处理器610,其包括一个或多个核的集合202A-N以及共享高速缓存单元206;系统代理单元210;总线控制器单元216;集成存储器控制器单元214;一组或一个或多个协处理器620,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元630;直接存储器存取(DMA)单元632;以及用于耦合至一个或多个外部显示器的显示单元640。在一个实施例中,协处理器620包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器或嵌入式处理器,等等。

本文公开的机制的各实施例可以实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。

可以将诸如图4中所示出的代码430之类的程序代码应用于输入指令,以执行本文中所描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。

程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制在范围上不限于任何特定的编程语言。在任一情形下,该语言可以是编译语言或解释语言。

至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该机器可读介质表示处理器中的各种逻辑,当由机器读取该指令时,该指令使该机器制作用于执行本文所述的技术的逻辑。可将被称为“IP核”的此类表示存储在有形的机器可读介质上,并将其提供给各种客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。

此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态的有形安排,其包括存储介质,诸如,硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。

因此,本发明的各实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如,硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。此类实施例还可以被称为程序产品。

在一些情况下,可以使用指令转换器来将指令从源指令集转换为目标指令集。例如,指令转换器可以将指令转换(例如,使用静态二进制变换、包括动态编译的动态二进制转换)、变形、仿真或以其他方式转换为要由核处理的一条或多条其他指令。指令转换器可以在软件、硬件、固件,或它们的组合中实现。指令转换器可以在处理器上,在处理器外,或者部分在处理器上且部分在处理器外。

图7是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但替代地可以在软件、固件、硬件或它们的各种组合中实现指令转换器。图7示出可以使用x86编译器704来编译高级语言702形式的程序以生成可由具有至少一个x86指令集核的处理器716原生地执行的x86二进制代码706。具有至少一个x86指令集核的处理器716表示能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的实质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器704表示用于生成x86二进制代码706(例如,目标代码)的编译器,该x86二进制代码706可利用或不利用附加的链路处理而在具有至少一个x86指令集核的处理器716上执行。类似地,图7示出可以使用替代的指令集编译器708来编译利用高级语言702的程序以生成可由不具有至少一个x86指令集核的处理器714(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集和/或执行加利福尼州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生地执行的替代的指令集二进制代码710。指令转换器712用于将x86二进制代码706转换成可以由不具有x86指令集核的处理器714原生地执行的代码。该转换后的代码不大可能与替代的指令集二进制代码710相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成通用操作,并且将由来自替代指令集的指令构成。因此,指令转换器712表示软件、固件、硬件或它们的组合,这些软件、固件、硬件或它们的组合通过仿真、模拟或任何其他过程允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码706。

用于反向存储器备份的方法和装置

当前的存储器控制器仅能在是“排”粒度的单一粒度备份,并且只在前向方向中备份。相反,以下描述的本发明的实施例能够以多个粒度进行存储器备份,例如:位、器件、高速缓存行、行、列、区块、排和双列直插存储器模块(DIMM)。这提出了在不同粒度之间移动失效状态的问题。在多个备份粒度可用的情况下,顺序硬失效可以揭示先前的备份决定是次优决定。

为了解决该问题,本发明的一个实施例能够不进行前向备份动作,称为“反向备份”。如本文中所使用的,反向备份是对失效状态后向的移动,即,从n+1失效状态到n失效状态。反向备份实现可靠性、可用性和可服务性(RAS)状态之间的前向和后向遍历,这样允许存储器控制器将存储器保持为在多个顺序DRAM失效之上的最优RAS状态。在仅前向备份的设计中,存储器不能被保持在最优RAS状态中,导致增加的服务成本。这使得本文中所描述的反向备份技术成为增加存储器可靠性并且降低OEM的服务成本的下一代RAS流的基本构建块。

如本文中所使用的,“前向备份”被定义为物理地移动来自存储器的失效区的数据,并将数据存储在新的位置中,其中将从新的位置而不是失效位置检索后续对该数据的访问。“反向备份”是将数据从新的位置物理地移动回到原始的失效位置。典型地,将在后续在更优粒度下前向备份的目的下完成反向备份。纠错码(ECC)技术纠正将数据临时移动回到失效位置引起的在反向备份和后续前向备份操作之间的中间错误。

如图8所示,本发明的实施例可以在其上实现的处理器架构可以包括多个核801-804,N和具有用于实现本文中所描述的前向/后向备份技术的存储器备份逻辑811的至少一个存储器控制器810。具体而言,如以下描述,存储器备份逻辑811包括用于执行前向存储器备份操作的前向存储器备份组件811a和用于执行反向存储器备份操作的反向存储器备份组件811b。存储器控制器810通过第一存储器通道815通信地耦合到第一组DIMM 820,并且通过第二存储器通道816通信地耦合到第二组DIMM 821。

尽管本文中所描述的DIMM、排(rank)、区块(bank)、器件、行(row)和列(column)的结构具体指代电子器件工程联合委员会维持的DDR(双数据率)存储器规范,其最新一代为DDR4,本发明的实施例可以并且将被应用到任何和所有存储器技术,包括但不限于可以驻留在处理器或处理器封装的内部和/或外部的DRAM、SRAM、相变存储器和闪存,仅列举数例。

每个存储器失效可被视为1)对特定区域有影响和2)对宽度(位的数量)有影响。DDR4的示例性区域尺寸层次结构在图9中示出,并且包括高速缓存行901、列902、行903、区块904、子排905、排906、DIMM 907和通道908,从最小到最大。因此,在该实施例中,可实现的最小单元是高速缓存行,具有单个存储器请求的尺寸,被单个系统地址寻址。

如图10所示,请求者1001(例如,核801-N中的一个核)生成的系统地址穿过存储器控制器810中的地址解码器1002,地址解码器1002将系统地址转换为物理地址以寻址数据驻留的存储器820-821中的物理位置。因此,可以将存储器中的任何特定区域定义为系统地址空间的特定子集和/或物理地址空间的特定子集以实现本文中所描述的备份技术。支持的备份区域的尺寸可以适应基础存储器技术的基本结构。

如图11所示,每个DIMM通常包括在其前侧1120上的第一存储器器件集合1101(例如,各个存储器芯片)和在其后侧1121上的第二存储器器件集合1121。在图11示出的示例中,DIMM的前侧和后侧上分别有8个存储器器件1101-1102(每个DIMM有总共16个存储器器件)。可以将存储器器件分配到“排”,在其中每个排共享与其他排相同的地址和数据总线。例如,在一些DIMM上,将在DIMM的前侧上的存储器器件的集合1101分配到排0,并且将在DIMM的后侧上的存储器器件的集合1102分配到排1。可以将所有存储器器件分配到在其他DIMM上的单一的排(例如,排0)。由于所有排共享相同的总线,在任何给定的时间只可以访问一个排,通常通过激活对应的排的芯片选择(CS)信号来指定。通过停用所有其他排的对应的CS信号来在操作期间停用所有其他排。DIMM通常被制造成每个模块具有至多四个排。

“排(rank)”中包括的芯片的数量基于图11示出的存储器器件1101-1102的每一个的位宽和DDR总线的尺寸。例如,如果总的DDR总线宽度为64位,并且每个芯片是4位宽(使用“X4”指定来指示)然后没有ECC,则X4无ECC的DIMM在排中需要16个存储器器件(16*4=64)。如果图11示出的DIMM是这种类型的DIMM,则在前侧1120和后侧1121上的所有16个芯片将被包括在同一排中。相反,在无ECC双排X8的DIMM中,芯片宽度是8位,则因此将在排中需要8个存储器器件(8x8=64)。因此,图11中的在DIMM 1120的前侧上的8个存储器器件1101将表示一个排(例如,排0),而在DIMM 1121的后侧上的8个存储器器件1102将表示另一个排(例如,排1)。对于ECC,为72位DDR总线增加附加8位。因此,X8 ECC DIMM将在排中需要9个器件(9*8=72),而X4 ECC DIMM将在排中需要18个器件(18*4=72)。

从排向下的粒度的下一等级包括单独的存储器器件(例如,8个存储器器件1101或1102中的一个),并且每个存储器器件包括存储器“区块(bank)”的集合。图12A示出一个特定示例,其中每个存储器器件1201包括8个存储器区块的集合1210。最后,可以使用“行”和“列”寻址每个单独区块1210的部分。在操作中,存储器控制器811生成的物理存储器地址的不同部分可以标识特定的通道DIMM、排、器件、区块、行和列。

如上所述,在本发明的一个实施例中,存储器备份逻辑811配置为在前向和反向方向中执行存储器备份操作。例如,存储器备份逻辑811最初可以响应于检测到的在第一等级粒度(例如区块等级)的存储器失效而执行前向备份操作,将失效状态从n移动到n+1。其然后可以检测在更高等级粒度的失效状态,例如在存储器器件或排等级。作为响应,存储器备份逻辑811的一个实施例执行反向备份操作,将失效等级从n+1移动回到n,并且然后以更高等级粒度(器件等级或排等级)执行前向备份,从而以更高等级粒度从n移动到新的n+1状态。

类似地,存储器备份逻辑811可以检测失效并且最初以相对更高等级粒度(例如排等级)执行前向备份,然后执行反向备份操作,随后以更低粒度执行前向备份操作。例如,之后可以标识导致失效的特定器件或区块,并且作为响应,存储器备份逻辑811可以执行反向备份以将失效状态从n+1(排)移动回到n。其然后可以执行前向备份以更精确等级粒度(例如,器件或区块)将失效状态从n移动到新的n+1。存储器备份逻辑811可以配置为执行以上前向/反向备份操作以在任意两个等级粒度之间转换(例如,从器件等级移动到排等级,从排等级移动到DIMM等级,等等)。

失效的宽度是在存储器总线上特定数量的位,典型地为1、4或8位。典型的失效将是通道失效,其中单个位在总线上已经失效,或将是器件失效,其中1个器件的整个宽度已经失效(对于X4器件是4个连续的位,而对于X8器件是8个连续的位)。图12B示出对于X8ECC排将器件映射到总线,图12C示出对于X4ECC排将器件映射到总线。在一个实施例中,每个备份操作(前向或反向)将在被定义为x,y的粒度上操作,其中x=区域大小,而y=宽度。

在本发明的一个实施例中,当写入和读取高速缓存行时,存储器备份逻辑811使用备份器件分别实现图13A所示的写入路径和图13B所示的读取路径。具体而言,在该示例中,跨36x4DRAM器件存储高速缓存行,并且将36个器件之一反向为备份器件——在该示例中为器件35。当器件失效发生时,例如在该示例中在器件34内,存储器备份逻辑811为排上每条高速缓存行发起存储器备份事务,其读取存储器器件、将数据从失效的器件移动到备份器件、并且写入存储器。如下所述,反向备份操作暂时将数据从备份器件35移动回到失效器件34。

因此,在图13A中,在一个实施例中,响应于写入操作使得高速缓存行被写入存储器,将失效器件1311的身份提供给被实现为复用器的逻辑1312,其物理地将通常本应被写入失效器件34的高速缓存的部分写入备份器件35。在该实施例中,存储器备份逻辑811跟踪每个器件的当前状态以及对于哪个器件34或器件34的哪些部分已经失效的指示(例如,器件34内的哪个特定区块已经失效)。响应于写入操作,存储器备份逻辑811然后将写入操作映射到合适的备份器件35,或其部分(例如,器件35中的特定区块,其代替了器件34中的失效区块)。

如图13B所示,响应于从存储器读取高速缓存行的读取操作,解码器1300解码失效器件34的ID以确定本应存储在失效器件34中的高速缓存行的部分实际上存储在备份器件35中。由此,当将读取操作的结果返回到处理器时,必须将来自备份器件35的数据移动到正确的位置中(即,如同其实际上已经被从器件34读取)。这在图13B中通过控制一组复用器1301-1312的解码器1300完成,每个复用器将备份器件作为一个可能的输入,并且将非备份器件0-34中的每一个作为其他可能的输入。假设器件34或器件34内的特定区块已经失效,该信息将经由失效器件信号1311被指定到解码器1300,并且作为响应,解码器1300将输出信号到复用器1301以从器件35而不是器件34选择输出。复用器1301的输出是在器件34的位置中,从而确保提供自器件35的高速缓存行的部分被输出到正确位置中的处理器。

如上所述,在一个实施例中,失效器件信号1311可以指定失效的不同等级粒度。例如,其可以指定整个器件34已经失效,从而使得失效器件的整个内容被传送到备份器件35以被使用。替代地,其可以指定只有器件34内的某些区块已经失效,从而仅将这些特定区块传送到备份器件35。在其他实施例中,失效器件信号1311可以在甚至更低等级粒度操作(例如,标识特定特定区块中的已经失效的行)。

图14A-C示出根据本发明的一个实施例可以如何采用前向和反向备份。在图14A中,器件0的区块0已经失效。作为响应,存储器备份逻辑811已经利用器件35的区块0作为器件0的区块0的备份。随后,已经确定器件0内的失效扩展到超过区块0,并且由此,需要备份整个器件0。因此,在一个实施例中,存储器备份逻辑811执行反向备份操作,暂时将器件35区块0的内容移动回到区块0或器件0,如图14B所示。当反向备份操作完成时,存储器备份逻辑811将器件0的整个内容(即,区块0-7)移动到备份器件35,如图12C所示。

因此,图14A-C示出使用反向备份作为中间步骤(图14B),在3个步骤中将区块失效转换为排失效。在一个实施例中,使用具有36x4DRAM器件(0-35)的逻辑双器件数据纠正(DDDC)排执行该操作,DDDC排是步调一致地运行的2个物理排(每个有18个器件)。其在每个排具有8个区块的DDR3技术中示出。

现有系统不包括以此方式反向备份的机制。由此,当将单独的区块备份时,如图14A所示,这些系统缺少随后将整个器件备份的能力,如图14C所示。通过给予存储器控制器在RAS状态之间前向和向后转换的能力,反向备份成为增加存储器可靠性并且降低OEM的服务成本的高级RAS流的基本构建块。

在图15中示出根据本发明的一个实施例的方法。该方法可在上述存储器架构的情境内实现,但并不限于任何特定存储器架构。

在1501,在存储器中在第一粒度(例如,在区块等级)检测到失效。作为响应,在1502执行前向备份,如上所述,将失效状态从n移动到n+1(例如,将失效区块移动到备份器件的备份区块)。在1503,在存储器中检测到额外的失效,和/或标识改善的(例如,更优的)备份状态。例如,可以确定器件内的额外的区块已经失效(例如,如上参照图12A-C所述)。替代地,可以确定执行了备份的初始等级粒度太激进,在比所要求的粒度更高的粒度备份。例如,最初可以将整个存储器器件备份,但是在监视存储器之后,可以确定只有存储器器件中的单个区块导致了失效。在任一情况下,在1504,执行反向备份以暂时将失效状态从n+1移动到n(即,如图12B所示,在前向备份操作之前,存储器驻留的状态)。当反向备份操作完成时,在1505,根据来自1503的确定,以第二粒度执行第二前向备份操作,将失效状态从n移动到新的n+1状态(例如,从单一区块移动到整个器件,反之亦然,取决于1503处的分析)。

以下提供反向备份的三个示例性使用情况。在每个使用情况中,突出了反向备份的益处。

使用情况1:在该示例中,在RAS流中为基于IntelTM的服务器(例如,具有Haswell处理器和支持芯片组的服务器)上的“区块DDDC”使用反向器件备份。在图13A-B中描绘了DDDC器件备份的一个示例。当DDDC以排粒度标出DRAM失效时,区块DDDC允许以更小的区块粒度标出失效。特定地,一个实施例支持标出在每个排的2个区块上的器件,或标出在整个排上的器件。当仅影响单个区块的DRAM器件失效发生时,将对该区块前向备份以标出坏器件。如果相同的器件失效之后劣化到影响整个排,则需要将整个排备份。然后使用反向备份以通过首先将原始区块反向备份、然后将整个排前向备份来将区块失效转换为排失效。这描绘在在图14A-C中。

该配置的益处是,在附加区块粒度的备份的情况下,发明了反向备份以转换失效区域的粒度。当区块失效随后变成排失效(或相同器件内的第二区块失效)时可以使用反向备份。在经由反向备份从区块到排的转换之后,在要求服务调用之前排可以通过实现SDDC(奇偶替换)来承受住附加的器件失效。如果不支持反向备份,则从区块到排的备份转换将是不可能的。唯一的选择是在余下的区块上实现SDDC,并且将立即要求服务调用。在该情况下,在要求服务调用之前,反向备份允许排承受住更多硬失效。

使用情况2:后硅验证不得不覆盖所有粒度的失效的所有组合。RAS流正变得更先进,并且反向备份实现在RAS状态之间来回的快速和连续转换。在没有反向备份的情况下,测试情况之间的重启是必要的以将存储器重置回到初始状态,这极大地增加了测试时间/成本。

因此通过减少的测试时间和增加的测试覆盖改善了后硅存储器RAS验证。这可以导致更快市场化和较少RAS缺陷,遗漏这些RAS缺陷将需要附加的CPU步进或勘误。

在上述说明书中,已经参考特定示例性实施例描述了本发明。然而,显然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛精神和范围。因此,说明书和附图应被认为是说明性而非限制性意义。

本发明的多个实施例可包括上述各个步骤。可在可用于使通用或专用处理器执行这些步骤的机器可执行指令中具体化这些步骤。或者,可由包含用于执行这些步骤的硬连线逻辑的专用硬件组件,或可由被编程的计算机组件和自定义硬件组件的任何组合来执行这些步骤。

如本文中所述,指令可以指硬件的具体配置,例如,配置成用于执行某些操作或具有预定功能的专用集成电路(ASIC),或者被存储在被具体化在非暂态计算机可读介质中的存储器中的软件指令。因而,附图中示出的技术可以使用存储在一个或多个电子设备(例如,终端站、网络元件等等)并在其上执行的代码和数据来实现。此类电子设备使用诸如非瞬态计算机机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪存设备;相变存储器)之类的计算机机器可读介质和瞬态计算机机器可读通信介质(例如,电、光、声或其他形式的传播信号——诸如载波、红外信号、数字信号等)来(内部地和/或在网络上与其他电子设备之间进行)存储和传递代码和数据。

另外,此类电子设备一般包括耦合至一个或多个其他组件的一个或多个处理器的集合,所述一个或多个其他组件例如是一个或多个存储设备(非暂态机器可读存储介质)、用户输入/输出设备(例如,键盘、触摸屏和/或显示器)以及网络连接。该组处理器和其他组件的耦合一般是通过一个或多个总线和桥(也称为总线控制器)实现的。存储设备和携带网络话务的信号分别表示一个或多个机器可读存储介质和机器可读通信介质。因此,给定电子设备的存储设备通常存储用于在该电子设备的一个或多个处理器的集合上执行的代码和/或数据。当然,本发明的实施例的一个或多个部分可使用软件、固件和/或硬件的不同组合来实现。贯穿此具体实施方式,为了进行解释,陈述了众多具体细节以提供对本发明的透彻理解。然而,对本领域技术人员显而易见的是,没有这些具体细节中的一些细节也可实施本发明。在某些实例中,并不详细描述公知的结构和功能,以免使本发明的主题模糊。因此,本发明的范围和精神应根据所附权利要求书来确定。

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