CN103109278B - 一种存储器件、存储系统以及用于促进存储器事务的方法、装置 - Google Patents

一种存储器件、存储系统以及用于促进存储器事务的方法、装置 Download PDF

Info

Publication number
CN103109278B
CN103109278B CN201180045879.6A CN201180045879A CN103109278B CN 103109278 B CN103109278 B CN 103109278B CN 201180045879 A CN201180045879 A CN 201180045879A CN 103109278 B CN103109278 B CN 103109278B
Authority
CN
China
Prior art keywords
memory
address
physical address
target
paragraph
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201180045879.6A
Other languages
English (en)
Other versions
CN103109278A (zh
Inventor
T.G.莫里斯
L.D.布兰肯贝克勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN103109278A publication Critical patent/CN103109278A/zh
Application granted granted Critical
Publication of CN103109278B publication Critical patent/CN103109278B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements

Abstract

公开了装置、系统、方法以及机器可读介质。在一个实施例中,装置包括地址交换高速缓存。装置也包括存储段交换逻辑,该存储段交换逻辑能够检测以存储段为目标的第一地址处的可复制差错。一旦检测到,则该逻辑用以另一存储段为目标的第二地址重映射以差错存储段为目标的第一地址。该逻辑把这两个地址存储在地址交换高速缓存内的条目中。接着存储段交换逻辑接收以第一物理地址为目标的存储器事务,并使用该地址在地址交换高速缓存中执行查找过程以确定具有差错地址的条目是否存在。如果对于那个地址的条目确实存在,该逻辑则交换第二地址到第一地址的存储器事务中。

Description

一种存储器件、存储系统以及用于促进存储器事务的方法、装置
技术领域
本发明涉及通过地址交换(swap)用系统存储器(memory)空闲的好的部分替换系统存储器坏的部分。
背景技术
当双列直插式存储器模块(DIMM)中的动态随机存取存储器(DRAM)的一些部分失效(fail)时,通常认为整个DRAM器件(device)是坏的DRAM,或在最坏情况情形下认为DIMM是坏的DIMM。由于DRAM器件的一部分失效而认为整个DRAM器件或整个DIMM是坏的,对于存储器制造商而言降低了可工作DRAM/DIMM的产量,增加了它们的成本,并且延长了原始设备制造商(OEM)的制造时间,因为在产品发货之前替换DIMM必须经过处理和重新测试。另外,DRAM器件的一些部分也可能在器件的寿命期间失效,即使器件以完美工作情形离开生产线。这是由于在器件使用寿命内发生的正常磨损。这些失效通常一度在终端用户/消费者使用DRAM/DIMM时发生,并将使人们在DIMM中大部分存储器仍可正常工作时替换整个DIMM。
附图说明
本发明通过示例来说明并且不局限于附图,在附图中相同附图标记指示类似要素,并且其中:
图1说明了能够使用地址交换来动态替换存储段(memory segment)的计算机系统的实施例。
图2A说明了所有系统存储器的物理地址空间,包括用来存储替换存储段的那部分。
图2B说明了坏段检测高速缓存(cache)的实施例。
图3说明了地址交换高速缓存的实施例。
图4说明了利用存储段交换逻辑的备选存储器子系统配置的实施例。
图5说明了位于存储器控制器内的详细逻辑的实施例,在用相对于基本存储器事务(transaction)的并行方式执行存储段查找(lookup)和交换时利用该存储器控制器。
图6说明了位于存储器控制器内的详细逻辑的实施例,在基本存储器事务之前用串行方式执行存储段交换时利用该存储器控制器。
图7A是过程的实施例的流程图,该过程确定失效存储段并把失效存储段地址添加到地址交换高速缓存中的新条目(entry)。
图7B是过程的实施例的流程图,该过程执行替换存储段地址对失效存储段的地址的地址交换。
具体实施方式
公开了实施物理存储段的交换的装置、系统、方法以及机器可读介质的要素。
贯穿本文多次提及术语存储“段”。存储器的段意指表达存储器的一般部分。在不同的实施例中,段能够意指存储器中与一个所存储的信息比特(bit)一样小的部分,或它能够意指存储器中占据超过存储器的整个器件的部分。可是,通常在许多实施例中存储器的段可表达存储器的高速缓存线(cacheline)或存储器的物理页(physical page)。高速缓存线基于按处理器的具体实施方式而大小不同,但在当前方案中通常在从8字节到1024字节的范围内变化。物理存储页大小也可不同。例如,一个普通大小的存储页可以是4千字节。
存储器件内的存储段可能因为许多原因,包括制造过程的缺陷到器件的正常磨损,而失效。许多具有失效段的存储器件除失效段外大部分仍可工作。通常,整个存储器模块由于模块上的一个或多个器件内的一些段失效而被丢弃。
提出用于如下的装置、系统、方法和机器可读介质:追踪失效的存储段,将其用不用的好存储段交换,并且通过用好段的地址动态交换失效段的存储器事务内的地址来继续利用存储段位于其内的存储器件/模块。
图1说明了能够使用地址交换动态替换存储段的计算机系统的实施例。
示出了计算机系统100。计算机系统可以是桌上型电脑、服务器、工作站、膝上型电脑、手提电脑、电视机顶盒、媒体中心、游戏控制台、集成系统(比如在汽车内)或其它类型的计算机系统。在几个实施例中,计算机系统100包括一个或多个也被称为“处理器”的中央处理单元(CPU)。尽管在许多实施例中可能存在许多CPU,但是在图1示出的实施例中,为清楚起见只示出CPU 102。CPU 102可以是Intel ®公司的CPU或另外品牌的CPU。在不同的实施例中,CPU 102包括一个或多个核(core)。示出CPU 102包括四个核(核104、106、108和110)。
在许多实施例中,每个核包括内部功能块,比如一个或多个执行单元、引退单元、一组通用和专用寄存器等。在单线程核中,每个核可被称为硬件线程。当核是多线程的或超(hyper)线程的时,那么工作在每个核内的每个线程也可被称为硬件线程。因此,运行于计算机系统100中的执行的任意单线程可被称为硬件线程。例如,在图1中,如果每个核是单线程的,那么系统内存在四个硬件线程(四个核)。另一方面,如果每个核是多线程的并且有能力同时保持两个线程的状态,那么系统内存在八个硬件线程(四个核,每个核有两个线程)。
CPU 102也可包括一个或多个高速缓存,比如高速缓存112。在许多没有示出的实施例中,实现除了高速缓存112之外的额外高速缓存,使得在每个核中的执行单元和存储器之间存在多级高速缓存。在不同的实施例中,可以用不同的方式分配高速缓存112。另外,在不同的实施例中,高速缓存112可以是许多不同大小的一种。例如,高速缓存112可以是8兆字节(MB)的高速缓存、16 MB的高速缓存等。另外,在不同的实施例中,高速缓存可以是直接映射高速缓存(direct mapped cache)、全相联高速缓存(fully associative cache)、多路组关联高速缓存(multi-way set-associative cache)或带有别的映射类型的高速缓存。在许多实施例中,高速缓存112可包括在所有核中共享的一个大的部分或可被分成几个单独功能片(slice)(例如,每个核一片)。高速缓存112也可包括在所有核中共享的一个部分和作为每个核的单独功能片的几个其它部分。
在许多实施例中,CPU 102包括集成系统存储器控制器114以提供与系统存储器116通信的接口。在没有示出的其它实施例中,存储器控制器114可位于在计算机系统100中其它地方的与CPU 102分开的分立组件中。
系统存储器116可包括几个动态随机存取存储器(DRAM)器件,比如双倍数据速率(DDR) DRAM类型。例如,器件118-132可存在于双列直插式存储器模块(DIMM)或其它类似存储器模块上的系统存储器中。图1示出带有八个器件的单存储器模块,尽管在其它实施例中系统存储器中可存在多于一个存储器模块,并且在每个存储器模块上可有多于或少于八个器件。
系统存储器116可以是存储待由CPU 102操作的数据和指令的通用存储器。另外,计算机系统100中可存在其它有能力对系统存储器进行读或写的可能的器件,比如能够进行直接存储器存取(DMA) 的I/O(输入/输出)器件。
把CPU 102与系统存储器116耦合的链路(即,总线、互连等)可包括一个或多个能够传送数据、地址、控制以及时钟信息的光学、金属或别的线材(wire)(即,线路)。
平台控制器集线器(PCH) 134(例如,I/O控制器和其它电路的复合)包括实现CPU 102和外部I/O器件间通信的I/O接口。集线器可包括一个或多个 I/O适配器(adaptor),比如I/O适配器136 。I/O适配器把在CPU 102内所利用的主机通信协议翻译(translate)成与特定I/O装置(比如I/O器件138)兼容的协议。给定 I/O适配器可翻译的协议中的一些包括外围组件互连(PCI)-Express协议、通用串行总线(USB)、串行高级技术附件(SATA)接口、以太网以及1394“Firewire”,等等。另外,可以存在一个或多个无线协议I/O适配器。无线协议的例子是蓝牙、基于IEEE 802.11的无线协议以及蜂窝协议,等等。
除I/O器件以外,PCH 134也可耦合到系统中的一个或多个嵌入式控制器(EC),比如EC 140。EC 140可合并有若干功能。例如,RAID存储空间(storage)控制器器件可存在于计算机系统100中。RAID控制器可管理固态盘(SSD)或硬盘驱动的阵列。控制器器件的其它示例可以是分立带外可管理性引擎(discrete out-of-band manageability engine)、键盘控制器或别的类型的控制器。
在其它实施例中,PCH 134是位于CPU 102外部的分立器件。在这些实施例中,诸如直接存储器接口(DMI)的接口把CPU耦合到PCH。可是,没有示出这些实施例。
CPU间(inter-CPU)的接口142可把接口提供给耦合到一个或多个额外CPU的链路,并且允许CPU间的通信发生。例如,CPU间的高速接口可以是快速路径互连(QPI)或其它类似接口。尽管图1中没有示出额外CPU,但是在许多实施例中,CPU 102是存在于计算机系统100内的多个CPU中的一个。在许多实施例中,CPU间的接口142在CPU 102和存在于系统内的其它CPU中的每一个之间提供点对点高速通信接口。
图形接口144可把接口提供给耦合到分立图形控制器(没有示出分立图形控制器)的链路。接口可以是高速平台组件互连(PCI)-Express接口或另外的高速接口。在其它实施例中,CPU 102包括集成图形控制器,并且图形接口144可耦合到显示装置,比如监视器。在许多实施例中,接口是高速的,以允许在链路上传递有效的图形数据业务量(例如,3D 图形、视频等)。
计算机系统100也包括系统管理固件146以提供引导(boot)指令来初始化计算机系统和组件。在不同的实施例中,系统管理固件可以是基本输入/输出系统(BIOS)、可扩展固件或计算机系统可在平台的引导期间利用的其它形式的固件指令。
计算机系统100包括存储段交换逻辑(MSSL) 148。在许多实施例中,比如在图1所示的那个中,MSSL 148位于存储器控制器114内。可是,在没有示出的其它实施例中,MSSL 148位于计算机系统中的其它地方。MSSL 148包括允许以空闲的好段将坏存储段交换出去的逻辑。当DIMM上的存储器的段失效时,MSSL 148有能力检测该失效并且以不用的好段将失效段交换出去。基于对同一地址的任意事务中的可复制错误(error),可认为存储段已失效。错误不必是相同的错误,但是如果存储段不稳定,那么坏数据将会经常发生,并且那将在检查对同一存储段的存储器事务时导致一般的可复制错误。
存储器失效的部分可小于或大于给定段的大小,而不论该段如何定义。例如,如果将存储段定义为高速缓存线并且高速缓存线是512字节,但是仅高速缓存线的4个字节失效,那么交换将替换整个高速缓存线。另一方面,如果存储器在多个高速缓存线上失效,那么交换将替换覆盖失效存储器存储单元(memory location)的那组高速缓存线。在许多实施例中,每个高速缓存线失效将要求单独的交换事务,因为交换将逐段进行。
被交换进来替换失效段的以前不用的好段可存储在物理系统存储器116中为存储在交换期间使用的替换存储段而指定的部分内。
图2A说明了所有系统存储器的物理地址空间,包括存储替换存储段的那部分。
物理系统存储器地址空间始于0 GB(吉字节)的地址,并且线性地行进直到存储器顶部。在这个地址范围内呈现全部物理系统存储器地址空间。在许多实施例中,物理地址空间分为两部分:一般存储器存储空间200和交换存储器存储空间202。对系统存储器的这两部分的存储器地址范围的指定可在系统的引导期间进行(例如,系统管理固件146可包括把存储器分成这两个地址范围的代码)。
一般存储器存储空间200的范围通常将是比交换存储器存储空间202大的范围,因为一般存储器存储空间200包括根据每次引导和计算机系统正常工作期间所利用的存储器空间,而交换存储器存储空间202仅包括那些以用于在存储段交换期间替换坏存储段的存储段为目标的存储器存储单元。因此,如果所有存储器存储单元正常工作,那么不利用交换存储器存储空间202。在MSSL 148确定一个或多个段已失效之前,不利用交换存储空间内的段。
存储器交换存储空间202在地址空间的整个范围内的具体位置视具体实施方式而定。图2A中的存储器交换存储空间202位于物理存储器地址空间的顶部。在没有示出的其它实施例中,存储器交换存储空间202可接近物理存储器地址空间的底部或可能在存储器底部和顶部之间的相对居中位置。
回到图1,当存储器请求到达存储器控制器114时,MSSL 148执行查找以确定尝试的存储器存取是否以坏段为目标,并且如果是,则向替换了坏段的好段重映射该请求。关于检测、查找以及重映射过程的更多细节将在下面论述。为了帮助这些所执行的过程,MSSL 148包括几个组件,它们在图1中在 MSSL 148的放大窗口中(在椭圆虚线内)示出。具体而言,MSSL 148 包括坏段检测逻辑150、已知坏段查找和替换(L/R)逻辑152以及段重映射逻辑154。
坏段检测逻辑可用几种方式实施。例如,在一些实施例中,这个交换过程扩展到在制造期间已失效的存储段。因此,在DIMM离开生产线时,可能存在从DIMM在出售前被第一次测试就知晓已失效的某个数目的段。制造商可用图表标出器件中已失效的存储段,并把它们规划(program)到DIMM上的非易失存储器存储空间中。存储器控制器114可在系统引导期间读DIMM上的串行存在检测(SPD)非易失存储器156。SPD存储器156可包括DIMM上已知的坏存储段的地址。引导软件、段重映射逻辑154或存在于计算机系统中的其它逻辑然后可利用这个从SPD 156检索到的坏段信息来把合适条目规划到地址交换高速缓存160中。
另一个检测实施例可以是系统工作期间的动态检测。在许多实施例中,坏段检测逻辑追踪存储器中在存储器事务期间返回坏数据的段。例如,对存储器中地址的存储器请求可到达存储器控制器114。接着发送该请求到系统存储器116并且该存储器可返回ECC(错误检查和纠正)信息。ECC信息可通知存储器控制器114关于在目标地址的存储段的事务是否存在了错误。如果错误已发生,则MSSL 148内的坏段检测逻辑150可追踪该事务和结果。MSSL 148中或计算机系统100中其它地方的小存储空间区域可存储事务地址和结果(即,错误)。在一些实施例中,坏段检测高速缓存158将存储这个信息。该信息可局限于存储器事务的目标地址和源于该地址的错误的计数。例如,如果在八个不同的事务中八次以该地址为目标并且那些事务中的三个导致ECC错误,则在该地址存储单元的计数将是3。
在其它实施例中,在其中DIMM被测试的计算机系统引导过程期间,可存在规定的(specific)时间。另外,系统管理固件146也可从以前的DIMM测试恢复与已知的坏存储段有关的信息。这个信息可在计算机系统100的每次引导时被恢复到地址交换高速缓存160中。
图2B说明了坏段检测高速缓存的实施例。
坏段检测逻辑将用存储段地址存储单元(例如,页级别(rank)、库、行、列)填充(populate)高速缓存中的每个存储单元,一旦在那个地址的段返回错误的话。回到图1,对于每个错误,坏段检测逻辑150将在坏段检测高速缓存中执行查找以确定该地址是否已在高速缓存内。如果该地址已不在坏段检测高速缓存内,那么将其添加在新的高速缓存条目存储单元,并且计数值初始化为1。如果该地址已在坏段检测高速缓存内,那么增加在那个条目的计数值。
在许多实施例中,坏段检测逻辑150将利用阈值来确定何时将存储段指明为已失效。例如,阈值可要求对所论述地址的一百个事务失效。另一个示例可导致比率(ratio)值,如果由以所论述地址为目标的事务所引起的错误的总数除以对所论述地址的总事务计数的比率太高,那么坏段检测逻辑150可确定在目标地址处的存储段已失效。无论如何,一旦坏段检测逻辑已确定存储段已失效,那么就把新失效的段的目标地址给段重映射逻辑154。
段重映射逻辑接着添加目标地址作为地址交换高速缓存160内的条目,高速缓存160存储所有失效存储段的地址。
图3说明了地址交换高速缓存的实施例。
地址交换高速缓存中的每个条目首先包括交换范围地址偏移(offset)值,交换范围地址偏移值是进入地址交换高速缓存的索引(index)。段重映射逻辑(图1的154)可在内部存储交换存储器存储空间(即,图2A的202)的起始的基址值以及交换存储器存储空间的范围值,所述范围值在和基址值结合时将给出地址交换高速缓存的大小。基址和范围值可存储在存储器控制器内的内部寄存器中或在计算机系统中的其它地方。
地址交换高速缓存也包括失效(即,坏的)存储段(例如,页、级别、库、行、列)的地址。地址交换高速缓存内的剩余列包括用于有效比特的存储空间。有效比特表示地址交换高速缓存内的特定条目是在使用(即,有效)还是空闲以供将来使用(即,无效)。
回到图1,一旦段重映射逻辑154存储该条目,那么MSSL 148就能够在系统工作期间对那个失效存储段执行交换。例如,在某个稍后的时间点,存储器请求以存储器地址X到达存储器控制器114。MSSL 148内的已知坏段L/R逻辑152接着以存储器地址X访问地址交换高速缓存160并且执行查找。如果在地址交换高速缓存160内不存在存储器地址X的条目,那么已知坏段L/R逻辑152允许存储器请求继续到系统存储器以完成该事务。另一方面,如果存在存储器地址X的条目,那么改为利用在条目的[交换存储器存储空间基址值]+[交换地址范围偏移值]的存储段的地址。
已知坏段L/R逻辑152接着用新的所交换地址替换旧的存储器事务目标地址,这允许存储器事务通过使用所交换的存储段而不是初始作为目标的存储段来完成。
图4说明利用存储段交换逻辑的备选存储器子系统配置的实施例。
除了以前集成到存储器控制器的地址交换高速缓存现在被置于系统内的每个DIMM上以外,存储器控制器114和图1的存储器控制器类似。例如,在图4的具体实施例中,有两个DIMM:包括地址交换高速缓存402的DIMM 0(400)和包括地址交换高速缓存406的DIMM 1(404)。交换高速缓存对于每个DIMM是特定的,因此地址交换高速缓存402包括用于物理上位于器件408-422的一个或多个内的失效存储段的条目,而地址交换高速缓存406包括用于物理上位于装置424-438的一个或多个内的失效存储段的条目。尽管没有示出,但是在一些实施例中,整个MSSL(图1的148)可被集成到每个DIMM中或者可能被集成到每个存储器件中。
图5说明了位于存储器控制器中的详细逻辑的实施例,在用相对基本存储器事务的并行方式执行存储段查找和交换时利用该存储器控制器。
在可包括交换的过程的开始处,存储器请求/事务进入存储器控制器。存储器请求具有目标存储段的事务地址500。该事务地址可被同时发送到存储段状态查找逻辑组件502以及已知坏段L/R逻辑组件504。段状态查找逻辑502执行存储段的标准状态查找,这可包括以该地址执行段表(table)查找来确定关于该段的若干状态指示符(例如,段是否特许/受保护/只读/打开/关闭/等)。一旦已执行段状态查找,则将事务地址500发送到调度器(scheduler) 506(如果该地址在已经确定段的状态后仍旧可访问)。调度器506把事务发送到作为目标的DIMM。
DIMM把事务的结果返回到存储器控制器,这可涉及向ECC逻辑508发送数据。ECC逻辑508确定检索的数据中是否存在错误,并且如果是,则向事务地址队列512发送包括事务地址的重试请求。段状态查找逻辑502接着从事务地址队列取出事务并且重试事务。该逻辑和过程的那个部分包括标准存储器事务。在所示出的实施例中,示出包括ECC检查,可是在没有示出的其它实施例中,系统可用一些其它方式检测存储段错误,在这些实施例中,可没有过程中涉及的ECC检查。
越过标准存储器事务逻辑,随存储器请求到达的事务地址500也被发送到坏段L/R逻辑504。在标准存储器请求事务过程期间,坏段L/R逻辑504同时执行事务地址500的查找。坏段L/R逻辑504将搜索地址交换高速缓存(图1的160)以确定事务地址500是否是已知的失效地址。如果不是,则坏段L/R逻辑504什么都不做。另一方面,如果事务地址500正以已知的失效存储段为目标(因为在地址交换高速缓存搜索上存在命中(hit)),那么已知坏段L/R逻辑504用交换地址514(接收自地址交换高速缓存条目)替换事务地址,把交换地址发送到事务地址队列512,并把强制(forced)重试命令516发送到事务地址队列512以使用新的交换地址来尝试存储器事务的重试。
通常,如果需要交换初始事务地址,则事务地址队列512能够使存储器事务无效并且要求重试,因此存储器控制器意识到重试并用初始事务地址500使事务无效。
图5所示出的实施例消除了坏段查找过程的开销,因为那个过程和标准存储器事务过程并行地执行。如果坏段地址查找返回未命中(miss),则并不存在与坏段地址查找相关的所失去的等待时间(latency)。如果坏段地址查找返回命中,那么使待被调度到存储器的当前在进行中(in the pipeline)的存储器事务无效,并接着利用新地址重试该事务。
图6说明了存储器控制器中的详细逻辑的实施例,在基本存储器事务之前用串行方式执行存储段交换时利用该存储器控制器。
在可包含交换的过程的开始处,存储器请求/事务进入存储器控制器。存储器请求具有目标存储段的事务地址600。
事务地址600到达已知坏段L/R逻辑602。在标准存储器请求事务过程期间,坏段L/R逻辑602同时执行事务地址600的查找。坏段L/R逻辑602将搜索地址交换高速缓存(图1的160)来确定事务地址600是否是已知的失效地址。如果不是,则坏段L/R逻辑602发送存储器事务和初始事务地址604。另一方面,如果事务地址600正以已知的失效存储段为目标(由于在地址交换高速缓存搜索上存在了命中),那么已知坏段L/R逻辑602用交换地址606(接收自地址交换高速缓存条目)替换事务地址,并把存储器事务与所替换的事务地址一起发送给段状态查找逻辑608。
段状态查找逻辑608执行存储段的标准状态查找,这可包括以所述地址执行段表查找来确定关于该段的若干状态指示符,就如以上针对图5对其所述。一旦已执行段状态查找,则把事务地址发送给调度器610,不论那个地址是初始地址还是所交换地址。调度器610向作为目标的DIMM发送事务。
DIMM把事务的结果返回给ECC逻辑612。ECC逻辑612确定所检索的数据中是否存在错误,如果是,则向事务地址队列616发送包括事务地址的重试请求。接着,段状态查找逻辑608从事务地址队列取出事务并重试事务。
图6所示的实施例与图5所示的实施例不同,因为坏段地址查找在标准存储器事务的段状态查找部分之前进行。这意味着,坏段地址查找的等待时间保持到任意给定存储器事务的完成,因为它相对存储器事务过程的剩余部分串行地(并且在先)进行。
图7A是过程的实施例的流程图,该过程确定失效存储段并把失效存储段地址添加到地址交换高速缓存中的新条目。
该过程通过处理逻辑来执行,处理逻辑可包括硬件电路、软件应用、固件代码或以上处理逻辑类型的任意组合。该过程始于处理逻辑确定可复制差错(fault)是否正在以特定存储段为目标的第一地址处发生(处理块700)。该确定可由制造商在测试期间进行,可由OEM进行,可在引导期间在存储器的第一次初始化期间进行,或者可在存储器正在其中工作的计算机系统的工作期间动态进行。
一旦已确定可复制差错,那么处理逻辑把第一地址重映射到不同存储段的第二物理地址(处理块702)。通过处理逻辑把第一和第二地址存储在地址交换高速缓存的条目中来完成重映射(处理块704)。所述过程的该部分完成用新的失效的第一地址以及替换的第二地址对地址交换高速缓存的填充。
图7B是过程的实施例的流程图,该过程执行替换存储段的地址对失效存储段的地址的地址交换。
在稍后的时间点,在图7A所说明的过程完成后,处理逻辑收到存储器事务(处理块706)。存储器事务包括指向存储段的事务地址。处理逻辑检索那个事务地址并确定该地址是否正以失效段为目标。具体而言,在这个具有仅一个之前在图7A所论述的失效段的情形中,处理逻辑确定上文提到的第一地址是否是事务地址(处理块708)。在许多实施例中,块708扫描整个地址交换高速缓存以查明所收到的存储器事务地址是否与高速缓存内任意存储单元中的条目匹配。在所示的当前实施例中,处理逻辑具体在地址交换高速缓存内寻找第一地址。如果不存在匹配,那么所述过程完成,因为不存在所接收的存储器事务地址已失效的在先知识(这可能意味着该地址是好的且有效)。
另一方面,如果存储器事务地址(第一地址)存在于地址交换高速缓存中,那么处理逻辑把第二地址交换到存储器事务中并移除第一地址(处理块710)。如之前所论述的,从地址交换高速缓存中在具有第一地址的条目处检索第二地址。接着,处理逻辑通过使用所交换的新的第二地址来服务存储器事务而继续进行,并完成该过程(处理块712)。
本发明实施例的要素也可提供为用于存储机器可执行指令的机器可读介质。机器可读介质可包括但不局限于闪存、光盘、压缩盘只读存储器(CD-ROM)、数字多功能/视频盘(DVD)ROM、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、传播介质或其它适于存储电子指令的机器可读介质。
在以上的描述和权利要求中,术语“包括”和“包含”以及它们的衍生词可能会用到,并且意在被视为互相的同义词。另外,在接下来的描述和权利要求中,可能用到术语“耦合”和“连接”以及它们的衍生词。应该明白,这些术语并不意指互相同义。而是,在特定的实施例中,可能用“连接”表示两个或多个要素互相直接物理接触或电接触。“耦合”可意指两个或多个要素直接物理接触或电接触。然而,“耦合”也可意指两个或多个要素互相并不直接接触,但仍然协作、交互作用或互相通信。
在以上描述中,使用某些专有名词描述本发明的实施例。例如,术语“逻辑”代表执行一个或多个功能的硬件、固件、软件(或其任意组合)。例如,“硬件”的例子包括但不局限于集成电路、有限状态机或甚至组合逻辑。集成电路可采用处理器(比如微处理器)、专用集成电路、数字信号处理器、微控制器等的形式。
应领会整个说明书中对“一个实施例”或“实施例”的提及意指结合该实施例所描述的特定特性、结构或特征包括在本发明的至少一个实施例中。因此,需要强调和应该领会的是,在该说明书的各个部分中对“实施例”或“一个实施例”或“备选实施例”的两次或多次提及并不一定都是指同一实施例。此外,本发明的一个或多个实施例中特定特性、结构或特征可在适当时进行组合。
类似地,应该领会在本发明的实施例的在前描述中,为了简化(streamline)公开,有时在单个实施例、附图或其描述中把各个特性集合在一起,从而帮助理解各个发明方面的一个或多个。然而,这种公开方法并不被解释为反映如下意图:要求保护的主题需要比每个权利要求中明确记载的特征更多的特征。而是,与随附权利要求书反映的一样,发明方面在于少于单个在前公开实施例的所有特征。所以,在随附于详细描述的权利要求书据此被明确结合于该详细描述中。

Claims (16)

1.一种用于促进存储器事务的装置,包括:
地址交换高速缓存;以及
存储段交换逻辑,用来
检测第一物理地址处的可复制差错,所述第一物理地址以多个存储器件中之一内的第一物理存储段为目标;
响应于所述可复制差错的检测,重映射所述第一物理地址到第二物理地址,所述第二物理地址以所述多个存储器件中之一内的第二物理存储段为目标;
存储所述第一和第二物理地址于所述地址交换高速缓存中的条目中;
接收以所述第一物理地址为目标的存储器事务;
执行查找以识别所述地址交换高速缓存中存储所述第一物理地址的所述条目;
响应于所述识别,交换所述第二物理地址到所述第一物理地址的存储器事务中,
其中,所述存储段交换逻辑还可操作成:
与存储器控制器发送所述存储器事务到所述多个存储器件中包含被所述第一物理地址作为目标的所述存储段的那一个存储器件并行地执行所述查找;
响应于所述查找肯定地识别所述第一物理地址存在于所述地址交换高速缓存中,将所述存储器事务标记为无效;以及
把重映射的第二物理地址提供给所述存储器控制器以重试所述存储器事务。
2.如权利要求1所述的装置,还包括:
包括多个空闲存储段的存储器交换池,其中所述第二物理地址以所述存储器交换池中的存储器的段为目标。
3.如权利要求2所述的装置,其中所述存储段交换逻辑还可操作成:
在所述重映射后,从所述存储器交换池移除被所述第二物理地址作为目标的所述存储段。
4.如权利要求2所述的装置,其中所述存储器交换池中的所述多个空闲存储段在操作系统可见的存储器地址空间之外。
5.如权利要求1-4中任一项所述的装置,还包括:存储器错误检测逻辑,用来
跟踪在一段时间内对于被所述第一物理地址作为目标的所述存储段所检测的错误的数量;以及
响应于所述错误的数量超过阈值,认为被所述第一物理地址作为目标的所述存储段具有可复制差错。
6.如权利要求1-4中任一项所述的装置,其中所述地址交换高速缓存存在于存储器模块上,所述存储器模块包括所述多个存储器件。
7.如权利要求1-4中任一项所述的装置,其中所述地址交换高速缓存集成到存储器控制器中。
8.一种用于促进存储器事务的方法,包括:
检测第一物理地址处的可复制差错,所述第一物理地址以多个存储器件中之一内的第一物理存储段为目标;
响应于所述可复制差错的检测,重映射所述第一物理地址到第二物理地址,所述第二物理地址以所述多个存储器件中之一内的第二物理存储段为目标;
存储所述第一和第二物理地址于地址交换高速缓存中的条目中;
接收以所述第一物理地址为目标的存储器事务;
执行查找以识别所述地址交换高速缓存中存储所述第一物理地址的所述条目;以及
响应于所述识别,交换所述第二物理地址到所述第一物理地址的存储器事务中,
其中,所述方法还包括:
与存储器控制器发送所述存储器事务到所述多个存储器件中包含被所述第一物理地址作为目标的所述存储段的那一个存储器件并行地执行所述查找;
响应于所述查找肯定地识别所述第一物理地址存在于所述地址交换高速缓存中,将所述存储器事务标记为无效;以及
把重映射的第二物理地址提供给所述存储器控制器以重试所述存储器事务。
9.如权利要求8所述的方法,还包括:
在所述重映射后,从存储器交换池移除被所述第二物理地址作为目标的所述存储段,其中所述存储器交换池包括多个空闲存储段,在从所述存储器交换池移除被所述第二物理地址作为目标的所述存储段之前,所述第二物理地址以所述存储器交换池中的存储器的段为目标。
10.如权利要求9所述的方法,其中所述存储器交换池中的所述多个空闲存储段在操作系统可见的存储器地址空间之外。
11.如权利要求8-10中任一项所述的方法,还包括:
跟踪在一段时间内对于被所述第一物理地址作为目标的所述存储段所检测的错误的数量;以及
响应于所述错误的数量超过阈值,认为被所述第一物理地址作为目标的所述存储段具有可复制差错。
12.一种存储器件,包括:
用于检测第一物理地址处的可复制差错的部件,所述第一物理地址以多个存储器件中之一内的第一物理存储段为目标;
用于响应于所述可复制差错的检测,重映射所述第一物理地址到第二物理地址的部件,所述第二物理地址以所述多个存储器件中之一内的第二物理存储段为目标;
用于存储所述第一和第二物理地址于地址交换高速缓存中的条目中的部件;
用于接收以所述第一物理地址为目标的存储器事务的部件;
用于执行查找以识别所述地址交换高速缓存中存储所述第一物理地址的所述条目的部件;以及
用于响应于所述识别,交换所述第二物理地址到所述第一物理地址的存储器事务中的部件,
其中,所述存储器件还包括:
用于与存储器控制器发送所述存储器事务到所述多个存储器件中包含被所述第一物理地址作为目标的所述存储段的那一个存储器件并行地执行所述查找的部件;
用于响应于所述查找肯定地识别所述第一物理地址存在于所述地址交换高速缓存中,将所述存储器事务标记为无效的部件;以及
用于把重映射的第二物理地址提供给所述存储器控制器以重试所述存储器事务的部件。
13.如权利要求12所述的器件,还包括:
在所述重映射后,从存储器交换池移除被所述第二物理地址作为目标的所述存储段,其中所述存储器交换池包括多个空闲存储段,在从所述存储器交换池移除被所述第二物理地址作为目标的所述存储段之前,所述第二物理地址以所述存储器交换池中的存储器的段为目标。
14.如权利要求13所述的器件, 其中所述存储器交换池中的所述多个空闲存储段在操作系统可见的存储器地址空间之外。
15.如权利要求12-14中任一项所述的器件,还包括:
用于跟踪在一段时间内对于被所述第一物理地址作为目标的所述存储段所检测的错误的数量的部件;以及
用于响应于所述错误的数量超过阈值,认为被所述第一物理地址作为目标的所述存储段具有可复制差错的部件。
16.一种存储器系统,包括:
包括多个存储器件的存储器模块;
存储器控制器,包括
地址交换高速缓存;以及
存储段交换逻辑,用来
检测第一物理地址处的可复制差错,所述第一物理地址以所述多个存储器件中之一内的第一物理存储段为目标;
响应于所述可复制差错的检测,重映射所述第一物理地址到第二物理地址,所述第二物理地址以所述多个存储器件中之一内的第二物理存储段为目标;
存储所述第一和第二物理地址于所述地址交换高速缓存中的条目中;
接收以所述第一物理地址为目标的存储器事务;
执行查找以识别所述地址交换高速缓存中存储所述第一物理地址的所述条目;以及
响应于所述识别,交换所述第二物理地址到所述第一物理地址的存储器事务中,
其中,所述存储段交换逻辑还可操作成:
与所述存储器控制器发送所述存储器事务到所述多个存储器件中包含被所述第一物理地址作为目标的所述存储段的那一个存储器件并行地执行所述查找;
响应于所述查找肯定地识别所述第一物理地址存在于所述地址交换高速缓存中,将所述存储器事务标记为无效;以及
把重映射的第二物理地址提供给所述存储器控制器以重试所述存储器事务。
CN201180045879.6A 2010-09-22 2011-09-16 一种存储器件、存储系统以及用于促进存储器事务的方法、装置 Expired - Fee Related CN103109278B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/887,966 US8495435B2 (en) 2010-09-22 2010-09-22 Dynamic physical memory replacement through address swapping
US12/887966 2010-09-22
PCT/US2011/051896 WO2012040045A2 (en) 2010-09-22 2011-09-16 Dynamic physical memory replacement through address swapping

Publications (2)

Publication Number Publication Date
CN103109278A CN103109278A (zh) 2013-05-15
CN103109278B true CN103109278B (zh) 2015-10-21

Family

ID=45818823

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180045879.6A Expired - Fee Related CN103109278B (zh) 2010-09-22 2011-09-16 一种存储器件、存储系统以及用于促进存储器事务的方法、装置

Country Status (4)

Country Link
US (1) US8495435B2 (zh)
KR (1) KR101464092B1 (zh)
CN (1) CN103109278B (zh)
WO (1) WO2012040045A2 (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8527836B2 (en) * 2011-07-01 2013-09-03 Intel Corporation Rank-specific cyclic redundancy check
US9431110B2 (en) * 2012-09-26 2016-08-30 Intel Corporation Column address decoding
US8464095B1 (en) * 2012-11-15 2013-06-11 DSSD, Inc. Method and system for multi-dimensional raid reconstruction and defect avoidance
KR102025341B1 (ko) * 2012-12-04 2019-09-25 삼성전자 주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작 방법
US8924776B1 (en) 2013-12-04 2014-12-30 DSSD, Inc. Method and system for calculating parity values for multi-dimensional raid
US9653184B2 (en) * 2014-06-16 2017-05-16 Sandisk Technologies Llc Non-volatile memory module with physical-to-physical address remapping
CN104143356B (zh) * 2014-07-25 2017-11-07 记忆科技(深圳)有限公司 一种具有存储控制器的dram
US9766972B2 (en) * 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9804920B2 (en) 2014-11-20 2017-10-31 Samsung Electronics Co., Ltd. Rank and page remapping logic in a volatile memory
US9535606B2 (en) * 2014-12-22 2017-01-03 Intel Corporation Virtual serial presence detect for pooled memory
US10120809B2 (en) * 2015-09-26 2018-11-06 Intel Corporation Method, apparatus, and system for allocating cache using traffic class
KR20190052315A (ko) * 2017-11-08 2019-05-16 에스케이하이닉스 주식회사 메모리 장치 및 그것을 포함하는 메모리 시스템
CN109918059B (zh) * 2017-12-13 2022-05-27 阿里巴巴集团控股有限公司 应用的功能扩展方法、装置、终端设备和存储介质
US10810304B2 (en) 2018-04-16 2020-10-20 International Business Machines Corporation Injecting trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code
US11003777B2 (en) 2018-04-16 2021-05-11 International Business Machines Corporation Determining a frequency at which to execute trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code
CN110851372B (zh) * 2018-08-20 2023-10-31 慧荣科技股份有限公司 储存装置及快取区定址方法
TWI702499B (zh) * 2018-08-20 2020-08-21 慧榮科技股份有限公司 儲存裝置及快取區定址方法
CN110851073B (zh) 2018-08-20 2023-06-02 慧荣科技股份有限公司 储存装置及巨集指令的执行方法
US11157191B2 (en) * 2019-04-26 2021-10-26 Dell Products L.P. Intra-device notational data movement system
US11150812B2 (en) * 2019-08-20 2021-10-19 Micron Technology, Inc. Predictive memory management
CN112596678B (zh) * 2020-12-24 2024-01-16 得一微电子股份有限公司 一种存储设备及其固件设置方法、重新分区方法
US11853216B2 (en) 2021-08-16 2023-12-26 Micron Technology, Inc. High bandwidth gather cache
US11790998B2 (en) 2021-08-25 2023-10-17 Micron Technology, Inc. Eliminating write disturb for system metadata in a memory sub-system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6993679B2 (en) 2002-02-28 2006-01-31 Sun Microsystems, Inc. System and method for inhibiting reads to non-guaranteed data in remapped portions of a storage medium
US7120068B2 (en) * 2002-07-29 2006-10-10 Micron Technology, Inc. Column/row redundancy architecture using latches programmed from a look up table
EP1435625A1 (en) 2002-12-30 2004-07-07 STMicroelectronics S.r.l. Non volatile memory device including a predetermined number of sectors
TWI310939B (en) * 2005-05-05 2009-06-11 Mediatek Inc Data managing method for an optical disc drive writing user data into an optical disk having defects
TWI298836B (en) 2005-10-12 2008-07-11 Sunplus Technology Co Ltd Apparatus for controlling flash memory and method thereof
US7911834B2 (en) * 2006-05-15 2011-03-22 Apple Inc. Analog interface for a flash memory die
US20090287957A1 (en) 2008-05-16 2009-11-19 Christoph Bilger Method for controlling a memory module and memory control unit

Also Published As

Publication number Publication date
US8495435B2 (en) 2013-07-23
CN103109278A (zh) 2013-05-15
WO2012040045A3 (en) 2012-06-28
US20120072768A1 (en) 2012-03-22
KR101464092B1 (ko) 2014-11-21
WO2012040045A2 (en) 2012-03-29
KR20130050362A (ko) 2013-05-15

Similar Documents

Publication Publication Date Title
CN103109278B (zh) 一种存储器件、存储系统以及用于促进存储器事务的方法、装置
US10936394B2 (en) Information processing device, external storage device, host device, relay device, control program, and control method of information processing device
US9690493B2 (en) Two-level system main memory
US20100332950A1 (en) Bit error threshold and content addressable memory to address a remapped memory device
WO2015087184A1 (en) Recording dwell time in a non-volatile memory system
CN109213693B (zh) 存储管理方法、存储系统和计算机程序产品
US20230236761A1 (en) Read-disturb-based logical storage read temperature information identification system
CN114746834A (zh) 基于分区状态的分区附加命令调度
CN113010098A (zh) 用于提高存储器系统的输入/输出吞吐量的设备和方法
US20160070648A1 (en) Data storage system and operation method thereof
US9213597B2 (en) Memory storage device, memory controller thereof, and method for programming data thereof
US11922020B2 (en) Read-disturb-based read temperature information persistence system
US20090138656A1 (en) Method of skipping synchronization process for initialization of RAID1 device
CN104425039A (zh) 用于改进的固态介质顺序读的动态映射预取
CN113050881A (zh) 提高存储器系统输入/输出吞吐量的设备和方法
US20180276068A1 (en) Error correction code in memory
CN114090080A (zh) 指令高速缓存器、指令读取方法及电子设备
CN113590038A (zh) 固态硬盘的管理方法和固态硬盘
TW202123230A (zh) 記憶體管理方法、儲存控制器與儲存裝置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20151021

Termination date: 20210916

CF01 Termination of patent right due to non-payment of annual fee