CN116150041A - 空间分配方法、装置、电子设备和计算机可读存储介质 - Google Patents
空间分配方法、装置、电子设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN116150041A CN116150041A CN202111385413.2A CN202111385413A CN116150041A CN 116150041 A CN116150041 A CN 116150041A CN 202111385413 A CN202111385413 A CN 202111385413A CN 116150041 A CN116150041 A CN 116150041A
- Authority
- CN
- China
- Prior art keywords
- linked list
- storage
- space
- calculation layer
- allocation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例涉及一种空间分配方法、装置、电子设备和计算机可读存储介质,所述空间用于对多个计算层产生的数据进行存储,多个所述计算层分别与多个存储链表一一对应,所述空间分配方法包括:获取携带第一信息的分配指令,所述第一信息包括第一数据尺寸和第一计算层标志,所述第一计算层标志用于标示待分配存储空间的所述计算层;根据所述第一数据尺寸将空闲链表中至少一个存储块地址分配给第一目标链表,所述第一目标链表为所述第一计算层标志对应的所述存储链表;更新所述空闲链表的指针所指向的存储块地址。
Description
技术领域
本申请涉及数据存储技术领域,特别是涉及一种空间分配方法、装置、电子设备和计算机可读存储介质。
背景技术
人工智能网络算法通常包含多个计算层,相邻两个计算层之间需要分配一定尺寸的存储空间,以对两层之间数据进行缓冲。但是,随着电子设备需要处理的数据量的不断增大,现有的存储空间无法充分满足不同层之间的缓冲需求,存储空间的使用效率严重不足,从而大大影响了算法的运行速度。
发明内容
本申请实施例提供了一种空间分配方法、装置、电子设备和计算机可读存储介质,可以提高存储空间的使用效率。
一种空间分配方法,所述空用于对多个计算层产生的数据进行存储,多个所述计算层分别与多个存储链表一一对应,所述分配方法包括:
获取携带第一信息的分配指令,所述第一信息包括第一数据尺寸和第一计算层标志,所述第一计算层标志用于标示待分配存储空间的所述计算层;
根据所述第一数据尺寸将空闲链表中至少一个存储块地址分配给第一目标链表,所述第一目标链表为所述第一计算层标志对应的所述存储链表;
更新所述空闲链表的指针所指向的存储块地址。
一种数据存储方法,包括:
获取目标算法的计算层信息,根据所述计算层信息生成空闲链表和多个存储链表,所述空闲链表包括多个存储块,所述存储块的粒度与所述计算层信息相对应;
响应于数据存储信号,生成携带第一信息的分配指令;
采用如上述的空间分配方法分配存储空间;
将待存储数据存储至分配的所述存储空间,所述待存储数据为所述目标算法在运算过程中生成的数据。
一种空间分配装置,所述空间用于对多个计算层产生的数据进行存储,多个所述计算层分别与多个存储链表一一对应,所述分配装置包括:
指令接收模块,用于获取携带第一信息的分配指令,所述第一信息包括第一数据尺寸和第一计算层标志,所述第一计算层标志用于标示待分配存储空间的所述计算层;
地址分配模块,用于根据所述第一数据尺寸将空闲链表中至少一个存储块地址分配给第一目标链表,所述第一目标链表为所述第一计算层标志对应的所述存储链表;
指针更新模块,用于更新所述空闲链表的指针所指向的存储块地址。
一种电子设备,包括:
存储器,用于对多个计算层产生的数据进行存储,多个所述计算层分别与多个存储链表一一对应;
控制器,用于响应于数据存储信号,生成携带第一信息的分配指令,所述第一信息包括第一数据尺寸和第一计算层标志,所述第一计算层标志用于标示需要占用存储空间的所述计算层;
空间分配电路,分别与所述控制器、所述存储器连接,用于获取携带第一信息的分配指令,所述第一信息包括第一数据尺寸和第一计算层标志,所述第一计算层标志用于标示待分配存储空间的所述计算层;根据所述第一数据尺寸将空闲链表中至少一个存储块地址分配给第一目标链表,所述第一目标链表为所述第一计算层标志对应的所述存储链表;更新所述空闲链表的指针所指向的存储块地址。
一种电子设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上述的空间分配方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的空间分配方法的步骤。
上述空间分配方法,基于第一信息中的第一数据尺寸,可以根据每次运算产生的数据大小,对存储空间进行动态分配,从而提高存储空间的利用率。同时,基于第一信息中的第一计算层标志,可以将不同计算层产生的数据分别进行存储,从而便于对每一计算层的数据进行批量管理,从而提高存储空间管理的便利性。即,提供了一种效率较高的存储空间的分配方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一实施例的人工智能加速器的内部结构示意图;
图2为一实施例的空间分配方法的流程图之一;
图3为一实施例的第一时刻的链表示意图;
图4为一实施例的第二时刻的链表示意图;
图5为一实施例的空间分配方法的流程图之二;
图6为一实施例的空间分配方法的流程图之三;
图7为一实施例的空间分配方法中释放存储空间的流程图;
图8为一实施例的第三时刻的链表示意图;
图9为一实施例的第四时刻的链表示意图;
图10为一实施例的数据存储方法的流程图;
图11为一实施例的电子设备的结构框图;
图12为一实施例的电子设备的内部结构示意图。
元件标号说明:
存储器:102;控制器:104;空间分配电路:106;处理单元阵列:108;向量运算阵列:110;累加器:112。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一信息称为第二信息,且类似地,可将第二信息称为第一信息。第一信息和第二信息两者都是信息,但其不是同一信息。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。在本申请的描述中,“若干”的含义是至少一个,例如一个,两个等,除非另有明确具体的限定。
本申请实施例提供了一种空间分配方法,用于分配存储空间,以对目标算法在运算过程中生成的数据进行存储。其中,分配的存储空间可以是但不限于静态随机存储器(Dynamic Random Access Memory,SRAM)中的空间。静态随机存储器是一种只要保持通电,储存的数据就可以恒常保持的存储器。也即,当电力供应停止时,静态随机存储器中储存的数据会消失。因此,静态随机存储器较为适用于对缓冲的数据进行暂时存储。在本申请实施例中,以静态随机存储器为例进行说明。
在一些相关技术中,通常为每个计算层分配固定且相同大小的存储空间,即,可以称为是一种静态分配方式。基于静态分配方式,需要每两层之间设置足够大的缓冲区,以保证目标算法的顺利完成。可以理解的是,如果某两个计算层之间的数据缓冲区的空间不足,那么这个计算节点就可能成为运算过程中的瓶颈。对于缓冲区无法存储的数据,就需要存储到外部的双倍速率(Double Data Rate,DDR)存储器中,从而造成数据读取的链路长度大大增加,进而造成电子设备的整体性能降低,功耗上升。也有一些相关技术,是为每个计算层分别分配存储空间,但是,靠近后部的计算层对应的缓冲区可能在很晚才能利用到,从而造成存储空间的利用率不足。
图1为一实施例的人工智能加速器的内部结构示意图,人工智能加速器是电子设备中用于支持深度学习工作的硬件结构。其中,人工智能加速器例如可以为***级芯片(System on Chip,SoC),***级芯片中设置有集成电路结构。参考图1,在本实施例中,人工智能加速器可以包括存储器102、控制器104和空间分配电路106,以对目标算法在运算过程中生成的数据进行存储。其中,能够生成数据的结构例如可以包括处理单元(ProcessElement,PE)阵列108和向量运算(Vector Engine&Data access)阵列110。处理单元阵列108主要用于卷积类的计算层,向量运算阵列110主要用于向量类的计算层。即,不同的计算层对应不同的计算资源,也对应着不同的SRAM需求量的大小。进一步地,人工智能加速器还可以包括累加器112(Accumulator,ACC),累加器112用于对不同的数据进行累加运算。在人工智能加速器的工作过程中,整个过程由控制器104统一控制。具体地,控制器104发出指令,每一条指令中包含了不同域段,每个不同的域段分别用于标示不同的信息,以指示指令的接收端执行相应的操作。
图2为一实施例的空间分配方法的流程图之一,本实施例的空间分配方法执行前,在空间分配电路中预先配置有空闲链表和多个存储链表,多个所述计算层分别与多个存储链表一一对应。链表由一系列结点(链表中每一个元素称为结点)组成,每个结点包括两个部分。一个部分是存储数据元素的数据域,数据域中存储的数据指示了物理存储块地址,每个存储块可以用于存储1K、2K、4K等大小的数据。另一个部分是存储下一个结点地址的指针域。图3为一实施例的第一时刻的链表示意图,第一时刻可以理解为没有任何计算层占用存储空间的时刻,例如可以为刚刚配置完成空闲链表和各存储链表的时刻。图3中示出了空闲链表,空闲链表中的每一个矩形框可以理解为一个结点。上一结点通过存储下一个结点地址的指针域实现结点之间的链接,即,通过图3中横向的指针可以实现不同存储块地址之间的链接。此外,图3中竖向的指针为链表的头指针,头指针用于指示链表中第一个结点。在第一时刻,空闲链表中斜纹填充示出了所有的空闲存储空间,空闲链表的头指针指向了第一个空闲结点,或者说用于标示出了第一个空闲存储块的地址。
当通过本实施例的空间分配方法进行地址分配,并把分配好的头指针所指向的存储块地址存入到地址映射表后,就可以通过查询地址映射表,将待存储数据存储到相应的地址中。其中,本实施例的空间分配方法可以用于为计算机视觉、医学图像分析、光学文字识别、自然语言处理、语音识别、手写识别和生物特征识别等多种目标算法分配存储空间。以计算机视觉为例,多个计算层可以包括但不限于卷积、池化、尺寸缩放、上采样等。参考图2,在本实施例中,空间分配方法包括步骤202至206。
步骤202,获取携带第一信息的分配指令,所述第一信息包括第一数据尺寸和第一计算层标志。
其中,分配指令可以包括两个域段,一个域段用于标示第一计算层标志,即所述第一计算层标志用于标示待分配存储空间的所述计算层,另一个域段用于标示第一数据尺寸,即待分配存储空间的计算层需要的存储空间的大小。空间分配电路接收到分配指令,对分配指令进行解析,即可获取上述第一信息,从而根据第一信息对存储空间进行分配。
步骤204,根据所述第一数据尺寸将空闲链表中至少一个存储块地址分配给第一目标链表,所述第一目标链表为所述第一计算层标志对应的所述存储链表。
其中,第一数据尺寸与存储块的数量相对应,即,第一数据尺寸与存储块的数量之间的比值等于每个存储块的大小。具体地,图4为一实施例的第二时刻的链表示意图,参考图4,在本实施例中,第一目标链表即是指计算层1对应的存储链表。若计算层1需要分配12K的存储空间进行数据存储,每个存储块的大小为4K,则需要从空闲链表中分配三个单位的存储块给计算层1进行数据存储。即,将空闲链表中空白的三个存储块地址分配给第一目标链表。进一步地,若需要分配多个存储块地址给第一目标链表,则可以将相邻的多个存储块地址一并分配给第一目标链表,从而降低分配难度。其中,相邻的多个存储块地址可以理解为链接在一起的多个存储块地址。例如,在图4实施例中,将相邻的三个存储块地址一并分配给计算层1对应的第一目标链表。
步骤206,更新所述空闲链表的指针所指向的存储块地址。
具体地,将至少一个存储块地址分配给第一目标链表后,需要将空闲链表的指针指向一个新的存储块地址,该新的存储块地址为一个空闲存储块的地址。可以理解的是,在更新指针所指向的存储块地址时,需要根据空闲链表分配给第一目标链表的存储块地址的位置,确定具体更新的指针。例如在图4实施例中,将空闲链表头部的多个存储块地址分配给计算层1的存储链表,则需要对应更新空闲链表的头指针所指向的存储块地址。在一些可能的实施例中,也可以将空闲链表尾部的多个存储块地址分配给计算层1的存储链表,则需要对应更新空闲链表的尾指针所指向的存储块地址。
在本实施例中,基于第一信息中的第一数据尺寸,可以根据每次运算产生的数据大小,对存储空间进行动态分配,从而提高存储空间的利用率。同时,基于第一信息中的第一计算层标志,可以将不同计算层产生的数据分别进行存储,从而便于对每一计算层的数据进行批量管理,从而提高存储空间管理的便利性。即,提供了一种效率较高的存储空间的分配方法。此外可以理解的是,若采用CPU等处理器执行上述分配存储空间的操作,需要频繁打断CPU正在执行的任务,从而影响CPU的运行效率。即,CPU只适用于执行低频率、大粒度的空间分配操作,而无法有效适用于执行高频率、小粒度的空间分配操作。因此在本实施例中,通过图1中的空间分配电路实现上述步骤,无需CPU等处理器的配合,从而可以大大提升电子设备的工作效率。
图5为一实施例的空间分配方法的流程图之二,参考图5,在本实施例中,空间分配方法包括步骤502至506。其中,图2中的步骤204包括本实施例的步骤504,图2中的步骤206包括本实施例的步骤506。本实施例的步骤502与图2中的步骤202相同,此处不再进行赘述。
步骤502,获取携带第一信息的分配指令,所述第一信息包括第一数据尺寸和第一计算层标志。
步骤504,根据所述空闲链表的头指针所指向的存储块地址,将位于所述空闲链表头部的m个存储块地址链接至所述第一目标链表尾部,m为正整数。
具体地,将存储块地址链接至所述第一目标链表尾部的步骤,可以包括如下步骤。获取第一目标链表的尾指针,以确定第一目标链表中的最后一个结点。更新最后一个结点的指针域指向空闲链表的头指针指向的结点,以将空闲链表的第一个存储块地址链接至第一目标链表的最后一个存储块地址。断开空闲链表头部的第m个存储块地址与第m+1个存储块地址之间的链接关系。根据分配的所述存储块地址的数量m,更新第一目标链表的尾指针所述指向的存储块地址。通过上述链接和更新第一目标链表的尾指针的操作,可以便于后续将其他存储块地址链接至第一目标链表的尾部,而无需遍历第一目标链表以确定第一目标链表中的最后一个结点。
步骤506,根据分配的所述存储块地址的数量m更新所述空闲链表的头指针所指向的存储块地址。
在本实施例中,始终从空闲链表的头部分配存储块地址给第一目标链表,可以有效避免空闲链表发生错误。而且,将分配的存储块地址都链接至第一目标链表的尾部,可以使产生的数据顺序排列,从而便于批量的移动或释放处理,进而提高电子设备的运行效率。
图6为一实施例的空间分配方法的流程图之三,参考图6,在本实施例中,空间分配方法包括步骤602至610。其中,图5中的步骤将位于所述空闲链表头部的m个存储块地址链接至所述第一目标链表尾部包括本实施例的步骤604至606。本实施例的步骤602与图5中的步骤502相同,本实施例的步骤608与图5中的步骤506相同,此处不再进行赘述。
步骤602,获取携带第一信息的分配指令,所述第一信息包括第一数据尺寸和第一计算层标志。
步骤604,获取所述计数值。
步骤606,当所述计数值大于m时,将所述空闲链表头部的m个存储块地址链接至所述第一目标链表尾部。
其中,所述计数值与所述空闲链表中存储块地址的数量相对应。可以理解的是,若空闲链表中存储块地址的数量不足,则必然无法分配足够数量的存储块地址给第一目标链表,甚至可能导致链表存储的数据错误。因此,通过先获取计数值,可以先初步确定空闲链表能够分配出的存储块地址的数量,进而通过在步骤606中比较第一计算层需要的存储块地址的数量和计数值的大小关系,可以有效避免发生上述问题,从而提高空间分配方法的可靠性和准确性。
步骤608,根据分配的所述存储块地址的数量m更新所述空闲链表的头指针所指向的存储块地址。
步骤610,当将存储空间分配给所述第一目标链表后,减少空闲存储空间的计数值。
在本实施例中,在每次进行存储块地址的分配后,都通过计数模块记录当前的计数值,并在每次进行存储块地址的分配前,先查询当前的计数值。通过上述步骤,既可以避免无效的分配操作,从而提高空间分配方法的分配速度,还可以防止分配错误,从而提高空间分配方法的可靠性。
图7为一实施例的空间分配方法中释放存储空间的流程图,参考图7,在本实施例中,空间分配方法还包括步骤702至706。
步骤702,获取携带第二信息的释放指令,所述第二信息包括第二数据尺寸和第二计算层标志,所述第二计算层标志用于标示待释放存储空间的所述计算层。
其中,释放指令可以包括两个域段,一个域段用于标示第二计算层标志,即所述第二计算层标志用于标示待释放存储空间的所述计算层,另一个域段用于标示第二数据尺寸,即待释放存储空间的计算层能够释放的存储空间的大小。空间分配电路接收到释放指令,对释放指令进行解析,即可获取上述第二信息,从而根据第二信息对存储空间进行释放。
步骤704,根据所述第二数据尺寸将第二目标链表中至少一个存储块地址释放给所述空闲链表,所述第二目标链表为所述第二计算层标志对应的所述存储链表;
其中,第二数据尺寸与存储块的数量相对应,即,第二数据尺寸与存储块的数量之间的比值等于每个存储块的大小。可以理解的是,对于存储空间的分配和释放可以互相独立进行,且第一目标链表和第二目标链表均可随着时间的发生变化。即,某一计算层对应的存储链表可以在第二时刻作为第一目标链表,并在第三时刻作为第二目标链表。
具体地,图8为一实施例的第三时刻的链表示意图,参考图8,在本实施例中,待释放空间的第二目标链表即是指计算层1对应的存储链表,而计算层2对应的存储链表作为当前时刻的第一目标链表,需要占用存储空间。此时,计算层1的存储链表中三个单位的存储块地址可以被释放,并链接至空闲链表的尾部。相应地,可以将空闲链表的尾指针所述指向的存储块地址移动三个单位。与此同时,空闲链表头部的两个单位的存储块地址被分配给计算层2的存储链表。相应地,可以将空闲链表的头指针所述指向的存储块地址移动两个单位。
图9为一实施例的第四时刻的链表示意图,参考图8,在本实施例中,待释放空间的第二目标链表即是指计算层2对应的存储链表,而计算层3对应的存储链表作为当前时刻的第一目标链表,需要占用存储空间。此时,计算层2的存储链表中一个单位的存储块地址可以被释放,并链接至空闲链表的尾部。相应地,可以将空闲链表的尾指针所述指向的存储块地址移动一个单位。即,同时分配的多个存储块地址可以被互相独立的释放,而释放指令中可以具体指示待释放的存储块。与此同时,空闲链表头部的一个单位的存储块地址被分配给计算层3的存储链表。相应地,可以将空闲链表的头指针所述指向的存储块地址移动一个单位。
步骤706,更新所述第二目标链表的指针所指向的存储块地址。
具体地,当第二目标链表释放存储块地址后,需要将第二目标链表的指针指向一个新的存储块地址,该新的存储块地址可以为第二目标链表中最后一个存储块的地址。
在本实施例中,通过以上空间分配方法,可以对存储空间进行实时的动态分配和释放。相较于静态分配的方式,动态分配和释放的方式可以等到计算层真正需要使用存储空间时,再进行空间分配,可以做到高效精准的利用存储空间,更加灵活高效。而且,更加适配于高频率的计算层地址分配需求的人工智能网络算法。
继续参考图7,在其中一个实施例中,空间分配方法还包括步骤708至710。
步骤708,当将存储空间释放给所述空闲链表后,增加所述计数值;
步骤710,当所述计数值小于m时,暂停分配存储空间,并当所述计数值增加至大于预设空间阈值时,恢复分配存储空间,其中,所述预设空间阈值大于任一所述计算层一次运算生成的数据量。
其中,可以在初始化配置空闲链表和存储链表时,同步生成预设空间阈值,从而根据目标算法,设置对应的预设空间阈值,从而提高调节的准确性。在本实施例中,当计数值不满足要求时,暂停分配存储空间,可以有效避免大量数据存储时的压力,从而提高空间分配和存储过程的可靠性。
在其中一个实施例中,所述第一信息还包括分配标志,所述第二信息还包括释放标志,所述分配标志和所述释放标志占用指令中的同一标志位。即,指令接收模块仅需配置一个接口,即可接收分配指令和释放指令的操作。具体地,指令接收模块接收到指令后,对指令进行解析,可以获取上述标志位上的数据,从而确定接收到的指令是分配指令还是释放指令。示例性地,若上述标志位上的数据为0,则接收到的指令是分配指令;若上述标志位上的数据为1,则接收到的指令是释放指令。通过本实施例的设置方式,可以减少空间分配电路需要配置的接口数量,并提高电路的集成度。
图10为一实施例的数据存储方法的流程图,参考图10,在本实施例中,数据存储方法包括步骤1002至1012。
步骤1002,获取目标算法的计算层信息,根据所述计算层信息生成空闲链表和多个存储链表,所述空闲链表包括多个存储块,所述存储块的粒度与所述计算层信息相对应。
具体地,目标算法可以是但不限于计算机视觉、医学图像分析、光学文字识别、自然语言处理、语音识别、手写识别和生物特征识别。计算层信息用于说明目标算法中包括的计算层,以目标算法为计算机视觉为例,可以包括卷积计算层、池化计算层、尺寸缩放计算层和上采样计算层等。通过获取计算层信息,可以确定需要创建的存储链表的数量,例如四个,还可以确定存储块的粒度,例如在计算机视觉中,若运算过程中所能生成的最小数据为4K,则可以设置存储块的粒度为4K,从而实现存储块的精准划分,避免浪费存储空间。
步骤1004,响应于数据存储信号,生成携带第一信息的分配指令。其中,数据存储信号可以是来自外部的信号,用于指示控制器104生成分配指令。
步骤1006,获取携带第一信息的分配指令,所述第一信息包括第一数据尺寸和第一计算层标志,所述第一计算层标志用于标示待分配存储空间的所述计算层。
步骤1008,根据所述第一数据尺寸将空闲链表中至少一个存储块地址分配给第一目标链表,所述第一目标链表为所述第一计算层标志对应的所述存储链表。
步骤1010,更新所述空闲链表的指针所指向的存储块地址。
步骤1012,将待存储数据存储至分配的所述存储空间,所述待存储数据为所述目标算法在运算过程中生成的数据。
在本实施例中,基于前述空间分配方法,可以实现数据的高速、高效存储,从而可以大大提升电子设备的运算效率。
应该理解的是,虽然各流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图11为一实施例的电子设备的结构框图,参考图11,在本实施例中,电子设备包括存储器102、控制器104和空间分配电路106。
存储器102用于对多个计算层产生的数据进行存储,多个所述计算层分别与多个存储链表一一对应。控制器104用于响应于数据存储信号,生成携带第一信息的分配指令,所述第一信息包括第一数据尺寸和第一计算层标志,所述第一计算层标志用于标示需要占用存储空间的所述计算层。空间分配电路106分别与所述控制器104、所述存储器102连接,用于获取携带第一信息的分配指令,所述第一信息包括第一数据尺寸和第一计算层标志,所述第一计算层标志用于标示待分配存储空间的所述计算层;根据所述第一数据尺寸将空闲链表中至少一个存储块地址分配给第一目标链表,所述第一目标链表为所述第一计算层标志对应的所述存储链表;更新所述空闲链表的指针所指向的存储块地址。
具体地,控制器104发出一个指令,指令的格式中包含了计算层标志、需要分配空间还是释放空间以及数据尺寸。当需要分配存储空间时,空间分配电路106中的空闲存储空间计数模块可以统计当前是否还有空闲的存储空间可以进行分配,并把这个信息反馈给控制器104。
空间分配电路106包括指令接收模块、地址分配模块和指针更新模块。指令接收模块用于接收携带第一信息的分配指令和携带第二信息的释放指令,并进行解析。地址分配模块用于根据所述第一数据尺寸将空闲链表中至少一个存储块地址分配给第一目标链表,所述第一目标链表为所述第一计算层标志对应的所述存储链表。指针更新模块用于更新所述空闲链表的指针所指向的存储块地址,其中记录了空闲链表和每一个存储链表的链表头和链表尾的位置,并根据执行的操作,对链表头的指针或链表尾的指针所述指向的存储块地址进行更新。示例性地,指令接收模块可以通过译码器实现,地址分配模块和指针更新模块可以通过移位寄存器实现。继续参考图11,在其中一个实施例中,空间分配电路106还包括空闲存储空间计数模块,用于记录计数值。示例性地,空闲存储空间计数模块可以通过加法器和减法器实现。可以理解的是,上述实现方式仅用于示例性说明,而不用于限定本实施例的保护范围,其他能够实现上述操作的硬件,也属于本申请的保护范围。
上述空间分配电路106也可以称为空间分配装置,空间分配装置中各个模块的划分仅用于举例说明,在其他实施例中,可将空间分配装置按照需要划分为不同的模块,以完成上述空间分配装置的全部或部分功能。关于空间分配装置的具体限定可以参见上文中对于空间分配方法的限定,在此不再赘述。上述空间分配装置中的各个模块可全部通过硬件来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,以便于执行以上各个模块对应的操作。
图12为一实施例的电子设备的内部结构示意图,参考图12,该电子设备包括通过***总线连接的处理器和存储器。其中,该处理器用于提供计算和控制能力,支撑整个电子设备的运行。存储器可包括非易失性存储介质及内存储器。非易失性存储介质存储有操作***和计算机程序。该计算机程序可被处理器所执行,以用于实现以下各个实施例所提供的一种空间分配方法。内存储器为非易失性存储介质中的操作***计算机程序提供高速缓存的运行环境。该电子设备可以是手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑、穿戴式设备等任意终端设备。
一种电子设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上述的空间分配方法的步骤。
本申请实施例中提供的空间分配装置中的各个模块的实现可为计算机程序的形式。该计算机程序可在终端或服务器上运行。该计算机程序构成的程序模块可存储在电子设备的存储器上。该计算机程序被处理器执行时,实现本申请实施例中所描述方法的步骤。
本申请实施例还提供了一种计算机可读存储介质。一个或多个包含计算机可执行指令的非易失性计算机可读存储介质,当所述计算机可执行指令被一个或多个处理器执行时,使得所述处理器执行空间分配方法的步骤。
一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行空间分配方法。
本申请所使用的对存储器、存储、数据库或其它介质的任何引用可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM),它用作外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (11)
1.一种空间分配方法,其特征在于,所述空间用于对多个计算层产生的数据进行存储,多个所述计算层分别与多个存储链表一一对应,所述分配方法包括:
获取携带第一信息的分配指令,所述第一信息包括第一数据尺寸和第一计算层标志,所述第一计算层标志用于标示待分配存储空间的所述计算层;
根据所述第一数据尺寸将空闲链表中至少一个存储块地址分配给第一目标链表,所述第一目标链表为所述第一计算层标志对应的所述存储链表;
更新所述空闲链表的指针所指向的存储块地址。
2.根据权利要求1所述的分配方法,其特征在于,所述根据所述第一数据尺寸将空闲链表中至少一个存储块地址分配给第一目标链表,包括:
根据所述空闲链表的头指针所指向的存储块地址,将位于所述空闲链表头部的m个存储块地址链接至所述第一目标链表尾部,m为正整数;
所述更新所述空闲链表的指针所指向的存储块地址,包括:
根据分配的所述存储块地址的数量m更新所述空闲链表的头指针所指向的存储块地址。
3.根据权利要求2所述的分配方法,其特征在于,还包括:
当将存储空间分配给所述第一目标链表后,减少空闲存储空间的计数值,所述计数值与所述空闲链表中存储块地址的数量相对应;
所述将位于所述空闲链表头部的m个存储块地址链接至所述第一目标链表尾部,包括:
获取所述计数值;
当所述计数值大于m时,将所述空闲链表头部的m个存储块地址链接至所述第一目标链表尾部。
4.根据权利要求3所述的分配方法,其特征在于,还包括:
获取携带第二信息的释放指令,所述第二信息包括第二数据尺寸和第二计算层标志,所述第二计算层标志用于标示待释放存储空间的所述计算层;
根据所述第二数据尺寸将第二目标链表中至少一个存储块地址分配给所述空闲链表,所述第二目标链表为所述第二计算层标志对应的所述存储链表;
更新所述第二目标链表的指针所指向的存储块地址。
5.根据权利要求4所述的分配方法,其特征在于,还包括:
当将存储空间释放给所述空闲链表后,增加所述计数值;
当所述计数值小于m时,暂停分配存储空间,并当所述计数值增加至大于预设空间阈值时,恢复分配存储空间,其中,所述预设空间阈值大于任一所述计算层一次运算生成的数据量。
6.根据权利要求4所述的分配方法,其特征在于,所述第一信息还包括分配标志,所述第二信息还包括释放标志,所述分配标志和所述释放标志占用指令中的同一标志位。
7.一种数据存储方法,其特征在于,包括:
获取目标算法的计算层信息,根据所述计算层信息生成空闲链表和多个存储链表,所述空闲链表包括多个存储块,所述存储块的粒度与所述计算层信息相对应;
响应于数据存储信号,生成携带第一信息的分配指令;
采用如权利要求1至6任一项所述的空间分配方法分配存储空间;
将待存储数据存储至分配的所述存储空间,所述待存储数据为所述目标算法在运算过程中生成的数据。
8.一种空间分配装置,其特征在于,所述空间用于对多个计算层产生的数据进行存储,多个所述计算层分别与多个存储链表一一对应,所述分配装置包括:
指令接收模块,用于获取携带第一信息的分配指令,所述第一信息包括第一数据尺寸和第一计算层标志,所述第一计算层标志用于标示待分配存储空间的所述计算层;
地址分配模块,用于根据所述第一数据尺寸将空闲链表中至少一个存储块地址分配给第一目标链表,所述第一目标链表为所述第一计算层标志对应的所述存储链表;
指针更新模块,用于更新所述空闲链表的指针所指向的存储块地址。
9.一种电子设备,其特征在于,包括:
存储器,用于对多个计算层产生的数据进行存储,多个所述计算层分别与多个存储链表一一对应;
控制器,用于响应于数据存储信号,生成携带第一信息的分配指令,所述第一信息包括第一数据尺寸和第一计算层标志,所述第一计算层标志用于标示需要占用存储空间的所述计算层;
空间分配电路,分别与所述控制器、所述存储器连接,用于获取携带第一信息的分配指令,所述第一信息包括第一数据尺寸和第一计算层标志,所述第一计算层标志用于标示待分配存储空间的所述计算层;根据所述第一数据尺寸将空闲链表中至少一个存储块地址分配给第一目标链表,所述第一目标链表为所述第一计算层标志对应的所述存储链表;更新所述空闲链表的指针所指向的存储块地址。
10.一种电子设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述的空间分配方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的空间分配方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111385413.2A CN116150041A (zh) | 2021-11-22 | 2021-11-22 | 空间分配方法、装置、电子设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111385413.2A CN116150041A (zh) | 2021-11-22 | 2021-11-22 | 空间分配方法、装置、电子设备和计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116150041A true CN116150041A (zh) | 2023-05-23 |
Family
ID=86337630
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111385413.2A Pending CN116150041A (zh) | 2021-11-22 | 2021-11-22 | 空间分配方法、装置、电子设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116150041A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116719485A (zh) * | 2023-08-09 | 2023-09-08 | 苏州浪潮智能科技有限公司 | 基于fpga的数据读写方法及读写单元与fpga |
-
2021
- 2021-11-22 CN CN202111385413.2A patent/CN116150041A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116719485A (zh) * | 2023-08-09 | 2023-09-08 | 苏州浪潮智能科技有限公司 | 基于fpga的数据读写方法及读写单元与fpga |
CN116719485B (zh) * | 2023-08-09 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 基于fpga的数据读写方法及读写单元与fpga |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10255547B2 (en) | Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system | |
US10346507B2 (en) | Symmetric block sparse matrix-vector multiplication | |
EP3260993A1 (en) | File operation method and device | |
CN114356223B (zh) | 存储器的访问方法及装置、芯片、电子设备 | |
KR20210025695A (ko) | 포워드 캐싱 메모리 시스템 및 방법 | |
US20190220443A1 (en) | Method, apparatus, and computer program product for indexing a file | |
US10789170B2 (en) | Storage management method, electronic device and computer readable medium | |
CN103970694A (zh) | 用于更新图像的部分帧的片上***和操作它的方法 | |
TWI779438B (zh) | 數據儲存方法、電子設備及儲存媒體 | |
US20150074360A1 (en) | Scheduler for memory | |
CN111028360A (zh) | 一种3d图像处理中数据读写方法及***、存储介质及终端 | |
WO2024036985A1 (zh) | 存储***及其计算存储处理器、固体硬盘和数据读写方法 | |
US20240111669A1 (en) | Allocation of memory within a data type-specific memory heap | |
EP3825848A1 (en) | Data processing method and apparatus, and related product | |
CN116034337A (zh) | 用于神经网络和数据中心应用程序的包含计算汉明距离的实例的存储器*** | |
CN116150041A (zh) | 空间分配方法、装置、电子设备和计算机可读存储介质 | |
CN110515872B (zh) | 直接内存存取方法、装置、专用计算芯片及异构计算*** | |
US8543722B2 (en) | Message passing with queues and channels | |
CN100520736C (zh) | 在虚拟机中管理栈的设备和方法 | |
CN117271162A (zh) | 一种请求处理方法、装置、设备和存储介质 | |
US8478946B2 (en) | Method and system for local data sharing | |
CN108717395B (zh) | 一种降低动态块映射信息占用内存的方法及装置 | |
CN111078589B (zh) | 一种应用于深度学习计算的数据读取***、方法及芯片 | |
CN112148203B (zh) | 存储器管理方法、装置、电子设备及存储介质 | |
EP3819771A1 (en) | Data processing method and device, apparatus, and system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |