CN111966610A - 数据传输方法、处理芯片和计算机设备 - Google Patents
数据传输方法、处理芯片和计算机设备 Download PDFInfo
- Publication number
- CN111966610A CN111966610A CN202010924396.4A CN202010924396A CN111966610A CN 111966610 A CN111966610 A CN 111966610A CN 202010924396 A CN202010924396 A CN 202010924396A CN 111966610 A CN111966610 A CN 111966610A
- Authority
- CN
- China
- Prior art keywords
- data
- internal buffer
- command
- length
- data length
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 42
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000005540 biological transmission Effects 0.000 title claims abstract description 27
- 239000000872 buffer Substances 0.000 claims abstract description 157
- 230000004044 response Effects 0.000 claims description 21
- 238000013528 artificial neural network Methods 0.000 claims description 3
- 238000013500 data storage Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000000875 corresponding effect Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000002596 correlated effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Information Transfer Systems (AREA)
- Bus Control (AREA)
Abstract
本申请涉及一种数据传输方法、处理芯片和计算机设备,属于芯片技术领域。处理芯片包括:NPU、互联总线和外部存储器,NPU包括:命令生成模块,第一内部缓存器和第二内部缓存器;互联总线分别与命令生成模块、第一内部缓存器、第二内部缓存器和外部存储器电性连接;命令生成模块用于将第一数据读取命令中的第一数据长度修改为第二数据长度,第二数据长度大于第一数据长度;外部存储器用于基于修改得到的第二数据读取命令返回第一数据;第一内部缓存器用于存储第一数据;第二内部缓存器用于存储第一数据中的第二数据。本申请能够在不影响第二内部缓存器正常处理数据的情况下,通过第一内部缓存器存储较多的数据,提高了NPU的数据存储量。
Description
技术领域
本申请实施例涉及芯片技术领域,特别涉及一种数据传输方法、处理芯片和计算机设备。
背景技术
神经网络处理器(Neural-network Processing Unit,NPU)是计算机设备中用于进行数据处理的重要组件;并且,NPU擅长处理视频、图像等海量多媒体数据。NPU在对数据进行处理时,需要通过系统总线,将外部存储器的部分数据写入NPU的内部缓存器。
相关技术中,NPU被中央处理器(Central Processing Unit,CPU)控制进行数据的传输;例如,CPU向NPU发送读指令,该读指令携带源数据地址。NPU根据该源数据地址,通过系统总线从外部存储器中读取数据,将读取的数据写入NPU的内部缓存器。
发明内容
本申请实施例提供了一种数据传输方法、处理芯片和计算机设备,能够提高NPU的传输带宽以及传输效率。所述技术方案如下:
一方面,提供了一种神经网络处理器处理芯片,所述处理芯片包括:NPU、互联总线和外部存储器,所述NPU包括:命令生成模块,第一内部缓存器和第二内部缓存器;
所述互联总线分别与所述命令生成模块、所述第一内部缓存器、所述第二内部缓存器和所述外部存储器电性连接;
所述命令生成模块,用于接收第一数据读取命令,所述第一数据读取命令携带地址参数信息和第一数据长度;将所述第一数据读取命令中的第一数据长度修改为第二数据长度,得到第二数据读取命令,通过所述互联总线向所述外部存储器发送所述第二数据读取命令,所述第二数据长度大于所述第一数据长度;
所述外部存储器用于基于所述第二数据读取命令返回第一数据,所述第一数据为基于所述地址参数信息获取的且数据长度为所述第二数据长度的数据;
所述第一内部缓存器,用于存储第一数据;
所述第二内部缓存器,用于存储所述第一数据中的第二数据,所述第二数据为基于所述地址参数信息获取的,且数据长度为所述第一数据长度。
另一方面,提供了一种计算机设备,计算机设备包括上述所述的处理芯片。
另一方面,提供了一种数据传输方法,应用于上述所述的处理芯片,所述方法包括:
所述命令生成模块接收第一数据读取命令,所述第一数据读取命令携带地址参数信息和第一数据长度;将所述第一数据读取命令中的第一数据长度修改为第二数据长度,得到第二数据读取命令,通过所述互联总线向所述外部存储器发送所述第二数据读取命令,所述第二数据长度大于所述第一数据长度;
所述外部存储器基于所述第二数据读取命令返回第一数据,所述第一数据为基于所述地址参数信息获取的且数据长度为所述第二数据长度的数据;
所述第一内部缓存器存储第一数据,以及,所述第二内部缓存器存储所述第一数据中的第二数据,所述第二数据为基于所述地址参数信息获取的,且数据长度为所述第一数据长度。
在本公开实施例中,由于NPU中的命令生成模块将接收到的第一数据读取命令中的第一数据长度修改为第二数据长度,第一数据长度为待读取数据的数据长度,第二数据长度大于第一数据长度;因此,增大了待读取数据的数据长度,这样NPU能够通过一个数据读取命令读取较多的数据(也即第一数据),进而将第一数据存储在第一内部缓存器中,将第一数据读取命令请求的第二数据存储在第二内部缓存器中,从而能够在不影响第二内部缓存器正常处理数据的情况下,通过第一内部缓存器存储较多的数据,提高了NPU的数据存储量。
附图说明
图1示出了本申请一个示例性实施例所提供的处理芯片的结构示意图;
图2示出了本申请另一个示例性实施例示出的处理芯片的结构示意图;
图3示出了本申请另一个示例性实施例示出的处理芯片的结构示意图;
图4示出了本申请另一个示例性实施例示出的处理芯片的结构示意图;
图5示出了本申请一个示例性实施例示出的数据传输方法的流程图;
图6示出了本申请一个示例性实施例示出的图像数据的示意图;
图7示出了本申请另一个示例性实施例示出的图像数据的示意图;
图8示出了本申请另一个示例性实施例示出的数据传输方法的流程图;
图9示出了本申请另一个示例性实施例示出的数据传输方法的流程图;
图10示出了本申请另一个示例性实施例示出的数据传输方法的流程图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
请参考图1,其示出了一种处理芯片1的结构图,该处理芯片1包括NPU10、互联总线20和外部存储器30;NPU10包括:命令生成模块101、第一内部缓存器102和第二内部缓存器103;
互联总线20分别与命令生成模块101、第一内部缓存器102、第二内部缓存器103和外部存储器30电性连接;
命令生成模块101用于基于接收到的第一数据读取命令,生成第二数据读取命令;相应的,该命令生成模块101为NPU10读命令生成模块101。外部存储器30为双倍速率同步动态随机存储器(Double Data Rate SDRAM,DDR SDRAM)。
互联总线20为支持突发传输的总线,突发是指通过一个数据读取命令能够读取多拍数据。一拍数据为位宽为互联总线20的数据位宽的数据;例如,互联总线20的数据位宽为128bit,则一拍数据即为128bit,也即16字节。
该互联总线20为NPU10内的片内总线;例如,互联总线20为一种协议的总线(Advanced eXtensible Interface,AXI)或者ACE等。按照协议规定,响应于该互联总线20为AXI或者ACE,则该互联总线20能够支持的最大数据长度为256,也即通过一个数据读取命令,最多能够返回256拍数据。
第一内部缓存器102用于存储外部存储器30返回的多拍数据;相应的,第一内部缓存器102为NPU10内部待读取数据缓存器。第二内部缓存器103用于存储请求的数据;相应的,第二内部缓存器103为NPU10内部数据缓存器。
命令生成模块101,用于接收第一数据读取命令,第一数据读取命令携带地址参数信息和第一数据长度;将第一数据读取命令中的第一数据长度修改为第二数据长度,得到第二数据读取命令,通过互联总线20向外部存储器30发送第二数据读取命令,第二数据长度大于第一数据长度。
其中,第一数据长度为1;第二数据长度为大于1的整数;并且,第二数据长度不大于互联总线20支持的最大数据长度;例如,最大数据长度为256;则第二数据长度为大于1,且小于或者等于256的整数。
外部存储器30用于基于第二数据读取命令返回第一数据,第一数据为基于所述地址参数信息获取的且数据长度为所述第二数据长度的数据。
第一内部缓存器102,用于存储第一数据;
第二内部缓存器103,用于存储第一数据中的第二数据,第二数据为基于所述地址参数信息获取的,且数据长度为所述第一数据长度。
在相关技术中,第一数据读取命令携带的第一数据长度为1,则NPU10通过第一数据读取命令能够读取一拍数据;例如,互联总线20的数据位宽为128bit,则第一数据读取命令一次能够读取128bit的数据,也即16字节(byte)的数据。
而在本申请实施例中,将第一数据读取命令中的第一数据长度修改为第二数据长度;例如第二数据长度为3;则NPU10通过第一数据读取命令能够读取3拍数据;例如,数据位宽为128bit,则第一数据读取命令一次能够读取384bit的数据,也即48byte的数据。由于命令生成模块101将第一数据读取命令的第一数据长度修改为第二数据长度,第二数据长度大于第一数据长度,这样NPU10能够通过第一数据读取命令长度一次性读取多拍数据(第二数据长度拍数据),从而提高了NPU10的传输带宽和数据读取效率。
继续参见图1,第一内部缓存器102与命令生成模块101电性连接。由于NPU10通过第二数据突发命令从外部存储器30中读取了多拍数据,将多拍数据存储到了第一内部缓存器102中。因此,第一内部缓存器102中会缓存一部分数据;命令生成模块101在生成第二数据读取命令之前,先查询第一内部缓存器102中是否存储该第二数据;响应于第一内部缓存器102中不存储第二数据,才将第一数据读取命令中的第一数据长度修改为第二数据长度,生成第二数据读取命令。
继续参见图1,第一内部缓存器102与第二内部缓存器103电性连接。响应于第一内部缓存器102中存储第二数据;则命令生成模块101触发第一内部缓存器102将第二数据写入第二内部缓存器103。该过程为:
响应于第一内部缓存器102中存储第二数据;则命令生成模块101向第一内部缓存器102发送数据写入命令。第一内部缓存器102接收该数据写入命令,基于该数据写入命令,将第二数据写入第二内部缓存器103。
由于互联总线20上存在返回数据延时,并且外部存储器30读取数据也需要时间;并且在互联总线20上其他主机也在工作的情况下,NPU10的数据读取命令和被返回的数据可能会被堵塞一段时间,造成数据返回不及时,影响NPU10与互联总线20之间数据传输的性能。在本申请实施例中,响应于第一内部缓存器102中存储第二数据;则第一内部缓存器102直接将第二数据写入第二内部缓存器103中,从而不需要通过互联总线20进行数据的读取。避免了数据返回不及时的情况,提高了数据读取效率,进而提高了NPU10与互联总线20时间数据传输的性能。
参见图2,该NPU10还包括:第一数据选择器104;
第一内部缓存器102和第二内部缓存器103分别通过第一数据选择器104与互联总线20电性连接。
第一数据选择器104,用于通过互联总线20接收第一数据,将第一数据传输至第一内部缓存器102,从第一数据中选择出第二数据,将第二数据传输至第二内部缓存器103。
在本申请实施例中,通过在NPU10中设置第一数据选择器104,由第一数据选择器104对数据进行选择输送,进而不需要第一内部缓存器102或者第二内部缓存器103具有数据选择功能,进而降低了对两个缓存器的功能需求。
参见图3,该NPU10还包括第二数据选择器105;第一内部缓存器102与互联网直接电性连接;第二内部缓存器103通过第二数据选择器105与互联总线20电性连接。
互联总线20接收到第一数据后,将第一数据传输至第一内部缓存器102;第一内部缓存器102接收第一数据,存储第一数据。
互联总线20接收到第一数据后,从第一数据中选择出第二数据,将第二数据传输至第二内部缓存器103;第二内部缓存器103接收第二数据,存储第二数据。
在本申请实施例中,第一内部缓存器102不需要通过第二数据选择器105与互联总线20连接,这样就会缩短第一数据传输至第一内部缓存器102的传输路径,进而提高传输效率。
参见图4,处理芯片1还包括处理器40;
处理器40与命令生成模块101电性连接;处理器40,用于向命令生成模块101发送第一数据读取命令。
在本申请实施例中,通过在处理芯片1中设置处理器40,且处理器40与命令生成模块101电性连接,这样命令生成模块101能够处理由处理器40触发的任一数据读取命令,提高了命令的广泛性。
本申请实施例提供了一种计算机设备,该计算机设备包括该处理芯片,该计算机设备包括但不限于手机、平板电脑、穿戴设备、家居设备、物联网设备等。
本申请实施例提供了一种数据传输方法,该方法应用于上述处理芯片且NPU包括第一数据选择器中,参见图5,该方法包括:
S501:命令生成模块接收第一数据读取命令,第一数据读取命令携带地址参数信息和第一数据长度。
第一数据读取命令用于读取第二数据;第一数据长度为待读取的第二数据的数据长度;第一数据长度能够根据需要进行设置并更改,在本申请实施例中,对第一数据长度不作具体限定;例如,第一数据长度为1。响应于第一数据长度为1,则第一数据读取命令为单命令,也即为通过第一数据读取命令能够从外部存储器中读取一拍数据的命令。一拍数据是指位宽为互联总线位宽的数据;例如,互联总线的位宽为128bit,则一拍数据为128bit的数据,也即16字节的数据。
第二数据为任一类型的数据;例如,第二数据为视频数据、图像数据、音频数据等多媒体数据;或者,第二数据为文本信息等。在本申请实施例中,对第二数据不作具体限定;且以第二数据为图像数据为例进行说明。
响应于第二数据以一维数据行的形式存储在外部存储器中;则地址参数信息包括一维数据行的起始地址。响应于第二数据以三维数据块的形式存储在外部存储器中;例如,参见图6,图像数据在外部存储器中存储的三个维度分别为D1、D2和D3。
为了便于描述,将三维数据块解析到平面,则参见图7,该三维数据块的起始地址为BASE_ADDR;该三维数据块包括多个二维数据面,该三维数据块包括的二维数据面的个数为D3_NUM,并且每个二维数据面的起始地址之间的偏移量为D3_ADDR_OFFSET。一个二维数据面包括多个一维数据行,该一维数据面包括的一维数据行的个数为D2_NUM;并且,每个一维数据行的起始地址之间的偏移量为D2_ADDR_OFFSET。一个二维数据行包括多个字节,该一维数据行包括的字节的个数为D1_NUM。其中,D1_NUM的单位是byte,一个D1_NUM即包括多个byte。
相应的,地址参数信息包括三维数据块的三维地址信息;该三维地址信息包括三维数据块的起始地址、该三维数据块包括的二维数据面的个数,每个二维数据面的起始地址之间的偏移量,二维数据面包括的一维数据行的个数,每个一维数据行的起始地址之间的偏移量,每个一维数据行包括的字节的个数,每个字节的起始地址之间的偏移量。
S502:命令生成模块将第一数据读取命令中的第一数据长度修改为第二数据长度,得到第二数据读取命令。
第二数据长度大于第一数据长度;且第二数据长度不大于互联总线支持的最大数据长度;例如,互联总线支持的最大数据长度为256,第一数据长度为1;则第二数据长度为大于1,且小于256的整数。
响应于地址参数信息包括一维数据行的起始地址;则命令生成模块直接将第一数据读取命令中的第一数据长度修改为第二数据长度即可得到第二数据读取命令。响应于地址参数信息包括三维数据块的三维地址信息;则命令生成模块除了将第一数据读取命令中的第一数据长度修改为第二数据长度以外,还需要基于地址参数信息确定该三维数据块的每个一维数据行的起始地址,根据每个一维数据行的起始地址和第二数据长度,生成第二数据读取命令。第二数据读取命令携带每个一维数据行的起始地址和第二数据长度。
其中,命令生成模块基于三维数据块的三维地址信息,通过以下公式一,确定每个一维数据行的起始地址。
公式一:
tart_addr=BASE_ADDR+i*D2_ADDR_OFFSET+j*D3_ADDR_OFFSET
其中,BASE_ADDR为三维数据块的起始地址,D2_ADDR_OFFSET为每个一维数据行的起始地址之间的偏移量,D3_ADDR_OFFSET为每个二维数据面的起始地址之间的偏移量,j为二维数据面的序号,且0=<j<D3_NUM,D3_NUM为该三维数据块包括的二维数据面的个数;i为一维数据行的序号,且0=<i<D2_NUM,D2_NUM为二维数据面包括的一维数据行的个数。
需要说明的一点是,第二数据长度能够根据需要进行设置并更改,在本申请实施例中对第二数据长度不作具体限定。在一种可能的实现方式中,第二数据长度为事先配置在命令生成模块中的一个固定的值;相应的,命令生成模块将第一数据读取命令中的第一数据长度修改为第二数据长度,得到第二数据读取命令之前,命令生成模块获取已存储的第二数据长度。
在本申请实施例中,事先在命令生成模块中配置好第二数据长度,响应于接收到第一数据读取命令直接获取已存储的第二数据长度,操作简单,效率高。
在另一种可能的实现方式中,读取不同的数据会设置不同的第二数据长度;相应的,命令生成模块将第一数据读取命令中的第一数据长度修改为第二数据长度,得到第二数据读取命令之前,命令生成模块基于待读取的数据,确定第二数据长度。
第一种方式:命令生成模块基于待读取的数据的数据类型,获取与数据类型匹配的第二数据长度;例如,待读取的数据的数据类型为图像,则第二数据长度为4;待读取的数据的数据类型为音频,则第二数据长度为2等。
第二种方式:命令生成模块基于待读取的数据的历史读取频率,获取与该历史读取频率匹配的第二数据长度;其中,历史读取频率与第二数据长度正相关,也即历史读取频率越高,第二数据长度越大。
在本申请实施例中,历史读取频率与第二数据长度正相关;当历史读取频率较高时,则设置较大的第二数据长度,从而能够通过一个数据读取命令读取较多的数据,而这些数据的历史读取频率较高,则除需要读取的数据以外的数据有可能很快会被读取,这样后续就不用再次通过数据读取指令从外部存储器中进行数据读取了,直接从第一内部缓存器中读取数据即可,从而提高了读取效率。
S503:命令生成模块通过互联总线向外部存储器发送第二数据读取命令。
命令生成模块向互联总线发送第二数据读取命令;互联总线接收第二数据读取命令,将第二数据读取命令转发至外部存储器。
S504:外部存储器接收第二数据读取命令,根据该第二数据读取命令,读取第一数据。
响应于第二数据读取命令中携带一维数据行的起始地址;则外部存储器根据该一维数据行的起始地址,从该起始地址开始,读取数据长度为该第一数据长度的数据,将读取的数据作为第一数据。
响应于第二数据读取命令中携带每个一维数据行的起始地址;则外部存储器根据每个一维数据行的起始地址,从每个一维数据行的起始地址开始,读取数据长度为第一数据长度的数据,将从每维数据行中读取的数据组成第一数据。
S505:外部存储器将第一数据通过互联总线传输至第一数据选择器。
外部存储器将第一数据传输至互联总线;互联总线接收第一数据,将第一数据传输至第一数据选择器。
S506:第一数据选择器接收第一数据,将第一数据传输至第一内部缓存器。
第一内部缓存器接收第一数据,存储第一数据。其中,第一内部缓存器在存储第一数据时,先确定第一数据的第一存储地址,基于该第一存储地址,将第一数据存储至第一内部缓存器。
在一种可能的实现方式中,第一内部缓存器接收到第一数据后,将第一数据的起始地址存储到第一列表中,以便于后续基于第一列表进行数据查询,以查询第一内部缓存器中存储的数据。
响应于第一数据包括从每维数据行中读取的数据;则第一内部缓存器将从每维数据行中读取的数据的起始地址存储到第一列表中,以便于后续基于第一列表能够查询任一维数据行的数据。
在另一种可能的实现方式中,第一内部缓存器存储完第一数据后,将第一数据的第一存储地址和第一数据的起始地址进行关联,存储到第二列表中,以便于后续基于第二列表进行数据的存储地址的查询。
在另一种可能的实现方式中,第一内部缓存器根据第一数据长度,将第一数据划分为多个第二数据,每个第二数据为一拍数据,分别存储每个第二数据。由于后续读取数据时,是以拍为单位进行数据的读取;因此,第一内部缓存器以拍为单位存储第一数据,便于后续进行数据读取,提高数据读取效率。
S507:第一数据选择器从第一数据中选择出第二数据,将第二数据传输至第二内部缓存器。
对于每个一维数据行,第一数据选择器根据该数据行的起始地址,从第一数据中截取起始地址为该起始地址,数据长度为该第一数据长度的数据,将每个一维数据行截取得到的数据组成第二数据。
需要说明的一点是,第一数据选择器从第一数据中选择出第二数据,将第二数据传输至第二内部缓存器,与第一数据选择器将第一数据传输至第一内部缓存器这两个步骤并无严格的时间先后关系。例如,先执行第一数据选择器从第一数据中选择出第二数据,将第二数据传输至第二内部缓存器,再执行第一数据选择器将第一数据传输至第一内部缓存器;或者,先执行第一数据选择器将第一数据传输至第一内部缓存器,再执行第一数据选择器从第一数据中选择出第二数据,将第二数据传输至第二内部缓存器。
在本申请实施例中,先执行第一数据选择器将第一数据传输至第一内部缓存器,再执行第一数据选择器从第一数据中选择出第二数据,将第二数据传输至第二内部缓存器能够保证第二内部缓存器及时获取到第二数据,便于NPU进行后续操作,提高了后续数据处理的效率。
在本申请实施例中,由于命令生成模块将第一数据读取命令的第一数据长度修改为第二数据长度,第一数据长度为待读取数据的数据长度,第二数据长度大于第一数据长度。因此,增大了待读取数据的数据长度,这样NPU能够通过一个数据读取命令读取较多的数据(也即第一数据),从而提高了NPU的传输带宽和数据读取效率。
本申请实施例提供了一种数据传输方法,该方法应用于上述处理芯片且NPU包括第一数据选择器中。参见图8,该方法包括:
S801:命令生成模块接收第一数据读取命令,第一数据读取命令携带地址参数信息和第一数据长度。
本步骤和步骤S501相同,在此不再赘述。
需要说明的一点是,由于本申请将数据读取命令的数据长度变大了,也即通过一个数据读取命令能够读取多拍数据,将多拍数据存储在了第一内部缓存器中。因此,待读取的数据已经通过之前的数据读取指令读取回来存储在了第一内部缓存器中。相应的,命令生成模块接收到第一数据读取命令之后,先查询第一内部缓存器。
S802:命令生成模块根据该地址参数信息,查询第一内部缓存器。
响应于该地址参数信息包括一维数据行的起始地址,则命令生成模块根据该一维数据行的起始地址,查询第一内部缓存器对应的第一列表,确定第一列表中是否包含该一维数据行的起始地址;响应于第一列表中包含该一维数据行的起始地址,则命令生成模块确定第一内部缓存器中存储第二数据。响应于第一列表中没有包含该一维数据行的起始地址,则命令生成模块确定第一内部缓存器中没有存储第二数据。
响应于该地址参数信息包括三维数据块的三维地址信息,则命令生成模块根据该三维地址信息,确定每个一维数据行的起始地址,根据每个一维数据行的起始地址,查询第一内部缓存器对应的第一列表,确定第一列表中是否包含每个一维数据行的起始地址;响应于第一列表中包含每个一维数据行的起始地址,则命令生成模块确定第一内部缓存器中存储第二数据。响应于第一列表中没有包含每个一维数据行的起始地址,则命令生成模块确定第一内部缓存器中没有存储第二数据。
S803:响应于第一内部缓存器中存储第二数据,命令生成模块向第一内部缓存器发送数据写入请求,该数据写入请求携带该地址参数信息和第一数据长度。
响应于该地址参数信息包括三维地址信息;则命令生成模块将三维地址信息转换为每个一维数据行的起始地址,该数据写入请求携带每个一维数据行的起始地址和第一数据长度。
其中,命令生成模块将三维地址信息转换为每个一维数据行的起始地址的过程与步骤502中的基于三维数据块的三维地址信息,确定每个一维数据行的起始地址的过程相同,在此不再赘述。
S804:第一内部缓存器接收数据写入请求,将该地址参数信息和第一数据长度对应的第二数据写入第二内部缓存器。
需要说明的一点是,第一内部缓存器将第二数据写入第二内部缓存器之后,删除第一内部缓存器中的第二数据,以节省空间。
需要说明的另一点是,对于第一内部缓存器中存储的每个数据,第一内部缓存器周期性检测该数据的存储时长;响应于存储时长大于预设时间,删除该数据,以节省空间。
S805:响应于第一内部缓存器中没有存储第二数据,命令生成模块将第一数据读取命令中的第一数据长度修改为第二数据长度,得到第二数据读取命令。
S806:命令生成模块通过互联总线向外部存储器发送第二数据读取命令。
S807:外部存储器接收第二数据读取命令,根据该第二数据读取命令,读取第一数据。
S808:外部存储器将第一数据通过互联总线传输至第一数据选择器。
S809:第一数据选择器接收第一数据,将第一数据传输至第一内部缓存器。
S810:第一数据选择器从第一数据中选择出第二数据,将第二数据传输至第二内部缓存器。
需要说明的一点是,步骤S805-S810与步骤S502-S507相同,在此不再赘述。
由于互联总线上存在返回数据延时,并且外部存储器读取数据也需要时间;并且在互联总线上其他主机也在工作的情况下,NPU的数据读取命令和被返回的数据可能会被堵塞一段时间,造成数据返回不及时,影响NPU与互联总线之间数据传输的性能。在本申请实施例中,响应于第一内部缓存器中存储第二数据;则第一内部缓存器直接将第二数据写入第二内部缓存器中,从而不需要通过互联总线进行数据的读取。避免了数据返回不及时的情况,提高了数据读取效率,进而提高了NPU与互联总线时间数据传输的性能。
本申请实施例提供了一种数据传输方法,该方法应用于上述处理芯片且NPU包括第二数据选择器中。参见图9,该方法包括:
S901:命令生成模块接收第一数据读取命令,第一数据读取命令携带地址信息和第一数据长度。
S902:命令生成模块将第一数据读取命令中的第一数据长度修改为第二数据长度,得到第二数据读取命令。
S903:命令生成模块通过互联总线向外部存储器发送第二数据读取命令。
S904:外部存储器接收第二数据读取命令,根据该第二数据读取命令,读取第一数据。
需要说明的一点是,步骤S901-S904分别与步骤S501-S504相同,在此不再赘述。
S905:外部存储器分别将第一数据通过互联总线传输至第一内部缓存器和第二数据选择器。
外部存储器将第一数据传输至互联总线;互联总线接收第一数据,分别将第一数据传输至第一内部缓存器和第二数据选择器。
S906:第二数据选择器从第一数据中选择出第二数据,将第二数据传输至第二内部缓存器。
第二数据选择器从第一数据中选择出第二数据的步骤和第一数据选择器从第一数据中选择出第二数据的步骤相同,在此不再赘述。
在本申请实施例中,由于命令生成模块将第一数据读取命令的第一数据长度修改为第二数据长度,第一数据长度为待读取数据的数据长度,第二数据长度大于第一数据长度。因此,增大了待读取数据的数据长度,这样NPU能够通过一个数据读取命令读取较多的数据(也即第一数据),从而提高了NPU的传输带宽和数据读取效率。
本申请实施例提供了一种数据传输方法,该方法应用于上述处理芯片且NPU包括第二数据选择器中。参见图10,该方法包括:
S1001:命令生成模块接收第一数据读取命令,第一数据读取命令携带地址参数信息和第一数据长度。
S1002:命令生成模块根据该地址参数信息,查询第一内部缓存器。
S1003:响应于第一内部缓存器中存储第二数据,命令生成模块向第一内部缓存器发送数据写入请求,该数据写入请求携带该地址参数信息和第一数据长度。
S1004:第一内部缓存器接收数据写入请求,将该地址参数信息和第一数据长度对应的第二数据写入第二内部缓存器。
需要说明的一点是,步骤S1001-S1004分别与步骤S801-S804相同,在此不再赘述。
S1005:响应于第一内部缓存器中没有存储第二数据,命令生成模块将第一数据读取命令中的第一数据长度修改为第二数据长度,得到第二数据读取命令。
S1006:命令生成模块通过互联总线向外部存储器发送第二数据读取命令。
S1007:外部存储器接收第二数据读取命令,根据该第二数据读取命令,读取第一数据。
S1008:外部存储器分别将第一数据通过互联总线传输至第一内部缓存器和第二数据选择器。
S1009:第二数据选择器从第一数据中选择出第二数据,将第二数据传输至第二内部缓存器。
需要说明的一点是,步骤S1005-S1009分别与步骤S902-S906相同,在此不再赘述。
由于互联总线上存在返回数据延时,并且外部存储器读取数据也需要时间;并且在互联总线上其他主机也在工作的情况下,NPU的数据读取命令和被返回的数据可能会被堵塞一段时间,造成数据返回不及时,影响NPU与互联总线之间数据传输的性能。在本申请实施例中,响应于第一内部缓存器中存储第二数据;则第一内部缓存器直接将第二数据写入第二内部缓存器中,从而不需要通过互联总线进行数据的读取。避免了数据返回不及时的情况,提高了数据读取效率,进而提高了NPU与互联总线时间数据传输的性能。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个程序代码或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (15)
1.一种神经网络处理器处理芯片,其特征在于,所述处理芯片包括:NPU、互联总线和外部存储器,所述NPU包括:命令生成模块,第一内部缓存器和第二内部缓存器;
所述互联总线分别与所述命令生成模块、所述第一内部缓存器、所述第二内部缓存器和所述外部存储器电性连接;
所述命令生成模块,用于接收第一数据读取命令,所述第一数据读取命令携带地址参数信息和第一数据长度;将所述第一数据读取命令中的第一数据长度修改为第二数据长度,得到第二数据读取命令,通过所述互联总线向所述外部存储器发送所述第二数据读取命令,所述第二数据长度大于所述第一数据长度;
所述外部存储器用于基于所述第二数据读取命令返回第一数据,所述第一数据为基于所述地址参数信息获取的且数据长度为所述第二数据长度的数据;
所述第一内部缓存器,用于存储第一数据;
所述第二内部缓存器,用于存储所述第一数据中的第二数据,所述第二数据为基于所述地址参数信息获取的,且数据长度为所述第一数据长度。
2.根据权利要求1所述的处理芯片,其特征在于,所述第一内部缓存器与所述命令生成模块电性连接;
所述命令生成模块,用于基于所述地址参数信息,查询所述第一内部缓存器;响应于所述第一内部缓存器中不存储所述第二数据,将所述第一数据读取命令中的第一数据长度修改为第二数据长度,得到第二数据读取命令。
3.根据权利要求2所述的处理芯片,其特征在于,所述第一内部缓存器与所述第二内部缓存器;
所述命令生成模块,还用于响应于所述第一内部缓存器中存储所述第二数据,向所述第一内部缓存器发送数据写入指令,所述数据写入指令携带所述第二数据的地址参数信息和所述第一数据长度;
所述第一内部缓存器,还用于接收所述数据写入命令,基于所述数据写入命令,将所述第二数据写入所述第二内部缓存器。
4.根据权利要求1所述的方法,其特征在于,所述NPU还包括:第一数据选择器;
所述第一内部缓存器和所述第二内部缓存器分别通过所述第一数据选择器与所述互联总线电性连接;
所述第一数据选择器,用于通过所述互联总线接收所述第一数据,将所述第一数据传输至所述第一内部缓存器;从所述第一数据中选择出第二数据,将所述第二数据传输至所述第二内部缓存器。
5.根据权利要求1所述的处理芯片,其特征在于,所述NPU还包括第二数据选择器;
所述第二内部缓存器通过所述第二数据选择器与所述互联总线电性连接;
所述第二数据选择器,用于通过所述互联总线接收所述第一数据,从所述第一数据中选择出第二数据,将所述第二数据传输至所述第二内部缓存器。
6.根据权利要求1所述的处理芯片,其特征在于,所述处理芯片还包括中央处理器;
所述中央处理器与所述命令生成模块电性连接;
所述中央处理器,用于向所述命令生成模块发送所述第一数据读取命令。
7.根据权利要求1-6任一项所述的处理芯片,其特征在于,所述第一数据长度为1,所述第二数据长度不大于所述互联总线支持的最大数据长度。
8.一种计算机设备,其特征在于,所述计算机设备包括如权利要求1-7任一项所述的处理芯片。
9.一种数据传输方法,其特征在于,应用于如权利要求1-7任一项所述的处理芯片,所述方法包括:
所述命令生成模块接收第一数据读取命令,所述第一数据读取命令携带地址参数信息和第一数据长度;将所述第一数据读取命令中的第一数据长度修改为第二数据长度,得到第二数据读取命令,通过所述互联总线向所述外部存储器发送所述第二数据读取命令,所述第二数据长度大于所述第一数据长度;
所述外部存储器基于所述第二数据读取命令返回第一数据,所述第一数据为基于所述地址参数信息获取的且数据长度为所述第二数据长度的数据;
所述第一内部缓存器存储第一数据,以及,所述第二内部缓存器存储所述第一数据中的第二数据,所述第二数据为基于所述地址参数信息获取的,且数据长度为所述第一数据长度。
10.根据权利要求9所述的方法,其特征在于,所述命令生成模块与所述第一内部缓存器电性连接;
所述命令生成模块将所述第一数据读取命令中的第一数据长度修改为第二数据长度,得到第二数据读取命令之前,所述方法还包括:
所述命令生成模块基于所述地址参数信息,查询所述第一内部缓存器;响应于所述第一内部缓存器中不存储所述第二数据,执行所述将所述第一数据读取命令中的第一数据长度修改为第二数据长度,得到第二数据读取命令的步骤。
11.根据权利要求10所述的方法,其特征在于,所述第一内部缓存器与所述第二内部缓存器电性连接;所述方法还包括:
响应于所述第一内部缓存器中存储所述第二数据,所述命令生成模块向所述第一内部缓存器发送数据写入指令,所述数据写入指令携带所述第二数据的地址参数信息和所述第一数据长度;
所述第一内部缓存器接收所述数据写入指令,基于所述数据写入指令,将所述第二数据写入所述第二内部缓存器。
12.根据权利要求9所述的方法,其特征在于,所述NPU还包括第一数据选择器;所述第一内部缓存器存储第一数据,以及,所述第二内部缓存器存储所述第一数据中的第二数据之前,所述方法还包括:
所述第一数据选择器通过所述互联总线接收所述第一数据,将所述第一数据传输至所述第一内部缓存器,从所述第一数据中选择出第二数据,将所述第二数据传输至所述第二内部缓存器。
13.根据权利要求9所述的方法,其特征在于,所述NPU还包括第二数据选择器;所述第一内部缓存器存储第一数据,以及,所述第二内部缓存器存储所述第一数据中的第二数据之前,所述方法还包括:
所述第二数据选择器通过所述互联总线接收所述第一数据,从所述第一数据中选择出第二数据,将所述第二数据传输至所述第二内部缓存器。
14.根据权利要求9-13任一项所述的方法,其特征在于,所述命令生成模块将所述第一数据读取命令中的第一数据长度修改为第二数据长度,得到第二数据读取命令之前,所述方法还包括:
所述命令生成模块获取已存储的第二数据长度;或者,
所述命令生成模块基于待读取的数据,确定所述第二数据长度。
15.根据权利要求14所述的方法,其特征在于,所述命令生成模块基于待读取的数据,确定所述第二数据长度,包括:
所述命令生成模块基于所述待读取的数据类型,获取与所述数据类型匹配的第二数据长度;或者,
所述命令生成模块基于所述待读取的数据的历史读取频率,获取与所述历史读取频率匹配的第二数据长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010924396.4A CN111966610B (zh) | 2020-09-04 | 2020-09-04 | 数据传输方法、处理芯片和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010924396.4A CN111966610B (zh) | 2020-09-04 | 2020-09-04 | 数据传输方法、处理芯片和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111966610A true CN111966610A (zh) | 2020-11-20 |
CN111966610B CN111966610B (zh) | 2023-12-01 |
Family
ID=73392371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010924396.4A Active CN111966610B (zh) | 2020-09-04 | 2020-09-04 | 数据传输方法、处理芯片和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111966610B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020161966A1 (en) * | 2001-04-26 | 2002-10-31 | International Business Machines Corp. | Dram with memory independent burst lengths for reads versus writes |
US20060112226A1 (en) * | 2004-11-19 | 2006-05-25 | Hady Frank T | Heterogeneous processors sharing a common cache |
EP1814040A2 (en) * | 2006-01-30 | 2007-08-01 | Hitachi, Ltd. | Storage system, and storage control method |
CN101777031A (zh) * | 2009-01-14 | 2010-07-14 | 中兴通讯股份有限公司 | 直接存储器存取控制器以及数据传输方法 |
US20130166801A1 (en) * | 2011-12-21 | 2013-06-27 | Electronics And Telecommunications Research Institute | Bus bridge apparatus |
WO2018102967A1 (zh) * | 2016-12-05 | 2018-06-14 | 华为技术有限公司 | NVMe over Fabric架构中数据读写命令的控制方法、存储设备和系统 |
US20200242258A1 (en) * | 2019-04-11 | 2020-07-30 | Intel Corporation | Protected data accesses using remote copy operations |
-
2020
- 2020-09-04 CN CN202010924396.4A patent/CN111966610B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020161966A1 (en) * | 2001-04-26 | 2002-10-31 | International Business Machines Corp. | Dram with memory independent burst lengths for reads versus writes |
US20060112226A1 (en) * | 2004-11-19 | 2006-05-25 | Hady Frank T | Heterogeneous processors sharing a common cache |
EP1814040A2 (en) * | 2006-01-30 | 2007-08-01 | Hitachi, Ltd. | Storage system, and storage control method |
CN101777031A (zh) * | 2009-01-14 | 2010-07-14 | 中兴通讯股份有限公司 | 直接存储器存取控制器以及数据传输方法 |
US20130166801A1 (en) * | 2011-12-21 | 2013-06-27 | Electronics And Telecommunications Research Institute | Bus bridge apparatus |
WO2018102967A1 (zh) * | 2016-12-05 | 2018-06-14 | 华为技术有限公司 | NVMe over Fabric架构中数据读写命令的控制方法、存储设备和系统 |
US20200242258A1 (en) * | 2019-04-11 | 2020-07-30 | Intel Corporation | Protected data accesses using remote copy operations |
Non-Patent Citations (2)
Title |
---|
HADI ESMAEILZADEH, ET AL: "Neural acceleration for general-purpose approximate programs", 《2012 45H ANNUAL IEEE/ACM INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE》, pages 1 - 12 * |
冯朝阳,等: "基于NPU架构的VPN防火墙硬件结构模型", 《计算机工程与设计》, pages 831 - 835 * |
Also Published As
Publication number | Publication date |
---|---|
CN111966610B (zh) | 2023-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100334564C (zh) | 具有内部行高速缓存的内存集线器及访问方法 | |
KR100800989B1 (ko) | 중재 패킷 프로토콜을 구비한 메모리 중재 시스템 및 방법 | |
KR20150070046A (ko) | 데이터 처리 시스템 및 데이터 처리 방법 | |
CN107783727B (zh) | 一种内存设备的访问方法、装置和系统 | |
CN115374046B (zh) | 一种多处理器数据交互方法、装置、设备及存储介质 | |
CN112817899B (zh) | 基于pcie的数据传输方法、装置、存储介质和电子设备 | |
CN117033275B (zh) | 加速卡间的dma方法、装置、加速卡、加速平台及介质 | |
US8510513B2 (en) | Network load reducing method and node structure for multiprocessor system with distributed memory | |
CN111966610B (zh) | 数据传输方法、处理芯片和计算机设备 | |
CN113535611A (zh) | 数据处理方法及装置、异构系统 | |
CN113641604B (zh) | 一种数据传输方法及系统 | |
KR100544188B1 (ko) | 네트워크 전자기기의 데이터 인터페이스 장치 및 방법 | |
US20230171207A1 (en) | Method for accessing system memory and associated processing circuit within a network card | |
TWI764311B (zh) | 記憶體存取方法及智慧處理裝置 | |
CN116257521B (zh) | 一种基于fpga的kv存储方法 | |
CN115842790B (zh) | 一种应用于PCIe设备的业务数据流量控制方法 | |
WO2022205054A1 (zh) | 存储系统和远程直接数据存取方法 | |
US11874783B2 (en) | Coherent block read fulfillment | |
KR20230105374A (ko) | 컴퓨팅 장치 및 차세대 연결망 접근 방법 | |
KR100243185B1 (ko) | 공유 메모리를 통한 프로세서간의 데이터 통신 장치 및 방법 | |
JPH11232180A (ja) | データ処理装置 | |
CN118170699A (zh) | 数据传输方法、设备及存储介质、数据采集系统 | |
JP2000137676A (ja) | バッファ制御方式 | |
CN114024714A (zh) | 一种访问请求处理方法、装置、网卡设备及存储计算系统 | |
CN117873744A (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 |