CN107636618A - 在具有嵌入式可编程数据检查的非易失性系统存储器计算系统中的即时重启 - Google Patents
在具有嵌入式可编程数据检查的非易失性系统存储器计算系统中的即时重启 Download PDFInfo
- Publication number
- CN107636618A CN107636618A CN201680030356.7A CN201680030356A CN107636618A CN 107636618 A CN107636618 A CN 107636618A CN 201680030356 A CN201680030356 A CN 201680030356A CN 107636618 A CN107636618 A CN 107636618A
- Authority
- CN
- China
- Prior art keywords
- memory controller
- audit function
- memory
- dimm cards
- data audit
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1417—Boot up procedures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/02—Disposition of storage elements, e.g. in the form of a matrix array
- G11C5/04—Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
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)
- Detection And Correction Of Errors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Memory System (AREA)
Abstract
描述了一种装置。所述装置包括具有可编程部件的存储器控制器。所述可编程部件用于实现数据检查功能。所述可编程部件用于接收并且处理来自被耦合到存储器控制器的两个或更多DIMM卡的数据检查功能的部分结果。
Description
技术领域
发明的领域一般地涉及计算系统,并且,更特别地,涉及在具有嵌入式可编程数据检查的非易失性系统存储器计算系统中的即时重启。
背景技术
计算系统通常包括系统存储器(或主存储器),所述系统存储器(或主存储器)包含系统的(一个或多个)处理器当前正在执行的软件代码的程序代码和数据。在许多计算机系统中的相关瓶颈是系统存储器。此处,如在本领域中理解的那样,计算系统通过执行存储在系统存储器中的程序代码来操作。当执行时程序代码从/向系统存储器读取并且写数据。因此,以计算系统的操作的过程上的许多程序代码和数据读取以及许多数据写大量地利用系统存储器。系统存储器因此是理想地既高性能又功率高效。
附图说明
可以从以下具体实施方式结合以下附图获得对本发明的更好的理解,在其中:
图1示出了具有多级别存储器的计算系统;
图2示出了支持多存储器通道和相关联的DIMM卡的存储器控制器;
图3a示出了具有可编程功能以执行应用特定数据检查的处理核心、存储器控制器和DIMM;
图3b示出了可以在图3a的架构上被执行的过程的流程图;
图4示出了存储器页面的示例性绘图;
图5示出了第一应用软件特定存储器页面数据检查场景;
图6示出了第二应用软件特定存储器页面数据检查场景;
图7示出了第三应用软件特定存储器页面数据检查场景;
图8示出了用于对应用软件特定存储器页面数据检查功能进行编程的各种途径(avenue);
图9示出了计算系统的实施例。
具体实施方式
实现高性能系统的一个方式是要具有多分层(multi-tiered)系统存储器。图1示出了具有多分层或多级别系统存储器112的计算系统100的实施例,所述多分层或多级别系统存储器112具有存储器侧高速缓存。将存储器侧高速缓存(近(near)存储器高速缓存113)用于存储系统存储器条目,所述系统存储器条目是(和/或被期望是)被和/或将被计算系统更频繁地调用的条目。近存储器高速缓存113具有比较低分层系统存储器部件(远存储器114)低的访问时间。通过将更频繁地调用的条目存储在近存储器中,系统存储器将被观察为较快,因为系统将经常调用正被保持在较快的近存储器113中的条目。
根据一些实施例,例如,通过具有比远存储器114快的时钟速度,近存储器113展现出减少的访问时间。此处,近存储器113可以是较快的易失性系统存储器技术(例如,高性能DRAM)。相比之下,远存储器114可以是以较慢时钟速度实现的易失性存储器技术(例如,接收较慢时钟的DRAM部件),或者,例如,固有地比易失性/DRAM存储器慢的非易失性存储器技术。
例如,较低级别114可以由新出现的非易失性三维交叉点(crosspoint)随机存取存储器技术组成,诸如仅列出几个可能性:基于相变的存储器(例如,SXP或PCMS)、基于铁电的存储器(例如,FRAM)、基于磁的存储器(例如,MRAM)、基于自旋转移力矩的存储器(spintransfer torque based memory)(例如,STT-RAM)、基于电阻器的存储器(例如,ReRAM)或基于“忆阻器”(Memristor)的存储器。此类新出现的非易失性随机存取存储器技术通常具有以下内容的一些组合:1)比DRAM高的存储密度(例如,通过在3D电路结构中进行构造);2)比DRAM低的功耗密度(例如,因为它们不需要刷新);和/或3)比DRAM慢但仍然比诸如闪存之类的传统非易失性存储器技术快的访问延迟。后面的特性尤其允许以主系统存储器角色而不是较低级别存储角色(其是非易失性记忆装置的传统架构位置)使用新出现的非易失性存储器技术。
在各种实施例中,远存储器214充当真实的系统存储器,因为其支持较细粒度的数据访问(例如,高速缓存线)而不是与传统的较低层非易失性记忆装置相关联的基于较大块的访问,和/或否则充当CPU的(一个或多个)处理器正在执行的程序代码从中操作的(例如,字节)可寻址存储器。
因为近存储器113充当高速缓存,所以近存储器113可以不具有其自己的个别寻址空间。而是,仅远存储器114包括计算系统的主存储器的个别可寻址存储器空间。在各种实施例中,近存储器113真实地充当用于远存储器114的高速缓存,而不是充当最后级别CPU高速缓存。通常,CPU级别高速缓存能够跨系统存储器寻址空间的整体保持高速缓存线,所述系统存储器寻址空间的整体对于处理核心117而言是可用的,所述处理核心117被集成在与存储器控制器116相同的半导体芯片上。
例如,在各种实施例中,参考图2,用插入到存储器通道220_1中的DIMM卡221实现系统存储器,其中单个DIMM卡具有DRAM和新出现的非易失性存储器芯片两者,并且DRAM芯片有效地充当用于非易失性存储器芯片的板上(on board)高速缓存。理想地,任何特定的DIMM卡的被更频繁地访问的高速缓存线将在该DIMM卡的DRAM芯片上而不是在它的非易失性存储器芯片上被发现。鉴于通常将多个DIMM卡插入到工作计算系统中并且仅给予每个DIMM卡可用于DIMM卡耦合到的半导体芯片或CPU封装的处理核心的系统存储器地址的部分,DRAM芯片正在充当用于它们与之共享DIMM卡的非易失性存储器的高速缓存而不是最后级别CPU高速缓存。
在其他配置中,可以将仅具有DRAM芯片的DIMM卡插入到与仅具有非易失性系统存储器芯片的DIMM卡相同的系统存储器通道(例如,DDR通道)中。理想地,将在DRAM DIMM卡中而不是在非易失性存储器DIMM卡中找到通道的更频繁地使用的高速缓存线。因此,再次,因为通常存在耦合到具有多个处理核心的相同半导体芯片的多个存储器通道,所以DRAM芯片正在充当用于它们与之共享相同的通道的非易失性存储器芯片的高速缓存而不是充当最后级别CPU高速缓存。
在另外的其他实施例中,可以给予在系统存储器内(例如,布置在DRAM DIMM卡上)的DRAM设备它们自己的唯一的系统寻址空间,所述系统寻址空间与提供给非易失性系统存储器设备(例如,布置在非易失性系统存储器DIMM卡上)的系统寻址空间分离。在该情况中,与充当用于较低区域的高度缓存的较高区域相反,构造(architect)系统存储器以具有较高性能地址区域和较低性能地址区域。在另外的其他实施例中,系统存储器仅具有非易失性存储器设备。
无论具体的系统存储器实现如何,以上讨论都指示可以将非易失性存储器设备用作真实的系统存储器设备而不是传统的较低级别存储设备。非易失性系统存储器的使用提供各种非传统计算系统方法。
这些之一是“即时重启(instant restart)”。此处,当使传统计算系统通电时,将软件程序代码从较低级别传统记忆装置加载到系统存储器中。在计算系统的初始通电和计算机准备好被使用的时刻之间消耗的时间,其可以相当长,在很大程度上是软件加载过程的函数。
然而,对于非易失性系统存储器,可以显著地减少加载过程。此处,将软件程序代码简单地加载到系统存储器中,其中还将它保持为传统存储。在计算机系统通电时,软件已经存在于系统存储器中——没有加载是必须的。
在未预见到的掉电事件之后,即时重启可能是特别有帮助的。此处,当移除电源时,软件大概正在从系统存储器中执行并且处于某“状态”。即,软件沿着具有指派给软件的多个变量的具体数据值的一个或多个特定执行路径。理论上,由于非易失性系统存储器的存在,软件可能“在其停止的地方重新开始(pick back up right were it left off)”。即,一旦计算系统再次是可操作的,软件就可以从其在未预见到的掉电时(或只是在未预见到的掉电之前)处于的状态再次开始操作。仍然,由于软件加载的缺乏,软件可以令人信服地在计算机再次通电之后立刻从该状态重启。
复杂性是在数据被视为正确的以便进一步操作之前需要对其进行检查的事实。在硬件中,这可以例如通过对数据执行循环冗余检查(CRC)来实现。不幸的是,常常写软件本身以检测未预见到的掉电事件并且然后自行地(on its own accord)验证数据是正确的。这涉及从系统存储器调用大量的数据并且涉及使数据由系统的处理核心执行。来自系统存储器的数据的加载和其到处理核心的高速缓存级别中的转发可以消耗大量的时间并且击败非易失性系统存储器的即时重启可能性。
图3a示出了特别地包括可编程逻辑电路以执行应用软件的数据检查功能的改进的硬件架构。如以下更详细地描述的那样,将应用软件程序的数据检查功能“导入(portinto)”到硬件中作为逻辑功能H()、G()和F()的各种组合之一。此处,H()可以被视为驻留在处理器核心317(或存储器控制器316的其他架构位置“北”)中的可编程电路。同样地,G()可以被视为驻留在存储器控制器316中的可编程电路,并且F()可以被视为被加载到一个或多个DIMM卡或其他系统存储器设备封装中的可编程电路。
因此,将总体环境布置成遵循在图3b中图示的过程。首先,定义应用软件的数据检查功能301(例如,通过从应用软件被提取或通过被提供为它的可分离的或兄弟(sibling)部件)。然后,将数据检查功能编译或否则将数据检查功能切换成对底层硬件进行编程以执行数据检查功能的信息302。如以下更详细地描述的那样,基于在系统存储器内的应用软件的存储器页面的任何交织,可以将信息划分为硬件的不同的架构部件(例如,处理核心H()、存储器控制器G()、DIMM卡H())。此处,数据检查序列通常是可容易地划分的因为它们具有强可交换(commutative)性质。即,处理数据的顺序是不相干的。例如,可以将数据检查功能实现为在F()、G()和H()之间划分的一个大XOR功能。数据检查功能可以是任意复杂的软件操作。然而,对于在其中数据检查功能不是可交换的情况,被检查的数据的单元应驻留在被使用的功能的级别处。例如,如果整个数据适配在单个DIMM内,则仅使用F()。替代地,如果整个数据适配在单个通道(存储器控制器)内,则仅使用G()。
然后,在重启序列时,通过编程的硬件而不是通过软件来检查数据303。因为在硬件中检查数据,可以在(一个或多个)处理核心“之下”(例如,在存储器控制器G()中和/或在DIMM卡H()上)检查其中的很多数据,因此避免了大量的数据从系统存储器直到(一个或多个)处理核心中的传递。因此,即时重启更接近于实际实现。
如在本领域中理解的那样,页面是用于应用软件程序的数据的收集(collection),可以将其作为单元切换到存储器中以及切换到存储器外。此处,通过软件程序将信息的一个或多个页面调用到存储器中,其中,通常存在可以通过软件程序和/或底层操作系统即时和/或虚拟机器监视器调用到存储器中的页面的大小和/或页面的数量的一些限制。在操作中,为了实现存储器的高效使用,被调用到存储器中的页面是需要的页面或认为需要的页面,被切换出存储器的页面是不需要的页面或认为不需要的页面。
每个页面还被视为被分解成诸如高速缓存线之类的较小个别可寻址数据单元。图4示出了具有标记了a到h的8个高速缓存线的页面的示例性绘图。当然这仅是示例性的。存储器页面和它们的相关联的数据单元倾向于是各种大小的,导致了在每个存储器页面的单元的数量方面的各种各样的实施例。
存储器交织是可以通过其跨不同物理资源、诸如跨不同的DIMM或不同的存储器控制器展开页面的数据单元的技术。此处,软件程序常常可以具有对在大致相同的时间帧中的相同页面上的数据的调用。通过跨多个物理资源展开相同页面的数据单元,系统存储器对这些数据单元的访问可以比串行化性质更并行化性质的。就另一方式来说,如果相同页面的所有数据单元存储在相同的存储器芯片中并且应用软件瞬时想要所有数据单元,则系统在连续地单独访问每个数据单元时除了等待之外将没有选择。
如上所述,在系统存储器的软件应用的存储器页面内的数据的任何交织可以是在确定图3的哪个可编程划分H()、G()、F()执行哪个功能时的因素。图5示出了其中将整个页面存储在相同的DIMM 521上的第一可能场景。在该情况中,可以通过在DIMM卡上的F()功能来执行用于软件应用的整个数据检查功能。如果相同地构造用于整个应用的存储器占用(memory footprint),则可以通过系统的一个或多个DIMM卡来执行应用的所有存储器页面的整个数据检查功能,在系统的一个或多个DIMM卡中保持了软件应用的页面。在每个DIMM卡上,在从DIMM检查第一页面之后,检查下一个页面,直到检查了DIMM上的应用的所有页面。
图6示出了其中在不同的DIMM上展开相同页面的高速缓存线的另一个场景。特别地,第一DIMM卡621_1具有高速缓存线a、c、e、g并且第二DIMM卡621_2具有高速缓存线b、d、f、h。因此在DIMM卡621_1上的F()功能可以对高速缓存线a、c、e、g执行数据检查,并且在DIMM卡621_2上的F()功能可以对高速缓存线b、d、f、h执行数据检查。在两个DIMM上的两个F()功能的数学结果类似于仍然需要被组合以完成用于整个页面的数据检查功能的部分产物或部分结果。因此,DIMM卡621_1从高速缓存线a、c、e、g向存储器控制器616的G()功能发送部分结果,并且DIMM卡621_2从高速缓存线b、d、f、h向存储器控制器616的G()功能发送部分结果。存储器控制器的G()功能然后通过用接收的部分结果的两者执行计算来完成针对整个页面的数据检查。
再次,如果类似地构造软件应用的所有存储器页面,则可以根据相同过程来检查软件应用的所有存储器页面。在所有DIMM卡都已经报告了所有存储器页面的所有部分结果并且存储器控制器已经对来自相同页面的所有部分产物执行计算之后,就将完整地检查了应用的存储器页面。如果在系统存储器中将应用的存储器页面实现为图5和6的场景的组合,那么可以通过以上关于图5和6描述的过程的组合完整地检查应用的存储器页面。
图6的场景涉及其中将不同的DIMM卡621_1、621_2耦合到相同存储器控制器616的环境。如描绘的那样,将不同的DIMM卡621_1、621_2耦合到源自相同存储器控制器616的不同的存储器通道。在其他实施例中,可以将不同的DIMM卡621_1、621_2耦合到相同的存储器通道。此外,图6的场景假设仅两个不同的DIMM卡保持单个存储器页面的所有高速缓存线。在替代的实施例中,多于两个DIMM卡可以存储单个存储器页面的高速缓存线。
图6的场景示出了每个存储器控制器的仅一个G()功能。然而,各种实现可以包括每个存储器控制器的多于一个G()功能实例。例如,支持八个存储器通道的存储器控制器可以具有两个G()功能实例(每四个存储器通道一个)。同样地,多于一个F()功能实例可以驻留在任何DIMM卡或其他系统存储器设备封装上。
图7示出了又一场景,其中不仅在多个DIMM卡上展开相同存储器页面的数据单元,而且附加地在多个存储器控制器716_1、716_2以及每个存储器控制器的多个DIMM卡上展开所述相同存储器页面的数据单元。特别地,将DIMM卡721_1和721_2耦合到存储器控制器716_1,并且将DIMM卡721_3和721_4耦合到存储器控制器716_2。
如在图7中观察到的那样,对存储器页面进行交织,使得DIMM卡721_1保持高速缓存线a和e,DIMM卡721_2保持高速缓存线c和g,DIMM卡721_3保持高速缓存线b和f,并且DIMM卡721_4保持高速缓存线d和h。因此,通过DIMM卡721_1上的F()功能计算针对高速缓存线a和e的部分数据检查结果,并且通过DIMM卡721_2上的F()功能计算针对高速缓存线c和g的部分数据检查结果。将这些部分数据检查结果转发到存储器控制器716_1上的G()功能,其创建了考虑了高速缓存线a、e、c和g的组合的部分数据检查结果。
类似地,通过DIMM卡721_3上的F()功能计算针对高速缓存线b和f的部分数据检查结果,并且通过DIMM卡721_4上的F()功能计算针对高速缓存线d和h的部分数据检查结果。将这些部分数据检查结果转发到存储器控制器716_2上的G()功能,其创建了考虑了高速缓存线b、f、d和h的组合的部分数据检查结果。然后将来自存储器控制器716_1和716_2的组合的部分数据检查结果转发到其H()功能执行对于存储器页面的最终数据检查的处理核心。可以通过将整个检查功能的输出与存储的值比较来执行对于存储器页面的最终检查。可以将值存储在寄存器空间或存储器空间中。在各种实施例中,可以用在F()、G()和H()级别的任何级别处的逻辑(硬件和/或软件)来执行针对存储的值的功能输出的检查(例如,如果在G()级别处实现整个数据检查功能,则可以在存储器控制器处或者在更高处理器级别处执行检查)。
在各种实施例中,多个存储器控制器716_1、716_2可以存在于相同的管芯上(例如,将处理器核心的集合耦合到相同半导体管芯上的多个系统存储器控制器)或至少存在于相同的CPU封装(例如,多个片上系统(SOC)半导体管芯,每个具有存储器控制器和处理器核心的相应的集合)内。在后者的情况下,存储器控制器716_1和716_2在不同的半导体管芯上,并且将管芯中的一个的核心中的一个的H()功能用于执行针对存储器页面的最终数据检查计算。
因此,取决于在硬件中已经对存储器页面进行交织的方式,可以在硬件中划分用于存储器页面的数据检查序列。
通过其将软件的数据检查例程导出到硬件中的机制可以根据实施例变化。参考图8,如在本领域中理解的那样,通常以源代码(例如,C++)来编写软件应用。可以将应用的数据检查例程的源代码表示801编译成诸如抽象代码802或目标代码803之类的较低形式的代码。抽象代码802是可以通过在硬件处理器上“运行”的解释器或虚拟机被执行的代码的形式。目标代码803直接在处理器上运行。
在各种实现中,将H()、G()或F()功能中的任何功能实现为执行本地存储器(例如,直接是微控制器或处理核心的存储器或否则是微控制器或处理核心关联的存储器)中的程序代码的微控制器、处理核心或数字信号处理器(其中的所有都可以被称为“处理器”)。此处,可以将软件应用的数据检查例程的源代码表示801编译成可以通过在处理器上运行的解释器或虚拟机执行的抽象代码802,或者,可以将软件应用的数据检查例程的源代码表示801编译成通过处理器直接执行的目标代码。可以通过SOC的标准的处理核心实现H()功能,但是,注意,与用处理核心执行所有数据检查的方法相比,图5、6和7的场景减少了涉及H()功能的信息的量。
在又一个方法中,可以将H()、G()或F()功能中的任何功能实现为诸如可编程逻辑设备(PLD)或现场可编程门阵列(FPGA)之类的可编程逻辑硬件。可编程逻辑硬件不像处理器所做的那样执行程序代码。而是,将要被硬件执行的逻辑功能编程到硬件的硬件电路中。例如,可以熔断保险丝以解耦去往/来自某些逻辑门的路线,或者,可以以实现期望的逻辑功能的查找表信息加载嵌入式存储器(例如,SRAM)。在其中用可编程逻辑硬件实现H()、G()或F()功能中的任何功能的情况下,可以将应用软件的数据检查例程的源代码801编译成可以被用于对可编程逻辑硬件设备进行最终编程的硬件电路描述格式804。各种实现可以采用(一个或多个)处理器和可编程逻辑硬件设备的组合来实现系统的H()、G()和F()功能中的任何功能。
图9示出了诸如个人计算系统(例如,台式或膝上型)或诸如平板设备或智能电话之类的移动的或手持式计算系统之类的示例性计算系统900的绘图。在图9中观察到的计算系统可以包括以上讨论的H()、G()和F()中的任何。
如在图9中观察到的那样,基本的计算系统可以包括中央处理单元901(其可以包括,例如,多个通用处理核心和布置在应用处理器或多核心处理器上的主存储器控制器)、系统存储器902、显示器903(例如,触摸屏、平板)、本地有线点到点链接(例如,USB)接口04、各种网络I/O功能905(诸如以太网接口和/或蜂窝调制解调器子系统)、无线局域网(例如,WiFi)接口906、无线点到点链接(例如,蓝牙)接口907和全球定位系统接口908、各种传感器909_1到909_N(例如,陀螺仪、加速度计、磁力计、温度传感器、压力传感器、湿度传感器等中的一个或多个)、照相机910、电池911、功率管理控制单元912、扬声器和麦克风913和音频编码器/解码器914。如在本文中描述的那样,显示器903可以是由LED驱动器电路驱动的LED显示器。
应用处理器或多核心处理器950可以包括在其CPU 901内的一个或多个通用处理核心915、一个或多个图形处理单元916、存储器管理功能917(例如,存储器控制器)和I/O控制功能918。通用处理核心915通常执行计算系统的操作系统和应用软件。图形处理单元916通常执行图形密集功能以例如生成在显示器903上呈现的图形信息。存储器控制功能917与系统存储器902对接。系统存储器902可以是多级别系统存储器。在操作期间,通常在最低级别非易失性(例如,“盘”)记忆装置920和系统存储器902之间传递数据和/或指令。功率管理控制单元912通常控制系统900的功耗。
相对于在适当的情况下也包括集成的外围设备(例如,照相机910)的总体计算系统,触摸屏显示器903、通信接口904-907、GPS接口908、传感器909、照相机910和扬声器/麦克风编码解码器913、914全部中的每个都可以被视为各种形式的I/O(输入和/或输出)。取决于实现,可以将这些I/O部件中的各种部件集成在应用处理器/多核心处理器950上或者可以位于管芯之外或者位于应用处理器/多核心处理器950的封装之外。
本发明的实施例可以包括如以上记载的各种过程。可以在机器可执行指令中实现过程。可以将指令用于使得通用或专用处理器执行某些过程。替代地,可以由包含用于执行过程的硬连线(hardwired)逻辑的具体硬件部件来执行这些过程,或由编程的计算机部件和定制的硬件部件的任何组合来执行这些过程。
还可以将本发明的元素提供为用于存储机器可执行指令的机器可读介质。机器可读介质可以包括但不限于软盘、光盘、CD-ROM和磁光盘、闪存存储器、ROM、RAM、EPROM、EEPROM、磁卡或光卡、传播介质或适用于存储电子指令的其他类型的介质/机器可读介质。例如,可以下载本发明作为计算机程序,可以经由通信链路(例如,调制解调器或网络连接)通过在载波或者其他传播介质中实现的数据信号的方式将所述计算机程序从远程计算机(例如,服务器)传递到请求计算机(例如,客户端)。
在前述的说明书中,已经参考本发明的具体示例性实施例描述了本发明。然而,很明显,在不脱离如在所附的权利要求书中记载的本发明的更广的精神和范围的情况下,可以对本发明做出各种修改和改变。相应地,要将说明书和附图视为说明性的而不是限制性的意义。
Claims (21)
1.一种装置,包括:
存储器控制器,其包括可编程部件,所述可编程部件用于实现数据检查功能,所述可编程部件用于接收并且处理来自被耦合到所述存储器控制器的两个或更多DIMM卡的所述数据检查功能的部分结果。
2.如权利要求1所述的装置,其中所述可编程部件包括处理器。
3.如权利要求1所述的装置,其中所述可编程部件包括可编程逻辑硬件部件。
4.如权利要求3所述的装置,其中所述可编程逻辑硬件部件包括可编程逻辑设备。
5.如权利要求3所述的装置,其中所述可编程硬件部件包括现场可编程门阵列。
6.如权利要求1所述的装置,其中通过至少两个存储器通道将所述两个或更多DIMM耦合到所述存储器控制器。
7.如权利要求1所述的装置,其中将所述存储器控制器耦合到具有第二可编程部件的处理核心以接收并且处理来自所述可编程部件的所述数据检查功能的部分结果。
8.一种计算系统,包括:
一个或多个DIMM卡,其具有相应的第一可编程部件以实现数据检查功能;
存储器控制器,其具有第二可编程部件以实现所述数据检查功能,所述存储器控制器用于接收并且处理来自所述一个或多个DIMM卡的所述数据检查功能的部分结果。
9.如权利要求8所述的计算系统,其中所述存储器控制器包括第三可编程部件以接收并且处理来自所述存储器控制器被耦合到的一个或多个其他DIMM卡的所述数据检查功能的其他部分结果。
10.如权利要求9所述的计算系统,进一步包括第二存储器控制器,其具有第三可编程部件以实现所述数据检查功能,所述存储器控制器用于接收并且处理来自所述第二存储器控制器被耦合到的一个或多个其他DIMM卡的所述数据检查功能的部分结果。
11.如权利要求10所述的计算系统,其中将所述第一和第二存储器控制器耦合到处理核心,所述处理核心具有第四可编程部件以接收并且处理来自所述第一和第二存储器控制器的所述数据检查功能的部分结果。
12.如权利要求10所述的计算系统,其中将所述第一和第二存储器控制器布置在不同的半导体管芯上。
13.如权利要求8所述的装置,其中所述第一可编程部件是如下内容中的任何内容:
处理器;
可编程逻辑硬件部件。
14.如权利要求8所述的装置,其中所述第二可编程部件是如下内容中的任何内容:
处理器;
可编程逻辑硬件部件。
15.一种装置,包括:
用于将数据检查功能的第一部件编程到DIMM卡内的装置;
用于将所述数据检查功能的第二部件编程到所述DIMM卡被耦合到的存储器控制器内的装置;
用于执行所述DIMM卡上的所述数据检查功能的所述第一部件以产生所述数据检查功能的部分结果并且将所述部分结果转发到所述DIMM卡被耦合到的存储器控制器的装置;
用于用所述存储器控制器上的所述部分结果来执行所述数据检查功能的所述第二部件的装置。
16.如权利要求15所述的装置,其中所述用于所述第一部件的编程的装置包括如下内容中的任何内容:
用于将抽象程序代码加载到所述DIMM卡上的处理器上的装置;
用于将目标代码加载到所述DIMM卡上的处理器上的装置;
用于将硬件描述加载到所述DIMM卡上的可编程逻辑硬件部件中的装置。
17.如权利要求16所述的装置,其中所述用于所述第二部件的编程的装置包括如下内容中的任何内容:
用于将抽象程序代码加载到所述DIMM卡上的处理器上的装置;
用于将目标代码加载到所述DIMM卡上的处理器上的装置;
用于将硬件描述加载到所述DIMM卡上的可编程逻辑硬件部件中的装置。
18.如权利要求16所述的装置,进一步包括
用于将所述数据检查功能的相应的第一部件编程到第二DIMM卡中的装置;
用于执行所述第二DIMM卡上的所述数据检查功能的所述相应的第一部件以产生所述数据检查功能的第二部分结果并且将所述第二部分结果转发到存储器控制器的装置。
19.如权利要求16所述的装置,进一步包括:
用于将所述数据检查功能的相应的第一部件编程到第二DIMM卡中的装置;
用于执行所述第二DIMM卡上的所述数据检查功能的所述相应的第一部件以产生所述数据检查功能的第二部分结果并且将所述第二部分结果转发到第二存储器控制器的装置。
20.如权利要求19所述的装置,其中所述第一和第二存储器控制器在相同的CPU封装内。
21.一种装置,包括:
DIMM卡,其具有可编程部件以实现存储器页面数据检查功能。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/751,760 US10387259B2 (en) | 2015-06-26 | 2015-06-26 | Instant restart in non volatile system memory computing systems with embedded programmable data checking |
US14/751760 | 2015-06-26 | ||
PCT/US2016/031613 WO2016209383A1 (en) | 2015-06-26 | 2016-05-10 | Instant restart in non volatile system memory computing systems with embedded programmable data checking |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107636618A true CN107636618A (zh) | 2018-01-26 |
CN107636618B CN107636618B (zh) | 2022-04-12 |
Family
ID=57586071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680030356.7A Active CN107636618B (zh) | 2015-06-26 | 2016-05-10 | 在具有嵌入式可编程数据检查的非易失性系统存储器计算系统中的即时重启 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10387259B2 (zh) |
JP (1) | JP2018524648A (zh) |
CN (1) | CN107636618B (zh) |
TW (1) | TWI698743B (zh) |
WO (1) | WO2016209383A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9792224B2 (en) | 2015-10-23 | 2017-10-17 | Intel Corporation | Reducing latency by persisting data relationships in relation to corresponding data in persistent memory |
US11126550B1 (en) | 2017-09-01 | 2021-09-21 | Crossbar, Inc | Integrating a resistive memory system into a multicore CPU die to achieve massive memory parallelism |
US10838637B2 (en) | 2018-02-08 | 2020-11-17 | Micron Technology, Inc. | Status management in storage backed memory package |
US11099995B2 (en) | 2018-03-28 | 2021-08-24 | Intel Corporation | Techniques for prefetching data to a first level of memory of a hierarchical arrangement of memory |
US11477616B2 (en) | 2020-11-30 | 2022-10-18 | Getac Technology Corporation | Safety detection controller |
US11604773B2 (en) | 2020-11-30 | 2023-03-14 | Whp Workflow Solutions, Inc. | Hierarchical data ingestion in a universal schema |
US11977993B2 (en) | 2020-11-30 | 2024-05-07 | Getac Technology Corporation | Data source correlation techniques for machine learning and convolutional neural models |
US11468671B2 (en) | 2020-11-30 | 2022-10-11 | Getac Technology Corporation | Sentiment analysis for situational awareness |
US11605288B2 (en) | 2020-11-30 | 2023-03-14 | Whp Workflow Solutions, Inc. | Network operating center (NOC) workspace interoperability |
US11271810B1 (en) | 2020-11-30 | 2022-03-08 | Getac Technology Corporation | Heterogeneous cross-cloud service interoperability |
US11720414B2 (en) * | 2020-11-30 | 2023-08-08 | Whp Workflow Solutions, Inc. | Parallel execution controller for partitioned segments of a data model |
US11630677B2 (en) | 2020-11-30 | 2023-04-18 | Whp Workflow Solutions, Inc. | Data aggregation with self-configuring drivers |
US11540027B2 (en) | 2020-11-30 | 2022-12-27 | Getac Technology Corporation | Performant ad hoc data ingestion |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020184579A1 (en) * | 2001-04-23 | 2002-12-05 | Alvarez Manuel J. | System and method for recognizing and configuring devices embedded on memory modules |
CN101110048A (zh) * | 2007-08-22 | 2008-01-23 | 杭州华三通信技术有限公司 | 一种实现差错检查与纠正功能的装置 |
CN102016808A (zh) * | 2008-05-01 | 2011-04-13 | 惠普发展公司,有限责任合伙企业 | 将检查点数据存储于非易失性存储器中 |
CN104025060A (zh) * | 2011-09-30 | 2014-09-03 | 英特尔公司 | 支持近存储器和远存储器访问的存储器通道 |
Family Cites Families (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5265211A (en) * | 1992-01-02 | 1993-11-23 | International Business Machines Corporation | Arbitration control logic for computer system having dual bus architecture |
TW239203B (en) * | 1994-08-13 | 1995-01-21 | United Microelectronics Corp | Encoding/decoding device |
US5912839A (en) | 1998-06-23 | 1999-06-15 | Energy Conversion Devices, Inc. | Universal memory element and method of programming same |
JP2001265647A (ja) * | 2000-03-17 | 2001-09-28 | Mitsubishi Electric Corp | 基板システム、基板システムにおけるメモリ制御方法および基板システムにおけるメモリ置換方法 |
JP2003248594A (ja) * | 2002-02-26 | 2003-09-05 | Hitachi Ltd | データ誤りチェックシステム |
US6754117B2 (en) * | 2002-08-16 | 2004-06-22 | Micron Technology, Inc. | System and method for self-testing and repair of memory modules |
US7475174B2 (en) | 2004-03-17 | 2009-01-06 | Super Talent Electronics, Inc. | Flash / phase-change memory in multi-ring topology using serial-link packet interface |
US7590918B2 (en) | 2004-09-10 | 2009-09-15 | Ovonyx, Inc. | Using a phase change memory as a high volume memory |
US20070005922A1 (en) | 2005-06-30 | 2007-01-04 | Swaminathan Muthukumar P | Fully buffered DIMM variable read latency |
US20070220228A1 (en) | 2006-03-15 | 2007-09-20 | Inventec Corporation | Computer memory configuration inspection method and system |
US7600078B1 (en) | 2006-03-29 | 2009-10-06 | Intel Corporation | Speculatively performing read transactions |
US7913147B2 (en) | 2006-05-08 | 2011-03-22 | Intel Corporation | Method and apparatus for scrubbing memory |
US8000134B2 (en) * | 2006-05-15 | 2011-08-16 | Apple Inc. | Off-die charge pump that supplies multiple flash devices |
US7756053B2 (en) | 2006-06-30 | 2010-07-13 | Intel Corporation | Memory agent with error hardware |
US7493439B2 (en) | 2006-08-01 | 2009-02-17 | International Business Machines Corporation | Systems and methods for providing performance monitoring in a memory system |
WO2008040028A2 (en) | 2006-09-28 | 2008-04-03 | Virident Systems, Inc. | Systems, methods, and apparatus with programmable memory control for heterogeneous main memory |
US7761624B2 (en) | 2006-09-28 | 2010-07-20 | Virident Systems, Inc. | Systems and apparatus for main memory with non-volatile type memory modules, and related technologies |
US8427891B2 (en) | 2007-04-17 | 2013-04-23 | Rambus Inc. | Hybrid volatile and non-volatile memory device with a shared interface circuit |
US20080270811A1 (en) | 2007-04-26 | 2008-10-30 | Super Talent Electronics Inc. | Fast Suspend-Resume of Computer Motherboard Using Phase-Change Memory |
WO2008139441A2 (en) | 2007-05-12 | 2008-11-20 | Anobit Technologies Ltd. | Memory device with internal signal processing unit |
US8892942B2 (en) | 2007-07-27 | 2014-11-18 | Hewlett-Packard Development Company, L.P. | Rank sparing system and method |
US8225181B2 (en) * | 2007-11-30 | 2012-07-17 | Apple Inc. | Efficient re-read operations from memory devices |
JP4617405B2 (ja) * | 2008-02-05 | 2011-01-26 | 富士通株式会社 | 不良メモリを検出する電子機器、不良メモリ検出方法およびそのためのプログラム |
US20090313416A1 (en) | 2008-06-16 | 2009-12-17 | George Wayne Nation | Computer main memory incorporating volatile and non-volatile memory |
US8331857B2 (en) | 2009-05-13 | 2012-12-11 | Micron Technology, Inc. | Wireless interface to program phase-change memories |
US8250282B2 (en) | 2009-05-14 | 2012-08-21 | Micron Technology, Inc. | PCM memories for storage bus interfaces |
US8504759B2 (en) | 2009-05-26 | 2013-08-06 | Micron Technology, Inc. | Method and devices for controlling power loss |
US20100306453A1 (en) | 2009-06-02 | 2010-12-02 | Edward Doller | Method for operating a portion of an executable program in an executable non-volatile memory |
US9123409B2 (en) | 2009-06-11 | 2015-09-01 | Micron Technology, Inc. | Memory device for a hierarchical memory architecture |
US8914568B2 (en) | 2009-12-23 | 2014-12-16 | Intel Corporation | Hybrid memory architectures |
US8612809B2 (en) | 2009-12-31 | 2013-12-17 | Intel Corporation | Systems, methods, and apparatuses for stacked memory |
US20110208900A1 (en) | 2010-02-23 | 2011-08-25 | Ocz Technology Group, Inc. | Methods and systems utilizing nonvolatile memory in a computer system main memory |
KR20110131781A (ko) | 2010-05-31 | 2011-12-07 | 삼성전자주식회사 | 위치정보의 정확도 확인방법 및 장치 |
US8649212B2 (en) | 2010-09-24 | 2014-02-11 | Intel Corporation | Method, apparatus and system to determine access information for a phase change memory |
US8838935B2 (en) | 2010-09-24 | 2014-09-16 | Intel Corporation | Apparatus, method, and system for implementing micro page tables |
JP2012103999A (ja) * | 2010-11-12 | 2012-05-31 | Hitachi Ltd | メモリエラーによるシステム停止を軽減するためのメモリ制御方法 |
US8612676B2 (en) | 2010-12-22 | 2013-12-17 | Intel Corporation | Two-level system main memory |
US8462577B2 (en) | 2011-03-18 | 2013-06-11 | Intel Corporation | Single transistor driver for address lines in a phase change memory and switch (PCMS) array |
US8462537B2 (en) | 2011-03-21 | 2013-06-11 | Intel Corporation | Method and apparatus to reset a phase change memory and switch (PCMS) memory cell |
US8607089B2 (en) | 2011-05-19 | 2013-12-10 | Intel Corporation | Interface for storage device access over memory bus |
US8605531B2 (en) | 2011-06-20 | 2013-12-10 | Intel Corporation | Fast verify for phase change memory with switch |
US8463948B1 (en) | 2011-07-01 | 2013-06-11 | Intel Corporation | Method, apparatus and system for determining an identifier of a volume of memory |
WO2013048483A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Platform storage hierarchy with non-volatile random access memory having configurable partitions |
WO2013048500A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy over common memory channels |
WO2013048491A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Apparatus, method and system that stores bios in non-volatile random access memory |
CN103946819B (zh) | 2011-09-30 | 2017-05-17 | 英特尔公司 | 用于非易失性系统存储器的统计耗损均衡 |
EP2761466B1 (en) | 2011-09-30 | 2020-08-05 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy |
CN103946816B (zh) | 2011-09-30 | 2018-06-26 | 英特尔公司 | 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram) |
WO2013048485A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Autonomous initialization of non-volatile random access memory in a computer system |
WO2013048503A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy having different operating modes |
WO2013048467A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Generation of far memory access signals based on usage statistic tracking |
EP2973571B1 (en) | 2013-03-15 | 2020-04-22 | Intel Corporation | A memory system |
US9547594B2 (en) | 2013-03-15 | 2017-01-17 | Intel Corporation | Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage |
KR20150074655A (ko) * | 2013-12-24 | 2015-07-02 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
US8996838B1 (en) * | 2014-05-08 | 2015-03-31 | Sandisk Technologies Inc. | Structure variation detection for a memory having a three-dimensional memory configuration |
US9535820B2 (en) | 2015-03-27 | 2017-01-03 | Intel Corporation | Technologies for application validation in persistent memory systems |
-
2015
- 2015-06-26 US US14/751,760 patent/US10387259B2/en active Active
-
2016
- 2016-05-09 TW TW105114311A patent/TWI698743B/zh active
- 2016-05-10 WO PCT/US2016/031613 patent/WO2016209383A1/en active Application Filing
- 2016-05-10 JP JP2017553233A patent/JP2018524648A/ja active Pending
- 2016-05-10 CN CN201680030356.7A patent/CN107636618B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020184579A1 (en) * | 2001-04-23 | 2002-12-05 | Alvarez Manuel J. | System and method for recognizing and configuring devices embedded on memory modules |
CN101110048A (zh) * | 2007-08-22 | 2008-01-23 | 杭州华三通信技术有限公司 | 一种实现差错检查与纠正功能的装置 |
CN102016808A (zh) * | 2008-05-01 | 2011-04-13 | 惠普发展公司,有限责任合伙企业 | 将检查点数据存储于非易失性存储器中 |
CN104025060A (zh) * | 2011-09-30 | 2014-09-03 | 英特尔公司 | 支持近存储器和远存储器访问的存储器通道 |
Also Published As
Publication number | Publication date |
---|---|
WO2016209383A1 (en) | 2016-12-29 |
US10387259B2 (en) | 2019-08-20 |
CN107636618B (zh) | 2022-04-12 |
TW201712550A (zh) | 2017-04-01 |
JP2018524648A (ja) | 2018-08-30 |
US20160378607A1 (en) | 2016-12-29 |
TWI698743B (zh) | 2020-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107636618A (zh) | 在具有嵌入式可编程数据检查的非易失性系统存储器计算系统中的即时重启 | |
CN110888826B (zh) | 通过用于机器学习的处理装置对易失性存储器进行的并行存取 | |
CN108572933B (zh) | 用于直接存储器存取的数据缓冲器指针找取 | |
CN104115129B (zh) | 用于从处理器到存储器子系统智能刷新数据的系统和方法 | |
TWI525446B (zh) | 切換式介面堆積晶粒記憶體架構 | |
US9734079B2 (en) | Hybrid exclusive multi-level memory architecture with memory management | |
CN107430547A (zh) | 用于非易失性存储设备的故障安全写回高速缓存模式设备驱动 | |
US20170123659A1 (en) | Method for transferring request in storage device and method for issuing command in host | |
CN106462504A (zh) | 最终级高速缓存系统和对应的方法 | |
CN108780432A (zh) | 用于高速缓存无效的设备及方法 | |
CN104011689B (zh) | 非易失性存储器损耗管理 | |
CN107608910A (zh) | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 | |
CN110023922B (zh) | 具有传输压缩业务的点对点链路的系统存储器 | |
CN110083554A (zh) | 用于配置混合存储器模块的存储器的i/o的设备及方法 | |
CN108874303A (zh) | 非易失性存储器命令冲突避免的储存系统和方法 | |
CN106462410A (zh) | 加速基于非易失性存储器(nvm)技术的存储器的引导时间清零 | |
EP3716101A2 (en) | Technologies for providing a scalable architecture for performing compute operations in memory | |
US20110035537A1 (en) | Multiprocessor system having multi-command set operation and priority command operation | |
CN107710175A (zh) | 存储器模块以及操作系统和方法 | |
CN107958679A (zh) | 存储器模块和用于存储器模块的处理数据缓冲器 | |
CN109213438A (zh) | 预先管理待分配给写入数据的物理地址的存储装置 | |
US20120047344A1 (en) | Methods and apparatuses for re-ordering data | |
US8473710B2 (en) | Multiple partitioned emulated electrically erasable (EEE) memory and method of operation | |
US20190227750A1 (en) | Technologies for performing tensor operations in memory | |
CN106293491B (zh) | 写请求的处理方法和内存控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |