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

安全卷积神经网络(CNN)加速器

文献发布时间:2024-05-31 01:29:11


安全卷积神经网络(CNN)加速器

分案申请信息

本申请是申请日为2018年5月24日、申请号为201880033264.3、发明名称为“安全卷积神经网络(CNN)加速器”的发明专利申请案的分案申请。

技术领域

所揭示的实施例涉及卷积神经网络(CNN),特别涉及安全CNN加速器。

背景技术

卷积神经网络(CNN)为已成功地应用于分析视觉成像的一类深度前馈人工神经网络。因此,CNN提供用于已经证实为在例如图像识别和分类的领域中有效的神经网络的类别中的一个。举例来说,由于此类技术可自动地学习三维(3D)图像特征而无需手动地设计所述特征以捕获深度不变性或变形,因此CNN普遍地用于识别图像物体。

另外,与其它图像分类算法相比,CNN可使用相对较少的预处理步骤。CNN可学习或使用在传统算法中手工设计的系数滤波器。然而,CNN的使用会影响启动时间,且在信号处理期间易受恶意攻击。因此,避免CNN系数滤波器或权重、输入和输出暴露于未经授权存取为重要的。

发明内容

本文所描述的为一种用于多层CNN数据的基于CNN的信号处理的技术。输入图像帧可以是多层CNN数据的第一层的输入。多层CNN数据可包含输入层、第一隐藏层、第二隐藏层(或多个隐藏层)和输出层。

基于CNN的信号处理可包含从多层CNN数据的一层(例如第一层、第一隐藏层等)接收加密输出。随后对所接收的加密输出进行解密,以形成对多层CNN数据的后续层(例如第二层、隐藏层、最终输出层等)的解密输入。解密输入与对应解密权重的卷积可产生第二隐藏层输出,所述第二隐藏层输出可经加密且用作对多层CNN数据的另一隐藏层的加密输入。在信号处理多层CNN数据的层之后,可产生图像分类作为最终输出。

对于输入及/或权重的解密和输出的加密,特定密钥可经存储且用于如本文中所描述的解密和加密。

附图说明

图1说明如本文中所描述的基于CNN的信号处理的实例情形。

图2说明如本文中所描述的用于基于CNN的信号处理的实例芯片上硅(SoC)装置。

图3说明如本文中所描述的信号处理期间的CNN特定保护机制的实例图解。

图4说明如本文中所描述的安全IP的实例框图。

图5说明如本文中所描述的基于CNN的信号处理的实例并行执行。

图6说明如本文中所描述的基于CNN的信号处理的并行执行的实例。

图7说明如本文中所描述的可在信号处理期间实施的实例块链接。

图8说明如本文中所描述的用于基于CNN的信号处理的方法的实例过程图。

具体实施方式

贯穿图式使用相同数字以指代相同特征及组件。

图1为如本文中所描述的基于CNN的信号处理的实例情形100。如所展示,情形100可包含图像帧102,其可作为输入供应到装置,例如芯片上硅(SoC)装置104。图像帧102可通过相机或其它装置来获得,或先前已存储,且此后用作对SoC装置104的输入。也可从其它源接收图像帧。输入图像帧102可表示可由SoC装置104处理以用于图像分类的多层CNN数据输入。

举例来说,SoC装置104可包含基于CNN的信号处理器系统,其可配置成执行视觉处理,例如图像分类、动作识别、场景标记、文件分析、高级辅助驾驶系统(ADAS)、自动驱动系统/应用等。基于CNN的信号处理器系统可进一步配置成执行语言处理,例如话音识别、自动翻译和类似物。

在这一实例中,图像帧102可包含汽车106、街道标志108、道路110、人行道112和行人114-2到114-6。SoC装置104可接收输入图像帧102(即,多层CNN数据输入)且执行信号处理,所述信号处理可包含对输入图像帧102的多个层应用CNN算法。在图像帧102的信号处理期间,CNN算法可使用且处理多个层(即,对于给定层,利用先前输出执行处理,其中所述给定层与所述先前输出卷积),以便区分并明显地鉴别图像帧102的汽车106、街道标志108、道路110、人行道112和行人114。如下文中进一步描述,CNN算法可通过使用出于解密和加密的目的供应的特定密钥来使用输入和系数滤波器(或权重)的即时式解密和层输出的即时式加密。

在实施方案中,在信号处理期间,多层CNN数据的每一层可具有对应输入和对应输出。因此,每一层上的对应输入可不同于另一层的输入。在这一实施方案中,可使用对应权重来处理(或卷积)对应输入,以产生特定输出。针对每一层,对应权重可为不同的。对每一层的输入和输出以及来自每一层的输入和输出可具有不同值。另外,可对对应输入和权重进行解密。输出由SoC装置104进行加密,且用作对多层CNN数据的另一层的输入,如下文中进一步描述。

尽管实例情形100将SoC装置104描述为单一组件,但其它组件(例如处理器、存储装置、应用、存储器等)可与SoC装置104一起包含。

图2说明如本文中所描述的用于信号处理的实例SoC装置104。如所展示,SoC装置104可包含具有安全知识产权(intellectual property,IP)块202的CNN硬件(HW)引擎200、多线程处理块204和内部存储器206。SoC装置104可进一步连接到外部闪存208和外部存储器210。

作为由SoC装置104信号处理的概述,可用于CNN算法的滤波器系数(或权重)可经加密且存储在SoC装置104外部的存储器处,所述存储器例如外部闪存208和/或外部存储器210。举例来说,加密可包含在存储系数滤波器时的非对称加密,以便防止所存储权重暴露于软件(即,权重可配置成可通过SoC装置104的硬件存取)。

在特定层的信号处理期间,加密输入(其可以是先前被处理层的加密输出)可由安全IP块202即时地解密。类似地,从外部存储器存储的对应加密权重可即时地经解密,且与解密输入卷积以产生未加密输出。此后,未加密输出可在安全IP块202处经加密且用作对后续层的另一加密输入。

对于这些解密和加密,安全IP块202可包含密钥特征块(下文中相对于图3进一步描述为密钥特征块316),其可由硬件存取且从软件侧不可见。如下文中进一步描述,密钥特征块可在信号处理期间为每一层提供不同密钥。不同密钥可用于输入和权重的即时式解密以及输出的即时式加密。用于权重的解密密钥可针对每一层为固定的。因此,对于帧到帧处理,针对每一层用于权重的解密的密钥为固定的。

在信号处理期间的任何时间处,解密权重、解密输入和加密输出可能并不可用于外部存储器(即,外部闪存208和外部存储器210),以便防止暴露于恶意攻击。解密权重和输入以及加密输出可存储在内部存储器206处。实施对输出进行的加密以防止对给定层提供固定模式输入的恶意尝试,且允许能够解码输出并确定给定层(和其它层)的权重,这是因为输出=权重×输入(output=weight*input)。

另外,解密权重和解密输入可在没有软件介入的情况下直接提供到安全IP块202内的其它区块。因此,CNN HW引擎200可配置成在信号处理期间经由用于隐藏层的安全引擎的硬件同时并行执行直接检索并使用解密权重和解密输入。举例来说,CNN HW引擎200可实施解密输入和权重的卷积的并行执行,且将输出供应回到安全IP块202以形成加密输出。

参考图1的图像帧102,可通过由安全IP块202使用对应密钥进行的安全解密和/或解密来执行图像分类,如下文中进一步描述。

图像分类可包含多层CNN数据的每一层与来自外部存储器210的对应存储加密权重的卷积,以区分和明显地鉴别输入图像102的汽车106、街道标志108、道路110、人行道112和行人114中的每一个。

举例来说,为区分和明显地鉴别汽车106,多层CNN数据的信号处理可包含如下的第一模式:对第一输入进行解密;卷积解密的第一输入与解密的第一权重,所述解密的第一权重为从外部存储器检索;合并第一卷积的输出;且对第一输出进行加密。在这一实例中,第二模式可包含:将先前加密的第一输出解密成对下一层的解密的第二输入;卷积解密的第二输入与来自外部存储器的解密的第二权重;合并第二卷积的输出;且对第二输出进行加密。第三模式可遵循类似步骤直到最末层为止,在所述最末层中,所有输出的整合可产生汽车106与另一物体的区别和鉴别,所述另一物体例如街道标志108、道路110等。另外,对第一、第二等图案的解密和加密可使用安全IP块202的密钥特征块处的一或多个密钥。

在某些实施方案中,为区分和明显地鉴别街道标志108,用以导出街道标志108的类似多个层信号处理可包含如下的第一模式:对第一输入进行解密;卷积解密的第一输入与来自外部存储器的解密的第一权重;合并第一卷积的输出;且对第一输出进行加密。在这一实施方案中,第二模式可包含:将先前加密的第一输出解密成对下一层的解密的第二输入;卷积解密的第二输入与来自外部存储器的解密的第二权重;合并第二卷积的输出;且对第二输出进行加密。第三模式可遵循类似步骤直到最末层为止,在所述最末层中,所有输出的整合可产生街道标志108的区别和鉴别。类似地,对第一、第二等图案的解密和加密可使用安全IP块202的密钥特征块处的一或多个密钥。

相对于图像帧102的道路110、人行道112和行人114,可类似地应用如针对汽车106或街道标志108所描述的信号处理。因此,每一物体的鉴别可包含卷积多个层的输入和权重,且在信号处理多层CNN数据的最末层之后执行图像分类。

如本文中所描述,安全IP块202可配置成在信号处理期间对于每一层执行输入和权重的即时式解密以及输出的即时式加密。安全IP块202可使用不可经由软件存取的密钥特征块。因此,密钥特征块可明显地配置在每一SoC装置104上,以在信号处理期间为每一层提供安全的不同密钥。安全的不同密钥可用于输入和权重的即时式解密以及输出的即时式加密。

另外,CNN HW引擎200可使用先进先出法(FIFO)以用于存储器预取,以避免存储器提取与由安全IP块202进行的即时式解密和加密之间的时延。每一CNN通道操作可进一步介接以控制块链接。举例来说,为允许简易随机存取,输入和输出的解密可需要禁用块链接。相比之下,使用块链接的权重的解密可提供更高的安全性。

如本文中所描述,用于图像帧102的不同物体的每一初始层可不需要加密,这是因为初始层直接来自图像数据,例如输入图像帧102。类似地,用于不同物体的每一最终层在每一物体(例如汽车106、街道标志108等)的分类阶段或区分之前可不需要加密。

多线程处理块204可配置成支持对应于图像帧102的每一物体的多个层的信号处理。举例来说,多线程处理块204可包含软件和硬件的组合,其支持CNN HW引擎200处的每一层的输入和权重的卷积。多线程处理块204可连接到内部存储器206,以支撑CNN HW引擎200处的每一层的输入和权重的卷积。

在实施方案中,内部存储器206可配置成存储在安全IP BLOCK处使用的CNN权重。举例来说,存储的CNN权重可包含可在SoC装置104内存取的加密权重。在这一实例中,加密权重可经由硬件构件且并不经由软件由CNN HW引擎200存取。这是因为使用非对称加密来存储密钥特征块上的密钥。因此,密钥特征块上的这些密钥可经由CNN HW引擎200存取,但从软件不可见。因此,SoC装置104可由硬件和软件安全特征提供CNN特定保护机制,例如在多个层信号处理期间实现CNN权重的安全交换。

图3说明如本文中所描述的信号处理期间的CNN特定保护机制的实例图解。如所展示,图3说明多层CNN数据的实例概述,所述多层CNN数据可包含输入层300、第一隐藏层302、第二隐藏层304和输出层306。

为经由SoC装置104实施或处理多层CNN数据的实例概述,加密的输入层300可由安全ID 202转换到解密的输入层中,所述解密的输入层如由解密的输入层308表示。类似地,来自外部存储器(如上文所描述)的存储的加密权重310可由安全ID 202检索和转换以形成解密权重312。

在卷积解密的输入层308与解密权重312之后,加密输出314可经产生且用作对另一隐藏层的加密输入直到最末隐藏层和输出层被处理以提供图像分类为止。

如本文中所描述,加密的输入层300和加密权重310的解密可使用可存储在密钥特征块316处的密钥。密钥特征块316可将密钥供应到安全IP块202,以便执行即时式解密和加密。另外,不同密钥可供应到多层CNN数据的不同层。此外,在另一实施例中,密钥可使用非对称加密存储在外部存储器中而非SoC装置104内。

参考图1的图像帧102,图3中展示的等效实例多层CNN数据概述可包含额外隐藏层和卷积,且可不受限于第一隐藏层302和第二隐藏层304。因此,在图像102的信号处理期间可能需要多个隐藏层,以便区分和明显地鉴别汽车106、街道标志208等。每一隐藏层可使用供应密钥的不同集合以用于输入层300和检索权重310的即时式解密以及卷积输出的即时式加密。

如本文中所描述,密钥特征块316可并不对于软件可见,但实际上可经由硬件存取,以便保护解密和加密免受恶意攻击。另外,在信号处理期间,解密的输入层308、解密权重312和加密输出314可不存储在外部存储器处,所述外部存储器例如外部闪存208和外部存储器210。实际上,解密的输入层308、解密权重312和加密输出314可存储在内部存储器206处。

图4说明如本文中所描述的安全IP块202的实例框图。如所展示,CNN安全IP块202可包含:输入特征解密块402,其可配置成接收输入层300且对所述输入层进行解密;权重内核解密块404,其可配置成接收从外部存储器存储的权重310且对所述权重进行解密;输出特征加密块406,其可配置成对来自CNN HW引擎200的卷积输出进行加密;密钥管理408,其可配置成对来自外部存储器的不对称加密密钥进行解密,且配置成供应用于解密和加密的解密密钥;以及CNN HW核心410,其与CNN HW引擎200类似。

如本文中所描述,密钥管理408可从外部存储器接收加密密钥,所述外部存储器例如外部存储器210。在安全IP块202处且在信号处理期间,可针对多层CNN数据的每一层供应不同密钥。另外,不同密钥可不由软件可见,且可经由总线412供应到输入特征解密块402和安全IP块202内的其它块。因此,不同密钥可在没有软件介入的情况下供应到安全IP块202上的不同块。

输入特征解密块400和权重内核解密块404可配置成使用来自密钥管理408的不同密钥执行即时式解密。类似地,输出特征加密块406可使用来自密钥管理408的不同密钥执行即时式加密。对多个层或通道的即时式解密和加密可确保不影响启动时间,且在运行时间期间完全防止权重干扰。另外,可经由密钥管理408禁用和切换即时式解密和加密。

在某些实施方案中,即时式允许输入或权重在解密之后直接传送到CNN HW核心410,而不存储在任何内部或外部存储器(例如存储器206、存储器210)中。在任何情况下,在运行期间,内容不可由软件读取(受损)。

密钥管理408可配置成将密钥提供到输入特征解密块402以用于即时式解密加密输出。可将密钥视为主密钥或私用密钥。主密钥或私用密钥可使用非对称加密和解密。主密钥或私用密钥可存储在SoC 104内部。在某些实施方案中,主密钥或私用密钥经由EEPROM编程,在制造期间于装置104中烧机,或可由用户/客户烧机。实际上,在这类实施方案中,主密钥或私用密钥仅在SoC 104内且尤其在安全IP块202内使用。

如上文所描述,可针对多层CNN数据的每一层供应不同密钥。主密钥或私用密钥可用于不同或层密钥的解密。密钥管理408可为多层CNN数据的不同层提供不同密钥。这些层密钥可用于对称加密/解密,且在这类加密和解密期间直接传送,如执行以用于处理权重、输入和输出。层密钥不由软件处理,且不可由软件读取。

可使用对于密钥管理408的“配置保存接口(IF)”的输入可包含:主密钥或私用密钥,其可用于不对称加密/解密;和两个密钥对(私用和公共),其用于不对称加密/解密。可使用公共密钥来对数据进行加密,且主密钥或私用密钥用于在解密期间解码数据。公共密钥可用于允许任何人进行加密;然而,仅私用密钥可解密回数据。这可使用李维斯特-萨莫尔-阿德曼(Rivest-Shamir-Adleman,RSA)算法来实施。对密钥管理408的其它输入可包含每一层的加密密钥列表。这些密钥可使用不对称加密/解密来加密。

可使用来自密钥管理408的“密钥接口(IF)”的输出可包含对用于权重、输入和输出的块402、404和406的特定层密钥。可使用对称加密/解密,且所述对称加密/解密对于加密和解密处理利用相同密钥。因此,由密钥管理408保留/提供相同密钥。对称加密可用于大数据(例如权重、输入和输出)。所使用的算法可以是高级加密标准(AES)。

在信号处理期间,CNN HW核心410可执行隐藏层的安全引擎的同时并行执行。举例来说,CNN HW核心410可执行多层CNN数据的并行卷积,以便对汽车106、街道标志108等进行分类。在这一实例中,CNN HW核心410直接连接到CNN安全IP块202,使得在信号处理期间,解密输入/输出和解密权重可并不对于软件可见。因此,CNN HW核心410可保护隐藏层输出,且进一步防止对权重信息的间接推断。另外,CNN HW核心410可使用块链接以产生CNN加速度,如下文中进一步描述。

图5说明如本文中所描述的基于CNN的信号处理的实例并行执行。如所展示,数据接口500可将多层CNN数据的单一数据流供应到并行器组件502。随后,并行器组件502可配置成将多层CNN数据的隐藏层供应到高级加密标准(AES)通道504-2到504-N,其中N可以是待由CNN HW核心402处理的隐藏层的数目。对于AES通道504-2到504-N中的每一个,对应密钥506-1到506-N可独立地供应,以用于对如本文中所描述的输入和权重进行解密。另外,举例来说,密钥506-1到506-N可存储于安全IP块202外部的存储器中。

在实施方案中,针对多层CNN数据的每一层,密钥506的每一集合可为不同的。举例来说,参考图3,密钥506的第一集合可应用于第一隐藏层302,而密钥506的第二集合可应用于第二隐藏层304。在这一实例中,密钥的第一集合可不同于密钥的第二集合。另外,第一隐藏层302和第二隐藏层304可分别由AES通道504-2到504-2并行地处理。

如本文中所描述,AES通道504可通过使用硬件功能(例如CNN HW核心410)来实施输入、权重和层输出的安全解密和加密。因此,用于AES通道504和CNN HW核心410的输入、权重和输出并不对于软件可见(即,不可经由软件从SoC装置104外部存取)。

为禁用或实现块链接,配置MMR 508可配置成执行块链接的禁用以允许简易随机存取和/或在信号处理期间提供更高的安全性。块链接可由安全IP块202实施以执行CNN加速度。

图6说明如本文中所描述的基于CNN的信号处理的并行执行的另一实例。相比于图5(其描述CNN HW核心410处的在信号处理之前的输入和权重的解密),图6可描述来自CNNHW核心410的卷积输出的加密,其中加密的卷积输出可用作对多层CNN数据的另一层的输入。

如所展示,CNN HW核心410可将卷积数据供应为被处理的层的输出。卷积数据可包含解密输入和对应解密权重的并行卷积。卷积数据可供应到AES通道504,以用于使用可由密钥506供应的密钥集合来进行加密。

在实施方案中,串行器600可配置成将加密的卷积数据输出转换为加密输出的信号数据流,其此后可用作对多层CNN数据的另一层的加密输入。在处理所有隐藏层之后,串行器600可输出图像帧102的不同分类。

图7展示如本文中所描述的可在信号处理期间实施的实例块链接700。实例块链接700可实施于并行运行的卷积的不同通道上,而不是存储器中的所有依序数据。举例来说,使用块链接以对权重进行加密还可允许对权重进行并行解密。

如所展示,可对应于四个同时通道卷积权重的四个AES块链700-2、700-4、700-6和700-8可连续地存储在存储器中。AES块链700的数目可受存储器接口的总线大小限制。举例来说,对于128位的加密块和512位的存储器总线接口,AES块链700的数目可受限于四个块(即,512/128=4)。

参考图7,存储器总线接口702至708中的每一个可包含512位。因此,所得四个AES块链700可由可并行地执行的四个并行通道表示。

举例来说,在四个通道并行地执行时,用于通道中的每一个的内核的权重可形成用于加密或解密的块链。在这一实例中,可启用或禁用块链以提供更高的安全性和/或允许简易随机存取。权重的动态块链接可使得能够对子权重的多个集合并行地进行解密。

图8展示如本文中所描述的用于基于CNN的信号处理的方法的实例过程图800。描述方法的次序不具限制性,且任何数目的所描述方法框可以任何次序组合以实施方法或替代的方法。另外,在不脱离实例实施例的范围的情况下可从方法中删除单独框。另外,在不脱离实例实施例的范围的情况下,方法可实施于任何适合硬件、软件、固件或其组合中。

在框802处,执行从多层CNN数据的第一层接收加密输出。举例来说,图像帧102可表示多层CNN数据。在这一实例中,多层CNN数据可由如图3中所展示的实例概述表示。因此,第一隐藏层302为多层CNN数据的第一层,其中第一层可供应加密输出。

在框804处,执行对所接收的加密输出进行解密以形成对多层CNN数据的第二层的解密输入。举例来说,输入特征解密块402可配置成接收来自第一层的加密输出且对所述加密输出进行解密。在这一实例中,解密输出可用作对多层CNN数据的第二层(即,第二隐藏层304)的输入。

在框806处,执行接收对应于解密输入的加密权重且对所述加密权重进行解密。举例来说,权重内核解密块404可配置成接收对应于解密输入的加密权重且对所述加密权重进行解密。

在框808处,执行对解密输入和解密权重执行卷积以产生第二层输出。举例来说,CNN硬件(HW)核心410或CNN HW引擎200可配置成执行输入和解密权重的卷积以产生第二层输出。

在框810处,执行对第二层输出进行加密,且加密的第二层输出用作对多层CNN数据的第三层的加密输入。举例来说,第二隐藏层304的输出可经加密且用作对多层CNN数据的后续层的输入。

在上文所描述的解密输入和/或权重以及输出的加密中,密钥管理408可供应用于解密和加密的对应密钥506。

相关技术
  • 安全卷积神经网络(CNN)加速器
  • 安全卷积神经网络(CNN)加速器
技术分类

06120116624115