CN115357212B - 用于环形缓冲器的参数生成方法、装置和人工智能芯片 - Google Patents

用于环形缓冲器的参数生成方法、装置和人工智能芯片 Download PDF

Info

Publication number
CN115357212B
CN115357212B CN202211283372.0A CN202211283372A CN115357212B CN 115357212 B CN115357212 B CN 115357212B CN 202211283372 A CN202211283372 A CN 202211283372A CN 115357212 B CN115357212 B CN 115357212B
Authority
CN
China
Prior art keywords
data
storage address
address boundary
target value
buffer
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.)
Active
Application number
CN202211283372.0A
Other languages
English (en)
Other versions
CN115357212A (zh
Inventor
贾骏
郭力
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hanbo Semiconductor Shanghai Co ltd
Original Assignee
Hanbo Semiconductor Shanghai Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hanbo Semiconductor Shanghai Co ltd filed Critical Hanbo Semiconductor Shanghai Co ltd
Priority to CN202211283372.0A priority Critical patent/CN115357212B/zh
Publication of CN115357212A publication Critical patent/CN115357212A/zh
Application granted granted Critical
Publication of CN115357212B publication Critical patent/CN115357212B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

本公开提供一种用于环形缓冲器的参数生成方法、装置和人工智能芯片。环形缓冲器用于存储多组数据。方法包括:针对每组数据,随机生成数据存储地址边界的初始值,每组数据的数据存储地址边界的初始值指示该组数据的数据量;基于多组数据的数据存储地址边界的初始值,生成缓冲器存储地址边界的候选值,缓冲器存储地址边界的候选值所限定的存储容量的下限不小于多组数据中的任意相邻两组数据的数据量之和,缓冲器存储地址边界的候选值所限定的存储容量的上限小于多组数据的数据量总和;在候选值限定的存储容量范围内,随机生成缓冲器存储地址边界的目标值;基于缓冲器存储地址边界的目标值和预设约束规则,生成每组数据的数据存储地址边界的目标值。

Description

用于环形缓冲器的参数生成方法、装置和人工智能芯片
技术领域
本公开涉及计算机技术领域,具体涉及用于环形缓冲器的参数生成方法、装置、芯片的验证方法、人工智能芯片、电子设备、计算机可读存储介质和计算机程序产品。
背景技术
环形缓冲器,也称循环缓冲区、圆形缓冲区或作圆形队列,用于表示固定容量、头尾相连的缓冲区的数据结构。环形缓冲器是一个先进先出的循环缓冲区,可以向通信程序提供对缓冲区的互斥访问。在芯片领域,环形缓冲器被广泛用于存储数据。
在此部分中描述的方法不一定是之前已经设想到或采用的方法。除非另有指明,否则不应假定此部分中描述的任何方法仅因其包括在此部分中就被认为是现有技术。类似地,除非另有指明,否则此部分中提及的问题不应认为在任何现有技术中已被公认。
发明内容
本公开提供了一种用于环形缓冲器的参数生成方法、装置、芯片的验证方法、人工智能芯片、电子设备、计算机可读存储介质和计算机程序产品。
根据本公开的一方面,提供了一种用于环形缓冲器的参数生成方法。环形缓冲器用于循环地存储多组数据,参数包括缓冲器存储地址边界的目标值和多组数据中每组数据的数据存储地址边界的目标值。参数生成方法包括:针对多组数据中的每组数据,随机生成数据存储地址边界的初始值,其中,每组数据的数据存储地址边界的初始值指示该组数据的数据量;基于多组数据的数据存储地址边界的初始值,生成缓冲器存储地址边界的候选值,其中,缓冲器存储地址边界的候选值所限定的存储容量的下限不小于多组数据中的任意相邻两组数据的数据量之和 ,缓冲器存储地址边界的候选值所限定的存储容量的上限小于多组数据的数据量总和;在候选值所限定的存储容量范围内,随机生成缓冲器存储地址边界的目标值;以及基于缓冲器存储地址边界的目标值和预设约束规则,生成每组数据的数据存储地址边界的目标值。
根据本公开的另一方面,提供了一种芯片的验证方法。芯片包括环形缓冲器,芯片的验证方法包括:利用上述的方法生成环形缓冲器的参数;以及基于缓冲器存储地址边界的目标值和每组数据的数据存储地址边界的目标值,对神经网络运算芯片进行验证。
根据本公开的另一方面,提供了一种用于环形缓冲器的参数生成装置。环形缓冲器用于循环地存储多组数据,参数包括缓冲器存储地址边界的目标值和多组数据中每组数据的数据存储地址边界的目标值。参数生成装置包括:数据存储地址边界的初始值生成单元,被配置为针对多组数据中的每组数据,随机生成数据存储地址边界的初始值,其中,每组数据的数据存储地址边界的初始值指示该组数据的数据量;缓冲器存储地址边界的候选值生成单元,被配置为基于多组数据的数据存储地址边界的初始值,生成缓冲器存储地址边界的候选值,其中,缓冲器存储地址边界的候选值所限定的存储容量的下限不小于多组数据中的任意相邻两组数据的数据量之和,缓冲器存储地址边界的候选值所限定的存储容量的上限小于多组数据的数据量总和;缓冲器存储地址边界的目标值生成单元,被配置为在候选值所限定的存储容量范围内,随机生成缓冲器存储地址边界的目标值;以及数据存储地址边界的目标值生成单元,被配置为基于缓冲器存储地址边界的目标值和预设约束规则,生成每组数据的数据存储地址边界的目标值。
根据本公开的又一方面,提供了种人工智能芯片。该人工智能芯片包括上述的参数生成装置。
根据本公开的再另一方面,提供了一种电子设备,包括上述的人工智能芯片。
根据本公开的再另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行上述的方法。
根据本公开的再另一方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,使处理器执行上述的方法。
根据在下文中所描述的实施例,本公开的这些和其它方面将是清楚明白的,并且将参考在下文中所描述的实施例而被阐明。
附图说明
附图示例性地示出了实施例并且构成说明书的一部分,与说明书的文字描述一起用于讲解实施例的示例性实施方式。所示出的实施例仅出于例示的目的,并不限制权利要求的范围。在所有附图中,相同的附图标记指代类似但不一定相同的要素。
图1是示出了根据本公开示例性实施例的用于环形缓冲器的参数生成方法的流程图;
图2是示出了根据本公开示例性实施例的用于环形缓冲器的参数生成方法的部分过程的流程图;
图3是示出了根据本公开示例性实施例的用于环形缓冲器的参数生成方法的部分过程的流程图;
图4是示出了根据本公开示例性实施例的用于环形缓冲器的参数生成装置的结构框图;以及
图5是示出能够应用于示例性实施例的示例性电子设备的框图。
具体实施方式
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。
在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
如上文所述,由于环形缓冲器是头尾相连的数据结构,而计算机的内存是线性的地址空间,因此需要对环形缓冲器的参数进行特别的设计才能从逻辑上实现其功能。通常,可以使用多个指针来指示与环形缓冲器相关的参数,例如,指示环形缓冲器在内存中的实际开始位置、在内存中的实际结束位置、存储在缓冲区中的有效数据的开始位置和存储在缓冲区中的有效数据的结尾位置。需要说明的,本文中的缓冲器是指缓冲寄存器。
在应用环形缓冲器进行数据存储的场景中,由于待存储的数据可能具有各种各样的性质,可能需要基于待存储的数据和上述的环形缓冲器相关的参数对环形缓冲器进行设计或验证,以确保环形缓冲器在真实使用场景中能够正常运行。因此,获取上述的环形缓冲器相关的参数至关重要。
环形缓冲器可以用在芯片中进行数据存储。例如,神经网络运算芯片可以被应用于很多种不同类型的神经网络计算中,这些网络的规模不同,每种网络内部一般由几层到几十层运算层构成。在进行运算时,由于每层网络的数学公式内容不同,芯片的硬件逻辑(例如环形缓冲器)也需要配置成不同的参数以支持不同的计算功能。由于这种广泛的参数配置空间,在芯片的设计验证阶段,通过何种验证方案来覆盖到所有可能出现的环形缓冲器的参数场景,以确保芯片的环形缓冲器在这些场景下都能够正常工作,是芯片验证的难点。对于用于存储神经网络的不同层的数据的环形缓冲器而言,需要覆盖的参数场景包括环形缓冲器在内存中的实际开始位置、在内存中的实际结束位置,以及每层数据存储在缓冲区中的有效数据的开始位置和存储在缓冲区中的有效数据的结尾位置。
在一些相关技术中,可以通过传统的定向功能验证,即通过人工地把神经网络每一层的地址值都一一列举出来,从而穷举可能的验证场景。但是地址参数的分布空间巨大,通过这种方式很难列举所有可能的参数,从而无法有效验证环形缓冲器。
在一些相关技术中,可以采用约束随机化验证的方式,即,可以把所有地址值作为参数来进行随机化,然后重复地或循环地进行随机验证。随着随机次数的不断增加,可以越来越多地覆盖到需要验证的参数。然而,这种方式随机产生的参数通常可能不符合现实芯片中环形缓冲器的规则,而且如果参数的取值分布空间很大,也无法确保随机得到的参数已经达到足够的覆盖率。
鉴于此,本公开提出一种用于环形缓冲器的参数生成方法、装置、人工智能芯片、电子设备、计算机可读存储介质和计算机程序产品。
下面结合附图详细描述本公开的示例性实施例。
首先参考图1,图1是示出了根据本公开示例性实施例的用于环形缓冲器的参数生成方法100的流程图。环形缓冲器用于循环地存储多组数据,参数包括缓冲器存储地址边界的目标值和多组数据中每组数据的数据存储地址边界的目标值。
如图1所示,参数生成方法100包括:
步骤S110、针对多组数据中的每组数据,随机生成数据存储地址边界的初始值,其中,每组数据的数据存储地址边界的初始值指示该组数据的数据量;
步骤S120、基于多组数据的数据存储地址边界的初始值,生成缓冲器存储地址边界的候选值,其中,缓冲器存储地址边界的候选值所限定的存储容量的下限不小于多组数据中的任意相邻两组数据的数据量之和,缓冲器存储地址边界的候选值所限定的存储容量的上限小于多组数据的数据量总和;
步骤S130、在候选值所限定的存储容量范围内,随机生成缓冲器存储地址边界的目标值;以及
步骤S140、基于缓冲器存储地址边界的目标值和预设约束规则,生成每组数据的数据存储地址边界的目标值。
在步骤S110中,针对每组数据,均随机生成数据存储地址边界的初始值,换言之,每组数据的数据存储地址边界的初始值与其他组数据的数据存储地址边界的初始值无关。示例性地,数据存储地址边界可以包括存储在缓冲区中的有效数据的开始位置和存储在缓冲区中的有效数据的结尾位置。
在将环形缓冲器应用于神经网络运算芯片的场景中,每组数据可以对应于一层神经网络。每组数据的数据存储地址边界的初始值与其他组数据的数据存储地址边界的初始值无关意味着针对每层神经网络随机生成的数据存储地址边界的初始值与其他层神经网络无关,由此,生成的参数可以覆盖后续层的数据量大于第一层数据量的场景。
在步骤S120中,基于由步骤S110获取到的多组数据的数据存储地址边界的初始值,可以生成缓冲器存储地址边界的候选值。基于多组数据的数据存储地址边界的初始值,可以分别确定缓冲器存储地址边界的候选值所限定的存储容量的上限和下限。
首先,缓冲器存储地址边界的候选值所限定的存储容量的下限不小于多组数据中的任意相邻两组数据的数据量之和。这是由于相邻两组数据通常具有较强的相关性,例如,在应用于神经网络运算芯片的环形缓冲器的场景中,相邻两组数据可以是神经网络的相邻两层的数据,在神经网络的运算过程中,相邻两层网络参数之间强相关。因此,缓冲器存储地址边界的候选值所限定的存储容量需要能够同时容纳相邻两层数据的数据量,才能保证该相邻两层数据中的后一层数据不会覆盖前一层数据。
其次,缓冲器存储地址边界的候选值所限定的存储容量的上限小于多组数据的数据量总和。这是由于如果缓冲器存储地址边界的候选值所限定的存储容量过大,则当多组数据均已存储在环形缓冲器中时,不能占满环形缓冲器的空间,从而不会存在“多余”的数据来对更早写入的数据进行覆盖。这种情形是不期望的,因为这种情形无法发挥环形缓冲器对数据进行“回卷”存储的作用。在环形缓冲器的设计验证阶段,通常也期望能够对环形缓冲器的“回卷”功能进行验证,即,至少需要最后写入的数据对先前写入的数据进行一次“覆盖”。因此,通过使缓冲器存储地址边界的候选值所限定的存储容量的上限小于多组数据的数据量总和,可以保证后续生成的缓冲器相关参数能够覆盖上述数据“回卷”场景。
随后,通过步骤S130和步骤S140,可以在候选值所限定的存储容量范围内,随机生成得到缓冲器存储地址边界的目标值,继而生成每组数据的数据存储地址边界的目标值。
由此,缓冲器存储地址边界的目标值和每组数据的数据存储地址边界的目标值可以作为环形缓冲器的相关参数,用于缓冲器的设计或验证。通过方法100所生成的缓冲器存储地址边界的目标值和每组数据的数据存储地址边界的目标值不仅更加符合环形缓冲器的现实使用规则,而且即便缓冲器参数的取值分布空间很大,也可以确保随机得到的参数能够达到足够的覆盖率。此外,相对于相关技术而言,方法100随机生成数据所设置的约束条件更加简单,能够更高效率地生成环形缓冲器的参数。
根据一些实施例,步骤S140中所述的预设约束规则可以包括:每组数据的数据存储地址边界的目标值落入缓冲器存储地址边界的目标值范围内。
由此,对于每一组数据,其数据存储地址边界的目标值均不超出缓冲器存储地址边界的目标值范围。
根据一些实施例,所生成的数据存储地址边界的目标值可以包括数据存储地址边界的起始点目标值和数据存储地址边界的终止点目标值,并且,对于多组数据中的任意相邻两组数据,后一组数据的数据存储地址边界的起始点目标值可以与前一组数据的数据存储地址边界的终止点目标值紧邻。
由此,相邻两组数据在环形缓冲器中的存储位置紧邻,从而能够充分利用环形缓冲器的存储空间。
图2是示出了根据本公开示例性实施例的用于环形缓冲器的参数生成方法100的部分过程的流程图。
根据一些实施例,如图2所示,步骤S140可以包括:
步骤S241、在缓冲器存储地址边界的目标值范围内随机生成第一组数据的数据存储地址边界的起始点目标值;以及
步骤S242、基于第一组数据的数据存储地址边界的起始点目标值、第一组数据的数据量、以及缓冲器存储地址边界的目标值,生成第一组数据的数据存储地址边界的终止点目标值。
图3是示出了根据本公开示例性实施例的用于环形缓冲器的参数生成方法100的部分过程的流程图。
根据一些实施例,缓冲器存储地址边界的目标值可以包括缓冲器存储地址边界的起始点目标值和缓冲器存储地址边界的终止点目标值。并且,步骤S242可以包括:
步骤S341、对第一组数据的数据存储地址边界的终止点目标值和缓冲器存储地址边界的终止点目标值进行比较;以及
步骤S342、响应于第一组数据的数据存储地址边界的终止点目标值大于缓冲器存储地址边界的终止点目标值,生成第一组数据的数据存储地址边界的终止点目标值,所生成的数据存储地址边界的终止点目标值使得第一组数据在存入环形缓冲器中时将发生数据回卷。
根据一些实施例,缓冲器存储地址边界的候选值所限定的存储容量的上限可以小于多组数据的数据量总和的预设百分比。
在一个示例中,缓冲器存储地址边界的候选值所限定的存储容量的上限可以小于多组数据的数据量总和的50%(即二分之一),可以使得多组数据在环形缓冲器中存储时至少能够发生两次“回卷”存储。在一个示例中,缓冲器存储地址边界的候选值所限定的存储容量的上限可以小于多组数据的数据量总和的25%(即四分之一),可以使得多组数据在环形缓冲器中存储时至少能够发生四次“回卷”存储。由此,可以根据环形缓冲器的设计与验证需要,进一步设置待存储数据的“回卷”存储次数。
根据一些实施例,还可以包括:针对每组数据,随机生成缓冲器存储地址边界的初始值,每组数据的数据存储地址边界的初始值落入该组数据的缓冲器存储地址边界的初始值所限定的存储范围内。
根据一些实施例,环形缓冲器可以是神经网络运算芯片中的环形缓冲器,所述的神经网络可以包括多个级联的网络层,所述多组数据依次对应所述多个级联的网络层。
由此,针对应用于神经网络运算芯片中的环形缓冲器,能够生成覆盖率更高的随机验证参数,尤其能够确保覆盖出现数据“回卷”存储的场景。此外,由于各层参数被各自独立地随机生成,可以简化约束规则。
下面,将以应用于神经网络运算芯片的环形缓冲器的场景为例,对本公开提出的用于环形缓冲器的参数生成方法进行详细说明。
首先,神经网络的每一层数据对应于存储在环形缓冲器中的多组数据中的相应一组数据。例如,神经网络可以包括n层(其中,n为大于1的正整数),可以把n层网络的每一层视为一个独立单层网络,针对每层网络单独随机生成4组参数:(1)缓冲器存储地址边界起始点初始值Addr_min_n,(2)缓冲器存储地址边界终止点初始值Addr_max_n,(3)数据存储地址边界的起始点初始值Addr_start_n,以及(4)数据存储地址边界的终止点初始值Addr_end_n。
对于上述4组参数,可以设置它们满足以下随机约束:Addr_start_n > Addr_min_n, Addr_end_n < Addr_max_n。
基于上述步骤中随机生成得到的每层网络的第3项和第4项参数,即数据存储地址边界的起始点初始值Addr_start_n,以及数据存储地址边界的终止点初始值Addr_end_n,首先可以计算出所有层数的数据量size_n,即size_n = Addr_end_n - Addr_start_n。
然后,可以生成缓冲器存储地址边界的候选值:(1)可以确定缓冲器存储地址边界的候选值所限定的存储容量的下限:Min(Addr_max - Addr_min)≥ (size_n + size_n+1),即,缓冲器存储地址边界的候选值所限定的存储容量的下限不小于多组数据中的任意相邻两组数据的数据量之和。(2)可以确定缓冲器存储地址边界的候选值所限定的存储容量的上限:Max(Addr_max - Addr_min)< Sum (size_1+size_2+...+size_n),缓冲器存储地址边界的候选值所限定的存储容量的上限小于多组数据的数据量总和。
基于缓冲器存储地址边界的候选值所限定的存储容量的下限和上限,可以在候选值所限定的存储容量范围内,随机生成缓冲器存储地址边界的目标值Addr_max和Addr_min。例如,根据以下约束条件:Min (Addr_max - Addr_min) < Addr_max- Addr_min <Max (Addr_max - Addr_min),随机生成缓冲器存储地址边界的目标值Addr_max和Addr_min。
此后,可以基于缓冲器存储地址边界的目标值和预设约束规则,生成每组数据的数据存储地址边界的目标值。例如,以第一层网络为例,可以随机生成第一层网络的数据存储地址边界的起始点目标值。即,Addr_min < Addr_start_1 < Addr_max。基于随机生成的Addr_start_1、size_1、以及缓冲器存储地址边界的目标值,可以根据以下约束规则生成第一层网络的数据存储地址边界的终止点目标值:
如果 Addr_end_n <= Addr_max,意味着第一层数据不会发生“回卷”存储,则令Addr_end_1 = Addr_start_1+size_1;
如果Addr_end_n > Addr_max,意味着第一层数据会发生“回卷”存储,则令 Addr_end_1 = Addr_min + (Addr_start_1+size_1 - Addr_max)。
最后,对于第二层网络的数据存储地址边界的起始点目标值,可以设置以下约束:Addr_start_2 = Addr_end_1 + 1,即,第二层数据的数据存储地址边界的起始点目标值与第一层数据的数据存储地址边界的终止点目标值紧邻。
类似地,可以基于随机生成的Addr_start_2、size_2、以及缓冲器存储地址边界的目标值,生成第二层网络的数据存储地址边界的终止点目标值。
类似地,可以迭代地生成第3层直至第n层数据的数据存储地址边界的起始点目标值和数据存储地址边界的终止点目标值。
基于以上步骤所生成的缓冲器存储地址边界的目标值Addr_max和Addr_min以及每组数据的数据存储地址边界的目标值Addr_start_n和Addr_end_n,可以对神经网络运算芯片进行验证。
根据本公开的一方面,还提供了一种芯片的验证方法。芯片包括环形缓冲器,芯片的验证方法包括:
利用根据本公开实施例的参数生成方法生成环形缓冲器的参数;以及
基于生成的缓冲器存储地址边界的目标值和每组数据的数据存储地址边界的目标值,对芯片进行验证。
图4是示出了根据本公开示例性实施例的用于环形缓冲器的参数生成装置400的结构框图。环形缓冲器用于循环地存储多组数据,参数包括缓冲器存储地址边界的目标值和多组数据中每组数据的数据存储地址边界的目标值。
如图4所示,装置400包括:
数据存储地址边界的初始值生成单元410,被配置为针对多组数据中的每组数据,随机生成数据存储地址边界的初始值,其中,每组数据的数据存储地址边界的初始值指示该组数据的数据量;
缓冲器存储地址边界的候选值生成单元420,被配置为基于多组数据的数据存储地址边界的初始值,生成缓冲器存储地址边界的候选值,其中,缓冲器存储地址边界的候选值所限定的存储容量的下限不小于多组数据中的任意相邻两组数据的数据量之和,缓冲器存储地址边界的候选值所限定的存储容量的上限小于多组数据的数据量总和;
缓冲器存储地址边界的目标值生成单元430,被配置为在候选值所限定的存储容量范围内,随机生成缓冲器存储地址边界的目标值;以及
数据存储地址边界的目标值生成单元440,被配置为基于缓冲器存储地址边界的目标值和预设约束规则,生成每组数据的数据存储地址边界的目标值。
根据一些实施例,预设约束规则可以包括:每组数据的数据存储地址边界的目标值落入缓冲器存储地址边界的目标值范围内。
根据一些实施例,所生成的数据存储地址边界的目标值包括数据存储地址边界的起始点目标值和数据存储地址边界的终止点目标值,并且其中,对于多组数据中的任意相邻两组数据,后一组数据的数据存储地址边界的起始点目标值与前一组数据的数据存储地址边界的终止点目标值紧邻。
根据一些实施例,数据存储地址边界的目标值生成单元440可以被进一步配置为:
在缓冲器存储地址边界的目标值范围内随机生成第一组数据的数据存储地址边界的起始点目标值;以及基于第一组数据的数据存储地址边界的起始点目标值、第一组数据的数据量、以及缓冲器存储地址边界的目标值,生成第一组数据的数据存储地址边界的终止点目标值。
根据一些实施例,缓冲器存储地址边界的目标值可以包括缓冲器存储地址边界的起始点目标值和缓冲器存储地址边界的终止点目标值,并且数据存储地址边界的目标值生成单元440可以被进一步配置为:对第一组数据的数据存储地址边界的终止点目标值和缓冲器存储地址边界的终止点目标值进行比较;以及响应于第一组数据的数据存储地址边界的终止点目标值大于缓冲器存储地址边界的终止点目标值,生成第一组数据的数据存储地址边界的终止点目标值,所生成的数据存储地址边界的终止点目标值使得第一组数据在存入环形缓冲器中时将发生数据回卷。
根据一些实施例,缓冲器存储地址边界的候选值所限定的存储容量的上限小于多组数据的数据量总和的预设百分比。
根据一些实施例,装置400还可以包括:缓冲器存储地址边界的初始值生成单元(图中未示出),被配置为针对每组数据,随机生成缓冲器存储地址边界的初始值,其中,每组数据的数据存储地址边界的初始值落入该组数据的缓冲器存储地址边界的初始值所限定的存储范围内。
根据一些实施例,环形缓冲器可以是神经网络运算芯片中的环形缓冲器,神经网络包括多个级联的网络层,多组数据依次对应多个级联的网络层。
根据本公开的另一方面,提供了一种人工智能芯片。该人工智能芯片包括根据本公开实施例的用于环形缓冲器的参数生成装置400。
根据本公开的另一方面,提供了一种电子设备,包括根据本公开实施例的人工智能芯片。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行上述的用于环形缓冲器的参数生成方法100或芯片的验证方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,其中,计算机程序在被处理器执行时实现用于环形缓冲器的参数生成方法100或芯片的验证方法。
图5是示出根据本公开的示例性实施例的电子设备500的示例的框图。需要说明的,图5所示出的结构仅是一个示例,根据具体的实现方式,本公开的电子设备可以仅包括图5所示出的组成部分中的一种或多个。
电子设备500例如可以是通用计算机(例如膝上型计算机、平板计算机等等各种计算机)、移动电话、个人数字助理。根据一些实施例,电子设备500可以是云计算设备和智能设备。
根据一些实施例,电子设备500可被配置为对图像、文本和音频中的至少一者进行处理,并且将所述处理结果传输至输出设备而提供给用户。输出设备例如可以为显示屏、包括显示屏的设备,也可以为耳机、扬声器、或振荡器等声音输出设备。例如,电子设备500可被配置为对图像进行目标检测,将目标检测结果传输至显示设备以显示,电子设备500还可被配置为对图像进行增强处理,并将增强结果传输至显示设备以显示。电子设500还可被配置为对图像中的文本进行识别,并将识别结果传输至显示设备以显示和/或将识别结果转换成声音数据并传输至声音输出设备进行播放。电子设备500还可被配置为对音频进行识别和处理,并将识别结果传输至显示设备以显示和/或将处理结果转换成声音数据并传输至声音输出设备进行播放。
电子设备500可以包括图像处理电路503,图像处理电路503可以被配置为对图像进行各种图像处理。图像处理电路503例如可以被配置为对图像进行以下图像处理中的至少一项:对图像进行降噪、对图像进行几何矫正、对图像进行特征提取、对图像中的对象进行检测和/或识别、对图像进行增强处理、以及对图像中包含的文字进行检测和/或识别等等。
电子设备500还可以包括文字识别电路504,所述文字识别电路504被配置为对图像中的文字区域进行文字检测和/或识别(例如OCR处理),从而获得文字数据。所述文字识别电路504例如可以通过专用芯片实现。电子设备500还可以包括声音转换电路505,所述声音转换电路505被配置为将所述文字数据转换成声音数据。所述声音转换电路505例如可以通过专用芯片实现。
电子设备500还可以包括音频处理电路506,所述音频处理电路506被配置为将音频转换为文字,从而获得音频相应的文字数据。所述音频处理电路506还可被配置为对音频相应的文字数据进行处理,例如可以包括关键字提取、意图识别、智能推荐和智能问答等等。所述音频处理电路506例如可以通过专用芯片实现。所述声音转换电路505还可被配置为将音频处理结果转换为声音数据,以适用于语音助手或虚拟客服等应用场景。
上述的各种电路(例如图像处理电路503、文字识别电路504、声音转换电路505、音频处理电路506中的一个或多个可以使用定制硬件,和/或可以用硬件、软件、固件、中间件、微代码,硬件描述语言或其任何组合来实现。例如,上述的各种电路中的一个或多个可以通过使用根据本公开的逻辑和算法,用汇编语言或硬件编程语言(诸如VERILOG,VHDL,C ++)对硬件(例如,包括现场可编程门阵列(FPGA)和/或可编程逻辑阵列(PLA)的可编程逻辑电路)进行编程来实现。
根据一些实施方式,电子设备500还可以包括输出设备507,所述输出设备507可以是用于呈现信息的任何类型的设备,可以包括但不限于显示屏、具有显示功能的终端、耳机、扬声器、振动器和/或打印机等。
根据一些实施方式,电子设备500还可以包括输入设备508,所述输入设备508可以是用于向电子设备500输入信息的任何类型的设备,可以包括但不限于各种传感器、鼠标、键盘、触摸屏、按钮、控制杆、麦克风和/或遥控器等等。
根据一些实施方式,电子设备500还可以包括通信设备509,所述通信设备509可以是使得能够与外部设备和/或与网络通信的任何类型的设备或系统,可以包括但不限于调制解调器、网卡、红外通信设备、无线通信设备和/或芯片组,例如蓝牙设备、802.11设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
根据一些实施方式,电子设备500还可以包括处理器501。所述处理器501可以是任何类型的处理器,并且可以包括但不限于一个或多个通用处理器和/或一个或多个专用处理器(例如特殊处理芯片)。处理器501例如可以是但不限于中央处理单元CPU、图形处理器GPU、或各种专用的人工智能(AI)计算芯片等等。
电子设备500还可以包括工作存储器502和存储设备511。处理器501可以被配置为能够获取并且执行存储在工作存储器502、存储设备511或者其他计算机可读介质中的计算机可读指令,诸如操作系统502a的程序代码、应用程序502b的程序代码等。工作存储器502和存储设备511是用于存储指令的计算机可读存储介质的示例,所存储的指令能够由处理器501执行来实施前面所描述的各种功能。工作存储器502可以包括易失性存储器和非易失性存储器二者(例如RAM、ROM等等)。存储设备511可以包括硬盘驱动器、固态驱动器、可移除介质、包括外部和可移除驱动器、存储器卡、闪存、软盘、光盘(例如CD、DVD)、存储阵列、网络附属存储、存储区域网等等。工作存储器502和存储设备511在本文中都可以被统称为存储器或计算机可读存储介质,并且可以是能够把计算机可读、处理器可执行程序指令存储为计算机程序代码的非暂态介质,计算机程序代码可以由处理器501作为被配置成实施在本文的示例中所描述的操作和功能的特定机器来执行。
根据一些实施方式,处理器501可以对图像处理电路503、文字识别电路504、声音转换电路505、音频处理电路506以及电子设备500包括的其他各种装置和电路中的至少一个进行控制和调度。根据一些实施方式,图5中所述的各个组成部分中的至少一些可通过总线510而相互连接和/或通信。
软件要素(程序)可以位于所述工作存储器502中,包括但不限于操作系统502a、一个或多个应用程序502b、驱动程序和/或其他数据和代码。
根据一些实施方式,用于进行前述的控制和调度的指令可以被包括在操作系统502a或者一个或多个应用程序502b中。
根据一些实施方式,执行本公开所述的方法步骤的指令可以被包括在一个或多个应用程序502b中,并且上述电子设备500的各个模块可以通过由处理器501读取和执行一个或多个应用程序502b的指令来实现。换言之,电子设备500可以包括处理器501以及存储程序的存储器(例如工作存储器502和/或存储设备511),所述程序包括指令,所述指令在由所述处理器501执行时使所述处理器501执行如本公开各种实施例所述的方法。
根据一些实施方式,图像处理电路503、文字识别电路504、声音转换电路505、音频处理电路507中的至少一个所执行的操作中的一部分或者全部可以由处理器501读取和执行一个或多个应用程序502b的指令来实现。
软件要素(程序)的指令的可执行代码或源代码可以存储在非暂时性计算机可读存储介质(例如所述存储设备511)中,并且在执行时可以被存入工作存储器502中(可能被编译和/或安装)。因此,本公开提供存储程序的计算机可读存储介质,所述程序包括指令,所述指令在由电子设备的处理器执行时,致使所述电子设备执行如本公开各种实施例所述的方法。根据另一种实施方式,软件要素(程序)的指令的可执行代码或源代码也可以从远程位置下载。
还应该理解,可以根据具体要求而进行各种变型。例如,也可以使用定制硬件,和/或可以用硬件、软件、固件、中间件、微代码,硬件描述语言或其任何组合来实现各个电路、单元、模块或者元件。例如,所公开的方法和设备所包含的电路、单元、模块或者元件中的一些或全部可以通过使用根据本公开的逻辑和算法,用汇编语言或硬件编程语言(诸如VERILOG,VHDL,C ++)对硬件(例如,包括现场可编程门阵列(FPGA)和/或可编程逻辑阵列(PLA)的可编程逻辑电路)进行编程来实现。
根据一些实施方式,电子设备500中的处理器501可以分布在网络上。 例如,可以使用一个处理器执行一些处理,而同时可以由远离该一个处理器的另一个处理器执行其他处理。电子设备500的其他模块也可以类似地分布。这样,电子设备500可以被解释为在多个位置执行处理的分布式计算系统。电子设备500的处理器501也可以是云计算系统的处理器,或者是结合了区块链的处理器。
虽然已经参照附图描述了本公开的实施例或示例,但应理解,上述的方法、系统和设备仅仅是示例性的实施例或示例,本发明的范围并不由这些实施例或示例限制,而是仅由授权后的权利要求书及其等同范围来限定。实施例或示例中的各种要素可以被省略或者可由其等同要素替代。此外,可以通过不同于本公开中描述的次序来执行各步骤。进一步地,可以以各种方式组合实施例或示例中的各种要素。重要的是随着技术的演进,在此描述的很多要素可以由本公开之后出现的等同要素进行替换。

Claims (20)

1.一种用于环形缓冲器的参数生成方法,所述环形缓冲器用于循环地存储多组数据,所述参数包括缓冲器存储地址边界的目标值和所述多组数据中每组数据的数据存储地址边界的目标值,所述方法包括:
针对所述多组数据中的每组数据,随机生成数据存储地址边界的初始值,其中,所述每组数据的数据存储地址边界的初始值指示该组数据的数据量;
基于所述多组数据的数据存储地址边界的初始值,生成缓冲器存储地址边界的候选值,其中,所述缓冲器存储地址边界的候选值所限定的存储容量的下限不小于所述多组数据中的任意相邻两组数据的数据量之和,所述缓冲器存储地址边界的候选值所限定的存储容量的上限小于所述多组数据的数据量总和;
在所述候选值所限定的存储容量范围内,随机生成缓冲器存储地址边界的目标值;以及
基于所述缓冲器存储地址边界的目标值和预设约束规则,生成所述每组数据的数据存储地址边界的目标值。
2.根据权利要求1所述的方法,其中,所述预设约束规则包括:所述每组数据的数据存储地址边界的目标值落入所述缓冲器存储地址边界的目标值范围内。
3.根据权利要求1所述的方法,其中,所生成的数据存储地址边界的目标值包括数据存储地址边界的起始点目标值和数据存储地址边界的终止点目标值,并且其中,对于所述多组数据中的任意相邻两组数据,后一组数据的数据存储地址边界的起始点目标值与前一组数据的数据存储地址边界的终止点目标值紧邻。
4.根据权利要求2所述的方法,其中,生成所述每组数据的数据存储地址边界的目标值包括:
在所述缓冲器存储地址边界的目标值范围内随机生成第一组数据的数据存储地址边界的起始点目标值;以及
基于所述第一组数据的数据存储地址边界的起始点目标值、所述第一组数据的数据量、以及所述缓冲器存储地址边界的目标值,生成所述第一组数据的数据存储地址边界的终止点目标值。
5.根据权利要求4所述的方法,其中,所述缓冲器存储地址边界的目标值包括缓冲器存储地址边界的起始点目标值和缓冲器存储地址边界的终止点目标值,并且其中,基于所述第一组数据的数据存储地址边界的起始点目标值、所述第一组数据的数据量、以及所述缓冲器存储地址边界的目标值,生成所述第一组数据的数据存储地址边界的终止点目标值包括:
对所述第一组数据的数据存储地址边界的终止点目标值和所述缓冲器存储地址边界的终止点目标值进行比较;以及
响应于所述第一组数据的数据存储地址边界的终止点目标值大于所述缓冲器存储地址边界的终止点目标值,生成所述第一组数据的数据存储地址边界的终止点目标值,所生成的数据存储地址边界的终止点目标值使得所述第一组数据在存入所述环形缓冲器中时将发生数据回卷。
6.根据权利要求1至5中任一项所述的方法,其中,所述缓冲器存储地址边界的候选值所限定的存储容量的上限小于所述多组数据的数据量总和的预设百分比。
7.根据权利要求1至5中任一项所述的方法,还包括:
针对所述每组数据,随机生成缓冲器存储地址边界的初始值,其中,所述每组数据的数据存储地址边界的初始值落入该组数据的缓冲器存储地址边界的初始值所限定的存储范围内。
8.根据权利要求1至5中任一项所述的方法,其中,所述环形缓冲器是神经网络运算芯片中的环形缓冲器,所述神经网络包括多个级联的网络层,所述多组数据依次对应所述多个级联的网络层。
9.一种芯片的验证方法,所述芯片包括环形缓冲器,所述方法包括:
利用权利要求1至8中任一项所述的方法生成所述环形缓冲器的参数;以及
基于所述缓冲器存储地址边界的目标值和所述每组数据的数据存储地址边界的目标值,对所述芯片进行验证。
10.一种用于环形缓冲器的参数生成装置,所述环形缓冲器用于循环地存储多组数据,所述参数包括缓冲器存储地址边界的目标值和所述多组数据中每组数据的数据存储地址边界的目标值,所述装置包括:
数据存储地址边界的初始值生成单元,被配置为针对所述多组数据中的每组数据,随机生成数据存储地址边界的初始值,其中,所述每组数据的数据存储地址边界的初始值指示该组数据的数据量;
缓冲器存储地址边界的候选值生成单元,被配置为基于所述多组数据的数据存储地址边界的初始值,生成缓冲器存储地址边界的候选值,其中,所述缓冲器存储地址边界的候选值所限定的存储容量的下限不小于所述多组数据中的任意相邻两组数据的数据量之和,所述缓冲器存储地址边界的候选值所限定的存储容量的上限小于所述多组数据的数据量总和;
缓冲器存储地址边界的目标值生成单元,被配置为在所述候选值所限定的存储容量范围内,随机生成缓冲器存储地址边界的目标值;以及
数据存储地址边界的目标值生成单元,被配置为基于所述缓冲器存储地址边界的目标值和预设约束规则,生成所述每组数据的数据存储地址边界的目标值。
11.根据权利要求10所述的装置,其中,所述预设约束规则包括:所述每组数据的数据存储地址边界的目标值落入所述缓冲器存储地址边界的目标值范围内。
12.根据权利要求10所述的装置,其中,所生成的数据存储地址边界的目标值包括数据存储地址边界的起始点目标值和数据存储地址边界的终止点目标值,并且其中,对于所述多组数据中的任意相邻两组数据,后一组数据的数据存储地址边界的起始点目标值与前一组数据的数据存储地址边界的终止点目标值紧邻。
13.根据权利要求11所述的装置,其中,所述数据存储地址边界的目标值生成单元被进一步配置为:
在所述缓冲器存储地址边界的目标值范围内随机生成第一组数据的数据存储地址边界的起始点目标值;以及
基于所述第一组数据的数据存储地址边界的起始点目标值、所述第一组数据的数据量、以及所述缓冲器存储地址边界的目标值,生成所述第一组数据的数据存储地址边界的终止点目标值。
14.根据权利要求13所述的装置,其中,所述缓冲器存储地址边界的目标值包括缓冲器存储地址边界的起始点目标值和缓冲器存储地址边界的终止点目标值,并且其中,所述数据存储地址边界的目标值生成单元被进一步配置为:
对所述第一组数据的数据存储地址边界的终止点目标值和所述缓冲器存储地址边界的终止点目标值进行比较;以及
响应于所述第一组数据的数据存储地址边界的终止点目标值大于所述缓冲器存储地址边界的终止点目标值,生成所述第一组数据的数据存储地址边界的终止点目标值,所生成的数据存储地址边界的终止点目标值使得所述第一组数据在存入所述环形缓冲器中时将发生数据回卷。
15.根据权利要求10至14中任一项所述的装置,其中,所述缓冲器存储地址边界的候选值所限定的存储容量的上限小于所述多组数据的数据量总和的预设百分比。
16.根据权利要求10至14中任一项所述的装置,还包括:
缓冲器存储地址边界的初始值生成单元,被配置为针对所述每组数据,随机生成缓冲器存储地址边界的初始值,其中,所述每组数据的数据存储地址边界的初始值落入该组数据的缓冲器存储地址边界的初始值所限定的存储范围内。
17.根据权利要求10至14中任一项所述的装置,其中,所述环形缓冲器是神经网络运算芯片中的环形缓冲器,所述神经网络包括多个级联的网络层,所述多组数据依次对应所述多个级联的网络层。
18.一种人工智能芯片,包括根据权利要求10至17中任一项所述的装置。
19.一种电子设备,包括根据权利要求18所述的人工智能芯片。
20.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1至9中任一项所述的方法。
CN202211283372.0A 2022-10-20 2022-10-20 用于环形缓冲器的参数生成方法、装置和人工智能芯片 Active CN115357212B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211283372.0A CN115357212B (zh) 2022-10-20 2022-10-20 用于环形缓冲器的参数生成方法、装置和人工智能芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211283372.0A CN115357212B (zh) 2022-10-20 2022-10-20 用于环形缓冲器的参数生成方法、装置和人工智能芯片

Publications (2)

Publication Number Publication Date
CN115357212A CN115357212A (zh) 2022-11-18
CN115357212B true CN115357212B (zh) 2023-01-13

Family

ID=84008985

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211283372.0A Active CN115357212B (zh) 2022-10-20 2022-10-20 用于环形缓冲器的参数生成方法、装置和人工智能芯片

Country Status (1)

Country Link
CN (1) CN115357212B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114691543A (zh) * 2020-12-30 2022-07-01 国际商业机器公司 用于防止越界存储器引用的专用边界信息寄存器文件

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001005721A (ja) * 1999-06-17 2001-01-12 Nec Ic Microcomput Syst Ltd Dspによるリング・バッファ用メモリ確保によるフィルタ処理方法及びそのフィルタ処理システム
JP2005050372A (ja) * 2004-09-24 2005-02-24 Matsushita Electric Ind Co Ltd リングバッファへの画像データの読み込み制御方法と、この読み込みを制御する制御装置
US10210089B2 (en) * 2015-06-18 2019-02-19 Nxp Usa, Inc. Shared buffer management for variable length encoded data
CN106790599B (zh) * 2016-12-29 2019-06-28 中国人民解放军国防科学技术大学 一种基于多核无锁环形缓冲区的共生虚拟机通信方法
CN112286694B (zh) * 2020-12-24 2021-04-02 瀚博半导体(上海)有限公司 基于深度学习计算网络的硬件加速器内存分配方法及系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114691543A (zh) * 2020-12-30 2022-07-01 国际商业机器公司 用于防止越界存储器引用的专用边界信息寄存器文件

Also Published As

Publication number Publication date
CN115357212A (zh) 2022-11-18

Similar Documents

Publication Publication Date Title
CN106887225B (zh) 基于卷积神经网络的声学特征提取方法、装置和终端设备
US20220075750A1 (en) Article, device, and techniques for serverless streaming message processing
CN107885545B (zh) 应用管理方法、装置、存储介质及电子设备
US20140380213A1 (en) Location adjustment system and related method
WO2017200775A1 (en) System for providing and employing recommended resolution paths
CN106294549A (zh) 一种图像处理方法及终端
CN114610650A (zh) 内存压缩方法、装置、存储介质及电子设备
US10318612B2 (en) System and method for implementing screen capture
US11137947B2 (en) Recognizing hard disk movement
CN110297764B (zh) 漏洞测试模型训练方法和装置
CN114898177A (zh) 缺陷图像生成方法、模型训练方法、设备、介质及产品
CN115357212B (zh) 用于环形缓冲器的参数生成方法、装置和人工智能芯片
JP6612799B2 (ja) 電子機器、制御方法、及び制御プログラム
CN113221717A (zh) 一种基于隐私保护的模型构建方法、装置及设备
CN113157439B (zh) 一种资源统计方法、装置及终端
CN111667046A (zh) 深度学习加速方法及用户终端
CN110807300A (zh) 一种图像处理的方法、装置、电子设备及介质
JP6618942B2 (ja) 電子機器、制御方法及び制御プログラム
CN115496035B (zh) 芯片的验证方法、装置、芯片、电子设备和介质
CN115237831B (zh) 数据传输方法、装置、芯片、电子设备和介质
CN116126538A (zh) 业务处理方法、装置、设备及存储介质
CA3003002A1 (en) Systems and methods for using image searching with voice recognition commands
US20170115877A1 (en) Electronic device and method for correcting character
CN117972436A (zh) 大语言模型的训练方法、训练装置、存储介质及电子设备
CN115344506A (zh) 内存地址的映射方法、内存访问方法和装置、芯片、设备

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
GR01 Patent grant
GR01 Patent grant