CN105210046B - 存储器等待时间管理 - Google Patents

存储器等待时间管理 Download PDF

Info

Publication number
CN105210046B
CN105210046B CN201480008840.0A CN201480008840A CN105210046B CN 105210046 B CN105210046 B CN 105210046B CN 201480008840 A CN201480008840 A CN 201480008840A CN 105210046 B CN105210046 B CN 105210046B
Authority
CN
China
Prior art keywords
data
error correction
correction code
memory device
memory
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
CN201480008840.0A
Other languages
English (en)
Other versions
CN105210046A (zh
Inventor
R·J·小罗伊尔
B·芬宁
黄荣汉
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 CN105210046A publication Critical patent/CN105210046A/zh
Application granted granted Critical
Publication of CN105210046B publication Critical patent/CN105210046B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

描述了用于管理存储器等待时间操作的装置、系统和方法。在一个实施例中,电子设备包括处理器以及存储器控制逻辑,用于从远程存储器设备接收数据,在本地高速缓存中存储所述数据,接收与所述数据相关联的纠错码指示符,以及响应于纠错码指示符实现数据管理策略。还公开和要求保护其他实施例。

Description

存储器等待时间管理
技术领域
本公开一般涉及电子领域。更具体地说,本发明的一些实施例一般涉及存储器等待时间管理。
背景技术
一些存储器系统可使用本地、快速存取存储器和一个或多个远程存储器设备实现,所述本地、快速存取存储器经常实施为易失性存储器并可以充当高速缓存,所述一个或多个远程存储器设备可包括非易失性存储器,例如相变存储器、NAND存储器等,或者甚至是磁或光存储器。
远程存储器设备比本地高速缓存具有更高的等待时间,其对系统性能造成负面影响。因此,改善等待时间的技术可发现其效用。
附图说明
参考附图提供详细的描述。在这些图中,附图标记的最左侧的数字标识这个附图标记第一次出现的图。在不同的图中的利用同样的附图标记标识类似的或相同的项。
图1是根据本文讨论的各种实施例的用于实现存储器等待时间管理的装置的组件的示意性框图。
图2是示出了根据本文讨论的各种实施例的用于实现存储器等待时间管理的方法中的操作的流程图。
图3-5是描述了根据本文讨论的各种实施例的实现存储器等待时间管理的方法中的操作的时间线的示意图。
图6-10是适于实现根据本文讨论的各种实施例的存储器等待时间管理的电子设备的示意性框图。
具体实施方式
一些存储器系统可利用本地、快速存取存储器和一个或多个远程存储器设备实现,所述本地、快速存取存储器经常被实施为易失性存储器并且可以充当高速缓存,所述一个或多个远程存储器设备可包括非易失性存储器,例如动态随机存取存储器或者甚至是磁或光存储器。作为示例,远程存储器设备可包括一个或多个列直插存储器模块(DIMM),其每一个可包括一个或多个存储器组,存储器组又可包括一个或多个动态随机存取存储器(DRAM)芯片或可包括非易失性存储器,例如相变存储器、NAND存储器等。一些电子设备(如智能电话、平板计算机等)可包括由一个或多个DRAM组成的更简单的远程存储器系统。
远程存储器设备可实现纠错码(ECC)算法以检测和纠正读错误。示例的ECC算法包括BCH纠错码和Reed-Solomon算法。这些ECC算法将额外的等待时间引入由远程存储器设备实现的读操作中。在各种实施例中,本文描述的技术通过以下操作减少了此类等待时间:用到主机的数据传输来流水线操作ECC纠正逻辑,在完成ECC算法之前,允许远程存储器设备在读操作期间返回得到的数据。发起所述数据请求的控制器可被配置为在等待来自远程存储器设备的ECC指示符时将从远程存储器设备接收的数据存储到本地存储器中。如果由远程存储器设备实现的ECC算法在数据中没检测到错误,则远程存储器设备转发指示数据是良好的ECC指示符,并且发起数据请求的控制器可处理所述数据。相反,如果由远程存储器设备实现的ECC算法在数据中检测到错误,则远程存储器设备转发指示数据是错误的ECC指示符,并且发起数据请求的控制器在继续处理数据前等待接收纠正的数据。
本文描述的技术可被提供在各种计算系统(例如包括服务器、桌面计算机、笔记本计算机、智能电话、平板计算机、便携式游戏控制台等)中,这些计算系统可包括存储器系统,存储器系统包括通常组装成双列直插存储器模块(DIMM)的多个存储芯片和非易失性存储器,例如相变存储器或NAND存储器。在这些实施例中,每一个DRAM可包括单独的刷新控制逻辑。备选地,可在DIMM级实现刷新控制逻辑以控制在DIMM中的多个DRAM的操作。
在接下来的描述中,为了提供各种实施例的透彻理解而阐述了许多的特定细节。然而,可在没有特定细节的情况下实践本发明的各种实施例。在其它实例中,不详细描述公知的方法、过程、组件和电路,从而不模糊本发明的特定实施例。另外,可利用各种部件实现本发明实施例的各个方面,各种部件例如集成半导体电路(“硬件”)、组织成一个或多个程序的计算机可读指令(“软件”)、或硬件和软件的某个组合。为了本公开的目的,对“逻辑”的引用将指硬件、软件或它们的某个组合。
图1是根据本文讨论的各种实施例的用于实现存储器等待时间管理的装置的组件的示意性框图。参考图1,在一些实施例中,中央处理单元(CPU)封装100可包含耦合到控制集线器120的一个或多个CPU 110和本地存储器130。控制集线器120包括存储器控制器122和存储器接口124。
存储器接口124通过通信总线160耦合到一个或多个远程存储器设备140。存储器设备140可包括控制器142和一个或多个存储器组150。在各种实施例中,可使用非易失性存储器实现存储器组150,非易失性存储器例如相变存储器、NAND(闪存)存储器、铁电随机存取存储器(FeTRAM)、基于纳米线的非易失性存储器、合并忆阻器技术的存储器、静态随机存取存储器(SRAM)、例如相变存储器(PCM)的三维(3D)交叉点存储器、自旋转移力矩存储器(STT-RAM)或NAND存储器。通过举例的方式,在一些实施例中,存储器设备140可包括耦合到存储器通道144的一个或多个列直插存储器模块(DIMM),存储器通道144提供到控制器142的通信链路。在存储器设备140中的存储器组150的具体配置并不关键。
如上面描述的,在一些实施例中,在存储器控制器122中的逻辑与在控制器142中的逻辑协作以管理存储器设备140中的读操作所对应的存储器等待时间。将参考图2描述由存储器控制器122和控制器142实现的操作。参考图2,在操作210处,存储器控制器122从主机接收对于数据的请求,例如从在CPU 110或耦合到控制集线器120的另一个处理器上执行的应用。在操作215处,存储器控制器122生成对于由应用请求的数据的数据请求。数据请求经由存储器接口124和总线160被转发到在存储器设备140中的控制器142。
在操作220处,控制器142接收数据请求,并且在操作225处,控制器142从存储器组150检索与数据请求相关联的数据。在操作230处,控制器142确定总线160是否空闲。如果在操作230处数据总线160不空闲(例如如果数据总线160正被用于传送数据),则控制转到操作235,并且控制器142实现ECC算法以检测和纠正从存储器组150检索的数据中的读错误。在操作240处,从存储器组150检索的数据经由总线160传送到存储器接口124。
在操作270处,存储器控制器122经由总线160接收数据。在操作275处,存储器控制器122评估数据是否有读错误。因为数据已遭受ECC检测和纠正操作,数据将没有错误,所以控制转到操作285,并且数据被返回给主机。
在图3中示出了与这些操作相关联的等待时间的时间线。参考图3,第一等待时间310与命令处理相关联,以及第二等待时间315与从存储器组150读数据中的读访问等待时间相关联。第三等待时间320与从存储器组150向控制器142的数据传输相关联。第四等待时间325与ECC检查和纠正进程325相关联。第五等待时间与从存储器设备140向控制集线器120的数据传输相关联。在图3中示出了对应于相应的等待时间的总和的总等待时间。
返回参考图2,如果在操作230处,数据总线160是空闲的,则控制转到操作245处,并且控制器142估计在请求的数据上执行ECC检查所需的时间。在一些实施例中,读操作具有固定和已知的大小,使得控制器可以提前确定ECC操作将花费多长时间。
在操作250处,控制器142实现将数据传输延迟一定时间量,该时间量对应于在操作245处确定的ECC延迟时间,然后在操作255处,控制器142启动从存储器设备140经由数据总线160到存储器接口124的请求数据的数据传送。在操作260处,控制器142对数据执行ECC检查并且在操作265处控制器142经由数据总线传送ECC指示符至存储器接口124。
在操作270处,存储器控制器122经由总线160接收数据和ECC指示符。在操作275处,存储器控制器122评估数据是否有读错误。在一个实施例中,当ECC检查确定来自存储器组150的读数据中已发生一个或多个读错误时,控制器142可传送重试或失败ECC指示符。如果在操作275处,没有指示错误,则控制转到操作285处并且控制器122返回数据给主机。
在图4中示出了与这些操作相关联的等待时间的时间线。参考图4,第一等待时间310与命令处理相关联,并且第二等待时间315与从存储器组150读数据中的读访问等待时间相关联。第三等待时间320与从存储器组150向控制器142的数据传输相关联。如在图4中所示的,当数据正被从存储器组150向控制器142传输时开始从存储器设备140向控制集线器120的数据传输。从而,与这个操作相关联的等待时间被移除。第四等待时间325与ECC检查进程325相关联。在图4中示出了对应于相应等待时间的总和的总等待时间。
返回参考图2,如果在操作275处指示错误,则控制转到操作280,并且控制器122丢弃接收的数据,并在返回数据给主机前等待控制器142发送纠正的数据(操作285)。
在图5中示出与这些操作相关联的等待时间的时间线。参考图5,第一等待时间310与命令处理相关联,并且第二等待时间315与从存储器组150读数据中的读访问等待时间相关联。第三等待时间320与从存储器组150向控制器142的数据传输相关联。如在图5中所示的,当数据正被从存储器组150向控制器142传输时开始从存储器设备140向控制集线器120的数据传输。从而,与这个操作相关联的等待时间被移除。第四等待时间325与ECC检查和纠正进程325相关联。第五等待时间与ECC纠正进程335相关联并且第六等待时间340与从存储器设备150向存储器组150向控制器142的纠正数据的传输相关联。在图5中示出了对应于相应的等待时间的总和的总等待时间。
如上面描述的,在一些实施例中电子设备可实施为计算机系统。图6示出了根据本发明的实施例的计算系统600的框图。计算系统600可包括经由互连网络(或总线)604通信的一个或多个中央处理单元(CPU)602或处理器。处理器602可包括通用处理器、网络处理器(其处理在计算机网络603上传递的数据)、或其他类型的处理器(包括精简指令集计算机(RISC)处理器或复杂指令集计算机(CISC))。而且,处理器602可具有单核或多核设计。具有多核设计的处理器602可在同一个集成电路(IC)管芯上集成不同类型的处理器核。同样,具有多核设计的处理器602可被实现为对称或非对称的多处理器。在一实施例中,一个或多个处理器602可以与图1的处理器102相同或类似。例如,处理器602中的一个或多个可包括参考图1-3讨论的控制单元120。同样,参考图3-4讨论的操作可以由系统600的一个或多个组件执行。
芯片组606可与互连网络604通信。芯片组606可包括存储器控制集线器(MCH)608。MCH 608可包括与存储器612(其可以与图1的控制器130相同或类似)通信的存储器控制器610。存储器412可存储数据,包括可由CPU 602或者包括在计算系统600中的任何其他设备执行的指令序列。在本发明的一个实施例中,存储器612可包括一个或多个易失性存储(或存储器)设备,例如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、或其他类型的存储设备。也可使用非易失性存储器,例如硬盘。另外的设备可经由互连网络604通信,例如多CPU和/或多系统存储器。
MCH 608也可包括与显示设备616通信的图形接口614。在本发明的一个实施例中,图形接口614可经由加速图形端口(AGP)与显示设备616通信。在本发明的实施例中,显示器616(如平板显示器)可通过例如信号转换器与图形接口614通信,信号转换器将存储在例如视频存储器或系统存储器的存储设备中的图像的数字表示转换成由显示器616解析和显示的显示信号。由显示设备产生的显示信号可在由显示器616解析并随后在显示器616上显示之前通过各种控制设备。
集线器接口618可允许MCH 618与输入/输出控制集线器(ICH)620通信。ICH 620可提供接口给与计算系统600通信的I/O设备。ICH 620可通过外设桥(或控制器)624与总线622通信,例如通过外围组件互连(PCI)桥、通用串行总线(USB)控制器、或其他类型的外设桥或控制器。桥624可在CPU 602和外设之间提供数据路径。可利用其他类型的拓扑结构。同样,多总线可与ICH 620通信,如通过多桥或控制器。而且,在本发明的各个实施例中,与ICH620通信的其它外设可包括集成驱动电子设备(IDE)或小型计算机系统接口(SCSI)硬驱动器、USB端口、键盘、鼠标、并行端口、串行端口、软盘驱动器、数字输出支持(例如数字视频接口(DVI))或其它设备。
总线622可与音频设备626、一个或多个磁盘驱动器628和网络接口设备630(其与计算机网络603通信)通信。其它设备可经由总线622总线。同样,在本发明的一些实施例中,各种组件(如网络接口设备630)可与MCH 608通信。此外,处理器602和本文讨论的一个或多个其它组件可被组合形成单个芯片(例如,以便提供片上系统(SOC))。此外,在本发明的其它实施例中,图形加速器616可被包括在MCH 608中。
此外,计算系统600可包括易失性和/或非易失性存储器(或存储装置)。例如,非易失性存储器可包括如下一个或多个:只读存储器(ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电EPROM(EEPROM)、盘驱动器(例如628)、软盘、压缩盘EOM(CD-ROM)、数字多功能盘(DVD)、闪存、磁光盘、或其他类型的能够存储电子数据(例如,包括指令)的非易失性机器可读介质。
图7示出了根据本发明的实施例的计算系统700的框图。系统700可包括一个或多个处理器702-1到702-N(本文统称为“多个处理器702”或“处理器702”)。处理器702可经由通信网络或总线704通信。每一个处理器可包括各种组件,为了清楚起见,仅仅参照处理器702-1讨论其中一些。因此,每一个剩下的处理器702-2到702-N可包括与参考处理器702-1所讨论的同样的或类似的组件。
在一实施例中,处理器702-1可包括一个或多个处理器核706-1到706-M(本文称为“多个核706”或更一般地称为“核706”)、共享高速缓存708、路由器710、和/或处理器控制逻辑或单元720。处理器核706可被实现在单个集成电路(IC)芯片上。而且,该芯片可包括一个或多个共享的和/或私有高速缓存(如高速缓存708)、总线或互连(如总线或互连网络712)、存储器控制器、或其它组件。
在一个实施例中,路由器710可被用于在处理器702-1和/或系统700的各种组件之间通信。而且,处理器702-1可包括不止一个路由器710。而且,众多路由器710可通信以使得数据能够在处理器702-1内部或外部的各种组件之间路由。
共享高速缓存708可存储由一个或多个处理器702-1(如核706)的组件利用的数据(例如包括指令)。例如,为了被处理器702的组件更快访问,共享高速缓存708可将存储的数据在本地高速缓存在存储器714中。在一实施例中,高速缓存708可包括中级高速缓存(如2级(L2)、3级(L3)、4级(L4)、或其它级高速缓存)、最终级高速缓存(LLC)和/或它们的组合。而且,处理器702-1的各种组件可通过总线(如总线712)和/或存储器控制器或集线器直接与共享高速缓存708通信。在一些实施例中,如在图7中所示的,一个或多个核706可包括1级(L1)高速缓存716-1(本文一般称为“L1高速缓存716”)。在一个实施例中,控制单元720可包括用于实现上面参考图2中的存储器控制器122描述的操作的逻辑。
根据本发明的实施例,图8示出了处理器核706和计算系统的其它组件的部件的框图。在一个实施例中,图8中所示的箭头示出指令通过核706的流向。一个或多个处理器核(如处理器核706)可实现在例如参照图7描述的单个集成电路芯片(或管芯)上。而且,芯片可包括一个或多个共享和/或私有高速缓存(例如图7的高速缓存708)、互连(例如图7的互连704和/或112)、控制单元、存储器控制器或其它组件。
如图8中所示,处理器核706可包括获取单元802以获取指令(包括具有条件分支的指令)以便由核706处理。可从例如存储器714的任何存储设备获取指令。核706也可包括解码单元804以解码所获取的指令。例如,解码单元804可将所获取的指令解码成多个内部指令(微操作)。
此外,核706可包括调度单元806。调度单元806可执行与存储已解码的指令(例如从解码单元804接收的)相关联的各种操作直到这些指令准备好用于分发,例如直到已解码的指令的所有源值变得可用。在一个实施例中,调度单元806可调度和/或发出(或分发)已解码的指令到执行单元808以用于执行。执行单元808在指令被解码(如通过解码单元804)和被分发(例如通过调度单元806)之后可执行已分发的指令。在一实施例中,执行单元808可包括不止一个执行单元。执行单元808也可执行各种算术操作,如加、减、乘、和/或除,以及可包括一个或多个算术逻辑单元(ALU)。在一实施例中,协处理器(未示出)可与执行单元808一起执行各种算术操作。
而且,执行单元808可无序执行指令。由此,在一个实施例中处理器核706可以是无序处理器核。核706也可包括引退单元810。引退单元810可在指令被提交后引退已执行的指令。在一实施例中,已执行指令的引退可导致处理器状态从指令的执行提交、由指令使用的物理寄存器被解除分配等。
核706也可包括总线单元714以使得处理器核706的组件和其它组件(例如参考图8讨论的这些组件)之间能够经由一个或多个总线(例如总线804和/或812)进行通信。核706也可包括一个或多个寄存器816以存储由核706的各种组件访问的数据(如与功耗状态设置有关的值)。
而且,即使图7示出了控制单元720经由互连812被耦合到核706,但是在各种实施例中,控制单元720也可被置于其它地方,如在核706内,经由总线704耦合到所述核等。
在一些实施例中,本文讨论的一个或多个组件可实现为片上系统(SOC)设备。图9示出了根据一实施例的SOC封装的框图。如在图9中所示的,SOC 902包括一个或多个中央处理单元(CPU)核920、一个或多个图形处理单元(GPU)核930、输入/输出(I/O)接口940和存储器控制器942。SOC封装902的各种组件可被耦合到互连或总线,如本文参考其它附图讨论的。同样,SOC封装902可包括更多或更少的组件,如本文参考其它附图讨论的。而且,SOC封装902的每一个组件可包括一个或多个组件,如本文参考其它附图讨论的。在一个实施例中,SOC封装902(及它的组件)被提供在一个或多个集成电路(IC)管芯上,例如其被封装成单个半导体设备。
如在图9中示出的,SOC封装902经由存储器控制器942耦合到存储器960(其可以是与本文参考其它附图讨论的存储器类似的或相同的)。在一实施例中,存储器960(或它的一部分)可被集成到SOC封装902上。
I/O接口940可被耦合到一个或多个I/O设备970,例如经由本文参考其他附图讨论的互连和/或总线。I/O设备970可包括一个或多个键盘、鼠标、触摸板、显示器、图像/视频捕捉设备(如照相机或便携式摄像机/录像机)、触摸屏、扬声器等。
图10示出了根据本发明的实施例的以点对点(PtP)配置布置的计算系统1000。具体地,图10示出一系统,其中处理器、存储器和输入/输出设备通过数个点对点接口互连。参考图2所讨论的操作可由系统1000的一个或多个组件执行。
如在图10中所示的,系统1000可包括若干处理器,其中出于清楚的目的,只示出了两个处理器1002和1004。处理器1002和1004可包括本地存储器控制器集线器(MCH)1006和1008以使得能够与存储器1010和1012通信。在一些实施例中MCH 1006和1008可包括图1的存储器控制器120和/或逻辑125。
在一实施例中,处理器1002和1004可以是参考图7讨论的处理器702中的一个。处理器1002和1004可分别利用PtP接口电路1016和1018经由点对点(PtP)接口1014交换数据。同样,处理器1002和1004可利用点对点接口电路1026、1028、1030和1032的每个经由PtP接口1022和1024与芯片组1020交换数据。芯片组1020可还经由高性能图形接口1036,例如利用PtP接口电路1037,与高性能图形电路1034交换数据。
如图10中所示,图1的核106和/或高速缓存108中的一个或多个可被置于处理器902和904中。然而本发明的其它实施例可存在于其它电路、逻辑单元或图9的系统900中的其它设备中。此外,本发明的其它实施例可分布遍及若干个电路、逻辑单元或在图9中所示的设备。
芯片组920可利用PtP接口电路941与总线940通信。总线940可具有与它通信的一个或多个设备,如总线桥942和I/O设备943。经由总线944,总线桥943可与其它设备通信,其它设备例如键盘/鼠标945、通信设备946(如调制解调器、网络接口设备、或可与计算机网络803通信的其它通信设备)、音频I/O设备、和/或数据存储设备948。数据存储设备948(其可以是硬盘驱动器或基于固态驱动器的NAND闪存)可存储可由处理器902和/或904执行的代码949。
以下示例涉及更多的实施例。
示例1是一种电子设备,包括处理器和存储器控制逻辑,存储器控制逻辑用于从远程存储器设备接收数据、将数据存储在本地高速缓存中、接收与数据相关联的纠错码指示符并且响应于纠错码指示符实现数据管理策略。
电子设备可还包括用于从主机设备接收对于数据的请求并且响应于来自主机设备的请求生成对于来自远程存储器设备的数据的请求的逻辑。电子设备可还包括用于在本地高速缓存中存储从远程存储器设备接收的数据的逻辑。
电子设备可还包括用于执行以下操作的逻辑:确定纠错码指示符是否指示从远程存储器设备检索的数据被无错误地检索,并且响应于确定数据被无错误地检索,返回数据给主机设备。该电子设备可还包括用于执行以下操作的逻辑:确定纠错码指示符是否指示从远程存储器设备检索的数据是否包括至少一个错误,并且响应于确定所述数据包括至少一个错误,从本地高速缓存中删除所述数据并且传送对于来自所述远程存储器设备的数据的新请求。
示例2是一种存储器控制器,包括用于执行以下操作的逻辑:从远程存储器设备接收数据、将所述数据存储在本地高速缓存中、接收与所述数据相关联的纠错码指示符、以及响应于所述纠错码指示符实现数据管理策略。
存储器控制器可还包括用于执行以下操作的逻辑:从主机设备接收对于数据的请求、确定所述数据被存储在远程存储器设备中、并且响应于来自主机设备的请求生成对于来自远程存储器设备的数据的请求。
存储器控制器可还包括用于在本地高速缓存中存储从远程存储器设备接收的数据的逻辑。存储器控制器可还包括用于执行以下操作的逻辑:确定纠错码指示符是否指示从远程存储器设备检索的数据被无错误地检索,并且响应于确定所述数据被无错误地检索,返回数据给主机设备。
存储器控制器可还包括用于执行以下操作的逻辑:确定纠错码指示符是否指示从远程存储器设备检索的数据是否包括至少一个错误,并且响应于确定所述数据包括至少一个错误,从本地高速缓存中删除所述数据并且传送对于来自远程存储器设备的数据的新请求。
示例3是一种包括存储器设备和存储器控制逻辑的装置,存储器设备具有一个或多个存储器单元,存储器控制逻辑用于经由数据总线从请求者接收对于存储在所述一个或多个存储器单元中的数据的请求、并且从所述一个或多个存储器单元检索数据、确定数据总线是否处于空闲状态、以及响应于确定数据总线处于空闲状态在数据总线上从装置向请求者传送数据、在数据已开始传送后启动纠错码算法、以及经由数据总线向请求者传送纠错码指示符。
装置可包括存储器控制逻辑以估计执行纠错控制算法所需的延迟时间和按照延迟时间延迟从装置向请求者传送数据。装置可包括存储器控制逻辑以在纠错码算法指示数据中的读错误时,传送重试纠错码指示符。
装置可包括存储器控制逻辑以纠正数据并且经由数据总线传送所纠正的数据给请求者。响应于确定数据总线不处于空闲状态,在数据总线上数据被从装置向请求者传送之前实现纠错码算法。
在示例4中,控制器包括逻辑以经由数据总线从请求者接收对于存储在一个或多个存储器单元中的数据的请求、并且从所述一个或多个存储器单元检索数据、确定数据总线是否处于空闲状态、以及响应于确定数据总线处于空闲状态在数据总线上从装置向请求者传送数据、在数据已开始传送后启动纠错码算法、以及经由数据总线向请求者传送纠错码指示符。
控制器可包括存储器控制逻辑以估计执行纠错控制算法所需的延迟时间和按照延迟时间延迟从装置向请求者传送数据。控制器可包括存储器控制逻辑以在纠错码算法指示数据中的读错误时,传送重试纠错码指示符。
控制器可包括存储器控制逻辑以纠正数据并且经由数据总线传送所纠正的数据给请求者。响应于确定数据总线不处于空闲状态,在数据总线上将数据从装置传送到请求者之前实现纠错码算法。
在本发明的各种实施例中,如参考图1-9的本文所讨论的操作,可实现为硬件(如电路)、软件、固件、微代码或它们的组合,其可被提供为计算机程序产品,例如包括在其上存储有指令(或软件过程)的有形(如非暂时性)机器可读或计算机可读介质,指令(或软件过程)被用于对计算机进行编程以执行本文所讨论的处理。同样,作为示例,术语“逻辑”可包括软件、硬件、或软件和硬件的组合。机器可读介质可包括如本文所讨论的存储设备。
在本说明书中提到的“一个实施例”或“一实施例”意思是结合该实施例描述的特定特征、结构或特性可被包括在至少一种实现中。在本说明书中的各个地方出现的短语“在一个实施例中”可能或可能不指同一个实施例。
同样,在本说明书和权利要求书中,可能使用了术语“耦合”和“连接”及其派生词。在本发明的一些实施例中,“连接”可被用于指示两个或多个元件彼此直接物理或电接触。“耦合”可意味着两个或多个元件彼此直接物理或电接触。然而,“耦合”还可意味着两个或多个元件可能不彼此直接物理或电接触,但是仍然彼此协作和交互。
因此,即使已经以对于结构特征和/或方法论动作特定的语言描述本发明的实施例,但是应该理解的是所要求保护的主题并不限于描述的特定特征或动作。而是,特定特征和动作被公开为实现所要求保护的主题的样本形式。

Claims (20)

1.一种电子设备,包括:
处理器;以及
存储器控制逻辑,用于:
从远程存储器设备接收数据;以及
将所述数据存储在本地高速缓存中;
接收与所述数据相关联的纠错码指示符;以及
响应于所述纠错码指示符指示在所述数据中没检测到错误,处理所述数据,或者响应于所述纠错码指示符指示在所述数据中检测到错误,等待接收纠正的数据,其中所述纠错码指示符是在从所述远程存储器设备传送所述数据之前由所述远程存储器设备对所述数据执行纠错码算法的结果。
2.如权利要求1所述的电子设备,还包括用于执行以下操作的逻辑:
从主机设备接收对于所述数据的请求;以及
响应于来自所述主机设备的所述请求生成对于来自所述远程存储器设备的所述数据的请求。
3.如权利要求1所述的电子设备,其中所述远程存储器设备包括一个或多个动态随机存取存储器。
4.如权利要求2所述的电子设备,还包括用于执行以下操作的逻辑:
确定所述纠错码指示符是否指示从所述远程存储器设备检索的所述数据被无错误地检索;以及
响应于确定所述数据被无错误地检索,返回所述数据给所述主机设备。
5.如权利要求3所述的电子设备,还包括用于执行以下操作的逻辑:
确定所述纠错码指示符是否指示从所述远程存储器设备检索的所述数据包括至少一个错误;以及
响应于确定所述数据包括至少一个错误:
从所述本地高速缓存删除所述数据;以及
传送对于来自所述远程存储器设备的所述数据的新请求。
6.一种存储器控制器,包括用于执行以下操作的逻辑:
从远程存储器设备接收数据;以及
将所述数据存储在本地高速缓存中;
接收与所述数据相关联的纠错码指示符;以及
响应于所述纠错码指示符指示在所述数据中没检测到错误,处理所述数据,或者响应于所述纠错码指示符指示在所述数据中检测到错误,等待接收纠正的数据,其中所述纠错码指示符是在从所述远程存储器设备传送所述数据之前由所述远程存储器设备对所述数据执行纠错码算法的结果。
7.如权利要求6所述的存储器控制器,还包括用于执行以下操作的逻辑:
从主机设备接收对于所述数据的请求;
确定所述数据被存储在所述远程存储器设备中;以及
响应于来自所述主机设备的所述请求而生成对于来自所述远程存储器设备的所述数据的请求。
8.如权利要求6所述的存储器控制器,其中所述远程存储器设备包括一个或多个动态随机存取存储器。
9.如权利要求7所述的存储器控制器,还包括用于执行以下操作的逻辑:
确定所述纠错码指示符是否指示从所述远程存储器设备检索的所述数据被无错误地检索;以及
响应于确定所述数据被无错误地检索,返回所述数据给所述主机设备。
10.如权利要求8所述的存储器控制器,还包括用于执行以下操作的逻辑:
确定所述纠错码指示符是否指示从所述远程存储器设备检索的所述数据包括至少一个错误;以及
响应于确定所述数据包括至少一个错误:
从所述本地高速缓存删除所述数据;以及
传送对于来自所述远程存储器设备的所述数据的新请求。
11.一种电子装置,包括:
具有一个或多个存储器单元的存储器设备;
存储器控制逻辑,用于:
经由数据总线从请求者接收对于存储在所述一个或多个存储器单元中的数据的请求;以及
从所述一个或多个存储器单元检索所述数据;
确定所述数据总线是否处于空闲状态,并且响应于确定所述数据总线处于空闲状态:
在所述数据总线上从所述装置向所述请求者传送所述数据;以及
经由所述数据总线向所述请求者传送纠错码指示符,使得所述请求者能够响应于所述纠错码指示符指示在所述数据中没检测到错误,处理所述数据,或者响应于所述纠错码指示符指示在所述数据中检测到错误,等待接收纠正的数据,其中所述纠错码指示符是在从所述存储器设备传送所述数据之前由所述存储器设备对所述数据执行纠错码算法的结果。
12.如权利要求11所述的电子装置,其中所述存储器控制逻辑还包括用于执行以下操作的逻辑:
估计执行所述纠错码算法所需的延迟时间;以及
按照所述延迟时间延迟从所述装置向所述请求者传送数据。
13.如权利要求11所述的电子装置,其中所述存储器控制逻辑包括用于在所述纠错码算法指示所述数据中的读错误时传送重试纠错码指示符的逻辑。
14.如权利要求13所述的电子装置,其中所述存储器控制逻辑包括用于执行以下操作的逻辑:
纠正所述数据;以及
经由所述数据总线传送纠正的数据给所述请求者。
15.如权利要求11所述的电子装置,其中,响应于确定所述数据总线不处于空闲状态,在所述数据总线上将所述数据从所述装置传送到所述请求者之前实现所述纠错码算法。
16.一种控制器,包括用于执行以下操作的逻辑:
经由数据总线从请求者接收对于存储在存储器设备的一个或多个存储器单元中的数据的请求;以及
从所述一个或多个存储器单元检索所述数据;
确定所述数据总线是否处于空闲状态,并且响应于确定所述数据总线处于空闲状态:
在所述数据总线上从所述存储器设备向所述请求者传送所述数据;以及
经由所述数据总线向所述请求者传送纠错码指示符,使得所述请求者能够响应于所述纠错码指示符指示在所述数据中没检测到错误,处理所述数据,或者响应于所述纠错码指示符指示在所述数据中检测到错误,等待接收纠正的数据,其中所述纠错码指示符是在从所述存储器设备传送所述数据之前由所述存储器设备对所述数据执行纠错码算法的结果。
17.如权利要求16所述的控制器,还包括用于执行以下操作的逻辑:
估计执行所述纠错码算法所需的延迟时间;以及
按照所述延迟时间延迟从所述存储器设备向所述请求者传送数据。
18.如权利要求16所述的控制器,还包括用于在所述纠错码算法指示所述数据中的读错误时传送重试纠错码指示符的逻辑。
19.如权利要求18所述的控制器,还包括用于执行以下操作的逻辑:
纠正所述数据;以及
经由所述数据总线传送纠正的数据给所述请求者。
20.如权利要求16所述的控制器,其中,响应于确定所述数据总线不处于空闲状态,在所述数据总线上将所述数据从所述存储器设备传送到所述请求者之前实现所述纠错码算法。
CN201480008840.0A 2013-03-13 2014-02-26 存储器等待时间管理 Active CN105210046B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
MYPI2013000863A MY180992A (en) 2013-03-13 2013-03-13 Memory latency management
MYPI2013000863 2013-03-13
PCT/US2014/018513 WO2014163880A1 (en) 2013-03-13 2014-02-26 Memory latency management

Publications (2)

Publication Number Publication Date
CN105210046A CN105210046A (zh) 2015-12-30
CN105210046B true CN105210046B (zh) 2021-10-19

Family

ID=51658789

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480008840.0A Active CN105210046B (zh) 2013-03-13 2014-02-26 存储器等待时间管理

Country Status (9)

Country Link
US (2) US9904592B2 (zh)
EP (1) EP2972916B1 (zh)
JP (1) JP6137582B2 (zh)
KR (1) KR101669784B1 (zh)
CN (1) CN105210046B (zh)
BR (1) BR112015019392B1 (zh)
MY (1) MY180992A (zh)
RU (1) RU2618938C2 (zh)
WO (1) WO2014163880A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6176113B2 (ja) * 2011-09-02 2017-08-09 日本電気株式会社 電池制御システム、電池制御装置、電池制御方法、およびプログラム
MY180992A (en) 2013-03-13 2020-12-15 Intel Corp Memory latency management
US10055164B2 (en) * 2016-09-07 2018-08-21 Sandisk Technologies Llc Data storage at an access device
US10069597B2 (en) * 2016-09-07 2018-09-04 Western Digital Technologies, Inc. Aggregated metadata transfer at a data storage device
US10282251B2 (en) * 2016-09-07 2019-05-07 Sandisk Technologies Llc System and method for protecting firmware integrity in a multi-processor non-volatile memory system
US10127184B2 (en) 2016-09-27 2018-11-13 Intel Corporation Low overheard high throughput solution for point-to-point link
CN108363544B (zh) * 2017-01-26 2021-05-07 建兴储存科技(广州)有限公司 固态储存装置及其读取重试方法
US10621091B2 (en) 2018-05-04 2020-04-14 Micron Technology, Inc. Apparatuses and methods to perform continuous read operations
CN113050874A (zh) * 2019-12-26 2021-06-29 华为技术有限公司 一种内存设置方法以及装置

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6287965A (ja) * 1985-10-14 1987-04-22 Fuji Photo Film Co Ltd 感光材料現像装置
JPH0341537A (ja) 1989-07-10 1991-02-22 Fujitsu Ltd 記憶装置のリトライリード制御方式
JPH0425954A (ja) 1990-05-22 1992-01-29 Nec Corp メモリ装置のエラー処理方式
JPH07146825A (ja) * 1993-11-22 1995-06-06 Okuma Mach Works Ltd メモリシステム
JP3534917B2 (ja) * 1995-11-08 2004-06-07 株式会社日立製作所 メモリアクセス制御方法
JP4105819B2 (ja) * 1999-04-26 2008-06-25 株式会社ルネサステクノロジ 記憶装置およびメモリカード
US7287649B2 (en) * 2001-05-18 2007-10-30 Broadcom Corporation System on a chip for packet processing
US6683817B2 (en) 2002-02-21 2004-01-27 Qualcomm, Incorporated Direct memory swapping between NAND flash and SRAM with error correction coding
EP1538525A1 (en) * 2003-12-04 2005-06-08 Texas Instruments Incorporated ECC computation simultaneously performed while reading or programming a flash memory
US7958430B1 (en) 2005-06-20 2011-06-07 Cypress Semiconductor Corporation Flash memory device and method
US8291295B2 (en) * 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US8892963B2 (en) * 2005-11-10 2014-11-18 Advanced Micro Devices, Inc. Error detection in high-speed asymmetric interfaces utilizing dedicated interface lines
US7617437B2 (en) 2006-02-21 2009-11-10 Freescale Semiconductor, Inc. Error correction device and method thereof
CN101401096A (zh) * 2006-03-16 2009-04-01 晟碟以色列有限公司 数据存储管理方法和设备
US8171251B2 (en) * 2006-03-16 2012-05-01 Sandisk Il Ltd. Data storage management method and device
US7636813B2 (en) * 2006-05-22 2009-12-22 International Business Machines Corporation Systems and methods for providing remote pre-fetch buffers
JP2008090433A (ja) * 2006-09-29 2008-04-17 Toshiba Corp メモリコントローラ、メモリシステム及びデータ転送方法
US7644344B2 (en) * 2007-05-15 2010-01-05 Intel Corporation Latency by offsetting cyclic redundancy code lanes from data lanes
US8239732B2 (en) * 2007-10-30 2012-08-07 Spansion Llc Error correction coding in flash memory devices
CN201229544Y (zh) * 2008-07-03 2009-04-29 鸿富锦精密工业(深圳)有限公司 具改良型散热结构的计算机
US20100162037A1 (en) * 2008-12-22 2010-06-24 International Business Machines Corporation Memory System having Spare Memory Devices Attached to a Local Interface Bus
JP4511618B2 (ja) 2009-01-23 2010-07-28 ソリッド ステート ストレージ ソリューションズ エルエルシー 外部記憶装置およびそのメモリアクセス制御方法
US8438453B2 (en) * 2009-05-06 2013-05-07 Apple Inc. Low latency read operation for managed non-volatile memory
CN102640116B (zh) * 2009-09-28 2016-01-20 辉达公司 对外部dram的错误检测和纠正
US20110084248A1 (en) * 2009-10-13 2011-04-14 Nanya Technology Corporation Cross point memory array devices
US8656251B2 (en) * 2011-09-02 2014-02-18 Apple Inc. Simultaneous data transfer and error control to reduce latency and improve throughput to a host
MY180992A (en) 2013-03-13 2020-12-15 Intel Corp Memory latency management

Also Published As

Publication number Publication date
EP2972916B1 (en) 2020-12-30
BR112015019392A2 (pt) 2017-07-18
EP2972916A4 (en) 2017-04-12
RU2015133910A (ru) 2017-02-17
WO2014163880A1 (en) 2014-10-09
EP2972916A1 (en) 2016-01-20
KR101669784B1 (ko) 2016-10-27
KR20150104165A (ko) 2015-09-14
JP2016510927A (ja) 2016-04-11
US10572339B2 (en) 2020-02-25
MY180992A (en) 2020-12-15
BR112015019392B1 (pt) 2022-10-11
CN105210046A (zh) 2015-12-30
US9904592B2 (en) 2018-02-27
US20160034345A1 (en) 2016-02-04
RU2618938C2 (ru) 2017-05-11
US20190129792A1 (en) 2019-05-02
JP6137582B2 (ja) 2017-05-31

Similar Documents

Publication Publication Date Title
US10572339B2 (en) Memory latency management
CN106663472B (zh) 非易失性存储器中的恢复算法
US10073731B2 (en) Error correction in memory
EP3014623B1 (en) Hybrid memory device
US20160283111A1 (en) Read operations in memory devices
KR101743409B1 (ko) 메모리 관리
KR101732841B1 (ko) 내장된 ecc 어드레스 맵핑
TWI642055B (zh) 非依電性記憶體模組
KR102549070B1 (ko) 휘발성 메모리에 대한 극성 기반 데이터 트랜스퍼 기능
CN107077875B (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
GR01 Patent grant
GR01 Patent grant