CN111813722B - 基于共享内存的数据读写方法,系统及可读存储介质 - Google Patents
基于共享内存的数据读写方法,系统及可读存储介质 Download PDFInfo
- Publication number
- CN111813722B CN111813722B CN201910286093.1A CN201910286093A CN111813722B CN 111813722 B CN111813722 B CN 111813722B CN 201910286093 A CN201910286093 A CN 201910286093A CN 111813722 B CN111813722 B CN 111813722B
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- shared memory
- target data
- parameter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
-
- 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
-
- 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
- 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/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Multi Processors (AREA)
Abstract
本发明实施例公开了一种基于共享内存的数据读写方法,系统及可读存储介质,通过移位从共享内存中读取位于同一个内存地址或位于不同内存地址的目标数据,并通过移位将目标数据写入同一个内存地址,或通过对目标数据进行分解并移位,将目标数据分别写入不同的内存地址,由此,可以实现在共享内存为非对齐存储时目标数据的准确读写,提高了存储资源的利用率。
Description
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种基于共享内存的数据读写方法,系统及可读存储介质。
背景技术
数据处理可以采用不同的数据精度,高精度可以获得更好的性能,但存储代价和计算代价都比较高昂,而低精度可以用一定程度的性能损失换取存储和计算的节省,从而让系统具有很高的功耗效用。由于精度的需求不同,系统需要提供多种数据精度的存储支持,如8位整型,16位浮点,32位浮点,64位浮点等。
目前,在系统采用不同精度时,往往采用对齐模式对数据进行存储,但这种方法在数据长度较短时比较适用,在系统所需的数据长度不同且差异较大的情况下,会造成资源的浪费。
发明内容
有鉴于此,本发明实施例提供一种基于共享内存的数据读写方法,系统及计算机可读存储介质,以实现在共享内存为非对齐存储时目标数据的准确读写,提高存储资源的利用率。
第一方面,本发明实施例提供一种基于共享内存的数据读取方法,所述共享内存被多个计算单元共享,所述多个计算单元具有不同的数据并行度,所述方法包括:
获取计算单元的读数据请求,所述读数据请求包括所述计算单元的数据并行度和目标数据在共享内存中的起始位置;
根据参数确定信息确定第一内存参数,所述参数确定信息包括所述计算单元的数据并行度、所述共享内存的数据并行度和所述目标数据在共享内存中的起始位置,所述第一内存参数用于表征所述目标数据在所述共享内存中的存储位置,所述存储位置包括所述目标数据在所述共享内存中对应的内存地址和在所述内存地址上的起始位;
根据所述参数确定信息获取第一数据适配参数,所述第一数据适配参数包括第一屏蔽位,所述第一屏蔽位用于屏蔽所述目标数据之外的数据;
根据所述第一内存参数和所述第一数据适配参数输出所述目标数据至所述计算单元;
其中,所述计算单元的数据并行度为所述计算单元的单位数据长度,所述共享内存的数据并行度为所述共享内存中的一个内存地址对应的数据长度。
本实施例根据所述计算单元的数据并行度、所述共享内存的数据并行度和所述目标数据在共享内存中的起始位置获取移位值、选通信号和屏蔽位,以通过移位从共享内存中读取位于同一内存地址或不同内存地址的目标数据,由此,可以实现在共享内存为非对齐存储时目标数据的准确读取,提高存储资源的利用率。
进一步地,所述计算单元的数据并行度小于等于所述共享内存的数据并行度,所述目标数据位于所述共享内存的第一内存地址和第二内存地址上;所述数据适配参数还包括第一左移值、第一右移值和第一选通信号;
根据所述参数确定信息获取第一数据适配参数包括:
根据所述参数确定信息获取所述第一内存地址对应的第一左移值、所述第二内存地址对应的第一右移值、第一选通信号和所述第一屏蔽位以获取所述第一数据适配参数。
进一步地,所述目标数据包括位于所述第一内存地址的第一数据和位于所述第二内存地址第二数据;
根据所述第一内存参数和所述第一数据适配参数输出所述目标数据至所述计算单元包括:
根据所述第一数据适配参数读取并缓存位于所述第一内存地址的第一数据;
根据所述第一数据适配参数读取位于所述第二内存地址的第二数据,并与所述第一数据进行数据拼接以输出所述目标数据至所述计算单元。
本实施例通过读取并缓存第一数据,在读取第二数据后,拼接第一数据和第二数据,由此,实现从共享内存中读取位于不同内存地址的目标数据,由此,实现了在共享内存为非对齐存储时目标数据的读取,提高了存储资源的利用率。
进一步地,根据所述参数确定信息获取第一数据适配参数包括:
根据所述共享内存的数据并行度和所述目标数据在共享内存中的起始位置计算所述第一左移值;
根据所述共享内存的数据并行度和所述第一左移值计算所述第一右移值;
根据所述第一右移值计算所述第一选通信号;
根据所述计算单元的数据并行度计算所述第一屏蔽位。
进一步地,所述目标数据位于所述共享内存的同一内存地址上,所述第一数据适配参数还包括第一左移值,获取第一数据适配参数包括:
根据所述共享内存的数据并行度和所述目标数据在共享内存中的起始位置计算所述第一左移值;
根据所述计算单元的数据并行度计算所述第一屏蔽位。
本实施例根据所述计算单元的数据并行度、所述共享内存的数据并行度和所述目标数据在共享内存中的起始位置获取移位值和屏蔽位,以通过移位从共享内存中读取位于同一内存地址的目标数据,由此,可以实现在共享内存为非对齐存储时目标数据的读取,提高存储资源的利用率。
第二方面,本发明实施例提供一种基于共享内存的写数据方法,所述共享内存被多个计算单元共享,所述多个计算单元具有不同的数据并行度,所述方法包括:
获取计算单元的写数据请求,所述写数据请求包括所述计算单元的数据并行度和目标数据在共享内存中的起始位置;
根据参数确定信息确定第二内存参数,所述参数确定信息包括所述计算单元的数据并行度、所述共享内存的数据并行度和所述目标数据在共享内存中的起始位置,所述第二内存参数用于表征所述目标数据写入所述共享内存中的位置参数,所述位置参数包括所述目标数据对应的所述共享内存中的内存地址和在所述内存地址上的起始位;
根据所述参数确定信息获取第二数据适配参数,所述第二数据适配参数包括第二屏蔽位,所述第二屏蔽位用于屏蔽所述目标数据之外的数据;
根据所述第二内存参数和所述第二数据适配参数将所述目标数据写入所述共享内存;
其中,所述计算单元的数据并行度为所述计算单元的单位数据长度,所述共享内存的数据并行度为所述共享内存中的内存地址对应的数据长度。
本实施例根据所述计算单元的数据并行度、所述共享内存的数据并行度和所述目标数据在共享内存中的起始位置获取移位值和屏蔽位,以通过移位将目标数据写入同一个内存地址,或通过对目标数据进行分解并移位,将目标数据分别写入内存地址,由此,可以实现在共享内存为非对齐存储时目标数据的准确写入,提高存储资源的利用率。
进一步地,所述计算单元的数据并行度小于等于所述共享内存的数据并行度,所述方法还包括:
在确定所述目标数据将被写入所述共享内存的第一内存地址和第二内存地址中时,根据所述第二内存参数将所述目标数据分解为写入所述第一内存地址的第一数据和写入所述第二内存地址的第二数据。
进一步地,所述第二数据适配参数还包括第二右移值和第二左移值;
根据参数确定信息获取第二数据适配参数包括:
根据所述参数确定信息获取所述第一内存地址对应的第二右移值、第二内存地址对应的第二左移值和第二屏蔽位以获取所述第二数据适配参数。
进一步地,根据所述第二内存参数和所述第二数据适配参数将所述目标数据写入所述共享内存包括:
根据所述第二左移值将所述第二数据左移,将左移后的第二数据写入所述第二内存地址;
根据所述第二右移值将所述第一数据右移,将右移后的第一数据写入所述第一内存地址。
进一步地,根据所述参数确定信息获取第二数据适配参数包括:
根据所述共享内存的数据并行度和所述目标数据在共享内存中的起始位置计算所述第二右移值;
根据所述共享内存的数据并行度和所述第二右移值计算所述第二左移值;
根据所述计算单元的数据并行度、所述第二右移值和所述第二左移值计算所述第二屏蔽位。
进一步地,所述第二屏蔽位包括第一数据屏蔽位和第二数据屏蔽位;
根据所述计算单元的数据并行度、所述第二右移值和所述第二左移值计算所述第二屏蔽位包括:
根据所述第二右移值计算所述第一数据对应的第一数据屏蔽位;
根据所述计算单元的数据并行度和所述第二左移值计算所述第二数据对应的第二数据屏蔽位。
进一步地,所述第二数据适配参数还包括第二右移值,在所述目标数据被确定写入所述共享内存的同一内存地址时,根据所述参数确定信息获取第二数据适配参数包括:
根据所述共享内存的数据并行度和所述目标数据在共享内存中的起始位置计算所述第二右移值;
根据所述共享内存的数据并行度、所述计算单元的数据并行度、所述目标数据在共享内存中的起始位置和所述第二右移值计算所述第二屏蔽位。
本实施例根据所述计算单元的数据并行度、所述共享内存的数据并行度和所述目标数据在共享内存中的起始位置获取移位值和屏蔽位,以通过对目标数据进行移位,将目标数据写入对应的内存地址,由此,可以实现在共享内存为非对齐存储时目标数据的写入,提高存储资源的利用率。
第三方面,本发明实施例提供一种基于共享内存的数据读写系统,所述共享内存被多个计算单元共享,所述多个计算单元具有不同的数据并行度,所述系统包括:
共享内存;
多个计算单元,被配置为发送读数据请求,所述读数据请求包括所述计算单元的数据并行度和目标数据在共享内存中的起始位置;
数据适配单元,被配置为根据参数确定信息确定第一内存参数和第一数据适配参数,根据所述第一内存参数和所述第一数据适配参数输出所述目标数据至所述计算单元,所述参数确定信息包括所述计算单元的数据并行度、所述共享内存的数据并行度和所述目标数据在共享内存中的起始位置,所述第一内存参数用于表征所述目标数据在所述共享内存中的存储位置,所述存储位置包括所述目标数据在所述共享内存中对应的内存地址和在所述内存地址上的起始位,所述第一数据适配参数包括第一屏蔽位,所述第一屏蔽位用于屏蔽所述目标数据之外的数据;
其中,所述计算单元的数据并行度为所述计算单元的单位数据长度,所述共享内存的数据并行度为所述共享内存中的内存地址对应的数据长度。
进一步地,所述多个计算单元还被配置为发送写数据请求,所述写数据请求包括所述计算单元的数据并行度和目标数据在共享内存中的起始位置;
所述数据适配单元还被配置为根据所述参数确定信息确定第二内存参数和第二数据适配参数,根据所述第二内存参数和所述第二数据适配参数将所述目标数据写入所述共享内存,所述第二内存参数用于表征所述目标数据写入所述共享内存中的位置参数,所述位置参数包括所述目标数据对应的共享内存中的内存地址和在所述内存地址上的起始位,所述第二数据适配参数包括第二屏蔽位,所述第二屏蔽位用于屏蔽所述目标数据之外的数据。
进一步地,所述第一数据适配参数包括第一左移值和第一右移值,所述第二数据适配参数包括第二左移值和第二右移值;所述数据适配单元包括:
控制逻辑模块,被配置为根据所述参数确定信息获取所述第一内存参数、所述第二内存参数、所述第一数据适配参数和所述第二数据适配参数;
右移位模块,被配置为根据所述第一右移值或第二右移值使得所述目标数据向右移位;
左移位模块,被配置为根据所述第一左移值或第二左移值使得所述目标数据向左移位。
进一步地,所述第一数据适配参数还包括第一选通信号,所述数据适配单元还包括:
选通模块,被配置为根据所述第一选通信号选择输出所述右移位模块或左移位模块的输出;以及
屏蔽模块,被配置为根据所述第一屏蔽位屏蔽所述目标数据之外的数据。
进一步地,所述系统还包括:
写屏蔽单元,被配置为根据所述第二屏蔽位屏蔽所述目标数据之外的数据。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行以实现如本发明实施例第一方面和/或本发明实施例第二方面所述的方法。
第五方面,本发明实施例提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如本发明实施例第一方面和/或本发明实施例第二方面所述的方法。
本发明实施例的技术方案通过移位从共享内存中读取位于同一个内存地址或位于不同内存地址的目标数据,并通过移位将目标数据写入对应的内存地址,或通过对目标数据进行分解并移位,将目标数据写入对应的第一内存地址和第二内存地址,由此,可以实现在共享内存为非对齐存储时目标数据的读写,提高存储资源的利用率。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是现有技术的共享内存的示意图;
图2是本发明实施例的数据读写系统的示意图;
图3是本发明实施例的位于同一内存地址的数据存储的示意图;
图4是本发明实施例的位于不同内存地址的数据存储的示意图;
图5A是本发明实施例的目标数据在共享内存中的起始位置的示意图;
图5B是本发明实施例的共享内存的示意图;
图6是本发明实施例的数据传输至总线的示意图;
图7是本发明实施例的数据读取方法的流程图;
图8是本发明实施例的数据适配单元的示意图;
图9是本发明实施例的右移位模块的示意图;
图10是本发明实施例的左移位模块的示意图;
图11是本发明实施例读取位于同一内存地址的目标数据的过程图;
图12是本发明实施例读取位于不同内存地址的目标数据的过程图;
图13是本发明另一实施例的写数据方法的流程图;
图14是本发明另一实施例的数据适配单元的示意图;
图15是本发明实施例的写屏蔽单元的示意图;
图16是本发明实施例写入位于同一内存地址的目标数据的过程图;
图17是本发明实施例写入位于不同内存地址的目标数据的过程图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
图1是现有技术的共享内存的示意图。如图1所示,共享内存1被多个计算单元共享,其中,多个计算单元具有不同的数据并行度,也即不同的计算精度。如图1所示,在共享内存1中,每个内存地址可存储16位的数据,也即共享内存1的数据并行度为16。为了使得计算单元能够准确读写目标数据,共享内存1采用对齐模式进行存储,也即不管目标数据的长度为多少,均占用一个内存地址,例如,内存地址0存储数据长度为8的目标数据,内存地址1存储数据长度为4的目标数据。由此,在共享内存采用对齐模式存储数据时,在计算单元的数据并行度小于共享内存的数据并行度时,会造成存储资源的浪费。由此,本实施例提供一种基于共享内存的数据处理方法及系统,以在共享内存为非对齐模式时,能够准确读写目标数据。
图2是本发明实施例的数据读写系统的示意图。如图2所示,本发明实施例的数据读写系统2包括多个计算单元21、内存总线22、数据适配单元23、共享内存24和写屏蔽单元25。其中,多个计算单元21具有不同的数据并行度。计算单元21的数据并行度为计算单元处理数据的单位数据长度。共享内存24的数据并行度为其一个内存地址所能存储的最大数据长度。
计算单元21与内存总线22互相连接,内存总线22与数据适配单元23互相连接,数据适配单元23与共享内存24互相连接。写屏蔽单元25分别与计算单元21、内存总线22和数据适配单元23互相连接,用于在将目标数据写入共享内存24时,根据计算获得的屏蔽位和来自内存总线的写使能信号屏蔽与目标数据无关的数据。可选的,内存总线22可以为具有仲裁功能的内存总线,也即在具有多个使用总线的请求时,内存总线22可以通过预定算法进行仲裁以确定获取总线使用权的请求方。
由于本实施例的共享内存采用非对齐模式进行存储,则目标数据可能存储在共享内存的同一个内存地址上,也可能存储在不同内存地址上。在一种可选的实现方式中,计算单元21的数据并行度小于或等于共享内存24的数据并行度,由此,目标数据可能存储在相邻的两个内存地址上。
图3是本发明实施例的位于同一内存地址的数据存储的示意图。图4是本发明实施例的位于不同内存地址的数据存储的示意图。如图3和图4所示,共享内存24的数据并行度为W,计算单元21的数据并行度为L。图3和图4分别示出了目标数据存储在共享内存24的同一个内存地址和存储在相邻的两个内存地址的情况。
在计算单元21请求从共享内存24中读取目标数据时,计算单元21将读数据请求发送至内存总线22,其中,读数据请求包括计算单元21的数据并行度L和目标数据在共享内存中的起始位置A。在一种可选的实现方式中,计算单元21提供的目标数据在共享内存中的起始位置A是以数据为单位的编址,也即位置A和A+1分别对应第j个数据和第j+1个数据,j为大于0的整数,如图5A所示,目标数据5a在共享内存中的起始位置A为34,则目标数据5a的第1位数据为共享内存中第35个位置上的数据,若共享内存的数据并行度为16,则目标数据5a的第1位数据存储在共享内存的第3行第3列。
内存总线22响应于该读数据请求,将计算单元21的数据并行度L和目标数据在共享内存中的起始位置A发送至数据适配单元23。数据适配单元23被配置为根据参数确定信息确定对应的内存参数Addr。其中,参数确定信息包括计算单元21的数据并行度L、目标数据在共享内存中的起始位置A以及共享内存24的数据并行度W。内存参数Addr用于表征目标数据在共享内存24中的存储位置,存储位置包括目标数据在共享内存中对应的内存地址和在内存地址上的起始位。
数据适配单元23可以根据目标数据对应的内存参数Addr确定目标数据是否位于共享内存24的同一个内存地址中,并根据移位、选通及屏蔽处理将目标数据输出至内存总线22。
在一种可选的实现方式中,可以通过取整运算A/W和(A+L)/W的值是否相等来判断目标数据是否存储在共享内存的同一个内存地址中,在A/W和(A+L)/W的值相等时,目标数据存储在共享内存的同一个内存地址中,在A/W和(A+L)/W的值不相等时,目标数据存储在共享内存的不同内存地址中。
图5B是本发明实施例的共享内存的示意图。应理解,图5B所示的共享内存仅仅是示例性的,并不对本实施例的共享内存进行限制,共享内存的数据并行度根据可根据实际情况(例如对应的多个计算单元的数据并行度)进行配置。在一种可选的实现方式中,共享内存是以2的整数倍为单位进行编址。如图5B所示,本实施例以两个字节为单位进行编址(也即共享内存24的数据并行度W为16),计算单元21的数据并行度L为8为例进行描述,其中,目标数据5a在共享内存中的起始位置A为34。对于目标数据5a,A/W=34/16=2,(A+L)/W=(34+8)/16=2,因此,目标数据5a存储在共享内存的同一个内存地址中。可通过计算得出目标数据5a在共享内存24中的内存地址为34/16=2、在该内存地址上的起始位为34%16=2(取余运算),也即,目标数据5a为存储在共享内存24的第三行的第三个数据至第十个数据。本实施例采用取整运算和取余运算来确定目标数据对应的内存地址和在内存地址上对应的起始位,容易理解,在共享内存的数据并行度W为2的整数倍时,可以采用取低地址和取高地址运算来确定目标数据对应的内存地址和在该内存地址上对应的起始位。
图6是本发明实施例的数据传输至总线的示意图。如图6所示,若目标数据在共享内存24中位于同一个内存地址中,则将目标数据左移后输出至内存总线22。若目标数据在共享内存24中位于相邻的两个内存地址中,则需要将第一内存地址中的部分数据(也即目标数据的前n位数据)左移,并将第二内存地址中的另一部分数据(也即目标数据的后L-n位数据)右移,然后将两部分数据进行拼接后输出至内存总线22。内存总线22将该目标数据发送给计算单元21。其中,n为大于等于0小于等于L的整数。
在计算单元21请求将目标数据写入共享内存24时,计算单元21将写数据请求发送至内存总线22,其中,写数据请求包括计算单元21的数据并行度L和目标数据在共享内存中的起始位置A。内存总线22响应于该写数据请求,将计算单元21的数据并行度L、目标数据在共享内存中的起始位置A和目标数据发送至数据适配单元23。数据适配单元23被配置为根据计算单元21的数据并行度L、目标数据在共享内存中的起始位置A以及共享内存24的数据并行度W确定对应的内存参数Addr。其中,该内存参数Addr用于表征目标数据写入共享内存24中的位置参数,位置参数包括目标数据在共享内存中对应的内存地址和在该内存地址上的起始位。数据适配单元23可以根据目标数据对应的内存参数Addr确定目标数据是否位于共享内存24的同一个内存地址中。在一种可选的实现方式中,可以通过取整运算A/W和(A+L)/W的值是否相等来判断目标数据是否要被写入共享内存的同一个内存地址,在A/W和(A+L)/W的值相等时,目标数据将被写入共享内存的同一个内存地址中,在A/W和(A+L)/W的值不相等时,目标数据将被写入共享内存的不同内存地址中。
响应于目标数据被确定为写入共享内存24的不同内存地址中,数据适配单元23对目标数据进行分解,并获取对应的数据适配参数(包括移位值和屏蔽位等),然后根据对应的数据适配参数将目标数据写入共享内存24。例如,若共享内存24的数据并行度W为16。计算单元21的数据并行度L为8,目标数据在共享内存中的起始位置A为30。其中,A/W=30/16=1,(A+L)/W=(30+8)/16=2,由此,目标数据将被写入共享内存的不同内存地址中,其中,目标数据的前n位被写入共享内存中的第一内存地址中,后L-n位被写入共享内存的第二内存地址中,n为大于等于0小于等于L的整数。并且,第一内存地址为A/W=30/16=1(也即共享内存的第二个内存地址),第二内存地址为2(也即共享内存的第三个内存地址),目标数据在第一内存地址1中的起始位为30%16=14,在第二内存地址2中的起始位为0,由此,将目标数据分解为数据长度为2的第一数据(目标数据的前2位数据)和数据长度为6的第二数据(目标数据的后6位数据),通过移位并按照目标数据的起始位将第一数据写入第一内存地址1中,将第二数据写入第二内存地址2中。
响应于目标数据被确定为写入共享内存24的同一个内存地址中,数据适配单元23获取对应的数据适配参数(包括移位值和屏蔽位等),然后根据对应的数据适配参数将目标数据写入共享内存24。例如,若共享内存24的数据并行度W为16。计算单元21的数据并行度L为8,目标数据在共享内存中的起始位置A为34。其中,A/W=34/16=2,(A+L)/W=(34+8)/16=2,由此,目标数据将被写入共享内存的同一个内存地址2(也即共享内存的第三个内存地址)中,并且,目标数据在内存地址2中的起始位为34%16=2,由此,可以通过移位并按照目标数据的起始位将目标数据写入对应的内存地址中。
由此,本实施例通过移位从共享内存中读取位于同一个内存地址或位于不同内存地址的目标数据,并通过移位将目标数据写入同一个内存地址,或通过对目标数据进行分解并移位,将目标数据分别写入不同的内存地址,由此,可以实现在共享内存为非对齐存储时目标数据的准确读写,提高了存储资源的利用率。
图7是本发明实施例的数据读取方法的流程图。本实施例的数据读取方法用于描述计算单元21从共享内存中读取目标数据的过程。如图7所示,本实施例的数据处理方法具体包括以下步骤:
步骤S110,获取计算单元的读数据请求。其中,读数据请求包括计算单元的数据并行度L和目标数据在共享内存中的起始位置A。本实施例以数据为单位对目标数据进行编址,即A与A+1分别对应共享内存中的第j个数和第j+1个数,j为大于0的整数。例如,目标数据在共享内存中的起始位置A为34,则目标数据的第1位数据为共享内存中第35个位置上的数据,若共享内存的数据并行度为16,则目标数据的第1位数据存储在共享内存的第3行第3列。
步骤S120,根据参数确定信息确定该目标数据对应的内存参数Addr。其中,参数确定信息包括计算单元的数据并行度L、共享内存的数据并行度W和目标数据在共享内存中的起始位置A。目标数据对应的内存参数Addr用于表征该目标数据在共享内存中的存储位置。该存储位置包括该目标数据在共享内存中对应的内存地址(例如在共享内存中的第几行)和在该内存地址上的起始位。在一种可选的实现方式中,通过取整运算A/W获取该目标数据对应的内存地址。通过取余运算A%W获取在该内存地址上的起始位。
步骤S130,根据参数确定信息获取对应的数据适配参数。其中,数据适配参数包括屏蔽位M。屏蔽位M用于屏蔽目标数据之外的数据的干扰。
步骤S140,根据该目标数据对应的内存参数Addr和数据适配参数输出该目标数据至计算单元。
本发明实施例根据计算单元的数据并行度、共享内存的数据并行度和目标数据在共享内存中的起始位置确定对应的内存参数,并根据内存参数确定目标数据是否位于同一内存地址上,并获取对应的数据适配参数,根据该对应的数据适配参数输出目标数据至计算单元,由此,可以实现在共享内存为非对齐存储时目标数据的读取,提高存储资源的利用率。
在一种可选的实现方式中,可以通过取整运算A/W和(A+L)/W的值是否相等来判断目标数据是否存储在共享内存的同一个内存地址中,在A/W和(A+L)/W的值相等时,目标数据存储在共享内存的同一个内存地址中,在A/W和(A+L)/W的值不相等时,目标数据存储在共享内存的不同内存地址中。
在一种可选的实现方式中,计算单元的数据并行度L小于或等于共享内存的数据并行度W。在目标数据位于共享内存的第一内存地址A/W和第二内存地址A/W+1上时,数据适配参数还包括左移值LS、右移值RS和选通信号Sel,获取对应的数据适配参数具体为:根据共享内存的数据并行度W、计算单元的数据并行度L和目标数据在共享内存中的起始位置A获取第一内存地址A/W对应的左移值LS、第二内存地址A/W+1对应的右移值RS、选通信号Sel和屏蔽位M。
由此,目标数据可以包括位于第一内存地址A/W上的第一数据和位于第二内存地址A/W+1的第二数据。根据该目标数据对应的内存参数和数据适配参数输出该目标数据至计算单元具体为:根据该目标数据对应的数据适配参数读取并缓存位于第一内存地址A/W上的第一数据,并根据该目标数据对应的数据适配参数读取位于第二内存地址A/W+1的第二数据,然后将第一数据和第二数据进行拼接以输出目标数据至计算单元。在一种可选的实现方式中,根据选通信号Sel选择左移后的数据或右移后的数据输出以使得第一数据和第二数据进行拼接。例如,目标数据的数据长度为8,第一数据为目标数据的前2位数据,第二数据为目标数据的后6位数据,则根据选通信号将输出左移后的数据的前2位,输出右移后的数据的后6位,由此,可以实现第一数据和第二数据的拼接。
进一步地,获取对应的数据适配参数具体包括:
根据共享内存的数据并行度W和目标数据在共享内存中的起始位置A计算第一数据对应的左移值LS。具体地,左移值LS=A%W(取余运算)。
根据共享内存的数据并行度W和左移值LS计算第二数据对应的右移值RS。具体地,右移值RS=W-LS。
例如,共享内存的数据并行度W=16,目标数据在共享内存中的起始位置A=30,则第一数据对应的左移值LS=A%W=30%16=14。也即第一数据向左移位14位。第二数据的右移值RS=W-LS=16-14=2,也即第二数据向右移位2位。
根据右移值RS计算选通信号Sel:
其中,i为该内存地址上的所有数据位置,0≤i≤W,Sel(i)=0表征选取缓冲后的左移数据作为输出,Sel(i)=1表征选取右移数据作为输出。应理解,在本实施例中,以Sel=0表征左移数据作为输出为例进行说明,在其他实施例中,也可以使得Sel=1表征左移数据作为输出,本实施例并不对此进行限定。
根据计算单元的数据并行度L计算屏蔽位M。
其中,i为该内存地址上的所有数据位置,0≤i≤W,M(i)=1表征数据有效,在数据有效时,输出该数据,M(i)=0表征数据无效,输出0。
由此,本实施例在共享内存为非对齐存储时可以实现目标数据的准确读取,提高存储资源的利用率。
在一种可选的实现方式中,目标数据位于共享内存的同一内存地址上时,根据屏蔽位将左移后的目标数据进行屏蔽处理后,输出准确的目标数据至计算单元。其中,数据适配参数还包括左移值LS,容易理解,在目标数据在对应的内存地址上的起始位为0,则左移值LS为0。获取对应的数据适配参数具体包括:
根据共享内存的数据并行度W和目标数据在共享内存中的起始位置A计算目标数据对应的左移值LS。具体地,左移值LS=A%W(取余运算)。例如,共享内存的数据并行度W=16,目标数据在共享内存中的起始位置A=34,则目标数据对应的左移值LS=A%W=34%16=2。也即目标数据向左移位2位。
根据计算单元的数据并行度L计算屏蔽位M。
其中,i为该内存地址上的所有数据位置,0≤i≤W,M(i)=1表征数据有效,在数据有效时,输出该数据,M(i)=0表征数据无效,输出0。
由此,本实施例通过移位等处理从共享内存中读取位于同一个内存地址或位于不同内存地址的目标数据,由此,可以实现在共享内存为非对齐存储时目标数据的准确读取,提高了存储资源的利用率。
图8是本发明实施例的数据适配单元的示意图。如图8所示,数据适配单元23包括控制逻辑模块231、右移位模块232、左移位模块233、缓冲模块234、选通模块235和屏蔽模块236。其中,控制逻辑模块231被配置为根据计算单元的数据并行度L、目标数据在共享内存中的起始位置A和共享内存的数据并行度W计算内存参数Addr和对应的数据适配参数,数据适配参数包括左移值LS和屏蔽位M。在目标数据存储在共享内存的不同内存地址上时,数据适配参数还包括右移值RS和选通信号Sel。右移位模块232被配置为根据右移值对目标数据进行右移。左移位模块233被配置为根据左移值对目标数据进行左移。缓冲模块234被配置为在目标数据位于不同内存地址时对左移位模块233的输出进行缓冲。选通模块235被配置为根据选通信号选择输出左移的目标数据或右移的目标数据,以使得位于不同内存地址上的数据进行拼接。屏蔽模块236被配置为根据屏蔽位M屏蔽与目标数据无关的数据以准确输出目标数据至计算单元。
图9是本发明实施例的右移位模块的示意图。如图9所示,右移位模块232具有多层右移网络,本实施例三层(即右移1位、右移2位、右移4位)为例,应理解,本实施例并不对此进行限定。例如,在右移值RS=2时,右移位模块232选择第二层右移网络对目标数据进行移位。假设目标数据为11010110,在右移值RS=2时,右移位模块232的输出为00110101。
图10是本发明实施例的左移位模块的示意图。如图10所示,左移位模块233具有多层左移网络,本实施例三层(即左移1位、左移2位、左移4位)为例,应理解,本实施例并不对此进行限定。例如,在左移值LS=2时,左移位模块233选择第二层左移网络对目标数据进行移位。假设目标数据为11010110,在左移值LS=2时,左移位模块233的输出为11010100。
在本实施例中,控制逻辑模块231将内存参数Addr输出至共享内存24,以使得共享内存24输出对应的目标数据。控制逻辑模块231将右移值RS输出至右移位模块232,将左移值LS输出至233,将选通信号Sel输出至选通模块235,将屏蔽位M输出至屏蔽模块236。
在一种可选的实现方式中,可以通过取整运算A/W和(A+L)/W的值是否相等来判断目标数据是否存储在共享内存的同一个内存地址中,在A/W和(A+L)/W的值相等时,目标数据存储在共享内存的同一个内存地址中,在A/W和(A+L)/W的值不相等时,目标数据存储在共享内存的不同内存地址中。
在确定A/W和(A+L)/W的值相等,也即目标数据位于同一个内存地址上时,计算目标数据在共享内存24中的内存地址为A/W(取整运算),在内存地址A/W上的起始位为A%W(取余运算)。由此,可以精确的从内存地址为A/W中读取数据长度为L的目标数据。此时,由于目标数据位于共享内存24的同一个内存地址上,因此,右移值RS和选通信号Sel均设置为0。应理解,在本实施例中,以Sel=0表征左移数据作为输出为例进行说明,在其他实施例中,也可以使得Sel=1表征左移数据作为输出,本实施例并不对此进行限定。
左移位模块233接收共享内存24输出的目标数据,并将目标数据向左移位LS后,输出移位后的目标数据至选通模块235,选通模块235根据选通信号Sel使得左移数据作为输出,屏蔽模块236根据屏蔽位M屏蔽与目标数据不相关的数据后将目标数据输出至计算单元。
在确定A/W和(A+L)/W的值不相等,也即目标数据位于共享内存24的不同内存地址上。目标数据包括存储在共享内存24中的第一内存地址A/W(取整运算)上的第一数据和存储在第二内存地址A/W+1上的第二数据。计算目标数据在第一内存地址A/W上的起始位A%W(取余运算)。由于计算单元21的数据并行度L小于共享内存24的数据并行度W,因此,目标数据在第二内存地址A/W+1上的起始位为0。由此,可以精确地从第一内存地址A/W中读取目标数据的第一数据,从第二内存地址A/W+1中读取目标数据的第二数据。其中,将从第一内存地址A/W中读取的第一数据输出至左移位模块233,将从第二内存地址A/W+1中读取的第二数据输出至右移位模块232。左移位模块233根据左移值LS将第一数据左移后输出至缓冲模块234缓冲一个时钟周期,缓冲模块234将缓冲后的第一数据输出至选通模块235。右移位模块232根据右移值RS将第二数据右移后输出至选通模块235。由此,缓冲模块234可以使得第一数据和第二数据同时到达选通模块235。选通模块235根据选通信号Sel使得第一数据和第二数据进行拼接以输出目标数据至屏蔽模块236。屏蔽模块236根据屏蔽位M屏蔽与目标数据无关的数据后将目标数据输出至计算单元。
由此,本实施例通过移位等处理从共享内存中读取位于同一个内存地址或位于不同内存地址的目标数据,由此,可以实现在共享内存为非对齐存储时目标数据的准确读取,提高了存储资源的利用率。
图11是本发明实施例读取位于同一内存地址的目标数据的过程图。如图11所示,本实施以共享内存的数据并行度M=16,计算单元的数据并行度L=8,目标数据在共享内存中的起始位置A=34为例进行具体描述。其中,A/M=34/16=2,(A+L)/M=(34+8)/16=2,由此,目标数据位于共享内存的同一内存地址2(也即共享内存的第三行)。目标数据在内存地址2上的起始位为A%M=34%16=2。由此,如图11所示,目标数据为11011001。共享内存将内存地址为2上的数据111输出至左移位模块233。容易理解,由于目标数据位于共享内存的同一内存地址上,因此右移值RS=0。左移位模块233根据左移值LS=A%M=34%16=2将目标数据左移2位,得到数据112。由于目标数据位于共享内存的同一内存地址上,选通信号Sel为0,因此,选通模块选择左移位模块232的输出数据112,将获得的数据113输出至屏蔽模块236,屏蔽模块236根据屏蔽位M屏蔽与目标数据11011001无关的数据(也即将与目标数据无关的数据置0)后,将数据114(也即目标数据)通过内存总线输出至计算单元。由此,本实施例实现了在共享内存为非对齐存储时目标数据的准确读取,提高了存储资源的利用率。
图12是本发明实施例读取位于不同内存地址的目标数据的过程图。如图12所示,本实施以共享内存的数据并行度M=16,计算单元的数据并行度L=8,目标数据在共享内存中的起始位置A=30为例进行具体描述。其中,A/M=30/16=1,(A+L)/M=(30+8)/16=2,由此,目标数据位于共享内存的第一内存地址1和第二内存地址2上(也即共享内存的第二行和第三行)。目标数据的第一数据在内存地址1上的起始位为A%M=30%16=14。目标数据的第二数据在内存地址2上的起始位为0。由此,如图12所示,目标数据的第一数据为10,第二数据为101101。共享内存将内存地址为1上的数据121输出至左移位模块233。左移位模块233根据左移值LS=A%M=30%16=14将目标数据左移14位,得到数据122,将数据122输出至缓存模块234进行缓存。共享内存将内存地址为2上的数据123输出至右移位模块232。右移位模块232根据右移值RS=M-LS=16-14=2将目标数据右移2位,得到数据124。选通模块235根据选通信号Sel对数据122和数据124进行选通。
可选的,选通信号为:
其中,i为该内存地址上的所有数据位置,0≤i≤W,Sel(i)=0表征选取缓冲后的左移数据作为输出,Sel(i)=1表征选取右移数据作为输出。应理解,在本实施例中,以Sel=0表征左移数据作为输出为例进行说明,在其他实施例中,也可以使得Sel=1表征左移数据作为输出,本实施例并不对此进行限定。
由此,选通模块235在i<2时选择左移数据作为输出,在i≥2时选择右移数据作为输出,得到数据125。屏蔽模块236根据屏蔽位M屏蔽与目标数据10101101无关的数据(也即将与目标数据无关的数据置0)后,将数据126(也即目标数据)通过内存总线输出至计算单元。由此,本实施例实现了在共享内存为非对齐存储时目标数据的准确读取,提高了存储资源的利用率。
图13是本发明另一实施例的写数据方法的流程图。本实施例的数据处理方法用于描述将计算单元21的输出数据写入共享内存的过程。如图13所示,本实施例的数据处理方法具体包括以下步骤:
步骤S210,获取计算单元的写数据请求。其中,写数据请求包括计算单元的数据并行度L和目标数据在共享内存中的起始位置A。本实施例以数据为单位对目标数据进行编址,即A与A+1分别对应共享内存中的第j个数和第j+1个数,j为大于0的整数。例如,目标数据在共享内存中的起始位置A为34,则目标数据的第1位数据将被写入共享内存中第35个存储位,若共享内存的数据并行度为16,则目标数据的第1位数据将被写入共享内存的第3行第3列对应的存储位。
步骤S220,根据参数确定信息确定该目标数据对应的内存参数Addr。其中,参数确定信息包括计算单元的数据并行度L、共享内存的数据并行度W和目标数据在共享内存中的起始位置A。目标数据对应的内存参数Addr用于表征该目标数据写入共享内存中的位置参数。该存储参数包括该目标数据在共享内存中对应的内存地址(例如在共享内存中的第几行)和在该内存地址上的起始位。在一种可选的实现方式中,通过取整运算A/W获取该目标数据对应的内存地址。通过取余运算A%W获取在该内存地址上的起始位。
步骤S230,根据参数确定信息获取对应的数据适配参数。其中,数据适配参数包括屏蔽位M。屏蔽位M用于屏蔽目标数据之外的数据的干扰。在目标数据将被写入共享内存的同一个内存地址时,数据适配参数还包括右移值RS。容易理解,在目标数据在对应内存上的起始位为0时,右移值RS为0。在目标数据将被写入共享内存的不同内存地址时,数据适配参数还包括右移值RS和左移值LS。
步骤S240,根据该目标数据对应的内存参数和数据适配参数将目标数据写入共享内存。
本发明实施例根据计算单元的数据并行度、共享内存的数据并行度和目标数据在共享内存中的起始位置确定对应的内存参数,并根据内存参数确定目标数据是否将被写入同一内存地址上,并根据获取的数据适配参数将目标数据写入对应的内存地址中,由此,可以实现在共享内存为非对齐存储时目标数据的准确写入,同时提高存储资源的利用率。
在一种可选的实现方式中,可以通过取整运算A/W和(A+L)/W的值是否相等来判断目标数据是否将被写入共享内存的同一个内存地址中,在A/W和(A+L)/W的值相等时,目标数据将被写入共享内存的同一个内存地址中,在A/W和(A+L)/W的值不相等时,目标数据将被写入共享内存的不同内存地址中。
在一种可选的实现方式中,计算单元的数据并行度L小于或等于共享内存的数据并行度W。本实施例的数据处理方法还包括:在确定目标数据将被写入共享内存的第一内存地址A/W和第二内存地址A/W+1中时,根据目标数据对应的内存参数将目标数据分解为写入第一内存地址的第一数据(目标数据的前n位数据)和写入第二内存地址的第二数据(目标数据的后L-n位数据),n为大于0小于L的整数。进一步地,根据参数确定信息获取对应的数据适配参数具体为:根据共享内存的数据并行度W、计算单元的数据并行度L和目标数据在共享内存中的起始位置A获取第一内存地址对应的右移值RS、第二内存地址对应的左移值LS和屏蔽位M。
在本实施例中,根据该目标数据对应的数据适配参数将目标数据写入共享内存进一步包括:根据屏蔽位M和写使能信号wen获取字使能信号bwen,根据字使能信号bwen将目标数据写入共享内存中。其中,内存总线22将写使能信息wen发送给数据适配单元23。
其中,根据字使能信号bwen将目标数据写入共享内存中进一步包括:根据左移值LS将目标数据的第二数据左移,并根据字使能信号bwen将左移后的第二数据写入第二内存地址中。根据右移值RS将第一数据右移,并根据字使能信号bwen将右移后的第一数据写入第一内存地址中。
进一步地,根据参数确定信息获取对应的数据适配参数具体包括:
根据共享内存的数据并行度W和目标数据在共享内存中的起始位置A计算第一数据对应的右移值RS。具体地,右移值RS=A%W(取余运算)。
根据共享内存的数据并行度W和右移值RS计算第二数据对应的左移值LS。具体地,左移值LS=W-RS。
例如,共享内存的数据并行度W=16,目标数据在共享内存中的起始位置A=30,则第一数据对应的第一内存地址为A/W=30/16=1,第一数据在对应的第一内存地址的起始位为A%W=30%16=14。第二数据对应的第二内存地址为A/W+1=2,第二数据在对应的第二内存地址的起始位为0。第一数据对应的右移值LS=A%W=30%16=14。也即第一数据向右移位14位。第二数据的左移值LS=W-RS=16-14=2,也即第二数据向左移位2位。
根据计算单元的数据并行度L、右移值RS和左移值LS计算屏蔽位M。其中,屏蔽位包括第一数据屏蔽位和第二数据屏蔽位。具体地,根据右移值RS计算目标数据的第一数据对应的第一数据屏蔽位M1:
其中,i为该内存地址上的所有数据位置,0≤i≤W,M1(i)=1表征数据有效,在数据有效时,写入该数据。
根据计算单元的数据并行度L和左移值LS计算目标数据的第二数据对应的第二数据屏蔽位M2:
其中,i为该内存地址上的所有数据位置,0≤i≤W,M2(i)=1表征数据有效,在数据有效时,写入该数据。
由此,本实施例在共享内存为非对齐存储时可以实现目标数据的准确写入,提高存储资源的利用率。
在一种可选的实现方式中,在目标数据位于共享内存的同一内存地址上时,左移值为0,根据屏蔽位将右移后的目标数据进行屏蔽处理后,将目标数据准确地写入共享内存中。
进一步地,根据参数确定信息获取对应的数据适配参数具体包括:
根据共享内存的数据并行度W和目标数据在共享内存中的起始位置A计算目标数据对应的右移值RS。具体地,右移值RS=A%W(取余运算)。
根据共享内存的数据并行度W、计算单元的数据并行度L和目标数据在共享内存中的起始位置A计算屏蔽位M:
其中,Rp=(A+L)%W,i为该内存地址上的所有数据位置,0≤i≤W,M(i)=1表征数据有效,在数据有效时,写入该数据。
由此,本实施例通过移位等处理将目标数据写入共享内存中的同一个内存地址或不同内存地址中,由此,可以实现在共享内存为非对齐存储时目标数据的准确写入,提高了存储资源的利用率。
图14是本发明另一实施例的数据适配单元的示意图。如图14所示,数据适配单元23包括控制逻辑模块141、右移位模块142、左移位模块143和缓冲模块144。其中,控制逻辑模块141被配置为根据计算单元的数据并行度L、目标数据在共享内存中的起始位置A和共享内存的数据并行度W计算内存参数Addr和对应的数据适配参数,数据适配参数包括左移值LS、右移值RS和屏蔽位M。右移位模块142被配置为根据右移值RS对目标数据进行右移。左移位模块143被配置为根据左移值LS对目标数据进行左移。缓冲模块144被配置为在目标数据将被写入不同内存地址时,对右移位模块142的输出进行缓冲。
进一步地,写屏蔽单元25根据屏蔽位M和来自内存总线22的写使能信号wen生成字使能信号bwen,共享内存24根据内存参数Addr和字使能信号bwen将目标数据写入对应的内存地址中。
图15是本发明实施例的写屏蔽单元的示意图。在一种可选的实现方式中,如图15所示,写屏蔽单元25包括多个与门电路251。其中,与门电路251的数量可以根据共享内存的数据并行度W设置。与门电路251的输入端分别输入写使能信号wen和各屏蔽位M(i),以分别输出字使能信号bwen。如图15所示,本实施例以共享内存的数据并行度W=8为例。目标数据a的数据长度为7,且其将被写入共享内存的同一个内存地址AW1中,在内存地址AW1的起始位为0。对于目标数据a,其屏蔽位M=11111110,也即,在内存地址AW1的前7位写入目标数据a。目标数据b的数据长度为6,且其将被写入共享内存的内存地址中AW2和AW3中。目标数据b包括第一数据b1和第二数据b2,如图15所示,对于第一数据b1,其屏蔽位M1=00000111,对于第二数据b2,其屏蔽位M2=11100000,也即在内存地址AW2的后3位写入第一数据b1,在内存地址AW3的前3位写入第二数据b2。由此,本实施例可以通过写屏蔽单元屏蔽与目标数据无关的数据,也即,在将目标数据准确写入共享内存的同时,不会对其他数据造成影响。
在一种可选的实现方式中,可以通过取整运算A/W和(A+L)/W的值是否相等来判断目标数据是否将被写入共享内存的同一个内存地址中,在A/W和(A+L)/W的值相等时,目标数据将被写入共享内存的同一个内存地址中,在A/W和(A+L)/W的值不相等时,目标数据将被写入共享内存的不同内存地址中。
在确定A/W和(A+L)/W的值相等,也即目标数据位于同一个内存地址上,目标对应的共享内存24中的内存地址为A/W(取整运算)。此时,由于目标数据写入共享内存24的同一个内存地址上,因此,左移值LS为0,右移值RS=A%W(取余运算)。右移位模块142接收计算单元输出的目标数据In,并将目标数据In向右移位RS后,输出移位后的目标数据。写屏蔽单元25根据屏蔽位M和写使能信号wen生成字使能信号bwen以控制共享内存24根据内存参数Addr将右移后的目标数据准确写入对应的内存地址中。
在确定A/W和(A+L)/W的值不相等,也即目标数据将被写入共享内存24的不同内存地址上。将目标数据分解为第一数据和第二数据,其中,将目标数据的第一数据写入第一内存地址A/W中,将目标数据的第二数据写入第二内存地址A/W+1中。计算目标数据对应的第一内存地址A/W上的起始位为A%W(取余运算)。由于计算单元21的数据并行度L小于等于共享内存24的数据并行度W,因此,目标数据对应的第二内存地址A/W+1上的起始位为0。其中,将第一数据输入至右移位模块142,将第二数据输入至左移位模块143。右移位模块142将右移后的第一数据输出至缓冲模块144进行缓冲。共享内存24根据内存参数Addr和字使能信号bwen将左移后的第二数据写入第二内存地址A/W+1中。共享内存24根据内存参数Addr和字使能信号bwen将缓冲后的第一数据写入第一内存地址A/W中。
由此,本实施例通过移位等处理将目标数据写入共享内存的同一个内存地址或不同内存地址中,由此,可以实现在共享内存为非对齐存储时目标数据的准确写入,提高了存储资源的利用率。
图16是本发明实施例写入位于同一内存地址的目标数据的过程图。如图16所示,本实施以共享内存的数据并行度M=16,计算单元的数据并行度L=8,目标数据在共享内存中的起始位置A=34为例进行具体描述。其中,A/M=34/16=2,(A+L)/M=(34+8)/16=2,由此,目标数据位于共享内存的同一内存地址2(也即共享内存的第三行)。目标数据在内存地址2上的起始位为A%M=34%16=2。由此,如图16所示,目标数据为11011001,其在内存总线对应的数据为x=1101100100000000。将数据x输出至右移位模块142。右移位模块142根据右移值LS=A%M=34%16=2将数据x右移2位,得到数据x1=0011011001000000。根据共享内存的数据并行度W、计算单元的数据并行度L和目标数据在共享内存中的起始位置A计算的屏蔽位M=0011111111000000。由此,如图16所示,共享内存可以根据屏蔽位M、写使能信号wen和内存参数Addr(包括内存地址和在该内存地址上的起始位)将目标数据11011001写入对应的位置。由此,本实施例实现了在共享内存为非对齐存储时目标数据的准确写入,提高了存储资源的利用率,同时,不会对其他数据造成影响。
图17是本发明实施例写入位于不同内存地址的目标数据的过程图。如图17所示,本实施例以共享内存的数据并行度M=16,计算单元的数据并行度L=8,目标数据在共享内存中的起始位置A=30为例进行具体描述。其中,A/M=30/16=1,(A+L)/M=(30+8)/16=2,由此,目标数据将被写入共享内存的第一内存地址1和第二内存地址2上(也即共享内存的第二行和第三行)。其中,目标数据的第一数据对应的第一内存地址1上的起始位为A%M=30%16=14。目标数据的第二数据对应的第二内存地址2上的起始位为0。由此,如图17所示,目标数据为10101101,在内存总线上对应的数据y=1010110100000000。在确认对应的第一内存地址及在其上的起始位后,将数据y进行分解,得到第一数据y1=1000000000000000和第二数据y2=0010110100000000。将第一数据y1输出至右移位模块142,右移位模块142根据右移值RS=A%M=30%16=14将数据y1右移14位得到第一数据y12,并将第一数据y2输出至缓冲模块144。将第二数据y2输出至左移位模块143,左移位模块143根据左移值LS=W-RS=16-14=2将数据y2左移2位得到第一数据y21。根据计算单元的数据并行度L和左移值LS计算第二数据对应的屏蔽位M2=1111110000000000。共享内存根据内存参数Addr、屏蔽位M和写使能信号将第二数据写入对应的位置。根据右移值RS计算第一数据对应的屏蔽位M1=0000000000000011。共享内存根据内存参数Addr、屏蔽位M和写使能信号将第一数据写入对应的位置。由此,本实施例实现了在共享内存为非对齐存储时目标数据的准确写入,提高了存储资源的利用率,同时,不会对其他数据造成影响。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种基于共享内存的数据读取方法,所述共享内存被多个计算单元共享,所述多个计算单元具有不同的数据并行度,其特征在于,所述方法包括:
获取计算单元的读数据请求,所述读数据请求包括所述计算单元的数据并行度和目标数据在共享内存中的起始位置;
根据参数确定信息确定第一内存参数,所述参数确定信息包括所述计算单元的数据并行度、所述共享内存的数据并行度和所述目标数据在共享内存中的起始位置,所述第一内存参数用于表征所述目标数据在所述共享内存中的存储位置,所述存储位置包括所述目标数据在所述共享内存中对应的内存地址和在所述内存地址上的起始位;
根据所述参数确定信息获取第一数据适配参数,所述第一数据适配参数包括第一屏蔽位,所述第一屏蔽位用于屏蔽所述目标数据之外的数据,若所述目标数据位于所述共享内存的第一内存地址和第二内存地址上,所述第一数据适配参数还包括第一左移值、第一右移值和第一选通信号,若所述目标数据位于所述共享内存的同一内存地址上,所述第一数据适配参数还包括第一左移值;
根据所述第一内存参数和所述第一数据适配参数输出所述目标数据至所述计算单元;
其中,所述计算单元的数据并行度为所述计算单元的单位数据长度,所述共享内存的数据并行度为所述共享内存中的一个内存地址对应的数据长度。
2.根据权利要求1所述的方法,其特征在于,所述计算单元的数据并行度小于等于所述共享内存的数据并行度;
根据所述参数确定信息获取第一数据适配参数包括:
根据所述参数确定信息获取所述第一内存地址对应的第一左移值、所述第二内存地址对应的第一右移值、第一选通信号和所述第一屏蔽位以获取所述第一数据适配参数。
3.根据权利要求1所述的方法,其特征在于,根据所述参数确定信息获取第一数据适配参数包括:
根据所述共享内存的数据并行度和所述目标数据在共享内存中的起始位置计算所述第一左移值;
根据所述计算单元的数据并行度计算所述第一屏蔽位。
4.一种基于共享内存的写数据方法,所述共享内存被多个计算单元共享,所述多个计算单元具有不同的数据并行度,其特征在于,所述方法包括:
获取计算单元的写数据请求,所述写数据请求包括所述计算单元的数据并行度和目标数据在共享内存中的起始位置;
根据参数确定信息确定第二内存参数,所述参数确定信息包括所述计算单元的数据并行度、所述共享内存的数据并行度和所述目标数据在共享内存中的起始位置,所述第二内存参数用于表征所述目标数据写入所述共享内存中的位置参数,所述位置参数包括所述目标数据对应的所述共享内存中的内存地址和在所述内存地址上的起始位;
根据所述参数确定信息获取第二数据适配参数,所述第二数据适配参数包括第二屏蔽位,所述第二屏蔽位用于屏蔽所述目标数据之外的数据;其中,若所述目标数据被确定写入所述共享内存的同一个内存地址,所述第二数据适配参数还包括第二右移值,若所述目标数据被确定写入所述共享内存的不同内存地址,所述第二数据适配参数还包括右移值和左移值;
根据所述第二内存参数和所述第二数据适配参数将所述目标数据写入所述共享内存;
其中,所述计算单元的数据并行度为所述计算单元的单位数据长度,所述共享内存的数据并行度为所述共享内存中的内存地址对应的数据长度。
5.根据权利要求4所述的方法,其特征在于,所述计算单元的数据并行度小于等于所述共享内存的数据并行度,所述方法还包括:
在确定所述目标数据将被写入所述共享内存的第一内存地址和第二内存地址中时,根据所述第二内存参数将所述目标数据分解为写入所述第一内存地址的第一数据和写入所述第二内存地址的第二数据。
6.根据权利要求4所述的方法,其特征在于,在所述目标数据被确定写入所述共享内存的同一内存地址时,根据参数确定信息获取第二数据适配参数包括:
根据所述共享内存的数据并行度和所述目标数据在共享内存中的起始位置计算所述第二右移值;
根据所述共享内存的数据并行度、所述计算单元的数据并行度、所述目标数据在共享内存中的起始位置和所述第二右移值计算所述第二屏蔽位。
7.一种基于共享内存的数据读写系统,所述共享内存被多个计算单元共享,所述多个计算单元具有不同的数据并行度,其特征在于,所述系统包括:
共享内存;
多个计算单元,被配置为发送读数据请求,所述读数据请求包括所述计算单元的数据并行度和目标数据在共享内存中的起始位置;
数据适配单元,被配置为根据参数确定信息确定第一内存参数和第一数据适配参数,根据所述第一内存参数和所述第一数据适配参数输出所述目标数据至所述计算单元,所述参数确定信息包括所述计算单元的数据并行度、所述共享内存的数据并行度和所述目标数据在共享内存中的起始位置,所述第一内存参数用于表征所述目标数据在所述共享内存中的存储位置,所述存储位置包括所述目标数据在所述共享内存中对应的内存地址和在所述内存地址上的起始位,所述第一数据适配参数包括第一屏蔽位,所述第一屏蔽位用于屏蔽所述目标数据之外的数据,若所述目标数据位于所述共享内存的第一内存地址和第二内存地址上,所述第一数据适配参数还包括第一左移值、第一右移值和第一选通信号,若所述目标数据位于所述共享内存的同一内存地址上,所述第一数据适配参数还包括第一左移值;
其中,所述计算单元的数据并行度为所述计算单元的单位数据长度,所述共享内存的数据并行度为所述共享内存中的内存地址对应的数据长度。
8.根据权利要求7所述的系统,其特征在于,所述多个计算单元还被配置为发送写数据请求,所述写数据请求包括所述计算单元的数据并行度和目标数据在共享内存中的起始位置;
所述数据适配单元还被配置为根据所述参数确定信息确定第二内存参数和第二数据适配参数,根据所述第二内存参数和所述第二数据适配参数将所述目标数据写入所述共享内存,所述第二内存参数用于表征所述目标数据写入所述共享内存中的位置参数,所述位置参数包括所述目标数据对应的共享内存中的内存地址和在所述内存地址上的起始位,所述第二数据适配参数包括第二屏蔽位,所述第二屏蔽位用于屏蔽所述目标数据之外的数据。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行以实现权利要求1-6中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910286093.1A CN111813722B (zh) | 2019-04-10 | 2019-04-10 | 基于共享内存的数据读写方法,系统及可读存储介质 |
PCT/CN2020/082906 WO2020207319A1 (zh) | 2019-04-10 | 2020-04-02 | 基于共享内存的数据读写方法、系统及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910286093.1A CN111813722B (zh) | 2019-04-10 | 2019-04-10 | 基于共享内存的数据读写方法,系统及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111813722A CN111813722A (zh) | 2020-10-23 |
CN111813722B true CN111813722B (zh) | 2022-04-15 |
Family
ID=72750910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910286093.1A Active CN111813722B (zh) | 2019-04-10 | 2019-04-10 | 基于共享内存的数据读写方法,系统及可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111813722B (zh) |
WO (1) | WO2020207319A1 (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6223268B1 (en) * | 1999-01-08 | 2001-04-24 | Sony Corporation | System and method for writing specific bytes in a wide-word memory |
CN1506807A (zh) * | 2002-10-25 | 2004-06-23 | ض� | 用于数据的并行右移位合并的方法和装置 |
CN101216755A (zh) * | 2008-01-02 | 2008-07-09 | 中国科学院计算技术研究所 | Risc处理器及其浮点寄存器的非对齐访存方法 |
CN103425602A (zh) * | 2013-08-15 | 2013-12-04 | 深圳市江波龙电子有限公司 | 一种闪存存储设备数据读写的方法、装置及主机系统 |
CN104731525A (zh) * | 2015-02-06 | 2015-06-24 | 北京航天自动控制研究所 | 一种兼容不同位宽支持非对齐访问的fpga片内存储控制器 |
CN105446773A (zh) * | 2015-11-18 | 2016-03-30 | 上海兆芯集成电路有限公司 | 高速缓存行的非对齐加载指令的推测并行执行系统和方法 |
CN107748723A (zh) * | 2017-09-28 | 2018-03-02 | 中国人民解放军国防科技大学 | 支持无冲突跨步按块访问的存储方法及访存装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8856463B2 (en) * | 2008-12-16 | 2014-10-07 | Frank Rau | System and method for high performance synchronous DRAM memory controller |
EP3254286B1 (en) * | 2015-02-06 | 2019-09-11 | Micron Technology, INC. | Apparatuses and methods for parallel writing to multiple memory device locations |
US20160364147A1 (en) * | 2015-06-12 | 2016-12-15 | Qualcomm Incorporated | Execution hardware for load and store operation alignment |
US10067763B2 (en) * | 2015-12-11 | 2018-09-04 | International Business Machines Corporation | Handling unaligned load operations in a multi-slice computer processor |
-
2019
- 2019-04-10 CN CN201910286093.1A patent/CN111813722B/zh active Active
-
2020
- 2020-04-02 WO PCT/CN2020/082906 patent/WO2020207319A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6223268B1 (en) * | 1999-01-08 | 2001-04-24 | Sony Corporation | System and method for writing specific bytes in a wide-word memory |
CN1506807A (zh) * | 2002-10-25 | 2004-06-23 | ض� | 用于数据的并行右移位合并的方法和装置 |
CN101216755A (zh) * | 2008-01-02 | 2008-07-09 | 中国科学院计算技术研究所 | Risc处理器及其浮点寄存器的非对齐访存方法 |
CN103425602A (zh) * | 2013-08-15 | 2013-12-04 | 深圳市江波龙电子有限公司 | 一种闪存存储设备数据读写的方法、装置及主机系统 |
CN104731525A (zh) * | 2015-02-06 | 2015-06-24 | 北京航天自动控制研究所 | 一种兼容不同位宽支持非对齐访问的fpga片内存储控制器 |
CN105446773A (zh) * | 2015-11-18 | 2016-03-30 | 上海兆芯集成电路有限公司 | 高速缓存行的非对齐加载指令的推测并行执行系统和方法 |
CN107748723A (zh) * | 2017-09-28 | 2018-03-02 | 中国人民解放军国防科技大学 | 支持无冲突跨步按块访问的存储方法及访存装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2020207319A1 (zh) | 2020-10-15 |
CN111813722A (zh) | 2020-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180239710A1 (en) | Slot/sub-slot prefetch architecture for multiple memory requestors | |
US7337352B2 (en) | Cache entry error-connecting code (ECC) based at least on cache entry data and memory address | |
US7500028B2 (en) | DMA controller providing for ring buffer and rectangular block transfers | |
JP5573134B2 (ja) | ベクトル型計算機及びベクトル型計算機の命令制御方法 | |
US20140115278A1 (en) | Memory architecture | |
CN114051611B (zh) | 用于非连续存储器的dma分散和聚集操作 | |
JP2010134628A (ja) | メモリコントローラおよびデータ処理装置 | |
US20030065889A1 (en) | External memory control device regularly reading ahead data from external memory for storage in cache memory, and data driven type information processing apparatus including the same | |
EP1980946B1 (en) | Error correction code generation method and memory management device | |
US9372795B2 (en) | Apparatus and method for maintaining cache coherency, and multiprocessor apparatus using the method | |
US20170199819A1 (en) | Cache Directory Processing Method for Multi-Core Processor System, and Directory Controller | |
US20020169900A1 (en) | Direct memory access controller, and direct memory access control method | |
CN111813722B (zh) | 基于共享内存的数据读写方法,系统及可读存储介质 | |
US9507725B2 (en) | Store forwarding for data caches | |
US7577890B2 (en) | Systems and methods for mitigating latency associated with error detection and correction | |
CN115269199A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
US8635566B2 (en) | Parity error detection verification | |
US8131947B2 (en) | Cache snoop limiting within a multiple master data processing system | |
JP5206385B2 (ja) | バウンダリ実行制御システム、バウンダリ実行制御方法、及びバウンダリ実行制御プログラム | |
JP2009217714A (ja) | データ処理回路、キャッシュシステムおよびデータ転送装置 | |
US20200142836A1 (en) | Computing system and method using bit counter | |
US9323674B2 (en) | Processor, information processing apparatus, and control method of processor | |
CN111221579A (zh) | 预测Load指令执行延迟的方法及系统 | |
CN118349280B (zh) | 存数指令调度方法、装置、设备和存储介质 | |
KR100523966B1 (ko) | 멀티 바이트 버스트 메모리에 적합한 유효 바이트 판정 방법 |
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 |