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

神经网络的存储器内保护

文献发布时间:2024-04-18 20:00:50


神经网络的存储器内保护

技术领域

实施例一般涉及计算系统。更特别地,实施例涉及用于例如在边缘系统中部署时保护神经网络和相关数据的性能增强技术。

背景技术

神经网络越来越多地用在深度学习/人工智能(AI)应用中。然而,在AI应用中部署神经网络可能导致弱点,其中神经网络的各个方面(诸如例如网络结构、训练的权重和参数以及其他网络数据)可能被恶意方损害,特别是当AI应用正在执行时。当神经网络部署在后端系统乃至中央服务器之外扩展到边缘装置和其他场外系统(off-premises system)时,保护神经网络免于此类弱点可能特别困难。

附图说明

通过阅读以下说明书和所附权利要求书,并参考以下附图,实施例的各种优点对于本领域技术人员将变得显而易见,附图中:

图1提供了示出根据一个或多个实施例的用于存储器内神经网络保护的示例计算系统的概览的框图;

图2A-2C提供了根据一个或多个实施例的神经网络存储器结构的示例的图解;

图3A-3B提供了根据一个或多个实施例在神经网络存储器结构中散布神经网络的示例的图解;

图3C提供了示出根据一个或多个实施例的用于存储器内神经网络保护系统的加密密钥表的示例的图解;

图4提供了示出根据一个或多个实施例的用于在神经网络存储器结构中散布神经网络的示例过程流程的流程图;

图5A-5C提供了示出根据一个或多个实施例的用于利用神经网络存储器结构中的密钥管理来重新混洗(reshuffling)神经网络的示例过程流程的流程图;

图6A-6C提供了示出根据一个或多个实施例的与存储器内神经网络保护相关的示例方法的流程图;

图7是示出根据一个或多个实施例的用于存储器内神经网络保护的计算系统的示例的框图;

图8是示出根据一个或多个实施例的半导体设备的示例的框图;

图9是示出根据一个或多个实施例的处理器的示例的框图;以及

图10是示出根据一个或多个实施例的基于多处理器的计算系统的示例的框图。

具体实施方式

如本文所述的性能增强的计算系统提供了跨操作装置的存储器对神经网络和数据进行散布(scatter)(例如,加扰(scramble))的技术。可以生成具有用于保存神经网络的存储器块的存储器结构。该技术可以包括按层拆分神经网络,并且然后将同一层的数据拆分成各种数据组块(chunk)。数据组块可以跨存储器结构随机存储。此外,可以在存储器结构内进一步混洗(shuffle)(重新混洗)神经网络,以伪装神经网络数据存储器存取模式(例如,通过使神经网络存储器存取模式类似于系统或装置的存储器存取模式)。数据组块可以用从能随时间刷新的一系列密钥中选取的密钥(例如,对称密钥)来加密。通过散布神经网络和关联的数据,并以各种间隔重新混洗网络,该技术通过增加恶意用户确定存储器存取或检索神经网络中使用的数据的难度,显著地增加了对操作神经网络的保护,以防止这种恶意用户尝试嗅探或扫描存储器数据。

图1提供了示出根据一个或多个实施例的用于存储器内神经网络保护的示例计算系统100的概览的框图,参考了本文所描述的组件和特征,包括但不限于附图和关联的描述。系统100与采用神经网络的执行中的AI应用结合操作。系统100可以包括神经网络(NN)存储器结构模块101、NN散布模块102和NN重新混洗模块103。在一些实施例中,系统100还能包括密钥管理模块104。系统100还能包括处理器(图1中未示出),处理器用于执行一个或多个程序以执行系统100的功能——包括NN存储器结构模块101、NN散布模块102、NN重新混洗模块103和/或密钥管理模块104的功能。NN存储器结构模块101、NN散布模块102、NN重新混洗模块103和/或密钥管理模块104中的每个都可以由操作系统执行或在操作系统的指导下执行,操作系统诸如例如是在系统100或系统10上运行的操作系统(本文参考图7进行了描述)。更特别地,NN存储器结构模块101、NN散布模块102、NN重新混洗模块103和/或密钥管理模块104中的每个都可以在一个或多个模块中实现为逻辑指令集,所述指令集被存储在机器或计算机可读存储介质(诸如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪存等)中,在可配置逻辑(诸如例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑装置(CPLD))中,在使用电路技术(诸如例如专用集成电路(ASIC)、通用微处理器或晶体管-晶体管逻辑(TTL)技术)的固定功能性逻辑硬件中,或其任何组合。此外,可配置的和/或固定功能性的硬件可以经由互补金属氧化物半导体(CMOS)技术来实现。

例如,用于执行由NN存储器结构模块101、NN散布模块102、NN重新混洗模块103和/或密钥管理模块104执行的操作的计算机程序代码可以用一种或多种编程语言的任何组合来编写,所述编程语言包括面向对象的编程语言(诸如JAVA、SMALLTALK、C++等)以及常规的过程编程语言(诸如“C”编程语言或类似的编程语言)。附加地,逻辑指令可以包括汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、状态设置数据、用于集成电路的配置数据、使电子电路和/或对硬件固有的其他结构组件(例如,主机处理器、中央处理单元/CPU、微控制器等)个性化的状态信息。

系统100被配置成执行包括(或者以其他方式采用或利用)神经网络的AI应用。例如,系统100(经由AI应用)将神经网络加载到存储器中,并且AI应用在执行AI过程中读取存储器中的神经网络。图1的模块101、102、103和104可以被定义为由操作系统调用的散布/重新混洗应用的一部分,或者被集成到AI应用中,等等。NN存储器结构模块101操作以在一个或多个存储器空间内创建或生成存储器结构,其中(一个或多个)存储器空间用于在AI应用正在执行时保存神经网络和关联的NN数据(包括神经网络结构、训练的权重和参数以及使用或生成的其他NN数据)。存储器空间可以包括堆栈空间和/或堆空间。堆栈空间通常是可以由系统100(例如,由操作系统)在全局存储器区域内分配的静态空间。堆空间通常由AI应用动态创建,并且可以在执行期间根据需要分配空间。存储器结构包括多个存储器块,所述多个存储器块组织成存储器块群组。每个群组具有多个存储器块,其中群组中的存储器块可以是相同大小的块,并且存储器块的大小可以逐个群组变化。每个存储器空间(诸如例如堆栈空间和堆空间)可以具有其自己的存储器块群组,其中所有存储器块群组都可以在存储器结构中利用。本文参考图2A-2C提供了关于神经网络存储器结构的进一步细节。

NN散布模块102操作以将由AI应用加载的神经网络划分为组块,以便在执行期间放置在存储器结构中。当神经网络正被加载到存储器中时,神经网络被划分为层,并且这些层(具有相应的权重、参数和数据)被划分为数据组块。选择存储器结构的存储器块用于存储数据组块,其中可以基于随机化的存储器存储模式来选择块。数据组块根据随机模式被存储在所选择的存储器块中。可以基于指配的(一个或多个)密钥对数据组块进行加密,所述密钥可以被指配给块、块群组等。本文参考图3A-3C和图4提供了关于散布神经网络的进一步细节。

NN重新混洗模块103操作以在AI应用执行期间在存储器块之间移动其中一些数据组块。在执行期间的一段时间内测量对于神经网络的存储器存取,并且基于所测量的存储器存取来确定神经网络存储器存取模式。将神经网络存储器存取模式与另一存储器存取模式(诸如例如,应用存储器存取模式,或系统或装置的总体存储器存取模式)进行比较。基于该比较,存储的组块中的一个或多个组块的数据被移动到一个或多个未使用的存储器块。本文参考图5A-5B提供了关于重新混洗神经网络的进一步细节。

密钥管理模块104操作以管理用于散布和重新混洗过程的加密密钥。加密密钥被生成、被指配给存储器块、被跟踪,并在密钥到期后就引退。本文参考图3C、5A和5C提供了关于密钥管理的进一步细节。

图2A-2C提供了根据一个或多个实施例的神经网络存储器数据结构的示例的图解,参考了本文描述的组件和特征,包括但不限于附图和关联的描述。在一个或多个存储器空间内创建或生成所示的存储器结构,其中(一个或多个)存储器空间用于在AI应用正在执行时保存神经网络和关联的NN数据(包括神经网络结构、训练的权重和参数以及使用或生成的其他NN数据)。存储器可以是系统存储器或由系统或应用可存取的任何存储器。可以在系统100(图1,已经讨论过)中创建和/或使用所示的存储器结构。

转到图2A,示出了存储器结构200。存储器结构200包括多个存储器块,其中存储器块被组织成N+1个群组:Group_0(标签201),Group_1(标签202),Group_2(标签203),……Group_N(标签204)。每个群组具有M+1个存储器块。M的大小在不同群组之间可以变化。如图2A所示,存储器块可以由群组号标识。例如,Group_0(标签201)可具有存储器块Block(0,0),Block(0,1),……Block(0,M);Group_1(标签202)可以具有存储器块Block(1,0)、Block(1,1),……Block(1,M);依此类推。存储器块可占用系统存储器中的存储器空间或分配给AI应用使用的任何存储器空间。存储器空间可以包括例如堆栈空间和/或堆空间。

特定群组内的存储器块通常具有相同大小的块。在一些实施例中,不同的群组可以具有大小可以因群组而异的存储器块。生成其中群组具有变化的块大小的存储器结构可以增加神经网络的保护级别,因为不同群组的块大小可以使恶意方更难以确定存储或存取模式。作为示例,Group_0中的存储器块可以各具有4k大小(示例基本块大小),Group_1中的存储器块可以各具有8k大小,Group_2中的存储器块可以各具有16k大小,依此类推。例如,Group_i中的存储器块的大小可以是2i×Qk,其中i是群组号,而Q是基本块大小(以千字节为单位),在一些实施例中,Q=4。将会理解,对于不同群组可以使用各种块大小,并且块大小可以从块大小集合(诸如例如,由公式确定的块大小集合)之间选择。在一些实施例中,每个群组可以具有块大小相同的存储器块。在实施例中,存储器结构200可以被组织为数据组块(例如,大小为Qk或2i×Qk的块)的列表的索引表。

现在转到图2B,示出了存储器结构220。类似于存储器结构200(图2A,已经讨论过),存储器结构220包括多个存储器块,其中存储器块被组织成群组。存储器结构220跨越两个存储器空间,堆栈空间和堆空间。使用堆栈空间和堆空间两者生成存储器结构可以提高神经网络的保护级别,因为不同的存储器空间可以使恶意方更难以确定存储或存取模式。堆栈空间由系统100(例如,由运行在系统100上的操作系统或AI应用)静态分配,并包括R+1个群组:Stack_Group_0(标签221)、Stack_Group_1(标签222)、Stack_Group_2(标签223)、……Stack_Group_R(标签224)。堆空间由AI应用动态分配,并且包括P+1个群组:Heap_Group_0(标签231)、Heap_Group_1(标签232)、Heap_Group_2(标签233)、……Heap_Group_P(标签234)。类似于存储器结构200中的存储器块群组(图2A,已经讨论过),存储器结构220中的存储器块群组可以每个群组具有不同大小的块,或者可以具有所有相同大小的块。将会理解,堆栈空间和堆空间中群组的数量可以相同或不同,并且在堆栈空间和堆空间之间,每个群组中的存储器块的数量可以相同或者可以不同。将进一步理解,堆栈空间和堆空间的相对量可以从一个实现到下一个实现而变化。

如图2B所示,存储器块可以由空间和群组号来标识。例如,堆栈空间中的群组可具有J+1个存储器块,使得Stack_Group_0(标签221)具有存储器块S_Block(0,0)、S_Block(0,1)、……S_Block(0,J);Stack_Group_1(标签222)具有存储器块S_Block(1,0)、S_Block(1,1)、……S_Block(1,J);……Stack_Group_R(标签224)具有存储器块S_Block(R,0)、S_Block(R,1)、……S_Block(R,J)。类似地,堆空间中的群组可以具有K+1个存储器块,使得Heap_Group_0(标签231)具有存储器块H_Block(0,0)、H_Block(0,1)、……H_Block(0,K);Heap_Group_1(标签232)具有标记为H_Block(1,0)、H_Block(1,1)、……H_Block(1,M)的存储器块;依此类推。J和/或K的大小在不同群组之间可以变化。

现在转到图2C,示出了存储器结构250的堆栈空间。图2C所示的堆栈空间类似于存储器结构220(图2B,已经讨论过)中的堆栈空间,具有以下差异。堆栈空间中的每个群组存储器块都具有一个附加的存储位置(slot),该存储位置提供了该群组内可用的(即未使用的)存储器块的列表。例如,每一个可用的列表块(诸如例如,Available_R)可以是未使用的存储器块(诸如例如,Stack_Group_R中的块)的链表,该存储器块具有指向该群组中下一个可用的存储器块的指针。当需要使用群组中的存储器块时,群组列表中的任何块(通常是第一块)将被使用并从可用的链表中移除。例如,如图2C所示,Stack_Group_0(标签251)具有可用的存储器块S_Block(0,0)(标签253)和S_Block(0,J)(标签254);这些可用的块列在存储位置Available_0(标签255)中。类似地,Stack_Group_R(标签252)具有可用的存储器块S_Block(R,1)(标签256)和S_Block(R,J)(标签257);这些可用的块被列在存储位置Available_R(标签258)中。在一些实施例中,存储器结构250还可以具有带有可用的块列表的堆空间(图2C中未示出),类似于存储器结构220中的堆空间(图2B,已经讨论过)。

图3A-3B提供了根据一个或多个实施例的将神经网络散布在神经网络存储器结构中的示例的图解,参考本文描述的组件和特征,包括但不限于附图和关联的描述。在图3A-3B的示例中,神经网络的每层(具有权重、参数等)已经被划分为组块。转到图3A,该图解示出了散布的神经网络300,其中神经网络层被划分为组块,组块被存储在存储器结构(诸如例如,已经讨论过的图2B中的存储器结构220)的存储器块中,其中用于存储神经网络的存储器块的顺序是基于随机化的存储器存储模式来选择的。在实施例中,每个组块的大小可以在一定范围内随机选择。一旦选择了组块大小,就可以确定存储器块大小,诸如例如可以存储数据组块的最小存储器块。

从而,如图3A所示,散布神经网络300具有NN头302、存储在块S_Block(R,0)中的第一元素(例如,组块)304、存储在H_Block(2,1)中的第二元素(例如,组块)306,诸如此类。NN头302存储保存神经网络数据的第一存储器块的地址。在一些实施例中,如此划分为组块并散布在各种存储器块之间的神经网络可以被表示或标识为用于神经网络的每一个存储器块的索引值链。

现在转到图3B,该图解示出了类似于散布神经网络300(图3A)的散布神经网络320,具有以下差异。每一个数据组块当被存储在相应存储器块中时被加密。在一些实施例中,数据组块用可以从一个存储器块到下一个存储器块改变的加密密钥进行加密。例如,如图3B所示,散布神经网络320具有NN头322、用存储在块S_Block(R,0)中的密钥(密钥标识符KeyID-0)加密的第一元素(例如,组块)324、用存储在H_Block(2,1)中的密钥(密钥标识符KeyID-2)加密的第二元素(例如,组块)326,诸如此类。在实施例中,用于加密散布神经网络320中组块的每一个密钥标识符可以与相应的存储器块索引一起存储。在一些实施例中,可以使用单个加密密钥来加密每一个存储器块的所有数据组块。在实施例中,(一个或多个)加密密钥可以是对称密钥。

图3C提供了示出根据一个或多个实施例的用于存储器内神经网络保护系统的加密密钥表350的示例的图解,参考本文所描述的组件和特征,包括但不限于附图和关联的描述。加密密钥表350可以包括密钥标识符、密钥、时间戳和密钥被用于的组块数量的条目。例如,密钥表350的第一行352可以包括密钥标识符354(KeyID-0)、对应的密钥356(Key0)、指示密钥(Key0)何时被用于加密一个或多个数据组块的时间戳358以及指示已经用密钥(Key0)加密了多少数据组块的组块数量360。在一些实施例中,当密钥将要到期时,时间戳可以指示时间(日、日期、时间等)。表可以具有单独的行(或单独的条目组)用于使用中的每个密钥。在一些实施例中,密钥仅用于单个存储器块。在一些实施例中,每个密钥表行还能包括存储由该相应密钥加密的数据的(一个或多个)存储器块的索引。

图4提供了示出根据一个或多个实施例的用于在神经网络存储器结构中散布神经网络的示例过程流程400的流程图,参考本文描述的组件和特征,包括但不限于附图和关联的描述。过程400可以在计算系统中实现,计算系统诸如例如是计算系统100(图1,已经讨论过)或者系统10(本文参考图7描述的)。过程400可以由操作系统(例如,运行在计算系统100或计算系统10上的操作系统)执行或者在其指导下执行。更特别地,过程400可以在一个或多个模块中实现为逻辑指令集,所述指令集被存储在诸如RAM、ROM、PROM、固件、闪存等的机器或计算机可读存储介质中,存储在诸如例如PLA、FPGA、CPLD之类的可配置逻辑中,存储在使用诸如例如ASIC、通用微处理器或TTL技术之类的电路技术的固定功能性逻辑硬件中,或者存储在它们的任何组合中。此外,可配置的和/或固定功能性的硬件可以经由CMOS技术来实现。

例如,用于执行过程400中所示的操作的计算机程序代码可以用一种或多种编程语言的任何组合来编写,这些编程语言包括面向对象的编程语言(诸如JAVA、SMALLTALK、C++等)以及常规的过程编程语言(诸如“C”编程语言或类似的编程语言)。附加地,逻辑指令可以包括汇编指令、ISA指令、机器指令、机器相关指令、微代码、状态设置数据、用于集成电路的配置数据、使电子电路和/或对硬件固有的其他结构组件(例如,主机处理器、中央处理单元/CPU、微控制器等)个性化的状态信息。

过程400一般可以当AI应用正在将神经网络加载到存储器中以供执行时执行。实现用于散布神经网络的过程流程400的计算系统可以包括诸如系统存储器之类的存储器或与其进行数据通信,该系统存储器可以包括堆栈存储器空间和/或堆存储器空间,其中生成用于存储散布的神经网络的神经网络存储器结构。当将神经网络数据加载到存储器中时,网络数据层将被随机拆分成组块大小(例如,2i*4K字节的大小),并且特定组块的实际存储器可以从堆栈空间或堆空间中随机选取。

转到图4,所示的处理框402提供了存储器结构生成模块(诸如例如,已经讨论过的图1中的NN存储器结构模块101)的初始化。如果要在神经网络存储器结构中使用堆栈存储器空间,则堆栈存储器分配可以随着存储器结构模块的初始化而发生。所示的处理框404规定构建存储器结构,例如堆栈存储器结构。堆栈存储器结构可以对应于作为神经网络存储器结构220(图2B,已经讨论过)或神经网络存储器结构250(图2C,已经讨论过)的一部分示出的堆栈空间。在实施例中,存储器结构可以对应于通用神经网络存储器结构200(图2A,已经讨论过)。所示的处理框406规定初始化加密密钥,以便当数据组块被存储在神经网络存储器结构的存储器块中时用于加密数据组块。加密密钥可以是例如对称密钥。

过程流程400的散布/存储部分开始于所示的处理框408。在已经生成神经网络存储器结构的实施例中,过程流程400可以跳到框408。散布部分涉及在逐层的基础上执行的、将神经网络划分为组块。在所示的处理块410,进行检查以确定神经网络存储(散布)是否完成。如果是(神经网络完全散布),则过程结束(框430)。如果否,则该过程继续到框412,在此从神经网络的剩余部分中拆分神经网络层。该层将被进一步拆分(划分)成组块。在所示的处理框414,进行检查以确定该层是否完成。如果是(层完成),则过程返回到框410。如果否,则该过程继续到所示的处理框416,其规定将该层拆分成组块。组块大小可以是例如特定组的存储器块的大小。所示的处理框418规定确定堆栈空间还是堆空间要被用于存储器块来存储(一个或多个)当前组块。在一些实施例中,对于当前存储器块是使用堆栈空间还是堆空间的确定可以是随机确定。如果是(使用堆栈空间),则过程继续到所示的处理框420,其规定确定堆栈是否有空间(例如,未使用的且可用的一个或多个存储器块)。如果在框420为是(堆栈空间可用),则选择堆栈空间中的存储器块,并且过程继续到框426。如果在框420为否,则过程在框422继续。如果在框418(使用堆空间)为否,则过程继续到框422。

所示的处理框422规定确定是否重用现有堆空间。如果是(重用现有堆空间),则从现有堆空间中选择存储器块,并且过程继续到框426。如果否,则在所示的处理框424分配附加的堆空间,并从新分配的堆空间中选择存储器块。该过程然后在框426继续。

所示的处理框426规定为当前组块选取加密密钥。加密密钥可以从已经生成的加密密钥中(例如,在加密密钥表350中)选择,或者可以是新生成的密钥。如果所选择的密钥是来自密钥表中的现有密钥,则对应密钥的组块数量的条目可以递增。对于新生成的密钥,可以将该密钥添加到密钥表。所示的处理框428规定用所选择的密钥加密当前数据组块,并将加密的组块存储在所选择的存储器块中。该过程然后返回到框414。

在一些实施例中,如果不使用加密,则过程400的与加密相关的部分(包括例如框426和428)被绕过,或者以其他方式不被执行(或者不存在)。

图5A-5C提供了示出根据一个或多个实施例的用于利用神经网络存储器结构中的密钥管理来对神经网络进行重新混洗的示例过程流程500、510和540的流程图,参考本文所述的组件和特征,包括但不限于附图和关联的描述。过程500、510和/或540可以在计算系统中实现,计算系统诸如例如是计算系统100(图1,已经讨论过)或系统10(本文参考图7描述)。过程500、510和/或540可以由操作系统(例如,运行在计算系统100或计算系统10上的操作系统)执行或在其指导下执行。更特别地,过程500、510和/或540可以在一个或多个模块中实现为逻辑指令集,所述指令集被存储在诸如RAM、ROM、PROM、固件、闪存等的机器或计算机可读存储介质中,存储在诸如例如PLA、FPGA、CPLD之类的可配置逻辑中,存储在使用诸如例如ASIC、通用微处理器或TTL技术之类的电路技术的固定功能性逻辑硬件中,或者存储在它们的任何组合中。此外,可配置的和/或固定功能性的硬件可以经由CMOS技术来实现。

例如,用于执行过程500、510和/或540中所示的操作的计算机程序代码可以用一种或多种编程语言的任何组合来编写,这些编程语言包括面向对象的编程语言(诸如JAVA、SMALLTALK、C++等)以及常规的过程编程语言(诸如“C”编程语言或类似的编程语言)。附加地,逻辑指令可以包括汇编指令、ISA指令、机器指令、机器相关指令、微代码、状态设置数据、用于集成电路的配置数据、使电子电路和/或对硬件固有的其他结构组件(例如,主机处理器、中央处理单元/CPU、微控制器等)个性化的状态信息。

实现用于用密钥管理来重新混洗神经网络的过程流程500、510和/或540的计算系统可以包括诸如系统存储器之类的存储器,或者与该存储器进行数据通信,该存储器可以包括堆栈存储器空间和/或堆存储器空间,用于存储重新混洗的神经网络。

转到图5A,过程500开始于所示的处理框502,该处理框502规定对操作中的神经网络的存储器存取模式进行收集和建模。例如,可以使用诸如存储器热图之类的工具来确定存储器存取模式。存储器存取模式可以作为由散布/重新混洗应用或AI应用启动的线程的一部分来收集。不同存储器地址的存取模式可能有很大不同,这取决于所使用的存储器空间和初始散布模式、存储器存取频率、块大小、读取/写入地址空间等。

在所示的处理框504,进行检查以确定是否到了重新混洗神经网络的时间。在实施例中,这种确定可以基于定时器和/或自从前一重新混洗操作以来所经过的时间。可以在考虑移动存储器的开销和针对潜在攻击者设置的挑战级别之间的折衷的情况下,定义重新混洗的间隔。在一些实施例中,还可以使用存储器读取操作的次数来确定间隔,诸如例如,在100次存储器块读取或5次完整的神经网络存储器读取之后。如果在框504为否(不是重新混洗的时间),则过程返回到框502;在一些实施例中,该过程在框508继续以执行密钥管理。如果是(重新混洗的时间),则该过程继续到所示的处理框506,以执行重新混洗操作。在完成重新混洗操作之后,该过程继续进行框508(密钥管理)。在密钥管理过程完成之后,该过程可以返回到框502以重复进行(其可以重复进行,例如,以各种间隔或周期性间隔)。本文参考图5B提供了关于重新混洗操作的进一步细节;本文参考图5C提供了关于密钥管理的进一步细节。在一些实施例中,如果不使用加密,则过程500的与加密相关的部分(包括例如框508)被绕过,或者以其他方式不被执行(或者不存在)。

现在转到图5B,重新混洗过程510开始于框512,该框512规定将神经网络的存储器存取模式与另一存储器存取模式进行比较。该另一存储器存取模式可以基于例如系统100总体的存储器存取模式。基于该比较,在框514确定是否重新混洗神经网络存储器。例如,如果神经网络(AI应用)的存储器存取模式与总体系统存储器足够接近,则不执行重新混洗。如果神经网络(AI应用)的存储器存取模式与总体系统存储器不够接近,则执行重新混洗。如果在框514的确定为否(没有重新混洗),则过程继续到框524(过程结束)。

如果在框514(重新混洗)为是,则该过程继续到所示的处理框516,其规定找到存储器区域来存储神经网络的重新混洗的部分。可以基于匹配期望的存储器存取模式来选择所选的存储器区域,该期望的存储器存取模式可以是另一存储器存取模式(框512)。所示的处理框518规定确定是否已经找到一个或多个合适的存储器块。如果是,则在框520,将一个或多个组块从一个或多个存储器块移动到找到的(一个或多个)存储器块。该过程然后继续到框524。如果在框518为否(没有找到(一个或多个)合适的块),则在所示的处理框522,将伪装存储器存取插入到操作的AI应用中。可以选取伪装存储器存取来模仿神经网络存储器存取模式或期望的存储器存取模式。该过程然后继续到框524,在此过程510结束。在一些实施例中,除了存储器块中的数据重新混洗之外,还可以插入伪装存储器存取。过程510一般可以替代框506(图5A,已经讨论过)。

现在转到图5C,密钥管理过程540开始于所示的处理框542,其规定迭代堆栈和堆已用空间——检查用于神经网络数据的所有存储器块的加密密钥到期时间。所示的处理框544规定确定是否有任何组块具有到期的加密密钥。例如,爬虫线程可用于扫描过(一个或多个)存储器空间以识别到期的密钥;到期的密钥可以被替换,并且数据组块可以被重新加密,而无需了解网络内部的数据内容和数据序列。确定任何密钥是否到期可以基于例如密钥的时间戳(例如,图3C的密钥表350中的时间戳)来确定该密钥经过的时间;在一些实施例中,时间戳可以指示密钥何时第一次被使用,使得到期可以进一步基于用于确定密钥何时到期的到期参数。如果在框544为否(未到期密钥),则过程继续到框558(过程结束)。如果是(到期的密钥),则过程在框546继续。

所示的处理框546规定为受影响的(一个或多个)存储器块选取(即,选择)新的密钥。所选择的密钥可以是新生成的密钥,或者现有密钥之一(例如,密钥表350中的密钥)。在一些实施例中,可以从密钥列表(例如,密钥表350中列出的密钥)中随机选择密钥。如果在框548是现有密钥,则过程继续到框556。如果在框548为否(将是新的密钥),则在所示的处理框550创建新的密钥,并将其添加到密钥表中。在所示的处理框552,进行检查以确定是否存在具有0个组块的任何密钥(例如,任何未使用的密钥)。如果否,则过程继续到框556。如果是(未使用的密钥),在一些实施例中所示的处理框554,其规定(例如,从密钥表350中)删除未使用的密钥。在一些实施例中,未使用的密钥可以保留在密钥表350中,并在随后通过密钥管理过程的循环(pass)中重新使用。所示的处理框556规定用新选择的密钥重新加密受影响的数据组块(即,具有到期密钥的组块)。该过程然后进行到框558,在此过程540结束。过程540也可以以各种间隔或周期性间隔重复。过程540一般可以替代框508(图5A,已经讨论过)。

在一些实施例中,存储器区域嗅探和识别问题可以被建模为聚类问题。一个聚类是正常存储器区域,而另一聚类是神经网络模型存储器区域。该问题可以通过聚类(例如混合高斯/k-聚类)来解决。

EQ.1:

等式(1)将观察到的存储器模式的概率定义为k个高斯分布的和,其中:

x是观察到的存储器存取模式;

p(x)是x的概率;

N是高斯分布;

μ

Σ

k是第k个聚类;以及

π

使用预期最大化算法,通过确定具有最大后验概率的参数,可以迭代地解决这个问题。迭代算法的示例如下:

1.对每个k分布进行μ

2.在“预期”步骤中,评估:

EQ.2:

3.在“最大化”步骤中,使用上述γ(z

EQ.3(a):

EQ.3(b):

EQ.3(c):

其中:

EQ.3(d):

4.计算对数似然并检查收敛:

EQ.4:

5.当它收敛时,最终参数是:

EQ.5(a):

EQ.5(b):

EQ.5(c):

其中:

EQ.5(d):

基于对该高斯混合聚类问题的解决方案,可以添加伪装存储器存取以增加对神经网络存储器存取的保护。例如,可以使用类似的模糊正常存储器存取(其遵循与神经网络存储器存取模式相同的模式),或者用于存储现有网络数据块的存储器块的重新选择可以使存储器存取模式更接近应用存储器存取模式或系统存储器存取模式。

图6A-6C提供了示出根据一个或多个实施例的涉及存储器内神经网络保护的示例方法600、620和640的流程图,参考本文所描述的组件和特征,包括但不限于附图和关联的描述。方法600、620和/或640通常可以在系统100(图1,已经讨论过)、系统10(本文参考图7描述)中,和/或使用CPU、GPU、AI加速器、FPGA加速器、ASIC中的一个或多个,和/或经由具有软件的处理器,或具有软件的处理器和FPGA或ASIC的组合来实现。更特别地,方法600、620和/或640可以在一个或多个模块中实现为逻辑指令集,所述指令集被存储在诸如RAM、只读存储器ROM、PROM、固件、闪存等的非暂时性机器或计算机可读存储介质中,存储在诸如例如PLA、FPGA、CPLD之类的可配置逻辑中,存储在使用诸如例如ASIC、通用微处理器或TTL技术之类的电路技术的固定功能性逻辑硬件中,或者存储在它们的任何组合中。此外,可配置的和/或固定功能性的硬件可以经由CMOS技术来实现。

例如,执行方法600、620和/或640中所示的操作的计算机程序代码可以用一种或多种编程语言的任何组合来编写,这些编程语言包括面向对象的编程语言(诸如JAVA、SMALLTALK、C++等)以及常规的过程编程语言(诸如“C”编程语言或类似的编程语言)。此外,逻辑指令可以包括汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微码、状态设置数据、用于集成电路的配置数据、使电子电路和/或对硬件固有的其他结构组件(例如,主机处理器、中央处理单元/CPU、微控制器等)个性化的状态信息。

转到图6A,示出了用于存储器内神经网络保护的方法600的图解。所示的处理框605规定在存储器中生成具有多个存储器块的神经网络存储器结构。多个存储器块可以被组织成存储器块的多个群组。对于每个群组,相应群组中的存储器块可具有从多个块大小中选择的块大小。存储器块的多个群组可以在堆栈空间和堆空间之间划分。所示的处理框610规定基于随机化的存储器存储模式在多个存储器块之间散布神经网络。所示的处理框615规定基于神经网络存储器存取模式在多个存储器块之间重新混洗神经网络。

现在转到图6B,示出了用于散布神经网络的方法620的图解。所示的方法620通常可以替代所示处理框610的全部或至少一部分(图6A,已经讨论过)。在所示的处理框625,神经网络的每层都被划分为多个组块。所示的处理框630对于每层规定基于所述随机化的存储器存储模式,为所述多个组块中的每个组块选择所述多个存储器块中的一个。所示的处理框635规定将每个组块存储在相应选择的存储器块中。对于每个组块,该组块的数据可以被加密,然后被存储在相应选择的存储器块中。

现在转到图6C,示出了用于重新混洗神经网络的方法640的图解。所示的方法640通常可以替代所示处理框615的全部或至少一部分(图6A,已经讨论过)。在所示的处理框645,在一段时间内测量神经网络的存储器存取。所示的处理框650规定基于对于神经网络测量的存储器存取来确定神经网络存储器存取模式。所示的处理框655规定将所确定的神经网络存储器存取模式和另一存储器存取模式进行比较。该另一存储器存取模式可以基于例如用于总体系统或用于AI应用的存储器存取模式。所示的处理框660规定基于该比较而将存储的组块中的一个或多个组块的数据移动到多个存储器块中的一个或多个未使用的存储器块。方法640可以在周期性基础上重复。重新混洗神经网络模型可以包括基于所确定的神经网络存储器存取模式插入一个或多个伪装存储器存取。

图7示出了图示根据一个或多个实施例的用于存储器内神经网络保护的示例计算系统10的框图,参考了本文所描述的组件和特征,包括但不限于附图和关联的描述。系统10通常可以是电子装置/平台的一部分,所述电子装置/平台具有计算和/或通信功能性(例如,服务器、云基础设施控制器、数据库控制器、笔记本计算机、台式计算机、个人数字助理/PDA、平板计算机、可变形平板电脑、智能电话等)、成像功能性(例如,相机、摄像机)、媒体播放功能性(例如,智能电视/TV)、可穿戴功能性(例如,手表、眼镜、头饰、鞋类、珠宝)、车辆功能性(例如,汽车、卡车、摩托车)、机器人功能性(例如,自主机器人)、物联网(IoT)功能性等、或它们的任何组合。在所示的示例中,系统10可以包括主机处理器12(例如,中央处理单元/CPU),该处理器具有可以耦合到系统存储器20的集成存储器控制器(IMC)14。主机处理器12可以包括任何类型的处理装置,诸如例如微控制器、微处理器、RISC处理器、ASIC等,连同关联的处理模块或电路。系统存储器20可以包括任何非暂时性机器或计算机可读存储介质(诸如例如RAM、ROM、PROM、EEPROM、固件、闪存等)、可配置逻辑(诸如例如PLA、FPGA、CPLD)、使用电路技术(诸如例如ASIC、CMOS或TTL技术)的固定功能性硬件逻辑、或者适合于存储指令28的它们的任何组合。

系统10还可以包括输入/输出(I/O)子系统16。I/O子系统16可以与例如一个或多个输入/输出(I/O)装置17、网络控制器24(例如,有线和/或无线NIC)和存储装置22通信。存储装置22可以包括任何适当的非暂时性机器或计算机可读存储器类型(例如,闪存、DRAM、SRAM(静态随机存取存储器)、固态驱动器(SSD)、硬盘驱动器(HDD)、光盘等)。存储装置22可以包括大容量存储装置。在一些实施例中,主机处理器12和/或I/O子系统16可以经由网络控制器24与存储装置22(其全部或部分)通信。在一些实施例中,系统10还可以包括图形处理器26(例如,图形处理单元/GPU)。在一些实施例中,系统10还可以包括图形处理器26(例如,图形处理单元/GPU)和AI加速器27。在一个实施例中,系统10还可以包括视觉处理单元(VPU),未示出。

主机处理器12和I/O子系统16可以一起在半导体管芯上被实现为片上系统(SoC)11,以实线包围示出。SoC 11因此可以操作为用于存储器内神经网络保护的计算设备。在一些实施例中,SoC 11还可以包括系统存储器20、网络控制器24和/或图形处理器26中的一个或多个(以虚线包围示出)。在一些实施例中,SoC 11还能包括系统10的其他组件。

主机处理器12和/或I/O子系统16可以执行从系统存储器20和/或存储装置22检索的程序指令28,以执行过程400、过程500、过程510、过程540、过程600、过程620和/或过程640的一个或多个方面。系统10可以实现系统100、存储器结构200、存储器结构220、存储器结构250、散布神经网络300和/或散布神经网络320的一个或多个方面。因此,系统10被认为是性能增强的,至少在该技术提供了对可操作神经网络的增强保护以对抗恶意用户的意义上。

用于执行上述过程的计算机程序代码可以用一种或多种编程语言的任何组合来编写,编程语言包括面向对象的编程语言(诸如JAVA、JAVASCRIPT、PYTHON、SMALLTALK、C++等)和/或常规的过程编程语言(诸如“C”编程语言或类似编程语言),并且被实现为程序指令28。附加地,程序指令28可以包括汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、状态设置数据、用于集成电路的配置数据、使电子电路和/或对硬件固有的其他结构组件(例如,主机处理器、中央处理单元/CPU、微控制器、微处理器等)个性化的状态信息。

I/O装置17可以包括其中一个或多个输入装置,诸如触摸屏、键盘、鼠标、光标控制装置、触摸屏、麦克风、数码相机、录像机、便携式摄像机、生物扫描仪和/或传感器;输入装置可用于录入信息,并与系统10和/或其他装置交互。I/O装置17还可以包括其中一个或多个输出装置,诸如显示器(例如,触摸屏、液晶显示器/LCD、发光二极管/LED显示器、等离子面板等)、扬声器和/或其他视觉或音频输出装置。输入和/或输出装置可以用于例如提供用户接口。

图8示出了图示根据一个或多个实施例的用于存储器内神经网络保护的示例半导体设备30的框图,参考了本文所描述的组件和特征,包括但不限于附图和关联的描述。半导体设备30可以被实现为例如芯片、管芯或其他半导体封装。半导体设备30可以包括由例如硅、蓝宝石、砷化镓等组成的一个或多个衬底32。半导体设备30还可以包括逻辑34,该逻辑34由耦合到(一个或多个)衬底32的(一个或多个)晶体管阵列和其他集成电路(IC)组件组成。逻辑34可以至少部分用可配置逻辑或固定功能性逻辑硬件实现。逻辑34可以实现上面参考图7描述的片上系统(SoC)11。逻辑34能实现上面描述的过程(包括过程400、过程500、过程510、过程540、过程600、过程620和/或过程640)的一个或多个方面。逻辑34可以实现系统100、存储器结构200、存储器结构220、存储器结构250、散布神经网络300和/或散布神经网络320的一个或多个方面。因此,设备30被认为是性能增强的,至少在该技术提供了对可操作神经网络的增强保护以对抗恶意用户的意义上。

可以使用任何适当的半导体制造工艺或技术来构造半导体设备30。例如,逻辑34可以包括位于(例如,嵌入)(一个或多个)衬底32内的晶体管沟道区域。从而,逻辑34与(一个或多个)衬底32之间的接口可能不是突变结。逻辑34还可以被认为包括在(一个或多个)衬底34的初始晶片上生长的外延层。

图9是示出根据一个或多个实施例的示例处理器核40的框图,参考本文描述的组件和特征,包括但不限于附图和关联的描述。处理器核40可以是任何类型的处理器的核,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、图形处理单元(GPU)或执行代码的其他装置。虽然在图9中仅示出了一个处理器核40,但是处理元件备选地可以包括多于一个的图9所示的处理器核40。处理器核40可以是单线程核,或者,对于至少一个实施例,处理器核40可以是多线程的,因为它可以包括每核多于一个的硬件线程上下文(或者“逻辑处理器”)。

图9还示出了耦合到处理器核40的存储器41。存储器41可以是本领域技术人员已知的或以其他方式可用的各种各样的存储器(包括存储器层级结构的各种层)中的任何一种。存储器41可以包括要由处理器核40执行的一个或多个代码42(一个或多个)指令。代码42可以实现过程400、过程500、过程510、过程540、过程600、过程620和/或过程640的一个或多个方面。处理器核40可以实现系统100、存储器结构200、存储器结构220、存储器结构250、散布神经网络300和/或散布神经网络320的一个或多个方面。处理器核40可以遵循由代码42指示的指令的程序序列。每个指令可以进入前端部分43,并且由一个或多个解码器44处理。解码器44可以作为其输出生成微操作,诸如以预定义格式的固定宽度微操作,或者可以生成反映原始代码指令的其他指令、微指令或控制信号。所示的前端部分43还包括寄存器重命名逻辑46和调度逻辑48,它们通常分配资源并将对应于转换指令的操作进行排队以供执行。

处理器核40被示为包括具有执行单元55-1至55-N的集合的执行逻辑50。一些实施例可以包括专用于特定功能或功能集的多个执行单元。其他实施例可以包括仅一个执行单元或可以执行特定功能的一个执行单元。所示的执行逻辑50执行由代码指令所规定的操作。

在完成由代码指令所规定的操作的执行后,后端逻辑58引退代码42的指令。在一个实施例中,处理器核40允许无序执行,但要求指令的按顺序引退。引退逻辑59可以采取本领域技术人员已知的各种形式(例如给缓冲器重新排序等)。以这种方式,处理器核40在代码42执行期间被变换,至少在由解码器生成的输出、由寄存器重命名逻辑46利用的硬件寄存器和表、以及由执行逻辑50修改的任何寄存器(未示出)方面被变换。

尽管图9中未示出,但是处理元件可以在具有处理器核40的芯片上包括其他元件。例如,处理元件可以包括存储器控制逻辑连同处理器核40。处理元件可以包括I/O控制逻辑,和/或可以包括与存储器控制逻辑集成的I/O控制逻辑。处理元件还可以包括一个或多个高速缓存。

图10是示出根据一个或多个实施例的基于多处理器的计算系统60的示例的框图,参考本文描述的组件和特征,包括但不限于附图和关联的描述。多处理器系统60包括第一处理元件70和第二处理元件80。虽然示出了两个处理元件70和80,但是要理解,系统60的实施例还能包括仅一个这样的处理元件。

系统60被图示为点对点互连系统,其中第一处理元件70和第二处理元件80经由点对点互连71耦合。应该理解,图10所示的任何或所有互连能被实现为多点总线,而不是点对点互连。

如图10所示,处理元件70和80中的每一个可以是多核处理器,包括第一处理器核和第二处理器核(即,处理器核74a和74b以及处理器核84a和84b)。这样的核74a、74b、84a、84b能被配置成以类似于上面结合图9讨论的方式来执行指令代码。

每个处理元件70、80能包括至少一个共享高速缓存99a、99b。共享高速缓存99a、99b能分别存储由处理器的一个或多个组件(诸如核74a、74b和84a、84b)利用的数据(例如指令)。例如,共享高速缓存99a、99b能本地高速缓存被存储在存储器62、63中的数据,以供处理器的组件更快地存取。在一个或多个实施例中,共享高速缓存99a、99b能包括一个或多个中级高速缓存,诸如2级(L2)、3级(L3)、4级(L4)或其他级别的高速缓存、最后一级高速缓存(LLC)和/或其组合。

虽然仅示出有两个处理元件70、80,但是要理解,实施例的范围不限于此。在其他实施例中,在给定处理器中能存在一个或多个附加处理元件。备选地,处理元件70、80中的一个或多个可以是不同于处理器的元件,诸如加速器或现场可编程门阵列。例如,(一个或多个)附加处理元件能包括与第一处理器70相同的(一个或多个)附加处理器、与第一处理器70异质或不对称的(一个或多个)附加处理器、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理元件。在处理元件70、80之间,在包括架构、微架构、热、功耗特性等的一系列品质度量方面,可能存在各种差异。这些差异能有效地将它们自己表现为处理元件70、80之间的不对称性和异质性。对于至少一个实施例,各种处理元件70、80能驻留在同一管芯封装中。

第一处理元件70能进一步包括存储器控制器逻辑(MC)72和点对点(P-P)接口76和78。类似地,第二处理元件80能包括MC 82和P-P接口86和88。如图10所示,MC 72和82将处理器耦合到相应存储器,即存储器62和存储器63,它们可以是本地附接到相应处理器的主存储器的部分。虽然MC 72和82被示为被集成到处理元件70、80中,但对于备选实施例,MC逻辑可以是处理元件70、80外部的分立逻辑,而不是被集成在其中。

第一处理元件70和第二处理元件80能分别经由P-P互连76和86耦合到I/O子系统90。如图10所示,I/O子系统90包括P-P接口94和98。更进一步,I/O子系统90包括将I/O控制逻辑90与高性能图形引擎64耦合的接口92。在一个实施例中,总线73能用于将图形引擎64耦合到I/O子系统90。备选地,点对点互连1039能耦合这些组件。

I/O子系统90又能经由接口96耦合到第一总线65。在一个实施例中,第一总线65可以是外围组件互连(PCI)总线,或者是诸如PCI快速总线的总线,或者是另一第三代I/O互连总线,尽管实施例的范围不限于此。

如图10所示,各种I/O装置65a(例如,生物扫描仪、扬声器、相机和/或传感器)能耦合到第一总线65,连同能将第一总线65耦合到第二总线67的总线桥66。在一个实施例中,第二总线67可以是低引脚计数(LPC)总线。在一个实施例中,各种装置能耦合到第二总线67,包括例如键盘/鼠标67a、(一个或多个)通信装置67b和数据存储单元68,数据存储单元68诸如是盘驱动器或能包括代码69的其他大容量存储装置。所示的代码69能实现上面描述的过程(包括过程400、过程500、过程510、过程540、过程600、过程620和/或过程640)的一个或多个方面。所示的代码69能类似于已经讨论过的代码42(图9)。另外,音频I/O 67c能耦合到第二总线67,并且电池61能向计算系统60供电。系统60可以实现系统100、存储器结构200、存储器结构220、存储器结构250、散布神经网络300和/或散布神经网络320的一个或多个方面。

注意,也考虑了其他实施例。例如,代替图10的点对点架构,系统能实现多点总线或另一这样的通信拓扑。此外,图10的元件备选地能使用比图10所示的更多或更少的集成芯片来分区。

包括系统10、半导体设备30、处理器核40、系统60、系统100、存储器结构200、存储器结构220、存储器结构250、散布神经网络300、散布神经网络320、过程400、过程500、过程510、过程540、过程600、过程620和/或过程640和/或任何其他系统组件的上述系统、装置、组件和/或方法中的每个的实施例能用硬件、软件或它们的任何合适的组合来实现。例如,硬件实现能包括可配置逻辑,诸如例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑装置(CPLD)或使用诸如例如专用集成电路(ASIC)、通用微处理器或TTL技术之类的电路技术的固定功能性逻辑硬件,或它们的任何组合。此外,可配置的和/或固定功能性的硬件可以经由CMOS技术来实现。

备选地或附加地,前述系统和/或组件和/或方法的全部或部分能在一个或多个模块中实现为被存储在机器或计算机可读存储介质(诸如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪存等)中的、要由处理器或计算装置执行的逻辑指令集。例如,用于执行组件的操作的计算机程序代码能用一个或多个操作系统(OS)可应用/适当的编程语言的任何组合来编写,所述编程语言包括面向对象的编程语言(诸如PYTHON、PERL、JAVA、SMALLTALK、C++、C#等)以及常规的过程编程语言(诸如“C”编程语言或类似的编程语言)。

附加注释和示例:

示例1包括计算系统,该计算系统包括用于存储神经网络的存储器和用于执行指令的处理器,所述指令使计算系统:在存储器中生成具有多个存储器块的神经网络存储器结构,基于随机化的存储器存储模式在多个存储器块之间散布神经网络,以及基于神经网络存储器存取模式在多个存储器块之间重新混洗神经网络。

示例2包括示例1的计算系统,其中所述多个存储器块被组织成存储器块的多个群组,并且其中对于每个群组,相应群组中的存储器块具有从多个块大小中选择的块大小。

示例3包括示例1的计算系统,其中所述多个存储器块被组织成存储器块的多个群组,并且其中所述存储器块的多个群组在堆栈空间和堆空间之间被划分。

示例4包括示例1的计算系统,其中散布神经网络模型包括:将神经网络的每层划分为多个组块;对于每层,基于随机化的存储器存储模式为多个组块中的每个组块选择多个存储器块中的一个;以及将每个组块存储在相应选择的存储器块中。

示例5包括示例4的计算系统,其中所述指令在被执行时进一步使所述计算系统针对每个组块,对存储在所述相应选择的存储器块中的所述组块的数据进行加密。

示例6包括示例1的计算系统,其中重新混洗神经网络模型包括:测量一段时间内对于神经网络的存储器存取;基于对于神经网络测量的存储器存取来确定神经网络存储器存取模式;将所确定的神经网络存储器存取模式与另一存储器存取模式进行比较;以及基于该比较,将所存储的组块中的一个或多个组块的数据移动到所述多个存储器块中的一个或多个未使用的存储器块。

示例7包括示例6的计算系统,其中所述指令在被执行时进一步使所述计算系统重复对所述神经网络的重新混洗。

示例8包括示例1-7中任一项的计算系统,其中重新混洗所述神经网络模型进一步包括基于所确定的神经网络存储器存取模式插入一个或多个伪装存储器存取。

示例9包括至少一个计算机可读存储介质,该计算机可读存储介质包括指令集,所述指令当由计算系统执行时,使所述计算系统:在存储器中生成具有多个存储器块的神经网络存储器结构;基于随机化的存储器存储模式在多个存储器块之间散布神经网络;以及基于神经网络存储器存取模式在多个存储器块之间重新混洗神经网络。

示例10包括示例9的至少一个计算机可读存储介质,其中所述多个存储器块被组织成存储器块的多个群组,并且其中对于每个群组,相应群组中的存储器块具有从多个块大小中选择的块大小。

示例11包括示例9的至少一个计算机可读存储介质,其中所述多个存储器块被组织成存储器块的多个群组,并且其中所述存储器块的多个群组在堆栈空间和堆空间之间被划分。

示例12包括示例9的至少一个计算机可读存储介质,其中散布神经网络模型包括:将神经网络的每层划分为多个组块;对于每层,基于随机化的存储器存储模式为多个组块中的每个组块选择多个存储器块中的一个;以及将每个组块存储在相应选择的存储器块中。

示例13包括示例12的至少一个计算机可读存储介质,其中所述指令在被执行时进一步使所述计算系统针对每个组块,对存储在所述相应选择的存储器块中的所述组块的数据进行加密。

示例14包括示例9的至少一个计算机可读存储介质,其中重新混洗神经网络模型包括:测量一段时间内对于神经网络的存储器存取;基于对于神经网络测量的存储器存取来确定神经网络存储器存取模式;将所确定的神经网络存储器存取模式与另一存储器存取模式进行比较;以及基于该比较,将所存储的组块中的一个或多个组块的数据移动到所述多个存储器块中的一个或多个未使用的存储器块。

示例15包括示例14的至少一个计算机可读存储介质,其中所述指令在被执行时进一步使所述计算系统重复对所述神经网络的重新混洗。

示例16包括示例9-15中任一项的至少一个计算机可读存储介质,其中重新混洗所述神经网络模型进一步包括基于所确定的神经网络存储器存取模式插入一个或多个伪装存储器存取。

示例17包括一种方法,所述方法包括:在存储器中生成具有多个存储器块的神经网络存储器结构,基于随机化的存储器存储模式在多个存储器块之间散布神经网络,以及基于神经网络存储器存取模式在多个存储器块之间重新混洗神经网络。

示例18包括示例17的方法,其中所述多个存储器块被组织成存储器块的多个群组,并且其中对于每个群组,相应群组中的存储器块具有从多个块大小中选择的块大小。

示例19包括示例17的方法,其中所述多个存储器块被组织成存储器块的多个群组,并且其中所述存储器块的多个群组在堆栈空间和堆空间之间被划分。

示例20包括示例17的方法,其中散布神经网络模型包括:将神经网络的每层划分为多个组块;对于每层,基于随机化的存储器存储模式为多个组块中的每个组块选择多个存储器块中的一个;以及将每个组块存储在相应选择的存储器块中。

示例21包括示例20的方法,进一步包括:针对每个组块,对存储在所述相应选择的存储器块中的所述组块的数据进行加密。

示例22包括示例17的方法,其中重新混洗神经网络模型包括:测量一段时间内对于神经网络的存储器存取;基于对于神经网络测量的存储器存取来确定神经网络存储器存取模式;将所确定的神经网络存储器存取模式与另一存储器存取模式进行比较;以及基于该比较,将所存储的组块中的一个或多个组块的数据移动到所述多个存储器块中的一个或多个未使用的存储器块。

示例23包括示例22的方法,进一步包括:重复对所述神经网络的重新混洗。

示例24包括示例17-23中任一项的方法,其中重新混洗所述神经网络模型进一步包括基于所确定的神经网络存储器存取模式插入一个或多个伪装存储器存取。

示例25包括一种设备,所述设备包括:用于执行如权利要求17-23中任一项所述的方法的部件。

示例26包括半导体设备,该半导体设备包括一个或多个衬底和耦合到一个或多个衬底的逻辑,其中该逻辑至少部分地在一个或多个可配置逻辑或固定功能性硬件逻辑中实现,所述逻辑用于:在存储器中生成具有多个存储器块的神经网络存储器结构;基于随机化的存储器存储模式在多个存储器块之间散布神经网络;以及基于神经网络存储器存取模式在多个存储器块之间重新混洗神经网络。

示例27包括示例26的半导体设备,其中所述多个存储器块被组织成存储器块的多个群组,并且其中对于每个群组,相应群组中的存储器块具有从多个块大小中选择的块大小。

示例28包括示例26的半导体设备,其中所述多个存储器块被组织成存储器块的多个群组,并且其中所述存储器块的多个群组在堆栈空间和堆空间之间被划分。

示例29包括示例26的半导体设备,其中散布神经网络模型包括:将神经网络的每层划分为多个组块;对于每层,基于随机化的存储器存储模式为多个组块中的每个组块选择多个存储器块中的一个,并且将每个组块存储在相应选择的存储器块中。

示例30包括示例29的半导体设备,其中所述逻辑进一步用于针对每个组块对存储在所述相应选择的存储器块中的所述组块的数据进行加密。

示例31包括示例26的半导体设备,其中重新混洗神经网络模型包括:测量一段时间内对于神经网络的存储器存取;基于对于神经网络测量的存储器存取来确定神经网络存储器存取模式;将所确定的神经网络存储器存取模式与另一存储器存取模式进行比较;并且基于该比较,将所存储的组块中的一个或多个组块的数据移动到所述多个存储器块中的一个或多个未使用的存储器块。

示例32包括示例31的半导体设备,其中所述逻辑进一步用于重复对神经网络的重新混洗。

示例33包括示例26-32中任一项的半导体设备,其中重新混洗所述神经网络模型进一步包括基于所确定的神经网络存储器存取模式插入一个或多个伪装存储器存取。

示例33包括示例26的半导体设备,其中耦合到一个或多个衬底的逻辑包括位于一个或多个衬底内的晶体管沟道区域。

实施例适用于所有类型的半导体集成电路(“IC”)芯片。这些IC芯片的示例包括但不限于处理器、控制器、芯片集组件、PLA、存储器芯片、网络芯片、片上系统(SoC)、SSD/NAND控制器ASIC等。此外,在其中一些附图中,信号导线用线表示。一些可以是不同的,以指示更多的组成信号路径,具有数字标签,以指示多个组成信号路径,和/或在一端或多端具有箭头,以指示主要信息流方向。然而,这不应被视为以限制的方式。而是,这样添加的细节可以结合一个或多个示例性实施例使用,以促进更容易理解电路。任何表示的信号线,无论是否具有附加信息,实际上都可以包括可以在多个方向上传播的一个或多个信号,并且可以用任何合适类型的信号方案来实现,例如用差分对、光纤线和/或单端线实现的数字线或模拟线。

可能已经给出了示例大小/模型/值/范围,尽管实施例不限于此。当制造技术(例如光刻法)随着时间成熟时,预期可制造大小更小的装置。此外,为了简化图示和讨论,并且以免模糊了实施例的某些方面,附图内可能示出或者可能未示出总所周知的到IC芯片和其他组件的电源/接地连接。另外,为了避免模糊实施例,并且也鉴于关于这种框图布置的实现的细节高度依赖于将在其中实现实施例的平台的事实,可以以框图形式示出布置,即,这种细节应该完全在本领域技术人员的视界内。在阐述特定细节(例如,电路)以便描述示例实施例的情况下,对本领域技术人员应该显而易见的是,可以在没有这些特定细节的情况下或者具有这些特定细节的变型的情况下来实践实施例。从而,该描述被视为说明性的,而不是限制性的。

术语“耦合”在本文可以用来指所谈及的组件之间的任何类型的直接或间接的关系,并且可以应用于电、机械、流体、光、电磁、机电或其他连接,包括经由中间组件的逻辑连接(例如,装置A可以经由装置B耦合到装置C)。此外,术语“第一”、“第二”等在本文中可以仅用于促进讨论,并没有携带特定的时间或时间顺序意义,除非另有指示。

如在本申请中和权利要求书中所使用的,由术语“中的一个或多个”连接的项目列表可以意味着所列项目的任何组合。例如,短语“A、B或C中的一个或多个”可以意味着A、B、C;A和B;A和C;B和C;或者A、B和C。

本领域技术人员将从前面的描述中领会,实施例的广泛技术能以各种形式实现。因此,虽然实施例已经结合其特定示例进行了描述,但实施例的真正范围不应该被如此限制,因为在研究了附图、说明书和如下权利要求书后,其他修改对本领域从业人员将变得显而易见。

技术分类

06120116541896