CN113626080B - 数据处理装置以及相关产品 - Google Patents

数据处理装置以及相关产品 Download PDF

Info

Publication number
CN113626080B
CN113626080B CN202010382526.6A CN202010382526A CN113626080B CN 113626080 B CN113626080 B CN 113626080B CN 202010382526 A CN202010382526 A CN 202010382526A CN 113626080 B CN113626080 B CN 113626080B
Authority
CN
China
Prior art keywords
data
module
address
discrete
continuous
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010382526.6A
Other languages
English (en)
Other versions
CN113626080A (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.)
Anhui Cambricon Information Technology Co Ltd
Original Assignee
Anhui Cambricon Information Technology 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 Anhui Cambricon Information Technology Co Ltd filed Critical Anhui Cambricon Information Technology Co Ltd
Priority to CN202010382526.6A priority Critical patent/CN113626080B/zh
Priority to PCT/CN2021/090623 priority patent/WO2021223639A1/zh
Priority to US17/619,760 priority patent/US20230214327A1/en
Publication of CN113626080A publication Critical patent/CN113626080A/zh
Application granted granted Critical
Publication of CN113626080B publication Critical patent/CN113626080B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Abstract

本公开涉及一种数据处理装置以及相关产品。所述产品包括控制模块,所述控制模块包括:指令缓存单元、指令处理单元和存储队列单元;所述指令缓存单元,用于存储所述人工神经网络运算关联的计算指令;所述指令处理单元,用于对所述计算指令解析得到多个运算指令;所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。通过以上装置,本公开可以提高相关产品在进行神经网络模型的运算时的运算效率。

Description

数据处理装置以及相关产品
技术领域
本公开涉及计算机技术领域,特别是涉及一种数据处理装置以及相关产品。
背景技术
随着人工智能技术的发展,其在图像识别等领域取得了较好的效果。在图像识别过程中,可能需要对大量离散的数据点进行处理(例如进行差值运算等),然而,相关技术中对离散数据点的处理过程较为复杂,数据开销较大。
发明内容
基于此,有必要针对上述技术问题,提供一种数据处理装置以及相关产品。
根据本公开的一方面,提供了一种数据处理装置,该装置包括:解码模块、离散地址确定模块、连续数据缓存模块、数据读写模块及存储模块,
所述解码模块,用于对接收到的处理指令进行解码,得到解码后的处理指令;确定所述处理指令对应的多个数据,以及所述多个数据的源数据基地址、目的数据基地址、离散数据的数据偏移地址及连续数据的数据尺寸,所述多个数据的源数据包括离散数据或连续数据;所述解码模块还用于根据连续数据的基地址及连续数据的数据尺寸,确定连续数据的第一存储地址;
所述离散地址确定模块,连接到所述解码模块和所述数据读写模块,用于根据离散数据的基地址及离散数据的数据偏移地址,确定离散数据的第二存储地址;将所述第二存储地址发送给所述数据读写模块;
所述连续数据缓存模块,连接到所述解码模块和所述数据读写模块,用于建立连续数据的缓存空间;将所述第一存储地址的连续数据缓存到所述缓存空间并发送到所述数据读写模块,或者将从所述数据读写模块接收到的连续数据缓存到所述缓存空间并发送到第一存储地址;
所述数据读写模块,连接到所述存储模块,用于根据离散数据的第二存储地址从所述存储模块读取离散数据,将读取到的离散数据发送给所述连续数据缓存模块;或者接收所述连续数据缓存模块的连续数据,根据离散数据的存储地址将接收到的连续数据写入所述存储模块,
其中,所述数据读写模块包括合并请求缓存子模块,用于在所述数据读写模块读取离散数据期间,缓存多个读取请求对应的存储地址,以使每个读取请求合并读取到一个或多个离散数据。
根据本公开的另一方面,提供了一种人工智能芯片,所述芯片包括如上所述的数据处理装置。
根据本公开的另一方面,提供了一种电子设备,所述电子设备包括如上所述的人工智能芯片。
根据本公开的另一方面,提供了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如上所述的人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。
根据本公开的实施例,能够解码并执行处理指令,将离散数据搬运到连续的数据地址,或将连续数据存储到离散的多个数据地址,以便于实现离散数据的向量运算以及向量运算后的向量数据还原,从而简化处理过程,减小数据开销。并且,根据本公开的实施例能够在读取离散数据时通过缓存读取请求对应的存储地址,以使每个数据读取请求合并读取到一个或多个离散数据,从而提高数据的读取效率。
通过权要中的技术特征进行推导,能够达到对应背景技术中的技术问题的有益效果。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例的数据处理装置的处理器的示意图;
图2示出根据本公开实施例的数据处理装置的框图;
图3示出根据本公开实施例的数据处理装置的框图;
图4示出根据本公开实施例的板卡的结构框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
根据本公开实施例的数据处理装置可应用于处理器中,该处理器可以是通用处理器,例如CPU(Central Processing Unit,中央处理器),也可以是用于执行人工智能运算的人工智能处理器(IPU)。人工智能运算可包括机器学习运算,类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器可例如包括GPU(Graphics Processing Unit,图形处理单元)、NPU(Neural-Network Processing Unit,神经网络处理单元)、DSP(Digital Signal Process,数字信号处理单元)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。本公开对处理器的具体类型不作限制。
在一种可能的实现方式中,本公开中所提及的处理器可包括多个处理单元,每个处理单元可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。本公开对处理单元及处理单元所运行的任务不作限制。
图1示出根据本公开实施例的数据处理装置的处理器的示意图。如图1所示,处理器100包括多个处理单元101以及存储单元102,多个处理单元101用于执行指令序列,存储单元102用于存储数据,可包括随机存储器(RAM,Random Access Memory)和寄存器堆。处理器100中的多个处理单元101既可共用部分存储空间,例如共用部分RAM存储空间和寄存器堆,又可同时拥有各自的存储空间。
图2示出根据本公开一实施例的数据处理装置的框图。如图2所示,该装置包括:解码模块(Decoder,简称DEC)21、离散地址确定模块22、连续数据缓存模块(Continuous DataBuffer,简称CDB)23、数据读写模块24及存储模块25:
所述解码模块21,用于对接收到的处理指令进行解码,得到解码后的处理指令;确定所述处理指令对应的多个数据,以及所述多个数据的源数据基地址、目的数据基地址、离散数据的数据偏移地址及连续数据的数据尺寸,所述多个数据的源数据包括离散数据或连续数据;所述解码模块还用于根据连续数据的基地址及连续数据的数据尺寸,确定连续数据的第一存储地址;
所述离散地址确定模块22,连接到所述解码模块21和所述数据读写模块24,用于根据离散数据的基地址及离散数据的数据偏移地址,确定离散数据的第二存储地址;将所述第二存储地址发送给所述数据读写模块;
所述连续数据缓存模块23,连接到所述解码模块21和所述数据读写模块24,用于建立连续数据的缓存空间;将所述第一存储地址的连续数据缓存到所述缓存空间并发送到所述数据读写模块,或者将从所述数据读写模块接收到的连续数据缓存到所述缓存空间并发送到第一存储地址;
所述数据读写模块24,连接到所述存储模块25,用于根据离散数据的第二存储地址从所述存储模块读取离散数据,将读取到的离散数据发送给所述连续数据缓存模块;或者接收所述连续数据缓存模块的连续数据,根据离散数据的存储地址将接收到的连续数据写入所述存储模块,
其中,所述数据读写模块包括合并请求缓存(Merge Request Buffer,简称MRB)子模块,用于在所述数据读写模块读取离散数据期间,缓存多个读取请求对应的存储地址,以使每个读取请求合并读取到一个或多个离散数据。
根据本公开实施例的数据处理装置可实现向量地址访问(Vector AddressAccess,简称VAA)的功能,能够支持相应的功能指令,例如,数据搬运指令(Gather Load),用于将一组离散地址的内容聚合成连续的数据向量;离散存储指令(Scatter Store),用于将连续的数据向量分散存储到一组离散的地址中;向量扩展指令(Vector Extension),用于根据扩展参数实现一个连续的数据向量的扩展及存储等。本公开对该装置所支持的指令的数量及种类不作限制。
举例来说,解码模块21可从该装置上游的指令分发队列(Issue Queue,简称ISQ)中获取待解码的处理指令,并对该处理指令进行解码(也可称为译码),得到解码后的处理指令。该解码后的处理指令包括操作码及操作域,操作码用于指示该处理指令的处理类型,操作域用于指示待处理的数据及数据参数。
在一种可能的实现方式中,解码模块21可根据操作域确定解码后的处理指令对应的多个数据以及多个数据的数据参数,例如多个数据的源数据基地址、目的数据基地址、离散数据的数据偏移地址及连续数据的数据尺寸(Single Point Data Size)等。其中,多个数据的源数据包括离散数据或连续数据,例如在处理指令为数据搬运指令时,所述多个数据的源数据为离散数据,所述多个数据的目的数据为连续数据;在解码后的处理指令为离散存储指令时,所述多个数据的源数据为连续数据,所述多个数据的目的数据为离散数据。其中,解码模块21可存储待处理的数据的数量(Single Point Data Number)及各个数据的数据参数,并将离散数据的基地址及离散数据的数据偏移地址发送到离散地址确定模块22。
在一种可能的实现方式中,离散地址确定模块22可根据接收到的离散数据的基地址及离散数据的数据偏移地址,确定离散数据的第二存储地址。其中,离散数据的数据偏移地址可包括离散数据的偏移值(Offset)存储在外部存储器(例如RAM)中的偏移值基地址(Offset Vector Base Address)及偏移值宽度(Offset Size)。离散地址确定模块22可根据偏移值基地址及偏移值宽度,通过总线端口共享(BUS PORT SHARE)从外部存储器(例如RAM)读取各个离散数据的偏移值(Offset);进而根据各个离散数据存储在存储模块25中的偏移值基地址以及该偏移值,分别计算出各个离散数据的在存储模块25中的第二存储地址;再将各个离散数据的第二存储地址顺序发送给数据读写模块24。
在一种可能的实现方式中,数据读写模块24可根据离散数据的第二存储地址,从存储模块25读取离散数据,或将离散数据写入存储模块25。例如,在处理指令为数据搬运指令时,数据读写模块24可根据第二存储地址从存储模块25按顺序读取各个离散数据,并将读取到的离散数据发送到连续数据缓存模块23中;在处理指令为离散存储指令时,数据读写模块24可接收连续数据缓存模块23发送的连续数据,并根据离散数据的第二存储地址将接收到的连续数据写入存储模块25中。
在一种可能的实现方式中,数据读写模块可包括合并请求缓存子模块,用于在所述数据读写模块读取离散数据期间,缓存多个读取请求对应的存储地址,以使每个读取请求合并读取到一个或多个离散数据,从而提高数据的读取效率。
在一种可能的实现方式中,存储模块25可以为实现向量地址访问的高速缓存(VAACache,简称VAC),本公开对存储模块25的具体类型不作限制。
在一种可能的实现方式中,解码模块21还用于根据连续数据的基地址及连续数据的数据尺寸,确定连续数据的第一存储地址;并将第一存储地址发送到连续数据缓存模块23,该第一存储地址可为连续数据存储在外部存储器(例如RAM)中的地址。
Single Point Continuous Addr[n]=Continuous Data Base Address+(n-1)*Single Point Data Size(1)
在公式(1)中,Single Point Continuous Addr[n]表示第n个连续数据的数据地址,Continuous Data Base Address表示连续数据的基地址,Single Point Data Size表示连续数据的数据尺寸。在基地址例如为Addr1[0,3],单个数据的尺寸为4位,n为3时,可确定出第3个连续数据的数据地址为Addr1[8,11]。
在一种可能的实现方式中,连续数据缓存模块23可建立连续数据的缓存空间;将所述第一存储地址的连续数据缓存到所述缓存空间并发送到所述数据读写模块,或者将从所述数据读写模块接收到的连续数据缓存到所述缓存空间并发送到第一存储地址。
例如,在处理指令为数据搬运指令时,数据读写模块24将读取到的离散数据发送到连续数据缓存模块23中,连续数据缓存模块23在缓存空间中将离散数据缓存为连续数据,并将缓存的连续数据发送到第一存储地址。在处理指令为离散存储指令时,连续数据缓存模块23可通过总线端口共享(BUS PORT SHARE)从外部存储器(例如RAM)的第一存储地址读取连续数据,将读取到的连续数据缓存到缓存空间,并顺序发送到数据读写模块24,以使数据读写模块24将各个连续数据存储到存储模块25的第二存储地址中,得到离散数据。
根据本公开的实施例,能够解码并执行处理指令,将离散数据搬运到连续的数据地址,或将连续数据存储到离散的多个数据地址,以便于实现离散数据的向量运算以及向量运算后的向量数据还原,从而简化处理过程,减小数据开销。并且,根据本公开的实施例能够在读取离散数据时通过缓存读取请求对应的存储地址,以使每个数据读取请求合并读取到一个或多个离散数据,从而提高数据的读取效率。
图3示出根据本公开一实施例的数据处理装置的框图。如图3所示,在一种可能的实现方式中,离散地址确定模块22包括:
偏移加载子模块(Load Offset Buffer,简称LOB)221,用于根据离散数据的偏移值基地址及偏移值宽度,分别确定各个离散数据的偏移值存储地址,并从各个离散数据的偏移值存储地址读取各个离散数据的偏移值;
离散地址生成子模块(Scatter Addr Generate,简称SAG)222,用于根据离散数据的基地址以及各个离散数据的偏移值,分别确定各个离散数据的第二存储地址,并将所述第二存储地址发送给所述数据读写模块。
举例来说,偏移加载子模块221可缓存解码模块21发送的离散数据的基地址及离散数据的数据偏移地址;根据数据偏移地址中的偏移值基地址及偏移值宽度,通过总线端口共享(BUS PORT SHARE)从外部存储器(例如RAM)读取各个离散数据的偏移值(Offset);缓存读取到的偏移值,并将各个离散数据存储在存储模块25中的基地址及偏移值按顺序发送到离散地址生成子模块222。
在一种可能的实现方式中,离散地址生成子模块222可根据各个离散数据的基地址及偏移值,按顺序计算各个离散数据的第二存储地址。
Single Point Scatter Addr[n] = Scatter Data Base Address + OffsetAddress[n] (2)
在公式(2)中,Single Point Scatter Addr[n]表示第n个离散数据的第二存储地址,Scatter Data Base Address表示离散数据的基地址,Offset Address[n]表示第n个离散数据的偏移值。在基地址例如为Addr2[4],偏移值为[24,27]时,可确定出第n个离散数据的第二存储地址为Addr2[28,31]。
在一种可能的实现方式中,离散地址生成子模块222可将计算得到的离散数据的第二存储地址按顺序发送到数据读写模块24,以便于数据读写模块24读取或写入离散数据。
通过这种方式,可确定出各个离散数据的第二存储地址。
如图3所示,在一种可能的实现方式中,数据读写模块24可包括:
离散地址队列(Scatter Addr Queue,简称SAQ)子模块241,用于接收并存储离散数据的第二存储地址;
存储加载队列(Load Store Queue,简称LSQ)子模块242,用于根据离散数据的第二存储地址,从所述存储模块读取离散数据,将读取到的离散数据发送给所述连续数据缓存模块;或者接收所述连续数据缓存模块的连续数据,根据离散数据的存储地址将接收到的连续数据写入所述存储模块。
举例来说,离散地址队列子模块241可接收并缓存各个离散数据的第二存储地址,形成离散地址队列,并建立各个离散数据与连续数据缓存模块23的缓存空间中的缓存地址的对应关系,以使读取到的离散数据能够相应地放置到缓存空间中。
在一种可能的实现方式中,存储加载队列子模块242可包括多个存储加载队列,例如图3中为4个存储加载队列LSQ_0、LSQ_1、LSQ_2、LSQ_3,以便提高离散数据的读取或写入速度,每个存储加载队列LSQ可例如为先进先出FIFO存储器。离散地址队列子模块241将各个离散数据的第二存储地址按顺序分别发送到各个存储加载队列;在读取离散数据时,各个存储加载队列分别从存储模块读取离散数据,将读取到的离散数据发送到缓存空间中相应的缓存地址;在写入离散数据时,各个存储加载队列分别接收缓存空间中各个缓存地址的连续数据,并将各个连续数据分别写入存储模块中相应的第二存储地址。
通过这种方式,可实现离散数据的读取或写入过程,从而完成相应的处理指令。
在一种可能的实现方式中,如图3所示,数据读写模块24的合并请求缓存子模块243可包括与存储加载队列LSQ_0、LSQ_1、LSQ_2、LSQ_3对应的合并请求缓存MRB_0、MRB_1、MRB_2、MRB_3,分别连接到对应的存储加载队列及存储模块25。其中,合并请求缓存子模块243用于:
在接收到存储加载队列子模块的读取请求时,判断是否缓存有与所述读取请求的目标地址处于同一缓存行的地址;
在未缓存与所述目标地址处于同一缓存行的地址时,缓存所述目标地址,并向所述存储模块发送所述读取请求,其中,所述读取请求用于请求所述存储模块返回所述目标地址所在的目标缓存行的多个数据;
在所述存储模块返回所述目标缓存行的多个数据时,向所述存储加载队列子模块回填一个或多个数据,所述一个或多个数据为已向所述合并请求缓存子模块发送读取请求的数据中,地址在所述目标缓存行的数据。
举例来说,对于任意一个存储加载队列LSQ,对应的合并请求缓存MRB可缓存多个离散数据的地址(例如8个地址)。本领域技术人员可根据实际情况设置每个合并请求缓存MRB这可缓存的地址数量,本公开对此不作限制。
在一种可能的实现方式中,在数据读写模块读取离散数据时,离散数据的第二存储地址被发送到存储加载队列LSQ,存储加载队列LSQ发出读取请求,读取请求中包括待读取的数据的目标地址,存储模块会根据读取请求返回目标地址所在的目标缓存行(CacheLine)的多个数据。
在一种可能的实现方式中,存储加载队列LSQ可将读取请求先发送到合并请求缓存MRB。合并请求缓存MRB在接收到读取请求时,判断自身是否已经缓存有与读取请求的目标地址处于同一缓存行的地址。如果合并请求缓存MRB已缓存有与读取请求的目标地址处于同一缓存行的地址,则存储模块返回该地址的数据时,会返回整个缓存行的数据,也即能够合并返回目标地址的数据,不需要重复发送读取请求。在该情况下,合并请求缓存MRB可不向存储模块发送该读取请求,以便减少请求的次数。
在一种可能的实现方式中,如果合并请求缓存MRB未缓存与所述目标地址处于同一缓存行的地址,则无法合并返回目标地址的数据,需要向存储模块发送所述读取请求。在该情况下,合并请求缓存MRB可缓存所述目标地址,并向所述存储模块发送所述读取请求,以使存储模块根据读取请求返回目标地址所在的目标缓存行的多个数据。
在一种可能的实现方式中,如果合并请求缓存MRB未存满,则可直接缓存所述目标地址;如果合并请求缓存MRB已存满,则可删除MRB中缓存时间最早的地址,并缓存所述目标地址。
在一种可能的实现方式中,在存储模块返回所述目标缓存行的多个数据时,合并请求缓存MRB可向存储加载队列LSQ回填一个或多个数据,从而完成数据读取过程。其中,该一个或多个数据为已向MRB发送读取请求的数据中,地址在所述目标缓存行的数据。也即,至少能够读取到目标地址的数据,还可能读取到同在目标缓存行中的其他数据。
在一种可能的实现方式中,所述合并请求缓存子模块还用于:删除与所述读取请求的目标地址。也就是说,在完成读取请求的目标地址的数据读取过程后,可删除该目标地址,以便释放合并请求缓存MRB的缓存空间。
通过这种方式,可使得每个读取请求合并读取到一个或多个离散数据,在实际应用中,每个读取请求可能读取到两个或两个以上的数据,显著提高了数据的读取效率。
下面对通过数据处理装置执行各种处理指令的过程进行说明。
在一种可能的实现方式中,所述处理指令包括数据搬运指令,在解码后的处理指令为数据搬运指令时,所述多个数据的源数据为离散数据,所述多个数据的目的数据为连续数据,所述源数据基地址为离散数据的基地址,所述目的数据基地址为连续数据的基地址,所述数据读写模块用于:
根据离散数据的存储地址从存储模块读取离散数据;
将读取到的离散数据发送给所述连续数据缓存模块;
所述连续数据缓存模块用于:
将从所述数据读写模块接收到的离散数据缓存到所述缓存空间,得到连续数据;在所述缓存空间中的连续数据达到第一预设数量时,将所述缓存空间中的连续数据发送到外部存储器的第一存储地址。
举例来说,数据搬运指令(Gather Load)用于将一组离散地址的内容聚合成连续的数据向量。当解码模块21解码后的处理指令为数据搬运指令时,源数据为离散数据,目的数据为连续数据。一方面,解码模块21可存储离散数据的数量,将离散数据的基地址及离散数据的数据偏移地址发送到离散地址确定模块22,以使离散地址确定模块22计算各个离散数据的第二存储地址,并按顺序发送到数据读写模块24;另一方面,解码模块21可根据连续数据的基地址及连续数据的数据尺寸,确定连续数据的第一存储地址;并将第一存储地址发送到连续数据缓存模块23。具体处理过程不再重复描述。
在一种可能的实现方式中,数据读写模块24可根据连续数据缓存模块23的顺序可分配的缓存指针,为离散地址队列SAQ中的各个离散数据点分配缓存空间ID(Buffer ID),从而建立各个离散数据的第二存储地址与Buffer ID之间的对应关系。然后,离散地址队列子模块241将各个离散数据的第二存储地址按顺序分别发送到各个存储加载队列,各个存储加载队列分别根据第二存储地址从存储模块25读取各个离散数据,并将读取到的离散数据发送到连续数据缓存模块23的缓存空间中。
在一种可能的实现方式中,连续数据缓存模块23可根据各个离散数据的BufferID,在缓存空间中按顺序缓存各个离散数据,形成连续数据(可称为向量数据)。在缓存空间中的连续数据达到第一预设数量时,通过总线端口共享(BUS PORT SHARE)将所述缓存空间中的连续数据发送到外部存储器的第一存储地址。其中,该第一预设数量可以等于缓存空间可缓存的连续数据的数量,也即在缓存空间存满时,将连续数据发送到外部存储器的第一存储地址;该第一预设数量也可以小于缓存空间可缓存的连续数据的数量,本公开对此不作限制。
在所有离散数据均被发送到第一存储地址的情况下,可得到预设长度的向量数据,数据搬运指令执行完成。进而可通过数据运算指令对向量数据进行进一步的处理,例如两个或两个以上的向量数据之间的四则运算,例如对两个向量数据进行差值运算等。
通过这种方式,可以在图像识别等应用场景中需要对大量离散的成对数据点进行运算的情况下,通过数据搬运指令将离散数据搬运到连续地址空间中聚合为向量数据再进行向量运算,从而将离散的数据点的运算转换为向量运算,简化处理过程,减小数据开销。
在一种可能的实现方式中,所述处理指令包括离散存储指令,在解码后的处理指令为离散存储指令时,所述多个数据的源数据为连续数据,所述多个数据的目的数据为离散数据,所述源数据基地址为连续数据的基地址,所述目的数据基地址为离散数据的基地址,所述连续数据缓存模块用于:
根据从外部存储器的第一存储地址读取连续数据;
将读取到的连续数据缓存到所述缓存空间;
在所述缓存空间中的连续数据达到第二预设数量时,将所述缓存空间中的连续数据发送到所述数据读写模块;
所述数据读写模块用于:
接收所述连续数据缓存模块的连续数据;
根据离散数据的存储地址,将接收到的连续数据写入所述存储模块。
举例来说,离散存储指令(Scatter Store)用于将连续的数据向量分散存储到一组离散的地址中。当解码模块21解码后的处理指令为离散存储指令时,源数据为连续数据,目的数据为离散数据。一方面,解码模块21可存储离散数据的数量,将离散数据的基地址及离散数据的数据偏移地址发送到离散地址确定模块22,以使离散地址确定模块22计算各个离散数据的第二存储地址,并按顺序发送到数据读写模块24;另一方面,解码模块21可根据连续数据的基地址及连续数据的数据尺寸,确定连续数据的第一存储地址;并将第一存储地址发送到连续数据缓存模块23。具体处理过程不再重复描述。
在一种可能的实现方式中,连续数据缓存模块23可建立连续数据的缓存空间;根据连续数据的第一存储地址,通过总线端口共享(BUS PORT SHARE)向外部存储器(例如DRAM或者CT-RAM)发送数据读取请求;并将外部存储器返回的连续数据按顺序回填到缓存空间中。当缓存空间中的连续数据达到第二预设数量时,将所述缓存空间中的连续数据发送到数据读写模块24。其中,该第二预设数量可以等于缓存空间可缓存的连续数据的数量,也即在缓存空间存满时发送连续数据;该第二预设数量也可以小于缓存空间可缓存的连续数据的数量,本公开对此不作限制。
在一种可能的实现方式中,数据读写模块24可根据连续数据缓存模块23的顺序可分配的缓存指针,为离散地址队列SAQ中的各个离散数据点分配缓存空间ID(Buffer ID),从而建立各个离散数据的第二存储地址与Buffer ID(也可称为指数Index索引)之间的对应关系。然后,离散地址队列子模块241将各个离散数据的第二存储地址及Buffer ID按顺序分别发送到各个存储加载队列LSQ。
在一种可能的实现方式中,当存储加载队列LSQ准备向存储模块写入数据时,待写入的离散数据的Buffer ID(也可称为指数索引)处的数据应该已发送(或称为已回填)到存储加载队列LSQ中。在该情况下,存储加载队列LSQ将该离散数据写入到存储模块中相应的第二存储地址。这样,按顺序不断写入离散数据,能够完成所有数据的写入过程。在全部数据写到存储模块后,存储模块25还可以通过总线端口共享(BUS PORT SHARE)将离散数据写入外部存储器(例如DRAM或者CT-RAM)中。
在一种可能的实现方式中,解码模块21可读取存储加载队列LSQ、连续数据缓存模块CDB等的状态信息,以便确定当前指令的执行状态,并确定当前指令是否执行结束。在当前的离散存储指令执行结束后,解码模块21还可发送清除存储(Clean VAC)操作到存储模块(VAC)25中,以便清除存储模块中的数据,开始执行新的一条指令。
通过这种方式,能够通过离散存储指令将向量数据的各个数据离散存储到离散的地址空间中,得到离散的多个数据,从而能够在图像识别等应用场景中对大量离散的成对数据点进行向量运算后,将运算后的向量分散存储为离散的数据点,得到离散的处理结果,从而简化处理过程,减小数据开销。
在一种可能的实现方式中,所述处理指令包括数据搬运指令,在解码后的处理指令为数据搬运指令时,所述多个数据的源数据为离散数据,所述多个数据的目的数据为连续数据,所述源数据基地址为离散数据的基地址,所述目的数据基地址为连续数据的基地址,所述解码模块,还用于:
在解码后的处理指令为数据搬运指令时,确定所述数据搬运指令的搬运模式;
在所述数据搬运指令的搬运模式为多向量搬运模式时,确定所述数据搬运指令的操作域中的多个第一数据的源数据基地址、目的数据基地址及数据偏移地址,以及多个第二数据的偏移步长和目的基地址步长;
根据所述多个第一数据的目的数据基地址及连续数据的数据尺寸,确定所述多个第一数据的第三存储地址;
根据所述多个第一数据的第三存储地址及所述多个第二数据的目的基地址步长,确定所述多个第二数据的第四存储地址;
所述离散地址确定模块,还用于:
根据所述多个第一数据的源数据基地址及数据偏移地址,分别确定所述多个第一数据的第五存储地址;
根据所述多个第一数据的第五存储地址及所述多个第二数据的偏移步长,分别确定所述多个第二数据的第六存储地址;
将所述第五存储地址和所述第六存储地址发送给所述数据读写模块;
所述数据读写模块,还用于:
根据所述第五存储地址和所述第六存储地址从存储模块读取第一数据和第二数据;
将读取到的第一数据和第二数据发送给所述连续数据缓存模块;
所述连续数据缓存模块,还用于:
分别为所述多个第一数据和所述多个第二数据建立缓存空间;
将从所述数据读写模块接收到的第一数据和第二数据分别缓存到所述缓存空间;在所述缓存空间中的第一数据和第二数据达到第三预设数量时,将所述缓存空间中的连续数据发送到外部存储器的所述第三存储地址和所述第四存储地址。
举例来说,可预先设定数据搬运指令的搬运模式包括单向量搬运模式(例如表示为Mode0)、多向量搬运模式(例如表示为Mode1)等。在单向量搬运模式下,数据搬运指令可将多个离散数据点聚合为一个向量数据;在多向量搬运模式下,数据搬运指令可将多个离散数据点聚合为两个或两个以上的向量数据。其中,可根据数据搬运指令的操作域中用于指示搬运模式的字段来确定搬运模式,例如字段Mode0或Mode1,本公开对此不作限制。
当需要搬运成对或成组的离散点进行运算(例如差值运算)的情况下,由于相邻点一般都在一个相同的缓存行(cache line),因此可通过多向量搬运模式实现取一次数据点,得到两个或两个以上的数据点的目的,最终生成两个或两个以上的不同向量,便于进行向量运算产生最终的结果(例如差值向量)。
在一种可能的实现方式中,如果解码后的处理指令为数据搬运指令,则解码模块21可确定该数据搬运指令的搬运模式(例如表示为Gather Load Offset Mode)。如果该数据搬运指令的搬运模式为多向量搬运模式,则解码模块21可确定待搬运的各个数据点的源数据地址和目的数据地址。源数据地址表示多个数据点在数据存储空间中当前的数据存储地址,为离散的多个数据地址;目的数据地址表示多个数据点将要被搬运到的数据存储空间的数据地址,为连续的数据地址。源数据地址所在的数据存储空间与目的数据地址所在的数据存储空间可以相同或不同,本公开对此不作限制。
在一种可能的实现方式中,在多向量搬运模式下,可得到至少两个向量,可设定第一个向量为第一向量数据,其它的向量为第二向量数据(包括至少一个向量数据)。数据搬运指令的操作域中可包括第一向量数据的多个第一数据的源数据基地址(Source DataBase Address)、目的数据基地址(Destination Data Base Address)及数据偏移地址;还包括对应于第二向量数据的多个第二数据的偏移步长(Offset Stride)和目的基地址步长(Destination Base Address Stride)。
一方面,解码模块21可存储离散数据的数量,将多个第一数据的源数据基地址及数据偏移地址、多个第二数据的偏移步长发送到离散地址确定模块22,以使离散地址确定模块22计算各个第一数据在存储模块25中的第五存储地址和各个第二数据在存储模块25中的第六存储地址(也即离散的源地址)。
在一种可能的实现方式中,离散地址确定模块22的偏移加载子模块221可根据各个第一数据的源数据基地址及数据偏移地址(包括偏移值基地址及偏移值宽度),通过总线端口共享(BUS PORT SHARE)从外部存储器(例如RAM)读取各个第一数据的偏移值(Offset),缓存读取到的偏移值,并将各个第一数据存储在存储模块25中的基地址及偏移值按顺序发送到离散地址生成子模块222。
在一种可能的实现方式中,离散地址生成子模块222可根据各个第一数据的基地址及偏移值,按顺序计算各个离散数据的第五存储地址,并按顺序发送到数据读写模块24。在搬运得到两个向量的情况下,对于第n个第一数据(1≤n≤N,N为第一数据的数量),第五存储地址可表示为:
Single Point Src Addr[2n] = Source Data Base Address + OffsetAddress[n] (3)
在公式(3)中,Single Point Src Addr[2n]表示第n个第一数据的第五存储地址,Source Data Base Address表示第一数据的基地址,Offset Address[n]表示第n个第一数据的偏移值。在基地址例如为Addr3[15],偏移值为[24,27]时,可确定出第n个第一数据的第五存储地址为Addr3[39,42]。
在一种可能的实现方式中,在多向量搬运模式下,离散地址生成子模块222可根据偏移步长(Offset Stride)直接在第一数据的第五存储地址的基础上得到对应的第二数据的第六存储地址。
Single Point Src Addr[2n+1]=Source Data Base Address+Offset Address[n]+Offset Stride (4)
在公式(4)中,Single Point Src Addr[2n+1]表示与第n个第一数据对应的第二数据的第六存储地址。例如,在第n个第一数据的第五存储地址为Addr3[39,42],偏移步长为8位的情况下,可确定出第n个第二数据的第六存储地址为Addr3[47,50]。
在一种可能的实现方式中,在需要读取多组第二数据以形成多个第二向量的情况下,偏移步长可以有多个数值,例如偏移步长包括4位、8位、12位等。这样,可根据不同的偏移步长分别确定各组第二数据的第六存储地址。本领域技术人员可根据实际情况设定偏移步长的数量及取值,本公开对此不作限制。
通过这种方式,可根据第一数据的存储地址及偏移步长直接确定对应的第二数据的存储地址,以便通过一次读取得到两个或两个以上的数据点,使得指令可通过较少的地址读取较多的数据(例如通过50个数据点的偏移值基地址读取100个数据点),从而显著减小数据开销。
在一种可能的实现方式中,数据读写模块24的离散地址队列子模块241可接收并缓存第五存储地址和第六存储地址,并建立各个离散数据与连续数据缓存模块23的缓存空间中的缓存地址的对应关系,以使读取到的离散数据能够相应地放置到缓存空间中。例如,根据连续数据缓存模块23的顺序可分配的缓存指针,为离散地址队列SAQ中的各个离散数据点分配缓存空间ID(Buffer ID),从而建立各个离散数据的第二存储地址与Buffer ID之间的对应关系。
在一种可能的实现方式中,离散地址队列子模块241将各个第五存储地址和第六存储地址按顺序分别发送到各个存储加载队列;各个存储加载队列分别从存储模块读取离散的第一数据和第二数据,将读取到的离散数据按顺序发送到缓存空间中相应的缓存地址。
其中,存储加载队列可以先读取第一数据再读取第二数据,也可以同时读取第一数据和第二数据,本公开对此不作限制。
另一方面,解码模块21可根据第一数据的目的数据基地址及数据尺寸、多个第二数据的目的基地址步长,确定各个第一数据在外部存储器中的第三存储地址和各个第二数据在外部存储器中的第四存储地址(也即连续的目的地址);并将第三存储地址和第四存储地址发送到连续数据缓存模块23。
在一种可能的实现方式中,数据搬运指令的操作域中可包括目的数据基地址(Destination Data Base Address)、单个数据的尺寸(Single Point Data Size)、目的基地址步长(Destination Base Address Stride)等。由于目的数据地址为连续的数据地址,因此可直接根据第一数据的数据尺寸以及各个第一数据的序号依次确定各个第一数据的目的数据地址(称为第三存储地址)。在搬运得到两个向量的情况下,第三存储地址可表示为:
Single Point Dest Addr[2n]=Destination Data Base Address+(n-1)*Single Point Data Size (5)
在公式(5)中,Single Point Dest Addr[n]表示第n个第一数据的第三存储地址。在目的数据基地址例如为Addr4[0,3],单个数据的尺寸为4位,n为3时,可确定出第3个第一数据的第三存储地址为Addr4[8,11]。
在多向量搬运模式下,可根据目的基地址步长直接在第一数据的第三存储地址的基础上得到对应的第二数据的第四存储地址。在搬运得到两个向量的情况下,第四存储地址可表示为:
Single Point Dest Addr[2n+1]=Destination Data Base Address+(n-1)*Single Point Data Size+Destination Base Address Stride (6)
在公式(6)中,Single Point Dest Addr[2n+1]表示与第n个第一数据对应的第二数据的第四存储地址。例如,在根据目的数据基地址和数据尺寸确定出第n个第一数据的第三存储地址为Addr4[8,11],目的基地址步长为48位的情况下,可确定出第n个第二数据的第四存储地址为Addr4[56,59]。
在一种可能的实现方式中,在需要读取多组第二数据以形成多个第二向量的情况下,目的基地址步长可以有多个数值,例如目的基地址步长包括48位、96位等,以便分别存储多个向量数据。这样,可根据不同的目的基地址步长分别确定各组第二数据的第四存储地址。本领域技术人员可根据实际情况设定目的基地址步长的数量及取值,本公开对此不作限制。
通过这种方式,可根据第一数据的目的数据地址及目的基地址步长直接确定对应的第二数据的目的数据地址,以便存储两个或两个以上向量数据的各个数据,显著减小数据开销。
在一种可能的实现方式中,连续数据缓存模块23可分别为所述多个第一数据和所述多个第二数据建立缓存空间;在从所述数据读写模块接收到第一数据和第二数据时,可根据各个第一数据和各个第二数据的Buffer ID,在缓存空间中按顺序缓存各个第一数据和各个第二数据,形成连续的向量数据。在所述缓存空间中的第一数据和第二数据达到第三预设数量时,将所述缓存空间中的连续数据发送到外部存储器的所述第三存储地址和所述第四存储地址。其中,该第三预设数量可以等于缓存空间可缓存的连续数据的数量,也即在缓存空间存满时,将连续数据发送到外部存储器的第三存储地址和第四存储地址;该第三预设数量也可以小于缓存空间可缓存的连续数据的数量,本公开对此不作限制。
这样,依次对各个第一数据和各个第二数据进行搬运,得到第三存储地址中的N个连续的第一数据以及第四存储地址中存储的N个连续的第二数据,实现了离散的第一数据和第二数据聚合为第一向量数据和第二向量数据的过程,从而实现数据搬运,为后续的处理提供数据基础。
在一种可能的实现方式中,完成多向量的数据搬运后,可通过数据运算指令对多个向量数据进行进一步的处理,例如两个或两个以上的向量数据之间的四则运算,例如对两个向量数据进行差值运算等。
通过这种方式,能够通过多向量搬运模式的数据搬运指令将离散的成对或成组数据搬运到多个连续地址空间中,分别聚合为多个向量数据,从而能够在图像识别等应用场景中需要对大量离散的成对(或成组)数据点进行运算的情况下,通过一条指令直接获取参与运算的多个向量数据,并将离散数据点的运算转换为向量运算,从而简化处理过程,减小数据开销。
在一种可能的实现方式中,所述处理指令包括向量扩展指令,在解码后的处理指令为向量扩展指令时,所述多个数据的源数据为连续数据,所述多个数据的目的数据为连续数据,所述源数据基地址为连续数据的基地址,所述目的数据基地址为连续数据的基地址,所述解码模块,还用于:
在解码后的处理指令为向量扩展指令时,确定所述向量扩展指令的操作域中的多个第三数据的源数据基地址、多个第四数据的目的数据基地址、数据尺寸及扩展参数;
根据所述多个第三数据的源数据基地址及数据尺寸,确定所述多个第三数据的第七存储地址,并将所述第七存储地址发送到所述连续数据缓存模块;
所述连续数据缓存模块,还用于:
分别为所述多个第三数据和所述多个第四数据建立缓存空间;
根据所述第七存储地址,从外部存储器读取所述多个第三数据并缓存到所述缓存空间;
在所述缓存空间中的第三数据达到第四预设数量时,将缓存的多个第三数据发送到所述解码模块;
所述解码模块,还用于:
根据来自所述连续数据缓存模块的多个第三数据及所述扩展参数,对所述多个第三数据进行扩展,得到多个第四数据;
根据所述多个第四数据的目的数据基地址及数据尺寸,确定所述多个第四数据的第八存储地址,并将所述多个第四数据及所述第八存储地址发送到所述连续数据缓存模块;
所述连续数据缓存模块,还用于:
将所述多个第四数据缓存到所述缓存空间;
在所述缓存空间中的第四数据达到第五预设数量时,将缓存的多个第四数据发送到所述外部存储器的第八存储地址。
举例来说,向量扩展指令(Vector Extension)用于根据扩展参数实现一个连续的数据向量的扩展及存储。当解码模块21解码后的处理指令为向量扩展指令时,源数据(可称为第三数据)和目的数据(可称为第四数据)均为连续数据。在该情况下,可确定向量扩展指令的操作域中的多个第三数据的源数据基地址、多个第四数据的目的数据基地址、数据尺寸及扩展参数。
在一种可能的实现方式中,解码模块21可根据所述多个第三数据的源数据基地址及数据尺寸,确定多个第三数据的在外部存储器中的第七存储地址,并将所述第七存储地址发送到所述连续数据缓存模块。
在一种可能的实现方式中,连续数据缓存模块23可分别为所述多个第三数据和所述多个第四数据建立缓存空间。并且,连续数据缓存模块23可根据第七存储地址,从外部存储器读取多个第三数据并缓存到缓存空间;在所述缓存空间中的第三数据达到第四预设数量时,将缓存的多个第三数据发送到所述解码模块。其中,该第四预设数量可以等于缓存空间可缓存的连续数据的数量,也即在缓存空间存满时,将连续数据发送到解码模块;该第四预设数量也可以小于缓存空间可缓存的连续数据的数量,本公开对此不作限制。
在一种可能的实现方式中,解码模块21可根据来自连续数据缓存模块23的多个第三数据及所述扩展参数,对所述多个第三数据进行扩展,得到多个第四数据。
在一种可能的实现方式中,所述第三数据为M个,所述扩展参数包括与M个第三数据对应的M个扩展参数位,M为大于1的整数,
所述根据来自所述连续数据缓存模块的多个第三数据及所述扩展参数,对所述多个第三数据进行扩展,得到多个第四数据,包括:
根据第m个第三数据以及与所述第m个第三数据对应的第m个扩展参数位,确定第m个数据位置的km个数据,1≤m≤M,km≥0;
根据M个数据位置的数据,得到所述多个第四数据。
举例来说,扩展参数可包括M个扩展参数位,分别表示M个第三数据的复制次数km,例如M=5时,扩展参数可表示为[1,2,0,3,1],表示对5个第三数据分别复制1次、2次、0次、3次、1次。
在一种可能的实现方式中,对于第m个第三数据(1≤m≤M),该第m个第三数据对应的第m个扩展参数位为km(km≥0),则可确定第m个数据位置具有km个的第m个第三数据。这样,分别对M个第三数据进行扩展处理,可确定M个数据位置的数据。例如,M个第三数据[A,B,C,D,E],扩展参数为[1,2,0,3,1],经扩展后,得到的多个第四数据为[A,B,B,D,D,D,E],构成一个新的向量数据。其中,第四数据的数量可与第三数据的数量不同。
应当理解,扩展参数还可以包括其他扩展内容(例如将各个数据点的值放大或缩小一定的倍数),并且扩展参数还可以包括其他表示方式,本领域技术人员可根据实际情况设置,本公开对此不作限制。
在一种可能的实现方式中,解码模块21可根据所述多个第四数据的目的数据基地址及数据尺寸,确定所述多个第四数据的第八存储地址,并将所述多个第四数据及所述第八存储地址发送到所述连续数据缓存模块。
在一种可能的实现方式中,连续数据缓存模块23可将所述多个第四数据缓存到所述缓存空间;在所述缓存空间中的第四数据达到第五预设数量时,将缓存的多个第四数据发送到所述外部存储器的第八存储地址。其中,该第五预设数量可以等于缓存空间可缓存的连续数据的数量,也即在缓存空间存满时,将连续数据发送到外部存储器;该第五预设数量也可以小于缓存空间可缓存的连续数据的数量,本公开对此不作限制。
通过这种方式,能够通过向量扩展指令对向量进行扩展,从而能够在图像识别等应用场景中需要对向量数据进行扩展处理时,将原向量扩展为新的向量并存储到连续地址空间,从而简化处理过程,减小数据开销。
需要说明的是,对于前述的各装置实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic RandomAccess Memory)、静态随机存取存储器SRAM(StaticRandom-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在一种可能的实现方式中,还公开了一种人工智能芯片,其包括了上述数据处理装置。
在一种可能的实现方式中,还公开了一种电子设备,改电子设备包括上述的人工智能芯片。
在一种可能的实现方式中,还公开了一种板卡,其包括存储器件、接口装置和控制器件以及上述人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;所述控制器件,用于对所述人工智能芯片的状态进行监控。
图4示出根据本公开实施例的板卡的结构框图,参阅图4,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与所述人工智能芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述人工智能芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述人工智能芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述人工智能芯片电连接。所述接口装置用于实现所述人工智能芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述人工智能芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述人工智能芯片电连接。所述控制器件用于对所述人工智能芯片的状态进行监控。具体的,所述人工智能芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述人工智能芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述人工智能芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述人工智能芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一种可能的实现方式中,公开了一种电子设备,其包括了上述人工智能芯片。电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
依据以下条款可更好地理解前述内容:
A1.一种数据处理装置,所述装置包括解码模块、离散地址确定模块、连续数据缓存模块、数据读写模块及存储模块,
所述解码模块,用于对接收到的处理指令进行解码,得到解码后的处理指令;确定所述处理指令对应的多个数据,以及所述多个数据的源数据基地址、目的数据基地址、离散数据的数据偏移地址及连续数据的数据尺寸,所述多个数据的源数据包括离散数据或连续数据;所述解码模块还用于根据连续数据的基地址及连续数据的数据尺寸,确定连续数据的第一存储地址;
所述离散地址确定模块,连接到所述解码模块和所述数据读写模块,用于根据离散数据的基地址及离散数据的数据偏移地址,确定离散数据的第二存储地址;将所述第二存储地址发送给所述数据读写模块;
所述连续数据缓存模块,连接到所述解码模块和所述数据读写模块,用于建立连续数据的缓存空间;将所述第一存储地址的连续数据缓存到所述缓存空间并发送到所述数据读写模块,或者将从所述数据读写模块接收到的连续数据缓存到所述缓存空间并发送到第一存储地址;
所述数据读写模块,连接到所述存储模块,用于根据离散数据的第二存储地址从所述存储模块读取离散数据,将读取到的离散数据发送给所述连续数据缓存模块;或者接收所述连续数据缓存模块的连续数据,根据离散数据的存储地址将接收到的连续数据写入所述存储模块,
其中,所述数据读写模块包括合并请求缓存子模块,用于在所述数据读写模块读取离散数据期间,缓存多个读取请求对应的存储地址,以使每个读取请求合并读取到一个或多个离散数据。
A2.根据A1所述的装置,所述数据偏移地址包括偏移值基地址及偏移值宽度,所述离散地址确定模块包括:
偏移加载子模块,用于根据离散数据的偏移值基地址及偏移值宽度,分别确定各个离散数据的偏移值存储地址,并从各个离散数据的偏移值存储地址读取各个离散数据的偏移值;
离散地址生成子模块,用于根据离散数据的基地址以及各个离散数据的偏移值,分别确定各个离散数据的第二存储地址,并将所述第二存储地址发送给所述数据读写模块。
A3.根据A1或A2所述的装置,所述数据读写模块包括:
离散地址队列子模块,用于接收并存储离散数据的第二存储地址;
存储加载队列子模块,用于根据离散数据的第二存储地址,从所述存储模块读取离散数据,将读取到的离散数据发送给所述连续数据缓存模块;或者接收所述连续数据缓存模块的连续数据,根据离散数据的存储地址将接收到的连续数据写入所述存储模块。
A4.根据A3所述的装置,所述合并请求缓存子模块连接到所述存储加载队列子模块及所述存储模块,所述合并请求缓存子模块用于:
在接收到存储加载队列子模块的读取请求时,判断是否缓存有与所述读取请求的目标地址处于同一缓存行的地址;
在未缓存与所述目标地址处于同一缓存行的地址时,缓存所述目标地址,并向所述存储模块发送所述读取请求,其中,所述读取请求用于请求所述存储模块返回所述目标地址所在的目标缓存行的多个数据;
在所述存储模块返回所述目标缓存行的多个数据时,向所述存储加载队列子模块回填一个或多个数据,所述一个或多个数据为已向所述合并请求缓存子模块发送读取请求的数据中,地址在所述目标缓存行的数据。
A5.根据A4所述的装置,所述合并请求缓存子模块还用于:
删除与所述读取请求的目标地址。
A6.根据A1-A5中任意一项所述的装置,所述处理指令包括数据搬运指令,在解码后的处理指令为数据搬运指令时,所述多个数据的源数据为离散数据,所述多个数据的目的数据为连续数据,所述源数据基地址为离散数据的基地址,所述目的数据基地址为连续数据的基地址,
所述数据读写模块用于:
根据离散数据的存储地址从存储模块读取离散数据;
将读取到的离散数据发送给所述连续数据缓存模块;
所述连续数据缓存模块用于:
将从所述数据读写模块接收到的离散数据缓存到所述缓存空间,得到连续数据;
在所述缓存空间中的连续数据达到第一预设数量时,将所述缓存空间中的连续数据发送到外部存储器的第一存储地址。
A7.根据A1-A5中任意一项所述的装置,所述处理指令包括离散存储指令,在解码后的处理指令为离散存储指令时,所述多个数据的源数据为连续数据,所述多个数据的目的数据为离散数据,所述源数据基地址为连续数据的基地址,所述目的数据基地址为离散数据的基地址,
所述连续数据缓存模块用于:
根据从外部存储器的第一存储地址读取连续数据;
将读取到的连续数据缓存到所述缓存空间;
在所述缓存空间中的连续数据达到第二预设数量时,将所述缓存空间中的连续数据发送到所述数据读写模块;
所述数据读写模块用于:
接收所述连续数据缓存模块的连续数据;
根据离散数据的存储地址,将接收到的连续数据写入所述存储模块。
A8.根据A1-A5中任意一项所述装置,所述处理指令包括数据搬运指令,在解码后的处理指令为数据搬运指令时,所述多个数据的源数据为离散数据,所述多个数据的目的数据为连续数据,所述源数据基地址为离散数据的基地址,所述目的数据基地址为连续数据的基地址,
所述解码模块,还用于:
在解码后的处理指令为数据搬运指令时,确定所述数据搬运指令的搬运模式;
在所述数据搬运指令的搬运模式为多向量搬运模式时,确定所述数据搬运指令的操作域中的多个第一数据的源数据基地址、目的数据基地址及数据偏移地址,以及多个第二数据的偏移步长和目的基地址步长;
根据所述多个第一数据的目的数据基地址及连续数据的数据尺寸,确定所述多个第一数据的第三存储地址;
根据所述多个第一数据的第三存储地址及所述多个第二数据的目的基地址步长,确定所述多个第二数据的第四存储地址;
所述离散地址确定模块,还用于:
根据所述多个第一数据的源数据基地址及数据偏移地址,分别确定所述多个第一数据的第五存储地址;
根据所述多个第一数据的第五存储地址及所述多个第二数据的偏移步长,分别确定所述多个第二数据的第六存储地址;
将所述第五存储地址和所述第六存储地址发送给所述数据读写模块;
所述数据读写模块,还用于:
根据所述第五存储地址和所述第六存储地址从存储模块读取第一数据和第二数据;
将读取到的第一数据和第二数据发送给所述连续数据缓存模块;
所述连续数据缓存模块,还用于:
分别为所述多个第一数据和所述多个第二数据建立缓存空间;
将从所述数据读写模块接收到的第一数据和第二数据分别缓存到所述缓存空间;在所述缓存空间中的第一数据和第二数据达到第三预设数量时,将所述缓存空间中的连续数据发送到外部存储器的所述第三存储地址和所述第四存储地址。
A9.根据A1-A5中任意一项所述的装置,所述处理指令包括向量扩展指令,在解码后的处理指令为向量扩展指令时,所述多个数据的源数据为连续数据,所述多个数据的目的数据为连续数据,所述源数据基地址为连续数据的基地址,所述目的数据基地址为连续数据的基地址,
所述解码模块,还用于:
在解码后的处理指令为向量扩展指令时,确定所述向量扩展指令的操作域中的多个第三数据的源数据基地址、多个第四数据的目的数据基地址、数据尺寸及扩展参数;
根据所述多个第三数据的源数据基地址及数据尺寸,确定所述多个第三数据的第七存储地址,并将所述第七存储地址发送到所述连续数据缓存模块;
所述连续数据缓存模块,还用于:
分别为所述多个第三数据和所述多个第四数据建立缓存空间;
根据所述第七存储地址,从外部存储器读取所述多个第三数据并缓存到所述缓存空间;
在所述缓存空间中的第三数据达到第四预设数量时,将缓存的多个第三数据发送到所述解码模块;
所述解码模块,还用于:
根据来自所述连续数据缓存模块的多个第三数据及所述扩展参数,对所述多个第三数据进行扩展,得到多个第四数据;
根据所述多个第四数据的目的数据基地址及数据尺寸,确定所述多个第四数据的第八存储地址,并将所述多个第四数据及所述第八存储地址发送到所述连续数据缓存模块;
所述连续数据缓存模块,还用于:
将所述多个第四数据缓存到所述缓存空间;
在所述缓存空间中的第四数据达到第五预设数量时,将缓存的多个第四数据发送到所述外部存储器的第八存储地址。
A10.根据A9所述的装置,所述第三数据为M个,所述扩展参数包括与M个第三数据对应的M个扩展参数位,M为大于1的整数,
所述根据来自所述连续数据缓存模块的多个第三数据及所述扩展参数,对所述多个第三数据进行扩展,得到多个第四数据,包括:
根据第m个第三数据以及与所述第m个第三数据对应的第m个扩展参数位,确定第m个数据位置的km个数据,1≤m≤M,km≥0;
根据M个数据位置的数据,得到所述多个第四数据。
A11、一种人工智能芯片,所述芯片包括如A1-A10中任意一项所述的数据处理装置。
A12、一种电子设备,所述电子设备包括如A11所述的人工智能芯片。
A13、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如A11所述的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变或变形之处,都属于本公开保护的范围。综上所述,本说明书内容不应理解为对本公开的限制。

Claims (13)

1.一种数据处理装置,其特征在于,所述装置包括解码模块、离散地址确定模块、连续数据缓存模块、数据读写模块及存储模块,
所述解码模块,用于对接收到的处理指令进行解码,得到解码后的处理指令;确定所述处理指令对应的多个数据,以及所述多个数据的源数据基地址、目的数据基地址、离散数据的数据偏移地址及连续数据的数据尺寸,所述多个数据的源数据包括离散数据或连续数据;所述解码模块还用于根据连续数据的基地址及连续数据的数据尺寸,确定连续数据的第一存储地址;
所述离散地址确定模块,连接到所述解码模块和所述数据读写模块,用于根据离散数据的基地址及离散数据的数据偏移地址,确定离散数据的第二存储地址;将所述第二存储地址发送给所述数据读写模块;
所述连续数据缓存模块,连接到所述解码模块和所述数据读写模块,用于建立连续数据的缓存空间;将所述第一存储地址的连续数据缓存到所述缓存空间并发送到所述数据读写模块,或者将从所述数据读写模块接收到的连续数据缓存到所述缓存空间并发送到第一存储地址;
所述数据读写模块,连接到所述存储模块,用于根据离散数据的第二存储地址从所述存储模块读取离散数据,将读取到的离散数据发送给所述连续数据缓存模块;或者接收所述连续数据缓存模块的连续数据,根据离散数据的存储地址将接收到的连续数据写入所述存储模块,
其中,所述数据读写模块包括合并请求缓存子模块,用于在所述数据读写模块读取离散数据期间,缓存多个读取请求对应的存储地址,以使每个读取请求合并读取到一个或多个离散数据。
2.根据权利要求1所述的装置,其特征在于,所述数据偏移地址包括偏移值基地址及偏移值宽度,所述离散地址确定模块包括:
偏移加载子模块,用于根据离散数据的偏移值基地址及偏移值宽度,分别确定各个离散数据的偏移值存储地址,并从各个离散数据的偏移值存储地址读取各个离散数据的偏移值;
离散地址生成子模块,用于根据离散数据的基地址以及各个离散数据的偏移值,分别确定各个离散数据的第二存储地址,并将所述第二存储地址发送给所述数据读写模块。
3.根据权利要求1或2所述的装置,其特征在于,所述数据读写模块包括:
离散地址队列子模块,用于接收并存储离散数据的第二存储地址;
存储加载队列子模块,用于根据离散数据的第二存储地址,从所述存储模块读取离散数据,将读取到的离散数据发送给所述连续数据缓存模块;或者接收所述连续数据缓存模块的连续数据,根据离散数据的存储地址将接收到的连续数据写入所述存储模块。
4.根据权利要求3所述的装置,其特征在于,所述合并请求缓存子模块连接到所述存储加载队列子模块及所述存储模块,所述合并请求缓存子模块用于:
在接收到存储加载队列子模块的读取请求时,判断是否缓存有与所述读取请求的目标地址处于同一缓存行的地址;
在未缓存与所述目标地址处于同一缓存行的地址时,缓存所述目标地址,并向所述存储模块发送所述读取请求,其中,所述读取请求用于请求所述存储模块返回所述目标地址所在的目标缓存行的多个数据;
在所述存储模块返回所述目标缓存行的多个数据时,向所述存储加载队列子模块回填一个或多个数据,所述一个或多个数据为已向所述合并请求缓存子模块发送读取请求的数据中,地址在所述目标缓存行的数据。
5.根据权利要求4所述的装置,其特征在于,所述合并请求缓存子模块还用于:
删除与所述读取请求的目标地址。
6.根据权利要求1-5中任意一项所述的装置,其特征在于,所述处理指令包括数据搬运指令,在解码后的处理指令为数据搬运指令时,所述多个数据的源数据为离散数据,所述多个数据的目的数据为连续数据,所述源数据基地址为离散数据的基地址,所述目的数据基地址为连续数据的基地址,
所述数据读写模块用于:
根据离散数据的存储地址从存储模块读取离散数据;
将读取到的离散数据发送给所述连续数据缓存模块;
所述连续数据缓存模块用于:
将从所述数据读写模块接收到的离散数据缓存到所述缓存空间,得到连续数据;
在所述缓存空间中的连续数据达到第一预设数量时,将所述缓存空间中的连续数据发送到外部存储器的第一存储地址。
7.根据权利要求1-5中任意一项所述的装置,其特征在于,所述处理指令包括离散存储指令,在解码后的处理指令为离散存储指令时,所述多个数据的源数据为连续数据,所述多个数据的目的数据为离散数据,所述源数据基地址为连续数据的基地址,所述目的数据基地址为离散数据的基地址,
所述连续数据缓存模块用于:
根据从外部存储器的第一存储地址读取连续数据;
将读取到的连续数据缓存到所述缓存空间;
在所述缓存空间中的连续数据达到第二预设数量时,将所述缓存空间中的连续数据发送到所述数据读写模块;
所述数据读写模块用于:
接收所述连续数据缓存模块的连续数据;
根据离散数据的存储地址,将接收到的连续数据写入所述存储模块。
8.根据权利要求1-5中任意一项所述的装置,其特征在于,所述处理指令包括数据搬运指令,在解码后的处理指令为数据搬运指令时,所述多个数据的源数据为离散数据,所述多个数据的目的数据为连续数据,所述源数据基地址为离散数据的基地址,所述目的数据基地址为连续数据的基地址,
所述解码模块,还用于:
在解码后的处理指令为数据搬运指令时,确定所述数据搬运指令的搬运模式;
在所述数据搬运指令的搬运模式为多向量搬运模式时,确定所述数据搬运指令的操作域中的多个第一数据的源数据基地址、目的数据基地址及数据偏移地址,以及多个第二数据的偏移步长和目的基地址步长;
根据所述多个第一数据的目的数据基地址及连续数据的数据尺寸,确定所述多个第一数据的第三存储地址;
根据所述多个第一数据的第三存储地址及所述多个第二数据的目的基地址步长,确定所述多个第二数据的第四存储地址;
所述离散地址确定模块,还用于:
根据所述多个第一数据的源数据基地址及数据偏移地址,分别确定所述多个第一数据的第五存储地址;
根据所述多个第一数据的第五存储地址及所述多个第二数据的偏移步长,分别确定所述多个第二数据的第六存储地址;
将所述第五存储地址和所述第六存储地址发送给所述数据读写模块;
所述数据读写模块,还用于:
根据所述第五存储地址和所述第六存储地址从存储模块读取第一数据和第二数据;
将读取到的第一数据和第二数据发送给所述连续数据缓存模块;所述连续数据缓存模块,还用于:
分别为所述多个第一数据和所述多个第二数据建立缓存空间;
将从所述数据读写模块接收到的第一数据和第二数据分别缓存到所述缓存空间;
在所述缓存空间中的第一数据和第二数据达到第三预设数量时,将所述缓存空间中的连续数据发送到外部存储器的所述第三存储地址和所述第四存储地址。
9.根据权利要求1-5中任意一项所述的装置,其特征在于,所述处理指令包括向量扩展指令,在解码后的处理指令为向量扩展指令时,所述多个数据的源数据为连续数据,所述多个数据的目的数据为连续数据,所述源数据基地址为连续数据的基地址,所述目的数据基地址为连续数据的基地址,
所述解码模块,还用于:
在解码后的处理指令为向量扩展指令时,确定所述向量扩展指令的操作域中的多个第三数据的源数据基地址、多个第四数据的目的数据基地址、数据尺寸及扩展参数;
根据所述多个第三数据的源数据基地址及数据尺寸,确定所述多个第三数据的第七存储地址,并将所述第七存储地址发送到所述连续数据缓存模块;
所述连续数据缓存模块,还用于:
分别为所述多个第三数据和所述多个第四数据建立缓存空间;
根据所述第七存储地址,从外部存储器读取所述多个第三数据并缓存到所述缓存空间;
在所述缓存空间中的第三数据达到第四预设数量时,将缓存的多个第三数据发送到所述解码模块;
所述解码模块,还用于:
根据来自所述连续数据缓存模块的多个第三数据及所述扩展参数,对所述多个第三数据进行扩展,得到多个第四数据;
根据所述多个第四数据的目的数据基地址及数据尺寸,确定所述多个第四数据的第八存储地址,并将所述多个第四数据及所述第八存储地址发送到所述连续数据缓存模块;
所述连续数据缓存模块,还用于:
将所述多个第四数据缓存到所述缓存空间;
在所述缓存空间中的第四数据达到第五预设数量时,将缓存的多个第四数据发送到所述外部存储器的第八存储地址。
10.根据权利要求9所述的装置,其特征在于,所述第三数据为M个,所述扩展参数包括与M个第三数据对应的M个扩展参数位,M为大于1的整数,
所述根据来自所述连续数据缓存模块的多个第三数据及所述扩展参数,对所述多个第三数据进行扩展,得到多个第四数据,包括:
根据第m个第三数据以及与所述第m个第三数据对应的第m个扩展参数位,确定第m个数据位置的km个数据,1≤m≤M,km≥0;
根据M个数据位置的数据,得到所述多个第四数据。
11.一种人工智能芯片,其特征在于,所述芯片包括如权利要求1-10中任意一项所述的数据处理装置。
12.一种电子设备,其特征在于,所述电子设备包括如权利要求11所述的人工智能芯片。
13.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求11所述的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
所述控制器件,用于对所述人工智能芯片的状态进行监控。
CN202010382526.6A 2020-05-08 2020-05-08 数据处理装置以及相关产品 Active CN113626080B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010382526.6A CN113626080B (zh) 2020-05-08 2020-05-08 数据处理装置以及相关产品
PCT/CN2021/090623 WO2021223639A1 (zh) 2020-05-08 2021-04-28 数据处理装置以及相关产品
US17/619,760 US20230214327A1 (en) 2020-05-08 2021-04-28 Data processing device and related product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010382526.6A CN113626080B (zh) 2020-05-08 2020-05-08 数据处理装置以及相关产品

Publications (2)

Publication Number Publication Date
CN113626080A CN113626080A (zh) 2021-11-09
CN113626080B true CN113626080B (zh) 2023-10-03

Family

ID=78377235

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010382526.6A Active CN113626080B (zh) 2020-05-08 2020-05-08 数据处理装置以及相关产品

Country Status (3)

Country Link
US (1) US20230214327A1 (zh)
CN (1) CN113626080B (zh)
WO (1) WO2021223639A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117827285A (zh) * 2024-03-04 2024-04-05 芯来智融半导体科技(上海)有限公司 向量处理器访存指令缓存方法、系统、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107301454A (zh) * 2016-04-15 2017-10-27 北京中科寒武纪科技有限公司 支持离散数据表示的人工神经网络反向训练装置和方法
CN109104876A (zh) * 2017-04-20 2018-12-28 上海寒武纪信息科技有限公司 一种运算装置及相关产品
CN109711539A (zh) * 2018-12-17 2019-05-03 北京中科寒武纪科技有限公司 运算方法、装置及相关产品
CN110647722A (zh) * 2019-09-20 2020-01-03 北京中科寒武纪科技有限公司 数据处理方法及装置以及相关产品

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015011570A (ja) * 2013-06-28 2015-01-19 株式会社東芝 記憶装置、電子機器、記憶装置の制御方法、記憶装置の制御プログラム
GB2543303B (en) * 2015-10-14 2017-12-27 Advanced Risc Mach Ltd Vector data transfer instruction
WO2017177442A1 (zh) * 2016-04-15 2017-10-19 北京中科寒武纪科技有限公司 支持离散数据表示的人工神经网络正向运算装置和方法
CN107301453B (zh) * 2016-04-15 2021-04-20 中科寒武纪科技股份有限公司 支持离散数据表示的人工神经网络正向运算装置和方法
CN107729990B (zh) * 2017-07-20 2021-06-08 上海寒武纪信息科技有限公司 支持离散数据表示的用于执行正向运算的装置及方法
CN107833176A (zh) * 2017-10-30 2018-03-23 上海寒武纪信息科技有限公司 一种信息处理方法及相关产品
CN111047022B (zh) * 2018-10-12 2023-11-24 中科寒武纪科技股份有限公司 一种计算装置及相关产品

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107301454A (zh) * 2016-04-15 2017-10-27 北京中科寒武纪科技有限公司 支持离散数据表示的人工神经网络反向训练装置和方法
CN109104876A (zh) * 2017-04-20 2018-12-28 上海寒武纪信息科技有限公司 一种运算装置及相关产品
CN109711539A (zh) * 2018-12-17 2019-05-03 北京中科寒武纪科技有限公司 运算方法、装置及相关产品
CN110647722A (zh) * 2019-09-20 2020-01-03 北京中科寒武纪科技有限公司 数据处理方法及装置以及相关产品

Also Published As

Publication number Publication date
WO2021223639A1 (zh) 2021-11-11
CN113626080A (zh) 2021-11-09
US20230214327A1 (en) 2023-07-06

Similar Documents

Publication Publication Date Title
CN113626080B (zh) 数据处理装置以及相关产品
CN112347186B (zh) 数据同步方法及装置以及相关产品
CN113033785A (zh) 芯片、神经网络训练系统、内存管理方法及装置、设备
CN111260043B (zh) 数据选择器、数据处理方法、芯片及电子设备
CN113626083B (zh) 数据处理装置以及相关产品
WO2021223642A1 (zh) 数据处理方法及装置以及相关产品
CN111382847B (zh) 数据处理装置及相关产品
CN111260042B (zh) 数据选择器、数据处理方法、芯片及电子设备
WO2021018313A1 (zh) 数据同步方法及装置以及相关产品
WO2021223645A1 (zh) 数据处理方法及装置以及相关产品
WO2021223644A1 (zh) 数据处理方法及装置以及相关产品
WO2021223638A1 (zh) 数据处理方法及装置以及相关产品
CN112347027A (zh) 数据同步方法及装置以及相关产品
CN112232498B (zh) 一种数据处理装置、集成电路芯片、电子设备、板卡和方法
CN111340229B (zh) 数据选择器、数据处理方法、芯片及电子设备
CN111382855B (zh) 数据处理装置、方法、芯片及电子设备
CN112347026B (zh) 数据同步方法及装置以及相关产品
CN112306949B (zh) 数据处理方法及装置以及相关产品
CN111384944B (zh) 全加器、半加器、数据处理方法、芯片及电子设备
CN113296736A (zh) 基于随机数的数据处理方法、随机数生成方法及装置
KR920008212B1 (ko) MSCM(Mixed Shuffle Connection Method)을 이용한 이차원 FFT(Fast Fourier Transform)프로세서.
CN111124996A (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
CB03 Change of inventor or designer information

Inventor after: Request for anonymity

Inventor before: Request for anonymity

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant