CN117667208A - 数据运算方法、存储器及计算机设备 - Google Patents

数据运算方法、存储器及计算机设备 Download PDF

Info

Publication number
CN117667208A
CN117667208A CN202410140231.6A CN202410140231A CN117667208A CN 117667208 A CN117667208 A CN 117667208A CN 202410140231 A CN202410140231 A CN 202410140231A CN 117667208 A CN117667208 A CN 117667208A
Authority
CN
China
Prior art keywords
data
unit
storage
request
units
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.)
Granted
Application number
CN202410140231.6A
Other languages
English (en)
Other versions
CN117667208B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202410140231.6A priority Critical patent/CN117667208B/zh
Publication of CN117667208A publication Critical patent/CN117667208A/zh
Application granted granted Critical
Publication of CN117667208B publication Critical patent/CN117667208B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Multi Processors (AREA)

Abstract

本申请公开了一种数据运算方法、存储器及计算机设备,属于计算机技术领域。该方法包括:存储器包括请求分发单元、多个运算单元及多个存储单元,多个运算单元与多个存储单元一一对应,请求分发单元与每个运算单元连接,运算单元与对应的存储单元连接;请求分发单元接收数据运算请求;请求分发单元基于第一存储地址,从多个运算单元中确定第一运算单元,向第一运算单元发送数据运算请求;第一运算单元响应于数据运算请求,对第一数据进行运算。本申请无需处理器的介入,减少了由处理器介入的数据运算过程中不必要的数据搬运,进而节省了存储器与处理器之间数据搬运而所浪费的时间,提升了数据运算效率。

Description

数据运算方法、存储器及计算机设备
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种数据运算方法、存储器及计算机设备。
背景技术
数据通常存储于存储器中,对数据处理时,通常由处理器从存储器中获取存储的数据,进而对数据处理,之后,将处理得到的数据再存储至存储器中,但是,这种数据处理方式需要在处理器和存储器之间进行数据搬运,数据处理效率低。
发明内容
本申请实施例提供了一种数据运算方法、存储器及计算机设备,能够提高数据运算效率。所述技术方案如下方面。
一方面,提供了一种数据运算方法,由存储器执行,所述存储器包括请求分发单元、多个运算单元及多个存储单元,所述多个运算单元与所述多个存储单元一一对应,所述请求分发单元与每个运算单元连接,所述运算单元与对应的存储单元连接;所述方法包括:
所述请求分发单元接收数据运算请求,所述数据运算请求携带第一存储地址,所述数据运算请求指示对所述第一存储地址中的数据进行运算;
所述请求分发单元基于所述第一存储地址,从所述多个运算单元中确定第一运算单元,向所述第一运算单元发送所述数据运算请求,所述第一运算单元为所述多个存储单元中第一存储单元对应的运算单元,所述第一存储单元为所述第一存储地址指示的存储单元;
所述第一运算单元响应于所述数据运算请求,对第一数据进行运算,所述第一数据为所述第一存储单元的所述第一存储地址中的数据。
另一方面,提供了一种数据运算方法,由存储器执行,所述存储器包括第一类运算单元、多个存储单元及多个第二类运算单元,所述第一类运算单元包括第一队列和第二队列,所述第一队列和第二队列用于存储待联合运算的数据,所述多个第二类运算单元与所述多个存储单元一一对应,所述第一类运算单元与每个第二类运算单元连接,所述第二类运算单元与对应的存储单元连接;所述方法包括:
所述多个第二类运算单元中的第一运算单元响应于第一运算请求,从第一存储单元中读取第一数据,向所述第一队列发送所述第一数据,所述第一运算请求指示向所述第一队列发送携带的存储地址中的数据,所述第一运算请求携带第一存储地址,所述第一存储地址指示所述第一存储单元,所述第一运算单元为所述第一存储单元对应的第二类运算单元,所述第一数据为所述第一存储地址中的数据;
所述多个第二类运算单元中的第二运算单元响应于第二运算请求,从第二存储单元中读取第二数据,向所述第二队列发送所述第二数据,所述第二运算请求指示向所述第二队列发送携带的存储地址中的数据,所述第二运算请求携带第二存储地址,所述第二存储地址指示所述第二存储单元,所述第二运算单元为所述第二存储单元对应的第二类运算单元,所述第二数据为所述第二存储地址中的数据,所述第一运算请求及所述第二运算请求是由同一联合运算任务触发;
所述第一类运算单元在所述第一队列中及所述第二队列中均存储有数据的情况下,对所述第一队列中的所述第一数据与所述第二队列中的所述第二数据进行联合运算,得到第三数据。
在一种可能实现方式中,所述第一类运算单元向第三存储单元发送所述第三数据之前,所述方法还包括:
所述第一类运算单元基于已分配的存储地址及偏移量,确定所述第三存储地址。
在另一种可能实现方式中,所述第一类运算单元基于已分配的存储地址及偏移量,确定所述第三存储地址,包括:
所述第一类运算单元在已分配的存储地址均已存储数据的情况下,基于已分配的存储地址及所述偏移量,确定所述第三存储地址。
另一方面,提供了一种存储器,所述存储器包括请求分发单元、多个运算单元及多个存储单元,所述多个运算单元与所述多个存储单元一一对应,所述请求分发单元与每个运算单元连接,所述运算单元与对应的存储单元连接;
所述请求分发单元,用于接收数据运算请求,所述数据运算请求携带第一存储地址,所述数据运算请求指示对所述第一存储地址中的数据进行运算;
所述请求分发单元,用于基于所述第一存储地址,从所述多个运算单元中确定第一运算单元,向所述第一运算单元发送所述数据运算请求,所述第一运算单元为所述多个存储单元中第一存储单元对应的运算单元,所述第一存储单元为所述第一存储地址指示的存储单元;
所述第一运算单元,用于响应于所述数据运算请求,对第一数据进行运算,所述第一数据为所述第一存储单元的所述第一存储地址中的数据。
在一种可能实现方式中,所述第二运算单元包括第二运算子单元及写子单元;
所述第二运算子单元,用于对所述第三数据进行运算,得到所述第四数据,向所述写子单元发送所述第四数据;
所述写子单元,用于将所述第四数据存储在所述第二存储地址中。
在另一种可能实现方式中,所述存储器还包括多个仲裁单元,所述多个仲裁单元与所述多个运算单元一一对应,所述仲裁单元与对应的运算单元连接;
所述请求分发单元,用于向目标仲裁单元发送所述数据运算请求,所述目标仲裁单元为所述多个仲裁单元中与所述第一运算单元对应的仲裁单元;
所述目标仲裁单元,用于接收所述数据运算请求,在所述数据运算请求的优先级最高的情况下,或者,在所述数据运算请求的接收时间最早的情况下,向所述第一运算单元发送所述数据运算请求。
再一方面,提供了一种存储器,所述存储器包括第一类运算单元、多个存储单元及多个第二类运算单元,所述第一类运算单元包括第一队列和第二队列,所述第一队列和第二队列用于存储待联合运算的数据,所述多个第二类运算单元与所述多个存储单元一一对应,所述第一类运算单元与每个第二类运算单元连接,所述第二类运算单元与对应的存储单元连接;
所述多个第二类运算单元中的第一运算单元,用于响应于第一运算请求,从第一存储单元中读取第一数据,向所述第一队列发送所述第一数据,所述第一运算请求指示向所述第一队列发送携带的存储地址中的数据,所述第一运算请求携带第一存储地址,所述第一存储地址指示所述第一存储单元,所述第一运算单元为所述第一存储单元对应的第二类运算单元,所述第一数据为所述第一存储地址中的数据;
所述多个第二类运算单元中的第二运算单元,用于响应于第二运算请求,从第二存储单元中读取第二数据,向所述第二队列发送所述第二数据,所述第二运算请求指示向所述第二队列发送携带的存储地址中的数据,所述第二运算请求携带第二存储地址,所述第二存储地址指示所述第二存储单元,所述第二运算单元为所述第二存储单元对应的第二类运算单元,所述第二数据为所述第二存储地址中的数据,所述第一运算请求及所述第二运算请求是由同一联合运算任务触发;
所述第一类运算单元,用于在所述第一队列中及所述第二队列中均存储有数据的情况下,对所述第一队列中的所述第一数据与所述第二队列中的所述第二数据进行联合运算,得到第三数据。
在一种可能实现方式中,所述第一类运算单元,还用于向第三存储单元发送所述第三数据,所述第三存储单元为所述多个存储单元中第三存储地址指示的存储单元,所述第三存储地址是为所述第三数据分配的存储地址;
所述第三存储单元,用于将所述第三数据存储在所述第三存储地址中。
在另一种可能实现方式中,所述第一类运算单元包括联合运算子单元及搬运子单元;
所述联合运算子单元,用于在所述第一队列中及所述第二队列中均存储有数据的情况下,对所述第一数据与所述第二数据进行联合运算,得到所述第三数据;
所述搬运子单元,用于向所述第三存储单元发送所述第三数据。
在另一种可能实现方式中,所述第一类运算单元,还用于基于已分配的存储地址及偏移量,确定所述第三存储地址。
在另一种可能实现方式中,所述第一类运算单元,用于在已分配的存储地址均已存储数据的情况下,基于已分配的存储地址及所述偏移量,确定所述第三存储地址。
在另一种可能实现方式中,所述存储器还包括请求分发单元,所述请求分发单元与所述每个第二类运算单元连接;
所述请求分发单元,用于接收所述第一运算请求,基于所述第一运算请求中的所述第一存储地址,从所述多个第二类运算单元中确定所述第一运算单元,向所述第一运算单元发送所述第一运算请求;
所述请求分发单元,用于接收所述第二运算请求,基于所述第二运算请求中的所述第二存储地址,从所述多个第二类运算单元中确定所述第二运算单元,向所述第二运算单元发送所述第二运算请求。
再一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述存储器加载并执行以实现如上述方面所述的数据运算方法所执行的操作。
本申请实施例提供的方案中,存储器包括请求分发单元、多个运算单元及多个存储单元,请求分发单元能够接收数据运算请求,并通过与每个运算单元的连接,将接收到的数据运算请求分发给相应的运算单元,以使运算单元响应于数据运算请求,通过与对应的存储单元的连接,读取存储单元中的数据,并对数据进行运算,以实现存储器对自身存储的数据进行运算的方案,实现了一种新的数据运算方式,此种运算方式无需处理器的介入,减少了由处理器介入的数据运算过程中不必要的数据搬运,进而节省了存储器与处理器之间数据搬运而所浪费的时间,提升了数据运算效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种存储器的结构示意图;
图2是本申请实施例提供的一种数据运算方法的流程图;
图3是本申请实施例提供的另一种数据运算方法的流程图;
图4是本申请实施例提供的再一种数据运算方法的流程图;
图5是本申请实施例提供的再一种数据运算方法的流程图;
图6是本申请实施例提供的再一种数据运算方法的流程图;
图7是本申请实施例提供的再一种数据运算方法的流程图;
图8是本申请实施例提供的另一种存储器的结构示意图;
图9是本申请实施例提供的再一种数据运算方法的流程图;
图10是本申请实施例提供的再一种数据运算方法的流程图;
图11是本申请实施例提供的再一种存储器的结构示意图;
图12是本申请实施例提供的再一种存储器的结构示意图;
图13是本申请实施例提供的再一种存储器的结构示意图;
图14是本申请实施例提供的再一种存储器的结构示意图;
图15是本申请实施例提供的再一种存储器的结构示意图;
图16是本申请实施例提供的一种终端的结构示意图;
图17是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请所使用的术语“第一”、“第二”、“第三”、“第四”等可在本文中用于描述各种概念,但除非特别说明,这些概念不受这些术语限制。这些术语仅用于将一个概念与另一个概念区分。举例来说,在不脱离本申请的范围的情况下,可以将第一存储单元称为第二存储单元,且类似地,可将第二存储单元称为第一存储单元。
本申请所使用的术语“至少一个”、“多个”、“每个”、“任一”,至少一个包括一个、两个或两个以上,多个包括两个或两个以上,而每个是指对应的多个中的每一个,任一是指多个中的任意一个。举例来说,多个存储单元包括3个存储单元,而每个是指这3个存储单元中的每一个存储单元,任一是指这3个存储单元中的任意一个,能够是第一个存储单元,或者是第二个存储单元,或者是第三个存储单元。
需要说明的是,本申请所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的数据运算请求、数据都是在充分授权的情况下获取的。
本申请实施例提供的数据运算方法,由存储器执行。在一些实施例中,存储器设置于计算机设备中。可选地,计算机设备为终端或服务器。可选地,该服务器是独立的物理服务器,或者是多个物理服务器构成的服务器集群或者分布式系统,或者是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。可选地,该终端是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能语音交互设备、智能家电及车载终端等,但并不局限于此。
图1是本申请实施例提供的一种存储器的结构示意图。如图1所示,存储器包括请求分发单元101、多个运算单元102及多个存储单元103,多个运算单元102与多个存储单元103一一对应,请求分发单元101与每个运算单元102连接,运算单元102与对应的存储单元103连接。
存储单元103用于存储数据,运算单元102能够读取对应的存储单元103中的数据,或者,向对应的存储单元103中写入数据。请求分发单元101用于通过与每个运算单元102之间的连接,向每个运算单元102发送数据运算请求;运算单元102用于响应于数据运算请求,对对应的存储单元103中的数据进行运算,如对存储单元103中存储的数据进行运算后输出,或者,对存储单元103中存储的数据进行更新,或者,对数据运算请求携带的数据进行运算后存储在存储单元103中。
在一些实施例中,运算单元102包括第一运算子单元1021、读子单元1022及写子单元1023,读子单元1022用于从对应的存储单元103中读取数据,第一运算单元1021用于对读取的数据进行处理,写子单元1023用于将数据写入存储单元103中。
在一些实施例中,存储器还包括多个仲裁单元104,多个仲裁单元104与多个运算单元102一一对应,仲裁单元104与对应的运算单元102连接。每个仲裁单元104能够管理对应的运算单元102的待处理的数据运算请求,以便从多个待处理的数据运算请求中,为运算单元102选择当前需要执行哪个数据运算请求。
在一些实施例中,能够将上述的运算单元102称为第二类运算单元,存储器还包括第一类运算单元105,第一类运算单元105与每个第二类运算单元102连接,第一类运算单元105用于对多个存储单元中的数据进行联合运算,在联合运算的过程中,两个第二类运算单元102从各自对应的存储单元中读取数据,分别向第一类运算单元105中的第一队列和第二队列中发送数据,以使第一类运算单元105对第一队列和第二队列中的数据进行联合运算。
在一些实施例中,第一类运算单元105包括联合运算子单元1051及搬运子单元1052,联合运算子单元1051用于对第一队列和第二队列中的数据进行联合运算,搬运子单元1052用于对联合运算结果进行搬运,如向存储器中其他存储单元发送联合运算得到的数据,或者,向存储器以外的其他元器件发送联合运算得到的数据。
图2是本申请实施例提供的一种数据运算方法的流程图,该方法由存储器执行,存储器包括请求分发单元、多个运算单元及多个存储单元,多个运算单元与多个存储单元一一对应,请求分发单元与每个运算单元连接,运算单元与对应的存储单元连接;如图2所示,该方法包括以下步骤。
201、请求分发单元接收数据运算请求,数据运算请求携带第一存储地址,数据运算请求指示对第一存储地址中的数据进行运算。
在本申请实施例中,存储器不仅能够存储数据,还能够对存储的数据进行运算。存储器中的请求分发单元能够接收存储器外部发送的数据运算请求,存储器中的请求分发单元与每个运算单元连接,运算单元与对应的存储单元连接,则请求分发单元能够通过与每个运算单元的连接,将接收到的数据运算请求分发给相应的运算单元,以使运算单元响应于数据运算请求,通过与对应的存储单元的连接,读取存储单元中的数据,并对数据进行运算,以实现存储器对自身存储的数据进行运算的方案。
其中,第一存储地址指示的存储位置属于多个存储单元中的某个存储单元,也即是第一存储地址指示多个存储单元中的某个存储位置。第一存储地址中的数据也即是在第一存储地址指示的存储位置中存储的数据,该数据能够是任意的数据,例如,数据为向量或其他类型的数据。第一存储地址能够以任意的形式表示,本申请对此不做限定。
202、请求分发单元基于第一存储地址,从多个运算单元中确定第一运算单元,向第一运算单元发送数据运算请求,第一运算单元为多个存储单元中第一存储单元对应的运算单元,第一存储单元为第一存储地址指示的存储单元。
在本申请实施例中,请求分发单元能够基于第一存储地址,确定第一存储地址所指示的存储位置属于哪个存储单元,即确定第一存储地址指示的存储单元,则从多个存储单元中确定出第一存储单元,进而基于多个存储单元与多个运算单元之间的对应关系,从多个运算单元中确定出与第一存储单元对应的运算单元,即确定出第一运算单元。在确定出第一运算单元的情况下,向第一运算单元发送数据运算请求,以使第一运算单元对数据运算请求进行响应。
203、第一运算单元响应于数据运算请求,对第一数据进行运算,第一数据为第一存储单元的第一存储地址中的数据。
在本申请实施例中,第一运算单元接收到数据运算请求的情况下,响应于数据运算请求,从第一运算单元对应的存储单元中确定出第一存储地址中的数据,即从第一存储单元中确定出第一数据,进而对第一数据进行运算,以实现对数据运算请求的响应。其中,运算能够是任意形式的运算,例如,运算为算数逻辑运算。例如,运算是指对输入数据和一个立即数进行加减乘等运算。
本申请实施例提供的方案中,存储器包括请求分发单元、多个运算单元及多个存储单元,请求分发单元能够接收数据运算请求,并通过与每个运算单元的连接,将接收到的数据运算请求分发给相应的运算单元,以使运算单元响应于数据运算请求,通过与对应的存储单元的连接,读取存储单元中的数据,并对数据进行运算,以实现存储器对自身存储的数据进行运算的方案,实现了一种新的数据运算方式,此种运算方式无需处理器的介入,减少了由处理器介入的数据运算过程中不必要的数据搬运,进而节省了存储器与处理器之间数据搬运而所浪费的时间,提升了数据运算效率。
在图2所示实施例的基础上,本申请实施例以数据运算请求为第一运算请求为例进行说明,第一运算单元响应于第一运算请求,对相应的数据进行运算后输出运算结果,数据运算过程详见下述实施例。
图3是本申请实施例提供的另一种数据运算方法的流程图,该方法由存储器执行,存储器包括请求分发单元、多个运算单元及多个存储单元,多个运算单元与多个存储单元一一对应,请求分发单元与每个运算单元连接,运算单元与对应的存储单元连接;如图3所示,该方法包括以下步骤。
301、请求分发单元接收第一运算请求,第一运算请求携带第一存储地址,第一运算请求指示对携带的存储地址中的数据进行运算后输出运算结果。
在本申请实施例中,存储器对自身存储的数据进行运算后,能够向存储器外部输出运算结果。第一运算请求携带第一存储地址,以指示对第一存储地址中的数据进行运算后输出运算结果,该运算结果即为运算得到的数据,以实现存储器在输出数据的过程中实现对数据的运算。
在一种可能实现方式中,第一运算请求还携带目标地址或函数标识中的至少一项。
其中,目标地址指示输出运算结果的目的地,该目标地址为任意的地址,例如,该目标地址是存储器中某个存储单元中的存储地址,或者,是其他存储器中的存储地址,或者,是存储器外部的通信接口地址等。函数标识指示对携带的存储地址中的数据进行运算所采用的运算函数,该函数标识能够以任意的形式表示,例如,函数标识为运算函数的名称或运算函数的存储地址等。
在本申请实施例中,在第一运算请求携带第一存储地址及函数标识的情况下,第一运算请求不仅指示了待运算数据的存储位置,还指示对数据进行运算时所采用的运算函数,以便后续运算单元能够准确地对数据进行运算。
在一种可能实现方式中,第一运算请求是由处理器发送,或者,是由与包含该存储器的设备不同的其他设备发送。
在本申请实施例中,该处理器和存储器设置同一设备上,处理器在执行某个运算任务的过程中,能够触发第一运算请求,向存储器发送第一运算请求,则存储器中的请求分发单元能够接收到第一运算请求。
在本申请实施例中,以存储器设置在第一设备上为例,第一运算请求是由其他设备发送,其他设备能够直接调用第一设备上存储器的通信接口,以便直接向第一设备上存储器中的请求分发单元发送第一运算请求。
302、请求分发单元基于第一存储地址,从多个运算单元中确定第一运算单元,向第一运算单元发送第一运算请求,第一运算单元为多个存储单元中第一存储单元对应的运算单元,第一存储单元为第一存储地址指示的存储单元。
在一种可能实现方式中,确定第一运算单元的过程,包括:确定第一存储地址指示的存储位置所属的第一存储单元,查询存储单元与运算单元之间的对应关系,确定与第一存储单元对应的第一运算单元。
在本申请实施例中,存储器包含存储单元与运算单元之间的对应关系,通过第一存储地址,能够识别出第一存储地址所指示的存储位置包含于哪个存储单元,进而基于确定出的存储单元,查询对应关系,确定出第一运算单元,以保证确定出的运算单元的准确性。
在一种可能实现方式中,确定第一运算单元的过程,包括:请求分发单元从第一存储地址中提取存储单元标识,确定存储单元标识指示的第一存储单元,查询存储单元与运算单元之间的对应关系,确定与第一存储单元对应的第一运算单元。
在本申请实施例中,存储地址包含对应的存储单元的标识,请求分发单元能够从第一存储地址中提取出存储单元标识,进而确定出存储单元标识指示的存储单元,再查询对应关系,能够确定出第一运算单元,保证确定出的运算单元的准确性。
303、第一运算单元响应于第一运算请求,基于第一存储地址,从第一存储单元中读取第一数据。
在本申请实施例中,第一数据为第一存储单元的第一存储地址中的数据,第一运算单元响应于第一运算请求,能够基于第一运算请求中携带的第一存储地址来读取数据,以便后续能够对读取的数据进行处理。
在一种可能实现方式中,读取数据的过程包括:第一运算单元响应于第一运算请求,通过与第一存储单元之间的连接,读取第一存储地址中的数据,得到第一数据。
在本申请实施例中,每个运算单元与对应的存储单元连接,其中第一运算单元与第一存储单元连接,则第一运算单元能够通过与第一存储单元之间的连接,从第一存储单元中读取数据。
304、第一运算单元对第一数据进行运算,得到第二数据,向第一运算请求指示的目标地址输出第二数据。
在本申请实施例中,第一运算请求指示对携带的存储地址中的数据进行运算后输出运算结果,第一运算单元从第一运算请求携带的存储地址中读取到数据后,对读取到的数据进行运算,得到运算结果,以便按照第一运算请求指示的目标地址输出运算结果,实现了一种新的数据运算方式,存储器不仅能够存储数据还能够将运算结果进行输出,无需处理器的介入,以减少数据运算过程中处理器与存储器之间不必要的数据搬运,保证数据运算效率。
在一种可能实现方式中,数据运算过程包括:第一运算单元基于第一函数,对第一数据进行运算,得到第二数据。
其中,第一函数为任意的函数,例如,第一函数为对数据进行加偏置的函数。
在本申请实施例中,第一运算单元基于第一函数来对第一数据进行运算,以保证得到的运算结果的准确性。
可选地,第一函数为第一运算请求携带的函数标识指示的函数。
在本申请实施例中,第一运算单元按照第一运算请求指示的函数来进行数据运算,以丰富存储器对数据的处理方式,能够按照数据运算请求指示的任意函数来进行数据运算,以保证数据运算的准确性,且能够提升存储器对数据进行运算的适用范围。
可选地,第一函数为第一运算单元中配置的函数,也即是,在为第一运算单元配置函数的情况下,第一运算单元仅能够采用配置的函数来对数据进行运算。在本申请实施例中,对于为第一运算单元配置函数的方式,能够由管理人员通过设备调用存储器的配置端口,对第一运算单元进行配置。
在一种可能实现方式中,第一运算单元包括第一运算子单元及读子单元;数据运算过程包括:读子单元响应于第一运算请求,基于第一存储地址,从第一存储单元中读取第一数据,向第一运算子单元发送第一数据;第一运算子单元对第一数据进行运算,得到第二数据,向目标地址输出第二数据。
在本申请实施例中,读子单元用于从存储单元中读取数据,第一运算子单元用于对读子单元读取到的数据进行运算。请求分发单元向第一运算单元发送第一运算请求后,读子单元能够响应于第一运算请求,从第一存储地址中读取存储的数据,并向第一运算子单元发送第一数据,以使第一运算子单元能够对第一数据进行运算,进而向目标地址输出运算得到的数据,保证第一运算单元能够对存储器外部的数据运算请求进行响应,且能够直接将运算结果输出,无需再将存储器中的数据搬运至处理器再由处理器来进行运算后输出运算结果,无需处理器的介入,减少了处理器与存储器之间的数据搬运而浪费的时间,保证了数据处理效率。
可选地,第一运算单元的读子单元与第一运算子单元连接,读子单元与第一存储单元连接。
在本申请实施例中,请求分发单元向第一运算单元中的读子单元发送第一运算请求,以使读子单元能够响应第一运算请求,通过与第一存储单元之间的连接,从第一存储单元中读取数据,并通过与第一运算子单元之间的连接,向第一运算单元发送读取到的数据,进而由第一运算单元对读取到的数据进行运算,这样通过子单元之间的连接,能够保证数据传输效率,进而保证数据处理效率。
可选地,存储器还包括路由单元,第一运算子单元在得到第二数据的情况下,向路由单元发送目标地址及第二数据,以使路由单元向目标地址输出第二数据。
在本申请实施例中,路由单元用于与存储器外部进行通信,则第一运算得到第二数据后,向路由单元发送目标地址及第二数据,以使路由单元实现与存储器外部的通信,实现运算结果的输出。
需要说明的是,本申请实施例是以第一运算单元对读取到的数据进行运算后向目标地址输出运算结果为例进行说明,而在另一实施例中,无需执行上述步骤303-步骤304,而是采取其他方式,第一运算单元响应于数据运算请求,对第一数据进行运算。
本申请实施例提供的方案中,存储器包括请求分发单元、多个运算单元及多个存储单元,请求分发单元能够接收数据运算请求,并通过与每个运算单元的连接,将接收到的数据运算请求分发给相应的运算单元,以使运算单元响应于数据运算请求,通过与对应的存储单元的连接,读取存储单元中的数据,并对数据进行运算,以实现存储器对自身存储的数据进行运算的方案,实现了一种新的数据运算方式,此种运算方式无需处理器的介入,减少了由处理器介入的数据运算过程中不必要的数据搬运,进而节省了存储器与处理器之间数据搬运而所浪费的时间,提升了数据运算效率。
在图2所示实施例的基础上,本申请实施例以数据运算请求为第二运算请求为例进行说明,第一运算单元响应于第二运算请求,对相应的数据进行运算后更新原存储地址中的数据,数据运算过程详见下述实施例。
图4是本申请实施例提供的再一种数据运算方法的流程图,该方法由存储器执行,存储器包括请求分发单元、多个运算单元及多个存储单元,多个运算单元与多个存储单元一一对应,请求分发单元与每个运算单元连接,运算单元与对应的存储单元连接;如图4所示,该方法包括以下步骤。
401、请求分发单元接收第二运算请求,第二运算请求携带第一存储地址,第二运算请求指示对携带的存储地址中的数据进行更新。
在本申请实施例中,第二运算请求指示对携带的存储地址中的数据进行运算后,用运算得到的数据更新存储地址中的数据,以实现存储器对自身存储的数据进行运算并更新。该步骤401与上述步骤301同理,在此不再赘述。
402、请求分发单元基于第一存储地址,从多个运算单元中确定第一运算单元,向第一运算单元发送第二运算请求,第一运算单元为多个存储单元中第一存储单元对应的运算单元,第一存储单元为第一存储地址指示的存储单元。
403、第一运算单元响应于第二运算请求,基于第一存储地址,从第一存储单元中读取第一数据。
该步骤402-步骤403与上述步骤302-步骤303同理,在此不再赘述。
404、第一运算单元对第一数据进行运算,得到第二数据;将第一存储地址中存储的第一数据更新为第二数据。
在本申请实施例中,第一运算请求指示对携带的存储地址中的数据进行更新,第一运算单元从第一运算请求携带的存储地址中读取到数据后,对读取到的数据进行运算,得到运算结果,以便按照第一运算请求指示,将第一存储地址中存储的第一数据更新为运算结果,实现了一种新的数据运算方式,存储器不仅能够存储数据还能够对存储的数据进行运算后更新,无需处理器的介入,以减少数据运算过程中存储器与处理器之间不必要的数据搬运,保证数据运算效率。
在一种可能实现方式中,第一运算单元包括第一运算子单元、读子单元及写子单元;数据更新过程包括:读子单元响应于第二运算请求,基于第一存储地址,从第一存储单元中读取第一数据,向第一运算子单元发送第一数据;第一运算子单元对第一数据进行运算,得到第二数据,向写子单元发送第二数据;写子单元将第一存储地址中存储的第一数据更新为第二数据。
在本申请实施例中,读子单元用于从存储单元中读取数据,第一运算子单元用于对读子单元读取到的数据进行运算,写子单元用于将数据写入存储单元中。第二运算请求指示对携带的存储地址中的数据进行更新,请求分发单元向第一运算单元发送第二运算请求后,读子单元能够响应于第二运算请求,从第一存储地址中读取存储的数据,并向第一运算子单元发送第一数据,以使第一运算子单元能够对第一数据进行运算,向写子单元发送运算结果,由写子单元按照第二运算请求的指示,将运算结果写入第一存储地址中,以替换第一存储地址中原来远处的第一数据,实现了存储器对自身存储的数据进行运算并更新的方案,无需处理器的介入,无需再将存储器中的数据搬运至处理器由处理器来进行运算后输出运算结果,减少了处理器与存储器之间的数据搬运而浪费的时间,保证了数据处理效率。
可选地,第一运算单元的读子单元分别与第一运算子单元和第一存储单元连接,写子单元分别与第一运算子单元和第一存储单元连接。
在本申请实施例中,请求分发单元向第一运算单元中的读子单元发送第二运算请求,以使读子单元能够响应第二运算请求,通过与第一存储单元之间的连接,从第一存储单元中读取数据,并通过与第一运算子单元之间的连接,向第一运算单元发送读取到的数据,进而由第一运算子单元对读取到的数据进行运算,且第一运算子单元通过与写子单元之间的连接,向写子单元发送运算结果,由写子单元通过与第一存储单元之间的连接,向第一存储单元中写入运算结果以替换第一存储地址中原有的数据,这样通过子单元之间的连接,能够保证数据传输效率,进而保证数据处理效率。
需要说明的是,本申请实施例中第一运算单元对第一数据进行运算的过程,与上述步骤304同理,在此不再赘述。
需要说明的是,本申请实施例是以第一运算单元对读取到的数据进行运算后更新原存储地址中的数据为例进行说明,而在另一实施例中,无需执行上述步骤403-步骤404,而是采取其他方式,第一运算单元响应于数据运算请求,对第一数据进行运算。
本申请实施例提供的方案中,存储器包括请求分发单元、多个运算单元及多个存储单元,请求分发单元能够接收数据运算请求,并通过与每个运算单元的连接,将接收到的数据运算请求分发给相应的运算单元,以使运算单元响应于数据运算请求,通过与对应的存储单元的连接,读取存储单元中的数据,并对数据进行运算,以实现存储器对自身存储的数据进行运算的方案,实现了一种新的数据运算方式,此种运算方式无需处理器的介入,减少了由处理器介入的数据运算过程中不必要的数据搬运,进而节省了存储器与处理器之间数据搬运而所浪费的时间,提升了数据运算效率。
需要说明的是,上述图2至图3所示的实施例中的数据运算请求是对存储单元中存储的数据进行运算为例进行说明,而在图2所示实施例的基础上,本申请实施例中数据运算请求能够携带待运算的数据及存储地址,以使存储器对数据运算请求携带的数据进行运算后存储到携带的存储地址中,数据运算过程详见下述实施例。
图5是本申请实施例提供的再一种数据运算方法的流程图,该方法由存储器执行,存储器包括请求分发单元、多个运算单元及多个存储单元,多个运算单元与多个存储单元一一对应,请求分发单元与每个运算单元连接,运算单元与对应的存储单元连接;如图5所示,该方法包括以下步骤。
501、请求分发单元接收第三运算请求,第三运算请求携带第二存储地址及第三数据,第三运算请求指示对携带的数据进行运算后存储到携带的存储地址中。
在本申请实施例中,第三运算请求指示对携带的数据进行运算后存储至携带的存储地址中,以实现存储器在存储数据的过程中实现对数据的运算。该步骤501与上述步骤301同理,在此不再赘述。
502、请求分发单元基于第二存储地址,从多个运算单元中确定第二运算单元,向第二运算单元发送第三运算请求,第二运算单元为第二存储单元对应的运算单元,第二存储单元为第二存储地址指示的存储单元。
其中,第二运算单元与第一运算单元相同或不同,本申请对此不作限定。
该步骤与上述步骤302同理,在此不再赘述。
503、第二运算单元响应于第三运算请求,对第三数据进行运算,得到第四数据,将第四数据存储在第二存储单元的第二存储地址中。
在本申请实施例中,第三运算请求指示对携带的数据进行运算后存储到携带的存储地址中,第二运算单元接收到第三运算请求后,对第三运算请求中的数据进行运算,得到运算结果,以便按照第三运算请求指示,将运算结果存储在第二存储地址中,实现了一种新的数据运算方式,存储器不仅能够存储数据还能够存储器在存储数据的过程中实现对数据的运算,以存储运算后的数据,无需处理器的介入,减少了数据运算过程中不必要的数据搬运,保证数据运算效率。
在一种可能实现方式中,第二运算单元包括第二运算子单元及写子单元;则数据运算过程包括:第二运算子单元对第三数据进行运算,得到第四数据,向写子单元发送第四数据;写子单元将第四数据存储在第二存储地址中。
在本申请实施例中,第一运算子单元用于对数据进行运算,写子单元用于将数据写入存储单元中。第三运算请求指示对携带的数据进行运算后存储到携带的存储地址中,请求分发单元向第一运算单元发送第三运算请求后,第一运算子单元能够对第三运算请求携带的数据进行运算,向写子单元发送运算结果,由写子单元按照第三运算请求的指示,将运算结果写入第三运算请求携带的存储地址中,实现了存储器在存储数据的过程中对数据进行运算,以存储运算后的数据的方案,无需处理器的介入,无需再将存储器中的数据搬运至处理器再由处理器来进行运算后再发送至存储器进行存储,减少了处理器与存储器之间的数据搬运而浪费的时间,保证了数据处理效率。
可选地,第二运算单元中的第二运算子单元与写子单元连接,写子单元与第二存储单元连接。
在本申请实施例中,请求分发单元向第二运算单元中的第二运算子单元发送第三运算请求,以使第二运算子单元对第三运算请求携带的数据进行运算,且第二运算子单元通过与写子单元之间的连接,向写子单元发送运算结果,由写子单元通过与第一存储单元之间的连接,向第一存储单元中写入运算结果,这样通过子单元之间的连接,能够保证数据传输效率,进而保证数据处理效率。
需要说明的是,本申请实施例中第二运算单元对第三数据进行运算的过程,与上述步骤304同理,在此不再赘述。
本申请实施例提供的方案中,存储器包括请求分发单元、多个运算单元及多个存储单元,请求分发单元能够接收数据运算请求,并通过与每个运算单元的连接,将接收到的数据运算请求分发给相应的运算单元,以使运算单元响应于数据运算请求,通过与对应的存储单元的连接,读取存储单元中的数据,并对数据进行运算,以实现存储器对自身存储的数据进行运算的方案,实现了一种新的数据运算方式,此种运算方式无需处理器的介入,减少了由处理器介入的数据运算过程中不必要的数据搬运,进而节省了存储器与处理器之间数据搬运而所浪费的时间,提升了数据运算效率。
在上述图2至图5所示的实施例的基础上,本申请实施例中存储器还包括多个仲裁单元,多个仲裁单元与多个运算单元一一对应,仲裁单元与对应的运算单元连接;由仲裁单元为对应的运算单元选择执行的数据运算请求,也即是,该方法还包括:请求分发单元向目标仲裁单元发送数据运算请求,目标仲裁单元为多个仲裁单元中与第一运算单元对应的仲裁单元;目标仲裁单元接收数据运算请求,在数据运算请求的优先级最高的情况下,或者,在数据运算请求的接收时间最早的情况下,向第一运算单元发送数据运算请求。
其中,多个仲裁单元与多个运算单元一一对应,则多个仲裁单元与多个存储单元一一对应。每个数据运算请求具有优先级,优先级越高的数据运算请求,运算单元对其进行响应的时间越早。接收时间是指请求分发单元接收到数据请求的时间,或者,是指仲裁单元接收到数据运算请求的时间。在本申请实施例中,仲裁单元按照优先级轮询策略或接收时间的轮询策略,从接收到的多个数据运算请求中,为对应的运算单元选择执行的数据运算请求。
在本申请实施例中,请求分发单元接收到数据运算请求后,基于数据运算请求携带的存储地址,按照上述步骤202的方式,确定第一运算单元后,确定出第一运算单元对应的目标仲裁单元,进而向目标仲裁单元发送数据运算请求,目标仲裁单元在接收到多个待执行的数据运算请求的情况下,按照多个待执行的数据运算请求的优先级或接收时间,向第一运算单元转发数据运算请求,进而由第一运算单元按照上述步骤203,对转发的数据运算请求进行响应,以避免第一运算单元同时接收到多个运算请求而造成堵塞的情况,保证存储器的正常运行。
在一种可能实现方式中,确定目标仲裁单元的过程,包括:确定数据运算请求中的第一存储地址指示的存储位置所属的第一存储单元,查询存储单元与运算单元之间的对应关系,确定与第一存储单元对应的第一运算单元,查询运算单元与仲裁单元之间的对应关系,确定第一运算单元对应的目标仲裁单元;或者,确定数据运算请求中的第一存储地址指示的存储位置所属的第一存储单元,查询存储单元与仲裁单元之间的对应关系,确定第一存储单元对应的目标仲裁单元。
图6是本申请实施例提供的再一种数据运算方法的流程图,该方法由存储器执行,存储器包括第一类运算单元、多个存储单元及多个第二类运算单元,第一类运算单元包括第一队列和第二队列,第一队列和第二队列用于存储待联合运算的数据,多个第二类运算单元与多个存储单元一一对应,第一类运算单元与每个第二类运算单元连接,第二类运算单元与对应的存储单元连接;如图6所示,该方法包括以下步骤。
601、多个第二类运算单元中的第一运算单元响应于第一运算请求,从第一存储单元中读取第一数据,向第一队列发送第一数据,第一运算请求指示向第一队列发送携带的存储地址中的数据,第一运算请求携带第一存储地址,第一存储地址指示第一存储单元,第一运算单元为第一存储单元对应的第二类运算单元,第一数据为第一存储地址中的数据。
在本申请实施例中,存储器不仅能够存储数据,还能够对存储的数据进行运算。由于存储器包括多个存储单元,不同存储单元中存储的数据可能不同,存储器还能够对多个存储单元中的数据进行联合运算。存储器中每个存储单元对应有一个第二类运算单元,第二类运算单元能够通过与对应的存储单元的连接,读取存储单元中的数据,并对读取到的数据进行运算或输出。存储器还包括第一类运算单元,每个第二类运算单元与第一类运算单元连接,则每个第二类运算单元能通过与第一类运算单元的连接,向第一类运算单元中的第一队列或第二队列发送数据,以使第一类运算单元对第一队列和第二队列中的数据进行联合运算,以实现存储器对自身存储的多个数据进行联合运算的方案。
在本申请实施例中,第一运算单元为多个第二类运算单元中的任一个。在第一运算单元接收到第一运算请求的情况下,按照第一运算请求的指示,从对应的存储单元中读取数据并向第一类运算单元中的第一队列中发送读取到的数据,以使后续第一类运算单元能够基于第一队列中的数据进行联合运算。
其中,第一存储地址指示的存储位置属于多个存储单元中的某个存储单元,也即是第一存储地址指示多个存储单元中的某个存储位置。第一存储地址中的数据也即是在第一存储地址指示的存储位置中存储的数据,该数据能够是任意的数据,本申请对此不做限定。第一存储地址能够以任意的形式表示,本申请对此不做限定。第一队列为用于存储待联合运算的数据,第一队列能够是任意的队列,例如,第一队列为LHO FIFO(Left HandOperation First In First Out,左操作数先入先出队列)。在第一队列为先入先出队列的情况下,第一队列中越早存入的数据,优先被第一类运算单元读取并进行联合运算。
602、多个第二类运算单元中的第二运算单元响应于第二运算请求,从第二存储单元中读取第二数据,向第二队列发送第二数据,第二运算请求指示向第二队列发送携带的存储地址中的数据,第二运算请求携带第二存储地址,第二存储地址指示第二存储单元,第二运算单元为第二存储单元对应的第二类运算单元,第二数据为第二存储地址中的数据,第一运算请求及第二运算请求是由同一联合运算任务触发。
在本申请实施例中,第二运算单元为多个第二类运算单元中与第一运算单元不同的任一个。在第二运算单元接收到第二运算请求的情况下,按照第二运算请求的指示,从对应的存储单元中读取数据并向第一类运算单元中的第二队列中发送读取到的数据,以使后续第一类运算单元能够基于第二队列中的数据进行联合运算。
在本申请实施例中,第一运算请求和第二运算请求是由同一联合运算任务触发的,处理器或其他设备在执行联合运算任务的过程中,联合运算任务指示对第一数据和第二数据进行联合运算,而第一数据存储在第一存储单元中,第二数据存储在第二存储单元中,则处理器或其他设备向第一运算单元发送第一运算请求,第二运算单元发送第二运算请求,以使第一运算单元能向第一队列发送第一数据,第二运算单元向第二队列发送第二数据,以便后续第一类运算单元能够对第一队列和第二队列中的数据进行运算。
其中,第二存储地址指示的存储位置属于多个存储单元中的某个存储单元,也即是第二存储地址指示多个存储单元中的某个存储位置。第二存储地址中的数据也即是在第二存储地址指示的存储位置中存储的数据,该数据能够是任意的数据,本申请对此不做限定。第二存储地址能够以任意的形式表示,本申请对此不做限定。第二队列为用于存储待联合运算的数据,第二队列能够是任意的队列,例如,第二队列为RHO FIFO(Right HandOperation First In First Out,右操作数先入先出队列)。在第二队列为先入先出队列的情况下,第二队列中越早存入的数据,优先被第一类运算单元读取并进行联合运算。
603、第一类运算单元在第一队列中及第二队列中均存储有数据的情况下,对第一队列中的第一数据与第二队列中的第二数据进行联合运算,得到第三数据。
在本申请实施例中,第一类运算单元用于对第一队列和第二队列中存储的数据进行联合运算,第一类运算单元会实时检测第一列队和第二队列中是否存储有数据,在第一队列中及第二队列中均存储有数据的情况下,表示此时能够进行联合运算,则对第一队列中的第一数据与第二队列中的第二数据进行联合运算,得到第三数据,以实现存储器对不同存储单元中的数据进行联合运算的方案。
本申请实施例提供的方案中,存储器中每个存储单元对应有一个第二类运算单元,第二类运算单元能够通过与对应的存储单元的连接,读取存储单元中的数据,并对读取到的数据进行运算或输出,且每个第二类运算单元与存储器中的第一类运算单元连接,则每个第二类运算单元能通过与第一类运算单元的连接,向第一类运算单元中的第一队列或第二队列发送数据,以使第一类运算单元对第一队列和第二队列中的数据进行联合运算,以实现存储器对自身存储的多个数据进行联合运算的方案,实现了一种新的数据运算方式,此种运算方式无需处理器的介入,减少了由处理器介入的数据运算过程中不必要的数据搬运,进而节省了存储器与处理器之间数据搬运而所浪费的时间,提升了数据运算效率。
在上述图6所示实施例的基础上,本申请实施例中,存储器还包括请求分发单元,请求分发单元为不同的运算单元分发数据处理请求,并且,第一类运算单元能够将联合运算结果存储在存储单元中,数据运算过程详见下述实施例。
图7是本申请实施例提供的再一种数据运算方法的流程图,该方法由存储器执行,存储器包括第一类运算单元、多个存储单元及多个第二类运算单元,第一类运算单元包括第一队列和第二队列,第一队列和第二队列用于存储待联合运算的数据,多个第二类运算单元与多个存储单元一一对应,第一类运算单元与每个第二类运算单元连接,第二类运算单元与对应的存储单元连接;如图7所示,该方法包括以下步骤。
701、请求分发单元接收第一运算请求,基于第一运算请求中的第一存储地址,从多个第二类运算单元中确定第一运算单元,向第一运算单元发送第一运算请求。
在本申请实施例中,存储器还包括请求分发单元,请求分发单元与每个第二类运算单元连接,请求分发单元用于接收存储器外部的数据获取请求,并将数据获取请求发送给相应的第二类运算单元。需要说明的是,该步骤701与上述步骤301-302同理,在此不再赘述。
702、请求分发单元接收第二运算请求,基于第二运算请求中的第二存储地址,从多个第二类运算单元中确定第二运算单元,向第二运算单元发送第二运算请求。
在本申请实施例中,请求分发单元能够接收存储器外部发送的数据运算请求,请求分发单元在接收到数据运算请求的情况下,能够按照数据运算请求中携带的存储地址,为相应的运算单元分发数据运算请求,以实现存储器与外部的通信且能够保证各个运算单元后续能够准确地对接收到的数据运算请求进行响应,保证存储器内部进行数据运算的准确性。
需要说明的是,该步骤701与上述步骤301-步骤302同理,在此不再赘述。
需要说明的是,本申请实施例中是请求分发单元先接收并发送第一运算请求,而后再接收并发送第二运算请求,而在另一实施例中,请求分发单元能够先执行步骤702再执行步骤701;或者,请求分发单元能够先接收第二运算请求后接收第一运算请求,按照步骤702向第二运算单元发送第二运算请求,按照步骤701向第一运算单元发送第一运算请求;或者,请求分发单元能够先接收第一运算请求后接收第二运算请求,按照步骤702向第一运算单元发送第一运算请求,按照步骤701向第二运算单元发送第二运算请求。
703、多个第二类运算单元中的第一运算单元响应于第一运算请求,从第一存储单元中读取第一数据,向第一队列发送第一数据,第一运算请求指示向第一队列发送携带的存储地址中的数据,第一运算请求携带第一存储地址,第一存储地址指示第一存储单元,第一运算单元为第一存储单元对应的第二类运算单元,第一数据为第一存储地址中的数据。
在一种可能实现方式中,第一运算请求携带第一端口地址,该第一端口地址指示第一类运算单元的第一通信端口,该第一通信端口为第一队列的入口,则向第一队列发送第一数据的过程包括:第一运算单元按照第一端口地址,向第一通信端口发送第一数据,第一类运算单元通过第一通信端口接收第一数据,将第一数据存储在第一队列中。
在本申请实施例中,第一运算请求携带第一类运算单元中通信端口的地址,以便第一运算单元能够按照地址来进行数据通信,以便将第一数据准确地存储在第一队列中,保证数据传输的准确性。
在一种可能实现方式中,存储器还包括路由单元,第一运算单元在得到第一数据的情况下,向路由单元发送第一数据,以使路由单元向第一队列发送第一数据。
在本申请实施例中,路由单元用于实现第二类运算单元与第一类运算单元之间的通信,则第一运算单元通过与路由单元交互,实现第一类运算单元与第二类运算单元之前的数据通信。
可选地,第一运算请求携带第一端口地址,该第一端口地址指示第一类运算单元的第一通信端口,该第一通信端口为第一队列的入口,则向第一队列发送第一数据的过程包括:第一运算单元在得到第一数据的情况下,向路由单元发送第一数据及第一端口地址,路由单元按照第一端口地址,向第一通信端口发送第一数据,第一类运算单元通过第一通信端口接收第一数据,将第一数据存储在第一队列中。
需要说明的是,上述步骤703中读取第一数据的过程,与上述步骤303同理,在此不再赘述。
704、多个第二类运算单元中的第二运算单元响应于第二运算请求,从第二存储单元中读取第二数据,向第二队列发送第二数据,第二运算请求指示向第二队列发送携带的存储地址中的数据,第二运算请求携带第二存储地址,第二存储地址指示第二存储单元,第二运算单元为第二存储单元对应的第二类运算单元,第二数据为第二存储地址中的数据,第一运算请求及第二运算请求是由同一联合运算任务触发。
在一种可能实现方式中,第二运算请求携带第二端口地址,该第二端口地址指示第一类运算单元的第二通信端口,该第二通信端口为第二队列的入口,则向第二队列发送第二数据的过程包括:第二运算单元按照第二端口地址,向第二通信端口发送第二数据,第一类运算单元通过第二通信端口接收第二数据,将第二数据存储在第二队列中。
在本申请实施例中,第二运算请求携带第一类运算单元中通信端口的地址,以便第二运算单元能够按照地址来进行数据通信,以便将第二数据准确地存储在第二队列中,保证数据传输的准确性。
在一种可能实现方式中,存储器还包括路由单元,第二运算单元在得到第二数据的情况下,向路由单元发送第二数据,以使路由单元向第二队列发送第二数据。
在本申请实施例中,路由单元用于实现第二类运算单元与第一类运算单元之间的通信,则第二运算单元通过与路由单元交互,实现第一类运算单元与第二类运算单元之前的数据通信。
可选地,第二运算请求携带第二端口地址,该第二端口地址指示第一类运算单元的第二通信端口,该第二通信端口为第二队列的入口,则向第二队列发送第二数据的过程包括:第二运算单元在得到第二数据的情况下,向路由单元发送第二数据及第二端口地址,路由单元按照第二端口地址,向第二通信端口发送第二数据,第一类运算单元通过第二通信端口接收第二数据,将第二数据存储在第一队列中。
需要说明的是,上述步骤704中读取第一第二数据的过程,与上述步骤303同理,在此不再赘述。
705、第一类运算单元在第一队列中及第二队列中均存储有数据的情况下,对第一队列中的第一数据与第二队列中的第二数据进行联合运算,得到第三数据。
在一种可能实现方式中,第一队列和第二队列中的数据在参与联合运算时在运算函数中的位置不同。例如,第一类运算单元用于确定两个数据的商,将第一队列中的第一数据除以第二队列中的第二数据,得到商。
在一种可能实现方式中,第一队列和第二队列均为先入先出队列,第一队列中存储有多个第一数据,第二队列中存储有多个第二数据,则该步骤705包括:第一类运算单元从第一队列中读取第1个第一数据,从第二队列中读取第1个第二数据,对第1个第一数据及第1个第二数据进行联合运算,得到第1个第三数据,重复上述过程,得到多个第三数据。
在本申请实施例中,第一队列和第二队列均为先入先出队列,在第一类运算单元从第一队列读取第1个第一数据,从第二队列中读取第1个第二数据后,第一队列和第二队列中被第一类运算单元读取的数据会清楚,则第一队列中之前的第2个第一数据变成第1个第一数据,第二队列中之前的第2个第一数据变成第1个第一数据,以此类推,第一类运算单元每次从第一队列和第二队列中分别提取第1个第一数据和第1个第二数据进行联合运算,得到多个第三数据。
在一种可能实现方式中,该步骤705包括:第一类运算单元在第一队列中及第二队列中均存储有数据的情况下,基于第二函数,对第一队列中的第一数据与第二队列中的第二数据进行联合运算,得到第三数据。
其中,第二函数为任意的函数,例如,第二函数为对数据进行加偏置的函数。
在本申请实施例中,第一类运算单元基于第二函数来对第一数据及第二数据进行联合运算,以保证得到的运算结果的准确性。
可选地,第二函数为第一类运算单元中配置的函数,也即是,在为第一类运算单元配置函数的情况下,第一类运算仅能够采用配置的函数来对数据进行联合运算。在本申请实施例中,对于为第一类运算单元配置函数的方式,能够由管理人员通过设备调用第一类运算单元的配置端口,对第一类运算单元进行配置。
706、第一类运算单元向第三存储单元发送第三数据,第三存储单元为多个存储单元中第三存储地址指示的存储单元,第三存储地址是为第三数据分配的存储地址。
在本申请实施例中,第一类运算单元在得到联合运算结果的情况下,按照为第三数据分配的存储地址,向相应的存储单元发送联合运算结果,以便存储单元能够存储联合运算结果,实现了存储器能够在对不同存储单元中的数据进行联合运算后,自行存储联合运算结果,以避免联合运算结果的丢失,保证联合运算结果的安全性。
其中,第三存储地址指示的存储位置属于多个存储单元中的某个存储单元,也即是第三存储地址指示多个存储单元中的某个存储位置。第三存储地址中的数据也即是在第三存储地址指示的存储位置中存储的数据,该数据能够是任意的数据,本申请对此不做限定。第三存储地址能够以任意的形式表示,本申请对此不做限定。
在一种可能实现方式中,第一类运算单元包括联合运算子单元及搬运子单元;联合运算的过程包括:联合运算子单元在第一队列中及第二队列中均存储有数据的情况下,对第一数据与第二数据进行联合运算,得到第三数据;联合运算子单元向搬运子单元发送第三数据,搬运子单元向第三存储单元发送第三数据。
在本申请实施例中,联合运算子单元用于对第一队列和第二队列汇总的数据进行联合运算,搬运子单元用于向存储单元发送联合运算结果。联合运算子单元实时检测第一列队和第二队列中是否存储有数据,在第一队列中及第二队列中均存储有数据的情况下,表示此时能够进行联合运算,则对第一队列中的第一数据与第二队列中的第二数据进行联合运算,得到第三数据,并向搬运子单元发送第三数据,由搬运子单元按照为第三数据分配的存储地址,向相应的存储单元发送第三数据,以便存储单元能够存储联合运算结果,以实现通过联合运算子单元和搬运子单元实现存储器对存储的多个数据进行联合运算的方案,无需处理器的介入,无需再将存储器中的数据搬运至处理器再由处理器来进行运算后输出运算结果,减少了处理器与存储器之间的数据搬运而浪费的时间,保证了数据处理效率。
可选地,第一类运算单元还包括第三队列,第三队列用于存储联合运算结果,则联合运算的过程包括:联合运算子单元在得到第三数据的情况下,向第三队列发送第三数据,由第三队列存储第三数据,搬运子单元实时检测第三队列是否存储有数据,在检测到第三队列中存储有数据的情况下,按照为数据分配的存储地址,向该存储地址指示的存储单元发送数据。
在本申请实施例中,第一类运算单元中还设置有第三队列来存储联合运算结果,搬运子单元通过实时检测第三队列,以便能够及时将联合运算结果发送至相应的存储单元存储,保证数据存储的实时性。
其中,第三队列用于存储联合运算结果,第三队列能够是任意的队列,例如,第三队列为RES FIFO(RESult First In First Out,结果先入先出队列)。在第三队列为先入先出队列的情况下第三队列中越早存入的数据,优先被第一类输出进行存储。
在一种可能实现方式中,在发送第三数据之前还需确定第三存储地址,确定第三存储地址的过程包括:第一类运算单元基于已分配的存储地址及偏移量,确定第三存储地址。
在本申请实施例中,偏移量是指两个相邻的存储地址之间能够存储的数据量,例如,存储地址2是由存储地址1与偏移量的和得到,则存储地址1能够存储的数据量为偏移量,存储地址3是由存储地址2与偏移量的和得到,则存储地址2能够存储的数据量为该偏移量。
在本申请实施例中,由于第一类运算单元会不断地进行联合运算,每次联合运算后,会将联合运算结果存储至分配的存储地址中,则已分配的存储地址是已经存储历史联合运算结果的存储地址,基于已分配的存储地址及偏移量,确定出新的存储地址,即第三存储地址,以便在得到第三数据的情况下,将第三数据存储至第三存储地址中,保证确定的第三存储地址的准确性。
可选地,第一类运算单元还包括地址生成子单元,地址生成子单元基于已分配的存储地址及偏移量,确定第三存储地址。
其中,地址生成子单元确定存储地址,例如,地址生成子单元为AGU(AddressGenerate Unit,地址产生单元)。
可选地,对于确定第三存储地址的时机,第一类运算单元能在得到第三数据的情况下,基于已分配的存储地址及偏移量,确定第三存储地址,将第三存储地址分配给第三数据,以便将第三数据存储在第三存储地址中。
在本申请实施例中,在得到第三数据的情况下,为第三数据确定一个存储地址,以便能够及时将第三数据进行存储,保证存储的准确性。
可选地,第一类运算单元始终确定一个空余的存储地址,也即是,第一类运算单元会基于已分配的存储地址及偏移量,确定一个未存储数据的存储地址,即第三存储地址,而在第一类运算单元得到第三数据的情况下,为第三数据分配第三存储地址,以便将第三数据存储在第三存储地址中,在为第三存储地址已分配给第三数据的情况下,第一类运算单元基于已分配的存储地址及偏移量,确定下一个未存储数据的存储地址,以便后续将该存储地址分配给下一个联合运算结果。
在本申请实施例中,第一类运算单元始终保留一个未存储数据的存储地址,以便在得到联合运算结果的情况下,能够及时为联合运算结果分配该存储地址,进而将联合运算结果存储到存储地址中,之后再确定下一个未存储数据的存储地址,以保证为联合运算结果分配存储地址的实时性,进而保证存储联合结果的实时性。
可选地,第一类运算单元在已分配的存储地址均已存储数据的情况下,基于已分配的存储地址及偏移量,确定第三存储地址。
在本申请实施例中,第一类运算单元在已分配的存储地址均已存储数据的情况下,表示当前没有空余的已分配的存储地址,基于已分配的存储地址及偏移量确定新的存储地址,以避免分配的存储地址存在空余的情况,避免存储资源的浪费。
707、第三存储单元将第三数据存储在第三存储地址中。
本申请实施例提供的方案中,存储器中每个存储单元对应有一个第二类运算单元,第二类运算单元能够通过与对应的存储单元的连接,读取存储单元中的数据,并对读取到的数据进行运算或输出,且存储器还包括请求分发单元和第一类运算单元,每个第二类运算单元与第一类运算单元连接,请求分发单元能够接收数据运算请求,并通过与每个运算单元的连接,将接收到的数据运算请求分发给相应的第二类运算单元,每个第二类运算单元能通过与第一类运算单元的连接,向第一类运算单元中的第一队列或第二队列发送数据,以使第一类运算单元对第一队列和第二队列中的数据进行联合运算,以实现存储器对自身存储的多个数据进行联合运算的方案,实现了一种新的数据运算方式,此种运算方式无需处理器的介入,减少了由处理器介入的数据运算过程中不必要的数据搬运,进而节省了存储器与处理器之间数据搬运而所浪费的时间,提升了数据运算效率。
需要说明的是,上述图6至图7所示的实施例是以对两个不同存储单元中的数据进行联合运算为例进行说明,而在另一实施例中,能够对同一存储单元中不同的数据进行联合运算,例如,第一运算请求中的第一存储地址和第二运算请求中的第二存储地址均指示第一存储单元,第一存储地址和第二存储地址指示第一存储单元中不同的存储位置,则第一运算单元能够按照上述方式,响应于第一运算请求,将第一存储单元的第一存储地址中的数据发送至第一队列,响应于第二运算请求,将第一存储单元的第二存储地址中的数据发送至第二队列,进而由第一类运算单元对第一队列和第二队列中的数据进行联合运算。
需要说明的是,上述所示的实施例是以存储器为执行主体进行说明,而在另一实施例中,数据运算方法由包含该存储器的设备执行,该设备通过存储器来实现数据运算方法。
需要说明的是,上述所示的多个实施例能够任意结合,本申请实施例以上述多个实施例结合为例进行说明。
将存储器中的存储单元及对应的第二类运算单元构成一个Bank(库),以存储器包括请求分发单元、3个仲裁单元、3个Bank、路由单元(Network)和第一类运算单元为例,存储器中各个单元或子单元的连接如图8所示。其中,请求分发单元为Spliter(分路器)模块,仲裁单元为Arbiter(仲裁器),第一类运算单元为Unify calc unit(统一计算单元),Bank包括的存储单元为Bank Ram(Bank Random Access Memory,随机存取内存)。
路由单元是输入到输出全连接的网络,相当于一个线路总成,路由单元包括多个输入端口和多个输出端口,任一输入端口与每个输出端口连接,3个Bank的输出均与路由单元中的一个输入端口连接。例如,路由单元包括4个输入端口及4个输出端口,任一输入端口与4个输出端口均连接,4个输出端口包括resp0(response0,输出端口0)、resp1(response1,输出端口1)、Network Out0(第一通信端口)和Network Out1(第二通信端口)。resp0和resp1用于与存储器外部进行通信,第一通信端口为第一队列的入口,第二通信端口为第二队列的入口。3个Bank的输出连接到路由单元的输入,经过路由单元后,能够输出到resp0或resp1以便输出到存储器外部,也能够输出到Network Out0或Network Out1端口。
对于Bank包括的第二类运算单元,第二类运算单元中的第二运算子单元为InVALU(In Vector Arith Logic Unit,输入向量算术逻辑运算单元),第二类运算单元中的写子单元为Write Logic(写入逻辑),第二类运算单元中的读子单元为Read Logic(读逻辑),第二类运算单元中的第一运算子单元为Out VALU(Out Vector Arith Logic Unit,输出向量算术逻辑运算单元)。
在本申请实施例中,每个Bank能够执行三种不同的操作,如写操作、读操作或读改写操作。
对于写操作:以第二类运算单元接收到第三运算请求为例,第三运算请求指示对携带的数据进行运算后存储到携带的存储地址中,第三运算请求携带第二存储地址及第三数据,则将第三数据输入In VALU单元,该In VALU单元对第三数据进行算术逻辑运算,得到第四数据,将第四数据输入Write Logic,由Write Logic写入Bank Ram中。
对于读操作:以第二类运算单元接收到第一运算请求为例,第一运算请求指示对携带的存储地址中的数据进行运算后输出运算结果,第一运算请求携带第一存储地址及目标地址,Read Logic从Bank Ram中读取第一存储地址中的数据,将数据输入Out VALU,由Out VALU对数据进行算术逻辑运算,向路由单元发送运算结果及目标地址,以便将运算结果输出Bank,路由单元向目标地址输出运算结果。
对于读改写操作:以第二类运算单元接收到第二运算请求为例,第二运算请求指示对携带的存储地址中的数据进行更新,第二运算请求携带第一存储地址,则Read Logic从Bank Ram中读取数据,将读取到的数据输入Out VALU进行算术逻辑运算,Out VALU将运算结果输入至Write Logic,由Write Logic执行写操作,将运算结果写入第一存储地址中,以更新第一存储地址中存储的数据。
对于第一类运算单元,第一类运算单元中的联合运算子单元为Unify VALU(联合计算),第一类运算单元中的搬运子单元为Move Unit(移动单元),第一类运算单元中的第一队列为LHO FIFO,第二队列为RHO FIFO,第三队列为RES FIFO,地址生成子单元为AGU。可选地,第一类运算单元还包括Config port(配置端口)、Config Interface(配置接口)及CSR(Control Status Register,控制状态寄存器)。其中,Config port为存储器公开的端口,外部调度器或处理器能够调用Config port对存储器中的CSR进行读写操作。ConfigInterface用于将Config port接收到的总线信号转换为CSR读写信号。CSR用于基于接收到的读写信号,向AGU下发数据搬运任任务(Move Task),以使AGU基于数据搬移任务,确定新的存储地址。
在本申请实施例中,管理人员通过设备中的外部调度器,基于存储器中的Configport,能够对存储器进行配置,以便通过存储器中的CSR控制AGU来生成存储地址,以便后续在联合运算的过程中,能够为联合运算结果生成存储地址。并且,CSR一旦向AGU下发数据搬运任务后,AGU或基于该数据搬运任务来生成存储地址且始终保留一个未存储数据的存储地址,一旦当前包括的存储地址分配给联合运算结果,则AGU立即按照上述图7所示的实施例中的方式,来生成一个新的未存储数据的存储地址。
另外,CSR能够配置存储器中各个运算子单元的函数,即配置各个运算子单元的计算类型(optype)。可选地,管理人员通过设备中的外部调度器,向存储器中的Config port发送指示函数及运算子单元的信号,由Config Interface将Config port接收到的信号转换为CSR读写信号,由CSR基于读写信号,为信号指示的运算子单元配置函数。例如,通过Config port、Config Interface及CSR,能够对联合运算子单元、In VALU、Out VALU中所采用的函数进行配置。
在上述图8所示的实施例的基础上,以Bank0中的第二类运算单元接收到第二运算请求为例,第二运算请求指示对携带的存储地址中的数据进行更新,第二运算请求携带第一存储地址,也即是,第二类运算单元接收到读改写请求能够实现单目读改写运算,如图9所示,数据运算方法包括:Spliter模块接收到第二运算请求,基于第二运算请求中的第一存储地址,确定Bank0对应的仲裁单元,向Bank0对应的仲裁单元发送第二运算请求;Bank0对应的仲裁单元接收第二运算请求,在第二运算请求为接收到的多个数据运算请求中优先级最高的数据运算请求的情况下,向Read Logic发送第二运算请求,将其余的数据运算请求反压,即等待执行;Read Logic响应于第二运算请求,基于第一存储地址,从Bank0中的Bank Ram0中读取数据,将读取到的数据输入Out VALU进行算术逻辑运算,Out VALU将运算结果输入至Write Logic,由Write Logic执行写操作,将运算结果写入第一存储地址中,以更新第一存储地址中存储的数据。
在本申请实施例中,对于单目流式运算,在存储器内部入口和出口处加入轻量级的计算单元,在线处理读出或写入的数据,无需将数据再导入处理器中进行计算,功耗大大降低,性能有较大提升。
在上述图8所示的实施例的基础上,以Bank0中的第二类运算单元接收到的第一运算请求指示向第一队列发送携带的存储地址中的数据、Bank0中的第二类运算单元接收到第二运算请求指示向第二队列发送携带的存储地址中的数据为例,Bank0中的第二类运算单元接收到的第一运算请求携带第一存储地址,Bank1中的第二类运算单元接收到的第二运算请求携带第二存储地址,如图10所示,数据运算方法包括:Spliter模块接收到两个数据运算请求,基于第一运算请求及第二运算请求中的存储地址,分别向Bank0的仲裁单元发送第一运算请求,向Bank1对应的仲裁单元发送第二运算请求。Bank0对应的仲裁单元接收第一运算请求,在第一运算请求为接收到的多个数据运算请求中优先级最高的数据运算请求的情况下,向Bank0中的Read Logic发送第一运算请求,将其余的数据运算请求反压,即等待执行;Read Logic响应于第一运算请求,基于第一存储地址,从Bank0中的Bank Ram0中读取数据经过Network的路由,输入到LHO FIFO中。Bank1对应的仲裁单元接收第二运算请求,在第二运算请求为接收到的多个数据运算请求中优先级最高的数据运算请求的情况下,向Bank1中的Read Logic发送第二运算请求,将其余的数据运算请求反压,即等待执行;Read Logic响应于第二运算请求,基于第二存储地址,从Bank1中的Bank Ram1中读取数据经过Network的路由,输入到RHO FIFO中。第一类运算单元中的Unify VALU在LHO FIFO和RHO FIFO均存储有数据的情况下,LHO FIFO和RHO FIFO的头部数据弹出,进入Unify VALU进行联合运算,由Unify VALU将联合运算结果写入RES FIFO中。Move unit从AGU获取存储地址,将RES FIFO中的头部数据读出,按照该存储地址Bank2对应的Arbiter的仲裁后,存储在Bank2中的存储单元中。
在本申请实施例中,Unify calc unit用于完成双目流式计算,Move unit输出信号为Move unit Out,该信号能够连接到3个Bank对应的Arbiter的入口,因此Move unit可以将数据搬移至三个Bank中的任意一个。在Move unit从AGU获取存储地址指示Bank2中的存储单元的情况下,按照该存储地址Bank2对应的Arbiter的仲裁后,存储在Bank2中的存储单元中。
另外,对于AGU生成存储地址的时机,能够预先通过CSR下发的数据搬运任务,生成一个未存储数据的存储地址,以便Move unit获取该存储地址来存储联合运算结果。或者,也能够在Spliter模块接收到第一运算请求和第二运算请求的情况下,向Unify calc unit中的Config port发送信息,以使Unify calc unit中的Config Interface将Config port接收到的信号转换为CSR读写信号,CSR基于读写信号向AGU发送数据搬运任务,AGU响应于数据搬运任务来生成一个未存储数据的存储地址,以便Move unit获取该存储地址来存储联合运算结果。
在本申请实施例中,对于双目流式运算,在存储器内部加入统一计算单元,通过两个先入先出队列进行数据同步,然后将处理结果写入第三队列中,通过AGU生成写地址,写到对应的存储器中,无需处理器介入。
在本申请实施例中,存储器中的存储单元、第一类运算单元及第二类运算单元的物理布局如图11所示,每个存储单元对应的第二类运算单元的位置与该存储单元的位置相邻,且每个第二类运算单元介于两个存储单元之间的沟道中。其中,存储单元Bank ram0的位置与第二类运算单元Bank0 Logic的位置相邻,存储单元Bank ram1的位置与第二类运算单元Bank1 Logic的位置相邻,存储单元Bank ram2的位置与第二类运算单元Bank2 Logic的位置相邻,第二类运算单元Bank0 Logic介于存储单元Bank ram0与存储单元Bank ram1之间,第二类运算单元Bank1 Logic介于存储单元Bank ram1与存储单元Bank ram2之间。
由于存储器中不同的存储单元之间会预留沟道,第二类运算单元能够有效利用沟道面积。第一类运算单元能够与所有存储单元及第二类运算单元进行数据交互,则第一类运算单元将其横跨在所有存储单元及第二类运算单元之间。
本申请实施例提供的数据运算方法能够应用在多种场景下。例如,在一种运算场景下,多个指令之间存在着大量的依赖关系,依赖关系体现在上一条指令的输出作为下一条指令的输入,则存储器能够响应于任一数据运算请求,对数据进行运算后并进行存储,以便能够响应于下一数据运算请求,继续对存储的数据进行运算。再例如,在流式运算场景下,存储器响应于任一数据运算请求,对任一存储单元中的数据运算,将运算结果存储在原来的存储地址中,以更新该存储地址中原来的数据,存储器能够按照上述方式迭代运算,实现对某个存储地址中的数据进行迭代运算。
本申请实施例提出一种高性能近存计算装置,在存储器中加入轻量级的运算装置,面对流式处理场景,可在数据搬运的过程中完成基本的运算,或是可以通过统一计算单元在存储器内部完成流式处理,无需向量处理器介入,大大提升了流式处理性能,性能很高,并且消耗的面积较小,节省了存储器占用的空间。
图12是本申请实施例提供的再一种存储器的结构示意图,如图12所示,存储器包括请求分发单元1201、多个运算单元1202及多个存储单元1203,多个运算单元1202与多个存储单元1203一一对应,请求分发单元1201与每个运算单元1202连接,运算单元1202与对应的存储单元1203连接;
请求分发单元1201,用于接收数据运算请求,数据运算请求携带第一存储地址,数据运算请求指示对第一存储地址中的数据进行运算;
请求分发单元1201,用于基于第一存储地址,从多个运算单元1202中确定第一运算单元1204,向第一运算单元1204发送数据运算请求,第一运算单元1204为多个存储单元1203中第一存储单元1205对应的运算单元1202,第一存储单元1205为第一存储地址指示的存储单元1203;
第一运算单元1204,用于响应于数据运算请求,对第一数据进行运算,第一数据为第一存储单元1205的第一存储地址中的数据。
在一种可能实现方式中,数据运算请求为第一运算请求,第一运算请求指示对携带的存储地址中的数据进行运算后输出运算结果;
第一运算单元1204,用于响应于第一运算请求,基于第一存储地址,从第一存储单元1205中读取第一数据;
第一运算单元1204,用于对第一数据进行运算,得到第二数据,向第一运算请求指示的目标地址输出第二数据。
在另一种可能实现方式中,如图13所示,第一运算单元1204包括第一运算子单元12041及读子单元12042;
读子单元12042,用于响应于第一运算请求,基于第一存储地址,从第一存储单元1205中读取第一数据,向第一运算子单元12041发送第一数据;
第一运算单元1204,用于对第一数据进行运算,得到第二数据,向第一运算请求指示的目标地址输出第二数据,包括:
第一运算子单元12041,用于对第一数据进行运算,得到第二数据,向目标地址输出第二数据。
在另一种可能实现方式中,数据运算请求为第二运算请求,第二运算请求指示对携带的存储地址中的数据进行更新;
第一运算单元1204,用于响应于第二运算请求,基于第一存储地址,从第一存储单元1205中读取第一数据;
第一运算单元1204,用于对第一数据进行运算,得到第二数据;将第一存储地址中存储的第一数据更新为第二数据。
在另一种可能实现方式中,如图13所示,第一运算单元1204包括第一运算子单元12041、读子单元12042及写子单元12043;
读子单元12042,用于响应于第二运算请求,基于第一存储地址,从第一存储单元1205中读取第一数据,向第一运算子单元12041发送第一数据;
第一运算子单元12041,用于对第一数据进行运算,得到第二数据,向写子单元12043发送第二数据;
写子单元12043,用于将第一存储地址中存储的第一数据更新为第二数据。
在另一种可能实现方式中,如图13所示,请求分发单元1201,还用于接收第三运算请求,第三运算请求携带第二存储地址及第三数据,第三运算请求指示对携带的数据进行运算后存储到携带的存储地址中;
请求分发单元1201,还用于基于第二存储地址,从多个运算单元1202中确定第二运算单元1206,向第二运算单元1206发送第三运算请求,第二运算单元1206为第二存储单元1207对应的运算单元1202,第二存储单元1207为第二存储地址指示的存储单元1203;
第二运算单元1206,用于响应于第三运算请求,对第三数据进行运算,得到第四数据,将第四数据存储在第二存储单元1207的第二存储地址中。
在另一种可能实现方式中,如图13所示,第二运算单元1206包括第二运算子单元12061及写子单元12062;
第二运算子单元12061,用于对第三数据进行运算,得到第四数据,向写子单元12062发送第四数据;
写子单元12062,用于将第四数据存储在第二存储地址中。
在另一种可能实现方式中,如图13所示,存储器还包括多个仲裁单元1208,多个仲裁单元1208与多个运算单元1202一一对应,仲裁单元1208与对应的运算单元1202连接;
请求分发单元1201,用于向目标仲裁单元1209发送数据运算请求,目标仲裁单元1209为多个仲裁单元1208中与第一运算单元1204对应的仲裁单元1208;
目标仲裁单元1209,用于接收数据运算请求,在数据运算请求的优先级最高的情况下,或者,在数据运算请求的接收时间最早的情况下,向第一运算单元1204发送数据运算请求。
需要说明的是:上述实施例提供的数据运算装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将存储器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据运算装置与数据运算方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图14是本申请实施例提供的再一种存储器的结构示意图,如图14所示,存储器包括第一类运算单元1401、多个存储单元1402及多个第二类运算单元1403,第一类运算单元1401包括第一队列和第二队列,第一队列和第二队列用于存储待联合运算的数据,多个第二类运算单元1403与多个存储单元1402一一对应,第一类运算单元1401与每个第二类运算单元1403连接,第二类运算单元1403与对应的存储单元1402连接;
多个第二类运算单元1403中的第一运算单元1404,用于响应于第一运算请求,从第一存储单元1405中读取第一数据,向第一队列发送第一数据,第一运算请求指示向第一队列发送携带的存储地址中的数据,第一运算请求携带第一存储地址,第一存储地址指示第一存储单元1405,第一运算单元1404为第一存储单元1405对应的第二类运算单元1403,第一数据为第一存储地址中的数据;
多个第二类运算单元1403中的第二运算单元1406,用于响应于第二运算请求,从第二存储单元1407中读取第二数据,向第二队列发送第二数据,第二运算请求指示向第二队列发送携带的存储地址中的数据,第二运算请求携带第二存储地址,第二存储地址指示第二存储单元1407,第二运算单元1406为第二存储单元1407对应的第二类运算单元1403,第二数据为第二存储地址中的数据,第一运算请求及第二运算请求是由同一联合运算任务触发;
第一类运算单元1401,用于在第一队列中及第二队列中均存储有数据的情况下,对第一队列中的第一数据与第二队列中的第二数据进行联合运算,得到第三数据。
在另一种可能实现方式中,第一类运算单元1401,还用于向第三存储单元1408发送第三数据,第三存储单元1408为多个存储单元1402中第三存储地址指示的存储单元1402,第三存储地址是为第三数据分配的存储地址;
第三存储单元1408,用于将第三数据存储在第三存储地址中。
在另一种可能实现方式中,如图15所示,第一类运算单元1401包括联合运算子单元14011及搬运子单元14012;
联合运算子单元14011,用于在第一队列中及第二队列中均存储有数据的情况下,对第一数据与第二数据进行联合运算,得到第三数据;
搬运子单元14012,用于向第三存储单元1408发送第三数据。
在另一种可能实现方式中, 第一类运算单元1401,还用于基于已分配的存储地址及偏移量,确定第三存储地址。
在另一种可能实现方式中,第一类运算单元1401,用于在已分配的存储地址均已存储数据的情况下,基于已分配的存储地址及偏移量,确定第三存储地址。
在另一种可能实现方式中,如图15所示,存储器还包括请求分发单元1409,请求分发单元1409与每个第二类运算单元1403连接;
请求分发单元1409,用于接收第一运算请求,基于第一运算请求中的第一存储地址,从多个第二类运算单元1403中确定第一运算单元1404,向第一运算单元1404发送第一运算请求;
请求分发单元1409,用于接收第二运算请求,基于第二运算请求中的第二存储地址,从多个第二类运算单元1403中确定第二运算单元1406,向第二运算单元1406发送第二运算请求。
需要说明的是:上述实施例提供的数据运算装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将存储器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据运算装置与数据运算方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例还提供了一种计算机设备,该计算机设备包括处理器和存储器,存储器中存储有至少一条计算机程序,该至少一条计算机程序由存储器加载并执行以实现上述实施例的数据运算方法所执行的操作。
可选地,计算机设备提供为终端。图16示出了本申请一个示例性实施例提供的终端1600的结构框图。终端1600包括有:处理器1601和存储器1602。
处理器1601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1601可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1601可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1601还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1602中的非暂态的计算机可读存储介质用于存储至少一个计算机程序,该至少一个计算机程序用于被处理器1601所执行以实现本申请中方法实施例提供的数据运算方法。
在一些实施例中,终端1600还可选包括有:外围设备接口1603和至少一个外围设备。处理器1601、存储器1602和外围设备接口1603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1603相连。具体地,外围设备包括:射频电路1604、显示屏1605、摄像头组件1606、音频电路1607和电源1608中的至少一种。
外围设备接口1603可被用于将I/O(Input /Output,输入/输出)相关的至少一个外围设备连接到处理器1601和存储器1602。在一些实施例中,处理器1601、存储器1602和外围设备接口1603被集成在同一芯片或电路板上;在一些其他实施例中,处理器1601、存储器1602和外围设备接口1603中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1604用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1604包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1604可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1604还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1605用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1605是触摸显示屏时,显示屏1605还具有采集在显示屏1605的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1601进行处理。此时,显示屏1605还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1605可以为一个,设置在终端1600的前面板;在另一些实施例中,显示屏1605可以为至少两个,分别设置在终端1600的不同表面或呈折叠设计;在另一些实施例中,显示屏1605可以是柔性显示屏,设置在终端1600的弯曲表面上或折叠面上。甚至,显示屏1605还可以设置成非矩形的不规则图形,也即异形屏。显示屏1605可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-EmittingDiode,有机发光二极管)等材质制备。
摄像头组件1606用于采集图像或视频。可选地,摄像头组件1606包括前置摄像头和后置摄像头。前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1606还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1607可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1601进行处理,或者输入至射频电路1604以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1600的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1601或射频电路1604的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1607还可以包括耳机插孔。
电源1608用于为终端1600中的各个组件进行供电。电源1608可以是交流电、直流电、一次性电池或可充电电池。当电源1608包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
本领域技术人员可以理解,图16中示出的结构并不构成对终端1600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
可选地,计算机设备提供为服务器。图17是本申请实施例提供的一种服务器的结构示意图,该服务器1700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(Central Processing Units,CPU)1701和一个或一个以上的存储器1702,其中,存储器1702中存储有至少一条计算机程序,至少一条计算机程序由存储器1702加载并执行以实现上述各个方法实施例提供的数据运算方法。当然,该服务器还可以具有有线或无线网络接口、键盘及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请实施例的可选实施例,并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (20)

1.一种数据运算方法,其特征在于,由存储器执行,所述存储器包括请求分发单元、多个运算单元及多个存储单元,所述多个运算单元与所述多个存储单元一一对应,所述请求分发单元与每个运算单元连接,所述运算单元与对应的存储单元连接;所述方法包括:
所述请求分发单元接收数据运算请求,所述数据运算请求携带第一存储地址,所述数据运算请求指示对所述第一存储地址中的数据进行运算;
所述请求分发单元基于所述第一存储地址,从所述多个运算单元中确定第一运算单元,向所述第一运算单元发送所述数据运算请求,所述第一运算单元为所述多个存储单元中第一存储单元对应的运算单元,所述第一存储单元为所述第一存储地址指示的存储单元;
所述第一运算单元响应于所述数据运算请求,对第一数据进行运算,所述第一数据为所述第一存储单元的所述第一存储地址中的数据。
2.根据权利要求1所述的方法,其特征在于,所述数据运算请求为第一运算请求,所述第一运算请求指示对携带的存储地址中的数据进行运算后输出运算结果;所述第一运算单元响应于所述数据运算请求,对第一数据进行运算,包括:
所述第一运算单元响应于所述第一运算请求,基于所述第一存储地址,从所述第一存储单元中读取所述第一数据;
所述第一运算单元对所述第一数据进行运算,得到第二数据,向所述第一运算请求指示的目标地址输出所述第二数据。
3.根据权利要求2所述的方法,其特征在于,所述第一运算单元包括第一运算子单元及读子单元;所述第一运算单元响应于所述第一运算请求,基于所述第一存储地址,从所述第一存储单元中读取所述第一数据,包括:
所述读子单元响应于所述第一运算请求,基于所述第一存储地址,从所述第一存储单元中读取所述第一数据,向所述第一运算子单元发送所述第一数据;
所述第一运算单元对所述第一数据进行运算,得到第二数据,向所述第一运算请求指示的目标地址输出所述第二数据,包括:
所述第一运算子单元对所述第一数据进行运算,得到所述第二数据,向所述目标地址输出所述第二数据。
4.根据权利要求1所述的方法,其特征在于,所述数据运算请求为第二运算请求,所述第二运算请求指示对携带的存储地址中的数据进行更新;所述第一运算单元响应于所述数据运算请求,对第一数据进行运算,包括:
所述第一运算单元响应于所述第二运算请求,基于所述第一存储地址,从所述第一存储单元中读取所述第一数据;
所述第一运算单元对所述第一数据进行运算,得到第二数据;将所述第一存储地址中存储的所述第一数据更新为所述第二数据。
5.根据权利要求4所述的方法,其特征在于,所述第一运算单元包括第一运算子单元、读子单元及写子单元;所述第一运算单元响应于所述第二运算请求,基于所述第一存储地址,从所述第一存储单元中读取所述第一数据,包括:
所述读子单元响应于所述第二运算请求,基于所述第一存储地址,从所述第一存储单元中读取所述第一数据,向所述第一运算子单元发送所述第一数据;
所述第一运算单元对所述第一数据进行运算,得到第二数据;将所述第一存储地址中存储的所述第一数据更新为所述第二数据,包括:
所述第一运算子单元对所述第一数据进行运算,得到所述第二数据,向所述写子单元发送所述第二数据;
所述写子单元将所述第一存储地址中存储的所述第一数据更新为所述第二数据。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述请求分发单元接收第三运算请求,所述第三运算请求携带第二存储地址及第三数据,所述第三运算请求指示对携带的数据进行运算后存储到携带的存储地址中;
所述请求分发单元基于所述第二存储地址,从所述多个运算单元中确定第二运算单元,向所述第二运算单元发送所述第三运算请求,所述第二运算单元为第二存储单元对应的运算单元,所述第二存储单元为所述第二存储地址指示的存储单元;
所述第二运算单元响应于所述第三运算请求,对所述第三数据进行运算,得到第四数据,将所述第四数据存储在所述第二存储单元的所述第二存储地址中。
7.根据权利要求6所述的方法,其特征在于,所述第二运算单元包括第二运算子单元及写子单元;所述第二运算单元响应于所述第三运算请求,对所述第三数据进行运算,得到第四数据,将所述第四数据存储在所述第二存储单元的所述第二存储地址中,包括:
所述第二运算子单元对所述第三数据进行运算,得到所述第四数据,向所述写子单元发送所述第四数据;
所述写子单元将所述第四数据存储在所述第二存储地址中。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述存储器还包括多个仲裁单元,所述多个仲裁单元与所述多个运算单元一一对应,所述仲裁单元与对应的运算单元连接;所述向所述第一运算单元发送所述数据运算请求,包括:
所述请求分发单元向目标仲裁单元发送所述数据运算请求,所述目标仲裁单元为所述多个仲裁单元中与所述第一运算单元对应的仲裁单元;
所述目标仲裁单元接收所述数据运算请求,在所述数据运算请求的优先级最高的情况下,或者,在所述数据运算请求的接收时间最早的情况下,向所述第一运算单元发送所述数据运算请求。
9.一种数据运算方法,其特征在于,由存储器执行,所述存储器包括第一类运算单元、多个存储单元及多个第二类运算单元,所述第一类运算单元包括第一队列和第二队列,所述第一队列和第二队列用于存储待联合运算的数据,所述多个第二类运算单元与所述多个存储单元一一对应,所述第一类运算单元与每个第二类运算单元连接,所述第二类运算单元与对应的存储单元连接;所述方法包括:
所述多个第二类运算单元中的第一运算单元响应于第一运算请求,从第一存储单元中读取第一数据,向所述第一队列发送所述第一数据,所述第一运算请求指示向所述第一队列发送携带的存储地址中的数据,所述第一运算请求携带第一存储地址,所述第一存储地址指示所述第一存储单元,所述第一运算单元为所述第一存储单元对应的第二类运算单元,所述第一数据为所述第一存储地址中的数据;
所述多个第二类运算单元中的第二运算单元响应于第二运算请求,从第二存储单元中读取第二数据,向所述第二队列发送所述第二数据,所述第二运算请求指示向所述第二队列发送携带的存储地址中的数据,所述第二运算请求携带第二存储地址,所述第二存储地址指示所述第二存储单元,所述第二运算单元为所述第二存储单元对应的第二类运算单元,所述第二数据为所述第二存储地址中的数据,所述第一运算请求及所述第二运算请求是由同一联合运算任务触发;
所述第一类运算单元在所述第一队列中及所述第二队列中均存储有数据的情况下,对所述第一队列中的所述第一数据与所述第二队列中的所述第二数据进行联合运算,得到第三数据。
10.根据权利要求9所述的方法,其特征在于,所述第一类运算单元在所述第一队列中及所述第二队列中均存储有数据的情况下,对所述第一队列中的所述第一数据与所述第二队列中的所述第二数据进行联合运算,得到第三数据之后,所述方法还包括:
所述第一类运算单元向第三存储单元发送所述第三数据,所述第三存储单元为所述多个存储单元中第三存储地址指示的存储单元,所述第三存储地址是为所述第三数据分配的存储地址;
所述第三存储单元将所述第三数据存储在所述第三存储地址中。
11.根据权利要求10所述的方法,其特征在于,所述第一类运算单元包括联合运算子单元及搬运子单元;所述第一类运算单元在所述第一队列中及所述第二队列中均存储有数据的情况下,对所述第一队列中的所述第一数据与所述第二队列中的所述第二数据进行联合运算,得到第三数据,包括:
所述联合运算子单元在所述第一队列中及所述第二队列中均存储有数据的情况下,对所述第一数据与所述第二数据进行联合运算,得到所述第三数据;
所述第一类运算单元向第三存储单元发送所述第三数据,包括:
所述搬运子单元向所述第三存储单元发送所述第三数据。
12.根据权利要求9-11任一项所述的方法,其特征在于,所述存储器还包括请求分发单元,所述请求分发单元与所述每个第二类运算单元连接;所述多个第二类运算单元中的第一运算单元响应于第一运算请求,从第一存储单元中读取第一数据之前,所述方法还包括:
所述请求分发单元接收所述第一运算请求,基于所述第一运算请求中的所述第一存储地址,从所述多个第二类运算单元中确定所述第一运算单元,向所述第一运算单元发送所述第一运算请求;
所述多个第二类运算单元中的第二运算单元响应于第二运算请求,从第二存储单元中读取第二数据之前,所述方法还包括:
所述请求分发单元接收所述第二运算请求,基于所述第二运算请求中的所述第二存储地址,从所述多个第二类运算单元中确定所述第二运算单元,向所述第二运算单元发送所述第二运算请求。
13.一种存储器,其特征在于,所述存储器包括请求分发单元、多个运算单元及多个存储单元,所述多个运算单元与所述多个存储单元一一对应,所述请求分发单元与每个运算单元连接,所述运算单元与对应的存储单元连接;
所述请求分发单元,用于接收数据运算请求,所述数据运算请求携带第一存储地址,所述数据运算请求指示对所述第一存储地址中的数据进行运算;
所述请求分发单元,用于基于所述第一存储地址,从所述多个运算单元中确定第一运算单元,向所述第一运算单元发送所述数据运算请求,所述第一运算单元为所述多个存储单元中第一存储单元对应的运算单元,所述第一存储单元为所述第一存储地址指示的存储单元;
所述第一运算单元,用于响应于所述数据运算请求,对第一数据进行运算,所述第一数据为所述第一存储单元的所述第一存储地址中的数据。
14.根据权利要求13所述的存储器,其特征在于,所述数据运算请求为第一运算请求,所述第一运算请求指示对携带的存储地址中的数据进行运算后输出运算结果;
所述第一运算单元,用于响应于所述第一运算请求,基于所述第一存储地址,从所述第一存储单元中读取所述第一数据;
所述第一运算单元,用于对所述第一数据进行运算,得到第二数据,向所述第一运算请求指示的目标地址输出所述第二数据。
15.根据权利要求14所述的存储器,其特征在于,所述第一运算单元包括第一运算子单元及读子单元;
所述读子单元,用于响应于所述第一运算请求,基于所述第一存储地址,从所述第一存储单元中读取所述第一数据,向所述第一运算子单元发送所述第一数据;
所述第一运算子单元,用于对所述第一数据进行运算,得到所述第二数据,向所述目标地址输出所述第二数据。
16.根据权利要求13所述的存储器,其特征在于,所述数据运算请求为第二运算请求,所述第二运算请求指示对携带的存储地址中的数据进行更新;
所述第一运算单元,用于响应于所述第二运算请求,基于所述第一存储地址,从所述第一存储单元中读取所述第一数据;
所述第一运算单元,用于对所述第一数据进行运算,得到第二数据;将所述第一存储地址中存储的所述第一数据更新为所述第二数据。
17.根据权利要求16所述的存储器,其特征在于,所述第一运算单元包括第一运算子单元、读子单元及写子单元;
所述读子单元,用于响应于所述第二运算请求,基于所述第一存储地址,从所述第一存储单元中读取所述第一数据,向所述第一运算子单元发送所述第一数据;
所述第一运算子单元,用于对所述第一数据进行运算,得到所述第二数据,向所述写子单元发送所述第二数据;
所述写子单元,用于将所述第一存储地址中存储的所述第一数据更新为所述第二数据。
18.根据权利要求13所述的存储器,其特征在于,所述请求分发单元,还用于接收第三运算请求,所述第三运算请求携带第二存储地址及第三数据,所述第三运算请求指示对携带的数据进行运算后存储到携带的存储地址中;
所述请求分发单元,还用于基于所述第二存储地址,从所述多个运算单元中确定第二运算单元,向所述第二运算单元发送所述第三运算请求,所述第二运算单元为第二存储单元对应的运算单元,所述第二存储单元为所述第二存储地址指示的存储单元;
所述第二运算单元,用于响应于所述第三运算请求,对所述第三数据进行运算,得到第四数据,将所述第四数据存储在所述第二存储单元的所述第二存储地址中。
19.一种存储器,其特征在于,所述存储器包括第一类运算单元、多个存储单元及多个第二类运算单元,所述第一类运算单元包括第一队列和第二队列,所述第一队列和第二队列用于存储待联合运算的数据,所述多个第二类运算单元与所述多个存储单元一一对应,所述第一类运算单元与每个第二类运算单元连接,所述第二类运算单元与对应的存储单元连接;
所述多个第二类运算单元中的第一运算单元,用于响应于第一运算请求,从第一存储单元中读取第一数据,向所述第一队列发送所述第一数据,所述第一运算请求指示向所述第一队列发送携带的存储地址中的数据,所述第一运算请求携带第一存储地址,所述第一存储地址指示所述第一存储单元,所述第一运算单元为所述第一存储单元对应的第二类运算单元,所述第一数据为所述第一存储地址中的数据;
所述多个第二类运算单元中的第二运算单元,用于响应于第二运算请求,从第二存储单元中读取第二数据,向所述第二队列发送所述第二数据,所述第二运算请求指示向所述第二队列发送携带的存储地址中的数据,所述第二运算请求携带第二存储地址,所述第二存储地址指示所述第二存储单元,所述第二运算单元为所述第二存储单元对应的第二类运算单元,所述第二数据为所述第二存储地址中的数据,所述第一运算请求及所述第二运算请求是由同一联合运算任务触发;
所述第一类运算单元,用于在所述第一队列中及所述第二队列中均存储有数据的情况下,对所述第一队列中的所述第一数据与所述第二队列中的所述第二数据进行联合运算,得到第三数据。
20.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述存储器加载并执行以实现如权利要求1至8任一权利要求所述的数据运算方法所执行的操作,或者,以实现如权利要求9至12任一权利要求所述的数据运算方法所执行的操作。
CN202410140231.6A 2024-02-01 2024-02-01 数据运算方法、存储器及计算机设备 Active CN117667208B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410140231.6A CN117667208B (zh) 2024-02-01 2024-02-01 数据运算方法、存储器及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410140231.6A CN117667208B (zh) 2024-02-01 2024-02-01 数据运算方法、存储器及计算机设备

Publications (2)

Publication Number Publication Date
CN117667208A true CN117667208A (zh) 2024-03-08
CN117667208B CN117667208B (zh) 2024-05-24

Family

ID=90075403

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410140231.6A Active CN117667208B (zh) 2024-02-01 2024-02-01 数据运算方法、存储器及计算机设备

Country Status (1)

Country Link
CN (1) CN117667208B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108287759A (zh) * 2017-01-10 2018-07-17 阿里巴巴集团控股有限公司 处理数据过程中的调度方法、装置和系统
CN111797034A (zh) * 2020-06-24 2020-10-20 深圳云天励飞技术有限公司 一种数据管理方法、神经网络处理器和终端设备
CN113051195A (zh) * 2021-03-02 2021-06-29 长沙景嘉微电子股份有限公司 存储器、gpu及电子设备
CN113157632A (zh) * 2020-01-07 2021-07-23 爱思开海力士有限公司 存储器内处理器件
CN114115507A (zh) * 2021-11-30 2022-03-01 杭州海康威视数字技术股份有限公司 存储器及写数据的方法
CN114388012A (zh) * 2020-10-05 2022-04-22 三星电子株式会社 用于执行存储器内处理的存储器装置
CN115398395A (zh) * 2020-04-01 2022-11-25 微软技术许可有限责任公司 具有用于同时处理不同类运算的独立数据路径的深度神经网络加速器
US20230205449A1 (en) * 2021-12-28 2023-06-29 Samsung Electronics Co., Ltd. Storage device, operation method of storage device, and storage system using the same
CN116737393A (zh) * 2023-08-11 2023-09-12 腾讯科技(深圳)有限公司 资源部署方法、装置和存储介质及电子设备
CN116959532A (zh) * 2023-03-09 2023-10-27 腾讯科技(深圳)有限公司 数据读取方法、装置、设备及可读存储介质
WO2023246843A1 (zh) * 2022-06-25 2023-12-28 华为技术有限公司 数据处理方法、装置及系统

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108287759A (zh) * 2017-01-10 2018-07-17 阿里巴巴集团控股有限公司 处理数据过程中的调度方法、装置和系统
CN113157632A (zh) * 2020-01-07 2021-07-23 爱思开海力士有限公司 存储器内处理器件
CN115398395A (zh) * 2020-04-01 2022-11-25 微软技术许可有限责任公司 具有用于同时处理不同类运算的独立数据路径的深度神经网络加速器
CN111797034A (zh) * 2020-06-24 2020-10-20 深圳云天励飞技术有限公司 一种数据管理方法、神经网络处理器和终端设备
CN114388012A (zh) * 2020-10-05 2022-04-22 三星电子株式会社 用于执行存储器内处理的存储器装置
CN113051195A (zh) * 2021-03-02 2021-06-29 长沙景嘉微电子股份有限公司 存储器、gpu及电子设备
CN114115507A (zh) * 2021-11-30 2022-03-01 杭州海康威视数字技术股份有限公司 存储器及写数据的方法
US20230205449A1 (en) * 2021-12-28 2023-06-29 Samsung Electronics Co., Ltd. Storage device, operation method of storage device, and storage system using the same
WO2023246843A1 (zh) * 2022-06-25 2023-12-28 华为技术有限公司 数据处理方法、装置及系统
CN116959532A (zh) * 2023-03-09 2023-10-27 腾讯科技(深圳)有限公司 数据读取方法、装置、设备及可读存储介质
CN116737393A (zh) * 2023-08-11 2023-09-12 腾讯科技(深圳)有限公司 资源部署方法、装置和存储介质及电子设备

Also Published As

Publication number Publication date
CN117667208B (zh) 2024-05-24

Similar Documents

Publication Publication Date Title
CN105917311B (zh) 用于便携式设备中的同步任务分发的系统和方法
CN111245745B (zh) 消息发送方法、装置、节点设备及存储介质
CN106664668B (zh) 借助蓝牙低功耗的距离管理
CN111160549A (zh) 互连电路的数据处理装置以及方法
CN109150677B (zh) 跨域访问的处理方法、装置及电子设备
CN108304265A (zh) 内存管理方法、装置及存储介质
CN115904208A (zh) 分屏显示方法和装置
CN110147347A (zh) 用于矩阵处理的芯片、矩阵处理方法、装置及存储介质
CN114817120A (zh) 一种跨域数据共享方法、系统级芯片、电子设备及介质
CN110673944B (zh) 执行任务的方法和装置
CN111045732B (zh) 数据处理方法、芯片、设备及存储介质
CN111352863A (zh) 内存管理方法、装置、设备及存储介质
CN110769050B (zh) 数据处理方法、数据处理系统、计算机设备及存储介质
CN110413383B (zh) 事件处理方法、装置、终端及存储介质
CN117667208B (zh) 数据运算方法、存储器及计算机设备
CN114090289A (zh) 共享内存数据调用方法、装置、电子设备及存储介质
CN109639813A (zh) 视频文件传输处理方法及装置、电子设备和存储介质
CN110727462B (zh) 数据处理器和数据处理方法
US11019131B2 (en) Method and system of file transfer using device-to-device communication technique in messenger
WO2022247750A1 (zh) 访问请求的处理方法、电子装置、电子设备以及介质
US20190286606A1 (en) Network-on-chip and computer system including the same
CN114363654B (zh) 一种视频推流方法、装置、终端设备及存储介质
CN115756868A (zh) 内存分配方法、装置、设备、存储介质及计算机程序产品
CN116909626B (zh) 数据处理方法、处理器及计算机设备
CN108494700A (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