存储器访问的制作方法

文档序号:23396011发布日期:2020-12-22 14:04阅读:85来源:国知局
存储器访问的制作方法

本公开涉及用于管理数据处理的方法和装置。



背景技术:

用于实施卷积神经网络的处理器(例如神经处理单元(npu)、中央处理单元(cpu)、图形处理单元(gpu)、数字信号处理器(dsp)和协处理器)具有板上存储器,通常以静态随机存取存储器(sram)的形式。当使用这种处理器实施卷积神经网络时,可能无法将所有数据(例如,包括输入数据、输出数据和与卷积神经网络中涉及的操作相对应的数据)都保持在处理器存储器(memory)上。至少一些数据可以存储在处理器外部的存储器中,这可以包括易失性和非易失性存储器。当执行卷积神经网络时,处理器可以访问外部存储器。处理器可以具有关联的存储装置(storage)(例如高速缓存,也称为转换后备缓冲器),其存储与存储器中的位置相对应的存储器地址转换。存储器地址转换用于将处理器使用的存储器地址转换为标识存储关联的数据的存储器的部分的存储器地址。使用虚拟存储器可以使分散的物理存储器位置看起来是连续的。它们还可以允许在同一虚拟地址上运行的处理访问存储在物理存储器的不同部分中的数据的不同版本。由于大小限制,存储装置可能无法存储所有存储器地址位置的存储器地址转换。大小限制可能由所需的属性(例如,所需的访问速度、面积或成本)强加。在要访问存储器位置并且关联的存储器地址转换未被存储在存储装置中的情况下,提取存储器地址转换使得可以访问存储器位置。提取可以包括访问辅助的较大的存储装置,例如较大的高速缓存,或者可能涉及访问包括用于较大系统的存储器地址转换的主页表。

期望在实施卷积神经网络时提高存储器访问的效率。



技术实现要素:

根据本公开的第一方面,提供了一种用于管理存储器访问的方法,该方法用于使用处理器对输入数据实施卷积神经网络的至少一层以生成输出数据,该方法至少包括:基于卷积神经网络的至少一个或多个特征,预测与处理器外部的存储器的部分相关的访问过程;以及响应于该预测,在所预测的访问过程之前,执行用于获取与存储器的部分相对应的存储器地址转换并且将存储器地址转换存储在存储装置中的操作。

根据本公开的第二方面,提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质包括指令,该指令在由处理器执行时使处理器至少:基于卷积神经网络的至少一个或多个特征预测与处理器外部的存储器的部分相关的访问过程,用于对输入数据实施卷积神经网络的至少一层以生成输出数据;响应于该预测,在所预测的访问过程之前,执行用于获取与存储器的部分相对应的存储器地址转换并将存储器地址转换存储在存储装置中的操作。

根据本公开的第三方面,提供了一种装置,包括:至少一个处理器,用于对输入数据实施卷积神经网络的至少一层以生成输出数据;以及用于存储多个存储器地址转换的存储装置,其中,该装置被配置为:基于卷积神经网络的至少一个或多个特征,预测与至少一个处理器外部的存储器的部分相关的访问过程;响应于该预测,在所预测的访问过程之前,执行用于获取与存储器的部分相对应的存储器地址转换并将存储器地址转换存储在存储装置中的操作。

附图说明

通过以下参照附图进行的优选实施例的描述(仅通过示例给出),其他特征和优点将变得显而易见,在附图中,相同的附图标记用于表示相同的特征。

图1是示出根据示例的装置的示意图;

图2是示出根据示例的方法的流程图;

图3是根据示例的要使用卷积神经网络处理的图像的示意图;

图4a是示出根据示例的简化的卷积神经网络的实现方式的示意图;

图4b是示出根据示例的卷积处理的示意图;

图5是示出根据示例的卷积神经网络的实现方式的示意图;

图6是根据示例的包括特征的系统的示意图;

图7是根据示例的包括特征的系统的示意图;以及

图8是根据示例的非暂态计算机可读存储介质的示意图。

具体实施例

根据以下参考附图的描述,根据示例的系统和方法的细节将变得显而易见。在该描述中,出于解释的目的,阐述了某些示例的许多具体细节。说明书中对“示例”或类似语言的引用是指结合该示例描述的特征、结构或特性至少包括在该一个示例中,但不一定要包括在其他示例中。应当进一步注意的是,示意性地描述了某些示例,其中某些特征被省略和/或必要地简化以便于解释和理解示例背后的概念。

本文描述的某些示例提供了一种用于存储与存储器的部分相对应的存储器地址转换的方法,当实施卷积神经网络的至少一层时,该存储器地址转换随后要在存储装置中被访问,之后处理器访问存储器的部分。可以基于由处理器实施的卷积神经网络的一个或多个特征来确定存储器访问模式。在某些情况下,顺序访问的存储器的部分可能分散在存储器中,因此在可以访问这些存储器的部分之前,确定这些存储器的部分的地址可能会浪费时间。预测要访问的存储器的部分并在访问存储器的部分之前获取与存储器的部分相对应的存储器地址转换可以防止读取或写入操作被延迟或暂缓以确定相关的存储器的部分的地址。不希望延迟或暂缓读取或写入操作,因为这会降低处理吞吐量,从而降低处理效率并浪费功率。预测还可以指确定处理,例如基于卷积神经网络的至少一个特征的确定处理。实施卷积神经网络的至少一层可以包括训练阶段(对样本数据训练卷积神经网络)和推理阶段(使用卷积神经网络来处理数据和进行推理)。当与存储数据的方式相比,卷积神经网络无序地读取或写入数据时,本文描述的示例将特别有用。在这种情况下,将执行频繁的分散存储器访问。

当实施卷积神经网络的至少一层时,可以对各种数据执行存储器访问。本文描述的示例可适用于当读取和/或写入输入数据、输出数据、与卷积神经网络相关的数据(例如表示卷积神经网络的至少一层中的核心(kernel)的权重的数据)和/或偏差数据时对存储器的部分进行访问。输入数据可以涉及输入到卷积神经网络的第一层的数据和输入到卷积神经网络的每个后续层的数据。输入数据可以包括从一个或多个传感器(例如图像传感器、声音传感器)导出的传感器数据,和如下所述的其他合适形式的传感器数据。输入数据还可以包括通过对传感器数据执行操作而生成的输入特征图。在一些示例中,输入到卷积神经网络的第一层的数据可以是传感器数据,并且输入到卷积神经网络的后续层的数据可以被称为输入特征图。输出数据可以涉及从卷积神经网络的最后一层输出的数据以及在每个中间层执行卷积时输出的数据。当对来自传感器的输入数据或输入特征图实施卷积层时输出的数据可被称为一个或多个输出特征图。数据可以是压缩的或未压缩的。

本文描述的某些示例基于用于存储存储器地址转换的存储装置的大小来确定何时适合获取并存储随后将被访问的存储器地址转换。此外,可以从存储装置中移除存储器地址转换。在这种情况下,确定何时适合获取存储器地址转换并将存储器地址转换存储在存储装置中可以基于存储装置中存储器地址转换的保留和/或逐出策略。在一些实现方式中,仅将最相关的存储器地址转换存储在存储装置中可能具有高水平的精度。这可以允许减小存储装置的大小,进而减少在存储装置中查找存储器地址转换所花费的时间。存储器可以指易失性和非易失性存储器类型。存储器地址转换也可以被称为虚拟存储器地址转换或简称为虚拟地址转换。

图1是根据示例的装置100的示意图。装置100可以被包括在计算设备中。例如,装置100可以是诸如智能电话或平板设备之类的手持计算设备的一部分。在这些示例中,装置100可以用于对由智能电话或平板设备获取的数据实施卷积神经网络或卷积神经网络的至少一层。智能电话或平板设备可以获取的数据取决于设备的功能以及设备中包括的传感器。该数据可以包括图像数据、音频数据、遥测数据、加速度计数据、全球定位系统数据、磁力计数据、光传感器数据、指纹读取器数据、可由计算设备中包括的或计算设备上的本地传感器可以收集的任何其他数据、或通过计算设备中包括的有线或无线通信接口在局域网或广域网中可接收的任何数据。可选地,装置100可以用在另一种类型的计算设备中,例如在自动驾驶车辆中使用的计算设备中,或者在卷积神经网络用于处理控制数据、传感器反馈数据或提供任何其他合适的信息处理的机器人应用中。

装置100包括至少一个处理器110、用于存储多个存储器地址转换的存储装置120。存储器地址转换可以是虚拟存储器地址和物理存储器地址之间的转换。例如,使用虚拟存储器的情况。存储器地址转换可以对应于易失性存储器地址或非易失性存储器地址。替代地,与存储器转换相关联的存储器可以独立于至少一个非暂态计算机可读存储介质130。在其他示例中,存储器地址转换可以是不同虚拟存储器地址之间的转换。这可能是使用虚拟机实施卷积神经网络的情况。至少一个处理器110可以包括神经处理单元(npu),其也可以被称为ai加速器或神经网络处理单元。在其他示例中,至少一个处理器110可以包括被配置为至少在卷积神经网络的层上实施的另一形式的处理器。例如,至少一个处理器110可以包括cpu、gpu、dsp、协处理器或任何其他合适的处理器。存储装置120也可以被称为高速缓存或转换后备缓冲器。存储装置120可以是处理存储器地址转换的存储器管理单元(mmu)的部分。在其他示例中,存储装置120可以独立于mmu,但是可以与其通信。在某些示例中,存储装置120是服务至少处理器110的专用转换后备缓冲器,提供处理器110执行操作所使用的存储器地址转换。装置100可以包括或者可以是包括进一步的处理器和存储装置的设备的一部分,其中存储装置120服务至少一个处理器110,而不服务另外的处理器。

装置被配置为基于卷积神经网络的至少一个或多个特征来预测与至少一个处理器外部的存储器的部分相关的访问过程;以及响应于预测,在所预测的访问过程之前,执行用于获取与存储器的部分相对应的存储器地址转换并将存储器地址转换存储在存储装置120中的操作。至少一个处理器外部的存储器的部分可以是任何适当形式的存储器,包括易失性存储器(例如ram)和非易失性存储器(例如rom)。在一些示例中,装置100包括该存储器的部分。例如,装置100可以包括用于存储输入数据、输出数据和表示卷积神经网络的至少一部分的数据中的至少一些的存储器。在其他示例中,装置100可以通信地耦合到用于存储输入数据、输出数据和表示卷积神经网络的至少一部分的数据中的至少一些的存储器。所使用的存储器的类型可以由多个因素来确定,这些因素包括:存储输入数据的位置、可以确定是否能够将其存储在装置100的易失性存储器上的输入数据的大小、输出数据要被写入的位置、以及存储与卷积神经网络相对应的数据的位置。处理器110在实施卷积神经网络的至少一层时所执行的存储器访问可以是确定性的,但是存储器访问分散在存储器中。通过将随后要被访问的该存储器的部分的存储器地址转换存储在存储装置120中然后进行所预测的与该存储器的部分相关的访问过程,可以减少执行所预测的访问过程所花费的时间。当至少一个处理器110试图访问存储器的部分时,访问转换后备缓冲器或存储装置120以确定该存储器的部分的地址。如果该存储器的部分的存储器地址转换不在转换后备缓冲器120中,则处理器110无法直接访问该存储器的部分。相反地,存储器地址转换被提取,从而增加处理器从该存储器的部分读取数据和/或向该存储器的部分写入数据所花费的时间。提取存储器地址转换可以包括访问包括存储器地址转换的另外的存储装置,或者对包括装置100的系统执行包括存储器地址转换的主页表的页面遍历。当实施卷积神经网络的至少一层时,预取存储器地址转换可以提高装置100的效率。当实施卷积神经网络时,可能执行大量的存储器访问,并且这些存储器访问分散在整个存储器中,因此预取存储器地址转换可以提高系统的效率。

图2是用于管理存储器访问的方法200的流程图,该方法用于使用处理器对输入数据实施卷积神经网络的至少一层以生成输出数据。在框210处,该方法包括基于卷积神经网络的至少一个或多个特征来预测与处理器外部的存储器的部分相关的访问过程。在框220处,该方法包括:响应于该预测,在预测的访问过程之前,执行获取与存储器的部分相对应的存储器地址转换并且将存储器地址转换存储在存储装置中的操作。在预测的访问过程之前获取存储器地址转换并将存储器地址转换存储在存储装置中可以减少要执行的读取和/或写入操作(这些操作使用该存储器的部分)所花费的时间。由于在实施卷积神经网络时存储器访问具有确定性,因此可以基于卷积神经网络的至少一个或多个特征来预测与存储器的部分相关的访问过程。在实施卷积神经网络的至少一层时要访问的存储器的各部分分散在整个存储器的示例中,预取这些存储器的各部分的存储器地址转换可能特别有用。

现在将参照图3讨论本公开的应用的特定示例。图3示意性地示出了由图像数据表示的图像300。图像数据可以包括表示多个像素位置的多个像素强度值。表示图像300的像素强度值可以以连续块的形式存储在存储器中。例如,每个像素位置的像素强度值可以与表示水平相邻像素位置的像素强度值一起连续地存储在存储器中。存储器可以包括任何适当的存储器,包括随机存取存储器(ram)、只读存储器(rom)、视频随机存取存储器(vram)、同步动态随机存取存储器(sdram)或任何其他适当类型的存储器存储器。

在图3所示的示例中,例如使用神经网络对图像300进行了部分处理,以检测图像中的对象并对其进行分类。对象检测的结果和对象的分类结果如图3所示,虚线框标识图像中检测到人的区域。然后使用卷积神经网络可以处理图像中这些标识的区域,以识别图像中的人。在该示例中,将对表示所标识的区域的图像数据实施卷积神经网络,以识别这些区域中的人。当对表示区域310的图像数据卷积神经网络的至少一层时,可以首先访问数据中表示像素位置310a的第一部分,然后可以顺序访问数据中表示沿同一行的像素位置的部分。数据中表示水平相邻像素位置的部分可以被连续地存储,使得在对数据中表示介于310a和310b之间的像素位置的那些部分时涉及非常少的处理。然而,数据中从像素位置310c开始的、表示下一行的部分可能不与数据中表示像素位置310b的部分连续地存储在物理存储器中。因此,可执行提取操作以提取与包括表示像素位置310c的数据的存储器的部分相对应的存储器地址转换。预测与包括表示像素位置310c的图像数据的存储器的部分相关的访问过程,并在所预测的访问过程之前获取与该存储器的部分相对应的存储器地址转换并将其存储在存储装置中,可以防止必须等待在访问相关的存储器的部分之前确定存储器地址转换。在一些示例中,预测与处理器外部的存储器的部分相关的访问过程是基于输入数据的至少一个特征的。卷积神经网络可用于处理各种不同类型的输入数据。输入数据的特征还可以影响访问模式,并且可以用于预测与存储器的部分相关的访问过程。在一些示例中,输入数据的至少一个特征包括输入数据在处理器外部的存储器中的存储配置。也就是说,输入数据的特征可以包括如何存储输入数据,例如是否连续存储输入数据、是否以特定模式存储输入数据、是否将输入数据存储在彼此不连续的块中、以及其他可能的布置。可用于预测访问过程的输入数据的其他特征可以包括输入数据是什么类型的数据,以及可用于预测要访问的存储器的部分的其他可能的特征。该方法还可以用于根据不同旋转(在不同旋转中,图像数据将被卷积神经网络使用)来存储图像数据的情况。例如,图像数据以行优先存储,但以列优先读取以进行处理。这也适用于输出数据,例如,其中输出数据是图像数据,并且输出数据是以列优先生成的,但以行优先存储的。

图4a是示出实施简单的卷积神经网络的层以生成输出数据的示意图,该简单的卷积神经网络具有与输入数据相关的单个特征图。将针对图像数据讨论图4a中所示的示例,然而,应当理解,本文描述的特征还可以应用于其他数据类型(例如音频数据)。

图4a示出了包括多个部分410a、410b、410c的输入数据410。例如,输入数据410可以是包括表示多个像素位置的多个像素强度值的图像数据。每个部分410a-410c可以表示不同的颜色通道。输入数据410a可以包括与绿色通道相对应的像素强度值,输入数据410b可以包括与红色通道相对应的像素强度值,输入数据410c可以包括与蓝色通道相对应的像素强度值。卷积神经网络可以包括表示核心的多个过滤器420。核心用于识别输入数据410中给定类型的特征。每个过滤器420a、420b、420c可以对应于各自的颜色通道,并且可以由矩阵表示。过滤器420可以用于处理输入数据410以检测图像中的特征。当实施卷积神经网络的层时,对输入数据410的部分41a中的第一部分执行与过滤器420a之间的卷积,其中卷积是将输入数据410a中与过滤器420a中的元素交叠的每个元素与其本地邻居相加的处理,此相加由滤波器420a的各个元素加权。然后,过滤器被移位至输入数据410a的第二部分,并重复该处理。过滤器420a移位的增量可以被称为步幅。执行该处理直到根据其大小和步幅将过滤器420a应用于所有输入数据410a为止,这将产生输出数据430a。对每个颜色通道执行该处理,从而导致输出数据430包括与各个颜色通道相对应的多个部分430a、430b、430c。实际上,过滤器420a、420b和420c可以被视为单个核心,其中在核心与输入数据的所有层之间执行一次卷积。在这种情况下,可以组合跨层的结果,使得可以生成单个输出特征图,即,具有单个部分的输出特征图。输出数据430可以被进一步处理或修改。

图4b更详细地示意性地示出了卷积处理。图4b示出了应用于输入数据410a的过滤器420a。图4b中的过滤器420a以1的步幅应用于输入数据410a,使得所得的输出数据430a将具有比输入数据410a更小的维度。在其他示例中,可以通过对输入数据410a应用填充来保持输入数据410a和输出数据43a之间的维度。输出数据430a的大小也可以通过池化来减小。在过滤器420a的每个位置处,根据过滤器420a的权重将输入数据410a中与过滤器交叠的值相加。例如,在位置440处,由卷积生成的输出数据包括在输出数据430a中位置435处显示的值-3。该值通过执行以下操作确定:

[(-1)*1]+[(0)*1]+[(1)*1]+[(0)*5]+[(1)*1]+[(0)*2]+[(-1)*6]+[(0)*2]+[(1)*2]。

参考图4b讨论的示例仅示出了输入数据的单个通道和所使用的核心。如上所述,实际上,过滤器420a、420b和420c可以用作单个核心。在这种情况下,以上计算的结果将与其他通道的类似计算一起累加。

当实施卷积神经网络的至少一层时,对输入数据执行的操作可能影响访问存储器各部分的顺序。在示例中,实施卷积神经网络的至少一层包括对输入数据执行多个操作,每个操作针对输入数据中多个部分中的至少一部分执行。将此与图4的示例相关联,输入数据的一部分可以与部分410a相关联。多个操作可以涉及过滤器420a与输入数据410a的部分的每个卷积。在这种情况下被执行用于实施卷积神经网络的至少一层的存储器访问可以由生成输出数据的量和/或顺序以及访问输入数据的量和/或顺序来确定。存储器访问还可以由访问表示卷积神经网络的核心的量和/或顺序来确定。卷积神经网络的一个或多个特征可以包括多个部分中的至少一个的大小。每个操作所操作的输入数据的部分的大小可以取决于正在使用的过滤器420a的大小。在一些示例中,由操作所操作的输入数据的部分可以包括多个通道。在这种情况下,由每个操作所操作的数据部分的大小可以取决于核心的大小,其中核心包括相应的多个过滤器。因此,卷积神经网络的一个或多个特征可以包括在卷积神经网络中使用的至少一个核心的大小、或维度。核心420的大小可能会影响输出数据430的大小。卷积神经网络的一个或多个特征还可以包括核心420的步幅、或在分别实施过滤器的示例中还可以包括这些过滤器中用于实施卷积神经网络的至少一层的至少一个过滤器。核心的一个或多个特征可以包括输入数据的哪些部分被包括在每个部分中。这可以由多个因素确定,这些因素包括:连续操作之间的交叠、是否添加填充、是否使用偏差、激活函数、是否使用池化以及包括部分的大小的其他因素。

在一些示例中,卷积神经网络的一个或多个特征包括输入数据的各部分要被访问以实施卷积神经网络的至少一层的顺序。访问输入数据的各部分的顺序可以与对输入数据执行用于生成输出数据的操作以实施卷积神经网络的至少一层的顺序有关。在输入数据太大而无法存储在处理器的板上存储装置中的情况下,当实施卷积神经网络的至少一层时,可以对输入数据进行流传输。也就是说,可以对输入数据进行分段,并且可以对分段的各部分分别实施卷积神经网络的至少一层,最后结果按顺序被存储或组合存储。要访问输入数据的各部分的顺序可以取决于对输入数据进行分段的方式。在一个实现方式中,可以在不同的通道中对输入数据进行流传输,例如,在输入数据是图像数据的情况下,图像数据可以被分成多个通道。在其他实现方式中,可以在通道组中对输入数据进行流传输。图4a所示的示例示出了被分成三个通道的输入数据410,但是在一些应用中,数据可以被分成比这更多的部分,例如六十四个部分。在该示例中,对输入数据进行流传输可以涉及首先对前三十二个部分进行操作,然后对后三十二个部分进行操作。在其他实现方式中,输入数据可以被分成图块(tile)。例如,在输入数据表示图像的情况下,图像可以被分成至少部分交叠的多个部分。卷积神经网络可以分别在多个部分中的每个部分上实施,然后在最后进行组合。在一些示例中,要对作为较大数据集的部分存储的输入数据实施卷积神经网络。

在示例中,卷积神经网络的一个或多个特征包括访问与卷积神经网络相对应的数据的顺序。

在示例中,卷积神经网络的一个或多个特征包括在实施卷积神经网络的至少一层时生成输出数据的各部分的顺序。当根据卷积神经网络生成输出数据或部分输出数据时,可以根据在过滤器或核心与输入数据之间执行的卷积来生成输出数据。可以根据预定的存储方案来存储该输出数据,其中输出数据的不同部分将与输出数据的其他预定部分一起存储。针对用于存储输出数据的存储器的部分将被随后访问的预测可以基于生成输出数据的顺序。

图5示意性地示出了卷积神经网络500的实施,该卷积神经网络500包括卷积神经网络的第一层中的多个特征图。如上所述,当实施卷积神经网络的至少一层时,可能无法在处理器上的存储器中存储所有输入数据和与核心相对应的数据。这可以通过多种方式克服,包括输入流传输、权重流传输或两者的组合。在输入数据无法全部存储在处理器上的存储器中的示例中,输入数据可以被划分为多个平面,并且可以被逐一地提取,这可以称为输入流传输。图5示出了输入数据510,其被分为多个部分510a、510b、510c、510d以被顺序发送到处理器。如果无法在处理器的上的存储器中存储与卷积神经网络的所有核心相对应的数据,则可以使用权重流传输。权重流传输是将与核心相对应的数据(例如组成核心的权重)按部分发送到处理器的处理。在该示例中,卷积神经网络的一个或多个特征可以包括表示卷积神经网络的至少一部分的数据的各部分将被访问以实施卷积神经网络的至少一层的顺序。表示卷积神经网络的至少一部分的数据可以包括权重、偏差数据和表示卷积神经网络的其他数据。核心520被分成多个部分,并且这些部分被逐一提取。图5示出了包括在卷积神经网络的第一层中的表示特征图的核心集520。每个特征图由可被分成多个部分的核心表示,例如特征图1由被分成多个部分522a、522b、522c、522d的核心k1表示。每个特征图可以表示为单个核心,然而,在图5所示的示例中,核心被分成与划分的输入数据的维度相对应的部分。核心k1的部分522a可以被应用于输入数据500a,核心k2的部分522b可以被应用于输入数据500b,核心k3的部分522c可以被应用于输入数据500c,并且核心k4的部分522d可以被应用于输入数据500d。在图5所示的示例中,以虚线示出的区域530中的核心k1至k4的部分可以是处理器在权重流传输时提取并使用的核心部分的第一集合。随后,提取的核心部分的下一集合可以是部分522b、524b、524c和524d。替代地,可以以不同的顺序来提取核心的部分,例如,部分522a、522b、522c和522c可以是在权重流传输时提取的核心部分的第一集合。核心部分的后续集合可以包括524a、524b、524c和524d。权重流传输可以以这种方式进行,直到进行所有卷积为止。

通过在核心k1至k4之间执行卷积而生成的输出数据(表示相应的特征图)以及输入数据510可以用作卷积神经网络的另一层的输入。如果权重流传输用于实施卷积神经网络的至少一层,则针对卷积神经网络的下一层,与读取数据的顺序相比,写出数据的顺序可能是无序的。这可以在图5中看到,其中通过在部分522a、524a、526a、528a与输入数据之间执行卷积而生成的输出数据540被示出在输入数据510和核心集合520的下方。当使用输出数据540作为到下一卷积层的输入时,可以根据540处虚线所示的平面来对输出数据540进行输入流传输。因此,期望连续地存储包括在每个平面中的数据。当生成数据542a的第一部分时,可以将其写入存储器的第一部分。存储器的第一部分可以是用于存储与水平面ofm1相对应的数据的存储器块的第一部分。预测与用于存储数据的第二部分544a的存储器部分相关的访问过程,并且响应于该预测,在用于存储与下一水平面ofm2相对应的数据的下一存储器块的开始处,可以执行获取并存储与存储器的部分相对应的存储器地址转换的操作。对于输出数据546a和548a的下两个部分重复该处理。然后针对权重流传输的核心部分的下一集合k1至k4重复该处理。该操作的结果是,数据的各部分542a、544a、546a、548a没有彼此连续地存储。而是,它们以如下顺序被存储在存储器中,该顺序对应于用作卷积神经网络的下一层的输入时它们被读取的顺序。

在替代的布置中,当在核心与输入数据之间执行卷积时生成的输出数据可以按照与其生成的顺序相同的顺序存储在存储器中。为了有效地将该数据作为输入流传输到卷积神经网络的另一层,如上所述的存储器访问管理方案可以用于该输入。存储器的第一部分可被访问以读取输入数据的第一部分。与和存储器的第一部分不相邻的存储器的第二部分相关的访问过程可被预测。响应于该预测,可以在所预测的与存储器的第二部分相关的访问过程之前,执行用于获取存储器的第二部分的存储器地址转换并将其存储在存储装置中的操作。这可以允许快速访问存储器的第二部分并读取其中的数据,而不会增加等待获取存储器地址转换的延迟。

在示例中,获取与存储器的部分相对应的存储器地址转换并将其存储在存储装置的操作是写入操作,其中该写入操作是空写入操作,使得没有数据被写入到该存储器的部分。空写入操作也可以被称为伪写入操作。伪写入操作可以是写入传输,其中所有字节通道选通都为低,使得没有数据被写入存储器。空写入操作可以由处理器执行,例如由处理器中专用于执行空写入操作的线程以用存储器地址转换来填充存储装置。由于空写入操作与当前存储器管理单元具有互操作性,因此可以使用空写入操作。使用空写入操作可以防止需要重新配置其他硬件和/或软件以与本文描述的存储器访问管理方案兼容。无论预测的访问过程的类型如何,都可以使用空写入操作。例如,在实施卷积神经网络的至少一层时,如果预测的访问过程是用于读取存储在相应的存储器的部分中的数据的读取过程,或者如果预测的访问过程是将数据写入存储器的部分的写入过程,都可以使用空写入操作。

在其他示例中,获取与存储器的部分相对应的存储器地址转换并将其存储在存储装置中的操作是读取该存储器的部分的读取操作。执行读取操作可以由处理器执行。处理器可以实施线程,该线程执行对在实施卷积神经网络的至少一层时随后要访问的存储器的各部分的读取操作。在预测的访问过程是将数据写入相应的存储器的部分的写入过程的情况下,可以在该存储器的部分要被访问之前的任何适当时间执行用于获取存储器地址转换并将其存储在存储装置中的读取操作。在该存储器的部分存储了卷积神经网络将要使用的数据(例如输入数据)的情况下,可以对读取操作进行计时,使得每次发送命令,从而使得存储在该存储器的部分中的数据在要被用于实施卷积神经网络的至少一层时被处理器接收。

在一些实现方式中,获取与存储器的部分相对应的存储器地址转换并将其存储在存储装置中的操作是用于获取存储器地址转换并将其存储在存储装置中的自定义操作。用于获取存储器地址转换并将其存储在存储装置中的自定义操作可以允许该操作放弃多余的通信协议并因此提高了操作效率。用于获取存储器地址转换并将其存储在存储装置中的自定义操作的示例包括2017年发布的高级微控制器总线体系结构(amba)5规范“ambaaxiandaceprotocolspecification(axi3,axi4,axi5,aceandace5)-armihi0022f.b(id122117)中提供的“stashtranslation”事务。如上述参考文献中所讨论的,stashtranslation事务可用于向存储器管理单元指示要获取对与事务一起提供的地址的转换。stashtranslation事务没有关联的数据传输。在地址写入(aw)通道上提供地址和控制信息。在写入响应(bresp)通道上提供单个响应。在接受地址后,将提供响应。在其他情况下,可以使用不同的自定义操作。在一些示例中,自定义操作也能够执行其他功能。

在一些实现方式中,该方法包括:根据与存储器的部分相关的进一步访问过程的预测以及对执行用于获取存储器地址转换并将其存储在存储装置的进一步操作的持续时间的预测中的至少一者,从存储装置中移除存储器地址转换。在某些情况下,可以从存储装置中移除存储器地址转换,以便为进一步的存储器地址转换释放空间,并防止存储装置变得太大。如果确定即将要随后访问相应的存储器的部分,则可能无法从存储装置中移除存储器地址转换。例如,在即将访问存储器的部分并且执行获取相应的存储器地址转换并将其存储在存储装置中的操作所花费的时间长于下一访问过程之前的时间,则可能无法从存储装置中移除存储器地址转换。然而,如果确定在相当长的时间内未访问存储器的部分,则可以从存储器中暂时移除其对应的存储器地址转换。

图6是示出本公开的特征的系统600的实现方式的简化示意图。图6示出了用于实施卷积神经网络的至少一层的处理器610。处理器610通信地耦合到用于存储存储器地址转换的存储装置620。图6中所示的存储装置620是微转换后备缓冲器,其存储存储器地址转换以供处理器610至少在实施卷积神经网络的至少一层时使用。示出了系统存储器管理单元630,其包括进一步的存储装置640,例如转换后备缓冲器。存储装置640可以大于存储装置620,并且可以存储更大数量的存储器地址转换。例如,存储装置640可以存储与由多个处理器和/或处理使用的存储器地址转换相对应的存储器地址转换。也就是说,系统存储器管理单元可以服务多个处理器。针对处理器使用第一较小的存储装置620可以允许更快地确定存储器地址转换,因为存储装置620中可以被扫描以找到存储器地址转换的条目的数量少于较大存储装置640中的条目的数量。提供了连接到存储器660的存储器访问控制器650。在示例中,处理器可以尝试访问存储器的部分以实施卷积神经网络的至少一层。微转换后备缓冲器620被访问以找到对应于该存储器的部分的存储器地址转换。如果微转换后备缓冲器620不包括相关的存储器地址转换,则转换后备缓冲器640可被扫描以确定相关的存储器地址转换。如果转换后备缓冲器640不包括相关的存储器地址转换,则例如在存储器660处,对系统600的包括存储器地址转换的主页表执行页表遍历。该处理增加了确定相关的存储器地址转换所花费的时间。期望确保在处理器610需要相关的存储器地址转换之前将相关的存储器地址转换存储在微转换后备缓冲器620中以实施卷积神经网络的至少一层。

图7示意性地示出了处理器710、包括第一多个存储器地址转换725的存储装置720、包括第二多个存储器地址转换735的存储器管理单元730和包括第三多个存储器地址转换745的主页表740。在示例中,存储器的部分是存储器的第一部分,存储器地址转换725a是第一存储器地址的转换,并且该方法包括执行与存储器的第一部分相关的预测的访问过程。该方法还包括至少基于卷积神经网络的一个或多个特征,预测与处理器710外部的存储器的第二部分相关的进一步访问过程。响应于执行关于存储器的第一部分的预测的访问过程,该方法包括:在所预测的与存储器的第二部分相关的进一步访问过程之前,执行获取与存储器的第二部分相对应的第二存储器地址转换725b并将第二存储器地址转换725b存储在存储装置中的操作。如图7的示例中所示,可以从第二多个存储器地址转换735和第三多个存储器地址745中的任何一个检索第二存储器地址转换。响应于所预测的与存储器的第一部分相关的访问过程而获取并存储第二存储器地址转换725b可以防止存储器地址转换725b在需要之前被存储很长时间,并且还可以允许第二存储器地址转换725b在需要之前存储在存储装置720中。

存储装置720可以是固定大小的,因此可以移除存储装置720中的条目以腾出空间用于要使用的未来存储器地址转换。在示例中,在执行所预测的与存储器的第二部分相关的进一步访问过程之后,该方法包括从存储装置720移除第一存储器地址转换。由于存储器的第二部分在存储器的第一部分之后被访问存储器,访问存储器的第二部分可以用作移除第一存储器地址转换是可接受的指示符。以这种方式,可以释放存储装置中的空间以用于获取并在其中存储存储器地址转换的进一步操作。不是单独地删除数据并将数据写入到存储装置720中,而是条目可以在新条目生成时被覆写。从存储装置中移除第一存储器地址转换可以包括:用与在处理器外部并且随后将被访问的存储器的第三部分相对应的第三存储器地址转换覆写第一存储器地址转换。

在本公开的实现方式中,该方法可以包括至少基于存储装置的大小来确定何时执行用于获取存储器地址转换并将存储器地址转换存储在存储装置中的操作。存储装置的大小可以确定在其中能够存储的存储器地址转换的数量。存储装置中可容纳的条目数可以取决于用于存储存储器地址转换的页面的大小和存储装置的大小。在一些示例中,可以知道能够被存储在存储装置中的存储器地址转换(可以被称为条目)的数量。在其他示例中,可以通过执行利用存储在存储装置中的存储器地址转换的一批访问来确定存储装置中的最大条目数。通过为这批访问的每个访问的访问时间进行计时,可以确定存储装置中条目的总数。在存储器地址转换被用于访问其各自的存储器的部分之前,不应在存储装置中移除或覆写存储器地址转换。用于获取和存储存储器地址转换的操作可以基于何时执行用于获取存储器地址转换并将存储器地址转换存储在存储装置中的操作的确定来执行。这可以允许在适当的时间将存储器地址转换存储在存储装置中,使得能够将其存储在存储装置中而不逐出比该存储器地址转换更早使用的另一存储器地址转换。确定何时执行用于获取存储器地址转换并将其存储在存储装置中的操作还可以基于从存储装置中移除存储在存储装置中的存储器地址转换的速率。可以在适当时从存储装置中移除存储器地址转换。该方法可以涉及预测何时将有可用空间以将存储器地址转换存储在存储装置中并在那时执行操作。在一些示例中,存储器在随后访问了相应的存储器部分之后,如果预期将很快再次访问该相应的存储器的部分,则也可以在存储装置中维持存储器地址转换。

在输入数据和/或输出数据被压缩的情况下,也可以使用本文描述的示例。一些数据压缩的方法是确定性的,因此可以考虑对访问过程进行预测。在这种情况下,获取和存储的存储器地址转换可以对应于要读取或写入的压缩块的起始地址。

图8示出了根据示例的非暂态计算机可读存储介质800。非暂态计算机可读存储介质800包括框810和820中所示的计算机可读指令。框810处的指令在由处理器830执行时使处理器830至少:基于卷积神经网络的至少一个或多个特征来预测与处理器外部的存储器的部分相关的访问过程,用于对输入数据实施卷积神经网络的至少一层以生成输出数据。实施卷积神经网络的至少一层的处理器可以是处理器800。替代地,实施卷积神经网络的至少一层的处理器可以是与处理器830不同的处理器。例如,处理器830可以是用于管理存储器地址转换的处理器。框830处的指令在由处理器830执行使处理器至少:响应于该预测,在所预测的访问过程之前,执行用于获取与存储器的部分相对应的存储器地址转换840并将该存储器地址转换存储在存储装置850中的操作。例如,处理器是cpu、gpu或dsp中的任何一种的情况可能就是这种情况。替代地,在处理器是npu的情况下,预测要访问的存储器的部分可以由状态机执行。

以上示例将被理解为本公开的说明性示例。进一步的示例被设想到。例如,存储器地址转换可以是虚拟存储器地址与另外的虚拟存储器地址之间的地址转换。例如,在一个或多个虚拟机上实施卷积神经网络的情况可能就是这种情况。应当理解,关于任何一个示例描述的任何特征可以单独使用,或者与所描述的其他特征组合使用,并且还可以与任何其他示例的一个或多个特征组合使用,或者与任何其他示例的任何组合使用。此外,在不脱离由所附权利要求限定的本公开的范围的情况下,也可以采用以上未描述的等同物和修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1