CN115113931B - 数据处理***、方法、人工智能芯片、电子设备和介质 - Google Patents
数据处理***、方法、人工智能芯片、电子设备和介质 Download PDFInfo
- Publication number
- CN115113931B CN115113931B CN202210868772.1A CN202210868772A CN115113931B CN 115113931 B CN115113931 B CN 115113931B CN 202210868772 A CN202210868772 A CN 202210868772A CN 115113931 B CN115113931 B CN 115113931B
- Authority
- CN
- China
- Prior art keywords
- data
- consumed
- flag bit
- interrupt
- unit
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
本公开提供一种数据处理***、方法、人工智能芯片、电子设备和介质。该***包括:至少一个数据产生单元,用于产生待消费数据;数据消费单元;中断寄存器,与至少一个数据产生单元和数据消费单元通信连接,中断寄存器包括互斥锁标志位、中断标志位和多个消息位。每个数据产生单元被配置为:通过查询互斥锁标志位来获取针对中断寄存器的互斥锁;在获取到互斥锁的同时,向至少一个消息位写入与待消费数据相关联的消息;通过写中断标志位来向数据消费单元发送中断信号。数据消费单元被配置为:响应于接收到中断信号,基于中断寄存器中的消息获取待消费数据;在获取待消费数据过程中的预设时间节点,写互斥锁标志位来释放互斥锁。
Description
技术领域
本公开涉及计算机技术领域,具体涉及数据处理***、数据处理方法、人工智能芯片、电子设备、计算机可读存储介质和计算机程序产品。
背景技术
计算机中的部件(例如中央处理器、图形处理器)在执行数据处理时,通常需要对数据进行传输。随着计算机技术的不断发展,数据处理以及相应的数据传输的量大幅度提升,相应地,数据传输的成本和效率成为计算机技术领域备受关注的话题。
在此部分中描述的方法不一定是之前已经设想到或采用的方法。除非另有指明,否则不应假定此部分中描述的任何方法仅因其包括在此部分中就被认为是现有技术。类似地,除非另有指明,否则此部分中提及的问题不应认为在任何现有技术中已被公认。
发明内容
本公开提供了一种数据处理***、数据处理方法、人工智能芯片、电子设备、计算机可读存储介质和计算机程序产品。
根据本公开的一方面,提供了一种数据处理***。该***包括:至少一个数据产生单元,用于产生待消费数据;数据消费单元;以及中断寄存器,中断寄存器与至少一个数据产生单元以及数据消费单元通信连接,并且中断寄存器包括互斥锁标志位、中断标志位和多个消息位。该至少一个数据产生单元中的每个数据产生单元被配置为:通过查询互斥锁标志位来获取针对中断寄存器的互斥锁;以及在获取到互斥锁的同时,向多个消息位中的至少一个消息位写入与待消费数据相关联的消息;以及通过写中断标志位来向数据消费单元发送中断信号。数据消费单元被配置为:响应于接收到中断信号,基于中断寄存器中的消息获取待消费数据;以及在获取待消费数据过程中的预设时间节点,写互斥锁标志位来释放互斥锁。
根据本公开的另一方面,提供了一种数据处理方法。该方法由数据处理***执行,数据处理***包括至少一个数据产生单元、数据消费单元以及中断寄存器,中断寄存器与至少一个数据产生单元以及数据消费单元通信连接,并且中断寄存器包括互斥锁标志位、中断标志位和多个消息位。该方法包括:由该至少一个数据产生单元中的任意一个数据产生单元执行以下操作:通过查询互斥锁标志位来获取针对中断寄存器的互斥锁;以及在获取到互斥锁的同时,向多个消息位中的至少一个消息位写入与待消费数据相关联的消息;以及通过写中断标志位来向数据消费单元发送中断信号。该方法还包括:由数据消费单元执行以下操作:响应于接收到中断信号,基于中断寄存器中的消息获取待消费数据;以及在获取待消费数据过程中的预设时间节点,写互斥锁标志位来释放互斥锁。
根据本公开的又另一方面,提供了一种人工智能芯片。该人工智能芯片包括根据上述的数据处理***。
根据本公开的又另一方面,提供了一种电子设备,包括根据上述的人工智能芯片。
根据本公开的又另一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,使处理器执行上述的数据处理方法。
根据本公开的又另一方面,提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现上述的数据处理方法。
根据本公开的一个或多个实施例,能够降低数据传输的成本并提高数据传输的效率。
根据在下文中所描述的实施例,本公开的这些和其它方面将是清楚明白的,并且将参考在下文中所描述的实施例而被阐明。
附图说明
附图示例性地示出了实施例并且构成说明书的一部分,与说明书的文字描述一起用于讲解实施例的示例性实施方式。所示出的实施例仅出于例示的目的,并不限制权利要求的范围。在所有附图中,相同的附图标记指代类似但不一定相同的要素。
图1是示出根据示例性实施例的数据处理***的结构框图;
图2是示出根据示例性实施例的数据处理***的另一结构框图;
图3是示出根据示例性实施例的数据处理***的又一结构框图;
图4是示出根据示例性实施例的数据处理方法的流程图;以及
图5是示出能够应用于示例性实施例的示例性电子设备的框图。
具体实施方式
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。
在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
如上文所述,计算机***内的数据传输的成本和效率是计算机技术领域备受关注的话题。在相关技术中,当需要在不同部件之间进行数据传输时,可以利用消息队列和中断向量。例如,多个部件可以使用不同的消息队列和不同的中断向量;再例如,多个部件可以共享同一个消息队列和中断向量,并且多个部件之间可以通过软件仲裁的方式或通过硬件互斥锁的方式来获取消息队列的控制权,从而利用消息队列来进行数据传输。
然而,如果多个部件使用不同的消息队列和不同的中断向量,则需要占用大量的消息队列和大量的中断向量,从而增加了***成本。如果多个部件共享同一个消息队列和中断向量,并通过软件仲裁的方式或通过硬件互斥锁的方式来获取消息队列的控制权,则需要设置专用软件或专用硬件来实现仲裁功能,然后再产生中断。以这种方式,仲裁的实现成本较高,并且仲裁功能和产生中断的功能分为两步,这增加了***延时和软件复杂度。
鉴于此,本公开提出一种数据处理***、数据处理方法、人工智能芯片、电子设备、计算机可读存储介质和计算机程序产品,可以降低数据传输的成本并提高数据传输的效率。
下面结合附图详细描述本公开的示例性实施例。
首先参考图1,图1是示出根据示例性实施例的数据处理***100的结构框图。如图1所示,数据处理***100包括:至少一个数据产生单元(图1示出了3个数据产生单元,即数据产生单元111、数据产生单元112和数据产生单元113),数据产生单元用于产生待消费数据;数据消费单元120;以及中断寄存器130。
如图1中的箭头所示意的,中断寄存器130与数据产生单元111、数据产生单元112、数据产生单元113以及数据消费单元120通信连接。并且中断寄存器130包括互斥锁标志位、中断标志位和多个消息位。在图1所示的示例中,中断寄存器130是32位的寄存器。中断寄存器130的互斥锁标志位为Bit31;中断标志位为Bit0;并且多个消息位可以是Bit1至Bit30之间的任意多个位。
每个数据产生单元(即数据产生单元111、数据产生单元112和数据产生单元113)被配置为:通过查询互斥锁标志位Bit31来获取针对中断寄存器130的互斥锁;以及在获取到互斥锁的同时,向多个消息位中的至少一个消息位写入与待消费数据相关联的消息;并通过写中断标志位Bit0来向数据消费单元120发送中断信号。
数据消费单元120被配置为:响应于接收到中断信号基于中断寄存器130中的所述消息获取所述待消费数据;以及在获取待消费数据过程中的预设时间节点,写互斥锁标志位来释放互斥锁。
通过在中断寄存器中分别设置互斥锁标志位、中断标志位、以及多个消息位,并且每个数据产生单元均能够通过查询互斥锁标志位的方式来获取针对中断寄存器的互斥锁,使得每个数据产生单元能够排他性地控制并使用中断寄存器以达到互斥的目的,从而无需使用专用软件或专用硬件来实现仲裁功能,这能够降低***成本。此外,每个数据产生单元在查询互斥锁标志位以获取到互斥锁的同时,还分别向消息位写入与待消费数据相关联的消息以及同时通过写中断标志位来向数据消费单元发送中断信号,使得仲裁功能和产生中断的功能能够同时进行,从而降低***延时和软件复杂度。由此,数据处理***100能够降低数据传输的成本并提高数据传输的效率。
数据产生单元(数据产生单元111、数据产生单元112和数据产生单元113)可以是计算机中的能够进行运算以产生数据的部件或固件实体。示例性地,数据产生单元可以是中央处理器(CPU)、微控制器(MCU)、或中央处理器(CPU)中的线程。例如,多个数据产生单元可以是中央处理器(CPU)中的多个线程。示例性地,数据产生单元可以是用于进行图像渲染的渲染引擎的主控MCU,并且能够产生经渲染的图像数据。相应地,经渲染的图像数据可以是待消费数据,经渲染的图像数据能够被编码引擎消费(即,编码引擎能够对经渲染的图像数据进行编码)。
数据消费单元120可以是计算机中的能够消费数据的部件或固件实体。示例性地,数据消费单元120可以是中央处理器(CPU)、微控制器(MCU)、或中央处理器(CPU)中的线程。示例性地,数据消费单元120可以是用于图像编码的编码器的主控MCU,并且能够消费由数据产生单元所产生的待消费数据。例如,用于图像编码的编码器的主控MCU可以对经渲染的图像数据进行压缩编码。
在一些示例中,中断寄存器130可以包括多个触发器,每个触发器可以存储1位二进制代码。相应地,中断寄存器130中的多个位中的每个位可以分别是一个触发器,并且多个位中每个位的值可以是二进制代码0或1。
数据产生单元(例如数据产生单元111)可以在查询互斥锁标志位(例如Bit31)为1时通过将互斥锁标志位清0(即,读清0)来获取针对中断寄存器130的互斥锁(在这种情况下,查询到Bit31位的值为1表示数据产生单元111获取了互斥锁);并且与此同时,数据产生单元111可以向多个消息位中的至少一个消息位(例如Bit1、Bit4)写入与待消费数据相关联的消息,所述消息可以是0或1;与此同时,数据产生单元111还可以通过将中断标志位(例如Bit0)写为1来向数据消费单元120发送中断信号。应当理解的是,在一些示例中,数据产生单元111也可以在查询互斥锁标志位(例如Bit31)为0时通过将互斥锁标志位置1(即读置1)来获取针对中断寄存器130的互斥锁(在这种情况下,查询到Bit31位的值为0表示数据产生单元111获取了互斥锁);相应地,数据产生单元111还可以通过将中断标志位(例如Bit0)写为0来向数据消费单元120发送中断信号。
应当理解的是,虽然图1中示出了3个数据产生单元,但是***100还可以包括1个、2个、4个或更多个数据产生单元。
应当理解的是,虽然图1中示出的中断寄存器130是32位寄存器,但是中断寄存器130还可以是包括任意数量位的寄存器,例如,中断寄存器130还可以是16位寄存器。还应当理解的是,虽然在图1中示出的中断寄存器130中互斥锁标志位为Bit31、中断标志位为Bit0,但是互斥锁标志位可以是中断寄存器130中预先设置的任意位(例如可以是Bit30),并且中断标志位也可以是中断寄存器130中预先设置的任意位(例如可以是Bit1)。相应地,多个消息位可以是中断寄存器130的多个位中除了互斥锁标志位和中断标志位之外任意的多个位。并且可以根据数据产生单元的数量和类型、数据消费单元的数量和类型、待消费数据的类型等来确定中断寄存器130中消息位的数量。例如,当需要利用消息位从多方面指示待消费数据的相关信息,则可以针对待消费数据设置多个消息位。
为了简洁起见,在下文所描述的实施例中,将以中断寄存器的Bit31位作为互斥锁标志位,并且以中断寄存器的Bit0位作为中断标志位。
根据一些实施例,每个数据产生单元(数据产生单元111、数据产生单元112和数据产生单元113)可以被进一步配置为:
查询互斥锁标志位的值;以及
响应于查询到的互斥锁标志位的值指示互斥锁可用,获取互斥锁。
例如,数据产生单元111可以查询互斥锁标志位Bit31的值;响应于查询到的互斥锁标志位Bit31的值指示互斥锁可用(例如值为1指示互斥锁可用),将互斥锁标志位Bit31清0来获取互斥锁。换言之,在数据产生单元111查询互斥锁标志位Bit31时,会对互斥锁标志位Bit31的值产生附带的写效应(清0),从而使得其他数据产生单元查询到Bit31位的值为0而无法获取互斥锁,从而达到互斥的目的。
此外,根据一些实施例,预设时间节点可以是完成获取待消费数据的时间节点。即,数据消费单元120可以被进一步配置为响应于完成获取待消费数据,释放互斥锁。由此,其他数据产生单元(例如数据产生单元112和数据产生单元113)可以进一步陈尝试获取互斥锁。
根据一些实施例,每个数据产生单元可以被进一步配置为响应于完成写入与待消费数据相关联的消息,释放互斥锁(例如通过将互斥锁标志位Bit31写为1来释放互斥锁)。相应地,数据消费单元120可以被进一步配置为:响应于接收到中断信号,通过查询互斥锁标志位来获取针对中断寄存器130的互斥锁;以及在获取到互斥锁的同时,基于中断寄存器130中的消息获取待消费数据。
由此,在完成消息的写入后,数据产生单元及时地释放互斥锁,这允许其他数据产生单元或数据消费单元来获取被释放的互斥锁,从而可以提高中断寄存器130被利用的效率,以进一步提高数据传输的效率。
在一些示例中,数据产生单元可以以预设地频率查询互斥锁标志位的值,直到查询到的互斥锁标志位的值指示互斥锁可用。并且,每个数据产生单元均可以以预设地频率查询互斥锁标志位的值,并可以按照进行查询的先后顺序来顺序地获取互斥锁。当互斥锁被一个数据产生单元获取并还未释放时,其他数据产生单元或数据消费单元将暂时无法获取互斥锁。
根据一些实施例,数据消费单元120可以被进一步配置为:
查询互斥锁标志位的值;以及
响应于查询到的互斥锁标志位的值指示互斥锁可用,获取互斥锁。并且预设时间节点可以是开始获取待消费数据的时间节点(即,数据消费单元120响应于开始获取待消费数据,释放互斥锁)。
例如,响应于接收到中断信号,数据消费单元120可以查询互斥锁标志位Bit31的值;响应于查询到的互斥锁标志位Bit31的值指示互斥锁可用(例如值为1指示互斥锁可用),将互斥锁标志位Bit31清0来获取互斥锁。此外,数据消费单元120可以响应于开始获取待消费数据,通过将互斥锁标志位Bit31写为1来释放互斥锁。
由此,通过查询互斥锁标志位的值,在互斥锁标志位的值指示互斥锁可用的情况下获取互斥锁;并且在开始获取待消费数据后,及时地释放互斥锁,而不论数据消费单元120是否已完成待消费数据的获取或已将获取到的待消费数据处理完毕。这允许数据产生单元及时地获取被释放的互斥锁,从而可以提高中断寄存器130被利用的效率,以进一步提高数据传输的效率。
根据一些实施例,每个数据产生单元(数据产生单元111、数据产生单元112和数据产生单元113)可以被进一步配置为通过将中断标志位的值从第一预设值更新为第二预设值来向数据消费单元120发送中断信号,并且数据消费单元120可以被进一步配置为响应于完成获取待消费数据,将中断标志位的值从第二预设值更新为第一预设值。
例如,数据产生单元111可以被进一步配置为通过将中断标志位Bit31的值从第一预设值0更新为第二预设值1来向数据消费单元120发送中断信号,并且数据消费单元120可以被进一步配置为响应于完成获取待消费数据,将中断标志位Bit31的值从第二预设值1更新为第一预设值0。
由此,当数据消费单元120获取到待消费数据后,可以及时地将中断标志位Bit31从第二预设值更新为第一预设值,从而使得任意一个数据产生单元能够再次通过将中断标志位Bit31的值从第一预设值更新为第二预设值来进一步向数据消费单元120发送中断信号。
图2是示出根据示例性实施例的数据处理***200的结构框图。如图2所示,数据处理***200包括三个数据产生单元(数据产生单元211、数据产生单元212和数据产生单元213)、数据消费单元220以及中断寄存器230。其中,数据产生单元211、数据产生单元212、数据产生单元213、数据消费单元220和中断寄存器230与上文关于图1所描述的数据处理***100中的数据产生单元111、数据产生单元112、数据产生单元113、数据消费单元120和中断寄存器130分别类似,在此不再赘述。
根据一些实施例,数据处理***200还可以包括缓存器240,缓存器240与每个数据产生单元以及数据消费单元通信连接(图2中的虚线示意了该通信连接)。缓存器240用于存储由数据产生单元(数据产生单元211、数据产生单元212和数据产生单元213)产生的待消费数据。并且数据消费单元220被进一步配置为从缓存器240获取待消费数据。
缓存器可以是缓冲寄存器(又称为缓冲器)。在例如待消费数据的数据量较大的场景中,可以通过缓存器240暂存由数据产生单元产生的待消费数据,从而避免待消费数据的丢失,也使得数据产生单元和数据消费单元两者无需等待彼此处理数据的进程,从而进一步提升数据传输与处理的效率。
根据一些实施例,缓存器240包括多个缓存区,每个缓存区能够独立地存储待消费数据。并且多个消息位包括至少一个占用标志位,至少一个占用标志位中的每个占用标志位与多个缓存区中的相应一个缓存区相对应,用于指示该缓存区的被占用状态。
在一个示例中,缓存器240可以包括3个缓存区(缓存区A、缓存区B和缓存区C),3个缓存区可以是对缓存器240进行预先划分得到的3个缓存区域,每个缓存区域能够独立于其他缓存区域进行数据的缓存。中断寄存器230的Bit1至Bit30中的任意位可以作为占用标志位,例如,Bit1、Bit2和Bit3可以作为三个占用标志位,并分别对应于缓存区A、缓存区B和缓存区C。其中,Bit1用于指示缓存区A的被占用状态、Bit2用于指示缓存区B的被占用状态、Bit3用于指示缓存区C的被占用状态。
由此,数据产生单元或数据消费单元在读取到中断寄存器230中的Bit1、Bit2、或Bit3的消息时,能够根据该消息确定相应的缓存区被占用的状态,从而根据该缓存区被占用的状态来确定是否对该缓存区中的待消费数据进行读写操作。
在一些场景中,由于数据处理任务的需求,可能需要数据产生单元和数据消费单元具有异步处理数据的能力。例如,在一些场景中,CPU可以控制显卡来进行图像的渲染,以产生经渲染的图像数据作为待消费数据。然后,可以利用视频编码器对经渲染的图像进行压缩编码,再以视频流的方式,将压缩编码后的视频通过网络发送到客户端进行解压缩和播放。通常,显卡的渲染能力和视频编码器的编码能力是不匹配的,为了获取更佳的用户体验,需要显卡和编码器具有异步处理数据的能力。即,可以使显卡充分释放其图像渲染的计算能力,将经渲染的图像都存在某个缓存区内,而且不能破坏缓存区内编码器当前正在读取的那一部分已渲染的图像数据。编码器可以根据其编码能力将最新完成的经渲染图像进行编码,而可以丢弃其余的经渲染图像。
根据一些实施例,所述至少一个占用标志位包括至少一个第一占用标志位,所述至少一个第一占用标志位中的每个第一占用标志位用于指示与该第一占用标志位相对应的缓存区被数据消费单元220占用的状态。并且每个数据产生单元(数据产生单元211、数据产生单元212、数据产生单元213)被进一步配置为根据每个第一占用标志位的值,向当前未被数据消费单元220占用的至少一个缓存区写入待消费数据。
例如,继续参考图2,中断寄存器230的Bit4、Bit5、Bit6是第一占用标志位,Bit4、Bit5、Bit6分别用于指示缓存区A、缓存区B和缓存区C被数据消费单元220占用的状态。例如,当Bit4的值为1时,指示缓存区A正在被数据消费单元220占用(即,数据消费单元220正在读取缓存区A中的待消费数据),这意味着数据产生单元暂时无法对缓存区A进行数据写入操作,由此能够防止数据产生单元对缓存区A的写入操作破坏或覆盖缓存区A中由数据消费单元正在读取的数据。例如,当Bit4的值为0时,指示缓存区A当前没有被数据消费单元220占用,这意味着任意一个数据产生单元可以向缓存区A写入待消费数据。
根据一些实施例,所述至少一个占用标志位包括至少一个第二占用标志位,所述至少一个第二占用标志位中的每个第二占用标志位用于指示与该第二占用标志位相对应的缓存区被待消费数据占用的状态。并且数据消费单元220被进一步配置为根据每个第二占用标志位的值,从当前被待消费数据占用的至少一个缓存区中获取待消费数据。
例如,中断寄存器230的Bit1、Bit2、Bit3是第二占用标志位,Bit1、Bit2、Bit3分别用于指示缓存区A、缓存区B和缓存区C被待消费数据占用的状态(即,分别用于指示缓存区A、缓存区B和缓存区C当前存储有待消费数据)。例如,当Bit1的值为1时,指示缓存区A中当前存储有待消费数据,这意味着数据消费单元220可以对缓存区A进行数据读取操作。一旦数据消费单元220从缓存区A读取数据,数据消费单元220可以将Bit1的值设置为0,当任意一个数据产生单元再次向缓存区A中写入待消费数据时,可以将Bit1的值再次设置为1。
在一些场景中,多个缓存区中可能有两个或两个以上的缓存区当前处于被待消费数据占用的状态(即,可能有两个或两个以上的缓存区当前存储有待消费数据)。数据消费单元220可以从被待消费数据占用的两个或两个以上的缓存区中随机地选择一个缓存区,以读取其中的待消费数据。
根据一些实施例,当前被待消费数据占用的缓存区的数量为多个,并且所述多个消息位还可以包括多个时间戳位,多个时间戳位中的每个时间戳位与多个缓存区中的相应一个缓存区对应,用于指示该缓存区被待消费数据占用的时长。并且其数据消费单元220可以被进一步配置为根据多个时间戳位的值,从被待消费数据截至当前占用时长最短的缓存区中获取待消费数据。
例如,中断寄存器230的Bit7、Bit8、Bit9位(图中未示出)是时间戳位,Bit7、Bit8、Bit9位分别用于指示缓存区A、缓存区B和缓存区C被待消费数据占用的时长。每个时间戳位可以采用两位的时间戳循环计数来表示相应的缓存区已写入待消费数据的时长。由此,数据消费单元220可以从中选择截至当前占用时长最短的缓存区(即,最新写入了待消费数据的缓存区),从所选择的缓存区中读取最新的待消费数据。
根据一些实施例,所述至少一个数据产生单元包括多个数据产生单元,并且数据消费单元220可以被进一步配置为:
根据预设规则查询每个数据产生单元所对应的缓存区的第二占用标志位的值;以及
响应于查询到任意一个第二占用标志位的值指示与该第二占用标志位的值相对应的缓存区当前被待消费数据占用,从该缓存区中获取待消费数据。
例如,多个数据产生单元是3个CPU线程(例如线程T1、线程T2和线程T3),每个线程可以与多个缓存区相对应。例如,线程T1与缓存区A、缓存区B和缓存区C对应;线程T2与缓存区D、缓存区E和缓存区F对应;线程T3与缓存区G、缓存区H和缓存区I对应。上述9个缓存区中的每个分别对应于一个第二占用标志位。
在数据消费单元220收到中断信号并获取互斥锁后,可以根据预设的顺序(例如预设的顺序为T1-T2-T3的顺序)查询每个线程所对应的缓存区的第二占用标志位的值。即,可以先查询线程T1所对应的缓存区A、缓存区B和缓存区C对应的每个第二占用标志位(例如Bit1、Bit2、Bit3)的值,当查询到任意一个第二占用标志位(例如Bit1)的值为1,表示对应的缓存区A中存储有待消费数据,则数据消费单元220可以从缓存区A中读取其中的待消费数据。如果线程T1所对应的缓存区A、缓存区B和缓存区C对应的每个第二占用标志位(Bit1、Bit2、Bit3)的值均为0,表示缓存区A、缓存区B和缓存区C均未存储待消费数据,则数据消费单元220可以继续查询线程T2所对应的缓存区D、缓存区E和缓存区F的第二占用标志位(例如Bit10、Bit11、Bit12),以这种循环方式,直到查询到任意一个第二占用标志位的值为1为止。
例如,当数据消费单元220查询得到Bit1的值为1,在从该缓存区A中读取数据的同时,可以根据其余的第二占用标志位(例如Bit10、Bit11或Bit12)的值来判定是否将Bit0的值设置为0,而不直接将Bit0的值设置为0。例如,当进一步查询到Bit10的值为1时,表示缓存区D中存储有待消费数据,则数据消费单元220不会将Bit0的值设置为0,而是使Bit0的值为1,从而使得在下一个循环中,数据消费单元220有可能进一步从缓存区D中读取数据。只有当其余的第二占用标志位的值均为0时,数据消费单元220才将Bit0的值设置为0。
在其他示例中,根据预设规则查询每个数据产生单元所对应的缓存区的第二占用标志位的值还可以是根据预设的算法,在查询过程中不断调整查询的顺序,进而根据经调整的查询顺序来查询每个线程所对应的缓存区的第二占用标志位的值。
图3是示出根据示例性实施例的数据处理***300的结构框图。如图3所示,数据处理***300包括三个数据产生单元(数据产生单元311、数据产生单元312和数据产生单元313)、数据消费单元320以及中断寄存器330。其中,数据产生单元311、数据产生单元312、数据产生单元313、数据消费单元320和中断寄存器330与上文关于图1所描述的数据处理***100中的数据产生单元111、数据产生单元112、数据产生单元113、数据消费单元120和中断寄存器130分别类似,在此不再赘述。
根据一些实施例,数据处理***300还可以包括中断屏蔽寄存器350,如图3中的虚线所示,中断屏蔽寄存器350与数据消费单元320通信连接,并且中断屏蔽寄存器350包括与中断寄存器相对应的屏蔽标志位。
数据消费单元320可以被进一步配置为:
响应于接收到中断信号,写中断屏蔽寄存器350的与屏蔽标志位,以使数据消费单元320进入中断服务程序,从而屏蔽其他中断信号;
对获取到的待消费数据进行处理;以及
响应于完成处理待消费数据,写中断屏蔽寄存器350的屏蔽标志位,以使数据消费单元320退出中断服务程序。
例如,中断屏蔽寄存器350的Bitx位是屏蔽标志位,并且屏蔽标志位Bitx与中断寄存器330对应。当数据消费单元320接收到中断信号后,可以将中断屏蔽寄存器350的Bitx位写为1,以使数据消费单元320进入中断服务程序,从而屏蔽其他中断信号(例如其他中断寄存器发送的中断信号)。进入中断程序后,数据消费单元320可以对待消费数据进行处理,例如,数据消费单元可以对获取到的经渲染图像数据进行压缩编码。当数据消费单元320完成压缩编码后,可以将中断屏蔽寄存器350的Bitx位写为0,从而退出中断服务程序。
将理解的是,***300还可以包括多个中断寄存器,每个中断寄存器可以对应于中断屏蔽寄存器350中的一个屏蔽标志位。
根据本公开的另一方面,提供了一种数据处理方法。图4是示出根据示例性实施例的数据处理方法400的流程图。
方法400由数据处理***执行,数据处理***包括至少一个数据产生单元、数据消费单元以及中断寄存器,中断寄存器与至少一个数据产生单元以及数据消费单元通信连接,并且中断寄存器包括互斥锁标志位、中断标志位和多个消息位。方法400包括:
由至少一个数据产生单元中的任意一个数据产生单元执行步骤S410至步骤S430:
步骤S410、通过查询互斥锁标志位来获取针对中断寄存器的互斥锁;以及
在获取到所述互斥锁的同时,执行步骤S420和步骤S430,其中,
步骤S420、向多个消息位中的至少一个消息位写入与待消费数据相关联的消息;以及步骤S430、通过写中断标志位来向数据消费单元发送中断信号。
方法400还包括由数据消费单元执行步骤S440至步骤S450:
步骤S440、响应于接收到中断信号基于中断寄存器中的消息获取待消费数据;以及
步骤S450、在获取待消费数据过程中的预设时间节点,写互斥锁标志位来释放互斥锁。
通过在中断寄存器中分别设置互斥锁标志位、中断标志位、以及多个消息位,并且每个数据产生单元均能够通过查询互斥锁标志位的方式来获取对中断寄存器的互斥锁,使得每个数据产生单元能够排他性地控制并使用中断寄存器,从而避免使用专用软件或专用硬件来实现仲裁功能。此外,每个数据产生单元在查询互斥锁标志位以获取到互斥锁的同时,还分别向消息位写入与待消费数据相关联的消息以及同时通过写中断标志位来向数据消费单元发送中断信号,使得仲裁功能和产生中断的功能能够同时进行,从而降低***延时和软件复杂度。由此,数据处理***100能够降低数据传输的成本并提高数据传输的效率。
根据一些实施例,上述步骤S410可以包括:查询互斥锁标志位的值;以及响应于查询到的互斥锁标志位的值指示互斥锁可用,获取互斥锁。
根据一些实施例,上述的预设时间节点可以是完成获取待消费数据的时间节点。
根据一些实施例,方法400还可以包括响应于完成写入与待消费数据相关联的消息,由数据产生单元释放互斥锁。并且上述步骤S440还可以包括:
响应于接收到中断信号,通过查询互斥锁标志位来获取针对中断寄存器的互斥锁;以及
在获取到互斥锁的同时,基于中断寄存器中的消息获取待消费数据。
根据一些实施例,上述步骤S440可以包括:查询互斥锁标志位的值;以及响应于查询到的互斥锁标志位的值指示互斥锁可用,获取互斥锁。并且上述的预设时间节点可以是开始获取待消费数据的时间节点。
根据一些实施例,上述步骤S430可以包括:通过将中断标志位的值从第一预设值更新为第二预设值来向数据消费单元发送中断信号。并且方法400还包括响应于完成获取待消费数据,由数据消费单元将中断标志位的值从第二预设值更新为第一预设值。
根据一些实施例,数据处理***还可以包括缓存器,缓存器与所述至少一个数据产生单元以及数据消费单元通信连接,用于存储由所述至少一个数据产生单元产生的待消费数据。并且上述步骤S440可以包括:从缓存器获取待消费数据。
根据一些实施例,缓存器可以包括多个缓存区,每个缓存区能够独立地存储待消费数据。并且多个消息位可以包括至少一个占用标志位,所述至少一个占用标志位中的每个占用标志位与多个缓存区中的相应一个缓存区相对应,用于指示该缓存区的被占用状态。
根据一些实施例,所述至少一个占用标志位可以包括至少一个第一占用标志位,所述至少一个第一占用标志位中的每个第一占用标志位用于指示与该第一占用标志位相对应的缓存区被数据消费单元占用的状态。并且方法400还可以包括:根据每个第一占用标志位的值,由任意一个数据产生单元向当前未被数据消费单元占用的至少一个缓存区写入待消费数据。
根据一些实施例,所述至少一个占用标志位可以包括至少一个第二占用标志位,所述至少一个第二占用标志位中的每个第二占用标志位用于指示与该第二占用标志位相对应的缓存区被待消费数据占用的状态。并且方法400还可以包括:根据所述每个第二占用标志位的值,由数据消费单元从当前被待消费数据占用的至少一个缓存区中获取待消费数据。
根据一些实施例,当前被待消费数据占用的缓存区的数量为多个,并且所述多个消息位还可以包括多个时间戳位,多个时间戳位中的每个时间戳位与多个缓存区中的相应一个缓存区对应,用于指示该缓存区被待消费数据占用的时长。并且从当前被待消费数据占用的至少一个缓存区中获取待消费数据的步骤可以包括:根据多个时间戳位的值,从被待消费数据截至当前占用时长最短的缓存区中获取待消费数据。
根据一些实施例,所述至少一个数据产生单元包括多个数据产生单元。并且根据所述每个第二占用标志位的值,由数据消费单元从当前被待消费数据占用的至少一个缓存区中获取待消费数据的步骤可以包括:
根据预设规则查询每个数据产生单元所对应的缓存区的第二占用标志位的值;以及
响应于查询到任意一个第二占用标志位的值指示与该第二占用标志位的值相对应的缓存区当前被待消费数据占用,从该缓存区中获取待消费数据。
根据一些实施例,数据处理***还可以包括中断屏蔽寄存器。中断屏蔽寄存器与数据消费单元通信连接,并且中断屏蔽寄存器包括与中断寄存器相对应的屏蔽标志位。并且方法400还可以包括由数据消费单元执行以下操作:
响应于接收到中断信号,写中断屏蔽寄存器的屏蔽标志位,以使数据消费单元进入中断服务程序,从而屏蔽其他中断信号;
对获取到的待消费数据进行处理;以及
响应于完成处理待消费数据,写中断屏蔽寄存器的屏蔽标志位,以使数据消费单元退出中断服务程序。
可以理解的是,根据本公开实施例的方法400的操作和技术效果与图1至图3中描述的***中的相应操作和技术效果类似,为了简洁起见,在此不做赘述。
根据本公开的另一方面,提供了一种人工智能芯片。该人工智能芯片包括根据本公开实施例的数据处理***。
将理解的是,根据本公开实施例的数据处理***还可以应用于各种其他类型的芯片或计算设备中。
根据本公开的又另一方面,提供了一种电子设备,包括根据本公开实施例的人工智能芯片。
根据本公开的又另一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,使处理器执行根据本公开实施例的数据处理方法。
根据本公开的又另一方面,提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现根据本公开实施例的数据处理方法。
图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 (30)
1.一种数据处理***,包括:
至少一个数据产生单元,用于产生待消费数据;
数据消费单元;以及
中断寄存器,所述中断寄存器与所述至少一个数据产生单元以及所述数据消费单元通信连接,并且所述中断寄存器包括互斥锁标志位、中断标志位和多个消息位,
其中,所述至少一个数据产生单元中的每个数据产生单元被配置为:
通过查询所述互斥锁标志位来获取针对所述中断寄存器的互斥锁;以及
在获取到所述互斥锁的同时,
向所述多个消息位中的至少一个消息位写入与所述待消费数据相关联的消息;以及
通过写所述中断标志位来向所述数据消费单元发送中断信号,
并且其中,所述数据消费单元被配置为:
响应于接收到所述中断信号,基于所述中断寄存器中的所述消息获取所述待消费数据;以及
在获取所述待消费数据过程中的预设时间节点,写所述互斥锁标志位来释放所述互斥锁。
2.根据权利要求1所述的数据处理***,其中,所述每个数据产生单元被进一步配置为:
查询所述互斥锁标志位的值;以及
响应于查询到的所述互斥锁标志位的值指示所述互斥锁可用,获取所述互斥锁。
3.根据权利要求2所述的数据处理***,其中,所述预设时间节点是完成获取所述待消费数据的时间节点。
4.根据权利要求1所述的数据处理***,其中,所述每个数据产生单元被进一步配置为:
响应于完成写入所述与所述待消费数据相关联的消息,释放所述互斥锁,
并且其中,所述数据消费单元被进一步配置为:
响应于接收到所述中断信号,通过查询所述互斥锁标志位来获取针对所述中断寄存器的互斥锁;以及
在获取到所述互斥锁的同时,基于所述中断寄存器中的所述消息获取所述待消费数据。
5.根据权利要求4所述的数据处理***,其中,所述数据消费单元被进一步配置为:
查询所述互斥锁标志位的值;以及
响应于查询到的所述互斥锁标志位的值指示所述互斥锁可用,获取所述互斥锁,并且其中,所述预设时间节点是开始获取所述待消费数据的时间节点。
6.根据权利要求1所述的数据处理***,其中,所述每个数据产生单元被进一步配置为通过将所述中断标志位的值从第一预设值更新为第二预设值来向所述数据消费单元发送所述中断信号,
并且其中,所述数据消费单元被进一步配置为响应于完成获取所述待消费数据,将所述中断标志位的值从所述第二预设值更新为所述第一预设值。
7.根据权利要求1至6中任一项所述的数据处理***,其中,所述数据处理***还包括缓存器,所述缓存器与所述至少一个数据产生单元以及所述数据消费单元通信连接,用于存储由所述至少一个数据产生单元产生的待消费数据,
并且其中,所述数据消费单元被进一步配置为从所述缓存器获取所述待消费数据。
8.根据权利要求7所述的数据处理***,其中,所述缓存器包括多个缓存区,每个缓存区能够独立地存储待消费数据,
并且其中,所述多个消息位包括至少一个占用标志位,所述至少一个占用标志位中的每个占用标志位与所述多个缓存区中的相应一个缓存区相对应,用于指示该缓存区的被占用状态。
9.根据权利要求8所述的数据处理***,其中,所述至少一个占用标志位包括至少一个第一占用标志位,所述至少一个第一占用标志位中的每个第一占用标志位用于指示与该第一占用标志位相对应的缓存区被所述数据消费单元占用的状态,
并且其中,所述每个数据产生单元被进一步配置为根据所述每个第一占用标志位的值,向当前未被所述数据消费单元占用的至少一个缓存区写入所述待消费数据。
10.根据权利要求8所述的数据处理***,其中,所述至少一个占用标志位包括至少一个第二占用标志位,所述至少一个第二占用标志位中的每个第二占用标志位用于指示与该第二占用标志位相对应的缓存区被待消费数据占用的状态,
并且其中,所述数据消费单元被进一步配置为根据所述每个第二占用标志位的值,从当前被待消费数据占用的至少一个缓存区中获取所述待消费数据。
11.根据权利要求10所述的数据处理***,其中,当前被待消费数据占用的缓存区的数量为多个,并且所述多个消息位还包括多个时间戳位,所述多个时间戳位中的每个时间戳位与所述多个缓存区中的相应一个缓存区对应,用于指示该缓存区被所述待消费数据占用的时长,
并且其中,所述数据消费单元被进一步配置为根据所述多个时间戳位的值,从被所述待消费数据截至当前占用时长最短的缓存区中获取所述待消费数据。
12.根据权利要求10所述的数据处理***,其中,所述至少一个数据产生单元包括多个数据产生单元,
并且其中,所述数据消费单元被进一步配置为:
根据预设规则查询每个数据产生单元所对应的缓存区的第二占用标志位的值;以及
响应于查询到任意一个第二占用标志位的值指示与该第二占用标志位的值相对应的缓存区当前被待消费数据占用,从该缓存区中获取所述待消费数据。
13.根据权利要求1至6中任一项所述的数据处理***,其中,所述数据处理***还包括中断屏蔽寄存器,所述中断屏蔽寄存器与所述数据消费单元通信连接,并且所述中断屏蔽寄存器包括与所述中断寄存器相对应的屏蔽标志位,
并且其中,所述数据消费单元被进一步配置为:
响应于接收到所述中断信号,写所述中断屏蔽寄存器的所述屏蔽标志位,以使所述数据消费单元进入中断服务程序,从而屏蔽其他中断信号;
对获取到的所述待消费数据进行处理;以及
响应于完成处理所述待消费数据,写所述中断屏蔽寄存器的所述屏蔽标志位,以使所述数据消费单元退出所述中断服务程序。
14.一种数据处理方法,所述方法由数据处理***执行,所述数据处理***包括至少一个数据产生单元、数据消费单元以及中断寄存器,所述中断寄存器与所述至少一个数据产生单元以及所述数据消费单元通信连接,并且所述中断寄存器包括互斥锁标志位、中断标志位和多个消息位,所述方法包括:
由所述至少一个数据产生单元中的任意一个数据产生单元执行以下操作:
通过查询所述互斥锁标志位来获取针对所述中断寄存器的互斥锁;以及
在获取到所述互斥锁的同时,
向所述多个消息位中的至少一个消息位写入与待消费数据相关联的消息;以及
通过写所述中断标志位来向所述数据消费单元发送中断信号,以及
由所述数据消费单元执行以下操作:
响应于接收到所述中断信号,基于所述中断寄存器中的所述消息获取所述待消费数据;以及
在获取所述待消费数据过程中的预设时间节点,写所述互斥锁标志位来释放所述互斥锁。
15.根据权利要求14所述的方法,其中,由所述任意一个数据产生单元执行的通过查询所述互斥锁标志位来获取针对所述中断寄存器的互斥锁包括:
查询所述互斥锁标志位的值;以及
响应于查询到的所述互斥锁标志位的值指示所述互斥锁可用,获取所述互斥锁。
16.根据权利要求15所述的方法,其中,所述预设时间节点是完成获取所述待消费数据的时间节点。
17.根据权利要求14所述的方法,其中,所述方法还包括响应于完成写入所述与所述待消费数据相关联的消息,由所述数据产生单元释放所述互斥锁,
并且其中,响应于接收到所述中断信号,基于所述中断寄存器中的所述消息获取所述待消费数据包括:
响应于接收到所述中断信号,通过查询所述互斥锁标志位来获取针对所述中断寄存器的互斥锁;以及
在获取到所述互斥锁的同时,基于所述中断寄存器中的所述消息获取所述待消费数据。
18.根据权利要求17所述的方法,其中,由所述数据消费单元执行的通过查询所述互斥锁标志位来获取针对所述中断寄存器的互斥锁包括:
查询所述互斥锁标志位的值;以及
响应于查询到的所述互斥锁标志位的值指示所述互斥锁可用,获取所述互斥锁,并且其中,所述预设时间节点是开始获取所述待消费数据的时间节点。
19.根据权利要求14所述的方法,其中,所述通过写所述中断标志位来向所述数据消费单元发送中断信号包括:通过将所述中断标志位的值从第一预设值更新为第二预设值来向所述数据消费单元发送所述中断信号,
并且其中,所述方法还包括:响应于完成获取所述待消费数据,由所述数据消费单元将所述中断标志位的值从所述第二预设值更新为所述第一预设值。
20.根据权利要求14至19中任一项所述的方法,其中,所述数据处理***还包括缓存器,所述缓存器与所述至少一个数据产生单元以及所述数据消费单元通信连接,用于存储由所述至少一个数据产生单元产生的待消费数据,
并且其中,所述获取所述待消费数据包括:从所述缓存器获取所述待消费数据。
21.根据权利要求20所述的方法,其中,所述缓存器包括多个缓存区,每个缓存区能够独立地存储待消费数据,
并且其中,所述多个消息位包括至少一个占用标志位,所述至少一个占用标志位中的每个占用标志位与所述多个缓存区中的相应一个缓存区相对应,用于指示该缓存区的被占用状态。
22.根据权利要求21所述的方法,其中,所述至少一个占用标志位包括至少一个第一占用标志位,所述至少一个第一占用标志位中的每个第一占用标志位用于指示与该第一占用标志位相对应的缓存区被所述数据消费单元占用的状态,
并且其中,所述方法还包括:根据所述每个第一占用标志位的值,由所述任意一个数据产生单元向当前未被所述数据消费单元占用的至少一个缓存区写入所述待消费数据。
23.根据权利要求21所述的方法,其中,所述至少一个占用标志位包括至少一个第二占用标志位,所述至少一个第二占用标志位中的每个第二占用标志位用于指示与该第二占用标志位相对应的缓存区被待消费数据占用的状态,
并且其中,所述方法还包括:根据所述每个第二占用标志位的值,由所述数据消费单元从当前被待消费数据占用的至少一个缓存区中获取所述待消费数据。
24.根据权利要求23所述的方法,其中,当前被待消费数据占用的缓存区的数量为多个,并且所述多个消息位还包括多个时间戳位,所述多个时间戳位中的每个时间戳位与所述多个缓存区中的相应一个缓存区对应,用于指示该缓存区被所述待消费数据占用的时长,
并且其中,从当前被待消费数据占用的至少一个缓存区中获取所述待消费数据包括:
根据所述多个时间戳位的值,从被所述待消费数据截至当前占用时长最短的缓存区中获取所述待消费数据。
25.根据权利要求23所述的方法,其中,所述至少一个数据产生单元包括多个数据产生单元,
并且其中,根据所述每个第二占用标志位的值,由所述数据消费单元从当前被待消费数据占用的至少一个缓存区中获取所述待消费数据包括:
根据预设规则查询每个数据产生单元所对应的缓存区的第二占用标志位的值;以及
响应于查询到任意一个第二占用标志位的值指示与该第二占用标志位的值相对应的缓存区当前被待消费数据占用,从该缓存区中获取所述待消费数据。
26.根据权利要求14至19中任一项所述的方法,其中,所述数据处理***还包括中断屏蔽寄存器,所述中断屏蔽寄存器与所述数据消费单元通信连接,并且所述中断屏蔽寄存器包括与所述中断寄存器相对应的屏蔽标志位,
并且其中,所述方法还包括由所述数据消费单元执行以下操作:
响应于接收到所述中断信号,写所述中断屏蔽寄存器的与所述屏蔽标志位,以使所述数据消费单元进入中断服务程序,从而屏蔽其他中断信号;
对获取到的所述待消费数据进行处理;以及
响应于完成处理所述待消费数据,写所述中断屏蔽寄存器的所述屏蔽标志位,以使所述数据消费单元退出所述中断服务程序。
27.一种人工智能芯片,包括根据权利要求1至13中任一项所述的数据处理***。
28.一种电子设备,包括根据权利要求27所述的人工智能芯片。
29.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求14至26中任一项所述的方法。
30.一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被处理器执行时实现权利要求14至26中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210868772.1A CN115113931B (zh) | 2022-07-22 | 2022-07-22 | 数据处理***、方法、人工智能芯片、电子设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210868772.1A CN115113931B (zh) | 2022-07-22 | 2022-07-22 | 数据处理***、方法、人工智能芯片、电子设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115113931A CN115113931A (zh) | 2022-09-27 |
CN115113931B true CN115113931B (zh) | 2023-02-14 |
Family
ID=83334244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210868772.1A Active CN115113931B (zh) | 2022-07-22 | 2022-07-22 | 数据处理***、方法、人工智能芯片、电子设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115113931B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101355577A (zh) * | 2008-09-01 | 2009-01-28 | 中兴通讯股份有限公司 | 一种多线程通讯程序中防止线程吊死的方法 |
CN103368848A (zh) * | 2012-03-30 | 2013-10-23 | 富士通株式会社 | 信息处理设备、算术装置和信息传递方法 |
CN105591729A (zh) * | 2015-10-27 | 2016-05-18 | 杭州华三通信技术有限公司 | 网络设备和用于网络设备中的时间戳获取方法 |
CN107992368A (zh) * | 2017-11-15 | 2018-05-04 | 国家计算机网络与信息安全管理中心 | 一种多进程间的数据交换方法和*** |
CN111930528A (zh) * | 2020-08-12 | 2020-11-13 | 银联商务股份有限公司 | 消息中间件的消息写入方法、装置、设备及可读存储介质 |
CN113867979A (zh) * | 2021-08-26 | 2021-12-31 | 深圳云天励飞技术股份有限公司 | 异构多核处理器数据通信方法、装置、设备及介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104268111B (zh) * | 2014-09-17 | 2017-12-01 | 海信(山东)冰箱有限公司 | 一种数据处理的方法及装置 |
CN108509327A (zh) * | 2018-04-20 | 2018-09-07 | 深圳市文鼎创数据科技有限公司 | 一种日志输出方法、装置、终端设备和存储介质 |
CN110148391A (zh) * | 2019-03-29 | 2019-08-20 | 珠海亿智电子科技有限公司 | 一种避免图像显示撕裂的方法和终端设备 |
CN112732628A (zh) * | 2019-10-29 | 2021-04-30 | Oppo广东移动通信有限公司 | 核间数据处理方法、***、片上***以及电子设备 |
CN111899501B (zh) * | 2020-08-04 | 2021-08-06 | 广东电网有限责任公司 | 一种配网自动化主站变电站内开关的遥控方法 |
CN113377509A (zh) * | 2021-06-08 | 2021-09-10 | 上海哔哩哔哩科技有限公司 | 数据处理方法与*** |
CN113821257B (zh) * | 2021-09-29 | 2023-05-23 | 杭州迪普科技股份有限公司 | 处理器内核调用栈信息查询方法及装置 |
-
2022
- 2022-07-22 CN CN202210868772.1A patent/CN115113931B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101355577A (zh) * | 2008-09-01 | 2009-01-28 | 中兴通讯股份有限公司 | 一种多线程通讯程序中防止线程吊死的方法 |
CN103368848A (zh) * | 2012-03-30 | 2013-10-23 | 富士通株式会社 | 信息处理设备、算术装置和信息传递方法 |
CN105591729A (zh) * | 2015-10-27 | 2016-05-18 | 杭州华三通信技术有限公司 | 网络设备和用于网络设备中的时间戳获取方法 |
CN107992368A (zh) * | 2017-11-15 | 2018-05-04 | 国家计算机网络与信息安全管理中心 | 一种多进程间的数据交换方法和*** |
CN111930528A (zh) * | 2020-08-12 | 2020-11-13 | 银联商务股份有限公司 | 消息中间件的消息写入方法、装置、设备及可读存储介质 |
CN113867979A (zh) * | 2021-08-26 | 2021-12-31 | 深圳云天励飞技术股份有限公司 | 异构多核处理器数据通信方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115113931A (zh) | 2022-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230196065A1 (en) | Methods and devices for programming a state machine engine | |
US10915450B2 (en) | Methods and systems for padding data received by a state machine engine | |
US11928590B2 (en) | Methods and systems for power management in a pattern recognition processing system | |
US10733508B2 (en) | Methods and systems for data analysis in a state machine | |
US11775320B2 (en) | Overflow detection and correction in state machine engines | |
US9454322B2 (en) | Results generation for state machine engines | |
US9866218B2 (en) | Boolean logic in a state machine lattice | |
US10671295B2 (en) | Methods and systems for using state vector data in a state machine engine | |
US8680888B2 (en) | Methods and systems for routing in a state machine | |
EP2791862B1 (en) | Device for detection in a state machine | |
JP6109186B2 (ja) | 状態機械格子におけるカウンタ動作 | |
CN113138801B (zh) | 命令分发装置、方法、芯片、计算机设备及存储介质 | |
US20210311782A1 (en) | Thread scheduling for multithreaded data processing environments | |
US9570125B1 (en) | Apparatuses and methods for shifting data during a masked write to a buffer | |
CN110928574A (zh) | 微控制器、中断处理芯片、设备及中断处理方法 | |
US20190065075A1 (en) | Method to improve mixed workload performance on storage devices that use cached operations | |
CN115113931B (zh) | 数据处理***、方法、人工智能芯片、电子设备和介质 | |
CN116594930A (zh) | 一种基于流水线的数据传输控制方法、***及电子设备 | |
CN115237831B (zh) | 数据传输方法、装置、芯片、电子设备和介质 | |
CN108268280B (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 |