一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据处理方法及装置、处理器、存储介质与流程

2022-05-18 05:54:44 来源:中国专利 TAG:


1.本技术涉及通信技术领域,尤其涉及一种数据处理方法及装置、处理器、存储介质。


背景技术:

2.从算法层面来说,人工智能网络由多个计算节点构成,每个计算节点也可称为计算层,每个计算层的输入来自于上一个计算层的输出,计算层可以包括卷积,池化,激活,尺寸缩放等运算。随着对人工智能网络探索越来越深入,人工智能网络的结构也变得更加多样化,各计算层之间的数据交互也更加复杂,故针对人工智能网络,需要一套统一的数据传输机制。
3.目前,可以使用mailbox机制来管理缓冲单元(buffer)数据的写入和读出。其中,mailbox机制可基于当前时钟周期来反馈当前buffer的数据存储情况进而控制数据写入端向buffer中写入数据和控制数据读取端从buffer中读取数据,当数据写入端和数据读取端距buffer较远时,会导致对buffer数据读写操作无法及时的更新至mailbox中,进而在继续执行buffer数据的读写操作时,会导致数据读写溢出的问题。


技术实现要素:

4.本技术实施例提供一种数据处理方法及装置、处理器、存储介质,能够在执行buffer数据的读写操作时,避免数据读写溢出的问题。
5.本技术的技术方案是这样实现的:
6.第一方面,本技术实施例提出一种数据处理装置,所述装置包括:数据写入端和数据读取端;所述数据写入端设置写入计数器,所述数据读取端设置读取计数器;其中,
7.所述写入计数器,用于在所述数据写入端每执行一次数据写入操作的情况下,利用一次数据写入操作对应的一次写入数据量同步更新第一缓冲数据量,以供所述数据写入端在下一次请求执行数据写入操作的情况下,根据所述写入计数器中记录的第一缓冲数据量确定下一次写入数据量;
8.所述读取计数器,用于在所述数据读取端每执行一次数据读取操作的情况下,利用一次数据读取操作对应的一次读取数据量同步更新第二缓冲数据量,以供所述数据读取端在下一次请求执行数据读取操作的情况下,根据所述读取计数器中记录的第二缓冲数据量确定下一次读取数据量。
9.第二方面,本技术实施例提出一种数据处理方法,应用于上述数据处理装置,所述方法包括:
10.在所述数据写入端请求执行数据写入操作的情况下,所述数据写入端根据所述写入计数器中记录的第一缓冲数据量确定本次写入数据量;并在所述数据写入端将所述本次写入数据量发送至缓冲单元的情况下,利用所述本次写入数据量同步更新所述写入计数器中记录的第一缓冲数据量;
11.在所述数据读取端请求执行数据读取操作的情况下,所述数据读取端根据所述读取计数器中记录的第二缓冲数据量确定本次读取数据量;在所述数据读取端从所述缓冲单元读取到所述本次读取数据量的情况下,利用所述本次读取数据量同步更新所述读取计数器中记录的第二缓冲数据量。
12.第三方面,本技术实施例提出一种缓存装置,所述缓存装置包括:缓冲单元、上述数据写入端和数据读取端;所述数据写入端与所述缓冲单元的输入端连接,所述数据读取端与所述缓冲单元的输出端连接;
13.所述数据写入端,用于向所述缓冲单元写入数据;
14.所述数据读取端,用于从所述缓冲单元读取数据。
15.第四方面,本技术实施例提出一种神经网络处理器,所述处理器包括:用于执行神经网络计算的计算单元和上述缓存装置。
16.第五方面,本技术实施例提出一种存储介质,其上存储有计算机程序,该计算机程序被执行时实现上述数据处理方法。
17.本技术实施例提供了一种数据处理方法及装置、处理器、存储介质,该装置包括:数据写入端和数据读取端;数据写入端设置写入计数器,数据读取端设置读取计数器;其中,写入计数器,用于在数据写入端每执行一次数据写入操作的情况下,利用一次数据写入操作对应的一次写入数据量同步更新第一缓冲数据量,以供数据写入端在下一次请求执行数据写入操作的情况下,根据写入计数器中记录的第一缓冲数据量确定下一次写入数据量;读取计数器,用于在数据读取端每执行一次数据读取操作的情况下,利用一次数据读取操作对应的一次读取数据量同步更新第二缓冲数据量,以供数据读取端在下一次请求执行数据读取操作的情况下,根据读取计数器中记录的第二缓冲数据量确定下一次读取数据量。采用上述实现方案,本技术在靠近数据写入端和数据读取端的位置均设置有计数器,能够及时同步数据写入端的数据写入操作和数据读取端的数据读取操作,在后续请求执行数据写入操作和/或数据读取操作时,能够基于数据写入端和数据读取端的计数器及时确定出buffer中的数据状态,进而避免数据读写溢出的问题。
附图说明
18.图1为目前的mailbox机制的数据流图;
19.图2为目前的远距离情况下的mailbox机制的数据流图;
20.图3为本技术实施例提供的一种数据处理装置的结构示意图;
21.图4为本技术实施例提供的一种示例性的第一种计数器行为的设计方案示意图;
22.图5为本技术实施例提供的一种示例性的第二种计数器行为的设计方案示意图;
23.图6为本技术实施例提供的一种示例性的第三种计数器行为的设计方案示意图;
24.图7为本技术实施例提供的一种数据处理方法的流程图;
25.图8为本技术实施例提供的一种缓存装置的结构示意图;
26.图9为本技术实施例提供的一种神经网络处理器的结构示意图。
具体实施方式
27.为了能够更加详尽地了解本技术实施例的特点与技术内容,下面结合附图对本申
请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本技术实施例。
28.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
29.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。还需要指出,本技术实施例所涉及的术语“第一\第二\第三”仅是用于区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述的以外的顺序实施。
30.目前的mailbox机制的数据流如图1所示,其中,数据写入(producer)端用来负责生成数据并将数据写入至buffer中,当每次需要写入数据至buffer中时,producer端需要检查buffer中的数据占用状态,此时producer端向mailbox端发出psync信号,告知将要向buffer中写入数据的操作,当mailbox评估出producer端可以向buffer中写入数据时,向producer端发出psts信号,producer端根据psts信号向buffer中写入数据;数据读取(consumer)端用来负责读取buffer中的数据,当每次需要从buffer中读取数据时,consumer端需要检查buffer中的数据占用状态,此时,consumer端向mailbox发送csync信号,告知将要从buffer中读取数据的操作,当mailbox评估出consumer端可以从buffer中读取数据时,向consumer端发出csts信号,consumer端根据csts信号从buffer中读取数据。对于较为简单并且距离较近的数据写入端和数据读取端之间的数据交互,使用以上机制能够完成数据交互管理。
31.以buffer的总容量为100条数据为例,针对producer端而言,数据写入过程中的buffer存储的数据状态如表1所示,
32.表1数据写入过程中的mailbox机制对应的状态表
33.时钟周期01234567psts√√√√
××××
psync√√√√
××××
pnum202020400000buff-data204060100100100100100
34.表1中的psts表示当前buffer中是否还有空余位置供producer端写数据,producer端写入的数据量使用pnum来表示,buffer_data表示目前buffer中的有效数据量,故从表1中可以看出,从时钟周期0到时钟周期2,在每个时钟周期向buffer中写入20条数据,直到第三周期,producer写入40条数据,mailbox的psts在时钟周期0到时钟周期3返回了对号,此时buffer中存储的数据量已满,所以mailbox的psts在第四个时钟周期返回了错号,表明buffer已满,不能再继续写入。假设整个过程consumer端一直没有消费buffer中的数据,那么直到最后,psts将从第四个时钟周期开始一直阻止producer端写入数据。
35.以buffer的总容量为100条数据为例,针对consumer端而言,数据读取过程中的buffer存储的数据状态如表2所示,
36.表2数据读取过程中的mailbox机制对应的状态表
37.时钟周期01234567csts√√√√
××××
csync√√√√
××××
cnum202020400000buff-data80606000000
38.表2中的csts表示当前buffer中是否存在有效数据供consumer端读数据,consumer端读取的数据量使用cnum来表示,buffer_data表示目前buffer中的有效数据量,故从表2中可以看出,从时钟周期0到时钟周期2,在每个时钟周期从buffer中读取20条数据,直到第三周期,producer写入40条数据,producer写入40条数据,mailbox的csts在时钟周期0到时钟周期3返回了对号,此时buffer中存储的数据量已空,所以mailbox的csts在第四个时钟周期返回了错号,表明buffer已空,不能再继续读取。假设整个过程producer端一直没有写入数据,那么直到最后,csts将从第四个时钟周期开始一直阻止consumer端读取数据。
39.从上述分析中可以看出,mailbox不论是反馈ptst至producer端还是反馈ctst至consumer端,均是基于当前时钟周期进行反馈的。针对producer端、consumer端和buffer距离较近的场景,现有的mailbox机制可以及时的反馈当前buffer状态,但是当producer端、consumer端和buffer距离较远时,会导致producer端、consumer端和buffer之间的传输路径变长,如图2所示,此时,mailbox的ptst信号和ctst信号需要几个时钟周期才能到达producer端和consumer端。
40.以buffer的总容量为100条数据为例,针对producer端而言,数据写入过程中的buffer存储的数据状态如表3所示,
41.表3数据写入过程中的mailbox机制对应的状态表
42.时钟周期01234567psts√√√√√√√
×
psync√√√√√√√
×
pnum202020402020200buff-data204060100overflowoverflowoverflow 43.在时钟周期0至时钟周期3,producer端一直向buffer进行数据的写入,由于此时mailbox的psts信号需要几个时钟周期才能告知producer端当前buffer中的数据状态,所以在时钟周期4的时候,producer端并没有及时收到buffer当前的数据状态,所以psts继续传输有效信号。导致producer端收到的psts依然有效,但实际上在时钟周期3的时候,producer端已经写入了100个数据,所以从时钟周期4开始,不能再写入数据了,所以从时钟周期4开始producer端写入的数据都会导致buffer的上溢出(overflow)。
44.以buffer的总容量为100条数据为例,针对consumer端而言,数据读取过程中的buffer存储的数据状态如表4所示,
45.表4数据读取过程中的mailbox机制对应的状态表
46.时钟周期01234567csts√√√√√√√
×
csync√√√√√√√
×
cnum202020402020200buff-data8060600underflowunderflowunderflow0
47.在时钟周期0至时钟周期3,consumer端一直从buffer中读取数据,由于此时mailbox的csts信号需要几个时钟周期才能告知consumer端当前buffer中的数据状态,所以在时钟周期4的时候,consumer端并没有及时收到buffer空的信号,所以csts继续传输有效信号。导致consumer端收到的csts依然有效,但实际上在时钟周期3的时候,consumer端已经读取了100个数据,所以从时钟周期4开始,不能再读取数据了,所以从时钟周期4开始consumer端读取的数据都会导致buffer的下溢出(underflow)。
48.为解决上述问题,本技术实施例提供一种数据处理装置1,如图3所示,该装置1可以包括:数据写入端10和数据读取端11;所述数据写入端10设置写入计数器100,所述数据读取端11设置读取计数器110;其中,
49.所述写入计数器100,用于在所述数据写入端10每执行一次数据写入操作的情况下,利用一次数据写入操作对应的一次写入数据量同步更新第一缓冲数据量,以供所述数据写入端10在下一次请求执行数据写入操作的情况下,根据所述写入计数器中100记录的第一缓冲数据量确定下一次写入数据量;
50.所述读取计数器110,用于在所述数据读取端11每执行一次数据读取操作的情况下,利用一次数据读取操作对应的一次读取数据量同步更新第二缓冲数据量,以供所述数据读取端11在下一次请求执行数据读取操作的情况下,根据所述读取计数器110中记录的第二缓冲数据量确定下一次读取数据量。
51.本技术实施例提出的一种数据处理装置适用于对buffer进行数据缓存管理的场景中。
52.在本技术实施例中,数据读取端和数据写入端均设置有计数器,其中,数据写入端的写入计数器增加的快、减少的慢;数据写入端每执行一次数据写入操作,写入计数器都能够及时记录写入数据量,数据写入端下一次请求执行数据写入操作时,能够通过写入计数器及时确定写入后buffer中的数据量,进而判定是否可执行下一次的数据写入操作,避免出现写入溢出的情况。数据读取端的读取计数器增加的慢、减少的块;数据读取端每执行一次数据读取操作,读取计数器能够及时记录读取数据量,数据读取端下一次请求执行数据读取操作时,能够通过读取计数器及时确定读取后buffer中的剩余数据量,进而判定是否可执行下一次的数据读取操作,避免出现读取溢出的情况。
53.在本技术实施例中,写入计数器的数量为一个、两个或者多个,具体的可以根据实际情况进行选择,本技术实施例不做具体的限定。
54.在本技术实施例中,读取计数器的数量为一个、两个或者多个,具体的可以根据实际情况进行选择,本技术实施例不做具体的限定。
55.需要说明的是,可以通过为数据读取端的读取计数器和数据写入端的写入计时器设计不同的计数器行为,来实现及时通知数据读取端和数据写入端buffer中的存储数据量的功能。
56.本技术实施例设计了三种计数器行为,通过以下具体描述,需要说明的是,以下三种仅为本技术实施例提出的可选的计数器行为,本技术不限定具体的可选的计数器行为,
具体的可以根据实际情况进行选择,本技术实施例不做具体的限定。
57.在一种可选的实施例中,所述第一缓冲数据量为写入数据累加量,所述第二缓冲数据量为读取数据累加量;
58.所述写入计数器,还用于在所述数据写入端每执行一次数据写入操作的情况下,同步将一次写入数据量累加至所述写入数据累加量;并将所述写入数据累加量经至少一个时钟周期延迟传输至所述数据读取端;
59.所述读取计数器,用于在所述数据读取端每执行一次数据读取操作的情况下,同步将一次读取数据量累加至所述读取数据累加量;并将所述读取数据累加量经至少一个时钟周期延迟传输至所述数据写入端。
60.在本技术实施例中,数据读取端包括一个读取计数器,数据写入端包括一个写入计数器,其中,读取计数器中记录了读取数据累加量,写入计数器中记录了写入数据累加量。
61.每当数据写入端向buffer中写入数据时,写入计数器就进行一次累加操作,每次累加的粒度为一次数据写入操作对应的一次写入数据量,写入计数器是一个只做加操作不做减操作的累加器,表征数据写入端总共向buffer写入的数据量。之后,写入计时器中的写入数据累加量还经至少一个触发器传输至数据读取端。所述数据读取端,用于在下一次请求执行数据读取操作的情况下,根据所述读取计数器中记录的读取数据累加量和延迟接收到的写入数据累加量确定下一次读取数据量。
62.具体的,所述数据读取端还包括第三减法器;所述第三减法器分别与数据读取端、写入计数器和读取计数器连接,所述第三减法器,用于对延迟接收到的写入数据累加量和所述读取计数器中记录的读取数据累加量进行减操作,得到第二缓冲存储量。所述数据读取端在下一次请求执行数据读取操作的情况下,根据所述第二缓冲存储量确定下一次读取数据量。
63.需要说明的是,每当第三减法器从数据读取端和/或写入计数器接收到数据时,第三减法器都会做一次减法操作,得到第二缓冲存储量,该第二缓冲存储量表征buffer中剩余的数据量,第三减法器将第二缓冲存储量传输至数据读取端,当数据读取端请求执行数据读取操作时,根据第二缓冲存储量确定下一次读取数据量,其中,若第二缓冲存储量为0,则禁止数据读取端继续执行数据读取操作,若第二缓冲存储量大于0,则确定出的下一次读取数据量需小于第二缓冲存储量。
64.每当数据读取端从buffer中读取数据时,读取计时器就进行一次累加操作,每次累加的粒度为一次数据读取操作对应的一次读取数据量,读取计数器同样也是一个只做加操作不做减操作的累加器,表征数据读取端总共从buffer读取的数据量。之后,读取计时器中的读取数据累加量还经过至少一个触发器、传输至数据写入端。所述数据写入端,用于在下一次请求执行数据写入操作的情况下,根据所述写入计数器中记录的写入数据累加量和延迟接收到的读取数据累加量确定下一次写入数据量。
65.具体的,所述数据写入端还包括第二减法器,所述第二减法器,用于对延迟接收到的读取数据累加量和所述写入计数器中记录的写入数据累加量进行减操作,得到第一缓冲存储量;所述数据写入端在下一次请求执行数据写入操作的情况下,根据所述第一缓冲存储量确定下一次写入数据量。
66.需要说明的是,每当第二减法器从数据读取端和/或写入计数器接收到数据时,第二减法器都会做一次减法操作,得到第一缓冲存储量,该第一缓冲存储量表征buffer中当前存储的数据量,第二减法器将第一缓冲存储量传输至数据写入端,当数据写入端请求执行数据写入操作时,根据第一缓冲存储量确定下一次写入数据量,即,利用buffer总容量减去第一缓冲存储量,得到剩余可缓冲数据量,若剩余可缓冲数据量为0,则禁止数据写入端继续执行数据写入操作,若剩余可缓冲数据量大于0,则确定出的下一次写入数据量需小于剩余可缓冲数据量。
67.示例性的,图4为第一种计数器行为的设计方案,producer端包括counter1和减法器1,consumer端包括counter2和减法器2,其中,counter1分别与producer端和减法器1连接,counter1还经多个触发器d与减法器2连接,counter2分别与减法器2和consumer端连接,counter2还经多个触发器d与减法器1连接,减法器1还与producer端连接,减法器2还与consumer端连接。producer端可以经过多个触发器d向buffer写入数据;每当producer端向buffer中写入p-num的数据,producer端将p-num传输至counter1进行累加,并将累加结果1经多个触发器d传输至减法器2,减法器2将累加结果1和counter2中的累加结果2进行减操作,并将减结果传输至consumer端;相应的,consumer端可以经过多个触发器d从buffer中读取数据;每当consumer端从buffer中读取c-num的数据,consumer端将c-num传输至counter2进行累加,并将累加结果2经多个触发器d传输至减法器1,减法器1将累加结果2和counter1中的累加结果1进行减操作,并将减结果传输至producer端。
68.在另一种可选的实施例中,所述第一缓冲数据量为第一缓冲存储量,所述第二缓冲数据量为第二缓冲存储量;
69.所述写入计数器,还用于在所述数据写入端每执行一次数据写入操作的情况下,同步将一次写入数据量累加至所述第一缓冲存储量中;在每延迟接收到所述数据读取端发送的一次读取数据量的情况下,在所述第一缓冲存储量中减少一次读取数据量;
70.所述读取计数器,还用于在所述数据读取端每执行一次数据读取操作的情况下,同步在所述第二缓冲存储量中减少一次读取数据量;在每延迟接收到所述数据写入端发送的一次写入数据量的情况下,将一次写入数据量累加至所述第二缓冲存储量中。
71.在本技术实施例中,数据读取端包括一个读取计数器,数据写入端包括一个写入计数器,其中,写入计数器中记录了第一缓冲存储量,读取计数器中记录了第二缓冲存储量。
72.每当数据写入端向buffer中写入数据时,写入计时器就进行一次累加操作,每次累加的粒度为一次数据写入操作对应的一次写入数据量,同时,数据写入端将一次写入数据量经至少一个触发器传输至数据读取端,每当写入计数器接收到数据读取端传输的一次读取数据量时,写入计数器将第一缓冲存储量减去一次读取数据量,得到新的第一缓冲存储量。所述数据写入端在下一次请求执行数据写入操作的情况下,将缓冲存储总量与所述写入计数器中记录的第一缓冲存储量进行减操作,得到剩余缓冲存储容量;并利用剩余缓冲存储容量确定下一次写入数据量。
73.需要说明的是,若剩余缓冲存储容量为0,则禁止数据写入端继续执行数据写入操作,若剩余缓冲存储容量大于0,则确定出的下一次写入数据量需小于剩余缓冲存储容量。
74.每当数据读取端从buffer中读取数据时,读取计数器就进行一次减操作,每次减
操作的粒度为一次数据读取操作对应的一次读取数据量,同时,数据读取端将一次读取数据量经至少一个触发器传输至数据写入端,每当读取计数器接收到数据写入端传输的一次写入数据量时,读取计数器将一次写入数据量累加至第二缓冲存储量,得到新的第二缓冲存储量。所述数据读取端在下一次请求执行数据读取操作的情况下,利用所述读取计数器中记录的第二缓冲存储量确定下一次读取数据量。
75.需要说明的是,若第二缓冲存储量为0,则禁止数据读取端继续执行数据读取操作,若第二缓冲存储量大于0,则确定出的下一次读取数据量需小于第二缓冲存储量。
76.示例性的,图5为第二种计数器行为的设计方案,producer端包括counter1,consumer端包括counter2,其中,counter1分别与producer端和consumer端连接,producer端还经多个触发器d与counter2连接,counter2分别与producer端和consumer端连接,consumer端还经多个触发器d与counter2连接。producer端可以经过多个触发器d向buffer写入数据;每当producer端向buffer中写入p-num的数据,producer端将p-num传输至counter1进行累加,并将p-num经多个触发器d传输至counter2进行累加;每当consumer端从buffer中读取c-num的数据,consumer端将c-num传输至counter2中进行减操作,并将c-num经多个触发器d传输至counter1进行减操作。
77.在再一个可选的实施例中,所述第一缓冲数据量为第一缓冲存储量,所述第二缓冲数据量为第二缓冲存储量;所述写入计数器包括第一写入计数器和第二写入计数器,所述读取计数器包括第一读取计数器和第二读取计数器;所述数据读取端还包括第一减法器;
78.所述第一写入计数器,用于在所述数据写入端每执行一次数据写入操作的情况下,同步将一次写入数据量累加至写入数据累加量中;并将更新后的写入数据累加量写入经至少一个时钟周期延迟传输至所述第一读取计数器和所述第一减法器;
79.所述第二写入计数器,用于在所述数据写入端每执行一次数据写入操作的情况下,同步将一次写入数据量累加至所述第一缓冲存储量中;
80.所述第一读取计数器,用于利用所述更新后的写入数据累加量替换所述第一读取计数器中记录的写入数据累加量;
81.所述第一减法器,用于对所述更新后的写入数据累加量和所述第一读取计数器中记录的写入数据累加量进行减处理,得到所述一次写入数据量;
82.所述第二读取计数器,用于将一次写入数据量累加至所述第二缓冲存储量中;在数据读取端每执行一次数据读取操作的情况下,在所述第二缓冲存储量中减少一次读取数据量;
83.所述第二写入计数器,还用于在延迟接收到所述读取计数器传输的一次读取数据量的情况下,在第一缓冲存储量中减少一次读取数据量。
84.在本技术实施例中,数据读取端包括第一读取计数器和第二读取计数器这两个读取计数器和一个第一减法器,数据写入端包括第一写入计数器和第二写入计数器这两个写入计数器,其中,第一写入计数器中记录了写入数据累加量;第二写入计数器中记录了第一缓冲存储量,第一读取计数器中记录了上一次的写入数据累加量,第二读取计数器中记录了第二缓冲存储量。
85.每当数据写入端向buffer中写入数据时,第一写入计数器和第二写入计数器均进
行一次累加操作,每次累加的粒度为一次数据写入操作对应的一次写入数据量,同时,第一写入计数器中的更新的写入数据累加量经至少一个触发器传输至第一读取计数器和第一减法器,第一读取计数器将更新的写入数据累加量和自身记录的写入数据累加量进行对比,在更新的写入数据累加量和自身记录的写入数据累加量不同时,将第一读取计数器记录的内容替换为更新的写入数据累加量,第一减法器将更新的写入数据累加量和第一读取计数器记录的写入数据累加量进行减操作,得到一次写入数据量,并将一次写入数据量累加至第二读取计数器中的第二缓冲存储量中。所述数据读取端在下一次请求执行数据读取操作的情况下,利用所述读取计数器中记录的第二缓冲存储量确定下一次读取数据量。
86.需要说明的是,若第二缓冲存储量为0,则禁止数据读取端继续执行数据读取操作,若第二缓冲存储量大于0,则确定出的下一次读取数据量需小于第二缓冲存储量。
87.每当数据读取端从buffer中读取数据时,第二读取计数器就进行一次减操作,每次减操作的粒度为一次数据读取操作对应的一次读取数据量,同时,数据读取端将一次读取数据量经至少一个触发器传输至第二写入计数器,每当第二写入计数器接收到数据读取端传输的一次读取数据量时,第二写入计数器从第一缓冲存储量中减去一次写入数据量。所述数据写入端在下一次请求执行数据写入操作的情况下,将缓冲存储总量与所述写入计数器中记录的第一缓冲存储量进行减操作,得到剩余缓冲存储容量;并利用剩余缓冲存储容量确定下一次写入数据量。
88.需要说明的是,若剩余缓冲存储容量为0,则禁止数据写入端继续执行数据写入操作,若剩余缓冲存储容量大于0,则确定出的下一次写入数据量需小于剩余缓冲存储容量。
89.示例性的,图6为第三种计数器行为的设计方案,producer端包括counter1和counter4,consumer端包括counter2、counter3和减法器1,其中,counter1与producer端连接,同时还经多个触发器d分别与counter2和减法器1连接,减法器1还分别与counter2和counter3连接,counter3还与consumer端连接,counter3还经多个触发器d分别与counter4连接,counter4还与producer端连接。每当producer端向buffer中写入p-num的数据,producer端将p-num传输至counter1和counter4进行累加,counter1中的累加结果1还经多个触发器d传输至counter2和减法器1中,counter2在判断出累加结果1与自身记录的累加结果2不同时,将自身记录更新为累加结果1,减法器利用累加结果1减去累加结果2得到p-num,counter3将p-num累加至第二缓冲存储量中;每当consumer端从buffer中读取c-num的数据,consumer端将c-num传输至counter3中进行减操作,并将c-num经多个触发器d传输至counter4进行减操作。
90.基于图6,示例性的,在初始阶段,四个counter的初始值都是0,假设buffer的容量是100个数据,producer端向buffer中写入20个数据,producer端会同步更新counter1和counter4为20,接下来,counter1的累加值会经多个触发器d传输至counter2的输入端,此时,由于传输过来的counter1的数值与conter2当前的数值不同,counter2中更新记录counter1的数据,与此同时,减法器1把传输过来的counter1的数值20减去counter2的当前值0,得到20。送入到counter3中进行乐嘉。
91.每当传输过来的counter1的数值与counter2的数值不同,就意味着producer端有新的数据送入到buffer中,而counter3中的数值表示当前对于consumer端来说,buffer中能够消耗的数据量有多少,counter3中的数值会同步反馈到consumer端,告知buffer中有
多少数据量可以被消耗,consumer端根据这个状态决定是否需要读取buffer中的数据。如果此时consumer决定要读取buffer中的数据,那么在读取buffer数据的同时,需要告知本次需要消耗的数据量c_num,并把c_num同步给到counter3,counter3需要减掉c_num的数值作为新值。与此同时,生成的c_num信号经过多个触发器d传输至counter4的输入端,counter4在获取到c_num数值之后,把当前counter4中的数值与c_num做减法操作,其差值表示对于producer端来说,当前buffer中存储的数据量,counter4的数值会同步反馈到producer端中,producer端计算得到目前buffer中的剩余存储容量,并根据剩余存储容量决定是否继续向buffer中写入数据。
92.接下来以极端情况进行分析,举例来说,buffer的最大数据容量为100,在第一个时刻,producer端向buffer中写入100个数据,与此同时,counter1和counter4的数值被更新为100,counter4同步反馈给producer端当前buffer已满,不能再继续写入数据,所以producer端的数据写入被反压。当counter1中的数值100传播到consumer端时,counter2被更新为100,counter3被更新为100,此时consumer端可以消费数据,也可以选择等待,如果选择等待,那么意味着c_num一直是0,那么c_num传播到producer端之后,counter4中的数据不变,一直维持100,producer端不能写入。如果此时consumer端选择消费20个数据,那么c_num会表示此次消费的数据量20,c_num会反馈到counter4中,经过减法之后,counter4中的数据变为80,表示,当前buffer中的数据量是80个,还有20个剩余存储容量可以供producer生成并向buffer中写入新数据。
93.另外一个极端情况是当consumer端一次性把buffer中的数据消耗完成之后,例如当前counter3=50,表征目前buffer中有50个数据可以被消费,此时consumer一次性消费掉50个数据,c_num=50,那么counter3必须快速更新状态为50-50=0,这样,consumer端可以及时获知buffer中的数据已经被消耗完成,不能再继续读取数据,直到producer端再次向buffer写入数据,那么counter3会被重新更新为非0值,意味着consumer端可以再次发出数据读取的请求。
94.通过以上的分析可以看出,producer端的counter4增加的较快,但是减小的较慢,原因在于producer每次向buffer中写数据,counter4都会第一时间进行累加操作,但是做减法操作需要等到consumer端经过几个时钟周期把c_num传入到counter4之后,目的就是为了提前通知producer端,在经过本次的数据写入之后,buffer是否会满。而对于consumer端来说,counter3是一个加的慢,减的快的累加器。每次进行数据消费之后,counter3会第一时间进行减法操作,预先告知consumer端buffer中是否会空,而对于counter3的加法操作,需要等到从producer端把counter1的数值经过几个周期的传输之后,才能送入到consumer端。故,能够预先告知producer端是否写入溢出并及时把这个风险告知producer端、预先告知consumer端是否存在读取溢出并把这个风险及时告知consumer端。
95.可以理解的是,本技术在靠近数据写入端和数据读取端的位置均设置有计数器,能够及时同步数据写入端的数据写入操作和数据读取端的数据读取操作,在后续请求执行数据写入操作和/或数据读取操作时,能够基于数据写入端和数据读取端的计数器及时确定出buffer中的数据状态,进而避免数据读写溢出的问题。
96.基于上述实施例提出的数据处理装置,本技术实施例还对应提出一种数据处理方法,如图7所示,该方法可以包括:
97.s101、在数据写入端请求执行数据写入操作的情况下,数据写入端根据写入计数器中记录的第一缓冲数据量确定本次写入数据量;并在数据写入端将本次写入数据量发送至缓冲单元的情况下,利用本次写入数据量同步更新写入计数器中记录的第一缓冲数据量。
98.在本技术实施例中,在数据写入端请求执行数据写入操作的情况下,若数据写入端确定出本次写入数据量的取值不大于零,则禁止数据写入端执行数据写入操作。
99.在本技术实例中,在数据写入端延迟接收到数据读取端传输的本次读取数据量的情况下,数据写入端利用本次读取数据量更新写入计数器中记录的第一缓冲数据量;或,数据写入端延迟接收到数据读取端传输的第二缓冲数据量的情况下,数据写入端记录第二缓冲数据量;并在数据写入端请求执行数据写入操作的情况下,数据写入端根据写入计数器中记录的第一缓冲数据量和第二缓冲数据量确定本次写入数据量。
100.s102、在数据读取端请求执行数据读取操作的情况下,数据读取端根据读取计数器中记录的第二缓冲数据量确定本次读取数据量;在数据读取端从缓冲单元读取到本次读取数据量的情况下,利用本次读取数据量同步更新读取计数器中记录的第二缓冲数据量。
101.在本技术实施例中,在数据读取端请求执行数据读取操作的情况下,若数据读取端确定出本次读取数据量的取值不大于零,则禁止数据读取端执行数据读取操作。
102.在本技术实施例中,在数据读取端延迟接收到数据写入端传输的本次写入数据量的情况下,数据读取端利用本次写入数据量更新读取计数器中记录的第二缓冲数据量;或,数据读取端延迟接收到数据写入端传输的第一缓冲数据量的情况下,数据读取端记录第一缓冲数据量;并在数据读取端请求执行数据读取操作的情况下,数据读取端根据读取计数器中记录的第二缓冲数据量和第一缓冲数据量确定本次读取数据量。
103.可以理解的是,本技术在靠近数据写入端和数据读取端的位置均设置有计数器,能够及时同步数据写入端的数据写入操作和数据读取端的数据读取操作,在后续请求执行数据写入操作和/或数据读取操作时,能够基于数据写入端和数据读取端的计数器及时确定出buffer中的数据状态,进而避免数据读写溢出的问题。
104.基于上述实施例,本技术实施例还提出一种缓存装置2,如图8所示,所述缓存装置2包括:缓冲单元20、数据写入端10和数据读取端11;所述数据写入端10与所述缓冲单元20的输入端连接,所述数据读取端11与所述缓冲单元20的输出端连接;
105.所述数据写入端10,用于向所述缓冲单元写入数据;
106.所述数据读取端11,用于从所述缓冲单元读取数据。
107.基于上述实施例中,本技术实施例还提出一种神经网络处理器3,如图9所示,所述神经网络处理器3包括:用于执行神经网络计算的计算单元30和缓存装置2;
108.所述计算单元30,用于执行神经网络计算;
109.所述缓存装置2,用于缓冲计算单元的输入数据和/或输出数据。
110.本技术实施例提供一种存储介质,其上存储有计算机程序,上述计算机可读存储介质存储有一个或者多个程序,上述一个或者多个程序可被一个或者多个数据处理装置执行,该计算机程序实现如上述的数据处理方法。
111.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而
且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
112.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台图像显示设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本公开各个实施例所述的方法。
113.以上所述,仅为本技术的较佳实施例而已,并非用于限定本技术的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献