在处理系统中处理任务的制作方法

文档序号:30416120发布日期:2022-06-15 11:21阅读:162来源:国知局
在处理系统中处理任务的制作方法

1.本发明涉及在处理系统中处理任务。


背景技术:

2.本公开涉及处理系统以及在处理系统中处理任务的方法。
3.在安全关键系统中,系统的至少一些部件必须满足足以使系统作为整体能够满足被认为是系统所必要的安全等级的安全目标。例如,在大多数管辖区域内,车辆中的安全带收缩器必须满足特定安全标准,以便使具备此类装置的车辆通过安全测试。同样,车辆轮胎必须满足特定标准,以便使配备有此类轮胎的车辆通过适于特定管辖区域的安全测试。安全关键系统通常是其失效会造成人员安全或环境的风险显著增加的那些系统。
4.诸如数据处理装置的处理系统通常构成安全关键系统的组成部分,作为专用硬件或作为用于运行安全关键软件的处理器。例如,飞机用电传飞行系统、驾驶员辅助系统、铁路信号发送系统和医疗装置用控制系统通常都是在数据处理装置上运行的安全关键系统。在数据处理装置构成安全关键系统的组成部分的情况下,有必要使数据处理装置自身满足安全目标,使得系统作为整体可以满足适当安全等级。在汽车行业中,安全等级通常是功能安全标准iso 26262中所定义的汽车安全完整性等级(automotive safety integrity level,asil)。
5.越来越多地,用于安全关键系统的数据处理装置包括运行软件的处理器。硬件和软件元件两者都必须满足特定安全目标。一些软件失效可能是编程错误或不良错误处理造成的系统性失效。这些问题通常可以通过严格的开发实践、代码审核和测试协议来解决。即使安全关键系统可能完全不包括系统性错误,但是也可能例如因为瞬时事件(例如,由电离辐射、电压尖峰或电磁脉冲造成)而将随机错误引入到硬件。在二进制系统中,瞬时事件可能会在存储器中并沿着处理器的数据路径造成随机位翻转。硬件还可能具有永久性故障。
6.数据处理装置的安全目标可表达为一组度量,例如在给定时间段内的最大失效次数(通常表达为单位时间失效性或fit),以及用于检测单点失效的机制(单点失效机制或spfm)和用于检测潜在失效(潜在失效机制或lfm)的有效性。存在用于实现针对数据处理装置设置的安全目标的各种方法:例如,通过提供硬件冗余,使得在一个部件失效时,另一部件可用于执行相同任务,或者通过使用检查数据(例如,奇偶校验位或错误校正码),使得硬件能够检测和/或校正轻微的数据损坏。
7.例如,如图1所示,数据处理器可以以双锁步布置100提供,其中一对相同的处理单元101和102被配置成并行处理指令流103。处理单元101和102通常对于每个指令流是同步的,使得两个处理单元101和102同时逐循环执行该指令流。处理单元101、102中的任一个的输出可以被用作锁步处理器的输出104。当处理单元101和102的输出不匹配时,安全关键系统可能发生故障。然而,由于需要第二处理单元,因此双锁步处理器与常规处理器相比必定会消耗两倍的芯片面积,并消耗大约两倍的功率。
8.在另一示例中,通过向锁步处理器100添加另外的处理器单元(未示出),即使在这
些处理器单元中的一个上检测到故障,仍可以继续提供无错误输出。这可以通过使用称为模块化冗余的过程来实现。此处,锁步处理器的输出可以是其处理单元中的两个或更多个提供的输出,其中忽略与其它单元不匹配的处理单元的输出。然而,这进一步增加了处理器的面积和功率消耗。
9.先进的驾驶员辅助系统和自主车辆可以并有必须满足特定安全目标的数据处理系统。例如,自主车辆必须实时处理大量数据(例如,来自雷达、激光雷达的数据,地图数据和车辆信息),以便作出安全关键决策。自主车辆中的此类安全关键系统通常需要满足iso 26262的最严格的asil等级d。然而,实现锁步处理器的面积和功率消耗(以及因此成本)的增加可能是不可接受的或在这些应用中是不期望的。


技术实现要素:

10.提供本发明内容是为了以简化的形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
11.根据第一方面,提供了一种在处理系统中处理输入任务的方法,所述方法包括:复制输入任务以便形成第一任务和第二任务;分配存储器,所述存储器包括:第一存储器块,其被配置成存储在处理第一任务期间要访问的读写数据;第二存储器块,其被配置成存储在处理第二任务期间要访问的读写数据的副本;和第三存储器块,其被配置成存储在处理第一任务和第二任务两者期间要访问的只读数据;以及在处理系统的处理逻辑处处理第一任务和第二任务,以便分别生成第一输出和第二输出。
12.所述方法还可以包括:形成第一签名和第二签名,所述第一签名和所述第二签名分别是第一输出和第二输出的特征;比较第一签名和第二签名;以及如果第一签名和第二签名不匹配,则发出故障信号。
13.形成分别是第一输出和第二输出的特征的第一签名和第二签名可以包括确定在分别第一经处理的输出和第二经处理的输出上的校验和、循环冗余校验、散列和指纹中的一者或多者。
14.所述方法还可以包括在第一输出和第二输出访问处理系统的存储器层级之前形成第一签名和第二签名。
15.所述方法还可以包括:在处理第一任务和第二任务之前,将读写数据存储在第一存储器块的一存储器地址处,并将该读写数据的副本存储在第二存储器块的对应存储器地址处。
16.可以在存储器堆中分配第一存储器块和第二存储器块,第二存储器块的每个存储器地址从第一存储器块中的对应存储器地址偏移固定存储器地址步幅。
17.可以在处理系统处处理多个输入任务,并且对于由相应的输入任务形成的每对第一任务和第二任务,固定存储器地址步幅可以是相同的。
18.存储器堆可以是为在处理系统处处理一个或多个输入任务而保留的用于存储数据的连续存储器块,存储器堆在处理系统的存储器中。
19.所述方法还可以包括:接收第二输出;在第二输出中识别对第一存储器块中的存储器地址的援引;使用存储器地址步幅更新该援引;以及使用所更新的援引访问第二存储
器块中的对应存储器地址。
20.所述方法还可以包括接收输出并识别输出是从第二任务接收的,以便将该输出识别为第二输出。
21.可以在存储器堆中分配第三存储器块。
22.所述方法还可以包括同时向处理逻辑提交第一任务和第二任务。
23.所述方法还可以包括:将数据从第一存储器块、第二存储器块和第三存储器块提取到高速缓存中,所述高速缓存被配置成在处理第一任务和第二任务期间由处理逻辑访问。
24.所述输入任务可以是将根据预定义安全等级进行处理的安全任务。
25.所述处理逻辑可以包括第一处理元件和第二处理元件,其中,在处理系统的处理逻辑处处理第一任务和第二任务包括在第一处理元件处处理第一任务,以及在第二处理元件处处理第二任务。
26.所述输入任务可以是测试任务,所述测试任务包括用于在处理逻辑上执行的预定义指令集,预定义指令集被配置成在针对预定义输入数据执行时在处理逻辑上执行预定操作集,并且所述方法还可以包括在包括第一处理元件和第二处理元件的处理单元处接收测试任务。
27.所述处理逻辑可以包括特定处理元件,其中,所述在处理系统的处理逻辑处处理第一任务和第二任务包括在特定处理元件处处理第一任务,以及在特定处理元件处处理第二任务。
28.第一输出和第二输出可以包括在分别处理第一任务和第二任务期间生成的中间输出。中间输出可以是在处理任务期间生成的加载、存储或原子指令中的一者或多者。
29.处理逻辑可以被配置成独立地处理第一任务和第二任务。
30.输入任务可以是包括一个或多个计算工作项的计算工作组。
31.所述方法还可以包括在处理第一任务期间:从第一存储器块读取读写数据;根据第一任务修改该数据;以及将该修改的数据写回到第一存储器块中。
32.所述方法还可以包括在处理第二任务期间:从第二存储器块读取读写数据;根据第二任务修改该数据;以及将该修改的数据写回到第二存储器块中。
33.根据第二方面,提供了一种处理系统,所述处理系统被配置成处理输入任务,处理系统包括:任务复制单元,所述任务复制单元被配置成复制输入任务,以便形成第一任务和第二任务;存储器分配单元,所述存储器分配单元被配置成分配存储器,所述存储器包括:第一存储器块,其被配置成存储在处理第一任务期间要访问的读写数据;第二存储器块,其被配置成存储在处理第二任务期间要访问的读写数据的副本;和第三存储器块,其被配置成存储在处理第一任务和第二任务两者期间要访问的只读数据;以及处理逻辑,其被配置成处理第一任务以便生成第一输出,以及处理第二任务以生成第二输出。
34.所述处理系统还可以包括:检查单元,所述检查单元被配置成形成第一签名和第二签名,所述第一签名和所述第二签名分别是第一输出和第二输出的特征;以及故障检测单元,所述故障检测单元被配置成比较第一签名和第二签名,并且如果第一签名和第二签名不匹配,则发出故障信号。
35.所述处理系统还可以包括存储器堆,所述存储器堆包括第一存储器块、第二存储
器块和第三存储器块。
36.本文中所描述的处理系统可包含在集成电路上的硬件中。可以提供一种在集成电路制造系统处制造如本文所述的处理系统的方法。可以提供一种集成电路定义数据集,所述集成电路定义数据集当在集成电路制造系统中被处理时配置所述系统以制造本文所述的处理系统。可以提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质上存储有本文所述的处理系统的计算机可读描述,该计算机可读描述当在集成电路制造系统中被处理时使集成电路制造系统制造包含本文所述的处理系统的集成电路。
37.可以提供一种集成电路制造系统,其包括:非暂态计算机可读存储介质,其上存储有本文所述的处理系统的计算机可读描述;布局处理系统,其被配置成处理计算机可读描述,以便生成包含本文所述的处理系统的集成电路的电路布局描述;以及集成电路生成系统,其被配置成根据电路布局描述制造本文所述的处理系统。
38.可以提供用于执行本文所述的任一种方法的计算机程序代码。可以提供非暂态计算机可读存储介质,所述非暂态计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令当在计算机系统处执行时使计算机系统执行本文所述的任一种方法。
39.如对本领域的技术人员显而易见的,上述特征可以适当地组合,并且可以与本文所述的示例的任何方面组合。
附图说明
40.现在将参考附图详细描述示例,在附图中:
41.图1示出了常规的双锁步处理器。
42.图2示出了根据本文所述的原理配置的图形处理单元。
43.图3示出了包括根据本文所述的原理配置的图形处理单元的数据处理系统。
44.图4示出了图3中所示的数据处理系统的单元的示范性逻辑布置,所述单元用于根据本文所述的原理处理输入任务。
45.图5示出了根据本文所述的原理在数据处理系统处处理输入任务的方法。
46.图6a至图6c示出了根据本文所述的原理的第一存储器块、第二存储器块和第三存储器块的示范性分配。
47.图7示出了根据本文所述的原理的由检查和过滤单元执行的示范性步骤集合。
48.图8示出了用于生成包含数据处理系统的集成电路的集成电路制造系统。
49.附图示出了各种示例。技术人员将理解,附图中所示的元素边界(例如,框、框的组,或其它形状)表示边界的一个示例。在一些示例中,情况可能是一个元素可以被设计为多个元素,或者多个元素可以被设计为一个元素。在适当的情况下,贯穿各附图使用共同的附图标记来指示类似的特征。
具体实施方式
50.通过示例的方式给出以下描述,以使本领域的技术人员能够制造和使用本发明。本发明不限于本文描述的实施例,并且对所公开的实施例的各种修改对于本领域的技术人员将是显而易见的。
51.现在仅通过示例的方式来描述实施例。
52.本公开涉及在处理系统处处理任务。处理系统在本文中可以被称为数据处理系统。根据本文的原理配置的数据处理系统可以具有任何合适的架构,例如,数据处理系统可以可操作以执行任何种类的图形、图像或视频处理、一般处理和/或任何其他类型的数据处理。
53.数据处理系统包括处理逻辑,该处理逻辑包括一个或多个处理元件。例如,数据处理系统可以包括多个处理元件,其可以是例如任何种类的图形和/或矢量和/或流处理元件。每个处理元件可以是由数据处理系统组成的图形处理单元(gpu)的不同物理核心。尽管如此,应理解,本文所述的原理可以应用于任何合适类型的处理单元(例如,具有多核布置的中央处理单元(cpu))的处理元件。数据处理系统可以应用于一般计算任务,特别是可容易地被并行化的任务。一般计算应用的示例包括信号处理、音频处理、计算机视觉、物理模拟、统计计算、神经网络和加密。
54.任务可以是在处理元件处处理的工作的任何部分。例如,任务可以定义将对数据处理系统的处理元件可以被配置成处理的任何种类的数据(例如矢量数据)执行的一个或多个处理动作。数据处理系统可以被配置成对多个不同类型的任务进行操作。在一些架构中,可以分配不同处理元件或处理元件组以处理不同类型的任务。
55.在示例中,将在数据处理系统处处理的任务可以是包括一个或多个计算工作项的计算工作组。计算工作项可以是计算内核(例如,计算着色器)的一个实例。一个或多个计算工作项可以协同操作公共数据。所述一个或多个计算工作项可以一起分组到所谓的计算工作组中。计算工作组中的每个计算工作项可以执行相同计算内核(例如,计算着色器),但每个工作项可以对这些工作项公共的数据的不同部分进行操作。包括一个或多个计算工作项的此类计算工作组可以被分派以供数据处理系统的处理元件处理。每个计算工作组可以独立于任何其他工作组。在另一示例中,将在数据处理系统处处理的任务可以是测试任务,如本文中将进一步详细描述的。
56.图2示出了根据本文所述的原理配置的图形处理单元。应理解,尽管将参考包括图形处理单元(gpu)的数据处理系统来描述本公开,但本文所述的原理可以应用于包括任何合适类型的处理单元(例如,具有多核布置的中央处理单元(cpu))的数据处理系统。
57.图形处理单元(gpu)200可以是数据处理系统的一部分。gpu 200包括多个处理元件204,在图中被标记为pe0到pe(n)。gpu 200可以包括一个或多个高速缓存和/或缓冲器206,该一个或多个高速缓存和/或缓冲器被配置成从存储器201接收数据202,并将经处理的数据203提供至存储器201。存储器201可以包括以任何合适方式布置的一个或多个数据存储单元。通常,存储器201将包括专用于gpu的存储器以及支持gpu的数据处理系统的系统存储器。
58.gpu 200的各个单元可以经由一个或多个数据总线和/或互连件205进行通信。gpu可以包括固件207,例如用以提供对gpu的各单元的低等级控制。
59.gpu的每个处理元件204可操作以处理任务,其中处理元件被布置成使得多个处理元件可以各自同时执行相应的任务。以此方式,gpu可以同时处理多个任务。每个处理元件可以包括多个可配置功能元件(例如,着色器、几何形状处理器、向量处理器、光栅器、纹理单元等),以便使得给定处理元件能够被配置成执行一系列不同处理动作。处理元件可以通过对用于任务的数据的部分执行一组动作来处理任务。该组动作可以定义为适合给定任
务。处理元件可以通过以下方式被配置:例如,gpu的软件驱动程序将适当命令传递到固件207,以便启用/禁用处理元件的功能元件,以便使处理元件执行不同组的处理动作。以此方式,第一组处理元件可以被配置成例如对从车辆传感器接收的传感器数据执行向量处理,而另一组处理元件可以被配置成例如对表示场景(例如,图块)的计算机生成图像的一部分的图形任务执行着色器处理。每个处理元件可能能够独立于任何其它处理元件处理任务。因此,在一个处理元件处处理的任务可能不与另一处理元件协作以便处理该任务(例如,可以不在一个以上处理元件处并行处理单个任务,但可以在单个处理元件处并行处理单个任务)。
60.在处理任务时,处理元件204生成关于该任务的输出。输出数据可以是用于处理该任务的最终输出,或在处理该任务期间生成的中间输出数据。gpu 200包括检查单元208,该检查单元可操作以从处理元件接收输出数据,并形成是该输出数据的特征的签名。例如,签名可以是输出数据从处理元件输出时的特征。换言之,签名可以是输出数据在其从处理元件输出时的特征。检查单元可以确定例如对输出数据的校验和、散列、循环冗余校验(crc)或指纹计算。检查单元可以对由处理任务的处理元件生成的数据进行操作。所述数据可以包括存储器地址和/或与该生成的数据相关联的控制数据—这可以有助于本文所述的验证操作识别较宽范围的故障。签名以比输出数据本身更紧凑的形式提供由处理元件对任务执行的处理的表达,以便促进由不同处理元件提供的输出数据的比较。优选地,检查单元在从处理元件接收的关于任务的全部输出数据(其可能不包括任何控制数据)上形成签名,但该签名可以在从处理元件接收的关于任务的一些(例如,并非全部)输出数据上形成。检查单元208可以通过数据总线/互连件205从处理元件接收输出数据。
61.检查单元208可以包括用于存储在检查单元处形成的一个或多个签名的数据存储区209。替代地或另外,检查单元可以利用检查单元外部(例如,gpu 200的存储器处)的数据存储区来存储在检查单元处形成的一个或多个签名。检查单元可以从gpu的处理元件的全部或子集接收输出数据。检查单元可以包括多个检查单元实例,例如,每个检查单元实例可以被配置成从gpu的不同处理元件子集接收输出数据。
62.gpu 200进一步包括故障检测单元210,该故障检测单元被配置成比较在检查单元208处形成的两个或更多个签名。故障检测单元210被配置成在确定签名不匹配时发出故障信号211。故障可能会潜在地在gpu处导致安全违规。可以以任何合适的方式提供故障信号作为gpu 200的输出。例如,故障信号可以是以下中的一者或多者:控制数据;中断;写出到存储器201的数据;以及写入到gpu 200的寄存器或存储器或gpu连接到的系统的数据。
63.故障检测单元210用于比较来自被布置成处理相同任务的不同处理元件204的输出数据的签名。任务可以由一个或多个处理元件多次(例如,两次)处理。由(多个)处理元件执行的用于多次处理任务的处理可以是或可以不是同时的。如果两个处理元件被布置成处理相同任务,则比较为输出数据从处理元件输出时的特征的签名指示由该对处理元件执行的处理是否一致。当关于给定任务的一对处理元件的签名不匹配时,故障信号211指示在该对处理元件的一个处理元件处发生故障,但所述故障信号不指示哪个处理元件经历所述故障。
64.如果(例如,由被布置成处理任务的一组三个或更多个处理元件)对任务进行三次或更多次处理,则比较来自处理该任务的处理元件的为输出数据的特征的签名指示由该处
理元件执行的处理是否一致。在此示例中,当根据任务的处理确定的三个或更多个签名不匹配时,故障信号211指示在处理元件中的一个处发生故障,并且其可进一步指示在哪个处理元件处发生故障。这是因为可以假设已在其签名与来自两个或更多个其它处理元件的输出的签名不匹配的处理元件处发生故障。
65.gpu 200可以结合到例如图3中所示的数据处理系统300的数据处理系统中。此类数据处理系统可以包括其它处理器(例如中央处理单元(cpu)304)和存储器201。硬件302可以包括处理器200、304和存储器201可以进行通信所经由的一个或多个数据总线和/或互连件308。通常,在数据处理系统处提供软件环境301,多个进程307可以在该软件环境中执行。操作系统306可以向进程307提供可用硬件302的抽象。操作系统可以包括用于gpu 200的驱动程序309,以便将gpu 200的功能暴露给进程。软件环境301的全部或一部分可以被提供为固件。在示例中,数据处理系统300形成车辆控制系统的一部分,其中所述进程各自执行车辆的一个或多个控制功能,例如仪表盘显示、娱乐系统、发动机管理、空调控制、车道控制、转向校正、自动制动系统等。进程307中的一个或多个可以是安全关键进程。所述进程可以是必须根据预定义安全等级执行的安全关键进程和无需根据预定义安全等级执行的非安全关键进程的混合。
66.可以由其中结合gpu的数据处理系统300以任何方式使用故障信号。例如,在由故障检测单元发出故障信号时,其中结合gpu的系统可以丢弃关于主题任务形成的输出数据和/或使所述任务重新提交至gpu以供重新处理。gpu本身可以使用故障信号211。例如,gpu可以记录故障信号和与这些故障相关联的处理元件,并且如果一个或多个处理元件超过预定义数量的故障(可能在某一限定时间段内),则这些一个或多个处理元件可能被禁用或以其它方式被阻止处理在gpu处接收到的任务。
67.图2所示的gpu可操作以处理任务,以便满足预定义安全等级。例如,图形处理系统可以被认证以满足iso 26262的asil b或asil d标准。需要处理到预定义安全等级的任务可以是与gpu可以被结合到其中的数据处理系统300的安全关键功能有关的任务。例如,在汽车应用中,安全关键任务可以是与由用于车道辅助系统中的一个或多个车辆摄像机捕获的数据的图像处理有关的那些任务。
68.如本文所述,待在数据处理系统处处理的任务可以是测试任务。可以在处理系统的处理单元(例如,图2中所示的gpu 200)处接收测试任务。测试任务可以用于验证处理单元的处理逻辑。测试任务包括用于在处理逻辑(例如,处理元件)上执行的预定义指令集。所述预定义指令集被配置成当针对预定义输入数据执行时对处理逻辑执行预定操作集。例如,测试任务可能需要执行一组特定的数据操纵操作以瞄准处理元件上的一组特定的逻辑,或者可以指定一组待执行的读/写以瞄准通往/来自存储器的某些路径。所述预定义指令集可以被配置成当针对不同预定义输入数据执行时对处理逻辑执行不同的预定操作集。测试任务验证其被编程为使用的硬件布置(例如,图2中所示的gpu 200)上的逻辑子集。也就是说,测试任务可以验证其被编程为使用的特定逻辑集正在正常运行。换句话说,测试任务表示硬件测试的方法,其涉及向部件提供特定且专门设计的任务作为刺激,以查看该部件是否提供预期结果。可以为不同的硬件布置(例如,不同的图形处理单元)设计不同的测试任务。也就是说,定义测试任务的特定预定义指令集可以根据硬件布置和待验证的处理逻辑的能力变化。技术人员(例如,软件工程师)将能够根据本文所述的原理在指令上设计
适合于待验证的处理逻辑的适当测试任务。
69.将参考图4和图5描述根据本文所述的原理的在数据处理系统处处理任务(在本文中称为输入任务)的示例性方法。应当理解,输入任务可以由在处理系统处执行的进程(例如,图3中所示的多个进程307中的一个)生成,可以由在处理系统处处理的另一任务生成(例如,繁衍),或者可以以任何其它合适的方式生成。简而言之,复制输入任务以便形成第一任务和第二任务。分配在处理第一任务和第二任务期间要访问的存储器,如本文将进一步详细描述的。第一任务和第二任务由处理系统的处理逻辑进行处理以生成第一输出和第二输出。例如,在第一处理元件处处理第一任务,并且在第二处理元件处处理第二任务,以便分别生成第一输出和第二输出。可以形成第一签名和第二签名,所述第一签名和所述第二签名分别是第一输出和第二输出的特征。可以比较第一签名和第二签名,并且如果第一签名和第二签名不匹配,则可以发出故障信号。
70.图4示出了图3中所示的数据处理系统的单元的示范性逻辑布置,所述单元用于以此方式处理任务。图4示出了第一处理元件204a和第二处理元件204b。第一处理元件204a和第二处理元件204b可以具有与参考图2描述的处理元件204相同的性质。图4还示出了第一检查单元208a和第二检查单元208b。第一检查单元208a可以被配置成检查由第一处理元件204a生成的输出。第二检查单元208b可以被配置成检查由第二处理元件204b生成的输出。第一检查单元208a和第二检查单元208b可以是参考图2描述的检查单元208的实例。图4示出了第一过滤单元400a和第二过滤单元400b,如本文将进一步详细描述。为了便于解释,第一过滤器400a和第二过滤器400b在图4中被示出为与第一检查单元208a和第二检查单元208b逻辑上分开的单元,然而,第一过滤器400a和第二过滤器400b实际上可以是图2中所示的检查单元208的部分。第一过滤器400a和第二过滤器400b可以在硬件(例如,固定功能电路)、软件或其任何组合中实施。第一过滤单元400a可以被配置成过滤由第一处理元件204a生成的输出。第二过滤单元400b可以被配置成过滤由第二处理元件204b生成的输出。可以在数据处理系统的存储器层级402处接收第一过滤单元400a和第二过滤单元400b的输出。图4中所示的存储器层级402包括第一l0高速缓存206-0a和第二l0高速缓存206-0b。第一l0高速缓存206-0a可由第一处理元件204a访问。也就是说,第一处理元件204a可以输出请求从第一l0高速缓存206-0a读取数据或向其写入数据的指令,而第二处理元件204b可以不如此。第二l0高速缓存206-0b可由第二处理元件204b访问。也就是说,第二处理元件204b可以输出请求从第二l0高速缓存206-0b读取数据或向其写入数据的指令,而第一处理元件204a可以不如此。第一l0高速缓存206-0a和第二l0高速缓存206-0b可以在包括第一处理元件204a和第二处理元件204b的gpu的本地(例如,在相同物理芯片上实施为gpu)。第一l0高速缓存206-0a和第二l0高速缓存206-0b可以用来自l1高速缓存206-1的数据填充。l1高速缓存206-1可以由第一处理元件204a和第二处理元件204b两者访问。也就是说,第一处理元件204a和第二处理元件204b两者都可以输出请求从l1高速缓存206-1读取数据或向其写入数据的指令。l1高速缓存206-1可以在包括第一处理元件204a和第二处理元件204b的gpu的本地(例如,在相同物理芯片上实施为gpu)。l1高速缓存206-1可以用来自存储器201(例如,具有与图2或3中所示的存储器201相同的性质)的数据填充。存储器201可以不在包括第一处理元件204a和第二处理元件204b的gpu的本地(例如,在相同的物理芯片上实施)。存储器层级402可以包括l1高速缓存206-1与存储器201之间的一个或多个额外高速缓存层次(例如,
l2高速缓存,或l2和l3高速缓存等——图4中未示出)。图4中所示的处理系统还包括任务复制单元404,所述任务复制单元被配置成复制输入任务,以便形成第一任务和第二任务,如本文将进一步详细描述的。图4中所示的处理系统还包括存储器分配单元406,所述存储器分配单元被配置成分配在处理第一任务和第二任务期间要访问的存储器,如本文将进一步详细描述的。任务复制单元404和存储器分配单元406可以在处理系统的驱动程序(例如,图3中所示的驱动程序309)处实施。任务复制单元404和存储器分配单元406可以在硬件、软件或其任何合适组合中实施。
71.图5示出了根据本文所述的原理的在数据处理系统处处理任务的方法。该任务可以是要根据预定义安全等级处理的安全任务。该任务可以是计算工作组,其包括如本文所述的一个或多个计算工作项。该任务可以是如本文所述的测试任务。
72.在步骤s502中,复制输入任务以便形成第一任务和第二任务。例如,第一任务可以被称为“使命”任务,第二任务可以被称为“安全任务”或“冗余任务”。该任务可以由任务复制单元404复制。在示例中,复制输入任务可以包括创建该任务的副本。例如,第二任务可以由定义第一任务的每个指令或代码行的副本定义。在另一示例中,复制输入任务可以包括调用输入任务进行两次处理(例如,不创建输入任务的副本)。也就是说,输入任务可以由存储在存储器(例如,存储器201)中的程序定义。可以通过提供援引存储器中的该程序的处理元件来调用输入任务以供处理。因此,输入任务可以由任务复制单元404复制,该任务复制单元将对存储器的援引提供给将处理第一任务的处理元件,并且将对存储器的相同援引提供给将处理第二任务的处理元件。
73.在步骤s504中,分配在处理第一任务和第二任务期间要访问的存储器。也就是说,分配存储器201的一个或多个部分以存储在处理第一任务和第二任务期间要访问的数据。存储器可以由存储器分配单元406分配。
74.可以在处理任务期间访问不同类型的数据。一个示例是“只读”数据,其是允许处理任务的处理元件读取但不允许该处理元件写入的数据。也就是说,不允许处理元件向包括只读数据的存储器地址写入。可以在处理任务期间访问的另一类型的数据是“读写”数据,其是允许处理任务的处理元件读取、修改和写回到存储器的数据。也就是说,处理元件可以从存储器读取读写数据,根据正被处理的任务修改该数据,并将该修改的数据写回到存储器中。
75.根据本文所述的原理,在处理第一任务和第二任务期间要访问的所分配的存储器包括第一存储器块、第二存储器块和第三存储器块,所述第一存储器块被配置成存储在处理第一任务期间要访问的读写数据,所述第二存储器块被配置成存储在处理第二任务期间要访问的该读写数据的副本,所述第三存储器块被配置成存储在处理第一任务和第二任务两者期间要访问的只读数据。第一存储器块和第二存储器块可以被称为“读写”缓冲器。第三存储器块可以被称为“只读”缓冲器。在处理第二任务期间,可能不会访问第一存储器块。也就是说,处理第二任务的处理元件可以在处理第二任务期间不修改(例如,将修改的读写数据写入)第一存储器块。在处理第一任务期间,可能不会访问第二存储器块。也就是说,处理第一任务的处理元件可以在处理第一任务期间不修改(例如,将修改的读写数据写入)第二存储器块。
76.存储器分配单元406以这种方式分配第一存储器块和第二存储器块,使得第一处
理元件和第二处理元件不共享对读写数据的相同实例的访问。相反,允许第一处理元件访问存储在第一存储器块中的读写数据,同时允许第二处理元件访问第二存储器块中的该读写数据的副本(例如,复制品)。以这种方式分配第一存储器块和第二存储器块的原因是如果,例如,允许第一处理元件和第二处理元件在处理第一任务和第二任务期间共享对读写数据的访问,并且处理第一任务的第一处理元件读取该数据并且在写回修改的数据之前执行修改该数据的指令集,然后接下来,处理第二任务的第二处理元件试图访问原始读写数据以执行相同指令集,则第二任务实际上将访问修改的读写数据,并且因此执行相同指令集将形成不同输出。如果发生这种情况,那么检查单元208(例如,经由第一检查单元实例208a和第二检查单元实例208b)将识别第一处理元件和第二处理元件的输出中的不匹配,并由此发出故障信号,即使第一处理元件和第二处理元件本身正在正常运行。
77.相比之下,由于第一处理元件和第二处理元件不被允许修改或写入只读数据,因此它们可以被允许共享对只读数据的访问。也就是说,由于只读数据不能被任一处理元件修改,因此可以确保访问被配置成存储只读数据的共享存储器地址的两个处理元件都将访问相同的只读数据,即使一个处理元件在另一个之后访问该数据。因此,存储器分配单元406可以分配第三存储器块,所述第三存储器块被配置成存储在处理第一任务和第二任务两者期间要访问的只读数据。
78.参考图6a、图6b和图6c更详细地描述存储器的分配。图6a示出了已分配了第一存储器块606、第二存储器块608和第三存储器块610的存储器堆600。存储器堆可以是为在数据处理系统处处理一个或多个输入任务而保留的用于存储数据的连续存储器块。存储器堆可以在数据处理系统的存储器201中。图6a示出了被配置成存储在处理第一任务期间要访问的读写数据的第一存储器块606,以及被配置成存储在处理第二任务期间要访问的该读写数据的副本的第二存储器块608。第一存储器块606可以跨越存储器堆600中的第一范围的连续存储器地址。第二存储器块608可以跨越存储器堆600中的第二范围的连续存储器地址。第一存储器块606的每个存储器地址可以从第二存储器块608中的对应存储器地址偏移固定存储器地址步幅612。例如,第一存储器块606的基础(例如,第一)存储器地址可以从第二存储器块608中的对应基础(例如,第一)存储器地址偏移固定存储器地址步幅612。第一存储器块和第二存储器块中的对应存储器地址可以被配置成存储“相同”读写数据。也就是说,读写数据可以存储在第一存储器块606的存储器地址处,而该读写数据的副本可以存储在第二存储器块608的对应存储器地址处。
79.应理解,使用固定存储器地址步幅将第一存储器块和第二存储器块中的对应存储器地址相互映射是仅通过示例给出的,并且可以使用用于在第一存储器块和第二存储器块中的对应存储器地址之间进行映射的其它方法。例如,可以使用查找表将第一存储器块和第二存储器块中的对应存储器地址相互映射。查找表可以存储在存储器201中。存储器分配单元406可以负责用第一存储器块和第二存储器块中的对应存储器地址之间的映射填充查找表。在此示例中,第一存储器块和第二存储器块内的对应存储器地址之间不需要任何固定关系。
80.图6a还示出了第三存储器块610,其被配置成存储在处理第一任务和第二任务两者期间要访问的只读数据。第三存储器块610可以跨越存储器堆600中的第三范围的连续存储器地址。
81.可以在数据处理系统处处理多个输入任务,并且对于第一任务和第二任务的每个相应复制对,固定存储器地址步幅可以是相同的。这可以参考图6b来理解。以此方式,存储器堆600可以被方便地“划分”成第一子堆602和第二子堆604。第一子堆602可以被称为“使命堆”,第二子堆604可以被称为“安全子堆”。第一子堆602的基础(例如,第一)存储器地址可以从第二子堆604的对应基础(例如,第一)存储器地址偏移固定存储器地址步幅612。在此示例中,固定存储器地址步幅612可以方便地定义为存储器堆600的大小的一半。以此方式,当在使命堆602内分配在处理使命任务期间要访问的第一存储器块时,利用该固定存储器地址步幅612,将在安全堆604内分配在处理对应安全任务期间要访问的对应第二存储器块。例如,图6b示出了存储器堆600,其中已经分配了第一存储器块606a、第二存储器块608a和第三存储器块610a以在处理与第一输入任务相关联的第一任务和第二任务期间被访问,并且已经分配了第一存储器块606b、第二存储器块608b和第三存储器块610b以在处理与第二输入任务相关联的第一任务和第二任务期间被访问。
82.如参考图6b描述的那样分配存储器是方便的,因为当为每个输入任务使用相同的固定存储器地址步幅612时,管理存储器资源的分配在计算上更加简单。另外,这使得驱动程序(例如,图3中的驱动程序309)能够通过仅将可用存储器的一半“暴露”(例如,指示其可用性)给发布输入任务的进程(例如,图3中的进程307)来管理存储器资源。例如,如果12gb的存储器实际上可用,则驱动程序309可以向进程307指示6gb的存储器在处理输入任务期间可供访问。进程307不知道驱动程序309被配置成复制在处理输入任务期间要访问的读写数据,并且因此在其请求的存储器量中将不会考虑这种复制。通过仅将可用存储器的一半暴露给进程307,可以确保有足够的存储器可用来(如进程307所请求的)存储在处理任务期间要访问的数据以及读写数据的副本。通过使用相同的固定存储器地址步幅612且始终如图6b所示的在使命堆602中分配用于只读缓冲器610a和610b的存储器,还可以确保,如果空间可用于使命堆602中的读写缓冲器606a、606b,则对应存储器块将始终可用于安全堆604中的该读写缓冲器608a、608b的副本。尽管如此,这种方法的潜在缺点是安全堆604可能变得被稀疏填充。
83.因此,替代地,对于多个输入任务,固定存储器地址步幅可以在第一任务和第二任务的相应复制对之间可变。换句话说,对于由特定输入任务形成的第一任务和第二任务的每个单个对,存储器地址步幅可以是“固定的”,但应用于由不同的相应输入任务形成的第一任务和第二任务的不同对的存储器地址步幅可以是不同的。这可以参考图6c来理解。图6c示出了存储器堆600,其中已经分配了第一存储器块606a、第二存储器块608a和第三存储器块610a以在处理与第一输入任务相关联的第一任务和第二任务期间被访问,并且已经分配了第一存储器块606b、第二存储器块608b和第三存储器块610b以在处理与第二输入任务相关联的第一任务和第二任务期间被访问。此处,第一输入任务的第一存储器块606a与第二存储器块608a之间的固定存储器地址步幅612a大于第二输入任务的第一存储器块606b与第二存储器块608b之间的固定存储器地址步幅612b。每个输入任务的固定存储器地址步幅可以由驱动程序根据可用存储器动态地确定。另外,图6c示出了第三存储器块610a和610b可以例如根据存储器可用性在存储器堆600的任何部分中被动态地分配。此方法是有利的,因为相对于参考图6b描述的方法,存储器堆可以更有效地(例如,较不稀疏地)堆积。即便如此,以这种方式分配存储器在计算上可能不太容易管理。
84.在图6b和图6c中,示出了第一输入任务和第二输入任务各自被分配第三存储器块,所述第三存储器块被配置成存储在处理第一任务和第二任务的每个相应复制对期间要访问的只读数据(例如,框610a和610b)。应理解,未必是这种情况—(例如,在第一输入任务和第二输入任务援引相同的只读数据的情况下)第一输入任务和第二输入任务可以共享对单个第三存储器块的访问,所述单个第三存储器块被配置成存储在处理第一任务和第二任务的每个相应复制对期间要访问的只读数据。
85.返回到图5,在步骤s506中,在第一处理元件204a处处理第一任务并且在第二处理元件204b处处理第二任务,以便分别生成第一输出和第二输出。第一处理元件204a和第二处理元件204b可以相同。也就是说,第一处理元件204a和第二处理元件204b可以包括相同的硬件,并且以相同的方式配置(例如,由图2中的固件207配置,可能在图3中的驱动程序307的指示下)。而且,如本文所述,第一任务和第二任务是复制品。因此,在不存在任何故障的情况下,在分别处理第一任务和第二任务期间在第一处理元件204a和第二处理元件204b中的每一个处发生的计算应是相同的,因此应产生匹配的输出。
86.驱动程序(例如,图3中的驱动程序309)可以负责提交(例如,调度)第一任务和第二任务以分别在第一处理元件204a和第二处理元件204b上进行处理。第一任务和第二任务可以由驱动程序并行(例如,同时)分别提交给第一处理元件204a和第二处理元件204b。如上所述,l1高速缓存206-1可以用来自存储器201的数据(例如,使用来自在步骤s504中分配的存储器的数据)填充,而第一l0高速缓存206-0a和第二l0高速缓存206-0b可以用来自l1高速缓存206-1的数据填充。因此,通过并行提交第一任务和第二任务,数据处理系统可能受益于(例如,在l1高速缓存206-1中)高速缓存在处理这些任务期间要访问的数据。也就是说,通过同时提交第一任务和第二任务,很可能在处理这些任务期间要访问的数据(或其至少一大部分)可以从存储器201一次提取,并高速缓存在l1高速缓存206-1中,以便由第一任务和第二任务两者访问,而不是每个处理元件都必须分别从存储器201提取该数据。
87.尽管第一任务和第二任务可以同时提交给第一处理元件204a和第二处理元件204b,但第一处理元件204a和第二处理元件204b可以被配置成分别独立地处理第一任务和第二任务。也就是说,第一和第二处理元件204a不必针对第一任务和第二任务的每个复制对同步,以便同时逐周期地执行这些任务。
88.如本文所述,在第一处理元件204a处处理第一任务并且在第二处理元件204b处处理第二任务,以便分别生成第一输出和第二输出。输出可以是处理该任务的最终输出,或在处理该任务期间生成的中间输出。例如,中间输出可以是在处理任务期间生成的加载、存储或原子指令中的一者或多者。中间输出可以包括对存储器地址的援引。也就是说,中间输出可以包括访问在处理任务期间要使用的存储器中的数据的请求。
89.将参考图7描述每个检查单元208a、208b和过滤单元400a、400b响应于在第一处理元件204a和第二处理元件204b处处理第一任务和第二任务期间产生的中间输出而执行的示范性步骤集合。
90.在步骤s702中,在检查单元(例如,检查单元208a或208b)处接收在处理元件处处理任务期间产生的输出。在检查单元208a和208b处执行的步骤是相同的,无论它们相关联的处理元件是在处理第一(例如,“使命”)任务还是第二(例如,“安全”)任务。如本文所述,第一任务和第二任务是复制品,并且第一处理元件204a和第二处理元件204b优选地是相同
的,因此,在不存在任何故障的情况下,第一任务和第二任务的处理应当是相同的,并且因此应当产生匹配的输出。
91.在步骤s704中,该检查单元形成是接收到的输出的特征的签名。例如,签名可以是输出数据从处理元件输出时的特征。换言之,签名可以是输出数据在其从处理元件输出时的特征。如本文所述,形成是接收到的输出的特征的签名可以包括分别在该输出上执行校验和、crc、散列和指纹中的一者或多者。优选地,检查单元在从处理元件接收的关于任务的全部输出数据(其可以包括任何援引的存储器地址)上形成签名,但可以在从处理元件接收的关于任务的一些(例如,并非全部)输出数据上形成签名。例如,当复制输入任务以便形成第一任务和第二任务时,(例如,在图3中的驱动程序309处实现的)任务复制单元404可能已经用标志标记了对第一存储器块、第二存储器块和第三存储器块中的存储器地址的任何援引。第一任务和第二任务还可以包括对任务复制单元404未标记的其它存储器地址的援引(例如,对溢出寄存器中的存储器地址的援引),所述援引可以是非决定性的。检查单元可以在输出数据上形成签名,所述签名仅包括该输出数据中存在的已标记的存储器地址。以此方式,可从签名中排除对存储器地址的非决定性援引。签名可以被存储(例如,在图2所示的数据存储区209中),以与针对在处理第一任务和第二任务中的另一个任务期间生成的对应输出形成的签名进行比较。本文中先前已描述了签名的比较以及在适用情况下故障信号的发出。
92.应注意,是接收到的输出的特征的签名优选地在该输出访问存储器层级402之前由检查单元(例如,检查单元208a或208b)形成。亦即,是接收到的输出的特征的签名优选地在该输出访问相应l0高速缓存(例如,l0高速缓存206-0a或206-0b)之前由检查单元(例如,检查单元208a或208b)形成。这是因为l0高速缓存的输出可能不是决定性的,这取决于高速缓存行何时被驱逐,并且因此即使l0高速缓存的输入相同,输出也可能不同。在形成签名之后,检查单元(例如,检查单元208a或208b)可以将中间输出转发到相应的过滤单元(例如,过滤单元400a或400b)上。
93.在步骤s706中,过滤单元(例如,过滤单元400a或400b)可以确定中间输出是否包括对被配置成存储读写数据的存储器地址的援引。在一个示例中,当复制输入任务以便形成第一任务和第二任务时,(例如,在图3中的驱动程序309处实现的)任务复制单元404可能已经用标志标记了对被配置成存储第一任务和第二任务中的读写数据的存储器地址的任何援引,以便使过滤单元能够快速识别这些存储器地址。
94.如果中间输出不包括对被配置成存储读写数据的存储器地址的援引,则可以在步骤s708中将其转发到存储器层级402。
95.如果中间输出确实包括对被配置成存储读写数据的存储器地址的援引,则在步骤s710中,过滤单元(例如,过滤单元400a或400b)可以确定中间输出是否是在处理第二任务期间生成的。也就是说,例如,过滤单元(例如,过滤单元400a或400b)可以确定中间输出是否是从第二处理元件204b接收的。在一个示例中,当提交第二任务以供第二处理元件处理时,驱动程序(例如,图3中的驱动程序309)可以例如通过在与过滤单元400b相关联的寄存器中设置配置位,来将第二过滤单元400b标识为与第二处理元件204b相关联。因此,过滤单元(例如,过滤单元400a或400b)可以通过检查所述配置位来确定中间输出是否是在处理第二任务期间生成的。
96.如果确定中间输出不是在处理第二任务期间生成的(例如,其是在处理第一任务期间生成的),则可以在步骤s712中将其转发到存储器层级402。此时,中间输出可以访问(例如,第一存储器块中的)援引的存储器地址处的读写数据。
97.如果确定中间输出是在处理第二任务期间生成的,则可以在步骤s714中更新对被配置成存储读写数据的存储器地址的援引。也就是说,对第一存储器块中的存储器地址的援引可以由过滤单元400b修改,以便援引第二存储器块中的对应存储器地址。在示例中,这可以取决于固定存储器地址步幅,例如通过将固定存储器地址步幅添加到第一存储器块中的存储器地址上以确定第二存储器块中的对应存储器地址来实现。在另一示例中,这可以通过参考查找表以将第一存储器块中的存储器地址映射到第二存储器块中的对应存储器地址来实现。更新的中间输出可以被转发到存储器层级402上,其中,可以在更新的援引的存储器地址处访问第二存储器块中的对应存储器地址。例如,访问第二存储器块中的对应存储器地址可以包括从第二存储器块读取读写数据并将该数据返回到第二处理元件。在示例中,从存储器层级402返回的数据可以不包括对存储器地址的援引,因此不需要经由过滤单元400b路由。在另一示例中,访问第二存储器块中的对应存储器地址可以包括向对应存储器地址写入由第二处理元件修改的读写数据。
98.亦即,在确定中间输出:(i)包括对被配置成存储读写数据的存储器地址的援引,并且(ii)是在处理第二任务期间生成的时,过滤单元(例如,过滤单元400a或400b)可以更新中间输出。为此,应理解,步骤s706和s710可以以与参考图7描述的顺序相反的顺序执行。
99.应注意,在参考图7描述的示例中,过滤单元400a和400b在逻辑上定位在检查单元208a和208b之后。以此方式,更新由第二处理元件在输出中援引的读写存储器地址不会导致由检查单元208a和208b形成的签名中的不一致。应理解,情况不一定如此。例如,检查单元208a和208b可以被配置成形成不考虑中间输出中援引的存储器地址的签名。在此示例中,过滤单元400a和400b可以分别在逻辑上定位在检查单元208a和208b之前。替代地,在此示例中,驱动程序(例如,图3中的驱动程序309)可以在提交对第二任务中的第一存储器块中的存储器地址的任何援引以在第二处理元件204b处进行处理之前对其进行更新。在这种情况下,不需要存在过滤单元400a和400b。
100.在对第一任务和第二任务的处理完成并且没有响应于任何中间输出或最终输出发出故障信号(例如,所有相应的中间输出和最终输出都匹配)的情况下,则第一任务或第二任务的最终经处理的输出可以被视为输入任务的经处理的输出。
101.如图4中所示,第一任务和第二任务由第一处理元件和第二处理元件处理,所述第一处理元件和所述第二处理元件是不同的处理元件。还应理解,在根据本文所述的原理的其它示例中,第一任务和第二任务可以由相同的处理元件,例如在不同时间处理。也就是说,第一任务和第二任务可以被提交以由相同的处理元件进行处理。在第一轮次中,处理元件可以处理第一任务。与处理元件相关联的检查单元可以针对在处理第一任务期间生成的输出形成签名,并且存储这些签名。在第二轮次中,处理元件可以处理第二任务。检查单元可以针对在处理第二任务期间生成的输出形成签名,并将其与针对第一任务形成的相应的存储签名进行比较。与处理元件相关联的过滤单元可能能够确定处理元件是在执行第一轮次还是第二轮次,并且更新对存储器地址的援引,所述存储器地址被配置成存储在处理第二任务期间生成的中间输出中的读写数据。例如,与处理元件相关联的寄存器中的配置位
可以用来指示该处理元件是在执行第一轮次(例如,二进制“0”)还是第二轮次(例如,二进制“1”)。
102.在另一示例中,图4中所示的数据处理系统可以另外包括第三处理元件、第三检查单元、第三过滤单元和第三l0高速缓存。(例如,在图3中的驱动程序309处实现的)任务复制单元404可以复制输入任务,以便另外形成第三任务。存储器分配单元406可以分配另外包括第四存储器块的存储器,所述第四存储器块被配置成存储在处理第三任务期间要访问的读写数据的副本。本文所述的原理可以应用于在第三处理元件处处理该第三任务。在此示例中,即使在第一处理元件、第二处理元件和第三处理元件中的一个经历故障时,也可以给出处理输入任务的输出。也就是说,输入任务的输出可以作为匹配的两个处理元件的输出给出,而提供不匹配输出的另一处理元件可以被认为有故障。
103.在又一示例中,在处理第一任务和第二任务期间要访问的所分配的存储器还可以包括被配置成存储在处理第一任务期间生成的只写数据的第四存储器块和被配置成存储在处理第二任务期间生成的对应只写数据的第五存储器块。替代地,在处理第一任务和第二任务期间要访问的所分配的存储器还可以包括被配置成仅存储在处理第一任务期间生成的只写数据的第四存储器块。在此示例中,过滤单元400b可以被配置成过滤掉(例如,阻止)处理第二(例如,“安全”或“冗余”)任务的第二处理元件对只写数据的写入,以便减小与处理第二任务相关联的延迟和/或节省带宽。在此示例中,在处理第一任务期间生成的最终输出可以被用作处理输入任务的输出(假设在处理第一任务和第二任务期间未发出故障信号)。
104.图2到图4的数据处理系统被示为包括多个功能块。这仅是示意性的,并不旨在限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应当理解,由数据处理系统形成的本文中描述的中间值不需要由数据处理系统在任何时间点物理地生成,并且可以仅仅表示方便地描述由数据处理系统在其输入与输出之间执行的处理的逻辑值。
105.本文中描述的数据处理系统可以包含在集成电路上的硬件中。本文中描述的数据处理系统可被配置为执行本文所述的任何方法。一般来讲,上文所述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如,固定逻辑电路系统)或它们的任何组合中实施。本文可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实施方案的情况下,模块、功能、部件、元件、单元、块或逻辑表示程序代码,所述程序码在处理器上执行时执行指定任务。本文中所描述的算法和方法可以由执行码的一个或多个处理器执行,所述码使处理器执行算法/方法。计算机可读存储介质的示例包含随机存取存储器(ram)、只读存储器(rom)、光盘、闪存存储器、硬盘存储器以及可以使用磁性、光学和其它技术来存储指令或其它数据并且可以由机器存取的其它存储器装置。
106.如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如c、java或opencl等编程语言码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其它软件环境中被适当地执行、处理、解释、编译、
运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由所述代码指定的任务。
107.处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是或包括任何种类的通用或专用处理器,诸如cpu、gpu、nna、片上系统、状态机、媒体处理器、专用集成电路(asic)、可编程逻辑阵列、现场可编程门阵列(fpga)等。计算机或计算机系统可以包括一个或多个处理器。
108.本发明还意图涵盖限定如本文所述的硬件的配置的软件,诸如硬件描述语言(hdl)软件,用于设计集成电路或用于配置可编程芯片以执行所需功能。也就是说,可以提供一种计算机可读存储介质,其上编码有集成电路定义数据集形式的计算机可读程序代码,所述集成电路定义数据集当在集成电路制造系统中处理(即运行)时,将系统配置为制造被配置为执行本文所述的任何方法的数据处理系统,或者制造本文所述的包括任何装置的数据处理系统。集成电路定义数据集可以是例如集成电路描述。
109.因此,可以提供一种在集成电路制造系统处制造如本文所述的数据处理系统的方法。此外,可以提供一种集成电路定义数据集,所述集成电路定义数据集当在集成电路制造系统中处理时使制造数据处理系统的方法得以执行。
110.集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包含作为寄存器传输级(rtl)代码,作为高级电路表示法(诸如verilog或vhdl),以及作为低级电路表示法(例如,oasis(rtm)和gdsii)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如rtl)可以在计算机系统上处理,所述计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,所述软件环境包括电路元件的定义和用于组合这些元件以便生成由所述表示法定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置为生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
111.现在将关于图8描述在集成电路制造系统处处理集成电路定义数据集以便将系统配置为制造数据处理系统的示例。
112.图8示出了集成电路(ic)制造系统802的示例,该集成电路制造系统被配置成制造如本文中的任何示例中描述的数据处理系统。特别地,ic制造系统802包括布局处理系统804和集成电路生成系统806。ic制造系统802被配置为接收ic定义数据集(例如,定义如本文中的任何示例中描述的数据处理系统)、处理ic定义数据集,以及根据ic定义数据集来生成ic(例如,其包含如本文中的任何示例中描述的数据处理系统)。ic定义数据集的处理将ic制造系统802配置为制造集成电路,所述集成电路包含如本文中的任何示例中描述的数据处理系统。
113.布局处理系统804被配置为接收和处理ic定义数据集以确定电路布局。根据ic定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成rtl代码以确定要生成的电路的门级表示,例如就逻辑部件(例如nand、nor、and、or、mux和flip-flop部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统804确定了电路布
局时,它可以将电路布局定义输出到ic生成系统806。电路布局定义可以是例如电路布局描述。
114.ic生成系统806根据如本领域已知的电路布局定义生成ic。例如,ic生成系统806可以实现生成ic的半导体器件制造工艺,其可以包括光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,其可以在光刻工艺中用于根据电路定义来生成ic。替代性地,提供至ic生成系统806的电路布局定义可以是计算机可读代码的形式,ic生成系统806可以使用该代码形成用于生成ic的适当掩模。
115.由ic制造系统802执行的不同处理可以全部在一个位置实现,例如,由一方。替代性地,ic制造系统802可以是分布式系统,使得过程中的一些可以在不同位置执行,且可以由不同各方执行。例如,以下级中的一些可以在不同位置和/或由不同方来执行:(i)合成表示ic定义数据集的rtl代码,以形成要生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩模;以及(iv)使用掩模来制造集成电路。
116.在其他示例中,在集成电路制造系统处对集成电路定义数据集进行处理可以将系统配置为制造数据处理系统,而不用对ic定义数据集进行处理以便确定电路布局。例如,集成电路定义数据集可以定义可重新配置的处理器诸如fpga的配置,并且对所述数据集的处理可以将ic制造系统配置成(例如,通过将配置数据加载到fpga)生成具有所述定义的配置的可重新配置的处理器。
117.在一些实施例中,当在集成电路制造系统中被处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文中描述的装置。例如,由集成电路制造定义数据集以上文参考图8描述的方式对集成电路制造系统的配置可以使得制造如本文所述的数据处理系统。
118.在一些示例中,集成电路定义数据集可以包含在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图8所示的实例中,ic生成系统可以进一步由集成电路定义数据集配置成在制造集成电路时根据在集成电路定义数据集中定义的程序代码将固件加载到所述集成电路上,或者以其它方式向集成电路提供与集成电路一起使用的程序代码。
119.与已知的实现方式相比,在本技术中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实现的方法中)的实现方式可以引起性能改进。性能改进可以包含计算性能提高、延迟减少、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和系统(例如,在集成电路中)期间,可以在性能改进与物理实施方案之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实施方案的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,在本技术中阐述的引起装置、设备、模块和系统的物理实施方案的改进(诸如硅面积减小)的概念可以针对性能提高进行折中。例如,这可以通过在预定义面积预算内制造模块的多个示例来完成。
120.申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何
问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1