CN108369557B - 非对称一致性协议 - Google Patents

非对称一致性协议 Download PDF

Info

Publication number
CN108369557B
CN108369557B CN201680073139.6A CN201680073139A CN108369557B CN 108369557 B CN108369557 B CN 108369557B CN 201680073139 A CN201680073139 A CN 201680073139A CN 108369557 B CN108369557 B CN 108369557B
Authority
CN
China
Prior art keywords
data
processing
core
processing circuitry
local
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680073139.6A
Other languages
English (en)
Other versions
CN108369557A (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 CN108369557A publication Critical patent/CN108369557A/zh
Application granted granted Critical
Publication of CN108369557B publication Critical patent/CN108369557B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • 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/0706Error 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 the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error 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 the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error 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 the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • 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/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • 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/1695Error detection or correction of the data by redundancy in hardware which are operating with time diversity
    • 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2043Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share a common memory address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8038Associative processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

装置(2)具有第一处理电路(6)和第二处理电路(4)。第二处理电路4具有至少一个硬件机构(10)、(30),其提供比为第一处理电路(6)提供的更高级别的故障保护或故障检测。一致性控制电路(45、80、82)根据非对称一致性协议来控制第一和第二处理电路(6、4)对来自至少一部分共享地址空间的数据的访问,在非对称一致性协议中,第一处理电路(6)的本地高速缓存(8)中的数据的仅本地更新与第二处理电路(4)的本地高速缓存(8)中的数据的仅本地更新相比受到限制。

Description

非对称一致性协议
技术领域
本技术涉及数据处理领域。
背景技术
可以在数据处理***中使用一致性协议来管理两个或更多个处理电路对共享地址空间的访问。例如,每个处理电路可以具有本地高速缓存,并且一致性协议可以确保:如果第一处理电路在本地高速缓存中更新其数据,则当其他处理电路稍后访问来自相同地址的数据时,他们看到由第一处理电路保存的最新版本的数据。
发明内容
针对相对安全关键的应用设计的一些处理电路可被提供有用于故障保护或故障检测的硬件机构。
至少一些示例提供了一种装置,其包括:
第一处理电路;
第二处理电路,其具有至少一个硬件机构,该硬件机构提供比为第一处理电路提供的更高级别的故障保护或故障检测;和
一致性控制电路,用于根据非对称一致性协议来控制第一处理电路和第二处理电路对来自至少一部分共享地址空间的数据的访问,在非对称一致性协议中,第一处理电路的本地高速缓存中的数据的仅本地更新与第二处理电路的本地高速缓存中的数据的仅本地更新相比受到限制。
至少一些示例提供了一种装置,其包括:
第一处理装置;
第二处理装置,其具有至少一个用于使用硬件机构提供比为第一处理装置提供的更高级别的故障保护或故障检测的装置;和
用于根据非对称一致性协议来控制第一处理装置和第二处理装置对来自至少一部分共享地址空间的数据的访问的装置,在非对称一致性协议中,第一处理装置的本地高速缓存中的数据的仅本地更新与第二处理装置的本地高速缓存中的数据的仅本地更新相比受到限制。
至少一些示例提供了一种数据处理方法,其包括:
使用第一处理电路来处理数据;
使用具有至少一个硬件机构的第二处理电路来处理数据,该硬件机构提供比为第一处理电路提供的更高级别的故障保护或故障检测;和
根据非对称一致性协议来控制第一处理电路和第二处理电路对来自至少一部分共享地址空间的数据的访问,在非对称一致性协议中,第一处理电路的本地高速缓存中的数据的仅本地更新与第二处理电路的本地高速缓存中的数据的仅本地更新相比受到限制。
附图说明
根据将结合附图阅读的对示例的以下描述,本技术的其他方面、特征和优点将变得显而易见,其中:
图1示意性地示出了具有第一和第二处理电路的装置的示例,其中第二处理电路具有至少一个硬件机构,该硬件机构提供比为第一处理电路提供的更高级别的故障保护或故障检测;
图2示出了使用冗余处理逻辑和纠错码的故障检测机制的示例;
图3示出用于存储标识共享地址空间的各个区域是对其根据对称一致性协议来控制访问的对称保护区域还是对其使用非对称一致性协议的非对称区域的数据的一致性保护单元的示例;
图4示出了装置的第二示例,其中一致性控制电路包括对应于每个处理电路的各个一致性接口以及用于处理从每个接口发出的请求的侦听控制单元;
图5示出了对称一致性协议的示例;
图6示出了非对称一致性协议的示例;并且
图7示出了管理一致性的方法。
具体实施方式
下面讨论了一些具体示例。将会认识到,本技术不限于这些示例。
处理电路可以设置有至少一个用于故障保护或故障检测的硬件机构,以防范引起错误的硬件故障(例如由阿尔法粒子撞击引起的单粒子翻转),其如果未被检测到则可能影响正在执行的处理的有效性。这对于针对某些安全关键应用设计的处理设备(例如,控制车辆中的制动***的处理器、用于控制飞行器的操作的处理器、或者在诸如工厂或发电厂之类的工业环境中用于控制某些安全关键任务(例如,控制核电站)的处理器)而言特别有用。
然而,与安全关键功能一起,也可能存在要执行的较不安全关键的其他处理功能。例如,在汽车领域中,用于控制车辆中的音频***或卫星导航的处理可能比例如用于控制制动或转向的处理更不安全关键。虽然安全关键功能和较不安全关键功能可以由完全独立的处理器设备来执行,但越来越希望将不同的任务合并到单个控制单元上以降低成本。可以使用与安全关键功能相同的处理电路来执行对较不安全关键的功能。然而,硬件故障保护/检测机构可能在电路面积和性能方面承担一定的成本(例如,硬件机构可能以一定水平的冗余度来执行处理,这可能增加处理时间和功耗)。在执行较不安全关键的功能时,该额外成本可能不合理。
因此,装置可以设置有第一和第二处理电路,其中第二处理电路具有至少一个硬件机构,该硬件机构提供比为第一处理电路提供的更高级别的故障保护或故障检测。以这种方式,第二处理电路可以用于更加安全关键的任务,但是当需要较不安全关键的任务时,可以使用第一处理电路来执行这些任务,使得在执行较不安全关键的功能时不承担故障保护/检测机构的成本。
第一和第二处理电路可以访问共享地址空间。例如,可能有在第一和第二处理电路之间共享的公共存储器。可以使用一致性协议来控制第一和第二处理电路对共享地址空间的访问。例如,一致性协议可以管理来自每个处理电路的读取或写入请求,以确保当一个处理电路更新某些数据时,那么另一个处理电路看到最新版本的该数据。
然而,在具有可以访问来自公共地址空间的数据的具有不同级别的故障保护/检测的处理电路的***中,可能存在以下风险:在第一处理电路中发生的故障可能将错误静默地传播到第二处理电路,错误可能依然未被发现。例如,如果第一处理电路具有本地高速缓存并且在本地高速缓存中执行对数据的仅本地更新,并且随后在第一处理电路中发生故障,该故障因为第一处理电路不具有为第二处理电路提供的相同级别的故障保护/检测而未被检测到,更新后的数据可能依然不正确并且随后第二处理电路可能访问该数据并使用错误的值来执行处理,这可能导致安全关键功能受损。
可以提供一致性控制电路来根据非对称一致性协议控制第一和第二处理电路对来自至少一部分共享地址空间的数据的访问,在非对称一致性协议中,第一处理电路的本地高速缓存中的数据的仅本地更新与第二处理电路的本地高速缓存中的数据的仅本地更新相比受到限制。通过限制第一处理电路在本地高速缓存内执行仅本地更新的能力,减少了第一处理电路中发生的错误传播到第二处理电路可访问的数据的可能性。这是违反直觉的,因为大多数一致性协议将会对称地对待每个处理电路,使得来自一个处理电路的请求通常将会被以与来自另一个处理电路的请求等同的方式对待。然而,通过为其中不同的处理电路具有不同级别的故障保护/检测的***引入非对称一致性协议(这限制了具有较少故障保护/检测的处理电路仅在其本地高速缓存中更新数据的能力),可以降低第二处理电路中的错误的整体风险。
图1示出了包括两个处理器核心4、6的数据处理装置2的示例。每个核心具有用作1级(L1)数据高速缓存的本地高速缓存8。每个核心还具有用于存储定义对共享地址空间的不同区域的访问权限的数据的存储器保护单元(MPU)9,该数据控制在核心上执行的给定进程是否可以访问每个区域中的数据。将会认识到,每个核心4、6还可以包括许多其他组件(为了简明起见而未在图1中示出),诸如处理器流水线、寄存器、分支预测器等。
处理器核心4(称为核心0)具有至少一个用于提供故障保护或故障检测的硬件机构,其未被提供给处理器核心6(称为核心1)。例如,如图2所示,核心0可以具有冗余的处理逻辑10,其中处理逻辑10的两个或更多个副本由相同的输入驱动,使得它们的输出可以被比较以检测从诸如粒子撞击之类的随机硬件故障发生的错误。例如,如图2所示,主处理逻辑10-0接收输入12并处理它们以生成输出14。输入12还被延迟电路16(例如一些触发器或锁存器)延迟,并且延迟后的输入被提供给处理逻辑10-1的冗余副本。主处理逻辑10-0的输出14被另外的提供与延迟电路16等效的延迟的延迟电路18延迟,并且比较器22将延迟后的输出与冗余处理逻辑10-1的输出20进行比较。提供延迟电路16、18以确保处理对象10-0、10-1的冗余版本在不同的时间处理相同的输入,使得电源中的临时毛刺不会影响处理逻辑10的两个副本。
如果比较器22检测到各个输出匹配,则输出14的后续处理继续。如果比较器22检测到输出的失配,则比较器输出指示检测到故障的信号24,并且这可以抑制对错误输出的进一步处理。例如,当检测到故障时,可能会触发异常,这可能导致再次执行曾遇到故障的处理操作或导致某一其他错误处理动作。在开始输出14的后续处理之前等待比较结果不是必要的(在开始后续处理之前等待比较器输出会招致延迟,这对于某些时间关键的安全相关任务而言可能是有问题的)。替代地,在比较器等待冗余逻辑10-1的延迟输出并比较输出的同时,输出14的后续处理可以推测性地开始,并且如果随后检测到错误,则可以停止主输出的推测性处理并采取错误处理动作。
图2中所示的方法可以被称为双核心锁步(DCLS)方法。替代选择是提供三核心锁步(TCLS)***,其中存在处理逻辑10的三个冗余副本。通过TCLS以及检测故障,也可以通过多数表决来校正故障。由于当处理逻辑10的一个版本与另外两个版本不同时,另外两个处理逻辑10很可能是正确的,所以通过使用由大多数冗余逻辑生成的输出,可以校正故障而不需要重复处理操作。
如图2所示,为核心0的L1数据高速缓存8提供的随机存取存储器(RAM)被提供有纠错码(ECC)30。或者,可以使用错误检测码(EDC)。因此,以冗余格式对存储在RAM中的数据进行编码,该冗余格式使得能够检测(并且在ECC的情况下可选地校正)诸如由粒子撞击引起的位翻转之类的错误。例如,EDC或ECC可以包括奇偶校验码、校验和、循环冗余校验码(CRC)、块码、汉明码等等。可以使用任何已知的纠错码或错误检测码机制。因此,当将数据写入RAM 8时,根据所使用的EDC或ECC方案对数据进行编码,这要么生成将与数据一起存储的校验值,要么生成表示数据本身和冗余信息两者的编码值。当稍后读出数据时,可以对EDC或ECC进行解码以确定是否发生了错误(例如,通过检查数据值与校验值之间的不一致性,或者检查表示数据的编码值的无效编码),以防止处理错误的数据。因此,EDC或ECC的使用为故障检测提供了另一种硬件技术。可以由处理逻辑10-0、10-1内的电路以硬件生成EDC和ECC,使得在核心上执行的软件不知道EDC或ECC正在被使用。类似地,可以在处理逻辑10-0、10-1内提供用于当从RAM 8读取数据时检查EDC/ECC是否正确的电路。通过在处理逻辑10-0、10-1中包括EDC/ECC生成和校验电路,由锁步方案提供的复制也保护了错误校验功能,所以如果故障导致EDC/ECC校验失败,这可以通过处理逻辑10-0、10-1的两个副本的发散来检测。
上面讨论的锁步技术以及错误检测/纠正码的使用都是使用冗余来检测故障的故障检测硬件机构的示例。然而,也可以为核心0提供硬件故障保护机制,这减少了起初发生错误的机会。存在许多用于为核心0提供硬件的技术,其与核心1的硬件相比更不易发生故障。例如,核心0的处理逻辑和其他电路元件的至少一些部分可以使用半导体技术来制造,这提供了增强的硬件故障抵抗能力。例如,可以使用绝缘体上硅(SOI)或蓝宝石上硅(SOS)技术来形成核心0,这些技术通常可以承受比标准半导体技术更高水平的辐射。另一选择可以是使用包含碳化硅或氮化镓的器件,其可以提供更大的错误抵抗能力。另一选择是为核心0的电路提供某一屏蔽,例如用金属环或外壳来包围电路,以使设备更少暴露于可能触发硬件错误的宇宙射线以及其他形式的辐射。
因此,存在可以用来保护核心0免受错误或检测何时发生错误的一系列类型的硬件机构。这使得核心0可用于安全关键的应用。
另一方面,对于核心1而言,这种硬件机构的成本可能不合理,并且核心1可能主要是为了较不安全关键的任务。因此,核心1可能具有比核心0更低程度的硬件故障保护或检测。在某些情况下,核心1可能根本不具有用于故障保护或故障检测的硬件,而在其他情况下,某一级别的故障保护或故障检测可能被提供,但是少于核心0。因此,核心1可以对应于第一处理电路,并且核心0可以对应于具有至少一个硬件机构的第二处理电路,该硬件机构提供比为第一处理电路提供的更高级别的故障保护或检测。
如图1所示,装置2还可以包括其他元件,诸如用于检测中断或异常并控制核心4、6之一来处理发生的异常或中断的中断控制器40。例如,中断可以是由外部设备触发的外部中断,或是由在核心4、6之一上执行的处理触发的异常。
而且,装置2具有侦听控制单元(SCU)45,其是用于控制各个核心4、6对共享地址空间的访问的一致性控制电路的示例。例如,SCU 45可以是一致的互连。例如,核心4、6可以共享二级(L2)高速缓存47以及用于存储数据和指令的主存储器50。侦听控制单元45可以根据一致性协议进行操作以控制对来自共享地址空间的数据的访问,使得各个核心4、6具有一致的数据视图,使得当一个核心更新某些数据时,另一个核心也看到更新后的版本。可能存在侦听控制单元(SCU)45可以控制一致性的不同方式。例如,一些***可以使用基于侦听的方法,其中当一个核心希望访问或更新某些数据时,SCU 45向其他核心发送侦听请求以确定其他核心是否保存本地版本的该数据,并且在是的情况下确定本地版本的数据是否与其他位置中存储的来自相同地址的对应数据不同。或者,可以使用基于目录的一致性方案,其中侦听控制单元45维护跟踪哪个数据存储在哪个核心的目录,使得可以用更少的侦听流量来维持一致性,因为将不需要向不保存数据的核心发送侦听请求。另一个替代方案是使用某一级别的侦听的中间方案,但是在SCU 45中提供侦听过滤器,该侦听过滤器跟踪在各个核心4、6的本地高速缓存8中缓存的一些数据,使得当侦听过滤器指示来自给定地址的数据被缓存在某一核心中时,则不需要向该核心发出侦听,但是如果侦听过滤器不记录来自给定地址的数据是否存在于特定核心,则可能向该特定核心发出侦听请求以确定该数据是否被缓存。将会认识到,存在可以使用的一系列不同的一致性方案。
诸如中断控制器40和侦听控制单元45之类的共享控制元件以及共享数据存储设备47、50可被提供有与核心0类似的硬件保护或检测机制,以防止在这些共享元件中发生的错误影响核心0的安全关键处理。例如,侦听控制单元45或中断控制器可以以与图2所示的冗余处理逻辑10类似的方式具有冗余控制逻辑和比较器,并且共享存储设备47、50可以以与核心0的L1高速缓存8类似的方式使用错误检测码/纠错码30。
因此,核心1可能是***中最容易出错的部分。如果在核心1将处于脏状态的某些数据保存在其高速缓存8中时发生错误,则该错误可能静默地传播到核心0,并且核心0的硬件故障检测机制可能不防范该错误。例如,如果核心1侦听来自核心0的数据或访问来自共享L2高速缓存47或存储器50的数据,将该数据加载到其L1高速缓存8中,更新它而不更新其他地方的对应数据,并且随后遇到导致L1高速缓存8中的更新后的数据被损坏的故障,则核心0可能随后发出对来自相同地址的数据的请求,并且由侦听控制单元45提供的一致性机制可能导致核心1的L1高速缓存8中的损坏的数据被传送到核心0,核心0可能随后使用损坏的值来执行处理。由于核心0将无法检查它接收到的输入值是否是错误的,那么这可能导致可能损害安全关键代码的错误。
为了解决该问题,侦听控制单元45可以使用非对称一致性协议来控制对至少一部分共享地址空间的访问。在非对称协议中,与核心0的本地高速缓存8中的数据的仅本地更新相比,核心1在其本地高速缓存8中执行数据的仅本地更新的能力受到限制。仅本地更新是对本地高速缓存8中的数据的更新,而不在另一位置更新对应的数据。换句话说,仅本地更新可能是特定核心的本地高速缓存中的导致数据从干净转换为脏的更新。如下面所讨论的,存在可以使一致性协议变得非对称的各种方法,但是通常这意味着来自核心4、6的用于更新数据的请求可以根据哪个核心发出请求而被不同地处理。在一些情况下,非对称一致性协议可以用于整个共享地址空间,使得核心1所访问的所有地址都可以使用非对称一致性协议。
或者,如图1所示,侦听控制单元可以具有在图3中更详细示出的侦听保护单元(SPU)60。SPU 60(也称为一致性保护单元)可以具有与地址空间的各个区域相对应的多个条目62,并且每个条目62可以将对应区域标识为对称区域66或非对称区域68。例如,一位指示符64可以指示该区域是非对称的还是对称的。侦听控制单元45可以使用对称一致性协议来处理对对称区域66内的地址的访问,其中,无论请求是由核心1发出还是由核心0发出,都以等效的方式处理数据访问。例如,存储与非安全关键功能相关的数据或指令的地址空间的区域可以被分配作为对称区域66。另一方面,对于非对称区域68,使用非对称一致性协议,使得核心1与核心0相比具有在其本地高速缓存8中执行数据的仅本地更新的更小能力。非对称区域可以用于存储更加安全关键的数据或指令。通过提供SPU60以这种方式区分对称区域和非对称区域的能力,这可以提供安全性与性能之间更好的平衡,这是因为:对于对称区域,核心1将能够在其本地高速缓存9中执行数据的仅本地更新,这可以提高在核心1上运行代码时的性能,但是可以针对非对称区域限制仅本地更新以保护更加安全关键的数据和指令免受错误。
SPU 60可以以多种方式标识各个区域。在一些情况下,SPU的每个条目62可以具有到地址空间的对应区域的某一固定映射。或者,如图3所示,可以通过使每个条目指定标识对应区域的开始的基地址70来提供条目62与地址空间的区域之间的可变映射。在一些情况下,每个条目可以对应于地址空间的某一固定尺寸的区域,或者可替代地,条目62可以指定标识可变尺寸的尺寸参数72,使得可以对应于单个条目来定义更大或更小的区域。因此,当从核心之一发出对给定地址的请求时,那么可以在SPU 60中查找它以识别是应该使用对称协议还是应该使用非对称协议。
注意,SPU 60与在各个核心中提供的MPU 9是分开的。虽然将有可能为MPU 9提供控制是使用对称协议还是使用非对称协议的保护属性,但这将需要在核心6、8和SCU 45之间进行属性的某一传输,并且可能难以使该传输可靠,特别是考虑到核心1缺乏在核心0中提供的故障保护/检测机制。因此,在一致性控制电路45中提供单独的SPU 60可以提供更安全的方式来维护定义SPU 60的数据的区域的完整性。注意,尽管图1示出了MPU 9被提供在各个核心6、8中的示例,但是在其它示例中,这些MPU可以被替换为存储器管理单元(MMU),该存储器管理单元除了存储标识给定进程可访问共享地址空间的哪些区域的访问权限数据之外还可以实现在由指令指定的虚拟地址与由存储器***和侦听控制单元45使用的物理地址之间的虚拟到物理的地址转换。
当使用非对称协议时(无论是对于整个地址空间还是仅对于如图3中的选定区域68),SCU 45可以根据哪个核心发出请求而以不同的方式处理来自核心4、6的某些种类的请求。例如,取决于哪个核心4、6发出请求,可以以不同的方式处理向给定地址写入数据的写入请求或用于检查来自给定地址的数据是否在其他核心处被缓存的侦听请求。例如,核心1可以被允许侦听来自核心0的数据但不获取其所有权,而核心0将被允许侦听来自核心1的数据并获取其所有权,使得它可以将该数据本地缓存在核心0的L1高速缓存8中并且继续对该数据进行仅本地更新而不更新核心1的高速缓存8或L2高速缓存47或存储器50内的对应数据。或者,尽管核心0可以执行这种仅本地的更新,但是当核心1侦听来自核心0的数据时,这可能导致数据被驱逐到下一级的存储器***(例如,L2高速缓存47),并且数据可能是在那里被更新而不是在核心1的本地高速缓存8内被更新,这有效地将故障检测和维护数据完整性的责任移交给L2高速缓存47,该高速缓存47可以具有用于防范错误的诸如ECC 30之类的硬件保护机制。
另一方面,一些SCU可能不具有根据哪个核心发出请求而以不同的方式处理特定种类的请求的能力。例如,可以在一致性协议中定义某一类型的请求,使得它必须以某一方式被处理。在这种情况下,如图4所示,除了中央SCU之外,一致性控制电路还可以包括为各个核心4、6提供的各个一致性控制接口80、82。一致性接口80、82可以负责根据是正在使用对称一致性协议还是正在使用非对称一致性协议而以不同的方式处理来自各个核心4、6的某些类型的请求并将它们映射到发送给SCU 45的不同种类的请求。对应于核心0的接口80可以具有未为核心1的接口82提供的硬件故障保护机制(诸如冗余控制逻辑)。根据哪个接口被使用,更新数据的请求可以被以不同的方式处理。例如,核心1接口82可以访问SPU 60以确定当前请求是针对非对称区域还是针对对称区域并且根据哪个区域被访问而将来自核心1的给定请求映射到发送给SCU的不同类型的请求,而核心0接口80可以不管SPU 60的内容如何都以相同的方式处理相同类型的请求。否则,图4的***可以以与图1类似的方式运行。
图5和图6分别示出了根据对称一致性协议和非对称协议来处理来自核心1或核心0的存储请求的示例。这些示例基于由英国剑桥的
Figure BDA0001694669810000111
有限公司提供的/>
Figure BDA0001694669810000112
4 ACE协议。这示出了可以如何修改已知协议以针对各个核心非对称地表现的示例。在描述对称和非对称协议之前,下面描述来自AMBA 4 ACE的一些术语。
在AMBA 4 ACE协议中,本地高速缓存8中的每个高速缓存行可以被分类为有效(存储有效数据)或无效(不存储有效数据)。当给定的高速缓存行为有效时,该高速缓存行可以处于由两个属性的各个组合定义的四种状态之一:唯一(Unique)/共享(Shared)和干净(Clean)/脏(Dirty)。分类为唯一的高速缓存行存储未被保存在***内的任何其他本地高速缓存8中的非共享数据。对于被分类为共享的高速缓存行,来自对应地址的数据可被保存在另一本地高速缓存8中。如果高速缓存行是干净的,则对应的数据可以被无效而无需执行写回到下一级高速缓存47或存储器50。注意,这不一定意味着本地高速缓存8保存与高速缓存47或存储器50中的对应数据相同的数据,而仅意味着该特定高速缓存不负责写回该值。例如,在另一个核心中可能存在另一个本地高速缓存8,其可能包含它所缓存的比存储器更新的数据,所以它是负责将值写回到存储器的另一个核心的高速缓存(在这种情况下,该另一个核心的高速缓存8将缓存处于脏状态的数据)。另一方面,脏的高速缓存行包含最新的最新数据,该数据不同于L2高速缓存47或存储器50中的对应数据,所以如果该数据被从本地高速缓存8中逐出,则它应当被写入回到存储器以保持一致性。当多个高速缓存共享一个高速缓存行时,这些高速缓存中的仅一个具有处于SharedDirty(共享脏)状态的高速缓存行,并且其他高速缓存行保存处于SharedClean(共享干净)状态的对应数据。
总之,每个高速缓存行有五种可能的状态:无效状态以及对应于唯一/共享和干净/脏属性的相应组合的四种有效状态:
·无效;
·UniqueDirty(唯一脏),指示已被修改并且当被逐出时应当被写回到存储器的非共享数据;
·SharedDirty,指示如下数据:其可被缓存在除当前高速缓存之外的其他地方,并且当该数据被逐出时应当被写回到存储器;
·UniqueClean(唯一干净),指示如下数据:其仅被缓存在当前高速缓存中并且与下一级高速缓存或存储器中的对应数据一致,因此当被从高速缓存中逐出或无效时无需被写回;
·SharedClean,指示如下数据:其也可以被缓存在其他地方但不需要被写回到存储器,因为即使当前高速缓存中的数据比下一级高速缓存或存储器的对应位置中的数据更新,也是另一个核心中的另一个缓存负责写回数据。
AMBA 4 ACE定义了多种事务,可以在SCU 45和各个核心60之间传输这些事务以保持一致性。这些事务中的一些在图5和图6中被提及。将会认识到,这些并未示出协议所支持的所有可能的事务,但是图5和图6中提及的相关事务包括以下各项:
·ReadUnique(读取唯一),这是来自给定核心的请求,即应该为该核心的本地高速缓存8提供来自对应目标地址的最新版本的数据。作为响应,该数据被返回到该核心的高速缓存并以唯一状态被缓存。如果该数据也被另一本地高速缓存8保存,则另一高速缓存8使该数据无效,并且如果无效数据是脏的,则其要么可被直接提供给触发ReadUnique请求的本地高速缓存并被缓存为脏,要么可被写回到存储器并被缓存为干净。
·ReadShared(读取共享),其是当高速缓存需要来自给定地址的某些数据但不要求使其成为唯一时发出的请求,因此数据可以继续被缓存在其他本地高速缓存中。SCU将ReadShared请求转发给其他高速缓存,这些高速缓存返回任何脏数据但不使该数据无效。
·WriteUnique(写入唯一),它是来自给定核心的请求,用于将给定地址的更新后的数据写回到共享2级高速缓存47或主存储器***50。如果另一个本地高速缓存8保存对应于该地址的数据,则其使该数据无效。
在图5和6所示的示例中,一致性控制电路如图4所示,其中每个核心具有相应的一致性接口80、82,其使用上面讨论的事务与中央SCU 45进行交互。因此,给定核心4、6可以发出用来存储与给定地址相关联的数据或加载来自给定地址的数据的请求,并且每个接口80、82将加载/存储请求映射到
Figure BDA0001694669810000131
ACETM协议所使用的各个事务。
图5示出了使用对称协议的示例。图5的上部示出了一个示例,其中核心0发出存储操作,该存储操作指定要用更新后的数据写入的目标地址A。图5的下部示出了当核心1发出这样的存储请求时的对应操作。因此,图5假设地址A位于地址空间的对称区域66之一中。
如图5的上部所示,响应于核心0发出的对地址A的存储请求,核心0接口80发出指定地址A的ReadUnique请求100,其被发送到侦听控制单元45。SCU 45将ReadUnique请求102传递给核心1接口82。核心1接口82确定与地址A相关联的数据当前在UniqueDirty状态下被缓存在核心1的本地高速缓存8中。因此,来自核心1本地高速缓存8的脏数据104被返回到侦听控制单元45,其在步骤106将脏数据104传递到核心0接口80。同时,核心1接口82还触发核心1以使保存来自地址A的数据的高速缓存行无效并且该高速缓存行现在转变为无效状态。
当核心1中先前缓存的脏数据被核心0接口80接收到时,它控制核心0将该脏数据与响应于原始存储请求而要写入到高速缓存行的更新后的数据合并,并且合并后的数据在UniqueDirty状态下被缓存在核心0的本地高速缓存8中,从而指示该数据比任何其他位置中的数据更新并且核心0有责任将其写回到存储器。
如果核心1随后再次要求来自地址A的数据,则它发出加载请求。响应于该负载,核心1接口82发出对应于地址A的ReadShared请求108。侦听控制单元45接收ReadShared请求并向核心0接口80发出对应的ReadShared请求110。既然核心1希望使用来自地址A的数据,那么该数据不再可以被维持为唯一并且因此核心0中的对应高速缓存行转变为SharedDirty,并且来自核心0的高速缓存8的数据在步骤112被返回给侦听控制单元并在步骤114被侦听控制单元45转发给核心1接口82。核心1接口82然后控制核心1以将来自地址A的数据缓存为SharedClean。注意,尽管来自地址A的数据在核心0的高速缓存8中是脏的,但它在干净状态下返回到核心1,以表示核心1没有责任将该数据写回到存储器***。
类似地,如图5的下部所示,如果核心1接口82检测到核心1已发出对给定地址A的存储请求,则发生对应的一组操作。图5的上部和下部示例中的处理是完全对称的。因此,一致性控制电路45、80、82以等效的方式处理存储请求,以经由侦听控制单元45触发相同的一系列状态转变和事务,而不管哪个核心发出存储或加载请求。核心0和核心1都可以在其本地高速缓存8中执行对数据的仅本地更新——参见步骤106的结果,其中数据被缓存为UniqueDirty。当正在处理相对非安全关键的数据时,该方法是可以接受的,因为即使如图5的下部所示在核心1具有Dirty状态的高速缓存线时发生错误,从而导致该数据的损坏,这不会影响核心0正在执行的安全关键的功能。
然而,对于安全关键的数据,图5的下部所示的方法可能是风险,因为当核心1将数据保存为UniqueDirty时,它是具有最新版本的该数据的唯一缓存,并且没有对应的值被保存在核心0的高速缓存8中的其他地方或被保存在存储器***47、50的其他部分中。因此,对于安全关键的数据,作为代替可以使用图6所示的非对称协议。
在该示例中,非对称协议假定禁止核心1缓存与来自非对称区域68之一的地址A相关联的任何数据。注意,在一些情况下,地址空间的所有区域都可被视为非对称区域,并且在在这种情况下,可以不提供SCU60,并且可以不存在如图5所示的任何对称协议。或者,如果提供了SCU60,则可以针对某些区域限制图6所示的非对称协议的使用。
图6的上部再次示出了当核心0发出对地址A的存储请求时的情况,其中针对地址A正在使用非对称协议。再次,在步骤100,核心0接口80发出对地址A的ReadUnique请求。如图6的部分102所示,可选地,侦听控制单元45可以以与图5中相同的方式将ReadUnique请求传递给核心1接口,但是这次核心1接口82可以识别出该地址处于针对其不允许核心1的本地高速缓存8缓存数据的非对称区域中,因此不会在高速缓存中触发对应的无效。核心1的接口82可以用指示来自地址A的数据在核心1的高速缓存8中无效的侦听响应来进行响应。或者,如果侦听控制单元45本身能够识别出核心1无法保存地址A的任何缓存数据,那么读取唯一请求102可以不需要被发送到核心1接口82。
SCU确定不存在包含对应于地址A的数据的其他本地高速缓存8,并且因此读取请求124被发送到L2高速缓存47或存储器50,并且作为响应,干净数据126被返回到侦听控制单元,其在步骤128被传递到核心0接口。核心0接口80然后控制核心0将所返回的干净数据与响应于存储请求而要写入的数据合并,并且数据再次在核心0中被缓存为UniqueDirty。如果核心1随后发出加载请求,那么除了传递给核心1的返回的干净数据114将只是直接用于处理(例如它可以被加载到寄存器中)并且不允许如图5所示被缓存为SharedClean之外,可以以与图5中针对对称协议所示的相同的方式来处理该情况。
另一方面,图6的下部示出了当核心1希望存储与非对称区域68中的地址A相关联的数据时执行的操作。在这种情况下,由于核心1被禁止缓存来自地址A的数据,因此它无法在其本地高速缓存8内本地更新该数据,并且作为代替将该数据写入到L2高速缓存47或存储器***50。因此,核心1接口82将存储请求映射到向SCU 45发出的WriteUnique请求130。WriteUnique请求指示保存脏数据的任何本地高速缓存8都需要在使该数据无效之前将其写回到存储器***。因此,CleanInvalid(干净无效)请求132被发送到核心0接口8,核心0接口8强制核心0的高速缓存使地址A的对应高速缓存行无效,并且在步骤134返回在该高速缓存行中保存的脏数据。核心0中的对应高速缓存行现在转变为无效。侦听控制单元45将从核心0返回的脏数据与由核心1发出的存储请求的写入数据合并,并且在步骤136将合并后的数据写入到L2高速缓存47或存储器50。
如果核心0随后向地址A发出加载,则这再次触发如图5中的ReadShared请求108,其可以再次触发对核心1接口的ReadShared请求110,但是由于核心1不被允许缓存来自地址A的数据,那么核心1的接口82用指示对应数据未被核心1的本地高速缓存8缓存(无效)的信号进行响应。或者,如果SCU 45知道核心1无法缓存数据,则可以省略读取共享请求110。
因为不存在保存来自地址A的有效数据的高速缓存,所以SCU 45触发对L2高速缓存47或存储器50的读取请求138,这导致干净数据142被返回到SCU 45并且随后在步骤142被传递到核心0接口8。这次,由于不存在保存来自地址A的数据的其他本地高速缓存8,因此核心0将数据缓存为UniqueClean。
因此,如图6所示,可以根据哪个核心发出请求而以不同的方式处理(例如,映射到WriteUnique请求而不是ReadUnique)给定种类的请求(例如,存储请求),使得限制具有较少故障保护/检测的核心1在其本地高速缓存中进行仅本地的更新,以降低错误从核心1传播到核心0的风险。
将会认识到,图5和图6示出了提供特定于由
Figure BDA0001694669810000161
有限公司提供的/>
Figure BDA0001694669810000162
4ACE的对称协议或非对称协议的示例。将会认识到,可以以类似的方式修改其他协议。在一些情况下,如图1所示的公共侦听控制单元45可以从每个核心接收相同类型的请求但是根据目标地址是处于对称区域还是处于非对称区域而以不同的方式处理它们,而不是如图5和图6所示将存储请求映射到不同形式的一致性事务。将会认识到,并非从核心0或核心1发出的所有形式的请求都需要被以不同的方式来处理,并且可能只是对核心0的安全关键功能造成特定风险的某些类型的请求被以不同的方式处理。例如,只有某些类型的侦听请求可以被以不同的方式处理。
尽管上面讨论的示例仅示出了两个核心被提供,但是在其他情况下可以存在三个或更多个核心,其可以包括具有较多的硬件故障检测/保护(类似于核心0)的多组第二处理电路,或者可以包括具有较少的硬件故障检测/保护(类似于核心1)的多组第一处理电路。在这种情况下,非对称一致性协议可以相对于第二处理电路限制任何第一处理电路执行仅本地的高速缓存更新的权利。注意,每个第一处理电路不必具有相同的故障检测/保护机制,或者每个第二处理电路核心不必具有相同的故障检测/保护机制。即使为第一/第二处理电路的不同实例提供的故障检测/保护的级别存在某一变化,非对称一致性协议仍然可以区分第一处理电路和第二处理电路,其中每个第一处理电路通常具有比每个第二处理电路更小程度的故障保护/检测。
非对称一致性协议有多种方式可以确保第一处理电路的本地高速缓存中的仅本地更新与第二处理电路的本地高速缓存中的数据的仅本地更新相比受到限制。
在一个示例中,如图6所示,在非对称一致性协议中,可以禁止第一处理电路在第一处理电路的本地高速缓存中缓存来自至少部分共享地址空间的数据。因此,在这种情况下,核心1根本不被允许保存来自该部分地址空间的缓存数据,因此不会有任何执行仅本地更新的风险。例如,虽然核心1是能够以类似于核心0的方式执行程序指令(包括执行算术或逻辑运算)的完整的处理器核心,但是核心1可以被实际上视为没有完整的处理能力并且没有高速缓存的另一种主设备。在一些情况下,如果非对称协议被用于整个地址空间,则核心1可能根本不需要被提供本地高速缓存8,因为核心1将被禁止在本地存储任何数据。在这种情况下,可以减小核心1的硬件规模。然而,这会影响性能,因为核心1为了访问任何数据将需要触发对L2高速缓存47或存储器***50的访问,这不仅可以影响在核心1上执行的处理的性能而且由核心1生成的增加数量的存储器流量可能影响核心0。因此,为了提供提高的性能,在核心16中提供本地高速缓存8可能是有用的,该本地高速缓存8可以用于由SCU 60定义的对称区域66。然而,从核心1中完全省去高速缓存是一个选项。
实施非对称一致性协议的另一种方式可以是禁止第一处理电路在其本地高速缓存中更新数据。因此,虽然数据可以被从L2高速缓存47或存储器50中读取到核心1的本地高速缓存8中,但是当该数据被缓存时,核心1无法修改该数据。因此,核心1无法使数据变脏,并且在***内的另一位置中将总是存在等效数据的最新副本,其可能位于核心0的本地高速缓存8、L2高速缓存47或主存储器50中。例如,图6所示的非对称协议可以被修改,使得发送到核心1的ReadUnique请求102和ReadShared请求110总是触发响应——核心1的本地高速缓存8中的数据为无效或干净,但无法返回脏状态。允许在核心1缓存干净数据有助于提高核心1的性能。
在上述两个示例中(完全禁止缓存来自非对称区域的数据,或者允许缓存干净数据但是禁止核心1的高速缓存中的本地更新),有不同的选项来处理由核心1发出的请求更新非对称区域中的数据的写入请求。
在一些情况下,一致性控制电路可以用信号通知异常情况,并且可以采取某一动作来处理该异常。例如,可以完全禁止核心1向标记为非对称的区域68进行写入。因此,SPU60也可以用于实施一些安全性,使得核心1无法修改存储器中与安全关键的处理相关联的数据。
或者,当核心1发出写入请求时,一致性控制电路可以触发写入操作以更新至少一个另外的存储位置中的数据,该另外的存储位置例如可以是L2高速缓存47或存储器50。因此,在这种情况下,通过触发对下一级存储器***的写入以使得存储器***中提供的诸如ECC 30之类的硬件检测机制可以用来保护数据的完整性,将允许核心1更新非对称区域68中的数据。
用于实施非对称一致性协议的另一选项可以是允许核心1在其本地高速缓存8内更新数据,但是确保任何这样的更新也触发将更新后的数据写入到至少一个另外的存储位置(例如,L2高速缓存47、主存储器50或者核心0的L1高速缓存8)。例如,核心1的L1高速缓存8可以用作直写式高速缓存,使得在该高速缓存中更新的任何数据也被写入到下一级的存储器***。这样,仅本地的更新被禁止,因此,即使核心1中发生与某些内部缓存数据有关的错误,在其他地方也存在通过硬件机构来防止错误的对应副本,所以核心0不被暴露于与核心1相同的错误风险。
在核心1被允许在其本地高速缓存8中以干净状态缓存数据的示例中,对于非对称一致性协议而言,进一步的安全措施可以是禁止核心0侦听来自核心1的本地高速缓存8的数据,使得即使当干净数据被存储在核心1的本地高速缓存8中时在干净数据中发生错误,核心0对相同地址的后续读取将触发要从另一位置(诸如L2高速缓存47、存储器50或者具有比核心1更大的故障检测或保护能力的另一核心的本地高速缓存8)读取该数据的请求。在非对称一致性协议中,核心1在不访问L2高速缓存47或存储器50的情况下仍然可以侦听来自核心0的高速缓存8的数据。相比之下,在对称一致性协议中,核心0和核心1都可以在不访问L2高速缓存47或存储器50的情况下侦听来自另一个核心的本地高速缓存8的干净的或脏的缓存数据。
实施非对称一致性协议的另一种方式可以是对核心1在仅本地更新中更新的数据可以保持脏而不被写回到另一个存储位置的时间长度施加时间限制。例如,如果核心1确实具有某一级别的用于故障保护/检测的硬件机构,但是不如在核心0中提供的保护/检测的级别一样高,那么在短时间段内在核心1中保留脏数据可能是可接受的风险。在这种情况下,限制可以是核心1不能在其本地高速缓存8中使数据保持脏长于某一时间段,而核心0可以无限期地在其本地高速缓存8中使数据保持脏。
因此,有各种不同的方式可以实施非对称协议。
上面的示例讨论了特定形式的用于故障保护或检测的硬件机制(诸如使用锁步处理逻辑、错误检测码或纠错码),以及用于降低故障易患性的硬件技术。将会认识到,可以使用这些技术中的任何技术,或者可以在核心0内组合使用这些技术中的几个,而核心1具有更少的这些机制或者具有不提供作为强故障检测/保护的机制。通常,核心0发生故障并且仍未检测到故障的概率可以比核心1更低。有许多方法可以实现这一点,但是一般而言,一种方法是让第二处理电路以比第一处理电路更高的冗余程度来处理数据。通过提供若干冗余,则这使得能够在不同的冗余值不匹配的情况下检测到错误。该冗余可以是硬件方面的,例如使用上面讨论的锁步技术来提供冗余处理逻辑的多个副本,或者可以是数据级别的冗余,使得数据被编码为包括若干冗余,从而可以以使得能够检测到错误的许多不同的位模式来表示相同的数据值。而且,如在上面讨论可以在核心0中使用诸如针对辐射强化电路或使之屏蔽之类的硬件技术,以降低核心易受起初发生的错误影响的几率。
图7示出了图示处理存储请求的方法的流程图。在步骤200,确定是否已经从核心之一接收到存储请求。如果不是,则该方法等待接收到存储请求。当遇到存储请求时,则在步骤202确定目标地址是处于地址空间的非对称区域还是对称区域中。例如,这可以使用SPU 60来确定。将会认识到,在一些情况下,可能不存在对称区域并且整个地址空间可能被认为是非对称的。
如果目标地址处于对称区域中,则在步骤204根据对称一致性协议来处理请求,其中核心0和核心1都具有执行仅本地的高速缓存更新的相同权利。因此,存储请求可以触发数据被加载到发出存储请求的核心的本地高速缓存8中,并且仅在本地高速缓存8内被更新,并且该请求可以以相同的方式被处理,而不管哪个核心发出存储请求。
另一方面,如果目标地址处于非对称区域中,则在步骤206确定请求是来自核心0还是来自核心1。如果请求是从核心0接收到的,则在步骤208将非对称一致性协议用于核心0,并且仅本地的高速缓存更新可能不受限制。当核心0发出请求时,步骤208处的处理可以与在步骤204处针对对称协议执行的处理相同,或者可以是不同的。另一方面,如果请求是从核心1接收到的,则在步骤210使用非对称一致性协议,并且与使用上面讨论的技术中的任何技术的核心0相比,核心1进行的仅本地的高速缓存更新受到限制。
在本申请中,词语“被配置为...”用于表示装置的元件具有能够执行所定义的操作的配置。在该上下文下,“配置”是指硬件或软件的布置或互连方式。例如,装置可以具有提供所定义的操作的专用硬件,或者处理器或其他处理设备可被编程为执行功能。“配置为”并不意味着装置元件需要以任何方式改变以提供所定义的操作。
虽然本文中已经参照附图详细描述了本发明的说明性实施例,但是将会明白,本发明不限于那些确切的实施例,并且可以由本领域的技术人员在其中实现各种改变和修改,而不背离由所附权利要求限定的本发明的范围和精神。

Claims (17)

1.一种用于数据处理的装置,包括:
第一处理电路;
第二处理电路,其具有至少一个硬件机构,该硬件机构提供比为所述第一处理电路提供的更高级别的故障保护或故障检测;和
一致性控制电路,用于根据非对称一致性协议来控制所述第一处理电路和所述第二处理电路对来自至少一部分共享地址空间的数据的访问,在该非对称一致性协议中,所述第一处理电路的本地高速缓存中的数据的仅本地更新与所述第二处理电路的本地高速缓存中的数据的仅本地更新相比受到限制。
2.根据权利要求1所述的装置,其中,在所述非对称一致性协议中,禁止所述第一处理电路在所述第一处理电路的所述本地高速缓存中缓存来自所述至少一部分共享地址空间的数据。
3.根据权利要求1所述的装置,其中,在所述非对称一致性协议中,禁止所述第一处理电路在所述第一处理电路的所述本地高速缓存中更新来自所述至少一部分共享地址空间的数据。
4.根据权利要求2和3中任一项所述的装置,其中,响应于来自所述第一处理电路的用于更新来自所述至少一部分共享地址空间的数据的写入请求,所述一致性控制电路被配置为用信号通知异常情况。
5.根据权利要求2和3中任一项所述的装置,其中,响应于来自所述第一处理电路的用于更新来自所述至少一部分共享地址空间的数据的写入请求,所述一致性控制电路被配置为触发在除所述第一处理电路的所述本地高速缓存之外的至少一个另外的存储位置中更新来自所述至少一部分共享地址空间的数据的写入操作。
6.根据权利要求1所述的装置,其中,在所述非对称一致性协议中,在所述第一处理电路的所述本地高速缓存中更新来自所述至少一部分共享地址空间的数据触发将更新后的数据写入到除所述第一处理电路的所述本地高速缓存之外的至少一个另外的存储位置。
7.根据权利要求6所述的装置,其中,所述至少一个另外的存储位置具有至少一个硬件机构,该硬件机构提供比为所述第一处理电路提供的更高级别的故障保护或故障检测。
8.根据权利要求3、6、7中任一项所述的装置,其中,在所述非对称一致性协议中,禁止所述第二处理电路侦听直接来自所述第一处理电路的所述本地高速缓存的数据。
9.根据权利要求1-3、6、7中任一项所述的装置,其中,在所述非对称一致性协议中,允许在所述第二处理电路的所述本地高速缓存中对来自所述至少一部分共享地址空间的数据进行所述仅本地更新。
10.根据权利要求1-3、6、7中任一项所述的装置,包括:一致性保护单元,用于存储标识所述共享地址空间的各个区域是对称保护区域还是非对称保护区域的区域定义数据;
其中,所述一致性控制电路被配置为根据所述非对称一致性协议来控制对来自所述非对称保护区域的数据的访问;并且
所述一致性控制电路被配置为根据对称一致性协议来控制对来自所述对称保护区域的数据的访问,在该对称一致性协议中,所述第一处理电路和所述第二处理电路具有在其本地高速缓存中对来自所述对称保护区域的数据进行仅本地更新的相同权利。
11.根据权利要求10所述的装置,其中,所述第一处理电路和所述第二处理电路中的至少一个包括存储器访问控制单元,该存储器访问控制单元用来存储标识由所述第一处理电路或所述第二处理电路执行的给定进程可访问所述共享地址空间的哪些区域的访问权限数据。
12.根据权利要求1-3、6、7、11中任一项所述的装置,其中,所述第二处理电路被配置为以比所述第一处理电路更高的冗余程度来处理数据。
13.根据权利要求1-3、6、7、11中任一项所述的装置,其中,所述第二处理电路包括用来对相同输入执行公共处理操作的处理逻辑的多个实例,以及用来比较所述处理逻辑的每个实例的输出的比较电路。
14.根据权利要求1-3、6、7、11中任一项所述的装置,其中,所述第二处理电路被配置为处理或存储根据错误检测码或纠错码而编码的数据,从而提供比为所述第一处理电路提供的更高级别的故障检测。
15.根据权利要求1-3、6、7、11中任一项所述的装置,其中,所述第二处理电路包括比所述第一处理电路的硬件更不易发生故障的硬件。
16.一种用于数据处理的设备,包括:
第一处理装置;
第二处理装置,其具有至少一个用于使用硬件机构提供比为所述第一处理装置提供的更高级别的故障保护或故障检测的装置;和
用于根据非对称一致性协议来控制所述第一处理装置和所述第二处理装置对来自至少一部分共享地址空间的数据的访问的装置,在所述非对称一致性协议中,所述第一处理装置的本地高速缓存中的数据的仅本地更新与所述第二处理装置的本地高速缓存中的数据的仅本地更新相比受到限制。
17.一种数据处理方法,包括:
使用第一处理电路来处理数据;
使用具有至少一个硬件机构的第二处理电路来处理数据,该硬件机构提供比为所述第一处理电路提供的更高级别的故障保护或故障检测;和
根据非对称一致性协议来控制所述第一处理电路和所述第二处理电路对来自至少一部分共享地址空间的数据的访问,在所述非对称一致性协议中,所述第一处理电路的本地高速缓存中的数据的仅本地更新与所述第二处理电路的本地高速缓存中的数据的仅本地更新相比受到限制。
CN201680073139.6A 2015-12-21 2016-09-14 非对称一致性协议 Active CN108369557B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1522538.6 2015-12-21
GB1522538.6A GB2545897B (en) 2015-12-21 2015-12-21 Asymmetric coherency protocol
PCT/GB2016/052839 WO2017109449A1 (en) 2015-12-21 2016-09-14 Asymmetric coherency protocol

Publications (2)

Publication Number Publication Date
CN108369557A CN108369557A (zh) 2018-08-03
CN108369557B true CN108369557B (zh) 2023-03-31

Family

ID=55311353

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680073139.6A Active CN108369557B (zh) 2015-12-21 2016-09-14 非对称一致性协议

Country Status (4)

Country Link
US (1) US10997076B2 (zh)
CN (1) CN108369557B (zh)
GB (1) GB2545897B (zh)
WO (1) WO2017109449A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2545897B (en) * 2015-12-21 2018-02-07 Advanced Risc Mach Ltd Asymmetric coherency protocol
US11269799B2 (en) * 2019-05-03 2022-03-08 Arm Limited Cluster of processing elements having split mode and lock mode
US11630774B2 (en) 2020-09-28 2023-04-18 Mobileye Vision Technologies Ltd. Preventing overwriting of shared memory line segments
CN115080315B (zh) * 2022-08-22 2022-12-13 北京国科环宇科技股份有限公司 故障检测及处理方法、装置、处理器及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101523361A (zh) * 2006-10-17 2009-09-02 Arm有限公司 数据处理设备中对共享存储器的写访问请求的处理
CN102016790A (zh) * 2008-04-30 2011-04-13 飞思卡尔半导体公司 数据处理***中的高速缓存一致性协议

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6799217B2 (en) * 2001-06-04 2004-09-28 Fujitsu Limited Shared memory multiprocessor expansion port for multi-node systems
EP1387279B1 (en) * 2002-07-31 2008-05-14 Texas Instruments Inc. Cache coherency in a multi-processor system
US8484508B2 (en) * 2010-01-14 2013-07-09 Arm Limited Data processing apparatus and method for providing fault tolerance when executing a sequence of data processing operations
DE102011086530A1 (de) * 2010-11-19 2012-05-24 Continental Teves Ag & Co. Ohg Mikroprozessorsystem mit fehlertoleranter Architektur
GB2545897B (en) * 2015-12-21 2018-02-07 Advanced Risc Mach Ltd Asymmetric coherency protocol

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101523361A (zh) * 2006-10-17 2009-09-02 Arm有限公司 数据处理设备中对共享存储器的写访问请求的处理
CN102016790A (zh) * 2008-04-30 2011-04-13 飞思卡尔半导体公司 数据处理***中的高速缓存一致性协议

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Asymmetric Cache Coherency:Improving Multicore Performance for Non-uniform Workloads";John Shield;《IEEE》;20110811;第1-8页 *

Also Published As

Publication number Publication date
GB2545897A (en) 2017-07-05
GB201522538D0 (en) 2016-02-03
US20180373630A1 (en) 2018-12-27
CN108369557A (zh) 2018-08-03
GB2545897B (en) 2018-02-07
US10997076B2 (en) 2021-05-04
WO2017109449A1 (en) 2017-06-29

Similar Documents

Publication Publication Date Title
US7987384B2 (en) Method, system, and computer program product for handling errors in a cache without processor core recovery
US7725662B2 (en) Hardware acceleration for a software transactional memory system
CN108369557B (zh) 非对称一致性协议
US8190951B2 (en) Handling of errors in a data processing apparatus having a cache storage and a replicated address storage
US9244846B2 (en) Ensuring causality of transactional storage accesses interacting with non-transactional storage accesses
US8826097B2 (en) Memory scrubbing
US9323527B2 (en) Performance of emerging applications in a virtualized environment using transient instruction streams
JP2023169327A (ja) インラインecc保護のための方法及びシステム
US6615375B1 (en) Method and apparatus for tolerating unrecoverable errors in a multi-processor data processing system
US10908991B2 (en) Bit error protection in cache memories
GB2565188B (en) Validating physical addresses by comparing with previous translations
JP2005302027A (ja) 自律的エラー回復方法、システム、キャッシュ、およびプログラム・ストレージ装置(メモリ装置のための自律的エラー回復のための方法、システム、およびプログラム)
US6874116B2 (en) Masking error detection/correction latency in multilevel cache transfers
JP5482197B2 (ja) 演算処理装置、情報処理装置及びキャッシュメモリ制御方法
US7395489B2 (en) Control system and memory control method executing a detection of an error in a formation in parallel with reading operation
US10379944B2 (en) Bit error protection in cache memories
US7577890B2 (en) Systems and methods for mitigating latency associated with error detection and correction
US20140245273A1 (en) Protecting the integrity of binary translated code
US20120265904A1 (en) Processor system
US11934257B2 (en) Processing tasks in a processing system
JPH0434630A (ja) キャッシュメモリ装置

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