CN111149094A - 处理缓冲器中的错误 - Google Patents

处理缓冲器中的错误 Download PDF

Info

Publication number
CN111149094A
CN111149094A CN201880062493.8A CN201880062493A CN111149094A CN 111149094 A CN111149094 A CN 111149094A CN 201880062493 A CN201880062493 A CN 201880062493A CN 111149094 A CN111149094 A CN 111149094A
Authority
CN
China
Prior art keywords
buffer
entries
processing
cache
redundant
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
Application number
CN201880062493.8A
Other languages
English (en)
Other versions
CN111149094B (zh
Inventor
巴拉吉·韦尼
马蒂亚斯·洛塔尔·伯特歇尔
姆布·埃约勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
ARM Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ARM Ltd filed Critical ARM Ltd
Publication of CN111149094A publication Critical patent/CN111149094A/zh
Application granted granted Critical
Publication of CN111149094B publication Critical patent/CN111149094B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • G06F11/167Error detection by comparing the memory output
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1057Data output buffers, e.g. comprising level conversion circuits, circuits for adapting load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/186Passive fault masking when reading multiple copies of the same data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/267Reconfiguring circuits for testing, e.g. LSSD, partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种缓冲器(72)、(74)、(76)、(60)、(78)、(20)、(82‑90)具有用于缓冲与数据处理操作相关联的项目的许多条目。缓冲器控制电路(100)具有冗余分配模式,在所述冗余分配模式下,在向所述缓冲器分配给定项目时,所述项目被分配给所述缓冲器的两个或更多个冗余条目。在从所述缓冲器读取或排出项目时,比较所述冗余条目并且在检测到失配的情况下触发错误处理响应。通过有效地减少缓冲器容量,这简化针对缓冲器条目中的故障的测试。

Description

处理缓冲器中的错误
技术领域
本技术涉及数据处理的领域。更具体地本技术涉及错误处理。
背景技术
数据处理设备可能经受随机硬件故障,例如可以使存储元件或数据路径的位被永久性地固定在例如0或1处的、通过集成电路中的短路或破裂过孔所引起的永久故障,或诸如通过暴露于自然辐射或粒子撞击所引起的位翻转的暂时故障。对于一些使用领域,例如在安全性可能是关键的汽车领域中,为了确保功能安全性可给处理器提供用于检测错误并且在存在此类错误的情况下确保安全操作的错误检测机制。一种方法可以是复制整个处理器核心并且在锁步模式下运行两个或更多个处理器,在所述锁步模式下,每个处理器运行相同的代码并且通过比较相应处理器上的等效操作的结果来识别错误。然而,这种方法在电路面积和功耗方面,特别是在处理器核心是相对高性能处理器的情况下可能非常昂贵,并且同样地因为可能需要比较相应处理器核心上的许多接口以检测错误,所以这可能需要大量的附加布线。另一方法可以是提供基于软件的测试,其中周期性地在给定处理器核心上执行的主处理被中断以执行测试指令序列,所述测试指令序列可以被设计为探测处理器核心的存储元件或数据路径是否在准确地起作用。然而,此类软件测试套件可能难以设计,因为给定处理器核心可以具有许多微架构设计特征,所述许多微架构设计特征可从核心到核心显著地变化,并且除非出现一组具体情况,否则可能不会调用这些微架构设计特征,从而使得难以设计用于探测在微处理器实施方案中可能出现的每一种可能的错误的指令序列。
发明内容
至少一些示例提供一种设备,所述设备包括:
缓冲器,所述缓冲器包括用于缓冲与由至少一个处理电路执行的数据处理操作相关联的项目的多个条目;以及
缓冲器控制电路,所述缓冲器控制电路具有冗余分配模式,在所述冗余分配模式下:
当向所述缓冲器分配给定项目时,所述缓冲器控制电路被配置为将所述给定项目分配给所述缓冲器的N个冗余条目的集合中的每个条目,其中N≥2;以及
当从所述缓冲器读取或移除所述给定项目时,所述缓冲器控制电路被配置为比较存储在所述N个冗余条目的集合中的所述项目并且当在存储在N个冗余条目的集合中的所述项目之间检测到失配时触发错误处理响应。
至少一些示例提供一种设备,所述设备包括:
用于缓冲的装置,包括用于缓冲与由用于处理的至少一个装置执行的数据处理操作相关联的项目的多个条目;以及
用于控制的装置,具有冗余分配模式,在所述冗余分配模式下:
当向所述用于缓冲的装置分配给定项目时,所述用于控制的装置被配置为将所述给定项目分配给所述缓冲器的N个冗余条目的集合中的每个条目,其中N≥2;以及
当从所述用于缓冲的装置读取或移除所述给定项目时,所述用于控制的装置被配置为比较存储在所述N个冗余条目的集合中的所述项目并且当在存储在所述N个冗余条目的集合中的所述项目之间检测到失配时触发错误处理响应。
至少一些示例提供一种方法,所述方法包括:
在缓冲器的多个条目中缓冲与由至少一个处理电路执行的数据处理操作相关联的项目;
其中,当在冗余分配模式下操作时:
当向所述缓冲器分配给定项目时,所述给定项目被分配给所述缓冲器的N个冗余条目的集合中的每个条目,其中N≥2;以及
当从所述缓冲器读取或移除所述给定项目时,比较存储在所述N个冗余条目的集合中的所述项目并且当在存储在所述N个冗余条目的集合中的所述项目之间检测到失配时触发错误处理响应。
附图说明
通过以下将结合附图阅读的对示例的描述,本技术的另外的方面、特征和优点将是显而易见的,在附图中:
图1示意性地图示数据处理设备的示例;
图2示意性地图示具有许多缓冲器的处理器核心的示例;
图3示出包括在缓存中的缓冲器的示例;
图4图示软件内置自测试的示例;
图5示出在正常模式下起作用的缓冲器的示例;
图6示出在冗余分配模式下操作缓冲器的示例,在所述冗余分配模式下给定项目被分配给缓冲器的两个或更多个冗余条目;
图7是图示向缓冲器分配项目的方法的流程图;
图8是图示从缓冲器读取或排出项目并检测错误的方法的流程图;以及
图9图示用于在同一处理器核心中执行冗余操作的核心内锁步模式
具体实施方式
数据处理设备内的缓冲器(其缓冲与由至少一个处理电路执行的数据处理操作相关联的项目)可对于故障测试造成特别的挑战。常常,可以提供缓冲器来在等待带宽或变得可用于处理该项目的机会的同时缓冲该项目,诸如在总线上用于发出事务的槽(slot)或在执行单元上用于执行指令的槽。通常可以调整缓冲器的大小以应对缓冲器上预期的最坏情况需求,但是在实践中峰值需求可能不会经常发生,所以常常缓冲器可能不会完全满(实际上为了避免性能损失,***常常被故意地设计来提供足够大小的缓冲器,以致缓冲器很少变得完全满)。这意味着一些缓冲器条目可能不会被经常使用,并且软件测试套件或通过处理流水线执行的冗余操作集可能难以生成足够的需求来完全填充缓冲器。对于位于处理器核心外部的缓冲器,诸如互连或存储器组件中的缓冲器,情况尤其如此。将项目存储在缓冲器中的另一因素是,与地址控制哪一个数据存储位置被访问的存储器或缓存存储装置不同,利用缓冲器将项目分配给缓冲器可能常常取决于项目被供应给缓冲器的顺序,所以由处理电路执行的指令可能难以影响哪些特定缓冲器条目会更新项目。这可能使得难以生成探测缓冲器的每个位置是否经受错误的测试算法。因此,利用现有的故障测试技术可能难以适当地探测缓冲器条目是否已遇到错误。
如在下面所讨论的,可以提供具有冗余分配模式的缓冲器控制电路,在所述冗余分配模式下,当向缓冲器分配给定项目时,缓冲器控制电路将给定项目分配给缓冲器的N个冗余条目的集合中的每个条目,其中N≥2,而当从缓冲器读取或移除给定项目时,缓冲器控制电路比较存储在N个冗余条目的集合中的项目并且当在存储在N个冗余条目的集合中的项目之间检测到失配时触发错误处理响应。
因此,当在冗余分配模式下时,缓冲器容量有效地减少了N倍,使得每当项目被分配给缓冲器时,它都被冗余地分配给缓冲器的多个条目。然后,当从缓冲器读取或移除项目时,可比较存储在冗余条目的集合中的项目并且在检测到失配时触发错误处理响应。这减少需要被分配到缓冲器中以便填充缓冲器的全部占用率的项目的数量,这使测试变得较容易,因为设计一组测试操作来填充较少的缓冲器条目是不太复杂的。然而,可测试缓冲器的全部容量,因为如果在任何冗余条目中发生错误,则可通过与相同集合的其他条目相比较来检测错误。
在一个示例中,在冗余分配模式下,缓冲器控制电路可以响应于要将项目分配给缓冲器的单个请求而将给定项目分配给N个冗余条目。因此,处理电路或其他请求实体不必要生成多个缓冲器分配请求。
在一个示例中,设备可以具有自测试控制电路,所述自测试控制电路用于触发至少一个处理电路以切换到用于执行软件自测试指令序列的自测试状态。如上面所讨论的添加缓冲器内冗余的技术在使用软件自测试的***中特别有用,因为减少需要被分配到缓冲器中以便完全占用缓冲器中的所有条目的不同项目的总数意味着指令的自测试序列常常可在长度和运行时间方面显着地减少,因为不必要针对缓冲器模拟高利用率。通过降低软件自测试序列的复杂性,这允许在对正在由处理电路执行的正常处理的性能影响较小的情况下实现软件内置自测试(BIST)功能性,因为这意味着可减少正常处理被中断以便执行内置自测试序列的时间的窗口。
软件BIST的替代方案可以是使用核心内锁步模式,在所述核心内锁步模式下处理电路可以在同一处理器核心内执行冗余处理操作并且依照对冗余处理操作的结果的比较来执行错误检测。例如,响应于处理的主线程的给定指令,处理流水线的解码器能将该指令映射到多个不同的操作,一个对应于主处理并且另一个对应于用于检查主处理的结果的检查器处理。虽然此类核心内锁步模式可能在处理寄存器中或实际地生成处理操作的结果的执行单元中的错误时有效,但是可能无法探测一些缓冲器中的错误,因为缓冲器的利用率可能未直接地映射到特定处理操作。例如,在加载/存储操作情况下复制这些并执行两个加载/存储操作可能不切实际,所以核心内锁步方法可能未被用于加载/存储操作。在任何情况下即使在核心内锁步模式下发出了多个相同的加载/存储操作,在实践中数据处理***也可以具有用于通过将对同一地址的多个加载或存储操作合并成单个操作来优化性能的微架构特征,以便减少所需要的存储器带宽,所以即使发出了多个加载或存储这也可能不保证多个条目被分配到缓存或存储器***中的缓冲器中。通过使用上面讨论的在冗余分配模式期间要分配给缓冲器的给定项目被存储在多个冗余条目中的方法,这使得确保缓冲器变得被完全占用变得更简单,使得可测试缓冲器的每个位置是否有错误。因此,缓冲器控制电路的冗余分配模式可以补充核心内锁步方法。
然而,可以在期望错误检查的任何***中使用缓冲器内冗余。例如即使处理器核心被完全复制以便提供锁步功能性,其中每个核心冗余地执行同一程序,也可以仍然有在多个处理器之间共享的一些缓冲器,所以对于此类缓冲器来说,给定项目到多个条目的冗余分配可以简化测试和/或增加故障检测覆盖范围。
在一些实施例中,除了冗余分配模式之外,缓冲器控制电路还可以具有正常模式,在所述正常模式下,当向缓冲器分配给定项目时,缓冲器控制电路将给定项目分配给缓冲器的单个条目。在冗余分配模式由于现在有可被存储在缓冲器中的较少不同的项目而有效地减少缓冲器的容量时,这可能影响性能并且由于缓冲器中的容量不足而使处理操作更可能被延迟。通过提供正常模式以及然后当重要的是维持较高性能时,可选择正常模式,然而可在功能安全性被认为更重要时使用冗余分配模式。例如,在支持用于执行指令的软件自测试指令序列的自测试状态的***中,缓冲器控制电路可以响应于至少一个处理电路进入到自测试状态而切换到冗余分配模式。缓冲器控制电路然后可以响应于在执行软件自测试指令序列之后返回到先前处理而切换回到正常模式。因此,在一些情况下可以仅在软件BIST模式期间启用冗余分配模式。例如,触发进入到软件自测试序列的异常也能触发切换到冗余分配模式。
在一些示例中,设备可以具有存储用于控制缓冲器控制电路是在冗余分配模式还是正常模式下操作的可编程控制参数的配置寄存器。因此,在处理器上执行的代码可更新可编程控制参数以控制是正常模式被用于较高性能还是冗余分配模式被用于较高功能安全性。在一些情况下,配置寄存器能包括与设备内的不同缓冲器相对应的两个或更多个单独的可编程控制参数,使得可为每个缓冲器独立地选择冗余分配模式或正常模式。
替代地,在一些示例中,即使当至少一个处理电路处于用于执行除软件自测试序列以外的指令的功能状态时,缓冲器控制电路也能在冗余分配模式下操作。因此,即使在处理“真实”代码期间(而不是在具体测试序列期间)也能启用冗余分配模式。例如,在一些实施例中缓冲器控制电路能永久地在冗余分配模式下操作,使得可以不提供任何正常模式。在这种情况下,与不使用冗余分配模式的***相比较性能冲击可以是可接受的,或者如果在仍然启用冗余分配模式的同时需要较大的性能,则与不具有冗余分配模式的设备相比较可以给数据处理设备提供附加缓冲器条目,使得缓冲器比正常情况下要大,同时N向冗余提供错误处理能力。因此,如果微架构使得可为缓冲器提供一些附加电路区域,则没必要为了在功能状态期间支持冗余分配模式而影响性能。在功能状态期间使用冗余分配模式的优点是这除了使得能够检测永久错误(位固定在0或1处)之外,还使得能够检测缓冲器中的瞬时错误(诸如通过α粒子撞击引起的位翻转)。
N(被冗余地分配有给定项目的条目的数量)可以是大于或等于二的任何值。在一些示例中N可以等于2。这可能可用于限制使用冗余分配模式的性能影响,因为它允许在对于硬件中提供的给定数量的全部条目使得能够将最大数量的不同项目存储在缓冲器中的同时实现冗余。例如,在真实代码的功能处理期间启用冗余分配模式(而不是仅在专用软件BIST测试模式期间使用冗余分配模式)的***中,为了降低性能影响N可能优选等于2。然而,在其他***中N可能更大,例如4或8,这将具有降低设计测试例程以完全填充缓冲器的复杂性的优点。
在一些情况下,N可以甚至等于在硬件中提供的缓冲器的条目的总数。因此,整个缓冲器能在冗余分配模式期间有效地对应于一个逻辑缓冲器条目,使得仅一个项目需要被分配给缓冲器以便完全填充缓冲器并允许通过相应缓冲器条目中的项目之间的比较来检测任何条目中的故障。虽然通过提供完整冗余来有效地将缓冲器容量减少至一个逻辑条目可能似乎违反直觉,但是在测试模式期间这可能是有益的,因为它大大地减少填充缓冲器所需要的努力。
总之,可以减少或增加N的值以对照与测试相关联的开销来权衡常规处理期间的性能。***内的不同的缓冲器可以按不同的N值而操作,所以每一缓冲器没必要使用相同的值。
错误处理响应能采取各种形式。尽管在一些情况下错误处理响应可以包括触发***的重置或将指令从处理流水线清除,但是在一些情况下错误处理响应可以简单地包括更新状态寄存器以指示已检测到错误。例如,当运行软件测试算法时,可能不期望每次检测到错误时立即触发重置。替代地可能最好是软件测试算法完成,然后在算法结束时检查状态寄存器以检查是否已检测到任何错误。在一些情况下,可以存在多个缓冲器,所以错误处理响应可以包括更新状态寄存器以指示这些缓冲器中的哪一个遇到了检测到的错误。取决于已检测到哪些错误,测试指令然后可以确定如何解决错误(例如所检测到的错误的特定位置或量可以确定处理可继续到的程度)。
在一些示例中,设备可以具有错误检测码存储电路以存储与缓冲器的冗余条目的集合中的至少一个相对应的至少一个错误检测码。例如错误检测码存储电路可能是缓冲器条目本身的一部分或者可能是单独的存储元件。当在与给定缓冲器项目相对应的N个冗余条目之间检测到失配时,那么缓冲器控制电路可以使用至少一个错误检测码来检测N个冗余条目的集合中的哪一个是错误条目。因此,通过提供错误检测码(诸如奇偶校验码或循环冗余校验(CRC)码),不仅可以检测到冗余条目中的一个是错误的,而且可以识别冗余条目的集合中的哪一个是错误条目。错误处理响应然后能包括转发存储在N个冗余条目中的除错误条目以外的一个中的项目以供在任何后续处理中使用。这种方法在真实代码的处理期间使用缓冲器的冗余分配模式的情况下可能特别有用,因为即使当检测到错误时,它也可以允许真实代码继续向前进行。
上面讨论的技术可被与在数据处理***内使用的任何缓冲器一起使用。缓冲器(其也可以被称为队列)可以被用于在等待某个事件发生或等待槽变得可用于接受项目的同时暂时存储项目。要将项目分配给缓冲器的请求将通常不指定识别应该被分配有项目的缓冲器的位置的地址,而是缓冲器控制电路可以简单地根据缓冲器的当前占用率和该项目相对于其他项目被接收的顺序而选择要使用哪一个条目。另外,可以从缓冲器排出(移除)项目,而不用通过请求了将项目分配给缓冲器的条目显式地被请求要这样做。
例如,缓冲器可以包括用于使由至少一个处理电路处理的指令排队的指令队列。例如,指令队列可能是处理流水线内的指令的任何队列,诸如用于使等待解码的指令排队的解码队列、用于使等待寄存器重命名的指令排队的重命名队列、用于使等待操作数变得可用从而可发出指令以供执行的指令排队的发出队列、或者用于使因为指令依赖于尚未被执行或者本身仍然未被提交的较早指令所以仍待提交的指令排队的重排序缓冲器(或提交缓冲器)。测试算法可能常常难以完全填充此类缓冲器,因为缓冲器通常被调整大小以应对峰值需求,所述峰值需求将难以在使测试例程的持续时间保持尽可能短的同时在测试例程中高效地模拟。
缓冲器还可以包括用于使响应于由至少一个处理电路执行的指令而发出的加载/存储事务排队的加载/存储队列。
缓冲器的另一示例可以是缓存内的缓冲器,其可以用于使以下各项中的至少一个排队:用于从缓存读取数据的读取请求;要响应于由至少一个处理电路发出的存储事务而写入到缓存的存储数据;请求从另一缓存或存储器读取数据的线路填充请求;要写入到缓存的从另一缓存或存储器读取的线路填充数据;以及请求将从缓存读取的数据写入到另一缓存或存储器的回写请求。设计完全探测缓存的内部缓冲器中的错误的测试算法可能是困难的,因为缓存的配置和缓冲器的大小可以从一种设计到另一设计显著地变化,使得用于一种处理器设计的测试算法可能不适合于另一处理器设计。另外,特别是对于主存储器之前的最后一级缓存,完全填充该缓存中的缓冲器将常常需要生成到不同的地址的大量加载/存储事务以便确保不能通过较低级缓存来满足加载/存储需求并且生成对存储器的足够请求以完全占用最后一级缓存中的缓冲器。在实践中,模拟那种程度的负载可能常常需要非常长的测试算法,这使***的常规处理延迟并且可在生成不必要的大量存储器操作时消耗更多的功率。可以通过在冗余分配模式期间将项目冗余地分配给缓存中的此类缓冲器使得探测错误需要更少的开销来避免此问题。
在另一示例中,缓冲器可以包括在互连或存储器子***中用于缓冲一致性事务(诸如窥探请求)或存储器访问事务的事务缓冲器。常常可以在多个处理电路之间共享互连或存储器子***中的事务缓冲器。在实践中,完全填充互连或存储器子***中的缓冲器因此可能需要那些处理电路中的每一个在峰值负载下操作。在实践中,为了生成大量需求而设计测试操作可能不切实际,并且这总体上将对数据处理设备的常规性能产生显著影响,因为将需要处理电路中的每一个停止它们的常规处理以便生成存储器事务。可通过使用上面讨论的冗余分配模式来避免这种开销。
图1示意性地图示包括许多处理电路4(在此示例中为两个CPU)的数据处理***2的示例,所述处理电路4能够访问存储在存储器6中的数据。存储器控制器8控制对存储器6的访问。每个CPU具有一个或更多个内部缓存10(尽管在图1中为了简明示出了单个缓存,但是应领会的是,一些处理器核心可以在层次结构中具有多个缓存)。互连12被提供来维持缓存在相应处理器4的缓存10中的数据之间的一致性。互连12可以根据特定一致性协议来操作,例如使用窥探事务来确保当一个处理器读取数据值时那么它将接收数据的最新版本,从而反映由其他处理器4对相同地址处的数据的更新。互连12可以具有用于缓存数据的***缓存16,使得可比在必须从主存储器6取出对应数据的情况下更快地访问它。
如图1中所示,互连12和存储器控制器8可以具有用于在一致性事务或存储器事务正在等待被处理的同时缓冲它们的事务缓冲器20。例如,可以在等待互连12与处理器4之间的总线22上的槽的同时或者在等待来自处理器4中的一个的响应的同时使窥探事务或其他一致性事务在事务缓冲器20中排队。另外,能在等待足够带宽变得可用于访问存储器6的同时在存储器控制器8中的缓冲器20中缓冲存储器事务。在实践中,位于互连12之外的存储器子***能包括用于处理存储器事务的许多组件(为了简明在图1中仅示出存储器控制器8的图被简化),所以在实践中可以存在多个此类缓冲器20。
图2更详细地示出处理器核心4中的一个的示例。处理器核心4包括处理流水线,所述处理流水线包括用于处理指令的许多流水线级。在此示例中流水线包括:取出级30,用于从指令缓存32取出指令;解码级34,用于对由取出级30取出的指令进行解码以生成用于控制流水线的剩余级以执行适当的数据处理操作的控制信号;以及重命名级36,用于执行寄存器重命名以便将通过经解码的指令识别的架构寄存器指定符映射到硬件中提供的物理寄存器38(重命名表40可以用于跟踪架构寄存器到物理寄存器的映射)。流水线还可以包括:发出级42,用于使在正在计算其操作数的同时等待执行的指令排队,并且一旦操作数可用就发出指令以供执行;以及执行级44,其包括用于响应于对应指令而执行不同类型的处理操作的许多执行单元46-48。例如,图2示出执行级44包括用于执行算术/逻辑运算的算术/逻辑单元(ALU)46、用于使用浮点操作数来执行运算的浮点单元47以及用于处理加载或存储操作以便访问缓存或存储器的加载/存储单元48的示例。在此示例中,处理器核心包括第1级数据缓存50、第1级指令缓存32和在数据与指令之间共享的第2级缓存52。如果数据在第1级缓存或第2级缓存中的任何一个内不可用,则向主存储器发送请求。应领会的是,这只是可能的缓存层次的一个示例,并且在其他示例中能提供另外的缓存。即使数据在处理器核心的内部缓存32、50、52中可用,也仍然可能需要将一些事务发送到互连12以便维持与其他处理器中的缓存的一致性。
可以提供存储器管理单元(MMU)54以用于处理通过由流水线处理的指令所指定的虚拟地址变成用于识别存储器***内的位置的物理地址的转换。MMU 54可以包括转换后备缓冲器(TLB)56,所述TLB 56作为用于缓存来自主存储器的定义地址转换映射的页面表条目的子集的缓存。
流水线还包括提交级58,所述提交级58控制将被执行指令的结果回写到寄存器堆38。在此示例中处理流水线支持乱序执行,所以提交级具有用于使被执行指令排队的重排序缓冲器60,所述被执行指令正在等待程序顺序中的较早指令完成执行或被提交,使得可将结果回写到寄存器堆38。也就是说,可以推迟被执行指令的结果的回写直到知道了指令应该已执行并且任何前面的指令也已正确地执行为止。虽然图2示出乱序处理器的示例,但是本文讨论的技术也可被应用于可以具有不同的流水线配置的顺序处理器。例如在顺序处理器中,可以省略重命名级36并且提交级58可以用回写级替换,所述回写级简单地按照被执行指令被执行的顺序回写被执行指令的结果。
处理器4还包括用于控制异常的处理的异常控制电路62。例如异常控制电路62可以通过中断在处理流水线上执行的当前线程的处理并且切换到异常处理程序的执行来对外部中断或软件生成的异常做出响应。可以基于定时器64来控制一些类型的异常,所述定时器64可以周期性地生成异常信号来触发处理流水线执行某个动作。处理器4还可以包括用于存储用于控制流水线的操作的各种控制参数的控制寄存器66。控制寄存器可以像将在下面讨论的那样包括指定错误状态数据的错误报告寄存器68和指定指示值70的模式的寄存器。
如图2中所示,可以在流水线中提供许多缓冲器以用于使用于要执行的操作的指令排队。例如,解码级34可以具有用于使等待解码的指令排队的解码队列72,重命名级可以具有用于使等待重命名的指令排队的重命名队列74,并且发出级42可以具有用于使等待发出以供执行的指令排队的发出队列76。另外提交级58可以具有如上面所讨论的重排序缓冲器60。加载/存储单元48还可以维护加载/存储队列78,所述加载/存储队列78可以使等待发出到存储器***或等待来自存储系器统的响应的加载/存储事务排队。应领会的是,还能在处理器内提供其他队列结构。每个缓冲器或队列可以具有一定数量的条目。虽然在本申请中参考在缓冲器中缓冲指令、事务、请求或其他项目,但是应领会的是,这包含实际地存储在缓冲器中的信息不是指令、事务、请求或项目它本身而是与指令、事务、请求或项目有关的信息的情况,所述信息能具有与通过该信息表示的项目不同的形式。
如图3中所示,处理***2的各种缓存(不仅包括处理器核心4内的数据或指令缓存32、50、52,而且还包括用于缓存地址转换数据的TLB 56以及互连12或存储器***内的任何缓存16)还可以包括用于缓冲读取或写入请求或等待被写入到实际地存储缓存数据的缓存RAM存储装置80中的数据的许多缓冲器。例如缓存缓冲器可以包括:读取缓冲器82,其缓冲在读取请求正在等待由缓存RAM 80服务的同时请求从缓存读取数据的读取请求;和/或存储缓冲器84,用于缓存用于将数据存储到缓存RAM 80(包括缓冲要写入到缓存RAM 80的对应数据)的存储请求。另外,缓存可以包括用于在CPU 4从缓存请求数据但是该数据不存在于缓存内并且所以需要被从存储器取出时处理缓存未命中的各种缓冲器。例如,此类缓冲器可以包括:线路填充请求缓冲器86,用于缓冲将要发出到另一缓存或请求将数据带入缓存的存储器***6的线路填充请求;线路填充数据缓冲器88,用于缓冲已响应于线路填充请求而被从另一缓存或存储器6返回但是仍然尚未被写入到缓存RAM 80中的数据;以及回写请求缓冲器90,其缓冲对要回写到存储器的当前或先前存储在缓存RAM 80中的数据的请求。例如,在直写式缓存中那么将数据写入到缓存RAM 80中的存储缓冲器84中的任何存储请求还可以触发对存储器的对应回写请求,其可以在等待被服务的同时被暂时缓冲在缓冲器90中。可替代地,对于回写缓存可以推迟缓存RAM 80中的脏数据的回写直到数据被从缓存中驱逐为止,并且此时可以触发回写请求。应领会的是,图3中所示的缓冲器82至90只是一个示例,并且能提供其他类型的缓冲器,或者能省略这些类型的缓冲器中的一些。
更智能且可能半自主的车辆(汽车、无人机等)的出现表示针对高性能处理器的增长市场。然而,安全关键***要求对组件进行认证以满足具体完整性等级。例如汽车安全完整性等级(ASIL)风险分类方案提供在可被检测的故障的百分比方面变化的若干等级的分类。可以将集中于功能安全的处理器设计为包括错误检测机制,诸如在线逻辑内置自测试、专用硬件检查器等,这可使得它们能够被以最高分类等级(ASIL D)分类。然而,应用处理器更集中于通用环境内的性能并且不太可能支持这种程度的增加复杂性,因为对于更复杂的较高性能核心来说包括错误检测机制的成本和努力将是不可行的。然而,如果能以较低安全分类(例如,ASIL B)对这样的较高性能处理器进行认证,则能将此类处理器与用于仲裁的较小实时处理器组合,以形成符合ASIL D的***,以在安全关键环境中使得能实现较高性能。因此,将期望提供使得能够为了功能安全对较高性能处理器进行分类的错误检测用技术。
ASIL-B认证需要检测CPU设计(触发器和网络两者)中的90%的固定故障(使存储元件的位元被固定在1或0处而不管存储到该位元的值如何的永久故障)的能力。物理锁步技术可提供100%固定故障检测能力但是引发巨大的面积和功率开销。软件BIST是在测试例程中被开发来检测CPU设计中的固定故障的流行的替代方方案。
SW BIST库预期在CPU的功能模式期间周期性地运行以检测CPU中的任何固定故障。库需要在大小方面小(较少的代码空间)并且必须使执行运行时间保持最少。图4示出与应用94一起执行SW BIST的时间线以及关于执行SW BIST所涉及的开销的细节。在该示例中,通过中断CPU来周期性地执行SW BIST例程96。在执行SW BIST例程之前,CPU的所有寄存器状态(通用和***寄存器)被保存(97)到存储器,因为SW BIST是破坏性过程。在SW BIST例程被执行之后,先前保存的状态被恢复(98)到寄存器38。这可在典型的微处理器架构上花费超过2000个周期。如果SW BIST的执行运行时间非常长,则可将测试拆分成分块以满足应用的实时保证。
测试例程基本上将具有两个阶段:
1.触发固定故障以传播到“观察点”。
2.在“观察点”处检测所传播的故障。
测试套件通常在测试案例结束时检查存储器中的某个状态以报告“检测到故障”或“未检测到故障”。存储器是用于SW BIST的“观察点”,锁步比较器是用于物理锁步技术的“观察点”。开发SW BIST是高度费时的且有挑战性的,因为故障可在它到达在SW BIST例程的情况下通常为存储器的“观察点”时容易地得以被掩盖,并且需要开发测试套件来检测CPU中的设计中的大量触发器和网络(例如数千个触发器和电线)上的固定故障。
在开发SW BIST时的问题点之一是覆盖将核心对接到存储器***的其余部分的存储器接口单元或总线接口单元中的固定故障。这些单元在它们中具有许多缓冲器,其中在将任一数据转发到存储器***(STR事务)或转发到核心(LD事务)之前数据被保持并合并。覆盖这些缓冲器单元中的固定故障将涉及编写测试以完全填充缓冲器,然后希望故障将传播到“观察点”。在填充缓冲器时存在巨大挑战,因为核心将保持比填充速率更快地排出事务。
图5示出在正常操作模式下操作缓冲器的示例。在这种情况下,当做出要将项目(例如,指令、数据值或事务)存储到缓冲器的请求时,则它被分配给仅缓冲器的单个条目(可以例如基于当前缓冲器占用率或过去的分配历史来选择哪一个条被使用)。当下游元件准备好接受所缓冲的项目时,那么它可以从所分配的缓冲器槽读取该项目(而不使所缓冲的项目无效),或者可以从缓冲器排出所缓冲的项目(读取所缓冲的项目并且通过使所对应的缓冲器槽无效来将它从缓冲器中移除)。
然而,为了测试缓冲器结构中的“固定”故障,缓冲器将需要被完全填充并且从每个条目读回数据。通常,缓冲器微架构被设计为尽可能快地从缓冲器排出项目,这使完全填充缓冲器成为一项困难任务。对于互连12或存储器控制器8中的可以在多个处理器之间共享并且可以设计为具有可应付最坏情况工作负载的大小的事务缓冲器20来说,或者对于如图3中所示的缓存中的缓冲器来说,情况尤其如此,其中对于最后一级缓存来说这些缓冲器在正常操作期间很少得以被完全填充,因为大多数存储器访问事务将通常由较低级缓存服务,所以将需要使用最后一级(例如,第3级或另一)缓存。
如图6中所示,可通过在冗余分配模式下操作缓冲器来解决这些问题,在所述冗余分配模式下,通过将缓冲器条目冗余地分组到与一定数量的N个缓冲器条目相对应的逻辑槽中来有效地减少缓冲器条目的数量(而未实际地减少缓冲器的实际容量),其中N是2或更大。在示例图6中N=2中,所以当给定项目被分配给缓冲器时那么它被写入到同一逻辑槽的2个条目。也就是说,相同值被写入到冗余条目中的每一个。当接收到用于从缓冲器读取或移除项目的读取或排出请求时,缓冲器控制电路100(具有缓冲器检查组合逻辑102)比较存储在同一槽内的N个冗余条目中的每一个中的条目并且检查冗余地存储的项目中的每一个是否仍然相同。如果在所比较的N个冗余条目中的项目之间存在失配,则采取错误处理响应。例如错误处理响应可以包括将数据写入到处理器核心的控制寄存器66内的错误报告寄存器68。
因此,以图6为例,软件BIST算法仅必需提出测试来填充4个缓冲器槽而不是8个缓冲器槽,这使得能够使用较短的测试序列并且简化测试算法的设计。
虽然图6示出N等于2的示例,但是其他示例能在N为较大数情况下操作。例如N能等于4或8。N不必为2的幂。
特别激进的实施方式能将整个缓冲器减少到具有在锁步中操作的许多物理条目的一个逻辑位置。因此,在这种情况下N可以等于缓冲器中的条目的总数,所以仅一个项目需要被分配给缓冲器以便完全填充它并且使得能够检测任何缓冲器条目中的故障。虽然这可能以增加在逻辑102内用于检查所有条目是否匹配的组合逻辑为代价,但是这将进一步简化所需的软件BIST算法。因此,可以存在冗余与电路逻辑开销之间的权衡。
在一些情况下,简单地能够检测到在缓冲器中某处已发生错误可能就足够了,并且知道哪一个特定缓冲器条目遇到该错误可能不重要。然而为了提供错误定位能力,每组N个冗余条目可以与错误检测码104(诸如图6的示例中的奇偶校验位)相关联,所述错误检测码104是基于当项目被分配给缓冲器并且在比较冗余槽内的项目时用于确定哪一个特定缓冲器条目包含错误时放置在对应条目中的条目来计算的。例如,当N=2时两个冗余条目中的一个具有关联的奇偶校验位可能就足够了(不需要两个条目都具有奇偶校验位),因为当检测到失配时那么可将奇偶校验位与从缓冲值中的一个生成的奇偶校验位相比较,并且如果所计算的奇偶校验与所存储的奇偶校验值104匹配,则可推断出错误在冗余对的另一条目中,然而如果奇偶校验失配则错误归因于条目具有与之相关联的奇偶校验位。更一般地,对于在逻辑槽中提供N个冗余条目的情况,那么能为除一个以外的所有冗余条目提供N-1个奇偶校验值或其他类型的错误检测码。
可在不同的用例中使用冗余分配模式。在一些情况下,能仅在软件内置自测试模式期间启用冗余分配模式。在这种情况下,常规代码的性能在当不在执行软件测试时的时段期间保持不变。冗余分配模式的提供显著地提高软件测试的性能,因为可用测试指令的较短序列完全填充微架构缓冲器,因此软件测试的运行时间更少并且因此对常规代码的影响较小。可以提供错误报告寄存器68来记录是否在这些缓冲器中的一个中检测到任何故障,并且在软件测试结束时可检查错误报告寄存器68。在一些情况下,错误报告寄存器68可以包括许多不同的错误状态位,其指示是否已在***中的两个或更多个缓冲器中检测到错误,使得可识别错误的位置并且可采取适当的响应。
在其他示例中,即使在功能模式期间也能启用用于缓冲器控制电路100的冗余分配模式。因此,即使在处理器上运行常规代码期间,冗余分配模式仍然能用于检测在缓冲器或队列结构中发生的错误。在这种情况下,可采取区域命中,使得与未提供冗余分配模式的情况相比,可在缓冲器中的硬件中提供附加条目,或者可替代地可将缓冲器的现有大小拆分成冗余条目的集合,并且这可以招致性能冲击,但具有增加错误检测的好处。当冗余分配模式在常规代码的功能处理期间被用于缓冲器时,这提供存在软错误故障检测的额外优点,因为然后可检测缓冲器中的瞬时错误。
能响应于某些事件而自动地控制缓冲器控制电路100是在冗余分配模式还是正常模式下操作。例如当异常控制电路62(作为自测试控制电路)触发切换到软件BIST模式时,那么这可以自动地触发要针对缓冲器激活的冗余分配模式。可替代地,控制寄存器66内的模式配置值70能通过软件来设置以便选择是使用正常模式(用于较高性能)还是冗余分配模式(用于提高对错误的鲁棒性)。
总之,在缓冲器冗余分配模式期间可将内部队列/缓冲器中的条目拆分成组,一些用于常规操作而一些用于锁步。写入到队列条目自动地更新对应的锁步条目。从队列条目读取或收回自动地执行与对应的锁步条目的比较并且更新状态寄存器中的故障。因此,在写入操作时,多个物理槽被地址和数据值更新并且物理槽的有效位被设置。在读取操作或排出操作时,存在通过比较冗余条目的所有字段的值(有效地址和数据)来做的附加检查。
图7是示出控制项目到缓冲器中的分配的方法的流程图,所述缓冲器可能是上面讨论的缓冲器的类型中的任一种。在步骤120处,缓冲器控制电路接收要向缓冲器分配给定项目的请求。在步骤122处,确定了缓冲器控制电路100的当前模式是正常模式还是冗余分配模式。例如,能参考控制寄存器66中的模式选择值70来确定这个,所述控制寄存器66可能是在微架构中对在处理流水线上执行的软件不可见的内部寄存器(例如模式选择值可能在给定器件的制造期间被硬连线),或者可能是对软件可见使得软件可影响哪一种模式被使用的可编程寄存器。可替代地,一些实施例可能不支持正常模式,所以能总是在冗余分配模式下操作。
如果当前模式是正常模式,则在步骤124处缓冲器控制电路100将给定项目分配给缓冲器的单个缓冲器条目。
如果当前模式是冗余分配模式,则在步骤126处给定项目由缓冲器控制电路分配给缓冲器的N个冗余条目的集合,其中N是2或更大。在步骤128处,可选地计算错误检测码104并且将它存储在缓冲器条目它本身中或在单独的存储元件中。错误检测码可以是使得能够检测存储值中的错误的任何类型的码,例如奇偶校验码或循环冗余校验(CRC)码。通常将不需要提供附加冗余以使得能够从仅存储值和单独CRC恢复存储值的正确值的纠错码,因为在将给定项目存储到多个位置时已经存在冗余,使得当在冗余缓冲器条目中的一个中检测到错误时,那么可根据冗余集合的其他条目中的一个确定正确值,其中错误检测码足以定位错误但是不需要识别正确的存储值。
图8是示出从缓冲器读取或排出项目的方法的流程图。在步骤130处,缓冲器控制电路接收要从缓冲器读取或排出项目的请求。在步骤132处,确定缓冲器的当前操作模式。如果缓冲器处于正常模式,则在步骤134处从单个条目读取或排出该项目。例如,缓冲器可以具有指示要读取或排出的下一个项目的指针,所以可以从通过该指针指示的缓冲器条目读取该项目。
如果缓冲器处于冗余分配模式,则在步骤136处选择缓冲器的N个冗余条目的给定集合(再次例如能基于指针来选择要访问的条目的集合)。N个冗余条目中的项目被比较并且在步骤138处确定了所比较的项目是否匹配。如果不匹配,则在步骤140处触发错误处理响应。如果项目匹配,则在步骤142处读取或排出并转发存储在N个冗余条目中的任一个中的项目以供由下游元件进行后续处理。如果项目被排出则所有冗余条目都失效。
步骤140处的错误处理响应能变化,但是在一些情况下可以包括更新错误报告寄存器68内的状态位以指示在给定缓冲器内发生了错误。可替代地错误处理响应可能更具侵入性,例如把一些指令从流水线驱赶出或触发重置事件。
如上面所讨论的,冗余分配模式对支持软件BIST的***来说可能是有用的。然而,它还可用在其他形式的故障测试中。例如,如图9中所示,可以使用核心内锁步方法,其中处理流水线可以执行与要执行的主处理相对应的多个冗余操作,使得可比较这些冗余操作的结果以便识别任何错误。例如,响应于给定指令(例如,ADD)200,流水线的解码级34能将这个映射到主操作202和第二冗余检查器操作204,所述第二冗余检查器操作204旨在生成与主操作202相同的结果。比较电路206然后可比较两个操作202、204的结果并且在检测到失配的情况下触发错误处理响应。虽然图9示出支持将主指令拆分成多个冗余操作的解码器34,但是在其他示例中编译软件以用于在流水线上执行的编译器能生成多个冗余指令,使得处理器核心它本身的处理流水线不需要作这种拆分。无论哪种方式,核心内锁步方法都可能无法复制响应于给定程序而执行的每一处理操作(例如复制加载/存储指令可能不切实际),所以上面讨论的提供缓冲器分配的冗余的冗余分配模式对于补充通过核心内锁步模式所实现的错误检测覆盖范围来说可能是有用的。
在本申请中,单词“被配置为……”用于意味着设备的元件具有能够执行所定义的操作的配置。在这种上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,设备可以具有提供所定义的操作的专用硬件,或者处理器或其他处理设备可以被编程来执行功能。“被配置为”不暗示需要以任何方式改变设备元件以便提供所定义的操作。
尽管已在本文中参考附图详细地描述了本发明的说明性实施例,然而应当理解的是,本发明不限于那些精确的实施例,并且在不脱离如由所附权利要求所限定的本发明的范围和精神的情况下,本领域的技术人员可在其中做出各种变化和修改。

Claims (19)

1.一种设备,包括:
缓冲器,所述缓冲器包括多个条目,用于缓冲与由至少一个处理电路执行的数据处理操作相关联的项目;以及
缓冲器控制电路,所述缓冲器控制电路具有冗余分配模式,在所述冗余分配模式下:
当向所述缓冲器分配给定项目时,所述缓冲器控制电路被配置为将所述给定项目分配给所述缓冲器的N个冗余条目的集合中的每个条目,其中N≥2;以及
当从所述缓冲器读取或移除所述给定项目时,所述缓冲器控制电路被配置为:比较存储在所述N个冗余条目的集合中的项目,并且当在存储在所述N个冗余条目的集合中的所述项目之间检测到失配时触发错误处理响应。
2.根据权利要求1所述的设备,包括自测试控制电路,所述自测试控制电路用于触发所述至少一个处理电路中的至少一个处理电路以切换到用于执行软件自测试指令序列的自测试状态。
3.根据前述权利要求中的任一项所述的设备,包括支持核心内锁步模式的至少一个处理电路,在所述核心内锁步模式下,所述处理电路被配置为在同一处理器流水线内执行冗余处理操作并且依照对所述冗余处理操作的结果的比较来执行错误检测。
4.根据前述权利要求中的任一项所述的设备,其中,所述缓冲器控制电路具有正常模式,在所述正常模式下,当向所述缓冲器分配给定项目时,所述缓冲器控制电路被配置为将所述给定项目分配给所述缓冲器的单个条目。
5.根据权利要求4所述的设备,其中,所述缓冲器控制电路被配置为响应于至少一个处理电路进入到用于执行软件自测试指令序列的自测试状态而切换到所述冗余分配模式。
6.根据权利要求5所述的设备,其中,所述缓冲器控制电路被配置为响应于在执行所述软件自测试指令序列之后返回到先前处理而切换到所述正常模式。
7.根据权利要求4至6中的任一项所述的设备,包括配置寄存器,所述配置寄存器用于存储可编程控制参数,所述可编程控制参数用于控制所述缓冲器控制电路是在所述冗余分配模式下还是在所述正常模式下操作。
8.根据权利要求1至3中的任一项所述的设备,其中,所述缓冲器控制电路被配置为:当所述至少一个处理电路处于用于执行除软件自测试指令序列以外的指令的功能状态时,在所述冗余分配模式下操作。
9.根据前述权利要求中的任一项所述的设备,其中,所述错误处理响应包括更新状态寄存器以指示已检测到错误。
10.根据前述权利要求中的任一项所述的设备,包括多个所述缓冲器,其中,所述错误处理响应包括更新状态寄存器以指示所述多个缓冲器中的哪一个遇到了检测到的错误。
11.根据前述权利要求中的任一项所述的设备,包括错误检测码存储电路,所述错误检测码存储电路用于存储与所述N个冗余条目的集合中的至少一个冗余条目相对应的至少一个错误检测码,其中,当检测到所述失配时,所述缓冲器控制电路被配置为使用所述至少一个错误检测码来检测所述N个冗余条目的集合中的哪一个是错误条目。
12.根据权利要求11所述的设备,其中,所述错误处理响应包括转发存储在所述N个冗余条目中的除所述错误条目以外的一个条目中的项目以供在后续处理中使用。
13.根据前述权利要求中的任一项所述的设备,其中,所述缓冲器包括指令队列,用于使由所述至少一个处理电路中的一个处理电路处理的指令排队。
14.根据权利要求1至12中的任一项所述的设备,其中,所述缓冲器包括用于使加载/存储事务排队的加载/存储队列,所述加载/存储事务是响应于由所述至少一个处理电路中的一个处理电路执行的指令而发出的。
15.根据权利要求1至12中的任一项所述的设备,其中,所述缓冲器包括缓存内的缓冲器,以使以下各项中的至少一项排队:
要从所述缓存读取数据的读取请求;
要响应于由所述至少一个处理电路中的一个处理电路发出的存储事务而写入到所述缓存的存储数据;
请求从另一缓存或存储器读取数据的线路填充请求;
要写入到所述缓存的从所述另一缓存或存储器读取的线路填充数据;以及
请求将从所述缓存读取的数据写入到所述另一缓存或存储器的回写请求。
16.根据权利要求1至12中的任一项所述的设备,其中,所述缓冲器包括在互连或存储器子***中的事务缓冲器,所述事务缓冲器用于缓冲一致性事务或存储器访问事务。
17.根据权利要求1、12、15和16中的任一项所述的设备,其中,所述缓冲器在多个处理电路之间被共享。
18.一种设备,包括:
用于缓冲的装置,包括多个条目,用于缓冲与由至少一个用于处理的装置执行的数据处理操作相关联的项目;以及
用于控制的装置,具有冗余分配模式,在所述冗余分配模式下:
当向所述用于缓冲的装置分配给定项目时,所述用于控制的装置被配置为将所述给定项目分配给所述缓冲器的N个冗余条目的集合中的每个条目,其中N≥2;以及
当从所述用于缓冲的装置读取或移除所述给定项目时,所述用于控制的装置被配置为:比较存储在所述N个冗余条目的集合中的项目,并且当在存储在所述N个冗余条目的集合中的所述项目之间检测到失配时触发错误处理响应。
19.一种方法,包括:
在缓冲器的多个条目中缓冲与由至少一个处理电路执行的数据处理操作相关联的项目;
其中,当在冗余分配模式下操作时:
当向所述缓冲器分配给定项目时,所述给定项目被分配给所述缓冲器的N个冗余条目的集合中的每个条目,其中N≥2;以及
当从所述缓冲器读取或移除所述给定项目时,比较存储在所述N个冗余条目的集合中的项目,并且当在存储在所述N个冗余条目的集合中的所述项目之间检测到失配时触发错误处理响应。
CN201880062493.8A 2017-10-05 2018-08-30 处理缓冲器中的错误 Active CN111149094B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1716280.1A GB2567189B (en) 2017-10-05 2017-10-05 Handling errors in buffers
GB1716280.1 2017-10-05
PCT/GB2018/052450 WO2019069042A1 (en) 2017-10-05 2018-08-30 ERROR MANAGEMENT IN BUFFER

Publications (2)

Publication Number Publication Date
CN111149094A true CN111149094A (zh) 2020-05-12
CN111149094B CN111149094B (zh) 2024-03-15

Family

ID=60326855

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880062493.8A Active CN111149094B (zh) 2017-10-05 2018-08-30 处理缓冲器中的错误

Country Status (4)

Country Link
US (1) US11113164B2 (zh)
CN (1) CN111149094B (zh)
GB (1) GB2567189B (zh)
WO (1) WO2019069042A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113326524A (zh) * 2021-06-18 2021-08-31 鹏城实验室 指令处理方法及处理器

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11129024B2 (en) * 2018-08-21 2021-09-21 Continental Teves Ag & Co. Ohg Vehicle-to-X communication device and method for realizing a safety integrity level in vehicle-to-X communication
US11556413B2 (en) * 2019-12-09 2023-01-17 SiFive, Inc. Checker cores for fault tolerant processing
US11256569B2 (en) * 2020-01-02 2022-02-22 Arm Limited Error correcting bits
US20230290189A1 (en) * 2022-03-10 2023-09-14 Xilinx, Inc. Flexible queue provisioning for partitioned acceleration device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1031148A (zh) * 1987-05-14 1989-02-15 计数设备公司 自动测量存储器***
DE19639613A1 (de) * 1996-09-26 1997-08-14 Siemens Ag Integrierter Speicher und Paralleltest-Schaltungsanordnung
US20100269022A1 (en) * 2008-11-26 2010-10-21 Arizona Board of Regents, for and behalf of Arizona State University Circuits And Methods For Dual Redundant Register Files With Error Detection And Correction Mechanisms

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4959836A (en) * 1987-12-09 1990-09-25 Siemens Transmission Systems, Inc. Register robustness improvement circuit and method
US5708771A (en) * 1995-11-21 1998-01-13 Emc Corporation Fault tolerant controller system and method
IL160997A0 (en) * 2001-09-19 2004-08-31 Bay Microsystems Inc Vertical instruction and data processing in a network processor architecture
WO2006129356A1 (ja) * 2005-06-01 2006-12-07 Renesas Technology Corp. 情報処理装置、および、その誤演算検出方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1031148A (zh) * 1987-05-14 1989-02-15 计数设备公司 自动测量存储器***
DE19639613A1 (de) * 1996-09-26 1997-08-14 Siemens Ag Integrierter Speicher und Paralleltest-Schaltungsanordnung
US20100269022A1 (en) * 2008-11-26 2010-10-21 Arizona Board of Regents, for and behalf of Arizona State University Circuits And Methods For Dual Redundant Register Files With Error Detection And Correction Mechanisms

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113326524A (zh) * 2021-06-18 2021-08-31 鹏城实验室 指令处理方法及处理器
CN113326524B (zh) * 2021-06-18 2024-05-28 鹏城实验室 指令处理方法及处理器

Also Published As

Publication number Publication date
US11113164B2 (en) 2021-09-07
US20200192775A1 (en) 2020-06-18
GB2567189B (en) 2020-10-21
CN111149094B (zh) 2024-03-15
GB2567189A (en) 2019-04-10
GB201716280D0 (en) 2017-11-22
WO2019069042A1 (en) 2019-04-11

Similar Documents

Publication Publication Date Title
CN111149094B (zh) 处理缓冲器中的错误
CN111164578B (zh) 核内锁步模式的错误恢复
KR102288558B1 (ko) 데이터 처리장치의 메모리 내장 자체 테스트
CN109891393B (zh) 使用检查器处理器的主处理器错误检测
US9058178B2 (en) Selective posted data error detection based on request type
US8533394B2 (en) Controlling simulation of a microprocessor instruction fetch unit through manipulation of instruction addresses
US9471410B2 (en) Transient condition management utilizing a posted error detection processing protocol
US9672298B2 (en) Precise excecution of versioned store instructions
US9389867B2 (en) Speculative finish of instruction execution in a processor core
Shetty et al. Heapmon: A helper-thread approach to programmable, automatic, and low-overhead memory bug detection
GB2451668A (en) Error correction in a set associative cache
US11625316B2 (en) Checksum generation
US8990643B2 (en) Selective posted data error detection based on history
Vera et al. Selective replication: A lightweight technique for soft errors
Didehban et al. A compiler technique for processor-wide protection from soft errors in multithreaded environments
Floridia et al. Deterministic cache-based execution of on-line self-test routines in multi-core automotive system-on-chips
Carretero et al. Hardware/software-based diagnosis of load-store queues using expandable activity logs
US11379233B2 (en) Apparatus and data processing method for transactional memory
Soman et al. REPAIR: Hard-error recovery via re-execution
Montesinos et al. Shield: Cost-effective soft-error protection for register files
Yalcin et al. Exploiting existing comparators for fine-grained low-cost error detection
Lee et al. Bypassing Multicore Memory Bugs With Coarse-Grained Reconfigurable Logic

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