CN103988184B - 元比特在系统存储器内的高效存储 - Google Patents
元比特在系统存储器内的高效存储 Download PDFInfo
- Publication number
- CN103988184B CN103988184B CN201280060309.9A CN201280060309A CN103988184B CN 103988184 B CN103988184 B CN 103988184B CN 201280060309 A CN201280060309 A CN 201280060309A CN 103988184 B CN103988184 B CN 103988184B
- Authority
- CN
- China
- Prior art keywords
- data block
- cache
- bit
- data
- cache line
- 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
Links
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/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- 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/0815—Cache consistency protocols
-
- 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/0411—Online error correction
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)
Abstract
提供用于在系统存储器内高效存储元比特的机制。机制组合L/G比特和SUE比特以形成元比特。机制然后确定高速缓存线在第一数据周期上的本地/全局状态。机制向请求高速缓存转发数据,并且请求高速缓存可以基于高速缓存线的本地/全局状态全局重发请求。机制然后确定高速缓存线在第二或者后续数据周期上的特殊不可纠正错误状态。无论是否全局重发请求,机制都执行错误处理。
Description
技术领域
本申请总体涉及一种改进的数据处理装置和方法,并且更具体地涉及用于在系统存储器内高效存储元比特的机制。
背景技术
存在让微处理器包括许多核的增长趋势。多核处理器是具有两个或者更多独立实际处理器(称为“核”)的单个计算部件,这些核是读取和执行程序指令的单元。指令是普通中央处理器单元(CPU)指令、比如相加、移动数据和跳转,但是多个核可以同时运行多个指令从而增加用于可进行并行计算的程序的总速度。制造商通常向单个集成电路管芯(称为芯片多处理器或者CMP)上或者向单个芯片封装中的多个管芯上集成核。
在计算中,对称多处理(SMP)涉及到多处理器计算机硬件架构,其中两个或者更多处理器连接到单个共享主存储器并且由单个OS实例控制。在多核处理器的情况下,SMP架构可以适用于这些核从而将它们视为分离处理器。在SMP系统由多核芯片构建时,对用于提供增长的探听(snoop)带宽要求的相干互连设计和技术施加显著负担。更宽互连造成更复杂和昂贵的处理器模块和系统板,这造成更大探听带宽。
高速缓存相干性是指在共享资源的本地高速缓存中存储的数据的一致性。在系统中的部件维持公共存储器资源的高速缓存时,不一致数据可能出现问题。这对于多处理系统中的处理单元尤其如此。如果第一处理核具有来自先前读取的存储器块的副本并且第二处理核改变该存储器块,则可能给第一处理核留下无效存储器高速缓存而无该改变的任何通知。高速缓存相干性旨在于管理这样的冲突并且维持在高速缓存与存储器之间的相干性。
发明内容
在一个示例实施例中,提供一种在数据处理系统中用于执行存储器请求的方法。该方法包括在多个数据块中存储高速缓存线。多个数据块中的每个数据块具有纠错代码比特集合和单个元比特。多个数据块的元比特组合以指示本地/全局状态和特殊不可纠正错误比特。该方法还包括本地发出对于高速缓存线的请求。该方法还包括在第一周期中接收多个数据块中的第一数据块并且标识第一数据块的元比特。该方法还包括基于第一数据块的元比特来确定高速缓存线的本地/全局状态。
在另一示例实施例中,一种装置包括:多个处理器核;高速缓存,耦合到多个处理器核中的第一处理器核;以及存储器。高速缓存被配置用于从处理器核接收存储器请求并且存储将由处理器核访问的数据的高速缓存线。存储器在多个数据块中存储高速缓存线。多个数据块中的每个数据块具有纠错代码比特集合和单个元比特。多个数据块的元比特组合以指示本地/全局状态和特殊不可纠正错误比特。高速缓存被配置用于本地发出对于高速缓存线的请求。高速缓存被配置用于在第一周期中接收多个数据块中的第一数据块并且用于标识第一数据块的元比特。高速缓存被配置用于基于第一数据块的元比特来确定高速缓存线的本地/全局状态。
在其它示例实施例中,提供一种包括计算机可用或者可读介质的计算机程序产品,计算机可用或者可读介质具有计算机可读程序。计算机可读程序在计算设备上被执行时使计算设备执行以上关于方法示例实施例概述的操作中的各种操作和组合。
本发明的这些和其它特征以及优点将在本发明的示例实施例的以下具体描述中加以描述并且将从以下具体描述中变得为本领域普通技术人员所清楚。
可以在结合附图阅读时通过参照示例实施例的以下具体描述最好地理解本发明及其优选实施方式以及更多目的和优点。
附图说明
[图1]图1是示例数据处理系统的框图,可以在该数据处理系统中实施示例性实施例的方面;
[图2]图2是数据处理系统中的示例高速缓存分级的框图,可以在该数据处理系统中实施示例实施例的方面;
[图3]图3描绘具有纠错代码的高速缓存线的示例;
[图4]图4描绘根据一个示例实施例的具有纠错代码、本地/全局比特和特殊不可纠正错误比特的高速缓存线的示例;
[图5]图5描绘根据一个示例实施例的具有元比特的高速缓存线的示例,这些元比特指示本地/全局比特和特殊不可纠正错误比特;
[图6]图6是图示根据一个示例实施例的由元比特代表的组合L/G和SUE状态的表;并且
[图7]图7是图示根据一个示例实施例的在高速缓存中处理请求的机制的操作的流程图。
具体实施方式
示例实施例提供一种用于在系统存储器内高效存储元比特的机制。可以在许多不同类型的数据处理环境中利用示例实施例。为了提供用于描述示例实施例的具体单元和功能的背景。下文提供图1和2作为其中可以实施示例实施例的方面的示例环境。应当理解图1和2仅为示例而未旨在于断定或者暗示关于其中可以实施本发明的方面或者实施例的环境的任何限制。可以进行对描绘的环境的许多修改而未脱离本发明的精神实质和范围。
图1是示例数据处理系统的框图,可以在该数据处理系统中实施示例实施例的方面。数据处理系统100是实施用于本发明的示例实施例的过程的计算机可用代码或者指令可以位于其中的计算机的示例。
在描绘的示例中,数据处理系统100运用集线器架构,该集线器架构包括北桥和存储器控制器中枢(NB/MCH)102以及南桥和输入/输出(I/O)控制器中枢(SB/ICH)104。处理单元106、主存储器108和图形处理器110连接到NB/MCH102。图形处理器110可以通过加速图形端口(AGP)连接到NB/MCH102。
在描绘的示例中,局域网(LAN)适配器112连接到SB/ICH104。音频适配器116、键盘和鼠标适配器120、调制解调器122、只读存储器(ROM)124、硬盘驱动(HDD)126、CD-ROM驱动130、通用串行总线(USB)端口和其它通信端口132以及PCI/PCIe设备134通过总线138和总线140连接到SB/ICH104。PCI/PCIe设备可以例如包括以太网适配器、附件卡和用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe未使用。ROM124可以例如是闪存基本输入/输出系统(BIOS)。
HDD126和CD-ROM驱动130通过总线140连接到SB/ICH104。HDD126和CD-ROM驱动130可以例如使用集成驱动电子装置(IDE)或者串行高级技术附着(SATA)接口。超级I/O(SIO)设备136可以连接到SB/ICH104。
操作系统在处理单元106上运行。操作系统协调在图1中的数据处理系统100内的各种部件并且提供对各种部件的控制。作为客户端,操作系统可以是商业上可用的操作系统、比如MicrosoftWindows7(Microsoft和Windows是Microsoft Corporation在美国、其它国家或者二者内的商标)。面向对象的编程系统、比如Java编程系统可以结合操作系统运行并且提供从在数据处理系统100上执行的Java程序或者应用对操作系统的调用(Java是Oracle和/或它的子公司的商标)。
作为服务器,数据处理系统100可以例如是运行高级交互执行(AIX(R))操作系统或者LINUX操作系统的IBM(R)eServer(TM)System p(R)计算机系统(IBM、eServer、System p和AIX是International Business Machines Corporation在美国、其它国家或者二者内的商标)。数据处理系统100可以是包括处理单元106中的多个处理器的对称多处理器(SMP)系统。备选地,可以运用单个处理器系统。
用于操作系统、面向对象的编程系统和应用或者程序的指令位于存储设备、比如HDD126上并且可以向主存储器108中加载用于由处理单元106执行。用于本发明的示例实施例的过程可以由处理单元106使用可以位于存储器、如比如主存储器108、ROM124中或者例如位于一个或者多个外围设备126和130中的计算机可用程序代码来执行。
总线系统、如图1中所示总线138或者140可以由一个或者多个总线组成。当然可以使用任何类型的通信结构或者架构来实施总线系统,该通信结构或者架构提供在附着到该结构或者架构的不同部件设备之间的数据传送。通信单元、比如图1的调制解调器122或者网络适配器112可以包括用来传输和接收数据的一个或者多个设备。存储器可以例如是主存储器108、ROM124或者比如在图1中的NB/MCH102中找到的高速缓存。
本领域普通技术人员将理解图1中的硬件可以根据实现方式变化。除了图1中描绘的硬件之外或者取代图1中描绘的硬件还可以使用其它内部硬件或者外围设备、比如闪存、等效非易失性存储器或者光盘驱动等。并且,示例实施例的过程也可以应用于除了先前提到的SMP系统之外的多处理器数据处理系统而未脱离本发明的精神实质和范围。
另外,数据处理系统100可以采用多个不同数据处理系统中的任何数据处理系统的形式,这些数据处理系统包括客户端计算设备、服务器计算设备、平板计算机、膝上型计算机、电话或者其它通信设备、个人数字助理(PDA)等。在一些示例实施例中,数据处理系统100可以是便携计算设备,向该便携计算设备配置闪存以提供例如用于存储操作系统文件和/或用户生成的数据的非易失性存储器。实质上,数据处理系统100可以是任何已知或者以后开发的数据处理系统而无架构限制。
图2是数据处理系统中的示例高速缓存分级的框图,可以在该数据处理系统中实施示例实施例的方面。数据处理系统200包括多个处理单元210、220。处理单元210具有多个核211、212。核211具有L1高速缓存213,并且核212具有L1高速缓存214。相似地,处理单元220具有多个核221、222。核221具有L1高速缓存223,并且核222具有L1高速缓存224。
在处理单元210内,核211、212访问L2高速缓存215。在处理单元220内,核221、222访问L2高速缓存225。处理单元210、220访问在处理单元210、220之中分布的共享存储器230。处理单元210直接附着到存储器231,并且处理单元220直接附着到存储器232;然而处理单元210可以访问存储器232,并且处理单元220直接附着到存储器232;然而处理单元210可以访问存储器232,并且处理单元220可以访问存储器231。尽管图2中所示示例描绘两个高速缓存级(L1和L2),但是总高速缓存分级可以包括任何数目的级。L2高速缓存215和L2高速缓存225经由相干互连226访问存储器231和存储器232,该相干互连包括在处理单元之间的相干互连结构(总线)。使用相干互连226来执行涉及到探听等的高速缓存操作。
如果核211访问来自存储器231的数据,则L1高速缓存213访问也在L2高速缓存215中存储的高速缓存线。如果核222访问存储器231中的相同数据地址,则L1高速缓存224发出对于来自L2高速缓存225的高速缓存线的请求。高速缓存必须执行高速缓存相干性以保证高速缓存的完整性。高速缓存相干性协议涉及到每个高速缓存探听存储器访问以确定高速缓存线何时变成无效。在可以潜在地包括许多处理单元——每个处理单元具有许多处理核——的多处理系统、比如数据处理系统200中,宽互连可能造成复杂和昂贵的处理器模块和系统板,这造成对于相干互连226上的更大探听带宽的需要。
一种用于在给定的处理器模块以外减少相干互连226上的探听带宽的机制是在存储器中的每个高速缓存数据块中包括“本地/全局”比特(L/G比特)。这一个比特指示在芯片以外的处理器/高速缓存是否包含这一数据的副本。在本地处理器请求来自本地附着的系统存储器部分内的数据块时,处理器初始地指示“本地”访问从而推测L/G比特将指示“本地”。在从本地存储器返回数据时,处理器/高速缓存逻辑检查与数据返回的L/G比特。如果远程处理器/高速缓存尚未访问块,则可以向核转发数据并且无需全局重发命令。如果L/G比特指示“全局”,则未向请求核转发数据并且必须在全局范围内重发存储器请求。虽然L/G比特代表两层命令范围,但是示例实施例可以在任何多层命令范围设计内适用。
存储器可以由于有限总线带宽而在多个周期(拍子beat)中向更高级高速缓存传送高速缓存块。例如可以跨越两个周期传送64字节(64B)高速缓存线、每周期为32字节(32B)。根据请求地址,存储器可以按任一顺序返回64B线的两个32B段。出于性能原因,请求高速缓存越快从存储器接收L/G比特,高速缓存就可以越快向核转发临界数据以全局重发请求。因此理想的是无论先返回哪个段都返回与第一数据周期返回L/G比特。需要越多周期来跨越总线传送线,就越重要的是尽可能早地返回L/G比特以减轻尾随沿延时影响。
除了L/G比特之外,一些高可靠性、可访问性和可服务性(RAS)系统还可以在存储器中为每个高速缓存线维持特殊不可纠错(SUE)比特。SUE比特指示在向存储器回写高速缓存线之前(例如在高速缓存驱逐期间)在系统内检测到不可纠正的错误。在从存储器重读数据时,SUE比特标记数据为不良并且向诊断代码通知错误未源于系统存储器。这一信息辅助隔离和跟踪系统内的故障。
多数计算机系统使用工业标准动态随机存取存储器(DRAM)设备。用最小总线带宽72比特几乎独占地分割典型存储器。这允许用于每64比特数据的8比特纠错代码(ECC)。从这些构建块用相同8:1数据与ECC之比实现更大数据结构。例如8字节ECC可以支持64字节高速缓存块。
图3图示描绘具有纠错代码的高速缓存线的示例。所有ECC代码具有关联出错率。换而言之,代码不会恰当纠正原本可恰当纠正错误的概率有限。用于给定数据量的更多ECC校验比特造成更低出错率。更少ECC校验比特造成更高出错率。如图3中所见,将64B高速缓存线分离成两个32B数据块,每个32B数据块具有4B ECC校验比特(根据8:1比率)。
跟踪用于存储器中的每个高速缓存线的L/G比特和SUE比特的问题在于这些比特减少可用于检错和纠错的ECC校验比特数。图4描绘根据一个示例实施例的具有纠错代码、本地/全局比特和特殊不可纠正错误比特的高速缓存线的示例。在描绘的示例中,将L/G比特替换为每个32B数据,因此它无论哪个32B段是临界段(即先读取并且向请求高速缓存返回的段)都将尽可能快地可用。因此,在用于组合的两个32B段的8B之中,三比特必须用于L/G和SUE,而61比特(8B减去3比特)可以用作ECC校验比特。在一些高端服务器环境中,存储器RAS级和所得出错率要求可以如此严格以至于它排除实施性能优化、比如L/G比特或者每高速缓存线具有比特的多个副本。
示例实施例提供一种用于对于高速缓存线的临界粒度存储元比特而最小化对于SUE比特和L/G比特而消耗的ECC校验比特数的高效机制。示例实施例认识如果在存储器中用SUE比特标记高速缓存线,则L/G比特的状态可以不确定,因此请求高速缓存必须将高速缓存线视为全局。示例实施例最小化ECC出错率的劣化,而仍然通过将SUE指示与L/G信息组合成两个元比特来提供用于每个高速缓存段的L/G信息。
在处理器/高速缓存请求来自存储器的数据高速缓存线时,高速缓存直至第二(或者更晚)周期才可以接收数据不良的指示。例如如果需要四个周期来接收128B高速缓存线(每周期32B),则错误指示直至第四周期才可以到来。出于性能原因,可以不希望保持前三个数据周期从而等待错误指示,具体因为这些类型的错误颇为罕见。
在图4中所示示例中,需要两个周期来接收64B高速缓存线(每周期32B)。SUE指示直至第二周期才可以到来。将有利的是向核提供第一数据周期以推测地开始处理。
图5描绘根据一个示例实施例的具有元比特的高速缓存线的示例,这些元比特指示本地/全局比特和特殊不可纠正错误比特,这些元比特M0和M1组合SUE信息和L/G状态。图6是图示根据一个示例实施例的由元比特代表的组合L/G和SUE状态的表注意在SUE=0时,M0和M1比特包含相同值并且反映L/G比特的真状态。因此,如果SUE=0,这在多数情况下为真,则高速缓存无论先返回哪个周期都得到相同值。
应当注意,状态零(0)和一(1)是可以互换而未影响这里描述的功能的二进制值表示。换而言之,状态一可以代表真值,而状态零代表假值,并且备选地,状态零可以代表真值,而状态零代表假值。如在本说明书中所用,状态一(1)代表真值或者确立,并且状态零(0)代表假值或者取消确立。
如果SUE=1,则高速缓存失去L/G比特的真状态;然而无论请求高速缓存是否与临界(第一)数据周期接收L/G=0或者L/G=1,高速缓存都将随后看见SUE指示。在看见SUE指示时,无论本地处理或者全局重发请求,高速缓存都将通过与数据一起向核转发错误状态指示来发起错误处理过程。如果在其中可能已经破坏元比特的存储器读取中检测到真的不可纠正的错误,则这同样成立。
根据示例实施例,可以在已知存储器错误状态之前向处理器核转发第一周期(临界拍子)。核可以使用数据、但是直至错误状态对于数据已知才会完成指令。然而如果L/G比特的状态在第一数据拍子到来时未知,则不能向核转发临界数据拍子,因为无需重发具有全局范围的读取请求(如果L/G=全局)。由于不能总是全局发出相干操作,所以鉴于探听带宽需求随之增加,如果用SUE标记高速缓存线,则不能假设L/G比特的状态为“全局”,即使数据未实际驻留于任何远程高速缓存中。用SUE标记的高速缓存线是颇为罕见的呈现;因此在存在SUE时默认L/G的状态为“全局”对性能具有很小影响。
经由“探听过滤状态”信号(SFSTAT)向请求高速缓存传达L/G的状态。这一信号由存储器控制器向与第一数据周期重合的请求高速缓存发送。SFSTAT信号的状态等于恰好伴随临界数据周期的元比特(M0或者M1)的状态。在存储器控制器接收第二(即最后)数据周期时,它对两个元比特进行解码并且如果不相等则确立SUE指示符,该SUE指示符伴随有向请求高速缓存返回的第二(即最后)数据周期。高速缓存然后向与第二/最后数据周期重合的核转发这一错误状态。如果错误状态=1,则核发起错误处理。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在任何一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可用的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置、器件或者任意以上的组合。计算机可读存储介质的更具体的示例(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的计算机代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、射频(RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如JavaTM、SmalltalkTM、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明示例实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
图7是图示根据一个示例实施例的在高速缓存中处理请求的机制的操作的流程图。操作在块700中开始,并且机制发出具有本地范围的请求(块701)。机制接收第一数据周期(块702)并且标识探听过滤状态比特(SFSTAT)(块703)。机制确定第一周期中的SFSTAT比特是为还是者一(块704)。经由“探听过滤状态”信号(SFSTAT)向请求高速缓存传达L/G的状态。这一信号由存储器控制器向与第一数据周期重合的请求高速缓存发送。SFSTAT信号的状态等于恰好伴随临界数据周期的元比特(M0或者M1)的状态。
如果SFSTAT=0,机制假设L/G状态为本地,并且机制向请求核转发第一数据周期(块705)。机制然后接收第二数据周期(块706)并且标识SUE比特(块707)。机制然后设置用于第二数据周期的错误状态等于SUE状态(块708)并且将第二数据周期与错误状态转发给核(块709)。在存储器控制器接收第二(即最后)数据周期时,它对两个元比特进行解码并且如果不相等则确立SUE指示符,该SUE指示符伴随有向请求高速缓存返回的第二(即最后)数据周期。随后,操作在块710中结束。
如果在块704中SFSTAT=1,则机制接收和丢弃第二数据周期(块711)并且重发具有全局范围的请求(块712)。块711和712的操作可以按任一顺序出现。机制从具有全局范围的请求接收第一数据周期(块713)。
然后,操作继续块705,其中机制向核转发第一数据周期。机制然后接收第二数据周期(块706)并且标识SUE比特(块707)。机制然后设置用于第二数据周期的错误状态等于SUE状态(块708)并且将第二数据周期与错误状态转发给核(块709)。随后,操作在块710中结束。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
因此,示例实施例提供用于在系统存储器内高效存储元比特的机制。机制组合L/G比特和SUE比特以形成元比特。机制然后确定高速缓存线在第一数据周期上的本地/全局状态。机制向请求高速缓存转发数据,并且请求高速缓存可以基于高速缓存线的本地/全局状态全局重发请求。机制然后确定在高速缓存线第二或者后续数据周期上的特殊不可纠错状态。无论是否全局重发请求,机制都执行错误处理。因此,示例实施例的机制在每个数据拍子上提供L/G而最小化使用的ECC校验比特数,从而与离散SUE和L/G比特的多个副本相比较而改善出错率。
如以上指出的那样,示例实施例可以采用全硬件实施例、全软件实施例或者包含硬件与软件单元的实施例这样的形式。在一个示例实施例中,在包括但不限于固件、常驻软件、微代码等的软件或者程序代码中实施示例实施例的机制。
适合于存储和/或执行程序代码的数据处理系统将包括通过系统总线直接或者间接耦合到存储器单元的至少一个处理器。存储器单元可以包括在实际执行程序代码期间运用的本地存储器、大容量存储装置和高速缓存存储器,这些高速缓存存储器提供至少一些程序代码的暂时存储以便减少必须在执行期间从大容量存储装置取回代码的次数。
输入/输出或者I/O设备(包括但不限于键盘、显示器、指示设备等)可以直接或者通过居间I/O控制器耦合到系统。网络适配器也可以耦合到系统以使数据处理系统能够变成通过居间专用或者公共网络耦合到其它数据处理系统或者远程打印机或者存储设备。调制解调器、线缆调制解调器和以太网卡仅为当前可用网络适配器类型的少数类型。
本发明的描述已经出于示例和描述的目的而加以呈现、但是并非旨在于穷举本发明或者使本发明限于公开的形式。许多修改和变化将为本领域普通技术人员所清楚。选择和描述实施例以便最佳地说明本发明的原理、实际应用并且使本领域其他普通技术人员能够针对具有如与设想的特定使用相适合的各种修改的各种实施例来理解本发明。
Claims (13)
1.一种在数据处理系统中用于执行存储器请求的方法,所述方法包括:
在多个数据块中存储高速缓存线,其中所述多个数据块中的每个数据块具有纠错代码比特集合和单个元比特,其中所述多个数据块的所述元比特组合以指示本地/全局状态和特殊不可纠正错误比特;
本地发出对于所述高速缓存线的请求;
在第一周期中接收所述多个数据块中的第一数据块;
标识所述第一数据块的元比特;以及
基于所述第一数据块的所述元比特,来确定所述高速缓存线的本地/全局状态。
2.根据权利要求1所述的方法,还包括:
响应于确定所述高速缓存线的所述本地/全局状态为本地,向请求处理器核转发所述第一数据块。
3.根据权利要求2所述的方法,还包括:
在第二周期中接收所述多个数据块中的第二数据块;
标识所述第二数据块的元比特;以及
基于所述第一数据块的所述元比特和所述第二数据块的所述元比特,来确定所述高速缓存线的特殊不可纠正错误状态。
4.根据权利要求3所述的方法,还包括:
响应于所述特殊不可纠正错误状态为真,执行错误处理。
5.根据权利要求3所述的方法,还包括:
基于所述特殊不可纠正错误状态来设置错误状态;以及
将所述第二数据块与所述错误状态转发给所述请求处理器核。
6.根据权利要求1所述的方法,还包括:
响应于确定所述高速缓存线的所述本地/全局状态为全局,全局地重发对于所述高速缓存线的所述请求。
7.根据权利要求6所述的方法,还包括:
在第二周期中接收所述多个数据块中的第二数据块;以及
丢弃所述第二数据块。
8.一种在数据处理系统中用于执行存储器请求的装置,包括:
多个处理器核;
高速缓存,耦合到所述多个处理器核中的第一处理器核;以及
存储器,
其中所述高速缓存被配置成从所述处理器核接收存储器请求并且存储将由所述处理器核访问的数据的高速缓存线,其中所述存储器在多个数据块中存储高速缓存线,其中所述多个数据块中的每个数据块具有纠错代码比特集合和单个元比特,其中所述多个数据块的所述元比特组合以指示本地/全局状态和特殊不可纠正错误比特;
其中所述高速缓存被配置成本地发出对于所述高速缓存线的请求;
其中所述高速缓存被配置成在第一周期中接收所述多个数据块中的第一数据块;
其中所述高速缓存被配置成标识所述第一数据块的元比特;以及
其中所述高速缓存被配置成基于所述第一数据块的所述元比特,来确定所述高速缓存线的本地/全局状态。
9.根据权利要求8所述的装置,其中所述高速缓存被配置成响应于确定所述高速缓存线的所述本地/全局状态为本地,而向请求处理器核转发所述第一数据块。
10.根据权利要求9所述的装置,其中所述高速缓存被配置成在第二周期中接收所述多个数据块中的第二数据块;
其中所述高速缓存被配置成标识所述第二数据块的元比特;以及
其中所述高速缓存被配置成基于所述第一数据块的所述元比特和所述第二数据块的所述元比特,来确定所述高速缓存线的特殊不可纠正错误状态。
11.根据权利要求10所述的装置,其中所述高速缓存被配置成基于所述特殊不可纠正错误状态来设置错误状态,并且将所述第二数据块与所述错误状态转发给所述请求处理器核。
12.根据权利要求8所述的装置,其中所述高速缓存被配置成响应于确定所述高速缓存线的所述本地/全局状态为全局,来全局地重发对于所述高速缓存线的所述请求。
13.根据权利要求12所述的装置,其中所述高速缓存被配置成在第二周期中接收所述多个数据块中的第二数据块;并且
其中所述高速缓存被配置成丢弃所述第二数据块。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/313,364 US8775904B2 (en) | 2011-12-07 | 2011-12-07 | Efficient storage of meta-bits within a system memory |
US13/313,364 | 2011-12-07 | ||
PCT/JP2012/007378 WO2013084423A1 (en) | 2011-12-07 | 2012-11-16 | Efficient storage of meta-bits within a system memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103988184A CN103988184A (zh) | 2014-08-13 |
CN103988184B true CN103988184B (zh) | 2016-10-19 |
Family
ID=48573115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280060309.9A Active CN103988184B (zh) | 2011-12-07 | 2012-11-16 | 元比特在系统存储器内的高效存储 |
Country Status (5)
Country | Link |
---|---|
US (2) | US8775904B2 (zh) |
EP (1) | EP2788880B1 (zh) |
JP (1) | JP5706588B2 (zh) |
CN (1) | CN103988184B (zh) |
WO (1) | WO2013084423A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9367504B2 (en) | 2013-12-20 | 2016-06-14 | International Business Machines Corporation | Coherency overcommit |
US20150213049A1 (en) * | 2014-01-30 | 2015-07-30 | Netapp, Inc. | Asynchronous backend global deduplication |
US9996473B2 (en) * | 2015-11-13 | 2018-06-12 | Samsung Electronics., Ltd | Selective underlying exposure storage mapping |
US9990304B2 (en) * | 2015-11-13 | 2018-06-05 | Samsung Electronics Co., Ltd | Multimode storage management system |
US10713169B2 (en) | 2018-01-17 | 2020-07-14 | International Business Machines Corporation | Remote node broadcast of requests in a multinode data processing system |
US10387310B2 (en) | 2018-01-17 | 2019-08-20 | International Business Machines Corporation | Remote node broadcast of requests in a multinode data processing system |
GR20180100189A (el) | 2018-05-03 | 2020-01-22 | Arm Limited | Δικτυο επεξεργασιας δεδομενων με συμπυκνωση ροης για μεταφορα δεδομενων μεσω streaming |
US10917198B2 (en) * | 2018-05-03 | 2021-02-09 | Arm Limited | Transfer protocol in a data processing network |
US11068407B2 (en) | 2018-10-26 | 2021-07-20 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction |
US10884740B2 (en) | 2018-11-08 | 2021-01-05 | International Business Machines Corporation | Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads |
US11119781B2 (en) | 2018-12-11 | 2021-09-14 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a fronting load |
US11106608B1 (en) | 2020-06-22 | 2021-08-31 | International Business Machines Corporation | Synchronizing access to shared memory by extending protection for a target address of a store-conditional request |
US11693776B2 (en) | 2021-06-18 | 2023-07-04 | International Business Machines Corporation | Variable protection window extension for a target address of a store-conditional request |
US11960351B1 (en) * | 2022-08-29 | 2024-04-16 | Cadence Design Systems, Inc. | System and method for poison information propagation in a storage device |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6163857A (en) * | 1998-04-30 | 2000-12-19 | International Business Machines Corporation | Computer system UE recovery logic |
CN102103547A (zh) * | 2009-12-16 | 2011-06-22 | 英特尔公司 | 替换高速缓冲存储器中的高速缓存行 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5862154A (en) | 1997-01-03 | 1999-01-19 | Micron Technology, Inc. | Variable bit width cache memory architecture |
US6282686B1 (en) | 1998-09-24 | 2001-08-28 | Sun Microsystems, Inc. | Technique for sharing parity over multiple single-error correcting code words |
US6845469B2 (en) | 2001-03-29 | 2005-01-18 | International Business Machines Corporation | Method for managing an uncorrectable, unrecoverable data error (UE) as the UE passes through a plurality of devices in a central electronics complex |
US7607066B2 (en) * | 2002-06-26 | 2009-10-20 | Microsoft Corporation | Auto suggestion of coding error correction |
US7171591B2 (en) | 2003-12-23 | 2007-01-30 | International Business Machines Corporation | Method and apparatus for encoding special uncorrectable errors in an error correction code |
US7353445B1 (en) * | 2004-12-10 | 2008-04-01 | Sun Microsystems, Inc. | Cache error handling in a multithreaded/multi-core processor |
US7587658B1 (en) | 2005-01-03 | 2009-09-08 | Sun Microsystems, Inc. | ECC encoding for uncorrectable errors |
US7437597B1 (en) | 2005-05-18 | 2008-10-14 | Azul Systems, Inc. | Write-back cache with different ECC codings for clean and dirty lines with refetching of uncorrectable clean lines |
US7512742B2 (en) | 2006-01-17 | 2009-03-31 | International Business Machines Corporation | Data processing system, cache system and method for precisely forming an invalid coherency state indicating a broadcast scope |
US20070174679A1 (en) | 2006-01-26 | 2007-07-26 | Ibm Corporation | Method and apparatus for processing error information and injecting errors in a processor system |
US7805575B1 (en) * | 2006-09-29 | 2010-09-28 | Tilera Corporation | Caching in multicore and multiprocessor architectures |
US7890836B2 (en) * | 2006-12-14 | 2011-02-15 | Intel Corporation | Method and apparatus of cache assisted error detection and correction in memory |
US8055975B2 (en) | 2007-06-05 | 2011-11-08 | Apple Inc. | Combined single error correction/device kill detection code |
US7949831B2 (en) * | 2007-11-02 | 2011-05-24 | Oracle America, Inc. | Maintaining cache coherence using load-mark metadata to deny invalidation of load-marked cache lines |
US8341251B2 (en) * | 2008-01-03 | 2012-12-25 | International Business Machines Corporation | Enabling storage area network component migration |
US20090182816A1 (en) * | 2008-01-10 | 2009-07-16 | Jean Xu Yu | Method and system for managing j2ee and .net interoperating applications |
US8176391B2 (en) | 2008-01-31 | 2012-05-08 | International Business Machines Corporation | System to improve miscorrection rates in error control code through buffering and associated methods |
US8181094B2 (en) | 2008-01-31 | 2012-05-15 | International Business Machines Corporation | System to improve error correction using variable latency and associated methods |
US20110041016A1 (en) | 2009-08-12 | 2011-02-17 | Taiwan Semiconductor Manufacturing Company, Ltd. | Memory errors and redundancy |
US8429468B2 (en) | 2010-01-27 | 2013-04-23 | Sandisk Technologies Inc. | System and method to correct data errors using a stored count of bit values |
-
2011
- 2011-12-07 US US13/313,364 patent/US8775904B2/en active Active
-
2012
- 2012-09-12 US US13/611,909 patent/US8775906B2/en not_active Expired - Fee Related
- 2012-11-16 EP EP12856495.2A patent/EP2788880B1/en active Active
- 2012-11-16 JP JP2014526025A patent/JP5706588B2/ja active Active
- 2012-11-16 CN CN201280060309.9A patent/CN103988184B/zh active Active
- 2012-11-16 WO PCT/JP2012/007378 patent/WO2013084423A1/en unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6163857A (en) * | 1998-04-30 | 2000-12-19 | International Business Machines Corporation | Computer system UE recovery logic |
CN102103547A (zh) * | 2009-12-16 | 2011-06-22 | 英特尔公司 | 替换高速缓冲存储器中的高速缓存行 |
Also Published As
Publication number | Publication date |
---|---|
EP2788880A1 (en) | 2014-10-15 |
US20130151929A1 (en) | 2013-06-13 |
EP2788880A4 (en) | 2015-07-15 |
JP5706588B2 (ja) | 2015-04-22 |
CN103988184A (zh) | 2014-08-13 |
US8775904B2 (en) | 2014-07-08 |
US20130151790A1 (en) | 2013-06-13 |
WO2013084423A1 (en) | 2013-06-13 |
JP2015503130A (ja) | 2015-01-29 |
US8775906B2 (en) | 2014-07-08 |
EP2788880B1 (en) | 2018-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103988184B (zh) | 元比特在系统存储器内的高效存储 | |
CN106815151B (zh) | 高性能互连相干协议 | |
CN111506534B (zh) | 具有非阻塞高性能事务信用系统的多核总线架构 | |
CN103257933B (zh) | 无序处理器中的事务存储器执行的方法、设备和系统 | |
US9298632B2 (en) | Hybrid cache state and filter tracking of memory operations during a transaction | |
US8473567B2 (en) | Generating a packet including multiple operation codes | |
TWI514275B (zh) | 用於以自發載入延遲與轉換至預提取來消除管線阻塞之系統及方法 | |
EP2016499B1 (en) | Migrating data that is subject to access by input/output devices | |
US20160283303A1 (en) | Reliability, availability, and serviceability in multi-node systems with disaggregated memory | |
US10268583B2 (en) | High performance interconnect coherence protocol resolving conflict based on home transaction identifier different from requester transaction identifier | |
CN108701023A (zh) | 带内重定时器寄存器访问 | |
CN101398787A (zh) | 虚拟化环境中地址转换缓存操作和i/o高速缓存性能的改善 | |
CZ20012153A3 (cs) | Elektronický deník s ověřením pro prodejní místo a způsoby jeho použití | |
CN107438838A (zh) | 打包的写完成 | |
EP3885918B1 (en) | System, apparatus and method for performing a remote atomic operation via an interface | |
US20150278092A1 (en) | Cache probe request to optimize i/o directed caching | |
US20160026571A1 (en) | Information processing device, memory order guarantee method, and recording medium storing program | |
US8516200B2 (en) | Avoiding cross-interrogates in a streaming data optimized L1 cache | |
US8909862B2 (en) | Processing out of order transactions for mirrored subsystems using a cache to track write operations | |
JP2005250830A (ja) | プロセッサおよび主記憶共有マルチプロセッサ | |
CN117407194A (zh) | 一种基于缓存一致性的异构通信架构 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |