CN111275605B - 缓冲器检查器 - Google Patents

缓冲器检查器 Download PDF

Info

Publication number
CN111275605B
CN111275605B CN201911221811.3A CN201911221811A CN111275605B CN 111275605 B CN111275605 B CN 111275605B CN 201911221811 A CN201911221811 A CN 201911221811A CN 111275605 B CN111275605 B CN 111275605B
Authority
CN
China
Prior art keywords
signature
graphics processing
unit
task
processing system
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
CN201911221811.3A
Other languages
English (en)
Other versions
CN111275605A (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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies 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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Priority to CN202311314788.9A priority Critical patent/CN117274031A/zh
Publication of CN111275605A publication Critical patent/CN111275605A/zh
Application granted granted Critical
Publication of CN111275605B publication Critical patent/CN111275605B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1497Details of time redundant execution on a single processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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/0796Safety measures, i.e. ensuring safe condition in the event of error, e.g. for controlling element
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F2009/3883Two-engine architectures, i.e. stand-alone processor acting as a slave processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/83Indexing scheme relating to error detection, to error correction, and to monitoring the solution involving signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Hardware Redundancy (AREA)

Abstract

本公开涉及缓冲器检查器。一种图形处理系统,包括:处理单元;可操作以形成签名的检查单元,签名是来自处理单元的输出所特有的;以及可操作以比较所形成的签名的故障检测单元;其中图形处理系统可操作以在处理单元处对每个任务进行第一次和第二次处理,以分别生成第一处理后的输出和第二处理后的输出,图形处理系统被配置为:将第一处理后的输出写出到数据存储;从数据存储回读第一处理后的输出,并在检查单元处形成第一签名,第一签名是从数据存储回读的第一处理后的输出所特有的;在检查单元处形成第二签名,第二签名是第二处理后的输出所特有的;在故障检测单元处比较第一签名和第二签名;以及如果第一签名和第二签名不匹配,则发出故障信号。

Description

缓冲器检查器
技术领域
本公开涉及图形处理系统以及在图形处理系统处处理任务的方法。
背景技术
在安全关键系统中,系统的至少一些部件必须满足足以使系统整体达到系统必需的安全等级的安全目标。例如,在大多数辖区,车辆中的安全带卷收器必须满足特定的安全标准,以使设置有此类装置的车辆通过安全测试。同样,车辆轮胎必须符合特定标准,以使配备有此类轮胎的车辆通过适合特定辖区的安全测试。安全关键系统通常是那些故障会导致人员或环境安全风险显著增加的系统。
数据处理装置通常作为专用硬件或者作为用于运行安全关键软件的处理器,构成安全关键系统的组成部分。例如,用于飞机的电传操纵系统、驾驶员辅助系统、铁路信号系统和用于医疗装置的控制系统通常都是在数据处理装置上运行的安全关键系统。在数据处理装置构成安全关键系统的组成部分的情况下,数据处理装置本身必须满足安全目标,使得系统整体可以达到适当的安全等级。在汽车工业中,安全等级通常是功能安全标准ISO26262中定义的汽车安全完整性等级(ASIL)。
安全关键系统的数据处理装置越来越多地包括运行软件的处理器。硬件和软件元素都必须满足特定的安全目标。软件故障通常是由于编程错误或不良错误处理而导致的系统性故障。对于软件,通常通过严格的开发实践、代码审核和测试协议来实现安全目标。对于数据处理装置的硬件元素(诸如处理器),安全目标可以表示为一组指标,诸如给定时间段内的最大故障数(通常表示为故障率或FIT)以及用于检测单点故障的机构(单点故障机构或SPFM)和用于检测潜在故障的机构(潜在故障机构或LFM)的有效性。设计数据处理硬件以处理一定等级的错误很重要,因为即使可以从安全关键系统中完全排除系统性错误,也可能在硬件中引入随机错误,例如,通过瞬态事件(例如由于电离辐射、电压尖峰或电磁脉冲)。在二进制系统中,瞬态事件可能会导致存储器中以及处理器数据路径上的随机比特反转。
有多种方法来实现数据处理硬件中的安全目标:例如,通过提供冗余使得一个部件发生故障时另一个部件可以执行相同任务,或者通过使用校验数据(例如,奇偶校验位或纠错码)来允许硬件检测和/或纠正较小的数据损坏。可以以如图1所示的双锁步布置100提供数据处理器,其中一对相同的处理核101和102被配置为并行处理指令流103。处理核(101)中的一者的输出可以用作锁步处理器的输出104。当处理核101和102的输出不匹配时,安全关键系统可能会出现故障。但是,由于需要第二处理核,因此与常规处理器相比,双锁步处理器必定会消耗两倍的芯片面积,并消耗大约两倍的功率。
可以将延迟105引入到核中的一者的输入上,以便提高由外在因素诸如电离辐射和电压尖峰引起的错误的检测概率(通常在另一个核的输出上提供相应的延迟106)。通过将其他处理器核添加到锁步处理器100,可以继续提供无错误的输出:处理器的输出可以是由其两个或更多个处理核提供的输出,其中处理核的输出与被忽略的其他核不匹配。但是,这进一步增加了处理器的面积和功耗。
先进的驾驶员辅助系统和自动驾驶车辆可以包含适用于此类安全关键应用程序的数据处理系统,这些安全关键应用程序具有显著的图形和/或矢量处理能力,但实现双锁步处理器所引起的面积和功耗(以及成本)的增加可能是不可接受的或不希望的。例如,驾驶员辅助系统通常提供计算机生成图形,所述计算机生成图形向驾驶员显示危险、车道位置和其他信息。通常,这将导致车辆制造商用计算机生成的仪表盘代替常规的仪表盘,这也意味着安全关键信息(诸如速度和车辆故障信息)的显示变为由计算机生成。此类处理要求可以由图形处理单元(GPU)来满足。但是,在汽车领域,先进的驾驶员辅助系统通常需要符合ISO 26262的ASIL等级B的数据处理系统。
另外,自动驾驶车辆还必须实时处理大量数据(例如来自雷达、激光雷达、地图数据和车辆信息),以便每秒做出数百次安全关键决策。图形处理单元也可以帮助满足此类处理要求,但是自动驾驶车辆中的安全关键系统通常需要符合最严格的ISO 26262的ASIL等级D。
发明内容
提供本发明内容是为了介绍将在以下详细描述中进一步描述的一些概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
提供了一种用于与数据存储一起操作的图形处理系统,包括:用于处理任务的一个或多个处理单元;可操作以形成签名的检查单元,所述签名是来自在处理单元上处理任务的输出所特有的;以及可操作以比较在所述检查单元处形成的签名的故障检测单元;其中所述图形处理系统可操作以在所述一个或多个处理单元处对每个任务进行第一次和第二次处理,以便分别生成第一处理后的输出和第二处理后的输出,所述图形处理系统被配置为:将所述第一处理后的输出写出到所述数据存储;从所述数据存储回读所述第一处理后的输出,并在所述检查单元处形成第一签名,所述第一签名是从所述数据存储回读的所述第一处理后的输出所特有的;在所述检查单元处形成第二签名,所述第二签名是所述第二处理后的输出所特有的;在所述故障检测单元处比较所述第一签名和所述第二签名;以及如果所述第一签名和所述第二签名不匹配,则发出故障信号。
所述图形处理系统可被配置为将所述第一处理后的输出写入所述数据存储,而无需等待所述第二处理后的输出变为可用。
所述图形处理系统还可包括用于从所述一个或多个处理单元接收处理后的输出的高速缓存,并且所述图形处理系统被配置为一旦在所述高速缓存处接收到完整的第一处理后的输出,就将所述第一处理后的输出写入所述数据存储。
所述检查单元可被配置为在将所述第一处理后的输出写出到所述数据存储之前不形成所述第一处理后的输出的签名。
所述图形处理系统可被配置为不将所述第二处理后的输出写入所述数据存储。
所述多个处理单元、所述检查单元和所述故障检测单元可设置在所述图形处理系统的图形处理单元处,并且所述数据存储可包括所述图形处理单元外部的存储器,其中所述图形处理系统被配置为将所述第一处理后的输出写出到所述数据存储的所述存储器中。
所述一个或多个处理单元和所述检查单元的第二实例可设置在所述图形处理系统的图形处理单元处,并且所述检查单元的第一实例、所述故障检测单元和所述数据存储的存储器可在所述图形处理单元的外部,所述图形处理系统被配置为:将所述第一处理后的输出写入所述存储器;从所述存储器回读所述第一处理后的输出,并在所述检查单元的所述第一实例处形成所述第一处理后的输出所特有的所述第一签名;在所述检查单元的所述第二实例处形成所述第二处理后的输出所特有的所述第二签名;将所述第二签名提供给所述故障检测单元;在所述故障检测单元处比较所述第一签名和所述第二签名;以及如果所述第一签名和所述第二签名不匹配,则发出故障信号。
所述图形处理单元可被配置为通过以下一项或多项将所述第二签名提供给所述故障检测单元:将所述第二签名写出到所述存储器;在所述图形处理单元处将所述第二签名存储在所述故障检测单元可访问的位置处;以及在控制消息中将所述第二签名传递给所述故障检测单元。
所述检查单元的第一实例和所述故障检测单元可以在支持所述图形处理单元的数据处理系统处以软件提供。
所述数据存储可包括位于所述图形处理系统的图形处理单元处或外部的一个或多个存储器和/或位于所述图形处理系统的图形处理单元处或外部的一个或多个高速缓存。
所述一个或多个处理单元中的第一处理单元可被配置为在第一次处理时处理所述任务,并且所述一个或多个处理单元中的第二处理单元可被配置为在第二次处理时处理所述任务。
所述图形处理系统可被配置为使得所述第二处理单元独立于所述第一处理单元接收所述任务。
所述图形处理系统可被配置为使得所述第二处理单元被约束为所述一个或多个处理单元中与所述第一处理单元不同的处理单元。
所述图形处理系统可被配置为使得允许所述第一处理单元和所述第二处理单元为同一处理单元。
所述图形处理系统可包括多个处理单元,每个处理单元被配置为独立于所述多个处理单元中的任何其他处理单元来处理其任务。
每个任务可包括指示所述任务是否是将被第一次和第二次处理的安全任务的标识符。
每个安全任务可用于根据预定的安全等级进行处理。
所述多个处理单元可包括三个或更多个处理单元。
所述检查单元可被配置为通过对所述处理后的数据执行检查和、CRC、哈希和指纹中的一个或多个来形成每个签名,所述签名是来自所述一个或多个处理单元中的一个处理单元的所述处理后的输出所特有的。
所述处理后的数据可包括与相应的处理后的任务相关联的一个或多个存储器地址。
第一类型的每个任务可涉及图块,并且所述图形处理系统可被配置为执行基于图块的图形渲染。
所述故障信号可包括控制消息、标志、中断、设置一个或多个寄存器位的信号、数据分组以及将数据写入数据存储的信号中的一个或多个。
提供了一种在具有多个处理单元的图形处理系统处处理任务的方法,每个处理单元被配置为独立于任何其他处理单元来处理任务,所述方法包括在接收到用于处理的任务时:在第一处理单元处对所述任务进行第一次处理,以便生成第一处理后的输出;将所述第一处理后的输出写出到数据存储;在第二处理单元处对所述任务进行第二次处理,以便生成第二处理后的输出,并形成所述第二处理后的输出所特有的第二签名;从所述数据存储回读所述第一处理后的输出,并形成第一签名,所述第一签名是从所述数据存储回读的所述第一处理后的输出所特有的;比较所述第一签名和所述第二签名;以及如果所述第一签名和所述第二签名不匹配,则发出故障信号。
所述图形处理系统可以用集成电路上的硬件来体现。可以提供一种在集成电路制造系统处制造所述图形处理系统的方法。可以提供集成电路定义数据集,当在集成电路制造系统中处理时,所述集成电路定义数据集配置系统以制造所述图形处理系统。可以提供一种非暂时性计算机可读存储介质,其上存储有集成电路的计算机可读描述,当在集成电路制造系统中处理时,所述计算机可读描述使所述集成电路制造系统制造所述图形处理系统。
可以提供一种集成电路制造系统,包括:非暂时性计算机可读存储介质,其上存储有描述所述图形处理系统的计算机可读集成电路描述;布局处理系统,其被配置为处理所述集成电路描述,以便生成体现所述图形处理系统的集成电路的电路布局描述;以及集成电路生成系统,其被配置为根据所述电路布局描述来制造所述图形处理系统。
可以提供用于执行如本文所述的方法的计算机程序代码。可以提供其上存储有计算机可读指令的非暂时性计算机可读存储介质,当在计算机系统处执行时,该指令使计算机系统执行如本文所述的方法。
附图说明
参考附图以示例的方式描述本发明。在附图中:
图1示出了常规的双锁步处理器。
图2示出了根据本文所述原理配置的图形处理系统。
图3示出了包括根据本文所述原理配置的图形处理系统的数据处理系统。
图4是示出根据第一示例的图形处理系统的操作的示意图。
图5是示出根据第二示例的图形处理系统的操作的示意图。
图6是示出根据第三示例的图形处理系统的操作的示意图。
图7是示出根据第四示例的图形处理系统的操作的示意图。
图8是示出根据本文所述原理配置的图形处理系统的操作的流程图。
图9是示出根据第五示例的图形处理系统的操作的示意图。
图10是集成电路制造系统的示意图。
图11是示出根据本文所述原理配置的图形处理系统的操作的流程图。
具体实施方式
借助于示例呈现以下描述,使本领域的技术人员能够制造和使用本发明。本发明不限于本文中描述的实施方案,并且对所公开的实施方案的各种修改对于所属领域的技术人员而言将是显而易见的。仅通过示例的方式描述实施方案。
本公开涉及一种图形处理系统,该图形处理系统包括可操作以并行处理多个任务的一个或多个处理单元。图形处理系统可包括多个处理单元。根据本文的原理配置的图形处理系统可以具有任何合适的架构,例如,该系统可操作以执行即时模式渲染或基于图块的渲染(包括基于图块的延迟渲染)和/或任何种类的图形、图像或视频处理和/或常规处理。在示例中,图形处理系统的处理单元可以是可配置的,以便使得不同的处理单元能够在给定的时间点执行不同组动作和/或使得给定的处理单元能够在不同的时间执行不同的动作集合。每个处理单元可能能够独立于任何其他处理单元来处理任务。因此,在一个处理单元处处理的任务可能不与另一处理单元合作以处理该任务(例如,不能在一个以上的处理单元上并行处理单个任务,但是可以在单个处理单元上并行处理单个任务)。
处理单元可以是例如任何种类的图形和/或矢量和/或流处理单元。处理单元可包括渲染管线。每个处理单元可以是GPU的不同物理核。图形处理系统可以应用于一般的计算任务,特别是那些可以容易地并行化的任务。通用计算应用程序的示例包括信号处理、音频处理、计算机视觉、物理模拟、统计计算、神经网络和密码学。
任务可以是要在图形处理单元上进行处理的工作的任何部分,包括要渲染到存储器或显示屏的场景的全部或部分、图像或视频帧的全部或部分或任何其他数据。图形处理应用程序的任务可能与图形处理的任何方面有关,包括平铺、几何计算、纹理贴图、着色、抗锯齿、光线跟踪、像素化和分割。在图块渲染器中,每个任务都可能与图块有关。更一般地讲,任务不需要与图形数据的处理有关。例如,任务可以是图形处理系统的处理单元可被配置以处理的任何种类的数据,诸如矢量数据。图形处理系统可被配置为对多种不同类型的任务进行操作。在一些架构中,可以分配不同的处理单元或处理单元组来处理不同类型的任务。
图2示出了根据图2所示本文所述原理配置的图形处理系统。图形处理单元(GPU)200是图形处理系统的一部分。GPU 200包括多个处理单元204,该多个处理单元在图中被标记为PU0至PU(n)。GPU 200可包括一个或多个高速缓存和/或缓冲器206,该一个或多个高速缓存和/或缓冲器被配置为从存储器201接收数据202,并且将处理后的数据203提供给存储器201。存储器201可包括以任何适当方式布置的一个或多个数据存储单元。通常,存储器201将包括专用于GPU的存储器、帧缓冲器和支持GPU的计算机系统的系统存储器中的一个或多个。在一些示例中,可以认为存储器201的至少一部分形成图形处理系统的一部分。
GPU 200的各个单元可以通过一个或多个数据总线和/或互连205进行通信。GPU可包括固件207,例如以提供对GPU的单元的低级控制。
GPU的每个处理单元204可操作以处理任务,其中处理单元被布置为使得多个处理单元可以各自同时执行各自的任务。以这种方式,GPU可以同时处理多个任务。每个任务被布置为在GPU处处理例如从存储器201接收的一部分数据。每个处理单元可包括多个可配置的功能元件(例如,着色器、几何处理器、矢量处理器、光栅化器、纹理单元等),以便使给定的处理单元能够被配置为执行一系列不同的处理动作。处理单元可以通过对任务的数据部分执行一组动作来处理任务。可以将该组动作限定为适合给定的任务,例如,在其中任务与帧的各个图块相关并且每个图块包括多个图元的系统中,该组处理动作可包括几何处理、着色、纹理化等。可以通过例如GPU的软件驱动器来配置处理单元,该GPU的软件驱动器将适当的命令传递给固件207,以便启用/禁用处理单元的功能元件,以便使得处理单元执行不同组处理动作。以这种方式,第一组处理单元可被配置为例如对表示场景(例如,图块)的计算机生成图像的一部分的图形任务执行着色器处理,而另一组处理单元可被配置为例如对从车辆传感器接收的传感器数据执行矢量处理。
在处理任务时,处理单元204生成关于该任务的输出数据。GPU 200包括检查单元208,该检查单元可操作以从处理单元接收输出数据并形成有该输出数据的特征的签名。检查单元可以对输出数据执行例如检查和、CRC、哈希或指纹计算。检查单元对在处理任务的处理单元上生成的至少一些数据进行操作。优选地,检查单元另外对存储器地址和/或与所生成的数据相关联的控制数据进行操作,这可以帮助本文所述的验证操作来标识更大范围的故障。签名以比输出数据本身更紧凑的形式提供处理单元对任务执行的处理的表达,以便于比较不同处理单元提供的输出数据。优选地,检查单元形成来自处理单元接收的关于任务的所有输出数据(可能不包括任何控制数据)的签名,但是可以形成来自处理单元的关于任务的一些(例如,不是全部)输出数据的签名。检查单元208可以通过数据总线/互连205从处理单元接收输出数据。
检查单元208可包括数据存储209,用于存储在检查单元处形成的一个或多个签名。替代地或另外地,检查单元可以利用检查单元外部(例如在GPU 200的存储器处)的数据存储来存储在检查单元处形成的一个或多个签名。检查单元可以从GPU的所有处理单元或处理单元的子集接收输出数据。检查单元可包括多个检查单元实例-例如,每个检查单元实例可被配置为从GPU的处理单元的不同子集接收输出数据。
GPU 200还包括故障检测单元210,该故障检测单元被配置为比较在检查单元208处形成的两个或更多个签名。故障检测单元210被配置为在确定签名不匹配时发出故障信号211。故障可能会导致在GPU处发生安全违背(safety violation)。可以以任何合适的方式将故障信号提供为GPU 200的输出。例如,故障信号可以是以下中的一种或多种:控制数据;中断;数据写出到存储器201;以及数据写入GPU 200或连接GPU的系统的寄存器或存储器。
故障检测单元210用于比较来自被布置为处理相同任务的不同处理单元204的输出数据的签名。可以布置两个或更多个处理单元来处理同一任务,由处理单元执行的处理可以并发,或者可以不并发。如果仅布置两个处理单元来处理同一任务,则比较来自处理单元的输出数据的签名特征指示由一对处理单元执行的处理是否一致。当关于给定任务的一对处理单元的签名不匹配时,故障信号211指示在该对处理单元中的一个处发生了故障,但是故障信号不指示哪个单元经历了故障。
如果布置三个或更多个处理单元的组来处理同一任务,则比较来自那些处理单元的输出数据的签名特征指示由该处理单元执行的处理是否一致。当关于给定任务的处理单元组中的每一个的签名不匹配时,故障信号211指示在该组处理单元中的一个处发生了故障,并且它还可以指示故障在该组处理单元中的哪一个处发生。这是因为可以假定故障发生在一个处理单元上,该处理单元的签名与来自两个或更多个其他处理单元的输出的签名不匹配。
通常,GPU 200将被并入数据处理系统诸如图3中的数据处理系统300中。这样的数据处理系统可包括其他处理器,诸如中央处理单元(CPU)304和存储器201。硬件302可包括一个或多个数据总线和/或互连308,处理器200、304和存储器201可通过该一个或多个数据总线和/或互连进行通信。通常,软件环境301设置在数据处理系统处,在该数据处理系统中可以执行多个过程307。操作系统306可以向过程307提供可用硬件302的抽象。操作系统可包括用于GPU的驱动器309,以便将GPU的功能暴露给过程。可以将全部或部分软件环境301提供为固件。在一个示例中,数据处理系统300形成车辆控制系统的一部分,其中这些过程各自执行车辆的一个或多个控制功能,诸如仪表盘显示、娱乐系统、发动机管理、温度控制、车道控制、转向校正、自动制动系统等。过程307中的一个或多个可以是安全关键过程。这些过程可以是必须根据预定的安全等级执行的安全关键过程与不需要根据预定的安全等级执行的非安全关键过程的混合。
故障信号可以由结合有GPU的数据处理系统300以任何方式使用。例如,在由故障检测单元发出的故障信号上,结合有GPU的系统可以丢弃关于主题任务形成的输出数据和/或使任务重新提交给GPU以进行重新处理。根据本文所述原理配置的图形处理系统除了GPU之外还可包括其他元件,例如用于GPU的软件驱动器309。图形处理系统本身可以使用故障信号211。例如,图形处理系统可以记录故障信号和与这些故障相关联的处理单元,并且如果一个或多个处理单元超过了预定数量的故障(也许在某个限定的时间段内),则这些一个或多个处理单元可能被禁用或以其他方式被阻止在GPU处处理接收到的任务。
如图2所示的图形处理系统可操作来处理任务,以便满足预定的安全等级。例如,图形处理系统可以经过认证,符合ISO 26262的ASIL B或ASIL D标准。需要处理到预定安全等级的任务可以是与数据处理系统300的安全关键功能有关的任务,该数据处理系统中可以结合图形处理系统。例如,在汽车应用中,安全关键的任务可以是与仪表盘的渲染和/或由一个或多个车辆相机捕获的用于车道辅助系统中的数据的图像处理有关的那些任务。
在一些示例中,GPU执行图块渲染,并且其处理单元对其进行操作的每个任务都与图块有关。
工作负载重复
现在将参照图4所示的第一示例和图8所示的流程图描述图2的图形处理系统的操作。图4包括两个示意图(a)和(b),示出了GPU 200对与安全关键功能有关的处理任务的操作。在图4(a)中,多个处理单元204的一对处理单元405和406被布置为从任务工作负载407接收用于处理的任务。通常,GPU将具有两个以上的处理单元。工作负载407例如可以是高速缓存206处的任务缓冲器410。为了清楚起见,在图中,工作负载407被示意性地示出为与高速缓存分开,但是可以在高速缓存和/或GPU的任何其他数据存储(包括在处理单元本身处)和/或GPU外部的数据存储处(例如在外部存储器201处)被支持。接收用于过程701的每个任务可以是待根据预定安全等级来处理的安全任务。
在处理单元处接收每个任务410以进行处理。这可以以任何合适的方式来实现,并且一般来讲,GPU可以具有任何种类的架构,并且可以利用任何方案来将任务分配给处理单元。在图4所示的示例中,示意性地示出了将任务分配给处理单元405和406的解复用器402。解复用器402示意性地表示任务在处理单元之间的分布,并且不暗示存在用于将任务明确地分配给处理单元的单元。例如,每个处理单元204可以被配置为从工作负载407请求或以其他方式接收任务。处理单元可以被配置为当处理单元能够开始处理那些任务时从该工作负载407中检索一个或多个任务。解复用器402可以是用于将任务分配给处理单元的任何种类的分配单元。解复用器可以通过将工作负载的任务标记或以其他方式标识为在特定处理单元处进行处理来将任务分配给处理单元,例如,解复用器可以通过将任务分配给该处理单元的输入缓冲器来使任务分配给该处理单元,该处理单元从该处理单元的输入缓冲器中检索其任务。
可以在多个处理单元中的任何处理单元处处理每个任务。在图4中仅示出了两个处理单元405和406,但是通常存在更多个处理单元。可用于以本文描述的方式处理任务的多个处理单元可以是在图形处理系统处的处理单元总数的子集。
可以提供仲裁单元401以仲裁GPU周围的数据通信(例如,通过数据总线和/或互连205)。仲裁单元可以被配置为将从外部存储器201接收的任务引导至工作负载407(可选地经由高速缓存206),以在处理单元处进行处理。仲裁单元可以被配置为将由处理单元输出的处理后的数据引导至外部存储器206(可选地经由高速缓存206)并引导至检查单元208。
检验单元208被配置为接收由每个处理单元204输出的数据并形成有该输出数据的特征的签名。对于在处理单元处处理的任务,检查单元可以将该处理单元的相应输出的签名存储在数据存储209处。例如,参考图4(a),对于在处理单元405处处理的任务T0,处理单元405的输出的签名403可以存储在数据存储209处。
为了满足所需的安全等级,GPU被配置为处理工作负载407的所有安全任务至少两次:在第一处理单元处的第一时间702和在第二处理单元处的第二时间704。如将描述的,第一处理单元和第二处理单元可以是或可以不是同一处理单元,这取决于特定的实现。任务的每个处理实例将称为遍。给定任务的每一遍可能会或可能不会与一个或多个其他遍并发同时处理。图4(b)中示出了任务处理的重复,其中重复的工作负载408的任务在处理单元405和406处被处理。通常,任务可以在多个单元中的任何处理单元处被第一次处理,并且可以在多个单元中的任何处理单元处被第二次(或进一步)处理。这具有这样的优点:可以将任务(无论是对于第一遍还是对于另一遍)动态地分配给处理单元,以便有效地分散处理负载并避免有空闲的处理单元。重复的工作负载是示意性的,表示要在GPU上重复其处理的那组任务。
在一些示例中,重复的工作负载408的至少一些任务没有从外部存储器第二次读取,并且通过使处理单元第二次处理任务来重用工作负载407的任务。这避免了从外部存储器进行不必要的读取,这种读取会消耗带宽并浪费功率。但是,这可能以处理遍之间的隔离为代价。在一些示例中,可以在任务的每个处理遍独立地从存储器中读取任务。这有助于防止在GPU处高速缓存的数据遭受数据损坏。
在图4所示的示例中,处理单元405和406能够从工作负载407或408接收任何任务。更一般地讲,多个处理单元中的任何一个都能够接收工作负载的任何任务。在图4(a)中可以看出,在第一次处理工作负载的任务时,处理单元405接收任务T0和T1,并且处理单元406接收任务T2和T3。由于可以在任一处理单元处接收任务,因此如图4(b)所示,当重复工作负载时,处理单元405碰巧接收任务T1和T2,并且处理单元406接收任务T0和T3。因此,任务T0和T2在每个处理单元处处理一次,而任务T1和T3在同一处理单元处理两次。
关于在图4(a)所示的第一遍中处理的每个任务,在检查单元208处形成703签名403。签名403可以存储在数据存储209处。在图4(b)所示的第二遍中处理任务时,关于在第二遍中处理的每个任务,在检查单元208处形成705签名404。签名404可以存储在数据存储209处。故障检测单元210被配置为比较706关于任务的第一处理遍和第二处理遍形成的签名403和404。如果签名不匹配708,则发出故障信号211。如果签名确实匹配709,则在图形处理系统上关于该任务生成的处理后的任务数据可被认为是有效的,并以适合于该应用程序的方式使用(例如,在汽车环境中,处理后的任务数据可表示用于输出到仪器控制台的图形数据)。如果签名匹配,则不会发出故障信号,或者在一些示例中,可能会发出指示签名确实匹配的信号。签名不匹配指示两遍的处理输出不相同,因此来自一个或两个处理单元的处理输出是无效的。被配置为处理同一任务的处理单元的输出可能会因瞬态事件(诸如电离辐射或电压尖峰)或由于硬件、软件和固件的某种组合中的漏洞而导致的永久性错误而有所不同。
故障信号可以是已经发生故障的任何种类的指示,包括例如控制消息、中断、控制数据中的标志、设置在寄存器中的一个或多个位以及数据包中的一个或多个。
在图4所示的示例中,工作负载被示出为按时间顺序被处理(即,工作负载407的任务被处理,然后工作负载408的任务被处理)。一般来讲,可以以一种或多种不同的方式来重复任务的处理,包括:通过在不同的处理单元处同时处理同一任务;通过在工作负载中包括同一任务的多个副本,以便使该任务被多次处理;通过一旦任务被分配给处理单元,就使该任务继续存在于工作负载中,从而使该任务仍可用于在同一/另一个处理单元处进行进一步处理。
工作负载的每个任务可以被处理两次以上,其中关于通过处理单元的任务的每一遍在检查单元208处形成签名。即使处理遍中的一个被损坏,这也可以使GPU能够继续提供有效的输出。处理器的输出可以是由处理特定任务的大多数处理核提供的输出,其中与其他核不匹配的处理核的输出则被忽略。但是,这可能会增加处理器的面积、功耗和等待时间。
图形处理系统可以被配置为将关于每个任务在一个或多个处理单元处生成的一个或多个处理后的输出写出到外部存储器201。仅将处理后的输出中的一个提供给外部存储器以便最大程度减少消耗的存储器带宽可能是有利的。一旦已经在检查单元处形成了相应的签名,就可以将处理任务的第一处理单元的输出写出710到外部存储器,其中其他处理单元的输出被丢弃。这可以具有这样的优点:GPU所在的数据处理系统可以更快地使用处理后的任务。如果故障检测单元确定写出到外部存储器(或用于写到外部存储器的高速缓存中)的处理后的任务是无效的,则可以将图形处理系统配置为使处理后的任务被丢弃和/或标记为无效。可以将处理任务的最后一个处理单元的输出写出到外部存储器,其中较早处理单元的输出被丢弃。这可以具有的优点是,一旦知道最后一个处理单元的输出,就可以在故障检测单元处比较所有签名。通过写出无效数据,可以避免不必要地消耗存储器带宽。一般来讲,可以将被布置为处理给定任务的处理单元的所有或任何一个或多个输出写出到存储器201。
根据本文所述原理配置的图形处理系统可以可操作以处理:(a)安全任务,所述安全任务是与安全关键功能有关的任务,以及(b)常规任务,所述常规任务与安全关键功能不相关,并且因此不需要重复处理。这种布置在本文描述的图形处理系统中是可能的,因为可以分配系统的每个处理单元以独立于任何其他处理单元来处理任何给定任务,从而允许不同的处理单元处理不同的任务。此外,特定任务的每个实例可以独立地分配给系统的处理单元。安全任务和常规任务两者都可以在系统的不同处理单元处同时处理。可以以常规方式在处理单元处对在图形处理系统处进行处理715的常规任务进行处理716,并将其写出到存储器717,而无需对来自分配有常规任务的处理单元的处理输出进行检查。
本文所述的图形处理系统提供了优于常规锁步处理器的显著优势,在所述常规锁步处理器中,锁步处理器的两个处理核都必须处理同一任务,即使该任务与安全性关键功能无关。锁步处理器存在其两个(或多个)核锁定在一起且无法单独使用的问题,从而使得关于每个处理后的任务的芯片面积成本100%不变。
关于适当的图形处理系统的架构,可以通过标志来标识安全任务。例如,可以用标志来标记由提供有GPU的数据处理系统提交给图形处理系统的任务,以便使图形处理系统根据本文所述原理对那些任务进行重复处理。应当理解,可以以许多不同的方式来标识安全任务,包括例如借助于寄存器、列表或其他数据集来标识哪些任务是安全任务。可以为任务分配唯一的标识符,以明确地标识它们。
在一些示例中,在接收到被标识为安全任务的任务时,解复用器402可以作为响应将任务分配给多个处理单元以在那些单元处进行处理。在标识与安全任务有关的处理后的数据时,仲裁单元401可以被配置为作为响应将处理后的数据路由到检查单元,以便使关于处理后的数据生成签名。仲裁单元可以被配置为使得来自关于安全任务的处理单元中的一个或多个输出被写出到存储器201中(例如,通过使该/那些输出被写到高速缓存206中)。可以将标识安全任务的标志传递给由处理单元关于该任务输出的处理后的数据(或者可以关于此类处理后的数据提供另一个标志)。
常规任务不需要重复处理,因为在处理这些任务时GPU不需要满足预定的安全等级。此类常规任务可以分配给单个处理单元进行处理,并且将从该处理单元输出的处理后的数据写出到存储器中。如果没有为处理后的常规任务形成签名,则是有利的。这样可以避免在GPU处的不必要的功耗。在一些示例中,一个或多个处理单元的不同子集可以被分配用于处理常规任务:处理单元的子集可以专门用于处理常规任务;多个处理单元中的其他处理单元可以专门用于处理安全任务。这可以帮助将安全任务与错误、数据损坏和安全性问题隔离开,这些错误、数据损坏和安全性问题可能是由在同一处理单元上运行的常规任务引起的。
允许在图形处理系统的任何处理单元处执行任务的重复处理,提供了针对瞬态事件的保护。但是,处理单元可能会出现永久性故障,这可能使处理单元每次处理给定任务时都提供无效输出。在图4所示的方法中,可以在同一处理单元处重复任务的处理,因此该方法可能无法检测到永久性故障。
在不同处理单元处的工作负载重复
为了改善GPU的安全特性,可能是有利的是确保每个安全任务在两个或更多个不同的处理单元处被处理。该方法在图5所示的示例中示出,其中该方法的示例性流程图再次在图8中示出。图5所示的系统与上述图4所示的系统类似地操作,但是在图5所示的系统中,确保在图5(a)所示的第一遍中分配给处理单元405的安全任务在图5(b)所示的第二遍中分配给处理单元406,反之亦然。例如,任务T0和T2在第一遍中在处理单元405处处理,但在第二遍中在处理单元406处处理,并且任务T1和T3在第一遍中在处理单元406处处理,但在第二遍中在处理单元405处处理。
检查单元208如上所述地被配置为形成签名,该签名是来自关于每个安全任务的每个处理单元的输出所特有的。故障检测单元210如上所述被配置为比较两个或更多个签名(适当地关于重复处理任务的次数),所述两个或更多个签名是来自被布置为处理同一任务并且如果那些签名不匹配则发出故障检测信号211的不同处理单元的输出所特有的。
在一些示例中,图形处理系统将包括多个处理单元(两个以上)。一般来讲,可以在多个处理单元中的任何两个或更多个不同的处理单元处处理给定的安全任务。这可以以任何合适的方式实现。例如,可以将任务的第一实例分配给处理单元中的任一个,并且可以将任务的第二实例分配给除被分配有任务的第一实例的处理单元以外的任何处理单元。任务的其他实例(例如,在被配置为处理安全任务两次以上的系统中)可以用相同的方式处理,例如与被分配给任何处理单元(该处的任务还没被处理)的任务的其他实例一起处理。这种分配可以由例如图5中的解复用器402执行。通过允许将任务动态地分配给先前未处理任务的任何可用处理单元,可以有效地利用图形处理系统的处理单元。
为了知道任务先前已分配给哪个处理单元,可以在图形处理系统处(例如,在多路复用器402可访问的数据存储中)维护日志(例如,查找表),以标识每个任务已分配给哪些处理单元。每个任务可包括标识符,使得每个任务可以在日志中被唯一地引用。每个任务可包括标识符(例如,标志),该标识符指示该任务先前是否已被分配给处理单元和/或该任务先前已被分配给处理单元的次数。例如,每个任务最初可以具有标志集(例如,控制流中的状态位),以指示该任务尚未分配给处理单元并且因此用于第一遍处理。在第一遍被分配给处理单元时,可以在工作负载处(例如,在高速缓存中)保持的任务中清除该标志,以指示该任务可用于其第二遍处理。
在第二遍或后续遍将任务分配给处理单元时,可以查阅标识任务已分配给哪一个或多个处理单元的日志。作为响应,可以将任务分配给任何其他处理单元。在日志中查找任务可能会或可能不会响应于指示该任务先前已被分配的标志。在一些示例中,可以将先前已被分配任务的一个或多个处理单元的标识符写入保存该工作负载的数据存储(例如,高速缓存206)处的任务或以其他方式与该任务相关联。这避免了在日志中进行单独查找以标识任务先前已被分配给哪一个或多个处理单元的需要。
在一些示例中,由处理单元本身执行向处理单元的任务分配。例如,当处理能力在处理单元处变得可用时(例如,当处理单元可以将任务接收到其流水线中时),每个处理单元可以从工作负载请求或以其他方式从工作负载检索工作(例如,在高速缓存206处)。每个处理单元可以执行本文描述的用于确定任务是否先前已在处理单元处被处理的方法中的任一种。例如,处理单元可以读取在工作负载中的下一个可用任务处的标志,以确定该任务是否先前已被处理。当该标志指示该任务先前已被处理时,处理单元确定它是否处理了该任务(例如,通过对日志进行查找),并且:如果它确实处理了该任务,则跳过该任务而不对其进行处理;如果没有处理该任务,则处理单元继续处理该任务。
在一些示例中,工作负载中的任务可以至少在逻辑上被布置到用于每个处理单元的输入缓冲器中。在被分配给第一处理单元时,图形处理系统(例如,解复用器402)可以被配置为将任务添加到用于不同处理单元的输入缓冲器。该方法可以使每个处理单元能够完成其各自的输入缓冲器中的任务,而此时图形处理系统无需检查处理单元是否先前已经处理了该任务。
在一些示例中,处理单元可以在逻辑上被布置在两个或更多个处理单元的组中,其中工作负载的给定任务被分配给该组的处理单元。可以将不同的任务分配给不同的处理单元组,以进行初始和重复处理。例如,一组可包括一对处理单元,并且图形处理系统可被配置为处理安全任务两次,并且可以将给定任务分配给该对处理单元以进行初始和重复处理。例如,在图5所示的示例中,解复用器402可被配置为将工作负载的每个任务分配给一对处理单元405和406。然后每个处理单元可以在适当的时候(例如,一旦它已经完成了对当前任务的处理)处理该任务。在一些示例中,可以对工作负载的任务进行编号,并且根据任务的编号将它们分配给处理单元。例如,在图5所示的示例中,在第一遍中,可以将偶数编号的任务分配给处理单元405,并且可以将奇数编号的任务分配给处理单元406;在第二遍中重复处理任务时,颠倒该分配,其中将偶数编号的任务分配给处理单元406,并且可以将奇数编号的任务分配给处理单元405。图形处理系统可包括多组处理单元,每组处理单元被布置为处理不同工作负载的任务。
将任务分配给处理单元可包括将任务添加到任务队列中以在处理单元处进行处理。
本文关于图5描述的方法的优点在于,它保证至少两个不同的处理单元将处理每个安全任务。这允许在处理单元处检测永久性故障以及瞬态事件,因为它避免了在同一处理单元处重复处理给定任务的可能性。
带回读的工作负载重复
尽管本文中关于图4和图5描述的方法使得能够在图形处理系统的处理单元处检测故障,但是它们不对处理单元之后的数据路径上的硬件提供保护。例如,将不会标识在高速缓存206或存储器201处引入的故障。数据纠正机制诸如纠错码(ECC)可以提供从高速缓存和存储器中的较小错误中恢复的一些功能,例如单比特翻转。错误检测机制诸如奇偶校验位可以在高速缓存和/或存储器中采用。但是,此类机制涵盖数据,但不包括与GPU进行通信的控制消息。
在被写入处理后的任务数据的一个或多个高速缓存和/或存储器之后,在数据路径上对处理后的任务数据执行检查可能是有利的(例如,用于在支持GPU的数据处理系统处执行的处理)。这使得能够验证高速缓存和/或存储器的内容,以帮助确保可使用的处理后的任务数据(例如,在包括GPU的数据处理系统处)与在处理单元处生成的有效的处理后的数据相同。
在图6中示意性地示出了用于检查高速缓存和存储器的布置的示例,并且将参照图8中示出的流程图再次进行描述。在图6(a)和(b)中,任务的第一处理遍和第二处理遍被示为以与关于图5(a)和(b)所述相同的方式执行。任务的第一处理遍和第二处理遍可以以与关于图4(a)和(b)所述相同的方式执行。更一般地讲,可以根据本文所述的任何原理来执行任务的处理和对来自GPU的处理单元的输出的检查。
图6(c)示意性地示出了对写出到存储器201中的处理后的任务数据执行的回读检查。在该图中,已被写出710到存储器201中的处理后的任务数据被从存储器201回读605、711到高速缓存206中。一般来讲,关于每个安全任务的处理后的任务数据可被回读到检查单元208可访问的任何数据存储中,或直接流式传输到检查单元208。从存储器201回读到高速缓存206的处理后的任务数据由检查单元208操作,以便形成712签名603,该签名是处理后的任务数据的特征。检查单元被配置为在数据存储209中存储713关于每个任务形成用于处理单元405和406的输出的签名403、404。被配置为形成从存储器回读的处理后的任务数据的签名的检查单元208的实例可以是与检查单元208的实例不同的实例,所述检查单元的实例被配置为在通过处理单元的任务的每一遍形成签名。在一些示例中,使用同一检查单元实例以便最大程度减小GPU的尺寸。在其他示例中,使用不同的检查单元实例以便最大化系统的故障检测能力。
一般来讲,检查单元可被配置为针对每个安全任务存储被布置为处理该任务的处理单元的输出的一个或多个签名。当来自被布置为处理安全任务的处理单元的输出所特有的签名确实匹配时,可能是仅签名中的一个被存储以避免不必要地存储重复数据的情况。如果来自被布置为处理安全任务的处理单元的输出所特有的签名不匹配,则可以不存储所述签名。例如,当签名不匹配时,可以丢弃签名,并且可以丢弃处理后的任务数据。这避免了在不必要地写出无效的处理后的任务数据时消耗存储器带宽。
在图6(c)所示的示例中,故障检测单元210被配置为将关于从存储器回读的处理后的任务数据所形成的签名603与所存储的在从处理单元输出时为该处理后的任务数据所特有的签名403/404进行比较714。可以以任何合适的方式标识与特定任务相对应的处理后的数据。例如,每个任务可以与标识符相关联,并且相同的标识符可以与由处理单元输出的每个处理后的任务相关联。关于同一任务,相同的标识符可以与处理后的任务形成的每个签名相关联。以这种方式,可以在图形处理系统处容易地标识任务、处理后的任务和签名。在其他示例中,任务、处理后的任务及其签名可以使用两个或更多个不同标识符的任意组合,并且可以提供数据结构(例如查找表),该数据结构标识任务、这些任务的处理后的任务数据以及处理后的任务的签名之间的对应关系。
如果签名603和403/404不匹配708,则故障检测单元210被配置为发出故障信号604。故障信号604可具有本文参考图4和图5描述的故障信号211的任何特征。故障信号604可以与故障信号211相同或可以不同。可以关于特定任务发出故障信号604,例如,故障信号可以标识关于故障的任务。提供有GPU 200的数据处理系统可以以按照适合于应用程序的任何方式使用故障信号。例如,在接收到关于任务的故障信号时,数据处理系统可以使与任务有关的所有处理后的数据从存储器201和/或高速缓存206中清除。数据处理系统可以使任务重新提交给处理器。可以为此类重新提交的任务分配较高的优先级,以便在GPU处尽可能快地进行处理。
在一些示例中,可以在GPU外部执行对存储器的故障检查,并且检查单元208可被配置为将其关于处理后的任务而生成的至少一些签名提供给支持GPU的系统。例如,图7示出了其中在软件中执行故障检查的布置。在图7所示的系统中,可以根据本文阐述的任何原理,针对图6所示的系统执行第一遍和第二遍。图7(b)另外地示出了可以在软件中执行的故障检查的方法。软件检查单元601被配置为从存储器201回读605、711处理后的任务数据,并且形成712就有该处理后的数据的特征的签名603。软件检查单元601被配置为执行与检查单元208相同的检查计算,以使得能够将其生成的签名与在检查单元208处形成的签名进行比较。
检查单元208被配置为使存储在数据存储209中的签名可用606,所述签名已经关于在处理单元204处在第一遍和第二遍中处理的任务而形成。例如,检查单元可以将签名写出到存储器201。响应于故障检测单元确定来自被配置为在不同遍处理该任务的一个或多个处理单元的输出匹配,可以将关于给定任务形成的签名写出到存储器。关于给定任务形成的签名可以与处理后的数据本身一起写出到存储器。一般来讲,图形处理系统被配置为关于每个安全任务使由检查单元在处理该任务时在一个或多个处理单元的一个或多个输出上形成的签名中的至少一个可用713。可以以任何合适的方式使签名可用,例如,通过以下中的一种或多种方式:将签名写出到存储器中,将签名存储在软件可访问的GPU处的数据存储中,以及将签名写入GPU外部的数据存储中。
软件故障检测单元602被配置为将由检查单元208提供的一个或多个签名(例如403、404)与由软件检查单元601形成的签名603进行比较714。如果签名不匹配708,则发出故障信号604,指示在处理单元的输出与包括高速缓存206和存储器201的存储器的输出之间的数据路径上的某个点上的数据损坏。故障信号604可具有本文参考图4、图5和图6描述的故障信号211的任何特征。
软件检查单元601可以在任何合适的软件环境中得到支持,包括例如在支持GPU的数据处理系统的软件环境(例如,图3中的数据处理系统300处的软件环境301)中,和/或在由GPU本身提供的软件环境中。软件检查单元可以在例如以下中的一个或多个处提供:GPU的驱动器(例如,图3中的309);在操作系统(例如图3中的306)处;以及在过程(例如,图3中的307)处。软件检查单元601可以以软件和/或固件的任何组合来提供。
一般来讲,被配置为形成从存储器读取的处理后的任务数据的签名的检查单元和/或用于将该签名与关于给定任务在GPU处生成的对应签名进行比较的故障检测单元可以位于图形处理系统处的任何位置,例如在GPU处或在支持GPU的数据处理系统处。例如,检查单元和/或故障检测单元可以在数据处理系统处以硬件设置,并且被布置为从存储器201接收处理后的任务数据和从GPU接收签名。
用于从存储器中回读处理后的任务数据的布置会消耗存储器带宽,但通过另外地启用在存储器处和在从GPU到存储器的数据路径上的任何先前的高速缓存中检测到的故障,可以使图形处理系统达到更高的安全等级。
非对称方法
如上所述,在一些示例中,通过GPU在安全任务的第一遍生成的处理后的任务数据被写出到存储器201,并且该第一遍的该处理后的任务数据被回读到检查单元(例如,检查单元208或软件检查单元601),以形成其各自的签名603。由于在第一遍生成的处理后的任务数据通常首先可用,因此这使得签名对于在存储器处保存的处理后的任务数据尽可能早地可用。通过GPU的任务的第二处理遍可以在时间上重叠,其中将来自第一遍的处理后的任务数据写出到存储器和/或将来自第一遍的处理后的任务数据从存储器回读和/或形成来自第一遍的处理后的任务数据的签名。
此外,图形处理系统可被配置为在来自第一遍的处理后的任务数据被写出到存储器之前,不关于该数据形成签名。这示出在图9和图11的流程图中。接收安全任务以在图形处理系统901处进行处理。在处理单元处执行安全任务902的第一遍(例如,在图9(a)中的处理单元405处处理任务T0)时,检查单元208被布置为不在那时关于该任务由该处理单元输出的处理后的数据形成签名。而是将来自第一遍的处理后的任务数据通过高速缓存206写出903到存储器201。当在GPU处第二次处理任务906时(例如,在图9(b)中的处理单元406处在第二遍处理任务T0),根据本文关于图2至图7描述的任何原理,在检查单元208处生成907签名404。来自该后续遍的签名404可以被存储908在数据存储209中。由于关于第一遍的签名可能尚不可用,因此在图9(b)中未显示正在执行的比较,也未发出故障信号。
用于第二遍的处理后的任务数据可能不会写出到存储器中,以便最大程度减小GPU与存储器之间消耗的带宽。用于第二遍的签名可以在用于第二遍的处理后的任务数据被写入高速缓存之前形成。在一些示例中,如果用于第二遍的处理后的任务数据没有被写入高速缓存以便最大程度减小所需的高速缓存的大小,并且如果该处理后的数据将不会被写出到存储器中,则它(将用于第二遍的处理后的任务数据写入到缓存中)可能是不必要的。
来自第一遍的处理后的任务数据被从存储器回读904,以执行进一步的检查。在图9(c)中示出了该过程,其中处理后的任务数据被回读605以在检查单元208处形成905签名。在图9(c)所示的示例中,处理后的数据被回读到高速缓存206,但是一般来讲,所述回读可以是到GPU处的任何数据存储和/或流传输到检查单元208,而无需将处理后的数据非临时存储在GPU的数据存储中。检查单元208被配置为接收来自第一遍的回读的处理后的任务数据,并生成该数据所特有的签名603。由于处理后的任务数据已被写入存储器201并在检查单元处接收之前被回读,因此签名603捕获在执行第一遍的处理单元处的任务处理中发生的故障,以及在存储器201、高速缓存206中以及沿着往返那些数据存储的数据路径(例如,通过GPU 200与存储器201之间的互连)发生的故障。
故障检测单元210被配置为将通过GPU的任务的第二遍所特有的签名404与通过GPU的任务的第一遍所特有的并存储在存储器201处的签名603进行比较909。如果两个签名不匹配911,则故障检测单元210可以发出故障信号604。如果两个处理单元的输出不同和/或在高速缓存和/或存储器处或这两者之间发生数据损坏,则签名将不匹配。因此,故障信号604代表GPU的处理单元和高速缓存和/或存储器两者处的故障。如果两个签名匹配912,则在第一遍生成且在存储器201处可用的处理后的任务数据可被认为是有效的,并以适合于应用程序的方式使用(例如,在汽车环境中,处理后的任务数据可以表示用于写入仪器控制台的图形数据)。
在图9(c)所示的示例中,在GPU处对从存储器201回读的处理后的数据进行故障检查。在其他示例中,可以在GPU外部的另一检查单元处执行对存储器的故障检查,并且检查单元208可被配置为将关于来自第二遍的处理后的数据形成的签名提供给该另一检查单元。可以根据本文关于图6和图7描述的任何方式来布置用于接收从存储器回读的处理后的数据的检查单元。例如,可以以图7中所示的方式提供软件检查单元,其中GPU 200被配置为从第二遍向软件检查单元提供签名404,其中如果来自第二遍的签名与从存储器回读的第一遍的处理后的数据的签名不匹配,则软件检查单元被配置为发出故障信号604。如果在GPU外部执行故障检查,则GPU可能不包括故障检测单元210,并且可能不发出故障信号。注意,图9中的数据存储209是示意性的,并且GPU可能不包括用于保存在检查单元208处生成的签名的数据存储。例如,检查单元可被配置为将关于在GPU处处理的任务的每个第二遍的生成的签名写出到存储器。
在第二遍形成来自相应处理单元的输出的签名,同时在第一遍形成来自相应处理单元和被写入输出的存储器的输出的签名,这种非对称方法具有多个优点。首先,仅需形成两个签名即可捕获在处理单元和存储器两者处的故障。这减少了在GPU(以及可能的其他系统)处所需的处理,减少了GPU的功耗,并且减小了在GPU处存储在检查单元处形成的签名所需的数据存储的大小。其次,该非对称方法最大程度减小存储器写入带宽,因为仅需将来自GPU的第一处理后的输出写出到存储器,无需将来自第二遍的数据写出到存储器。第三,该非对称方法最大程度缩短故障信号变得可用的时间,因为来自第一遍的处理后的输出在可用时被尽可能快地写出到存储器,而无需等待第二遍的结果即可比较第一遍和第二遍的签名,以及验证第一遍的输出。
简而言之,该非对称方法使得能够在处理、功耗和芯片面积方面以最小的成本覆盖最大的芯片面积(处理单元+高速缓存+存储器)。
在图6、图7和图9所示的示例中,处理后的任务数据从存储器回读。在一些示例中,可以从高速缓存回读处理后的任务数据,以便检测高速缓存中的故障。这可以代替或补充从存储器回读处理后的任务数据。从高速缓存而不是从存储器回读可以具有避免消耗GPU与存储器之间的带宽的优点,尽管这样做的代价是不提供对存储器的保护。为了最大程度减少来自高速缓存的读取,在处理后的任务数据从高速缓存206读出到存储器201时,可以将该处理后的任务数据导向检查单元208,使得存储器201和检查单元208两者都接收处理后的任务数据。
通过检查由处理单元输出的处理后的任务数据与从存储器和/或高速缓存读出的处理后的任务数据是否相同,可以提供针对数据故障的更大程度的保护。这可以允许实现更高的安全等级。当在汽车环境中使用时,根据本文所述原理配置的图形处理系统可以达到至少ASIL等级B。通过将本文教导的图形处理系统与常规错误恢复和故障检测机制结合在一起,可以实现ASIL等级D。例如,存储器201和/或高速缓存206可以是ECC存储器,以允许从较小的错误中恢复并提高图形处理系统对瞬态事件的鲁棒性。
根据本文所述原理配置的图形处理系统可被配置为处理与安全关键功能有关的安全任务和与安全关键功能无关的常规任务两者。由于每个任务和任务的每个实例都可以独立于任何其他任务或任务的实例分配给系统的处理单元(受制于不应将处理单元重复用于同一任务的任何约束),图形处理系统可以根据所需的安全等级冗余地处理安全任务,同时还可以在不符合该安全等级的情况下以单遍处理常规任务。在一些示例中,图形处理系统的处理单元的子集被保留用于处理安全任务,使得在不同的处理单元处处理安全任务和常规任务。无论安全任务和常规任务是否被配置为要处理到不同的处理器集,都遵循此处所述的优点。与锁步处理器(所述锁步处理器必须至少处理两次分配给它们的每个任务)相比,此方法可降低功耗,减小片上数据带宽,以及减小提供给定处理性能所需的GPU的大小,因为它避免了浪费在不总是需要该安全核时提供专用的安全核的芯片面积。
图2至图7、图9和图10的图形处理系统和数据处理系统被示出为包括多个功能块。这仅是示意性的,并不希望限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应当理解,由图形处理系统形成的本文描述的中间值不需要由图形处理系统在任何时间点物理地生成,并且可以仅仅表示方便地描述由图形处理系统在其输入与输出之间执行的处理的逻辑值。
本文描述的图形处理单元可以用集成电路上的硬件来体现。本文所述图形处理系统可以被配置成执行本文所述任何方法。
如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如C、Java或OpenCL等编程语言代码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由所述代码指定的任务。计算机可读存储介质的示例包含随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或其他数据并可以由机器存取的其他存储器装置。
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、矢量处理器、张量处理器、芯片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。
本发明还意图涵盖限定如本文中所描述的硬件配置的软件,例如硬件描述语言(HDL)软件,用于设计集成电路或用于配置可编程芯片以执行所需功能。也就是说,可以提供一种其上编码有集成电路定义数据集形式的计算机可读程序代码的计算机可读存储介质,当在集成电路制造系统中处理时,该计算机可读程序代码将该系统配置成制造被配置成执行本文所述任何方法的图形处理单元,或者制造包括本文所述任何装置的图形处理单元。集成电路定义数据集可以是例如集成电路描述。
可以提供一种在集成电路制造系统中制造如本文所述的图形处理单元的方法。可以提供一种集成电路定义数据集,当在集成电路制造系统中处理时,该数据集导致制造图形处理单元的方法得以执行。
集成电路定义数据集可呈计算机代码形式,例如作为网表、用于配置可编程芯片的代码,作为在任何层级定义集成电路的硬件描述语言,包含作为寄存器传送级(RTL)代码、作为例如Verilog或VHDL等高级电路表示,和作为例如OASIS(RTM)和GDSII等低级电路表示。在逻辑上定义集成电路的更高级表示(例如RTL)可以在配置为在软件环境的上下文中生成集成电路的制造定义的计算机系统处处理,所述软件环境包括电路元件的定义和用于组合那些元件以便生成由所述表示如此定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置成生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
现在将参考图10描述在集成电路制造系统处处理集成电路定义数据集以便将系统配置为制造图形处理单元的示例。
图10示出了集成电路(IC)制造系统1002的示例,该集成电路制造系统被配置为制造如本文任何示例中描述的图形处理单元。特别地,IC制造系统1002包括布局处理系统1004和集成电路生成系统1006。IC制造系统1002被配置为接收IC定义数据集(例如,定义如本文任何示例中描述的图形处理单元)、处理IC定义数据集以及根据IC定义数据集来生成IC(例如,其体现如本文任何示例中所述的图形处理单元)。通过对IC定义数据集的处理,将IC制造系统1002配置为制造体现如本文任何示例中描述的图形处理单元的集成电路。
布局处理系统1004被配置为接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定要生成的电路的门级表示,例如就逻辑组件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP组件)而言。通过确定逻辑组件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统1004确定了电路布局时,它可以将电路布局定义输出到IC生成系统1006。电路布局定义可以是例如电路布局描述。
如本领域已知的,IC生成系统1006根据电路布局定义来生成IC。例如,IC生成系统1006可以实现生成IC的半导体器件制造工艺,其可以涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩码的形式,其可以在光刻工艺中用于根据电路定义来生成IC。替代性地,提供给IC生成系统1006的电路布局定义可以是计算机可读代码的形式,IC生成系统1006可以使用该计算机可读代码来形成用于生成IC的合适掩模。
由IC制造系统1002执行的不同过程可以全部在一个位置例如由一方来实现。替代性地,IC制造系统1002可以是分布式系统,使得一些过程可以在不同位置执行,并且可以由不同的方来执行。例如,以下阶段中的一些可以在不同位置中和/或由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成要生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩码;以及(iv)使用掩码来制造集成电路。
在其他示例中,在集成电路制造系统中对集成电路定义数据集的处理可以将该系统配置成在不处理IC定义数据集以确定电路布局的情况下制造图形处理单元。例如,集成电路定义数据集可以定义可重新配置的处理器(例如FPGA)的配置,并且对所述数据集进行的处理可以将IC制造系统配置成生成具有所述所定义配置的可重新配置的处理器(例如通过将配置数据加载到FPGA)。
在一些实施方案中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以致使集成电路制造系统产生如本文描述的装置。例如,通过集成电路制造定义数据集以上文参考图10描述的方式对集成电路制造系统进行配置,可以制造出如本文描述的设备。
在一些示例中,集成电路定义数据集可以包含在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图10所示的示例中,IC产生系统可以由集成电路定义数据集进一步配置为在制造集成电路时根据在集成电路定义数据集处限定的程序代码将固件加载到所述集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。
与已知的实施方案相比,在本申请中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实施的方法中)的实施可以引起性能改进。性能改进可以包含计算性能提高、等待时间缩短、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和系统(例如在集成电路中)期间,可以在性能改进与物理实施方案之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实施方案的性能,但使用更少的硅。例如,这可以通过以串行方式再使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和系统的物理实施方案的改进(例如硅面积减小)的概念可以针对性能提高进行权衡。例如,这可以通过在预定义面积预算内制造模块的多个例项来完成。
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。

Claims (22)

1.一种用于与数据存储一起操作的图形处理系统,包括:
用于处理任务的一个或多个处理单元;
可操作以形成签名的检查单元,所述签名是来自在处理单元上处理任务的输出所特有的;以及
可操作以比较在所述检查单元处形成的签名的故障检测单元;
其中所述图形处理系统可操作以在所述一个或多个处理单元处对每个任务进行第一次和第二次处理,以便分别生成第一处理后的输出和第二处理后的输出,所述图形处理系统被配置为:
将所述第一处理后的输出写出到所述数据存储;
从所述数据存储回读所述第一处理后的输出,并在所述检查单元处形成第一签名,所述第一签名是从所述数据存储回读的所述第一处理后的输出所特有的;
在所述检查单元处形成第二签名,所述第二签名是从处理单元输出的所述第二处理后的输出所特有的;
在所述故障检测单元处比较所述第一签名和所述第二签名;以及
如果所述第一签名和所述第二签名不匹配,则发出故障信号。
2.如权利要求1所述的图形处理系统,其中所述图形处理系统被配置为将所述第一处理后的输出写入所述数据存储,而无需等待所述第二处理后的输出变为可用。
3.如权利要求1或2所述的图形处理系统,还包括用于从所述一个或多个处理单元接收处理后的输出的高速缓存,并且所述图形处理系统被配置为一旦在所述高速缓存处接收到完整的第一处理后的输出,就将所述第一处理后的输出写入所述数据存储。
4.如权利要求1或2所述的图形处理系统,其中所述检查单元被配置为在将所述第一处理后的输出写出到所述数据存储之前不形成所述第一处理后的输出的签名。
5.如权利要求1或2所述的图形处理系统,其中所述图形处理系统被配置为不将所述第二处理后的输出写入所述数据存储。
6.如权利要求1或2所述的图形处理系统,其中所述多个处理单元、所述检查单元和所述故障检测单元设置在所述图形处理系统的图形处理单元处,并且所述数据存储包括所述图形处理单元外部的存储器,其中所述图形处理系统被配置为将所述第一处理后的输出写出到所述数据存储的所述存储器中。
7.如权利要求1或2所述的图形处理系统,其中所述一个或多个处理单元和所述检查单元的第二实例设置在所述图形处理系统的图形处理单元处,并且所述检查单元的第一实例、所述故障检测单元和所述数据存储的存储器在所述图形处理单元的外部,所述图形处理系统被配置为:
将所述第一处理后的输出写入所述存储器;
从所述存储器回读所述第一处理后的输出,并在所述检查单元的所述第一实例处形成第一签名,所述第一签名是从所述存储器回读的所述第一处理后的输出所特有的;
在所述检查单元的所述第二实例处形成第二签名,所述第二签名是从处理单元输出的所述第二处理后的输出所特有;
将所述第二签名提供给所述故障检测单元;
在所述故障检测单元处比较所述第一签名和所述第二签名;以及
如果所述第一签名和所述第二签名不匹配,则发出故障信号。
8.如权利要求7所述的图形处理系统,其中所述图形处理单元被配置为通过以下一项或多项将所述第二签名提供给所述故障检测单元:将所述第二签名写出到所述存储器;在所述图形处理单元处将所述第二签名存储在所述故障检测单元可访问的位置处;以及在控制消息中将所述第二签名传递给所述故障检测单元。
9.如权利要求7所述的图形处理系统,其中所述检查单元的第一实例和所述故障检测单元在支持所述图形处理单元的数据处理系统处以软件提供。
10.如权利要求1或2所述的图形处理系统,其中所述数据存储包括位于所述图形处理系统的图形处理单元处或外部的一个或多个存储器和/或位于所述图形处理系统的图形处理单元处或外部的一个或多个高速缓存。
11.如权利要求1或2所述的图形处理系统,其中所述一个或多个处理单元中的第一处理单元被配置为在第一次处理时处理所述任务,并且所述一个或多个处理单元中的第二处理单元被配置为在第二次处理时处理所述任务。
12.如权利要求11所述的图形处理系统,其中所述图形处理系统被配置为使得所述第二处理单元独立于所述第一处理单元接收所述任务。
13.如权利要求11所述的图形处理系统,其中所述图形处理系统被配置为使得所述第二处理单元被约束为所述一个或多个处理单元中与所述第一处理单元不同的处理单元。
14.如权利要求11所述的图形处理系统,其中所述图形处理系统被配置为使得允许所述第一处理单元和所述第二处理单元为同一处理单元。
15.如权利要求1或2所述的图形处理系统,所述图形处理系统包括多个处理单元,并且每个处理单元被配置为独立于所述多个处理单元中的任何其他处理单元来处理其任务。
16.如权利要求1或2所述的图形处理系统,其中每个任务包括指示所述任务是否是将被第一次和第二次处理的安全任务的标识符。
17.如权利要求1或2所述的图形处理系统,其中每个安全任务将根据预定的安全等级来处理。
18.如权利要求15所述的图形处理系统,其中所述多个处理单元包括三个或更多个处理单元。
19.如权利要求1或2所述的图形处理系统,其中所述第二签名是在所述第二处理后的输出被写入所述数据存储之前形成的。
20.如权利要求1或2所述的图形处理系统,其中所述图形处理系统被配置为不在所述第二签名形成之前将所述第二处理后的输出写入所述数据存储。
21.一种在具有多个处理单元的图形处理系统处处理任务的方法,每个处理单元被配置为独立于任何其他处理单元来处理任务,所述方法包括在接收到用于处理的任务时:
在第一处理单元处对所述任务进行第一次处理,以便生成第一处理后的输出;
将所述第一处理后的输出写出到数据存储;
从所述数据存储回读所述第一处理后的输出并形成第一签名,所述第一签名是从所述数据存储回读的所述第一处理后的输出所特有的;
在第二处理单元处对所述任务进行第二次处理,以便生成第二处理后的输出,并形成第二签名,所述第二签名是从所述第二处理单元输出的所述第二处理后的输出所特有的;
比较所述第一签名和所述第二签名;以及
如果所述第一签名和所述第二签名不匹配,则发出故障信号。
22.一种非暂时性计算机可读存储介质,其上存储有集成电路的计算机可读描述,当在集成电路制造系统中被处理时,所述计算机可读描述使所述集成电路制造系统制造用于与数据存储一起操作的图形处理系统,所述图形处理系统包括:
用于处理任务的一个或多个处理单元;
可操作以形成签名的检查单元,所述签名是来自在处理单元上处理任务的输出所特有的;以及
可操作以比较在所述检查单元处形成的签名的故障检测单元;
其中所述图形处理系统可操作以在所述一个或多个处理单元处对每个任务进行第一次和第二次处理,以便分别生成第一处理后的输出和第二处理后的输出,所述图形处理系统被配置为:
将所述第一处理后的输出写出到所述数据存储;
从所述数据存储回读所述第一处理后的输出,并在所述检查单元处形成第一签名,所述第一签名是从所述数据存储回读的所述第一处理后的输出所特有的;
在所述检查单元处形成第二签名,所述第二签名是从处理单元输出的所述第二处理后的输出所特有的;
在所述故障检测单元处比较所述第一签名和所述第二签名;以及
如果所述第一签名和所述第二签名不匹配,则发出故障信号。
CN201911221811.3A 2018-12-04 2019-12-03 缓冲器检查器 Active CN111275605B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311314788.9A CN117274031A (zh) 2018-12-04 2019-12-03 缓冲器检查器

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1819809.3A GB2579591B (en) 2018-12-04 2018-12-04 Buffer checker
GB1819809.3 2018-12-04

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202311314788.9A Division CN117274031A (zh) 2018-12-04 2019-12-03 缓冲器检查器

Publications (2)

Publication Number Publication Date
CN111275605A CN111275605A (zh) 2020-06-12
CN111275605B true CN111275605B (zh) 2023-11-07

Family

ID=65030033

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202311314788.9A Pending CN117274031A (zh) 2018-12-04 2019-12-03 缓冲器检查器
CN201911221811.3A Active CN111275605B (zh) 2018-12-04 2019-12-03 缓冲器检查器

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202311314788.9A Pending CN117274031A (zh) 2018-12-04 2019-12-03 缓冲器检查器

Country Status (4)

Country Link
US (2) US11409557B2 (zh)
EP (1) EP3663920B1 (zh)
CN (2) CN117274031A (zh)
GB (1) GB2579591B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10387298B2 (en) 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
US11615297B2 (en) 2017-04-04 2023-03-28 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network compiler
GB2579590B (en) * 2018-12-04 2021-10-13 Imagination Tech Ltd Workload repetition redundancy
GB2579591B (en) 2018-12-04 2022-10-26 Imagination Tech Ltd Buffer checker
US11874900B2 (en) 2020-09-29 2024-01-16 Hailo Technologies Ltd. Cluster interlayer safety mechanism in an artificial neural network processor
US20220100601A1 (en) * 2020-09-29 2022-03-31 Hailo Technologies Ltd. Software Defined Redundant Allocation Safety Mechanism In An Artificial Neural Network Processor
US11811421B2 (en) 2020-09-29 2023-11-07 Hailo Technologies Ltd. Weights safety mechanism in an artificial neural network processor
FR3118749B1 (fr) * 2021-01-08 2023-01-06 Renault Sas Dispositif et procédé de calcul de paramètres de conduite
CN113221193B (zh) * 2021-06-02 2022-07-29 上海交通大学 基于gpu的sm2数字签名与验签快速实现方法及系统
CN113344766B (zh) * 2021-06-07 2022-09-06 中天恒星(上海)科技有限公司 光线追踪处理器、处理器芯片、设备终端以及光线追踪方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2884949A1 (fr) * 2005-04-26 2006-10-27 Thales Sa Dispositif de generation graphique comportant des moyens de surveillance de son fonctionnement.
CN102033728A (zh) * 2009-09-25 2011-04-27 Arm有限公司 图形处理系统
CN107222485A (zh) * 2017-06-14 2017-09-29 腾讯科技(深圳)有限公司 一种授权方法以及相关设备
CN107438850A (zh) * 2015-05-20 2017-12-05 谷歌公司 使用签名的地址验证
US9892479B1 (en) * 2013-03-12 2018-02-13 Rockwell Collins, Inc Independent monitoring of graphics processing units
CN108027957A (zh) * 2015-09-21 2018-05-11 高通股份有限公司 用于上下文切换的上下文信息的高效保存和恢复
CN108776949A (zh) * 2017-04-07 2018-11-09 英特尔公司 用于图形处理环境中的存储器管理的设备和方法

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2822932B2 (ja) 1995-05-29 1998-11-11 日本電気株式会社 ソフトウェア二重化処理装置
US6571363B1 (en) 1998-12-30 2003-05-27 Texas Instruments Incorporated Single event upset tolerant microprocessor architecture
US6615366B1 (en) 1999-12-21 2003-09-02 Intel Corporation Microprocessor with dual execution core operable in high reliability mode
US6772368B2 (en) * 2000-12-11 2004-08-03 International Business Machines Corporation Multiprocessor with pair-wise high reliability mode, and method therefore
WO2005003962A2 (de) 2003-06-24 2005-01-13 Robert Bosch Gmbh Verfahren zur umschaltung zwischen wenigstens zwei betriebsmodi einer prozessoreinheit sowie entsprechende prozessoreinheit
US7296181B2 (en) 2004-04-06 2007-11-13 Hewlett-Packard Development Company, L.P. Lockstep error signaling
US7328331B2 (en) 2005-01-25 2008-02-05 Hewlett-Packard Development Company, L.P. Method and system of aligning execution point of duplicate copies of a user program by copying memory stores
DE102005037228A1 (de) 2005-08-08 2007-02-15 Robert Bosch Gmbh Verfahren und Vorrichtung zur Steuerung eines Rechnersystems
US20070088979A1 (en) 2005-10-14 2007-04-19 Pomaranski Ken G Hardware configurable CPU with high availability mode
US7865770B2 (en) 2008-01-10 2011-01-04 Advanced Micro Devices, Inc. Processor including efficient signature generation for logic error protection
US7941698B1 (en) 2008-04-30 2011-05-10 Hewlett-Packard Development Company, L.P. Selective availability in processor systems
JP5507830B2 (ja) 2008-11-04 2014-05-28 ルネサスエレクトロニクス株式会社 マイクロコントローラ及び自動車制御装置
DE102009054637A1 (de) * 2009-12-15 2011-06-16 Robert Bosch Gmbh Verfahren zum Betreiben einer Recheneinheit
US9135154B2 (en) 2010-03-02 2015-09-15 Microsoft Technology Licensing, Llc Algorithm execution output cache
US9104403B2 (en) 2010-08-18 2015-08-11 Freescale Semiconductor, Inc. Data processing system having selective redundancy and method therefor
US8583971B2 (en) * 2010-12-23 2013-11-12 Advanced Micro Devices, Inc. Error detection in FIFO queues using signature bits
US8880961B2 (en) * 2012-01-31 2014-11-04 Infineon Technologies Ag System and method of computation by signature analysis
US9027024B2 (en) 2012-05-09 2015-05-05 Rackspace Us, Inc. Market-based virtual machine allocation
US9047192B2 (en) * 2012-12-21 2015-06-02 Advanced Micro Devices, Inc. Signature-based store checking buffer
US9274904B2 (en) * 2013-06-18 2016-03-01 Advanced Micro Devices, Inc. Software only inter-compute unit redundant multithreading for GPUs
US9413392B1 (en) 2015-12-14 2016-08-09 International Business Machines Corporation Post-decoding error check with diagnostics for product codes
US10380185B2 (en) 2016-02-05 2019-08-13 Sas Institute Inc. Generation of job flow objects in federated areas from data structure
US10013240B2 (en) * 2016-06-21 2018-07-03 Advanced Micro Devices, Inc. Fingerprinting of redundant threads using compiler-inserted transformation code
JP2018107588A (ja) * 2016-12-26 2018-07-05 ルネサスエレクトロニクス株式会社 画像処理装置および半導体装置
EP3373178A1 (en) 2017-03-08 2018-09-12 Secure-IC SAS Comparison of execution context data signatures with references
US10331529B2 (en) * 2017-03-15 2019-06-25 International Business Machines Corporation Maintaining system reliability in a CPU with co-processors
US10754760B1 (en) * 2018-05-17 2020-08-25 Xilinx, Inc. Detection of runtime failures in a system on chip using debug circuitry
GB2579591B (en) 2018-12-04 2022-10-26 Imagination Tech Ltd Buffer checker

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2884949A1 (fr) * 2005-04-26 2006-10-27 Thales Sa Dispositif de generation graphique comportant des moyens de surveillance de son fonctionnement.
CN102033728A (zh) * 2009-09-25 2011-04-27 Arm有限公司 图形处理系统
US9892479B1 (en) * 2013-03-12 2018-02-13 Rockwell Collins, Inc Independent monitoring of graphics processing units
CN107438850A (zh) * 2015-05-20 2017-12-05 谷歌公司 使用签名的地址验证
CN108027957A (zh) * 2015-09-21 2018-05-11 高通股份有限公司 用于上下文切换的上下文信息的高效保存和恢复
CN108776949A (zh) * 2017-04-07 2018-11-09 英特尔公司 用于图形处理环境中的存储器管理的设备和方法
CN107222485A (zh) * 2017-06-14 2017-09-29 腾讯科技(深圳)有限公司 一种授权方法以及相关设备

Also Published As

Publication number Publication date
GB2579591A (en) 2020-07-01
GB2579591B (en) 2022-10-26
CN117274031A (zh) 2023-12-22
US11409557B2 (en) 2022-08-09
EP3663920B1 (en) 2024-02-28
GB201819809D0 (en) 2019-01-23
US20200174829A1 (en) 2020-06-04
CN111275605A (zh) 2020-06-12
US20220350643A1 (en) 2022-11-03
US11977913B2 (en) 2024-05-07
EP4350520A2 (en) 2024-04-10
EP3663920A1 (en) 2020-06-10

Similar Documents

Publication Publication Date Title
CN111275605B (zh) 缓冲器检查器
CN111275606B (zh) 工作量重复冗余
CN112017104B (zh) 用于执行基于图块的渲染的方法和图形处理系统
EP3663918B1 (en) Tile region protection
CN113327189A (zh) 关键工作负载检查
US11940866B2 (en) Verifying processing logic of a graphics processing unit
GB2579699A (en) Tile region protection
GB2613222A (en) Buffer checker
US11934257B2 (en) Processing tasks in a processing system
JP7512032B2 (ja) タイル領域保護
US20240220353A1 (en) Processing tasks in a processing system
US20240231981A1 (en) Verifying processing logic of a graphics processing unit
CN113327188B (zh) 关键工作负载检查

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant