CN104871137B - 高可靠性存储器控制器 - Google Patents

高可靠性存储器控制器 Download PDF

Info

Publication number
CN104871137B
CN104871137B CN201380064370.5A CN201380064370A CN104871137B CN 104871137 B CN104871137 B CN 104871137B CN 201380064370 A CN201380064370 A CN 201380064370A CN 104871137 B CN104871137 B CN 104871137B
Authority
CN
China
Prior art keywords
data
memory
reliability
address space
data element
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.)
Active
Application number
CN201380064370.5A
Other languages
English (en)
Other versions
CN104871137A (zh
Inventor
加布里埃尔·H·罗
维拉斯·K·史达仁
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN104871137A publication Critical patent/CN104871137A/zh
Application granted granted Critical
Publication of CN104871137B publication Critical patent/CN104871137B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种集成电路,其包括:存储器,其具有地址空间;和存储器控制器,其耦合到所述存储器以响应于接收到的存储器访问而访问所述地址空间。所述存储器控制器进一步访问所述地址空间的第一部分中的多个数据元素,和所述地址空间的第二部分中与所述多个数据元素对应的可靠性数据。

Description

高可靠性存储器控制器
技术领域
本公开大致涉及集成电路,且更具体而言,涉及具有存储器控制器的集成电路。
发明背景
消费者持续要求具有更高性能和更低成本的计算机系统。为了解决更高性能的需求,计算机芯片设计者已开发了在单个芯片上具有多个处理器核心的集成电路。此外,已开发了各种晶粒(die)堆叠集成技术,其将多核集成微处理器和相关联的存储器芯片封装为单个组件。然而,存储器芯片易受各种故障条件的影响。在用于堆叠晶粒配置的存储器芯片的情况下,当永久性故障发生时,无法在不更换堆叠中的所有其它芯片的情况下容易地更换存储器芯片。
发明概要
提供了一种集成电路,其包括:存储器,具有地址空间;和存储器控制器,其耦合到存储器以响应于接收到的存储器访问而访问地址空间。存储器控制器进一步访问所述地址空间的第一部分中的多个数据元素,和所述地址空间的第二部分中与所述多个数据元素对应的可靠性数据。
还提供了一种集成电路,其包括存储器访问产生电路和存储器控制器。存储器访问产生电路在存储器的地址空间中产生数据元素的存储器访问。存储器控制器耦合到存储器以用于响应于接收到的存储器访问而访问地址空间。存储器控制器进一步访问地址空间的第一部分中的多个数据元素,和地址空间的第二部分中与多个数据元素对应的可靠性数据。
提供了一种方法,其中从请求器接收第一数据元素的写入访问。针对数据元素计算可靠性数据。将数据元素存储在地址空间的第一部分中,并将可靠性数据存储在地址空间的第二部分中。
附图简述
图1图示根据一些实施方案的实施物理存储器的第一多芯片模块的透视图。
图2图示根据一些实施方案的实施物理存储器的第二多芯片模块的透视图。
图3图示根据一些实施方案的形成具有高可靠性存储器控制器的集成电路的框图。
图4图示根据一些实施方案的图3的存储器的地址空间的表示。
图5图示根据一些实施方案的图3的存储器的地址空间的另一表示。
图6图示根据一些实施方案的图3的存储器的地址空间的另一表示。
图7图示根据一些实施方案的图3的存储器的地址空间的另一表示。
图8图示根据一些实施方案的写入数据的方法的流程图。
图9图示根据一些实施方案的读取数据的方法的流程图。
在以下描述中,在不同附图中的相同参考数字的使用指示相似或相同项目。除非另有说明,否则词语“耦合的”及其相关联的动词形式包括通过本领域中已知的方式进行的直接连接和间接电连接二者,且除非另有说明,否则直接连接的任何描述也暗含使用合适形式的间接电连接的替代实施方案。
具体实施方式
图1图示根据一些实施方案的实施物理存储器的第一多芯片模块的透视图。多芯片模块100大致包括多核处理器芯片120和存储器芯片堆叠140。存储器芯片堆叠140包括彼此上下堆叠的多个存储器芯片。如在图1中图示,存储器芯片堆叠140包括存储器芯片142、存储器芯片144、存储器芯片146和存储器芯片148。应注意,一般来说,存储器芯片堆叠140可包括比图1中图示的更多或更少的存储器芯片。存储器芯片堆叠140的每个单独的存储器芯片连接到存储器芯片堆叠140的其它存储器芯片,如适当的系统操作所需。存储器芯片堆叠140的每个单独的存储器芯片还连接到多核芯片120,如适当的系统操作所需。
在操作中,多芯片模块100的组件组合在单个集成电路封装中,其中存储器芯片堆叠140和多核芯片120对用户而言表现为单个集成电路。使用垂直互连件(例如,通路或硅通孔)结合水平互连件来实现存储器芯片堆叠140至多核芯片120的电连接。多核处理器晶粒120比存储器芯片堆叠140中的存储器芯片厚,并且物理支持处理器芯片堆叠140。当与五个单独的芯片进行比较时,多芯片模块100节省系统成本和板空间,同时总体上缩短组件访问时间并提高系统性能。然而,存储器芯片遭受各种可靠性问题。例如,本底辐射(诸如在环境中自然地发生或从半导体封装材料中发射的α粒子)可攻击位单元,导致值损坏。存储器的重复使用还可导致其它故障。例如,在某些重要设备中的电迁移可能导致那些设备磨损:它们有效地变得更薄,从而增大它们的阻抗,并最终导致造成不正确的值被读取的定时错误。其它类型的故障也是可能的。如果存储器芯片发生故障,那么不存在更换故障的存储器芯片的切实可行的方式。相反,用户必须更换整个封装,包括所有仍在工作的存储器和处理器芯片,这是昂贵的选择。
图2图示根据一些实施方案的实施物理存储器的第二多芯片模块200的透视图。多芯片模块200大致包括内插器210、多核处理器芯片220和存储器芯片堆叠240。内插器210连接到多核芯片220的活动侧。存储器芯片堆叠240包括彼此上下堆叠的多个存储器芯片。如在图2中图示,存储器芯片堆叠240包括存储器芯片242、存储器芯片244、存储器芯片246和存储器芯片248。应注意,一般来说,存储器芯片堆叠240可包括比图2中图示的更多或更少的存储器芯片。存储器芯片堆叠240的每个单独的存储器芯片连接到存储器芯片堆叠240的其它存储器芯片,如适当的系统操作所需。存储器芯片堆叠240的每个单独的存储器芯片还连接到多核芯片220,如适当的系统操作所需。在一些实施方案中,存储器芯片堆叠240包括单个存储器芯片。在一些实施方案中,多芯片模块200包括如类似存储器芯片堆叠240的一个以上存储器芯片堆叠。
在操作中,多芯片模块200的组件组合在单个封装(图2中未示出)中,且因此存储器芯片堆叠240和多核芯片220对用户而言表现为单个集成电路。使用垂直互连件(例如,通路或硅通孔)结合水平互连件来实现存储器芯片堆叠240至多核芯片220的电连接。内插器210提供物理支持和接口,以促进将存储器芯片堆叠240的每个单独的存储器芯片连接到多核芯片220。当与五个单独的芯片进行比较时,多芯片模块200节省系统成本和板空间,同时总体上缩短组件访问时间并提高系统性能。多芯片模块200将存储器芯片堆叠240与多核处理器220分离,且因此允许多核处理器220的更好冷却。然而,多芯片模块200还遭受可靠性和可维修性问题,这是因为无法在不更换整个封装的情况下容易地更换存在缺陷的存储器芯片。
图3图示根据一些实施方案的形成具有高可靠性存储器控制器的集成电路300的框图。集成电路300大致包括在单个集成电路晶粒上实施的多核处理器310和存储器350。
多核处理器310包括存储器访问产生电路320、队列332、纵横开关(XBAR)334、高速输入/输出(I/O)控制器336和存储器控制器340。存储器访问产生电路320包括被标记为“CPU0”的中央处理单元(CPU)核心322和被标记为“CPU1”的CPU核心324。CPU核心322和324执行存储器访问,以及传输并接收定义存储器访问的地址、数据和控制信号。队列332连接到CPU核心322、CPU核心324和XBAR 334。XBAR 334连接到高速I/O控制器336和存储器控制器340。高速I/O控制器336具有输入/输出(I/O)端口,以传输和接收至外围设备的一组外部信号,所述输入/输出(I/O)端口在图3中未示出,且被标记为“I/O”。
存储器控制器340包括错误校正码(ECC)/循环冗余码(CRC)计算(“comp”)电路342、动态随机存取存储器(DRAM)调度器344和物理接口(PHY)346。ECC/CRC comp电路342和DRAM调度器344各自连接到PHY346。PHY 346具有提供被标记为“控制”的一组信号的输出端、提供被标记为“BA”的一组存储体地址信号的输出端、提供被标记为“地址”的一组信号的输出端、和传输并接收被标记为“数据”的一组信号的I/O端口。
存储器350定义地址空间,并包括多个动态随机存取存储器(DRAM)芯片,其包括DRAM 352、DRAM 354、DRAM 356和DRAM 358。存储器350可通过图1的存储器芯片堆叠140或图2的存储器芯片堆叠240实施。DRAM352、354、356和358可与由JEDEC发布的DDR 3双倍数据速率(DDR)标准兼容,但在其它实施方案中,它们可与其它DDR和非DDR标准兼容。一般来说,DDR芯片各自具有一组存储体。存储器350中的每个DRAM芯片具有接收控制的输出端、接收BA的输出端、接收地址的输出端、和传输并接收数据的I/O端口。
在操作中,CPU核心322和CPU核心324二者具有取出并执行与一个或多个程序对应的指令,并通过向队列332提供存储器访问请求来访问与所述指令相关联的数据的能力。队列332存储用于分派到I/O控制器336或存储器控制器340的访问。队列332基于先进先出的原则对数据访问划分优先级。
XBAR 334切换并多路复用多核处理器310的电路及其相关联的总线,包括存储器访问产生电路320、队列332、高速I/O控制器336和存储器控制器340。高速I/O控制器336提供XBAR 334与外部电路(诸如以太网控制器)之间的连接。
存储器控制器340响应于存储器访问请求而访问存储器350的地址空间中的存储器位置。存储器控制器340通过将正常数据和关于所述数据的特殊可靠性信息存储在标准的现成存储器芯片中来确保高可靠性。可靠性数据信息允许对位错误的检测和可能的校正。通过将可靠性数据存储在低成本的商品存储器中,存储器控制器340允许多核处理器310与低廉的多芯片模块中的堆叠晶粒集成。
如在下文中更详细地描述,存储器控制器340访问地址空间的第一部分中的数据元素,和地址空间的第二部分中与数据元素对应的可靠性数据。存储器控制器340使用ECC/CRC comp电路342产生存储在存储器350中的可靠性数据,并随后计算可靠性数据以核对所存储的可靠性数据。ECC/CRC comp电路342使用可靠性数据核对由DRAM调度器324访问的数据,且在适当情况下,选择性地校正数据中的错误,并将经校正数据转发到请求的CPU。
PHY 346提供ECC/CRC comp电路342和DRAM调度器344至多存储体存储器350的接口。为了访问数据,PHY 346提供标准的控制信号、BA信号和地址信号至存储器350。一般来说,存储器控制器340响应读取访问请求来控制PHY 346,以从地址空间的第一部分读取数据元素并从地址空间的第二部分读取可靠性数据。ECC/CRC comp电路342基于接收到的数据来产生可靠性,且存储器控制器340将所产生的可靠性数据与所检索到的可靠性数据进行比较,以确定数据是否被正确读取。存储器控制器340响应写入访问请求来控制ECC/CRCcomp电路342,以产生数据元素的可靠性数据,并且控制PHY 346来将数据元素写入地址空间的第一部分中及将可靠性数据写入地址空间的第二部分中。现在将对存储器控制器340针对不同等级的可靠性支持来创建并管理存储器350的地址空间的方式进行描述。
图4图示根据一些实施方案的图3的存储器的地址空间400的表示。地址空间400大致包括在连续存储体中之间的地址的连续部分,包括被标记为“存储体0”的存储体410、被标记为“存储体1”的存储体420、被标记为“存储体2”的存储体430和被标记为“存储体3”的存储体440。
存储体410包括多个4千字节(KB)存储器页面,包括被标记为“A”的代表性存储器页面412和连续被标记为“B”至“P”的多个额外示例性存储器页面。
存储体420、430和440同样包括多个4KB的存储器页面。然而,存储体440包括连续数据部分442和用于存储所有存储体的可靠性数据的连续可靠性部分444。可靠性部分444包括被标记为“E0”的代表性存储器页面446和被标记为“E1”的代表性存储器页面。存储器页面446包括连续被标记为“EA”至“EH”的可靠性数据,这与存储器页面A至H中的数据元素对应。
在操作中,存储器控制器340访问地址空间400的第一(例如,顶部或较低地址)部分中的数据元素,并且访问地址空间400的第二(例如,底部或较高地址)部分(即可靠性部分444)中与所述数据元素对应的可靠性数据。例如,将存储体410存储体组织到4KB存储器页面中。图4图示地址的连续部分中的代表性页面A至H。在存储体440中,存储器控制器340还访问地址444的连续部分中的可靠性数据组E0(包括可靠性数据EA至EH,其与页面A至H中的数据组对应)的一个4KB存储器页面446。
同样,在存储体410中,存储器控制器340访问地址的连续部分中的页面I至P中的数据组的八个4KB存储器页面。在存储体440中,存储器控制器340还访问可靠性部分444中的可靠性数据组E1的一个4KB存储器页面,所述可靠性数据组包括与页面I至P中的数据组对应的可靠性数据(图4中未具体示出)。
地址空间400通过将可靠性数据放置在地址空间400的末端处的连续部分中来提供线性数据地址空间,从而避免地址空间中的“漏洞”。地址空间400支持各种类型的可靠性数据。例如,某些标准将有用的单错校正、双错检测(SECDED)码(诸如(72,64)SECDED码)定义为每64个数据位具有8个可靠性位(72个总位数)。使用SECDED,ECC/CRC comp电路342具有检测并校正单错以及检测但不校正双错的能力。对于其它已知的代码,ECC/CRC comp电路342具有检测和/或校正两个以上的错误的能力。地址空间400允许可靠性部分444的大小基于所使用的可靠性代码的类型而变化,所述可靠性代码的类型自身可基于系统的可靠性需要。
然而,通过将所有可靠性数据放置在单个存储体中,存储器控制器340可能不可接受地增大一些系统的访问延迟。例如,在同时在多个存储体中保持页面打开的系统中,当存储器控制器340从单个存储体440访问对不同存储体的访问的可靠性数据时,对可靠性部分444的访问导致“瓶颈”。应注意,多核处理器310可能合并其它机制来补偿这种瓶颈。例如,诸如存储器控制器340或存储器访问产生电路320的电路可预取可靠性数据,并将其存储在本地高速缓存中。下文还将更全面地描述,存储器控制器340可通过将可靠性数据分布在一个以上的单个存储体中来补偿访问可靠性数据的延迟,或以替代形式将数据元素和可靠性数据存储在存储体之间。
图5图示根据一些实施方案的图3的存储器的地址空间500的另一表示。地址空间500大致包括连续的存储体之间的地址的连续部分,包括被标记为“存储体0”的存储体510、被标记为“存储体1”的存储体520、被标记为“存储体2”的存储体530和被标记为“存储体3”的存储体540。
存储体510包括连续数据部分512中的多个存储器页面,包括连续被标记为“A”至“D”的四个代表性存储器页面516。存储体510还包括可靠性部分514中的存储器页面。可靠性部分514中的每个页面包括可靠性数据,包括被标记为“EA”的代表性可靠性数据518和连续被标记为“EB”至“ED”的可靠性数据(其与存储器页面A至D中的数据元素对应)。同样,存储体520、530和540还分别包括数据部分522、532和543和可靠性部分524、534和544。可靠性部分524、534和544中的每个页面包括分别与数据部分522、532和542中的数据元素对应的可靠性数据。
在操作中,存储器控制器340访问每个存储体的第一部分中的数据元素和在相同的存储体的第二部分中与所述数据元素对应的可靠性数据。例如,存储器控制器340访问数据部分510的存储器页面516中的数据元素A、B、C和D,和在可靠性部分514的存储器页面518中的可靠性数据EA至ED。因此,存储器控制器340将数据及其相应可靠性数据存储在单个存储体中。同样,存储器控制器340分别访问分别针对数据部分522、532和542中的数据元素的存储体520、530和540。存储器控制器340还分别访问分别针对可靠性部分524、534和544中的可靠性数据的存储体520、530和540。
总体上,地址空间500具有被分布在存储体510至540之间的非连续的数据部分以及也被分布在存储体510至540之间的非连续的可靠性部分。存储器控制器340访问来自存储体的前(100-X)%的数据元素并访问来自相同存储体的后X%的可靠性数据。例如,当存储器控制器340使用(64,72)SECDED码时,X=12.5%。虽然地址空间500不包括单个线性数据空间,但是通过将可靠性数据放置在相同的存储体中作为对应数据,存储器空间500避免与图4的存储器空间400相关联的瓶颈。
图6图示根据一些实施方案的图3的存储器的地址空间600的另一表示。地址空间600大致包括连续的存储体之间的地址的连续部分,包括被标记为“存储体0”的存储体610、被标记为“存储体1”的存储体620、被标记为“存储体2”的存储体630和被标记为“存储体3”的存储体640。
地址空间600包括存储数据并被分布在四个存储体之间的多个存储器行,包括被标记为“A”至“R”的代表性存储器行。地址空间600还包括多个存储器行,其存储数据的可靠性代码且也被分布在存储体之间,并与具有数据元素的行交错。这些行的每一个具有与其它行的数据元素对应的可靠性数据。
具体而言,存储体610包括行611至615;存储体620包括行621至625;存储体630包括行631至635;以及存储体640包括行641至645。在地址空间600中,数据分布在存储体之间。因此,数据元素A存储在存储体610的行611中,数据元素B存储在存储体620的行621中;以此类推至数据元素H存储在存储体640的行642中。然而,在八个数据元素以这种模式分布在行中之后,存储与所述行对应的一组可靠性数据。因此,存储体610包括在行613中与行A至H中的数据元素对应的被标记为“EA至EH”的可靠性数据。
存储体610至640将八个后续数据元素I至P存储在连续位置中,从存储体620中的行623存储数据元素I开始,存储体630中的行633存储数据元素J,以此类推至存储体610中的行615存储数据元素P。存储体620的行625存储与行I至P中的数据元素对应的被标记为“EI至EP”的可靠性数据等。
在操作中,存储器控制器340使地址空间600中的连续存储体610至640之间的数据元素和与所述数据元素对应的可靠性数据交错。存储器控制器340存储数据组的每个数据元素,其在多个存储体的连续存储体之间具有一定数量的连续寻址的数据元素,并将所述组的所有数据元素的可靠性数据存储在下一个连续存储体中。例如,存储器控制器340水平地访问存储体610至640中的行611、621、631、641、612、622、632和642中的前八个数据组。存储器控制器340访问位于紧跟第八个数据组的行613(其存储与行A至H中的前八个数据组对应的可靠性数据)中的可靠性数据EA至EH。存储器控制器340还水平地访问存储体610至640之间的行623、633、643、614、624、634、644和615中的第二个八个数据组。存储器控制器340还访问在紧跟第二个八个数据组的行625(其存储与行I至P中的第二个八个数据组对应的可靠性数据)中的可靠性数据EI至EP等。
通过在连续的存储体之间使数据元素和与所述数据元素对应的可靠性数据交错,存储器控制器340降低特定存储器访问的可靠性数据将存储在存储所述数据的相同存储体中的几率。在DDR DRAM中,在访问新页面之前,必须通过向所述存储体发布预充电命令来关闭先前页面,并且通过发布激活命令来打开新页面。因此,通过降低数据及其相应可靠性数据将存储在相同的存储体中的可能性,地址空间600减小访问数据及相应可靠性数据所需的平均时间量。
图7图示根据一些实施方案的图3的存储器的地址空间700的另一表示。地址空间700大致包括被标记为“信道0”的存储器信道710、被标记为“信道1”的存储器信道720、数据元素730和可靠性数据740。存储器信道710包括多个存储体,其包括连续被标记为“存储体0”至“存储体7”的存储体711至718。
存储体711包括被标记为“A”的数据组,其分别包括数据字节“A[7]”至“A[0]”。存储体712至718同样包括数据组,其各自具有八个字节并以如存储体711的类似方式进行布置。存储体712包括被标记为“B”的数据组,其分别包括数据字节“B[7]”至“B[0]”。存储体713包括被标记为“C”的数据组,其分别包括数据字节“C[7]”至“C[0]”。存储体714包括被标记为“D”的数据组,其分别包括数据字节“D[7]”至“D[0]”。存储体715包括被标记为“E”的数据组,其分别包括数据字节“E[7]”至“E[0]”。存储体716包括被标记为“F”的数据组,其分别包括数据字节“F[7]”至“F[0]”。存储体717包括被标记为“G”的数据组,其分别包括数据字节“G[7]”至“G[0]”。存储体718包括被标记为“H”的数据组,其分别包括数据字节“H[7]”至“H[0]”。
存储器信道720包括多个进一步的存储体,其包括被标记为“存储体0”的代表性存储体721和被标记为“存储体1”的代表性存储体。存储体721包括被标记为“ECC组件”的可靠性数据组件。
数据元素730包括八个代表性数据字节,组件[0]至组件[7]。
在操作中,存储器控制器340使数据元素730的部分在存储器信道710之间交错,并将数据元素730的可靠性数据存储在进一步的存储体721中。例如,存储器控制器340将数据元素730的组件[0]存储在存储体711的A[0]中,将数据元素730的组件[1]存储在存储体712的B[0]中,将数据元素730的组件[2]存储在存储体713的C[0]中,以此类推至将数据元素730的组件[7]存储在存储体718的H[0]中。存储器控制器340进一步将与数据组件[7]至数据组件[0]对应的可靠性数据组件740存储在进一步的存储体721的字节位置[0]中。
通过使数据元素的字节在存储器信道的存储体之间交错并将所述可靠性数据字节存储在进一步存储器信道的进一步存储体中,当单个存储体发生故障时,存储器控制器340允许数据恢复。
然而,存储器控制器340具有在其它全功能的存储体中重新创建故障的存储体的数据组件的能力。例如,因为存储器控制器340将数据元素的每个组件存储在存储体中,并使用来自进一步存储体的可靠性数据组件覆盖每个组件,所以故障存储体的每个数据元素组件被来自进一步存储体的相关联的可靠性数据覆盖。例如,使用SECDED码,存储器控制器340具有在故障的存储体中检测、校正和重新创建所有数据元素的能力。
通过使用诸如在上文图4至图7中公开的所述配置的配置,多核处理器310使用低廉的现成存储器来增强系统的可靠性、可得性和可维修性,而无需增加存储器芯片。
图8图示根据一些实施方案的写入数据的方法800的流程图。在动作框810处,从请求器接收数据元素的写入访问。在动作框820处,计算数据元素的可靠性数据。在动作框830处,将数据元素存储在地址空间的第一部分中。在动作框840处,将可靠性数据存储在所述地址空间的第二部分中。
图9图示根据一些实施方案的读取数据的方法900的流程图。例如,可针对先前使用图8的方法800写入的数据完成读取。在动作框910处,从请求器接收数据元素的读取访问。在决策框920处,从地址空间的第一部分读取数据元素。在一组动作框930处,确定可靠性数据是否被正确读取。
一组动作框930进一步包括:动作框932,其中计算从地址空间的第一部分读取的数据元素的可靠性数据以形成计算得到的可靠性数据;动作框934,其中读取存储在地址空间的第二部分中的可靠性数据以形成所存储的可靠性数据;和动作框936,其中将计算得到的可靠性数据与所存储的可靠性数据进行比较。
继续方法900,决策框940确定所存储的可靠性数据是否与计算得到的可靠性数据匹配。如果所存储的可靠性数据与计算得到的可靠性数据匹配,那么流程继续至动作框942,其将数据元素返回到请求器。如果所存储的可靠性数据与计算得到的可靠性数据不匹配,那么流程继续至决策框944,其确定可靠性数据是否可被校正。如果可靠性数据可被校正,那么流程继续至校正所述数据的动作框946和将经校正数据返回到请求器的动作框948。如果可靠性数据无法被校正,那么流程继续至动作框950,其将错误报告给请求器。
可使用上文图4至图7中描述的任何技术来执行存储及稍后检索数据和相应的可靠性数据。因此,在一些实施方案中,将地址空间划分成地址的第一连续部分和地址的第二连续部分,将数据元素存储在地址的第一连续部分中,并将可靠性数据存储在地址的第二连续部分中。在一些实施方案中,将地址空间划分成存储体的地址的第一连续部分和存储体的地址的第二连续部分,将数据元素存储在存储体的地址的第一连续部分中,并将可靠性数据存储在存储体的地址的第二连续部分中。在一些实施方案中,于在地址空间中具有一定顺序的多个存储体之间划分地址空间,地址空间的第一部分形成为多个组的预定数量的数据元素,其按所述顺序分布在所述多个存储体之间,并且地址空间的第二部分包括多个组的每一个的每个相应数据元素的可靠性数据元素,其中一组的可靠性数据位于紧随第二存储体之后的第一存储体中,所述第二存储体包括按所述顺序的所述组的最后一个数据元素。在一些实施方案中,使用第一信道和第二信道形成地址空间,所述第一信道包括多个存储体,将数据元素分布在第一信道中的多个存储体之间,并将数据元素的可靠性数据存储在第二信道中。
可使用硬件和软件的各种组合来实施图3的存储器控制器340,并且可将软件组件存储在计算机可读存储媒体中以供至少一个处理器执行。此外,在图4至图7中图示的地址映射也可至少部分由指令实施,所述指令存储在计算机可读存储媒体中并由实施存储器控制器340的功能的至少一个处理器执行。在图8和图9中示出的每个操作可对应于存储在非临时性计算机存储器或计算机可读存储媒体中的指令。在各种实施方案中,非临时性计算机可读存储媒体包括磁盘或光盘存储装置、固态存储装置(诸如闪存)或其它非易失性存储装置。存储在非临时性计算机可读存储媒体上的计算机可读指令可以是源代码、汇编语言代码、目标代码或由一个或多个处理器解译和/或可由其执行的其它指令格式。
此外,存储器控制器340和/或多核处理器310可由数据库或其它数据结构形式的计算机可访问数据结构来描述或表示,所述数据库或其它数据结构可由程序读取并直接或间接地使用以制造集成电路300。例如,这种数据结构可以是高级设计语言(HDL),诸如Verilog或VHDL中对硬件功能的行为级描述或寄存器传送级(RTL)描述。所述描述可由合成工具读取,所述合成工具可合成所述描述以产生包括来自合成库的门列表的网表。网表包括也表示包括集成电路300的硬件的功能的一组门。网表随后可被放置并路由,以产生描述将被应用到掩模的几何形状的数据集。所述掩模随后可用于各种半导体制造步骤,以制作集成电路300。替代地,计算机可访问存储媒体上的数据库可以是网表(具有或不具有合成库)或数据集(根据需要)或图形数据系统(GDS)II数据。
对本领域的技术人员将了解对所公开的实施方案的各种修改。本文中描述的存储器控制器可用于除多芯片模块100和200以外的易遭受数据损坏的其它集成电路配置。例如,使用倒装芯片接合将处理器和存储器芯片直接附接到主板衬底。存储器控制器和存储器还可以实施在相同的晶粒上,但出于其它原因而易遭受数据损坏,诸如通过在具有高级电磁干扰(EMI)的环境中使用。存储器芯片堆叠140或存储器芯片堆叠240可独立于集成电路300主存储器而实施,例如,实施为单独的CPU存储器、单独的图形处理单元(GPU)存储器、单独的APU存储器等。晶粒堆叠集成100和晶粒堆叠集成200可被实施为多芯片模块(MCM)。替代地,可将存储器芯片放置成在同一衬底上与CPU、GPU、APU、主存储器等相邻或共面。应注意,虽然多芯片模块100和200包括4芯片存储器芯片堆叠,但是其它实施方案可包括不同数量的存储器芯片。
存储器控制器340可与微处理器晶粒上的至少一个处理器核心集成(如在图3中示出),或可位于其自己的单独芯片上。在一些实施方案中,集成电路310可执行除计算功能以外的其它总体功能,诸如不需要CPU的逻辑功能。此外,虽然图3示出独立于CPU核心322和324的存储器控制器340,但是所述存储器控制器340也可形成在CPU核心或其它逻辑块内。
参考实施不同级别的可靠性和开销的各种地址映射来描述存储器控制器340的操作。图4至图7使用代表性数量的存储体来图示这些概念,但是本文中描述的技术可按比例缩放至不同数量的存储体。例如,如果使用四个DDR3芯片来实施存储器350,那么地址空间中的存储体的总数量将是32个。
可使用的可靠性数据的实例包括奇偶校验位、错误校正码位{例如,包括但不限于单错校正(SEC)、单错校正及双错检测(SEC-DED)、双位错误校正及三位错误检测(DEC-TED)、三错校正、四错检测(TEC-QED)和线性分组码,诸如博斯-乔赫里-霍克文黑姆(BCH)码}以及校验和(例如,CRC、消息摘要(MD5))。可提供对一个、两个或更多级别的ECC保护的支持,其中系统硬件或软件可作出选择来平衡性能和可靠性。
上文已在DRAM技术的背景下描述了存储器350。然而,存储器350可使用其它存储器技术实施,例如,静态随机存取存储器(SRAM)、相变存储器(PCM)、电阻式RAM技术(诸如忆阻器和自旋扭矩转移磁性RAM(STT-MRAM))和闪存。
在上文图4至图7中图示的实施方案按每八个字节的数据使用一个字节的可靠性数据。根据其它实施方案,给定数量的数据字节的可靠性数据的量可能不同。
在图示的实施方案中,存储器控制器340访问某些存储体的某个部分中的可靠性数据。根据一些实施方案,存储器控制器340可访问替代的存储体的替代部分。
一些图示的实施方案示出多个存储体之间数据元素与对应于所述数据元素的可靠性数据的交错。根据一些实施方案,所述交错和映射算法可被修改。
在一些实施方案中,示出了跨多个存储体的地址的连续部分。根据其它实施方案,地址的部分可以是地址的非连续部分,且可包括地址漏洞。
因此,随附权利要求旨在覆盖所公开的实施方案的落在所公开的实施方案的范围内的所有修改。

Claims (11)

1.一种集成电路(300),其包括:
存储器(350),其具有地址空间(600);和
存储器控制器(340),其耦合到所述存储器(350)以响应于接收到的存储器访问而访问所述地址空间,所述存储器控制器(340)进一步访问所述地址空间(600)的第一部分中的多个数据元素,和所述地址空间(600)的第二部分中与所述多个数据元素对应的可靠性数据,
其中:
所述地址空间(600)包括在所述地址空间(600)内具有一定顺序的多个存储体(610、620、630、640);
所述地址空间(600)的所述第一部分包括多个组的预定数量的数据元素,其按所述顺序分布在所述多个存储体(610、620、630、640)之间,其中所述存储器由多个存储器芯片形成并且所述多个存储体中的每一个存储体具有用于存储数据元素的多个页面,其中在访问新页面之前,必须通过向所述存储体发布预充电命令来关闭先前页面,并且通过发布激活命令来打开所述新页面;且
所述地址空间的所述第二部分包括用于所述多个组中的每一个组中的每个相应数据元素的可靠性数据,其中,用于所述多个组中的每一组数据元素的可靠性数据位于紧随存储该组数据元素中的最后一个数据元素的第二存储体之后的第一存储体中。
2.根据权利要求1所述的集成电路(300),其进一步包括:
存储器访问产生电路(320),其用于产生所述存储器访问并将所述存储器访问提供到所述存储器控制器(340)。
3.根据权利要求2所述的集成电路(300),其中:
所述存储器访问产生电路(320)包括中央处理单元核心。
4.根据权利要求2所述的集成电路(300),其中:
将所述存储器访问产生电路(320)和所述存储器控制器(340)组合在单个集成电路晶粒(310)上。
5.根据权利要求1所述的集成电路(300),其中:
所述存储器(350)包括布置在存储器芯片堆叠(140、240)中的多个存储器芯片(352、354、356、358)。
6.根据权利要求1所述的集成电路(300),其中:
所述可靠性数据包括多个错误校正码(ECC),其包括所述数据元素的每一个的至少一个错误校正码。
7.根据权利要求1所述的集成电路(300),其中:
所述可靠性数据包括多个循环冗余校验(CRC)码,其包括所述数据元素的每一个的至少一个循环冗余校验码。
8.一种方法,其包括:
从请求器接收(810)数据元素的写入访问;
计算(820)所述数据元素的可靠性数据;以及
将所述数据元素存储(830)在地址空间(600)的第一部分中,并将可靠性数据存储(840)在所述地址空间(600)的第二部分中,
其中所述存储(830、840)包括:
于在所述地址空间(600)内具有一定顺序的多个存储体(610、620、630、640)之间划分所述地址空间(600),其中存储器由多个存储器芯片形成并且所述多个存储体中的每一个存储体具有用于存储数据元素的多个页面,其中在访问新页面之前,必须通过向所述存储体发布预充电命令来关闭先前页面,并且通过发布激活命令来打开所述新页面;
将所述地址空间(600)的所述第一部分形成为多个组的预定数量的数据元素,其按所述顺序分布在所述多个存储体(610、620、630、640)之间;以及
形成所述地址空间(600)的所述第二部分包括用于所述多个组中的每一个组中的每个相应数据元素的可靠性数据,其中,用于所述多个组中的每一组数据元素的可靠性数据位于紧随存储该组数据元素中的最后一个数据元素的第二存储体之后的第一存储体中。
9.根据权利要求8所述的方法,其进一步包括:
从所述请求器接收(900)所述数据元素的读取访问;
从所述地址空间(600)的所述第一部分读取(920)所述数据元素;以及确定(930)所述可靠性数据是否被正确读取。
10.根据权利要求9所述的方法,其中所述确定(930)包括:
计算(932)从所述地址空间(600)的所述第一部分读取的所述数据元素的可靠性数据,以形成计算得到的可靠性数据;
读取(934)存储在所述地址空间(600)的所述第二部分中的所述可靠性数据,以形成所存储的可靠性数据;以及
将所述计算得到的可靠性数据与所述所存储的可靠性数据进行比较(936)。
11.根据权利要求10所述的方法,其进一步包括:
当所述所存储的可靠性数据与所述计算得到的可靠性数据匹配时,将所述数据元素返回(942)到所述请求器(320);以及
当所述所存储的可靠性数据与所述计算得到的可靠性数据不匹配时,确定所述可靠性数据是否可被校正(944);
当所述可靠性数据可被校正时,校正(948)所述数据并将经校正数据返回到所述请求器(320);以及
当所述可靠性数据无法被校正时,将错误报告(950)给所述请求器(320)。
CN201380064370.5A 2012-10-11 2013-10-08 高可靠性存储器控制器 Active CN104871137B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/649,745 US8984368B2 (en) 2012-10-11 2012-10-11 High reliability memory controller
US13/649,745 2012-10-11
PCT/US2013/063881 WO2014058879A1 (en) 2012-10-11 2013-10-08 High reliability memory controller

Publications (2)

Publication Number Publication Date
CN104871137A CN104871137A (zh) 2015-08-26
CN104871137B true CN104871137B (zh) 2019-02-01

Family

ID=49510512

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380064370.5A Active CN104871137B (zh) 2012-10-11 2013-10-08 高可靠性存储器控制器

Country Status (7)

Country Link
US (1) US8984368B2 (zh)
EP (1) EP2907030A1 (zh)
JP (1) JP6101807B2 (zh)
KR (1) KR101626040B1 (zh)
CN (1) CN104871137B (zh)
IN (1) IN2015DN02935A (zh)
WO (1) WO2014058879A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9753858B2 (en) 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
US9009548B2 (en) * 2013-01-09 2015-04-14 International Business Machines Corporation Memory testing of three dimensional (3D) stacked memory
US9798622B2 (en) * 2014-12-01 2017-10-24 Intel Corporation Apparatus and method for increasing resilience to raw bit error rate
US9800271B2 (en) * 2015-09-14 2017-10-24 Qualcomm Incorporated Error correction and decoding
US10013212B2 (en) * 2015-11-30 2018-07-03 Samsung Electronics Co., Ltd. System architecture with memory channel DRAM FPGA module
US10031801B2 (en) * 2015-12-01 2018-07-24 Microsoft Technology Licensing, Llc Configurable reliability for memory devices
JP6879592B2 (ja) * 2017-06-02 2021-06-02 ウルトラメモリ株式会社 半導体モジュール
US11494087B2 (en) 2018-10-31 2022-11-08 Advanced Micro Devices, Inc. Tolerating memory stack failures in multi-stack systems
KR20200065762A (ko) * 2018-11-30 2020-06-09 에스케이하이닉스 주식회사 메모리 시스템
KR20240045345A (ko) 2019-04-15 2024-04-05 양쯔 메모리 테크놀로지스 씨오., 엘티디. 프로세서 및 동적 랜덤 액세스 메모리를 갖는 본디드 반도체 장치 및 이를 형성하는 방법
CN110546762A (zh) * 2019-04-30 2019-12-06 长江存储科技有限责任公司 键合的统一半导体芯片及其制造和操作方法
WO2021158994A1 (en) * 2020-02-07 2021-08-12 Sunrise Memory Corporation Quasi-volatile system-level memory
US11656937B2 (en) * 2020-08-25 2023-05-23 Micron Technology, Inc. Techniques for error detection and correction in a memory system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7620875B1 (en) * 2006-03-07 2009-11-17 Xilinx, Inc. Error correction code memory system with a small footprint and byte write operation
CN101711385A (zh) * 2007-03-20 2010-05-19 先进微装置公司 非ecc组件中的ecc实现
CN102687121A (zh) * 2010-01-04 2012-09-19 美光科技公司 堆叠式存储器中的错误校正

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5329489A (en) 1988-03-31 1994-07-12 Texas Instruments Incorporated DRAM having exclusively enabled column buffer blocks
US5412787A (en) 1990-11-21 1995-05-02 Hewlett-Packard Company Two-level TLB having the second level TLB implemented in cache tag RAMs
US5848433A (en) 1995-04-12 1998-12-08 Advanced Micro Devices Way prediction unit and a method for operating the same
US5764946A (en) 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5845323A (en) 1995-08-31 1998-12-01 Advanced Micro Devices, Inc. Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US5802594A (en) 1995-09-06 1998-09-01 Intel Corporation Single phase pseudo-static instruction translation look-aside buffer
JPH09110582A (ja) 1995-10-11 1997-04-28 Kokusai Chodendo Sangyo Gijutsu Kenkyu Center 結晶製造装置
US6061759A (en) 1996-02-09 2000-05-09 Apex Semiconductor, Inc. Hidden precharge pseudo cache DRAM
US5974506A (en) 1996-06-28 1999-10-26 Digital Equipment Corporation Enabling mirror, nonmirror and partial mirror cache modes in a dual cache system
US20010034808A1 (en) 1996-07-19 2001-10-25 Atsushi Nakajima Cache memory device and information processing system
US5784391A (en) 1996-10-08 1998-07-21 International Business Machines Corporation Distributed memory system with ECC and method of operation
JPH10207726A (ja) * 1997-01-23 1998-08-07 Oki Electric Ind Co Ltd 半導体ディスク装置
US6044478A (en) 1997-05-30 2000-03-28 National Semiconductor Corporation Cache with finely granular locked-down regions
US6073230A (en) 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
US6138213A (en) 1997-06-27 2000-10-24 Advanced Micro Devices, Inc. Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line
US6016533A (en) 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
KR100313996B1 (ko) 1998-01-08 2001-12-28 구자홍 컴퓨터시스템의바이오스데이터저장장치및방법
JP3307579B2 (ja) * 1998-01-28 2002-07-24 インターナショナル・ビジネス・マシーンズ・コーポレーション データ記憶システム
US6038693A (en) 1998-09-23 2000-03-14 Intel Corporation Error correction scheme for an integrated L2 cache
US6314514B1 (en) 1999-03-18 2001-11-06 Ip-First, Llc Method and apparatus for correcting an internal call/return stack in a microprocessor that speculatively executes call and return instructions
US6493800B1 (en) 1999-03-31 2002-12-10 International Business Machines Corporation Method and system for dynamically partitioning a shared cache
US6353910B1 (en) * 1999-04-09 2002-03-05 International Business Machines Corporation Method and apparatus for implementing error correction coding (ECC) in a dynamic random access memory utilizing vertical ECC storage
US6629207B1 (en) 1999-10-01 2003-09-30 Hitachi, Ltd. Method for loading instructions or data into a locked way of a cache memory
US20020069317A1 (en) 2000-12-01 2002-06-06 Chow Yan Chiew E-RAID system and method of operating the same
US6804162B1 (en) 2001-04-05 2004-10-12 T-Ram, Inc. Read-modify-write memory using read-or-write banks
US6662272B2 (en) 2001-09-29 2003-12-09 Hewlett-Packard Development Company, L.P. Dynamic cache partitioning
US7007210B2 (en) 2002-01-30 2006-02-28 International Business Machines Corporation Method and system for handling multiple bit errors to enhance system reliability
US7234052B2 (en) 2002-03-08 2007-06-19 Samsung Electronics Co., Ltd System boot using NAND flash memory and method thereof
US6832294B2 (en) 2002-04-22 2004-12-14 Sun Microsystems, Inc. Interleaved n-way set-associative external cache
US7054999B2 (en) 2002-08-02 2006-05-30 Intel Corporation High speed DRAM cache architecture
US20050050278A1 (en) 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US7117290B2 (en) 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US7237098B2 (en) 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US20050228631A1 (en) 2004-04-07 2005-10-13 Maly John W Model specific register operations
US7558920B2 (en) 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7996644B2 (en) 2004-12-29 2011-08-09 Intel Corporation Fair sharing of a cache in a multi-core/multi-threaded processor by dynamically partitioning of the cache
JP4080527B2 (ja) 2005-03-22 2008-04-23 松下電器産業株式会社 キャッシュメモリ制御方法およびキャッシュメモリ制御装置
JP4201783B2 (ja) 2005-08-04 2008-12-24 富士通マイクロエレクトロニクス株式会社 キャッシュメモリ装置、半導体集積回路およびキャッシュ制御方法
US7676730B2 (en) 2005-09-30 2010-03-09 Quantum Corporation Method and apparatus for implementing error correction coding in a random access memory
US7707463B2 (en) 2005-11-30 2010-04-27 International Business Machines Corporation Implementing directory organization to selectively optimize performance or reliability
US7739576B2 (en) * 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US7809980B2 (en) 2007-12-06 2010-10-05 Jehoda Refaeli Error detector in a cache memory using configurable way redundancy
US8589706B2 (en) 2007-12-26 2013-11-19 Intel Corporation Data inversion based approaches for reducing memory power consumption
US20090276587A1 (en) 2008-04-30 2009-11-05 Moyer William C Selectively performing a single cycle write operation with ecc in a data processing system
US8266498B2 (en) 2009-03-31 2012-09-11 Freescale Semiconductor, Inc. Implementation of multiple error detection schemes for a cache
US8644104B2 (en) * 2011-01-14 2014-02-04 Rambus Inc. Memory system components that support error detection and correction
JP5426711B2 (ja) * 2011-06-08 2014-02-26 パナソニック株式会社 メモリコントローラ及び不揮発性記憶装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7620875B1 (en) * 2006-03-07 2009-11-17 Xilinx, Inc. Error correction code memory system with a small footprint and byte write operation
CN101711385A (zh) * 2007-03-20 2010-05-19 先进微装置公司 非ecc组件中的ecc实现
CN102687121A (zh) * 2010-01-04 2012-09-19 美光科技公司 堆叠式存储器中的错误校正

Also Published As

Publication number Publication date
KR20150070252A (ko) 2015-06-24
KR101626040B1 (ko) 2016-06-13
EP2907030A1 (en) 2015-08-19
CN104871137A (zh) 2015-08-26
US20140108885A1 (en) 2014-04-17
IN2015DN02935A (zh) 2015-09-18
JP6101807B2 (ja) 2017-03-22
JP2015535101A (ja) 2015-12-07
WO2014058879A1 (en) 2014-04-17
US8984368B2 (en) 2015-03-17

Similar Documents

Publication Publication Date Title
CN104871137B (zh) 高可靠性存储器控制器
US11003534B2 (en) Systems, methods, and apparatuses for stacked memory
US11704183B2 (en) Data integrity for persistent memory systems and the like
US8245109B2 (en) Error checking and correction (ECC) system and method
US7937641B2 (en) Memory modules with error detection and correction
CN103137215B (zh) 向存储器提供低延时错误纠正码能力
CN102687121A (zh) 堆叠式存储器中的错误校正
JP2003504722A (ja) コンピュータ・メモリ・システムにおけるマルチ‐ビット・エラー保護を向上させるためのシステムおよび方法
US20020147955A1 (en) Internal storage memory with EDAC protection
US11494087B2 (en) Tolerating memory stack failures in multi-stack systems

Legal Events

Date Code Title Description
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant