CN108701070A - 对多级系统存储器的存储器侧高速缓存的容易出错的高速缓存行槽的处理 - Google Patents
对多级系统存储器的存储器侧高速缓存的容易出错的高速缓存行槽的处理 Download PDFInfo
- Publication number
- CN108701070A CN108701070A CN201780014026.3A CN201780014026A CN108701070A CN 108701070 A CN108701070 A CN 108701070A CN 201780014026 A CN201780014026 A CN 201780014026A CN 108701070 A CN108701070 A CN 108701070A
- Authority
- CN
- China
- Prior art keywords
- memory
- cache
- cache line
- line slot
- controller logic
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 347
- 238000012545 processing Methods 0.000 title claims description 10
- 238000003860 storage Methods 0.000 claims description 52
- 238000000034 method Methods 0.000 claims description 32
- 238000013507 mapping Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 3
- 230000004888 barrier function Effects 0.000 claims 1
- 238000005516 engineering process Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 239000004065 semiconductor Substances 0.000 description 6
- 238000000151 deposition Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000003321 amplification Effects 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000182341 Cubitermes group Species 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000005621 ferroelectricity Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 238000001465 metallisation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1064—Adding 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
-
- 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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
Abstract
描述了一种装置,包括:存储器控制器逻辑电路,用于与多级系统存储器的存储器侧高速缓存对接。存储器控制器逻辑电路包括错误跟踪电路,其用于跟踪存储器侧高速缓存中的高速缓存行槽的错误。存储器控制器逻辑电路还包括用于存储被认为过度容易出错的故障高速缓存行槽的标识符的故障列表电路。存储器控制器逻辑电路用于针对映射到在故障列表中识别出的高速缓存行槽的请求声明存储器侧高速缓存中的未命中。
Description
技术领域
概括而言,本发明的领域涉及计算科学,并且更具体而言,涉及对多级系统存储器的存储器侧高速缓存的容易出错的高速缓存行槽的处理。
背景技术
计算系统通常包括系统存储器(或主存储器),其包含系统的处理器当前正在执行的软件代码的数据和程序代码。许多计算机系统中的相关问题是系统存储器。这里,如本领域中所理解的,计算系统通过执行存储在系统存储器中的程序代码来操作。程序代码在被执行时从/向系统存储器读取和写入数据。如此,系统存储器被大量使用,其中,在计算系统的操作过程期间许多程序代码和数据读取以及许多数据写入。因此,寻找用于改进系统存储器的方式是计算系统工程师的动力。
附图说明
根据以下结合附图的详细描述可以获得对本发明的更好的理解,其中:
图1示出了具有多级系统存储器的计算系统;
图2示出了在近存储器控制器内具有故障地址列表的改进的系统存储器控制器;
图3示出了由图2的改进的系统存储器控制器执行的方法;
图4示出了计算系统。
具体实施方式
1.0多级系统存储器
1.a多级系统存储器概述
改进系统存储器性能的方式之一是具有多级系统存储器。图1示出了具有多层或多级系统存储器112的计算系统100的实施例。根据各种实施例,较小的、较快的近存储器(near memory)113可以用作用于较大远存储器(far memory)114的高速缓存。
将高速缓冲存储器用于计算系统是众所周知的。在近存储器113用作高速缓存的情况下,近存储器113用于在远存储器114中存储预期由计算系统更频繁地调用的那些数据项目的另外的副本。近存储器高速缓存113具有低于下层远存储器114区域的访问时间。通过在近存储器113中存储更频繁调用的项目,系统存储器112将被观察为更快,这是因为系统将经常读取存储在更快的近存储器113中的项目。对于使用回写技术的实施方式,在近存储器113中的数据项目的副本可以包含已经由CPU更新的数据,并且因此与远存储器114中的数据相比更新。将“脏”高速缓存条目写回远存储器114的过程确保这样的更改不会丢失。
根据一些实施例,例如,近存储器113通过具有快于远存储器114的时钟速度来表现出减少的访问时间。这里,近存储器113可以是更快(例如,更低的访问时间)、易失性系统存储器技术(例如,高性能动态随机存取存储器(DRAM))和/或与存储器控制器116共置的SRAM存储器单元。作为对比,远存储器114可以是用较慢时钟速度实现的易失性存储器技术(例如,接收较慢时钟的DRAM组件)或者例如可以慢于(例如,更长的访问时间)易失性/DRAM存储器或用于近存储器的任何技术的非易失性存储器技术。
例如,远存储器114可以包括新兴的非易失性随机存取存储器技术,例如(仅列举几个可能性)基于相变的存储器、三维交叉点存储器设备、或其它字节可寻址的非易失性存储器设备、“就地写入(write-in-place)”非易失性主存储设备、使用硫族化合物相变材料(例如,玻璃)的存储器设备、单级或多级闪速存储器、多门限级闪速存储器、基于铁电的存储器(例如,FRAM)、基于磁的存储器(例如,MRAM)、基于自旋转移扭矩的存储器(例如,STT-RAM)、基于电阻器的存储器(例如,ReRAM)、基于忆阻器的存储器、通用存储器、Ge2Sb2Te5存储器,可编程金属化单元存储器,无定形单元存储器,Ovshinsky存储器等。
这样的新兴非易失性随机存取存储器技术通常具有以下特性的某个组合:1)高于DRAM的存储密度(例如,通过在三维(3D)电路结构(例如,交叉点3D电路结构)中构造);2)低于DRAM的功耗密度(例如,因为它们不需要刷新);和/或3)慢于DRAM的但仍然快于传统的非易失性存储器技术(例如,FLASH)的访问延时。后一特性特别允许各种新兴非易失性存储器技术用于主系统存储器角色而不是传统的大容量存储装置角色(其是非易失性存储装置的传统架构位置)。
无论远存储器114是由易失性存储器技术还是非易失性存储器技术组成的,在各种实施例中,远存储器114充当真正的系统存储器,这是因为它支持更细粒度的数据访问(例如,高速缓存行)而不是与传统的、非易失性大容量存储装置(例如,固态驱动器(SSD)、硬盘驱动器(HDD))相关联的基于更大的访问,并且/或者以其它方式充当由CPU的处理器正在执行的程序代码在其外操作的(例如,字节)可寻址存储器。然而,当针对少量连续字节(例如,小于128字节)的数据进行访问时,远存储器114可能是低效的,其效果可以通过作为能够有效处理这样的请求的高速缓存操作的近存储器113的存在来减轻。
因为近存储器113充当高速缓存,所以近存储器113可以不具有正式寻址空间。而是,在一些情况下,远存储器114定义计算系统的主存储器的可个别地寻址的存储器空间。在各种实施例中,近存储器113充当用于远存储器114的高速缓存,而不是充当最后一级CPU高速缓存。通常,CPU高速缓存针对服务CPU事务被优化,并且会向其它存储器用户(例如,外围控制中心中的支持直接存储器访问(DMA)的设备)添加显著的惩罚(例如,在命中的情况下的高速缓存驱逐流和高速缓存侦听开销)。作为对比,存储器侧高速缓存被设计为处理针对系统存储器的所有访问,而不论它们是从CPU、从外围控制中心还是从某个其它设备(例如,显示器控制器)到达的。
例如,在各种实施例中,系统存储器用双列直插式存储器模块(DIMM)卡来实现,其中,单个DIMM卡具有设置在其中的易失性存储器半导体芯片(例如,DRAM)和(例如,新兴的)非易失性存储器半导体芯片二者。DRAM芯片有效地充当DIMM卡上的非易失性存储器芯片的机载高速缓存。理想情况下,任何特定DIMM卡的更频繁访问的高速缓存行将从该DIMM卡的DRAM芯片而不是其非易失性存储器芯片访问。考虑到可以将多个DIMM卡插入到工作计算系统中并且每个DIMM卡仅被给予系统存储器地址的对于DIMM卡耦合到的、半导体芯片的处理核心117的可用的一部分,DRAM芯片正在充当用于它们与其共享DIMM卡的非易失性存储器的高速缓存,而不是最后一级CPU高速缓存。
在其它配置中,仅具有DRAM芯片的DIMM卡可以插入到具有仅具有非易失性系统存储器芯片的DIMM卡的相同系统存储器通道(例如,DDR通道)中。理想情况下,通道的更频繁使用的高速缓存行在DRAM DIMM卡中,而不是在非易失性存储器DIMM卡中。因此,再次,因为通常存在多个存储器通道耦合到具有多个处理核心的相同半导体芯片,所以DRAM芯片正在充当用于它们与其共享相同通道的非易失性存储器芯片的高速缓存,而不是最后一级CPU高速缓存。
在又一其它可能的配置或实施方式中,DIMM卡上的DRAM设备可以充当用于非易失性存储器芯片的存储器侧高速缓存,所述非易失性存储器芯片驻留在不同的DIMM上并且插入到与具有DRAM设备的DIMM不同的通道中。虽然DRAM设备可以潜在地服务整个系统存储器地址空间,但是进入到DRAM设备中部分地基于对非易失性存储器设备执行的读取而不仅仅是来自最后一级CPU高速缓存的驱逐。如此,DRAM设备仍然可以被表征为存储器侧高速缓存。
在另一可能的配置中,充当近存储器113的诸如DRAM设备之类的存储器设备可以与存储器控制器116和处理核心117一起组装到单个半导体设备上或相同半导体封装内。远存储器114可以由其它设备形成,例如较慢的DRAM或非易失性存储器,并且可以附接到或集成在该设备中。
如以上详细描述的,近存储器113可以充当用于远存储器114的高速缓存。在各种实施例中,存储器控制器116和/或近存储器213可以包括本地高速缓存信息(下文称为“元数据”)120,使得存储器控制器116可以针对任何传入的存储器请求确定在近存储器113中是否已经发生了高速缓存命中或高速缓存未命中。元数据还可以存储在近存储器113中。
在传入的写入请求的情况下,如果存在高速缓存命中,则存储器控制器116直接在近存储器113中的高速缓存的版本上写入与请求相关联的数据(例如,64字节的CPU高速缓存行)。同样,在高速缓存未命中的情况下,在实施例中,存储器控制器116还将与请求相关联的数据写入到近存储器113中,所述存储器控制器116可能以被称为“底部填充(underfill)”的技术首先将构成在元数据中可以被标记为在近存储器113中有效的最小尺寸的数据所需的数据的任何缺失部分从远存储器114提取。然而,如果近存储器高速缓存113中的、内容要被写入到其中的条目已经被分配给不同的系统存储器地址并且包含比远存储器114中保存的数据更新的数据(即,它是脏的),则占据条目的数据必须从近存储器113中被驱逐并被写入到远存储器114中。
在传入的读取请求的情况下,如果存在高速缓存命中,则存储器控制器116通过从近存储器113读取高速缓存行的版本并将其提供给请求者来对请求进行响应。作为对比,如果存在高速缓存未命中,则存储器控制器116从远存储器114读取请求的高速缓存行,并且不仅向请求者提供高速缓存行,而且还将高速缓存行的另一副本写入到近存储器113中。在许多情况下,从远存储器114请求的数据量和写入到近存储器113的数据量将大于传入的读取请求所请求的数据量。使用来自远存储器的或去往近存储器的较大数据尺寸增加了后续事务到近存储器位置的高速缓存命中的可能性。
通常,可以以不同级别的粒度将高速缓存行写入到近存储器和/或远存储器并且/或者从近存储器和/或远存储器读取高速缓存行(例如,仅以高速缓存行粒度(并且例如,用于写入/或读取的字节可寻址性在存储器控制器内被处理)、字节粒度(例如,存储器控制器以其写入和/或读取仅高速缓存行内的识别的一个或多个字节的真实字节可寻址性)或其间的粒度发生写入和/或读取)。另外,注意到,在近存储器和/或远存储器内维护的高速缓存行的尺寸可以大于由CPU级高速缓存维护的高速缓存行尺寸。
存在不同类型的近存储器高速缓存实施方式可能性。以下的子部分描述了高速缓存架构选项的主要类型中的两个类型(直接映射和组关联)的示例性实施方式细节。另外,在紧接着的以下子部分中还描述了可能的存储器控制器116行为的其它方面。
1.b.直接映射的近存储器高速缓存
在被称为直接映射的第一高速缓存方法中,存储器控制器116包括逻辑电路,其用于基于系统存储器地址的一部分来将系统地址映射到近存储器地址空间中的高速缓存行槽。例如,在实施例中(其中,近存储器113的尺寸对应于每存储器通道16,777,216个高速缓存行槽,其转而对应于每存储器通道24比特近存储器地址尺寸(即,224=16,777,216)),24个上有序比特(upper ordered bit)的、请求的系统存储器地址用于识别请求应在特定存储器通道上映射到哪个近存储器高速缓存行槽(下有序比特指定存储器通道)。例如,系统存储器地址A的比特A[5:0]识别要访问哪个存储器通道,并且系统存储器地址的比特A[29:6]识别地址将映射到的该通道上的16,777,216个高速缓存行槽中的哪一者。
另外,与高速缓存槽识别比特相邻的上有序比特被辨识为用于识别高速缓存命中和高速缓存未命中的标记数据结构。这里,用于相同组比特A[29:6]的不同标记映射到相同的高速缓存行槽。例如,在实施例中,下一组四个上有序比特A[33:30]被辨识为用于定义映射到特定高速缓存行槽的16个独特高速缓存行地址的标记结构。
因此,本地高速缓存信息120识别哪个标记当前正存储在近存储器高速缓存行槽的每一者中。因此,当存储器控制器116接收存储器写入请求时,存储器控制器将比特A[29:6]映射到其本地高速缓存信息120中的特定槽。如果针对请求地址映射到的高速缓存行槽而被保存在本地信息120中的标记与请求地址的标记相匹配(即,针对该槽被保存在近存储器中的高速缓存行具有与请求相同的系统存储器地址),则产生高速缓存命中。否则已经发生高速缓存未命中。当存储器控制器116在高速缓存未命中之后将高速缓存行写入到近存储器时,存储器控制器将用于将新高速缓存行写入到近存储器中的地址的标记存储到其用于槽的本地高速缓存信息中,使得其可以在下次针对映射到槽的地址的请求被接收时检测高速缓存命中/未命中。
本地高速缓存信息120还包括用于每个高速缓存行槽的脏比特,其指示近存储器113中的高速缓存行的高速缓存的版本是否是用于高速缓存行的最新数据的仅有的副本。例如,在针对存储器写入请求的高速缓存命中的情况下,在高速缓存数据上直接覆写新数据而不向远存储器114进行直写将导致针对高速缓存行槽设置脏比特。从近存储器113高速缓存中逐出的设置了脏比特的高速缓存行被写回到远存储器114,但是那些没有设置其脏比特的高速缓存行不被写回到远存储器114。
还可以为每个高速缓存行槽保存有效数据比特,以指示保存在近存储器高速缓存行槽中的高速缓存行的版本是否有效。某些操作环境可能导致近存储器中的高速缓存行被声明为无效。即使覆写存储器控制器的高速缓存行具有不同的标记,存储器控制器也可以自由地直接覆写在近存储器中标记为无效的高速缓存行。通常,当从远存储器114调用高速缓存行并将其写入到近存储器113中时,将设置其有效比特(以指示高速缓存行有效)。
1.c.组关联的近存储器高速缓存
在被称为组关联的另一方法中,存储器控制器包括散列逻辑单元,其对传入的系统存储器访问请求的系统存储器地址执行散列操作。散列操作的输出指向在近存储器高速缓存中的一“组”条目,其中,具有系统存储器地址的高速缓存行可以存储在高速缓存中。在该方法中,存储器控制器在其本地高速缓存信息120中保存本地组高速缓存记录,所述本地组高速缓存记录针对每组高速缓存识别在相应组中当前存储哪些系统存储器地址以及组是否已满。
对系统存储器地址的本地保存允许存储器控制器116在存储器控制器116内部本地地识别高速缓存命中/未命中。本地地跟踪哪些组已满还向存储器控制器116识别何时高速缓存驱逐有必要。例如,如果针对其系统存储器地址映射到当前已满的组的高速缓存行接收新的存储器请求,则存储器控制器将与新接收的请求相关联的高速缓存行写入到组中并根据某个驱逐策略(例如,最近最少使用、最不经常使用等)来驱逐驻留的高速缓存之一。存储器控制器还可以在本地高速缓存信息120中本地地保存元数据,其跟踪实现驱逐策略所需的信息。
当针对映射到满的组的写入请求发生高速缓存未命中时,与请求相关联的新的高速缓存行被写入到近存储器高速缓存中,并且如果驻留在组中的高速缓存行是脏的,则将其驱逐到远存储器。当针对映射到满的组的读取请求发生高速缓存未命中时,从远存储器读取与请求相关联的所请求的高速缓存行并将其写入到近存储器高速缓存中。如果驻留在组中的高速缓存行是脏的,则将其驱逐到远存储器。还可以为每个高速缓存的高速缓存行保存脏比特和有效比特,并如以上描述地使用它们。
1.d.其它高速缓存
如以上提及的,其它类型的高速缓存方案可以应用于近存储器。一种可能的替代方法是其中近存储器被实现为完全关联的高速缓存。在该情况下,高速缓存被视为所有系统存储器地址映射到的一个大组。在具有该资格的情况下,操作与以上刚刚描述的那些操作相同/相似。另外,不是充当存储器侧高速缓存,而是可以将近存储器实现为最后一级CPU高速缓存。
1.e.近存储器高速缓存清理
在各种随后的间隔中,存储器控制器可以滚动通过其本地高速缓存信息120,并将其对应的脏比特被设置的高速缓存行的本地高速缓存信息的副本写入近存储器高速缓存113中。替代地,例如,如果本地高速缓存信息120不是驻留的,则近存储器控制器120可以周期性地从近存储器113读取高速缓存行,并将设置了它们的脏比特的高速缓存行写回到远存储器114并将所述高速缓存行的副本重写回到近存储器113,但其中,它们相应的脏比特被清除。将脏的近存储器内容“清理”回到远存储器导致远存储器增加其用于系统的对应高速缓存行的最新数据的百分比。作为清理过程的一部分,近存储器中的将副本写回到远存储器的任何高速缓存行在本地高速缓存信息中清除其脏比特。
2.0双级存储器(2LM)系统中的鲁棒错误管理
如本领域中已知的,存储在存储器系统中的数据不仅包括系统的随机客户数据,而且还包括纠错码(ECC)信息。在从存储器读取了数据时,根据读取的数据计算ECC值,并将ECC值与和读取的数据一起存储的ECC信息进行比较。在新计算的ECC信息与和数据一起存储的ECC信息之间的差异被解析,以纠正从存储器读取的数据中的任何错误。
系统存储器内的虚拟存储器地址的错误率被监测,并且将表现出过高错误率(即使所有这样的错误都经由ECC信息被纠正)的任何虚拟存储器地址被“标记”并指向新的、不同的物理地址。这里,如本领域中所理解的,计算系统内部地将由操作软件调出的虚拟地址转换成实际物理系统存储器资源内的特定物理地址。
如果从特定虚拟存储器地址读取的数据表现出过高的错误率(例如,超出预设的误码率标准),则可以将虚拟存储器地址映射到例如相同存储器芯片上的虚拟地址原始地映射到的不同物理存储器地址。这里,例如,备用存储器空间驻留在存储器芯片上。在相同芯片上的特定数据单元开始表现出过多错误的情况下,备用存储器空间被使用。从系统的角度来看,系统将虚拟地址从其中错误被观察到的物理地址重新映射到存储器芯片的备用存储器空间内的新物理地址。
还可以针对整个存储器芯片监测错误率(通过针对映射到芯片的所有地址计算累积率)。如果芯片表现出过高的错误率,则映射到该芯片的虚拟地址可以映射到存储器系统内的不同的、备用存储器芯片。同样,错误率和备用甚至可以在更高的级别处执行。例如,可以针对整个DIMM卡计算错误率(通过针对映射到该DIMM的所有地址计算累积错误率)。如果错误率超过某个门限(例如,超出预先定义的误码率),则映射到DIMM卡的所有虚拟地址可以被重新映射到已经设置到存储器系统中的不同的、备用DIMM卡。
如果在系统存储器控制器处接收到对特定高速缓存行的读取请求,则高速缓存行的地址被映射到其在近存储器中的对应地址。然后确定近存储器中的地址处的高速缓存行是否包含用于读取请求的地址的数据。如果是,则将认为存在近存储器中的命中。如果否,则将在近存储器处辨识出未命中,导致从远存储器读取所请求的高速缓存行。在写入请求的情况下,如果在近存储器高速缓存中辨识出命中,则在实施例中,与写入请求一起接收到的较小高速缓存行在近存储器内在自身上覆写。
关于内部存储器错误管理过程的问题可能出现在其中单个近存储器高速缓存行映射到远存储器中的许多高速缓存行的系统中。例如,在具有直接映射的高速缓存的系统中(其中,远存储器的容量大大超过近存储器的容量),在近存储器中的单个高速缓存行槽(或“条目”)用于为许多不同的远存储器地址提供高速缓存服务。在该环境中,2LM系统可能将错误与到高速缓存行槽支持的所有远存储器地址的高速缓存行槽相关联。这样做可能将存储器的真实错误率不正确地放大,放大倍数例如为等于高速缓存行槽支持的远存储器内的高速缓存行的数量的因子。
例如,如果近存储器控制器确定高速缓存行槽正表现出过多的错误,则其可能导致系统声明有问题的高速缓存行支持的远存储器中的所有系统存储器地址都是有问题的。例如,如果具有由有问题的高速缓存行支持的系统存储器地址的多个存储器访问请求没有被充分的服务(或根本没有被服务),则操作系统实例可以关联故障以将请求服务为主要系统存储器故障。如果系统有效地跟踪被声明为有问题的高速缓存行的数量并进一步被设计为如果这样的有问题的高速缓存行的数量超过某个门限则声明主要系统故障,则可能因为上述放大效果(其中,由容易出错的高速缓存行槽支持的所有远存储器系统存储器地址都被暗指为有问题的)而过早地声明主要系统故障。
例如,应用软件程序、操作系统、操作系统实例或虚拟机监视器可以辨识出它所使用的大量高速缓存行已经被声明为有问题的并且作为响应可以发出主要警报。
图2示出了改进的系统存储器控制器216,其包括近存储器控制器220内的故障地址列表(FAL)222和高速缓存行槽错误跟踪逻辑电路223。FAL222存储已经表现出过高错误率的那些高速缓存行槽的地址(在另一实施例中,FAL中的地址和数据二者都可以被保存在为故障地址提供命中/未命中信息和数据的本地高速缓存中)。高速缓存行槽错误跟踪逻辑电路223监测近存储器高速缓存213中的槽的错误倾向,并确定特定槽何时已经表现出足够的错误和/或足够地超过错误率以将其地址添加到FAL 222。
如果在存储器控制器处接收到对高速缓存行的读取或写入请求,则将请求转发到近存储器控制器216,其确定请求的高速缓存行的地址映射到的近存储器中的高速缓存行槽的地址。如果请求高速缓存行映射到的高速缓存行槽的地址在FAL 222中列出,则在近存储器处声明未命中(例如,即使高速缓存行槽恰好具有驻留在近存储器高速缓存213中的数据)。
通过在近存储器处强制未命中,请求接下来将被引导到远存储器控制器221,使得可以从远存储器214服务请求。如果请求是读取请求,则将从远存储器214读取所请求的高速缓存行,或者,如果请求是写入请求,则附加有请求的数据将被写入到远存储器214中。
根据在读取请求的情况下的标称操作(即,当对应的高速缓存行槽未在FAL 222中列出时)并且在近存储器处存在未命中时,从远存储器214提取的所请求的高速缓存行不仅从存储器控制器216发送到请求CPU核心,而且还被写入到近存储器高速缓存213中(名义上,作为到其对应的高速缓存行槽中的部分写入)。然而,在已经在FAL中列出高速缓存行的对应高速缓存行槽之后,可以禁用将刚从远存储器读出的高速缓存行写入到近存储器高速缓存中,或者可以允许这样的写入继续进行,例如,作为在配置寄存器空间中指定的系统配置的问题。
因此,根据图2的系统的设计,为了审阅而不是将某个类型的故障归因于由容易出错的高速缓存行槽支持的所有远存储器高速缓存行,而是将高速缓存行槽的地址记录在近存储器控制器220的FAL 222中。然后,映射到该高速缓存行槽的任何后续请求如同在近存储器高速缓存213中已经发生未命中那样被对待,所述近存储器高速缓存213将对请求的处理重定向到远存储器214。通过有效地为其地址映射到故障高速缓存行槽的任何高速缓存行移除近存储器服务,而不是将故障归因于由有问题的高速缓存行槽支持的所有系统高速缓存行,避免了对存储器系统内的实际错误率的任何无意的放大。
查找FAL 222的实施方式可以根据实施例而不同。例如,根据一个实施例,近存储器控制器220保存本地高速缓存,所述本地高速缓存识别在近存储器213中当前正保存着哪些系统高速行。例如,本地高速缓存可以列出当前驻留在近存储器中各种系统高速缓存行的地址的标记部分。因此,通过参考本地高速缓存并将本地高速缓存中列出的标记与传入的请求的地址的标记进行比较来实现在近存储器中已经发生了实际命中还是未命中的确定。
在保留这样的本地高速缓存的实施例中,可以在查找FAL 222之前执行或者可以与查找FAL 222相称地执行查找本地高速缓存以确定在近存储器中已经发生了实际高速缓存命中还是高速缓存未命中。如果在查找FAL之前执行查找本地高速缓存,则注意到每次查找本地高速缓存揭示命中时都应当查找FAL 222。如果查找FAL 222揭示请求所针对的高速缓存行槽的地址,则即使所针对的系统高速缓存行在近存储器中,也不应当发生对近存储器213的查找(而是,即使查找本地高速缓存已经揭示命中,也应当声明高速缓存未命中)。
如果与查找FAL 222相称地执行查找本地高速缓存,则只有当查找本地高速缓存揭示命中近存储器且查找FAL 222揭示所针对的高速缓存行槽未在FAL中列出时,才应当发生对近存储器213的访问。在其它实施例中,可以在查找本地高速缓存之前执行对FAL 222的查找。这里,如果查找FAL 222揭示所针对的高速缓存行槽在FAL 222上被列出,则将不执行对本地高速缓存的查找(即,即使所针对的系统高速缓存行驻留在近存储器中并且在本地高速缓存中被列出,也声明未命中)。
其它实施例可以不具有识别当前驻留在近存储器中的系统高速缓存行的本地高速缓存。在这些系统中,执行对近存储器的读取,以便确定已经发生高速缓存命中还是高速缓存未命中(例如,在直接映射的近存储器高速缓存中,每个高速缓存行槽都具有用于保持高速缓存行的存储在高速缓存行槽中的系统存储器地址的标记的另外的空间)。在没有本地高速缓存的系统中,可以在读取近存储器213之前或与之相称地发生查找FAL 222。如果在读取近存储器213之前执行查找FAL 222并且在FAL 222中列出了所针对的高速缓存行槽,则可以抑制(不执行)对近存储器的读取,这是因为在近存储器213中自动声明未命中。相比之下,如果与读取近存储器213相称地执行查找FAL 222,并且如果在FAL 222中识别出所针对的高速缓存行槽,则刷新从近存储器213读取的高速缓存行,并且即使已经发生实际命中,也声明未命中。
图2的系统的另一特征涉及一旦识别出高速缓存行槽在FAL 222中列出时用于保持数据一致性的、存储器控制器216的行为。例如,如果当前正被保存在已经被声明为足够容易出错以在FAL 222中列出的高速缓存行槽中的系统高速缓存行也是脏的,则高速缓存的系统高速缓存行当前包含用于系统高速缓存行的最新信息。如此,在实施例中,如果脏系统高速缓存行当前正被保存在被声明为足够容易出错以在FAL 222中列出的高速缓存行槽中,则脏系统高速缓存行被有效地从近存储器213中逐出并被写入到远存储器214中。如果系统高速缓存行不是脏的,则其内容不被写回到远存储器214,并且对由有问题的高速缓存行槽支持的组分系统高速缓存行的近存储器高速缓存被有效地暂停。
根据标称系统操作,如以上讨论的,当从远存储器读取系统高速缓存行时,系统高速缓存行的副本被写入到近存储器高速缓存213中。然而,在实施例中,也如以上讨论的,如果在FAL 222中识别出对应的高速缓存行槽,则不执行将副本写入到近存储器高速缓存213中。如此,当最初在存储器控制器216处接收到读取请求并且近存储器控制器220识别出正被请求的高速缓存行映射到FAL 222中列出的高速缓存行槽时,存储器控制器将暂停任何后续将高速缓存行的副本写入到近存储器213中。
如图2描绘的,近存储器控制器220还使错误跟踪逻辑单元223通过高速缓存行槽基础来保持跟踪高速缓存行槽上的错误。在实施例中,如果特定高速缓存行槽超过特定错误门限(例如,每单位时间或绝对地,它产生错误的次数和/或必须通过ECC操作纠正的错误的总数),则在FAL 222中注册高速缓存行槽的地址。
错误跟踪逻辑单元223还可以被设计为实现或辅助近存储器213内的备用过程,以用备用的、代替的近存储器资源来替换用于实现有问题的高速缓存行槽的一些或全部近存储器资源。例如,一旦已经在FAL 222上列出高速缓存行槽,错误跟踪逻辑单元223就可以向存储器代替的功能提供更深的统计数据,所述统计数据关于高速缓存行槽中的哪些逻辑比特和/或近存储器中的哪些存储单元表现出故障。然后,用该信息,存储器备用功能可以继续例如用代替的单元来替换用于实现高速缓存行槽的近存储器中的存储器单元。
FAL 222可以用嵌入式寄存器和/或存储器空间来实现。错误跟踪逻辑单元223可以用专用硬件逻辑电路、可编程逻辑设备电路(例如,PLD或PLA电路)、执行程序代码(例如,软件或固件)的控制器或处理器逻辑电路或这些项中的任一者的某个组合来实现。
图3示出了由以上描述的存储器控制器执行的方法。根据图3的方法,跟踪多级系统存储器的存储器侧高速缓存的高速缓存行槽的错误301。方法还包括识别展示过多错误的高速缓存行槽302。方法还包括识别故障列表上的高速缓存行槽303。方法还包括接收对映射到高速缓存行槽的高速缓存行的请求304。方法还包括辨识出在故障列表上识别出高速缓存行槽并且作为响应针对请求声明存储器侧高速缓存中的未命中305。
3.0计算系统实施例
图4示出了对诸如个人计算系统(例如,桌上型计算机或膝上型计算机)之类的示例性计算系统400或诸如平板设备或智能电话之类的移动或手持计算系统或诸如服务器计算系统之类的较大计算系统的描绘。如图4中观察到的,基本计算系统可以包括中央处理单元401(其可以包括例如设置在应用处理器或多核处理器上的多个通用处理核心和主存储器控制器)、系统存储器402、显示器403(例如,触摸屏、平板)、本地有线点对点链路(例如,USB)接口404、各种网络I/O功能405(例如,以太网接口和/或蜂窝调制解调器子系统)、无线局域网(例如,WiFi)接口406、无线点对点链路(例如,蓝牙)接口407以及全球定位系统接口408、各种传感器409_1至409_N(例如,陀螺仪、加速度计、磁力计、温度传感器、压力传感器、湿度传感器等中的一者或多者)、相机410、电池411、电源管理控制单元412、扬声器和麦克风413以及音频编码器/解码器414。
应用处理器或多核处理器450可以包括其CPU 401内的一个或多个通用处理核心415、一个或多个图形处理单元416、存储器管理功能单元417(例如,存储器控制器)以及I/O控制功能单元418。通用处理核心415通常执行计算系统的操作系统和应用软件。图形处理单元416通常执行图形密集型功能,以例如生成在显示器403上呈现的图形信息。存储器控制功能单元417与系统存储器402对接。系统存储器402可以是多级系统存储器(例如,以上详细讨论的多级系统存储器),并且包括具有故障地址列表的近存储器控制器。
相对于在适当的情况下也包括集成外围设备(例如,相机410)的整个计算系统,触摸屏显示器403、通信接口404-407、GPS接口408、传感器409、相机410和扬声器/麦克风编码解码器413、414中的每一者都可以被视为各种形式的I/O(输入和/或输出)。取决于实施方式,这些I/O组件中的各种组件可以集成在应用处理器/多核处理器450上,或者可以位于管芯外或应用处理器/多核处理器450的封装外部。
本发明的实施例可以包括如以上阐述的各种过程。过程可以体现在机器可执行指令中。指令可以用于使通用或专用处理器执行特定过程。替代地,这些过程可以由包含用于执行过程的硬连线逻辑单元的特定硬件组件执行,或者可以由软件或指令编程的计算机组件或定制硬件组件的任何组合(例如,专用集成电路(ASIC)、可编程逻辑设备(PLD)、数字信号处理器(DSP)或现场可编程门阵列(FPGA))执行。
还可以提供本发明的元素作为用于存储机器可执行指令的机器可读介质。机器可读介质可以包括但不限于适用于存储电子指令的软盘、光盘、CD-ROM和磁光盘、闪速存储器、ROM、RAM、EPROM、EEPROM、磁卡或光卡、传播介质或其它类型的介质/机器可读介质。例如,本发明可以作为计算机程序被下载,所述计算机程序可以经由通信链路(例如,调制解调器或网络连接)通过体现在载波或其它传播介质中的数据信号的方式来从远程计算机(例如,服务器)传送到请求计算机(例如,客户端)。
在前述说明书中,已经参考本发明的特定示例性实施例描述了本发明。然而,将显而易见的是,在不背离如所附权利要求中阐述的本发明的更广泛的精神和范围的情况下,可以对特定示例性实施例进行各种修改和改变。因此,说明书和附图要被视为说明性的而非限制性的。
Claims (20)
1.一种装置,包括:
存储器控制器逻辑电路,用于与多级系统存储器的存储器侧高速缓存对接,所述存储器控制器逻辑电路包括用于跟踪所述存储器侧高速缓存中的高速缓存行槽的错误的错误跟踪电路,所述存储器控制器逻辑电路还包括用于存储被认为过度容易出错的故障高速缓存行槽的标识符的故障列表电路,所述存储器控制器逻辑电路用于针对映射到在所述故障列表中识别出的高速缓存行槽的请求声明所述存储器侧高速缓存中的未命中。
2.根据权利要求1所述的装置,其中,所述标识符包括故障高速缓存行槽的地址。
3.根据权利要求1所述的装置,其中,所述存储器控制器逻辑电路还用于:如果驻留在故障高速缓存行槽中的高速缓存行是脏的则将驻留高速缓存行写回到远存储器。
4.根据权利要求1所述的装置,其中,所述存储器控制器逻辑电路用于:针对映射到故障高速缓存行槽的且从所述存储器侧高速缓存是用于其的高速缓存的远存储器接受服务的高速缓存行,防止读取请求的读取数据被写入到所述存储器侧高速缓存中。
5.根据权利要求1所述的装置,其中,所述存储器控制器逻辑单元还包括本地高速缓存,其识别所述存储器侧高速缓存中的高速缓存行槽。
6.根据权利要求5所述的装置,其中,如果所述存储器控制器逻辑单元在所述本地高速缓存中被识别并且其对应的高速缓存行槽没有在所述故障列表上被识别,则所述存储器控制器逻辑单元将从所述存储器侧高速缓存提取高速缓存行。
7.根据权利要求1所述的装置,其中,所述存储器控制器逻辑电路还用于如果其对应的高速缓存行槽没有在所述故障列表上被识别时则不执行从所述存储器侧高速缓存对高速缓存行的读取。
8.一种计算系统,包括:
多个处理核心;
显示器;
多级系统存储器;
存储器控制器逻辑电路,用于与所述多级系统存储器的存储器侧高速缓存对接,所述存储器控制器逻辑电路包括用于跟踪所述存储器侧高速缓存中的高速缓存行槽的错误的错误跟踪电路,所述存储器控制器逻辑电路还包括用于存储被认为过度容易出错的故障高速缓存行槽的标识符的故障列表电路,所述存储器控制器逻辑电路用于针对映射到在所述故障列表中识别出的高速缓存行槽的请求声明所述存储器侧高速缓存中的未命中。
9.根据权利要求8所述的计算系统,其中,所述标识符包括故障高速缓存行槽的地址。
10.根据权利要求8所述的计算系统,其中,所述存储器控制器逻辑电路还用于:如果驻留在故障高速缓存行槽中的高速缓存行是脏的则将驻留高速缓存行写回到远存储器。
11.根据权利要求8所述的计算系统,其中,所述存储器控制器逻辑电路用于:针对映射到故障行槽的且从所述存储器侧高速缓存是用于其的高速缓存的远存储器接受服务的高速缓存行,防止读取请求的读取数据被写入到所述存储器侧高速缓存中。
12.根据权利要求8所述的计算系统,其中,所述存储器控制器逻辑单元还包括本地高速缓存,其识别被高速缓存在所述存储器侧高速缓存中的高速缓存行槽。
13.根据权利要求12所述的计算系统,其中,如果所述存储器控制器逻辑单元在所述本地高速缓存中被识别并且其对应的高速缓存行槽没有在所述故障列表上被识别,则所述存储器控制器逻辑单元将从所述存储器侧高速缓存提取高速缓存行。
14.根据权利要求8所述的计算系统,其中,所述存储器控制器逻辑电路还用于如果其对应的高速缓存行槽没有在所述故障列表上被识别时则不执行从所述存储器侧高速缓存对高速缓存行的读取。
15.一种方法,包括:
跟踪多级系统存储器的存储器侧高速缓存的高速缓存行槽的错误;
识别展示过多错误的高速缓存行槽;
在故障列表上识别所述高速缓存行槽;
接收针对映射到所述高速缓存行槽的高速缓存行的请求;
辨识所述高速缓存行槽在所述故障列表上被识别,并且作为响应针对所述请求声明所述存储器侧高速缓存中的未命中。
16.根据权利要求15所述的方法,其中,所述高速缓存行槽通过其地址在所述列表上被识别。
17.根据权利要求15所述的方法,还包括:将所述请求重定向到所述存储器侧高速缓存充当用于其的高速缓存的远存储器。
18.根据权利要求15所述的方法,还包括:
接收针对映射到没有在所述故障列表中被识别的第二高速缓存行槽的第二高速缓存行的第二请求;
至少部分地因为所述第二高速缓存行槽没有在所述故障列表上被识别而允许对所述存储器侧高速缓存的读取。
19.根据权利要求19所述的方法,其中,所述方法还包括:部分因为所述第二高速缓存行在本地高速缓存上被识别而允许所述读取,所述本地高速缓存识别当前存储在所述存储器侧高速缓存中的高速缓存行。
20.根据权利要求15所述的方法,还包括:因为所述高速缓存行驻留在所述存储器侧高速缓存中并且是脏的而将所述高速缓存行写回到所述存储器侧高速缓存充当用于其的高速缓存的远存储器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/087,797 | 2016-03-31 | ||
US15/087,797 US10185619B2 (en) | 2016-03-31 | 2016-03-31 | Handling of error prone cache line slots of memory side cache of multi-level system memory |
PCT/US2017/013442 WO2017171974A1 (en) | 2016-03-31 | 2017-01-13 | Handling of error prone cache line slots of memory side cache of multi-level system memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108701070A true CN108701070A (zh) | 2018-10-23 |
CN108701070B CN108701070B (zh) | 2022-08-12 |
Family
ID=59959409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780014026.3A Active CN108701070B (zh) | 2016-03-31 | 2017-01-13 | 对多级系统存储器的存储器侧高速缓存的容易出错的高速缓存行槽的处理 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10185619B2 (zh) |
CN (1) | CN108701070B (zh) |
DE (1) | DE112017001658T5 (zh) |
WO (1) | WO2017171974A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716887A (zh) * | 2019-09-11 | 2020-01-21 | 无锡江南计算技术研究所 | 一种支持写暗示的硬件高速缓存数据装入方法 |
CN113961482A (zh) * | 2020-07-21 | 2022-01-21 | 美光科技公司 | 高速缓存存储器的增强型重复写入数据跟踪 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10229065B2 (en) * | 2016-12-31 | 2019-03-12 | Intel Corporation | Unified hardware and software two-level memory |
US10691566B2 (en) * | 2017-07-27 | 2020-06-23 | International Business Machines Corporation | Using a track format code in a cache control block for a track in a cache to process read and write requests to the track in the cache |
US11188467B2 (en) | 2017-09-28 | 2021-11-30 | Intel Corporation | Multi-level system memory with near memory capable of storing compressed cache lines |
US11307996B2 (en) | 2018-11-30 | 2022-04-19 | Intel Corporation | Hardware unit for reverse translation in a processor |
WO2022197419A1 (en) * | 2021-03-19 | 2022-09-22 | Microsoft Technology Licensing, Llc | Memory operations management in computing systems |
US11599415B2 (en) | 2021-07-09 | 2023-03-07 | Microsoft Technology Licensing, Llc | Memory tiering techniques in computing systems |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101340569A (zh) * | 2007-07-06 | 2009-01-07 | 扬智科技股份有限公司 | 高速缓存及其数据处理方法 |
US20090300413A1 (en) * | 2006-06-21 | 2009-12-03 | Chang Tsung-Yung Jonathan | Disabling portions of memory with defects |
CN102138129A (zh) * | 2008-09-05 | 2011-07-27 | 飞思卡尔半导体公司 | 用于数据处理系统中的统一高速缓存的错误检测方案 |
CN102541756A (zh) * | 2010-11-09 | 2012-07-04 | 富士通株式会社 | 高速缓冲存储器系统 |
US20150186275A1 (en) * | 2013-12-27 | 2015-07-02 | Adrian C. Moga | Inclusive/Non Inclusive Tracking of Local Cache Lines To Avoid Near Memory Reads On Cache Line Memory Writes Into A Two Level System Memory |
US20160041772A1 (en) * | 2010-12-22 | 2016-02-11 | Intel Corporation | Two-level system main memory |
Family Cites Families (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04326436A (ja) * | 1991-04-26 | 1992-11-16 | Mitsubishi Electric Corp | キャッシュ・コントローラ |
DE69421379T2 (de) | 1994-03-31 | 2000-05-11 | Stmicroelectronics, Inc. | Wiederverwendbarer Mehrwegsatz assoziativer Cache-Speicher |
CN1100540A (zh) | 1994-08-18 | 1995-03-22 | 奥克利系统公司 | 压缩的基本输入/输出系统 |
US6035432A (en) | 1997-07-31 | 2000-03-07 | Micron Electronics, Inc. | System for remapping defective memory bit sets |
US5912839A (en) | 1998-06-23 | 1999-06-15 | Energy Conversion Devices, Inc. | Universal memory element and method of programming same |
US6292874B1 (en) | 1999-10-19 | 2001-09-18 | Advanced Technology Materials, Inc. | Memory management method and apparatus for partitioning homogeneous memory and restricting access of installed applications to predetermined memory ranges |
US20030131277A1 (en) * | 2002-01-09 | 2003-07-10 | Taylor Richard D. | Soft error recovery in microprocessor cache memories |
US20050010811A1 (en) | 2003-06-16 | 2005-01-13 | Zimmer Vincent J. | Method and system to support network port authentication from out-of-band firmware |
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 |
US7200713B2 (en) * | 2004-03-29 | 2007-04-03 | Intel Corporation | Method of implementing off-chip cache memory in dual-use SRAM memory for network processors |
US20060031708A1 (en) * | 2004-08-04 | 2006-02-09 | Desai Kiran R | Method and apparatus for correcting errors in a cache array |
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 |
US7600078B1 (en) | 2006-03-29 | 2009-10-06 | Intel Corporation | Speculatively performing read transactions |
US7509460B2 (en) * | 2006-05-04 | 2009-03-24 | Sun Microsystems, Inc. | DRAM remote access cache in local memory in a distributed shared memory system |
US7913147B2 (en) | 2006-05-08 | 2011-03-22 | Intel Corporation | Method and apparatus for scrubbing memory |
CN100451987C (zh) | 2006-05-23 | 2009-01-14 | 北京金元龙脉信息科技有限公司 | 对计算机bios固件进行安全风险检测的系统和方法 |
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 |
US7600077B2 (en) | 2007-01-10 | 2009-10-06 | Arm Limited | Cache circuitry, data processing apparatus and method for handling write access requests |
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 |
JP4595029B2 (ja) * | 2007-06-20 | 2010-12-08 | 富士通株式会社 | キャッシュメモリ装置、演算処理装置及びその制御方法 |
US8145893B2 (en) | 2007-10-26 | 2012-03-27 | Intel Corporation | Hot-plugging a memory device |
US8977820B2 (en) * | 2007-12-21 | 2015-03-10 | Arm Limited | Handling of hard errors in a cache of a data processing apparatus |
US20090313416A1 (en) | 2008-06-16 | 2009-12-17 | George Wayne Nation | Computer main memory incorporating volatile and non-volatile memory |
CN101620539B (zh) | 2008-07-01 | 2013-12-25 | 联想(北京)有限公司 | 开关机方法和计算机 |
US9678878B2 (en) * | 2008-09-30 | 2017-06-13 | Intel Corporation | Disabling cache portions during low voltage operations |
US8103830B2 (en) * | 2008-09-30 | 2012-01-24 | Intel Corporation | Disabling cache portions during low voltage operations |
US8127184B2 (en) * | 2008-11-26 | 2012-02-28 | Qualcomm Incorporated | System and method including built-in self test (BIST) circuit to test cache memory |
US8291259B2 (en) * | 2009-04-15 | 2012-10-16 | International Business Machines Corporation | Delete of cache line with correctable error |
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 |
EP2441005A2 (en) | 2009-06-09 | 2012-04-18 | Martin Vorbach | System and method for a cache in a multi-core processor |
US9123409B2 (en) | 2009-06-11 | 2015-09-01 | Micron Technology, Inc. | Memory device for a hierarchical memory architecture |
US8626997B2 (en) | 2009-07-16 | 2014-01-07 | Micron Technology, Inc. | Phase change memory in a dual inline memory module |
US8341387B2 (en) | 2009-08-18 | 2012-12-25 | Dell Products, Lp | System and method to manipulate a system setting when booting an information handling system |
US8190951B2 (en) * | 2009-08-20 | 2012-05-29 | Arm Limited | Handling of errors in a data processing apparatus having a cache storage and a replicated address storage |
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 |
US9081501B2 (en) * | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
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 |
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 |
US8838897B2 (en) * | 2011-06-29 | 2014-09-16 | New Jersey Institute Of Technology | Replicating tag entries for reliability enhancement in cache tag arrays |
US8463948B1 (en) | 2011-07-01 | 2013-06-11 | Intel Corporation | Method, apparatus and system for determining an identifier of a volume of memory |
EP2761465B1 (en) | 2011-09-30 | 2022-02-09 | Intel Corporation | Autonomous initialization of non-volatile random access memory in a computer system |
EP2761467B1 (en) | 2011-09-30 | 2019-10-23 | Intel Corporation | Generation of far memory access signals based on usage statistic tracking |
EP2761469B1 (en) | 2011-09-30 | 2019-11-13 | Intel Corporation | Non-volatile random access memory (nvram) as a replacement for traditional mass storage |
EP2761471B1 (en) | 2011-09-30 | 2017-10-25 | Intel Corporation | Statistical wear leveling for non-volatile system memory |
WO2013048483A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Platform storage hierarchy with non-volatile random access memory having configurable partitions |
CN103946812B (zh) | 2011-09-30 | 2017-06-09 | 英特尔公司 | 用于实现多级别存储器分级体系的设备和方法 |
CN104115136B (zh) | 2011-09-30 | 2017-12-08 | 英特尔公司 | 非易失性随机访问存储器中存储bios的装置、方法和系统 |
WO2013048493A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Memory channel that supports near memory and far memory access |
WO2013128490A1 (en) * | 2012-03-01 | 2013-09-06 | Hitachi, Ltd. | Method for reusing resource and storage sub-system using the same |
KR20140134497A (ko) * | 2013-05-14 | 2014-11-24 | 삼성전자주식회사 | 메모리 시스템 및 그것의 캐시 관리 방법 |
US9252131B2 (en) * | 2013-10-10 | 2016-02-02 | Globalfoundries Inc. | Chip stack cache extension with coherency |
US20150261681A1 (en) * | 2014-03-14 | 2015-09-17 | International Business Machines Corporation | Host bridge with cache hints |
-
2016
- 2016-03-31 US US15/087,797 patent/US10185619B2/en active Active
-
2017
- 2017-01-13 CN CN201780014026.3A patent/CN108701070B/zh active Active
- 2017-01-13 DE DE112017001658.4T patent/DE112017001658T5/de active Pending
- 2017-01-13 WO PCT/US2017/013442 patent/WO2017171974A1/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090300413A1 (en) * | 2006-06-21 | 2009-12-03 | Chang Tsung-Yung Jonathan | Disabling portions of memory with defects |
CN101340569A (zh) * | 2007-07-06 | 2009-01-07 | 扬智科技股份有限公司 | 高速缓存及其数据处理方法 |
CN102138129A (zh) * | 2008-09-05 | 2011-07-27 | 飞思卡尔半导体公司 | 用于数据处理系统中的统一高速缓存的错误检测方案 |
CN102541756A (zh) * | 2010-11-09 | 2012-07-04 | 富士通株式会社 | 高速缓冲存储器系统 |
US20160041772A1 (en) * | 2010-12-22 | 2016-02-11 | Intel Corporation | Two-level system main memory |
US20150186275A1 (en) * | 2013-12-27 | 2015-07-02 | Adrian C. Moga | Inclusive/Non Inclusive Tracking of Local Cache Lines To Avoid Near Memory Reads On Cache Line Memory Writes Into A Two Level System Memory |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716887A (zh) * | 2019-09-11 | 2020-01-21 | 无锡江南计算技术研究所 | 一种支持写暗示的硬件高速缓存数据装入方法 |
CN110716887B (zh) * | 2019-09-11 | 2021-08-10 | 无锡江南计算技术研究所 | 一种支持写暗示的硬件高速缓存数据装入方法 |
CN113961482A (zh) * | 2020-07-21 | 2022-01-21 | 美光科技公司 | 高速缓存存储器的增强型重复写入数据跟踪 |
Also Published As
Publication number | Publication date |
---|---|
DE112017001658T5 (de) | 2018-12-20 |
CN108701070B (zh) | 2022-08-12 |
US10185619B2 (en) | 2019-01-22 |
US20170286210A1 (en) | 2017-10-05 |
WO2017171974A1 (en) | 2017-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108701070A (zh) | 对多级系统存储器的存储器侧高速缓存的容易出错的高速缓存行槽的处理 | |
CN106997324B (zh) | 非易失性存储器模块、具有其的计算系统及其操作方法 | |
EP3549129B1 (en) | Storage circuitry responsive to a tag-matching command | |
US9129672B2 (en) | Semiconductor device and operating method thereof | |
US10860244B2 (en) | Method and apparatus for multi-level memory early page demotion | |
US20090070526A1 (en) | Using explicit disk block cacheability attributes to enhance i/o caching efficiency | |
WO2017052764A1 (en) | Memory controller for multi-level system memory having sectored cache | |
US10120806B2 (en) | Multi-level system memory with near memory scrubbing based on predicted far memory idle time | |
US20190042451A1 (en) | Efficient usage of bandwidth of devices in cache applications | |
US11741011B2 (en) | Memory card with volatile and non volatile memory space having multiple usage model configurations | |
US10108549B2 (en) | Method and apparatus for pre-fetching data in a system having a multi-level system memory | |
US20170177482A1 (en) | Computing system having multi-level system memory capable of operating in a single level system memory mode | |
US11456034B2 (en) | Fully associative cache management | |
US10235049B2 (en) | Device and method to manage access method for memory pages | |
US11055228B2 (en) | Caching bypass mechanism for a multi-level memory | |
US10915453B2 (en) | Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures | |
US10402325B2 (en) | Memory system | |
US11467979B2 (en) | Methods for supporting mismatched transaction granularities | |
WO2017091197A1 (en) | Cache manager-controlled memory array |
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 |