掌桥专利:专业的专利平台
掌桥专利
首页

用于检测可重配置硬件系统中的芯片内通信错误的系统和方法

文献发布时间:2024-04-18 20:01:23


用于检测可重配置硬件系统中的芯片内通信错误的系统和方法

相关申请的交叉引用

本申请要求2021年11月11日提交的名称为“SECURITY AND RELIABILITYEXTENSION FOR INTRA-CHIP COMMUNICATION PROTOCOL DEPLOYED ON MULTI-TASK/TENANTRECONFIGURABLE HARDWARE SYSTEM(用于部署在多任务/租户可重配置硬件系统上的芯片内通信协议的安全性和可靠性扩展)”的第63/278,396号美国临时申请的优先权和权益,该美国临时申请的全部内容通过引用合并于此。

技术领域

根据本公开的实施例的一个或更多个方面涉及错误检测,更具体地,涉及检测多任务/多租户可重配置硬件系统中的芯片内通信错误。

背景技术

多任务/多租户(统称为多租户)现场可编程门阵列(FPGA)可以支持来自同一用户的多个应用,或者多个用户可以将其应用部署为共存于一个FPGA芯片中。多租户FPGA是一种用于在数据中心和/或云中进行部署以推动硬件加速的很有前途的架构。

本背景技术部分中公开的上述信息仅用于增强对本公开背景的理解,因此,其可能包含不构成现有技术的信息。

发明内容

本公开的实施例针对一种用于对地址信道进行错误检测的方法。该方法包括生成令牌、在源处将令牌应用于请求、以及生成第一结果。将所述请求与第一结果一起通过地址信道发送到目的地。在目的地处确定是否发生了与所述请求相关联的错误。确定是否发生了错误包括:通过地址信道接收与所述请求对应的接收到的请求;将第一结果与接收到的请求一起接收;将令牌应用于接收到的请求并生成第二结果;将第一结果与第二结果进行比较;以及响应于比较发送信号。

根据一个实施例,令牌是存储在源和目的地处的预设令牌。

根据一个实施例,所述请求是读数据或写数据的请求之一,其中所述请求包括用于读取或写入数据的地址,该方法还包括:响应于所述请求,通过数据信道传送数据,其中数据信道不同于地址信道。

根据一个实施例,将令牌应用于所述请求包括在令牌和所述请求之间执行XOR运算,将令牌应用于接收到的请求包括在令牌和接收到的请求之间执行XOR运算。

根据一个实施例,接收到的请求与所述请求相同,并且所述信号指示没有与所述请求相关联的错误,其中响应于所述信号,源通过地址信道发送第二请求。

根据一个实施例,其中接收到的请求不同于所述请求,并且所述信号指示与所述请求相关联的错误,其中响应于所述信号,源通过地址信道重新发送所述请求。

根据一个实施例,源和目的地是多租户可重配置硬件系统的逻辑块的接口。

根据一个实施例,多租户可重配置硬件系统是多租户现场可编程门阵列。

本公开的实施例还针对一种用于对数据信道进行错误检测的方法,其包括:生成第一检查位和第二检查位;通过数据信道向目的地发送具有第一检查位的第一数据和具有第二检查位的第二数据;在目的地处确定是否发生了与第一数据和第二数据相关联的错误,其中确定是否经发生了错误包括:基于第一检查位和第二检查位来执行检查;以及响应于检查发送信号。

根据一个实施例,第一检查位与第二检查位互补。

根据一个实施例,执行检查包括在第一检查位和第二检查位之间执行XOR运算并产生值1,其中所述信号指示没有与第一数据和第二数据相关联的错误。

根据一个实施例,响应于检查信号,源通过数据信道发送第三数据。

根据一个实施例,执行检查包括在第一检查位和第二检查位之间执行XOR运算并产生值0,其中所述信号指示与第一数据和第二数据相关联的错误。

根据一个实施例,响应于所述信号,源重新发送第一数据和第二数据。

根据一个实施例,第一数据和第二数据在单个事务中以突发模式传输。

根据一个实施例,该方法还包括:由目的地通过地址信道接收与第一数据和第二数据相关联的请求,其中地址信道不同于数据信道。

根据一个实施例,源和目的地是多租户现场可编程门阵列的逻辑块的接口。

根据一个实施例,该方法还包括:通过第一线传输第一数据和第二数据;将传播延迟添加到不同于第一线的第二线;以及通过第二线传输第一检查位和第二检查位。

本公开的实施例还针对一种可重配置硬件系统,其包括:处理芯片,包括用于运行第一应用和第二应用的多个逻辑块;以及通信链路,用于在所述多个逻辑块之间提供通信。处理芯片被配置为:生成令牌;在源处将令牌应用于请求,并生成第一结果;将所述请求与第一结果一起通过通信链路的地址信道发送到目的地;在目的地处,确定是否发生了与所述请求相关联的错误,其中在确定是否发生了错误时,处理芯片还被配置为:通过地址信道接收与所述请求对应的接收到的请求;将第一结果与接收到的请求一起接收;将令牌应用于接收到的请求,并生成第二结果;将第一结果与第二结果进行比较;以及响应于比较发送信号。

本公开的实施例还针对一种可重配置硬件系统,其包括:处理芯片,包括用于运行第一应用和第二应用的多个逻辑块;以及用于在所述多个逻辑块之间提供通信的通信链路。处理芯片被配置为:生成第一检查位和第二检查位;通过通信链路的数据信道向目的地发送具有第一检查位的第一数据和具有第二检查位的第二数据;在目的地处,确定是否发生了与第一数据和第二数据相关联的错误,其中在确定是否发生了错误时,处理芯片还被配置为:基于第一检查位和第二检查位执行检查;以及响应于检查发送信号。

当关于以下详细说明、所附权利要求和附图考虑时,将更全面地理解本公开的实施例的这些和其他特征、方面和优点。当然,本发明的实际范围由所附权利要求限定。

附图说明

当前实施例的非限制性和非穷尽性实施例参照以下附图进行描述,其中相同的附图标记贯穿各视图指代相同的部分,除非另有说明。

图1是根据一个实施例的多租户可重配置硬件系统的框图;

图2是根据一个实施例的现场可编程门阵列(FPGA)的概念框图;

图3是根据一个实施例的用于图2的FPGA的逻辑块之间的芯片内通信的示例性通信信道的框图;

图4A-图4B是根据一个实施例的握手过程的流程图,该握手过程包括对读地址信道和写地址信道的错误检查;

图5是根据一个实施例的由接收器参与的错误检测方法的流程图,该错误检测方法用于检测通过读地址信道和写地址信道接收的请求的错误;

图6是根据一个实施例的握手过程的流程图,该握手过程包括对读数据信道和写数据信道的错误检查;以及

图7是根据一个实施例的通过源的错误检测方法的流程图,该错误检测方法用于检测读数据信道和写数据信道上的数据传输错误。

具体实施方式

在下文中,将参照附图更详细地描述示例实施例,在附图中,相同的附图标记始终指代相同的元件。然而,本公开可以以各种形式体现,并且不应被解释为仅限于这里示出的实施例。更确切地,这些实施例作为示例提供,使得本公开将是透彻且完整的,并将向本领域技术人员充分传达本公开的方面和特征。因此,可以不描述对于本领域普通技术人员完整理解本公开的方面和特征不必要的过程、元件和技术。除非另有说明,否则贯穿附图和书面描述,相同的附图标记表示相同的元件,因此,可以不再重复其描述。此外,在附图中,为了清楚起见,可以夸大和/或简化元件、层和区域的相对尺寸。

现场可编程阵列(FPGA)可以用于加速各种应用领域中的计算和数据管理任务。随着对硬件加速需求的增加,可以考虑多租户FPGA。例如,在云设定中对于协同定位不同租户的工作负载并提高FPGA的利用率,多租户FPGA可以是有用的。

一般而言,FGPA芯片包括使用芯片内通信协议彼此通信的各种逻辑块/模块。一种这样的协议是高级微控制器总线架构(AMBA)高级可扩展接口(AXI)协议。AMBA AXI协议的流行可以归因于其在模块之间提供高频、高带宽和高速数据通信的能力。然而,诸如AMBAAXI的芯片内通信协议的缺点在于,它一般是针对单租户FPGA使用的。此外,该协议支持FPGA模块的芯片内连接,该连接的范围大约在亚微米级。因此,可能不需要确保通信的安全性和可靠性,因为任何错误的传输都可以通过重传数据来解决。

然而,对于多租户可重配置硬件系统(诸如FPGA),会期望安全性和可靠性措施。在多租户FPGA中,多个任务或租户可以共存于一个FPGA芯片上。不同的租户可以在共享某些硬件资源的同时,灵活地编程并运行他们自己的应用。

配电网络/系统(PDN/S)可以典型地作为驱动FPGA的单一共享电源起作用。共享电源的一个问题是功率边信道(诸如例如FPGA上不同电路/应用之间的芯片内功率竞争)可能导致电压波动。在多租户设定中,一个租户的应用引起的侵略性的FPGA使用可能导致电源电压降。电源电压降可能是由共同租户恶意引起的,以将故障注入设备(例如,故障注入攻击)来访问例如特权信息。会期望扩展芯片内通信协议以提供错误检测来检测例如故障注入攻击。

图1是根据一个实施例的多租户可重配置硬件系统的框图。该系统包括可重配置的处理设备100,诸如例如FPGA。在下文中,可重配置的处理设备将被简称为FPGA 100。然而,本公开的实施例不限于此,并且可以扩展到其他处理设备,其逻辑可以例如在运行时被重新配置和重新使用以支持用户可能期望的任何工作负载。

FPGA 100可以联接到外部的芯片外存储器,诸如动态随机存取存储器(DRAM)102和非易失性存储器(NVM)/存储设备104。存储设备104可以是例如固态驱动器(SSD)。FPGA100也可以联接到电源系统112。电源系统112可以被配置为向整个FPGA供电。

在一个实施例中,FPGA100可以部署在数据中心和/或云中。FPGA100可以服务多个用户/租户106a、106b(统称为106),允许多个用户/租户106将软件应用108a、108b(统称为108)部署为共存于同一FPGA上。应用108可以是例如数据处理应用、图形处理应用、机器学习应用等。租户106可以通过作为独立节点或与主机联接的数据通信网络(例如,互联网)110来访问FPGA100。

由于针对FPGA的共租,特定租户106的应用108可能易受攻击(例如,被另一租户攻击)。攻击者可以通过发起例如故障注入攻击来获得对特定租户的应用108的未授权访问。攻击者发起的故障注入攻击可以利用共享的电源系统112。例如,FPGA100的共同租户(例如,租户106a)可以通过侵略性的FPGA使用而导致由电源系统112供应给FPGA的电力的电压降。电压降可能使其他共同租户(例如,租户106b)容易受到导致该电压降的租户的攻击。

图2是根据一个实施例的FPGA 100的更详细的概念框图。FPGA包括一个或更多个逻辑块/模块200a-200e(统称为200),其包括用于运行租户106的应用108的电路。一个或更多个块200也被称为知识产权(IP)核心/块,并且可以是形成FPGA的构建块的可重用的多条逻辑。逻辑块可以通过数据通信链路202a-202c(统称为202)彼此通信。链路202a-202c上的通信可以遵循芯片内通信协议,诸如AMBA AXI。尽管AMBA AXI用作示例,但是本公开的实施例不限于此,并且可以扩展到本领域技术人员将理解的其他芯片内通信协议。

在一个实施例中,逻辑块可以由租户106访问,以运行其对应的应用108。在一个示例中,租户A 106a运行应用108a(图1),租户B 106b运行应用108b(图1)。模块1 200a可以是时分复用模块,其被配置为为租户A 106a和租户B 106b两者调度时间,以分开地且独立地处理其用于应用108a和108b的数据。模块2 200b和模块3 200c可以保存来自租户A 106a的数据并运行应用108a。模块4 200d和模块5 200e可以保存来自租户B 106b的数据并运行应用108b。可以例如通过链路202a和/或链路202b发起对租户的攻击。

在一个实施例中,芯片外存储器(例如,DRAM 102和NVM 104)在租户106之间进行分区,用于为租户存储数据。一个或更多个逻辑块200可以在运行应用108时从芯片外存储器访问数据。

图3是根据一个实施例的用于逻辑块200之间的芯片内通信的示例性通信信道的框图。通过通信信道的通信可以遵循由AMBA AXI协议公布的协议。

在一个实施例中,五个分离的通信信道用于芯片内通信:读地址300;写地址302;读数据304;写数据306;以及写响应308。通信信道可以类似于Arm有限公司,“Introductionto AMBA AXI4(AMBA ax4概论)”,2020年第01期(其内容通过引用合并于此)所公开的通信信道。使用分开的地址信道和数据信道进行读传输和写传输可以有助于使接口的带宽最大化。例如,读序列可以与写序列同时发生。

在一个实施例中,在主管(manager)310和下属(subordinate)312之间建立信道300-308。主管310和下属312可以是用于逻辑块200(例如,IP块0 320a和IP块1 320b)之间通信的通信接口。为了使用信道之一来通信,握手过程可以使用“就绪”信号和“有效”信号首先进行。例如,在参与读地址信道300中的握手时,信道源(例如,主管310)可以通过该信道提供有效信号,信道接收器(例如,下属312)可以通过同一信道提供就绪信号。在有效信号和就绪信号都激活之后,可以在地址信道300上发生具有要读取的地址的请求的传输。应理解,主管310和下属312作为源或接收器的角色可以取决于所传输的数据流而变化。例如,对于读地址信道300、写地址信道302和写数据信道306,主管310是源,而下属是接收器312,而对于读数据信道304,下属312是源,而主管310是接收器。

在握手过程期间,现有技术的通信内协议可能不参与错误检查。尽管这对于单租户FPGA来说是可接受的,但是对于多租户FPGA来说,会期望错误检测。因此,在一个实施例中,读地址信道300、写地址信道302、读数据信道304和写数据信道306中的握手过程用错误检测机制来增强。

图4A-图4B是根据一个实施例的增强握手过程的流程图,该增强握手过程具有用于读地址信道300和写地址信道302的错误检测。图4A是用于主管310的握手过程,该主管310担任请求的源的角色。

在块400处,主管310声明读地址有效信号(ARVALID)或写地址有效信号(AWVALID),用于指示有效请求可用。请求可以包括例如所请求数据的地址、源标识符、突发长度和/或大小。在一个实施例中,请求由数据缓冲器或有限状态机生成。

在块402处,取决于数据是要读取还是写入,主管310(源)在读地址信道300或写地址信道302上向下属312(接收器)发送请求。

在块404,主管310确定是否发生了与请求相关联的错误。就此而言,主管310可以检查来自下属312的响应信号。如果响应信号是指示没有错误的信号(例如,ARREADY信号或AWREADY信号),则在块406处,源发送下一个请求。

然而,如果来自接收器的响应信号是指示错误的信号,则源在块408处发送命令以重新发送请求,并在块410处增加全局错误计数器。在一个实施例中,全局计数器保存FPGA在使用通信信道300-306的芯片内通信期间遇到的错误的顺序编号。全局计数器可以有助于识别攻击(例如,故障注入攻击),即使攻击的频率低。例如,在精心设计的攻击中,对手可能以较低的频率发起攻击,该较低的频率被设计为避免FPGA过载保护(例如,关闭),但不停止信道内数据传输。当检测到由于此类攻击导致的错误的阈值编号时,可以向管理员发送通知,和/或可以禁用FPGA 100。

图4B是根据一个实施例的用于下属312(接收器)的握手过程。响应于在块450处检测到声明了ARVALID信号或AWVALID信号,下属312在块452处在读地址信道300或写地址信道302上接收来自主管310(源)的请求,这取决于数据是要被读取还是写入。

在块454处,下属312确定是否发生了与请求相关联的错误。就此而言,下属312可以应用错误检测机制,该错误检测机制使用共享的密钥/令牌来检查接收到的请求的完整性。如果检测到错误,则在块456处发送响应信号,其指示错误和/或请求重复请求。然后,下属312可以等待请求被重新发送。在一个实施例中,响应于检测到错误,由下属312而不是主管310增加全局计数器。在这样的实施例中,块410由下属312而不是主管310执行。

如果在块454处确定在接收到的请求中没有出现错误,则在块458处,下属发送指示没有错误的信号(例如,ARREADY信号或AWREADY信号)。

图5是根据一个实施例的由接收器480(例如,下属312)参与的错误检测方法的流程图,该错误检测方法用于检测由源482(例如,主管310)通过读地址信道300和写地址信道302发送的请求的错误。在一个实施例中,共享的令牌500被生成并预存在各个逻辑块200中。例如,令牌可以在FPGA100的配置期间被存储。在一个实施例中,可以取决于比特流的类型来生成不同的令牌,并且可以基于当前事务中涉及的比特流的类型为错误检测选择适当的令牌。例如,读请求可以调用与写请求不同的令牌。令牌的大小可以与请求相同,或者是请求的大小的一部分。

源482可以将令牌(T)500应用于生成的请求(R)502,以生成源检查结果(C)504。在一个实施例中,主管310在令牌500和请求502之间执行XOR运算,以如下计算源检查结果504:

接收器480接收接收到的请求(R’)506和接收到的检查值(C’)508。下属312在共享的令牌500和接收到的请求(R’)506之间执行XOR运算,以计算下属检查结果(C”)。将接收的检查值(C’)508与下属检查结果C”进行比较,以确定它们是否相等。如果答案为是,如在块510中确定的,则认为接收的请求(R’)506等于发送的请求(R)502。因此,在发送的请求中没有检测到错误,并且下属312发送ARREADY信号或AWREADY信号,用于提示源482发送下一个请求512。

如果答案为否,则检测到错误,并且下属312发送错误信号,用于提示主管312(例如,源482)重新发送514请求。以这种方式,在发送完成地址信道300、302上的握手过程的ARREADY信号或AWREADY信号之前,下属312等待接收无错误请求。

图6是根据一个实施例的增强握手过程的流程图,该增强握手过程包括对读数据信道304和写数据信道306的错误检查。响应于读地址信道300或写地址信道上的成功握手,可以调用数据信道304、306上的握手。

在块600处,源声明读有效信号(RVALID)或写有效(WVALID)信号,其用于指示源可获得有效数据。在一个实施例中,下属312响应于读请求担任数据传输的源的角色,并且主管310担任接收读数据的接收器的角色。对于写请求,主管310可以是要写入的数据的源,而下属312可以是接收器。

在一个实施例中,要传输的数据包括基于在通过读地址信道300或写地址信道302传输的读请求或写请求中识别的单个地址的多个数据项。可以在单个事务中以突发模式传输多个数据项。以突发模式传输的数据项可以被称为拍(beat)。

在块602处,源通过读数据信道304或写数据信道306发送数据项(拍),接收器在块604处接收发送的数据项。

到识别出与突发相关联的最后一个数据项为止,发生突发中数据项的发送和接收。就此而言,在块606处,源确定是否识别出最后的数据。如果答案为否,则发送和接收下一个数据项。

如果答案为是,则在块608处,源确定对于传输的数据是否检测到错误。就此而言,源可以检查来自接收器的响应信号。如果响应信号是指示没有错误的信号(例如,RREADY信号或WREADY信号),则在块610处,源发送下一个数据突发。

然而,如果来自接收器的响应信号是指示错误的信号,则源在块612处发送命令,并且数据突发被重新发送到目的地。在一个实施例中,在块614处,源还增加突发重复计数器。在一个实施例中,突发重复计数器保存用于单个数据事务的突发重复的顺序编号(running number)。突发重复计数器可以有助于识别高频攻击(例如,故障注入攻击),其中对手阻止数据突发传输中的进展。当由于此类攻击而造成突发重复的阈值编号时,可以向管理员发送通知,和/或可以禁用FPGA 100。在一个实施例中,在达到阈值编号之前成功的数据传输重置突发重复计数器。

图7是根据一个实施例的通过源700的错误检测方法的流程图,该错误检测方法用于检测读数据信道304和写数据信道306上的数据传输错误。在一个实施例中,源700将待传输的数据项存储在突发缓冲器702中。可以基于通过读地址信道300或写地址信道302传输的读数据请求或写数据请求来识别数据项。

在一个实施例中,源700将奇偶校验位(也称为检查位)704添加到数据的每一拍,并将填充后的拍发送给接收器706。在一个实施例中,选择奇偶校验位,使得要添加到数据的两个连续拍的两个连续奇偶校验位彼此互补(例如,01或10)。

源700可以通过数据信道304、306将突发缓冲器702中的数据项发送到接收器706。在一个实施例中,奇偶校验位通过奇偶校验检查线708分开传输。当接收到了突发中的最后的数据时,接收器706可以启动奇偶校验检查功能。

在一个实施例中,奇偶校验检查功能在两个连续的奇偶校验位710a-710c之间执行XOR运算,并进一步对XOR运算的结果应用AND运算,以输出如下的最终检查结果:

其中N是突发长度并且是偶数。

如果检查结果的值为1,如块712中所确定的,则没有检测到错误,并且接收器706发送AREADY信号或WREADY信号,用于提示源700发送下一个突发714。

如果检查结果的值为0,则检测到错误,并且接收器706发送错误信号,用于提示源700重新发送716数据突发。以这种方式,在发送完成数据信道304、306上的握手过程的RREADY信号或WREADY信号之前,接收器706等待数据突发的无错误数据传输。

在一个实施例中,FPGA100包括用于使假否定检查结果的可能性最小化的措施。当通过数据信道304、306传输的数据被破坏但奇偶校验位没有被破坏时,可能出现假否定,导致检查结果取值为1,这指示没有错误。为了使假否定的可能性最小化,奇偶校验检查线708的负载增大,使得奇偶校验检查线708比数据信道304、306对攻击(例如,故障注入攻击)更敏感。在一个实施例中,通过将奇偶校验检查线连接到增加奇偶校验位传输的传播延迟的进位链(例如,CARRY4),增加奇偶校验检查线708的负载。

本领域技术人员应认识到,通过允许通信中的错误检测、数据召回、以及针对感知到的故障注入攻击发送警报,如在此描述的用于检测芯片内通信错误的系统和方法提供了优于现有技术的芯片内通信协议的优势。错误检测具有低成本,并且不需要额外复杂的硬件设计来解决故障。

在此使用的术语仅出于描述特定实施例的目的,不旨在限制本发明构思。此外,除非明确说明,否则在此描述的实施例并不相互排斥。在此描述的实施例的方面可以在一些实施方式中组合。

如在此所使用的,术语“基本上”、“约”和类似术语用作近似术语,而非程度术语,并且旨在说明测量值或计算值的将由本领域普通技术人员认识到的固有偏差

如在此所使用的,单数形式“一”也旨在包括复数形式,除非上下文清楚地另行指示。还将理解,术语“包括”和/或“包含”当在本说明书中使用时,指明所陈述的特征、整体、步骤、操作、元件和/或部件的存在,但不排除一个或更多个其他特征、整体、步骤、操作、元件、部件和/或其组的存在或添加。如在此所使用的,术语“和/或”包括一个或更多个相关所列举项目的任何和所有组合。当在元素列表之后时,诸如“中的至少一个”的表述修饰整个元素列表,而不修饰列表的个别元素。此外,当描述本发明构思的实施例时,“可以”的使用是指“本公开的一个或更多个实施例”。此外,术语“示例性”旨在指代示例或例子。如在此所使用的,术语“使用”、“使用……的”和“被使用”可以被认为分别与术语“利用”、“利用……的”和“被利用”同义。

将理解,当元件或层被称为“在”另一元件或层“上”、“连接到”另一元件或层、“联接到”另一元件或层、或“邻近”另一元件或层时,它可以直接在该另一元件或层上、直接连接到该另一元件或层、直接联接到该另一元件或层、或直接邻近该另一元件或层,或可以存在一个或更多个居间的元件或层。相比之下,当元件或层被称为“直接在”另一元件或层“上”、“直接连接到”另一元件或层、“直接联接到”另一元件或层、或“紧邻”另一元件或层时,不存在居间的元件或层。

尽管已经在此具体描述并示出用于检测芯片内通信错误的系统和方法的示例性实施例,但是许多修改和变化对于本领域技术人员而言将是明显的。因此,将理解,根据本公开的原理构建的用于检测芯片内通信错误的系统和方法可以按在此具体描述以外的方式体现。本公开还在所附权利要求及其等同形式中限定。

相关技术
  • 基于动态IP黑名单的网络入侵主动防御系统及方法
  • 一种基于病毒免疫的网络主动防御入侵检测方法及系统
技术分类

06120116548291