CN112380148A - 数据传输方法和数据传输装置 - Google Patents
数据传输方法和数据传输装置 Download PDFInfo
- Publication number
- CN112380148A CN112380148A CN202011380098.XA CN202011380098A CN112380148A CN 112380148 A CN112380148 A CN 112380148A CN 202011380098 A CN202011380098 A CN 202011380098A CN 112380148 A CN112380148 A CN 112380148A
- Authority
- CN
- China
- Prior art keywords
- address
- data
- continuous
- data objects
- consecutive
- 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
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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种数据传输方法和数据传输装置。该数据传输方法包括:获取当前操作针对的多个数据对象以及与多个数据对象一一对应的多个存储地址;确定多个数据对象的格式,根据多个数据对象的格式确定地址集成量N;响应于多个存储地址包括至少一个连续地址分组,获取每个连续地址分组的操作起始地址;基于每个连续地址分组的操作起始地址,分别对每个连续地址分组对应的N个数据对象进行传输以用于所述当前操作。该数据传输方法可以根据数据对象的格式对不同格式的数据执行地址合并操作,兼容多种数据格式。
Description
技术领域
本公开的实施例涉及一种数据传输方法和数据传输装置。
背景技术
处理器通过内存管理单元将处理器待操作(例如读取或写入)的数据的虚拟地址映射为物理地址,并由内存管理单元根据该物理地址访问存储装置(例如,内存)并在该存储装置相应物理地址处对数据进行操作。处理器的工作速度远高于内存,如果处理器直接访问内存读写数据,则需要等待一定的时间周期,因此访问内存的过程中通常采用高速缓冲存储装置(Cache)来提高系统效率以及处理器访问内存的速度。
发明内容
本公开至少一实施例提供一种数据传输方法,包括:获取当前操作针对的多个数据对象以及与所述多个数据对象一一对应的多个存储地址;确定所述多个数据对象的格式,根据所述多个数据对象的格式确定地址集成量N,其中,N为正整数且表示所述地址集成量;响应于所述多个存储地址包括至少一个连续地址分组,获取每个所述连续地址分组的操作起始地址,其中,每个所述连续地址分组包括依次连续的N个存储地址;基于每个所述连续地址分组的操作起始地址,分别对每个所述连续地址分组对应的N个数据对象进行传输以用于所述当前操作。
例如,在本公开至少一实施例提供的数据传输方法中,根据所述多个数据对象的格式确定地址集成量N,包括:根据用于传输所述多个数据对象的数据总线宽度以及所述多个数据对象的格式确定所述地址集成量N。
例如,在本公开至少一实施例提供的数据传输方法还包括:对所述多个存储地址中至少部分进行连续性判断,以确定所述多个存储地址中至少部分的连续性关系和大小关系,响应于所述多个存储地址包括连续且数量大于等于N的存储地址,获取所述至少一个连续地址分组。
例如,在本公开至少一实施例提供的数据传输方法还包括:对所述多个存储地址根据所述地址集成量N进行分组以得到至少一个中间分组,对于每个所述中间分组进行连续性判断,确定每个所述中间分组中的N个存储地址的连续性关系和大小关系,响应于至少一个所述中间分组具有连续的N个存储地址,由此获取所述至少一个连续地址分组。
例如,在本公开至少一实施例提供的数据传输方法中,进行所述连续性判断,包括:对将要进行连续性判断的L个存储地址进行排序,对排序后的所述L个存储地址中每相邻的两个存储地址进行差值计算,以确定所述每相邻的两个存储地址是否连续,由此确定所述L个存储地址是否整体上连续,其中,L为正整数。
例如,在本公开至少一实施例提供的数据传输方法中,对于每个所述中间分组进行连续性判断包括:对于第i个所述中间分组,确定第i个所述中间分组的N个存储地址中的地址最大值和地址最小值;将所述地址最大值减去所述地址最小值,得到地址差值;响应于所述地址差值小于N,则第i个所述中间分组的N个存储地址的连续性关系为地址连续,否则为地址不连续,其中,i为正整数。
例如,在本公开至少一实施例提供的数据传输方法中,获取每个所述连续地址分组的操作起始地址,包括:根据每个所述连续地址分组中的N个存储地址的大小关系选择每个所述连续地址分组的操作起始地址。
例如,在本公开至少一实施例提供的数据传输方法中,所述操作起始地址为每个所述连续地址分组中的N个存储地址的最小值。
例如,在本公开至少一实施例提供的数据传输方法中,所述当前操作包括数据加载操作或数据存储操作,基于每个所述连续地址分组的操作起始地址,分别对每个所述连续地址分组对应的N个数据对象进行传输以用于所述当前操作,包括:响应于所述数据存储操作,基于每个所述连续地址分组的操作起始地址,经同一传输操作向存储装置写入每个所述连续地址分组对应的N个数据对象;或者响应于所述数据加载操作,基于每个所述连续地址分组的操作起始地址,经同一传输操作从存储装置中读取每个所述连续地址分组对应的N个数据对象。
例如,在本公开至少一实施例提供的数据传输方法中,响应于所述数据存储操作,基于每个所述连续地址分组的操作起始地址,经同一传输操作向存储装置写入每个所述连续地址分组对应的N个数据对象,包括:对应于每个所述连续地址分组包括的连续的N个存储地址的大小关系,将每个所述连续地址分组对应的N个数据对象进行重排,使得每个所述连续地址分组对应的N个数据对象与每个所述连续地址分组包括的N个连续的存储地址对齐,将每个所述连续地址分组对应且重排后的N个数据对象包括的N个数据,经所述同一传输操作,分别写入到所述存储装置中以每个所述连续地址分组的操作起始地址开始的一段存储空间。
例如,在本公开至少一实施例提供的数据传输方法中,所述存储装置的最小逻辑处理单位为M比特,对应于每个所述连续地址分组包括的连续的N个存储地址的大小关系,将每个所述连续地址分组对应的N个数据对象进行重排,包括:将每个所述连续地址分组对应的N个数据对象分别以所述M比特为单位划分成多个子数据对象,得到每个所述连续地址分组对应的T个子数据对象;根据每个所述连续地址分组包括的连续的N个存储地址的大小关系,基于每个所述连续地址分组对应的T个子数据对象进行所述重排,其中,T和M为正整数。
例如,在本公开至少一实施例提供的数据传输方法中,根据每个所述连续地址分组包括的连续的N个存储地址的大小关系,基于每个所述连续地址分组对应的T个子数据对象进行所述重排,包括:根据每个所述连续地址分组包括的连续的N个存储地址的相对位置关系,生成每个所述连续地址分组包括的连续的N个存储地址对应的N个地址索引值;根据每个所述连续地址分组对应的N个地址索引值,确定每个所述连续地址分组对应的T个子数据对象对应的数据索引值;根据每个所述连续地址分组包括的连续的N个存储地址的大小关系,对每个所述连续地址分组对应的N个数据对象进行排列,得到每个所述连续地址分组对应的T个子数据对象对应的数据索引值序列;根据每个所述连续地址分组对应的T个子数据对象对应的数据索引值序列,对每个所述连续地址分组对应的T个子数据对象进行所述重排。
例如,在本公开至少一实施例提供的数据传输方法中,将每个所述连续地址分组对应且重排后的N个数据对象包括的N个数据,经所述同一传输操作,分别写入到所述存储装置中以每个所述连续地址分组的操作起始地址开始的一段存储空间,包括:将每个所述连续地址分组对应且重排后的T个子数据对象包括的T个子数据依次拼接,得到每个所述连续地址分组对应的操作数据,所述操作数据长度为T与M的乘积;将每个所述连续地址分组对应的操作数据分别写入到所述存储装置中以每个所述连续地址分组的操作起始地址开始的一段存储空间。
例如,在本公开至少一实施例提供的数据传输方法中,响应于所述数据加载操作,基于每个所述连续地址分组的操作起始地址,经同一传输操作从存储装置中读取每个所述连续地址分组对应的N个数据对象,包括:从所述存储装置中以每个所述连续地址分组的操作起始地址开始的一段存储空间,读取每个所述连续地址分组对应的N个读取数据,将读取的每个所述连续地址分组对应的N个读取数据,根据每个所述连续地址分组包括的连续的N个存储地址与每个所述连续地址分组对应的N个数据对象的对应关系,分别赋值给每个所述连续地址分组对应的N个数据对象。
例如,在本公开至少一实施例提供的数据传输方法中,从所述存储装置中以每个所述连续地址分组的操作起始地址开始的一段存储空间,读取每个所述连续地址分组对应的N个读取数据,包括:获取在所述存储装置中从每个所述连续地址分组的操作初始地址开始的一段存储空间内的每个所述连续地址分组对应的操作数据,由所述操作数据得到所述每个所述连续地址分组对应的N个读取数据。
例如,在本公开至少一实施例提供的数据传输方法中,将读取的每个所述连续地址分组对应的N个读取数据,根据每个所述连续地址分组包括的连续的N个存储地址与每个所述连续地址分组对应的N个数据对象的对应关系,分别赋值给每个所述连续地址分组对应的N个数据对象,包括:根据每个所述连续地址分组包括的N个连续的存储地址的大小关系,顺序生成每个所述连续地址分组的N个存储地址对应的N个地址选择值;根据每个所述连续地址分组的N个存储地址对应的N个地址选择值和所述多个数据对象的格式,从每个所述连续地址分组对应的操作数据中提取得到N个读取数据,分别赋值给每个所述连续地址分组对应的N个数据对象。
例如,在本公开至少一实施例提供的数据传输方法中,所述存储装置的最小逻辑处理单位为M比特,根据每个所述连续地址分组的N个存储地址对应的N个地址选择值和所述多个数据对象的格式,从每个所述连续地址分组对应的操作数据中提取得到N个读取数据,包括:根据所述多个数据对象的格式和所述存储装置的最小逻辑处理单位M,确定每个数据对象对应的子数据对象个数P;根据每个所述连续地址分组的N个存储地址对应的N个地址选择值和所述子数据对象个数P,顺序生成每个所述连续地址分组对应的T个子数据对象对应的数据选择值;根据每个所述连续地址分组对应的数据选择值从每个所述连续地址分组对应的操作数据中提取得到每个所述连续地址分组对应的T个子数据;根据每个所述连续地址分组对应的T个子数据得到每个所述连续地址分组对应的N个读取数据,其中,T、P和M均为正整数。
例如,在本公开至少一实施例提供的数据传输方法中,所述存储装置为处理器中的第一级缓存或第二级缓存。
例如,在本公开至少一实施例提供的数据传输方法还包括:在确定所述多个数据对象的格式之后,记录与所述多个数据对象的格式对应的格式标记,其中,所述格式标记用于后续处理根据对应的格式进行操作。
本公开至少一实施例提供一种数据传输装置,包括:获取单元,配置为获取当前操作针对的多个数据对象以及与所述多个数据对象一一对应的多个存储地址;格式检测单元,配置为确定所述多个数据对象的格式,根据所述多个数据对象的格式确定地址集成量N;地址选择单元,配置为响应于所述多个存储地址包括至少一个连续地址分组的情形,获取每个所述连续地址分组的操作起始地址,其中,每个所述连续地址分组包括依次连续的N个存储地址;数据传输单元,配置为基于每个所述连续地址分组的操作起始地址,分别对每个所述连续地址分组对应的N个数据对象进行传输以用于所述当前操作。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1A为32比特数据访问内存时不进行地址合并的时序图;
图1B为32比特数据访问内存时进行地址合并的时序图;
图2为本公开至少一实施例提供的一种数据传输方法的示意性流程图;
图3A为本公开至少一实施例提供的数据传输方法中步骤S140的示意性流程图;
图3B为本公开至少一实施例提供的数据传输方法中步骤S140的示意性流程图;
图4A为64比特数据访问内存时不进行地址合并的时序图;
图4B为针对64比特数据执行地址合并示意图;
图4C为64比特数据访问内存时进行地址合并的时序图;
图4D为针对64比特数据的数据存储过程的地址合并原理图;
图4E为针对64比特数据的数据加载过程的地址合并原理图;
图5A为根据本公开一实施例提供的数据传输方法中数据存储操作的数据流图;
图5B为基于图5A所示的数据流图的实现框图;
图5C为本公开一实施例提供的数据格式检查模块的示意图;
图5D为本公开一实施例提供的第一地址连续性检查模块的示意图;
图5E为本公开一实施例提供的地址选择模块的示意图;
图5F为本公开一实施例提供的数据排序模块的示意图;
图5G为本公开一实施例提供的地址和数据输出模块的示意图;
图6A为根据本公开一实施例提供的数据传输方法中数据加载操作的实现框图;
图6B为本公开一实施例提供的第二地址连续性检查模块的示意图;
图7为本公开至少一实施例提供的一种数据传输装置的示意性框图。
具体实施方式
为了使得本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
为了保持本公开实施例的以下说明清楚且简明,本公开省略了部分已知功能和已知部件的详细说明。
高速缓冲存储装置(Cache)工作于处理器和内存之间,是一种规模较小但访问速度很高的存储装置。高速缓冲存储装置将处理器刚访问过或需循环访问的一部分数据缓存下来,如果处理器需要再次使用该部分数据,则可及时从高速缓冲存储装置中直接调用,从而有效减少了处理器的等待时间,提高系统效率。
为提高数据访问效率,可以将多个数据进行地址合并发送至缓存。例如,根据数据总线宽度对多个32比特数据的地址进行合并,将多个地址对应的多个数据转换为一个地址对应多个数据,从而向高速缓冲存储装置发送一个地址即可存储或返回多个数据。例如,每个地址对应一个32比特数据,数据总线宽度为128比特,则可以将4个32比特数据对应的地址进行合并以得到一个地址,则该地址对应4个32比特数据,从而向高速缓冲存储装置发送该地址进行访问,可存储或返回4个32比特数据。
例如,传输一个地址需要一个时钟周期,图1A为32比特数据访问内存时不进行地址合并的时序图,图1B为32比特数据访问内存时进行地址合并的时序图。例如,数据总线的位宽为128比特,地址总线的位宽为32比特,且每个地址的位宽也为32比特。
例如,如图1A所示,如果不进行地址合并,由于数据总线的位宽为128比特,因此4个32比特数据(数据0、数据1、数据2及数据3)的传输可以在1个时钟周期完成;但由于地址总线的位宽为32比特,因而传输4个32比特数据对应的4个地址(地址0、地址1、地址2及地址3)需要4个时钟周期。也就是说,在周期0内可以完成数据0、数据1、数据2和数据3的传输,但周期0仅能传输地址0,还需等待周期1、周期2及周期3共3个周期完成4个地址的传输,从而浪费了数据传输效能。
例如,如图1B所示,如果进行地址合并,可以将4个32比特数据(数据0、数据1、数据2及数据3)对应的4个地址(地址0、地址1、地址2及地址3)合并为1个地址,从而只需要1个时钟周期即可完成地址的传输。例如,将数据0、数据1、数据2和数据3在周期0内一起通过数据总线传输,将地址0通过地址总线传输,使得地址的传输周期与数据的传输周期吻合,减少传递地址的时钟周期,最大程度地利用数据传输带宽。
对于高性能计算而言,双精度浮点、长整型等数据的应用非常普遍,因此位数较长的数据也迫切需要对其地址进行集成。并且,缓存中常用的处理逻辑单位为32比特,对于位数大于32比特的数据进行地址集成实现逻辑复杂。
本公开至少一实施例提供一种数据传输方法,包括:获取当前操作针对的多个数据对象以及与多个数据对象一一对应的多个存储地址;确定多个数据对象的格式,根据多个数据对象的格式确定地址集成量N;响应于多个存储地址包括至少一个连续地址分组,获取每个连续地址分组的操作起始地址;基于每个连续地址分组的操作起始地址,分别对每个连续地址分组对应的N个数据对象进行传输以用于当前操作。
本公开至少一实施例还提供对应于上述数据传输方法的数据传输装置。
本公开至少一实施例提供的一种数据传输方法可以根据数据对象的格式对不同格式的数据执行地址合并操作,兼容多种数据格式,数据格式包括但不限于对更长位宽数据的数据传输,提高地址合并处理在实践中的灵活性。
下面结合附图对本公开的实施例进行详细说明,但是本公开并不限于这些具体的实施例。
图2为本公开至少一实施例提供的一种数据传输方法的示意性流程图。
例如,如图2所示,本公开实施例提供的数据传输方法包括步骤S110至S140。本公开实施例提供的数据传输方法例如应用于访问存储装置,例如,访问缓存或内存等。
首先,在步骤S110,获取当前操作针对的多个数据对象以及与多个数据对象一一对应的多个存储地址。
例如,当前操作包括数据存储操作或数据加载操作。例如,处理器发送读数据请求并提供待读取数据的虚拟地址,根据该虚拟地址在缓存中查找是否命中该虚拟地址,若命中,则读取对应位置的数据,此时操作为数据加载操作,也即通过地址读取缓存中存储的数据;若未命中,则根据该虚拟地址映射的物理地址从下一级缓存或内存中读取对应数据,例如,还可以将该数据存入缓存中,例如便于后续使用,此时的操作则也涉及数据存储操作,也即将对应的数据存入缓存。
例如,若当前操作为数据加载操作,则为根据获取的多个数据对象一一对应的多个存储地址读取缓存,以获得多个数据对象的数据;若当前操作为数据存储操作,则为将获取的多个数据对象的数据存入缓存中与多个数据对象一一对应的多个存储地址处。
接着,在步骤S120,确定多个数据对象的格式,根据多个数据对象的格式确定地址集成量N,这里N为正整数且表示地址集成量。
例如,确定多个数据对象的格式可以通过处理器的指令获取数据格式,例如,数据格式为整数型、单精度浮点型、双精度浮点型等,例如,数据格式为整数型,则数据位宽为32比特,数据格式为双精度浮点型,则数据位宽为64比特。
例如,根据用于传输多个数据对象的数据总线宽度以及多个数据对象的格式确定地址集成量N,例如,数据总线宽度为D比特,地址集成量N可以为D与数据对象对应的数据位宽的比值,例如,数据总线宽度为128比特,则当数据位宽为32比特时,地址集成量N可以为4,当数据位宽为64比特时,地址集成量N可以为2。需要说明的是,当地址总线的宽度大于存储地址位宽时,例如,地址总线可以在一个周期内传输2个存储地址,那么地址集成量N的最大值为D与数据对象对应的数据位宽的比值。
本公开至少一实施例提供的一种数据传输方法还包括:在确定多个数据对象的格式之后,记录与多个数据对象的格式对应的格式标记,例如,格式标记用于后续处理根据对应的格式进行操作,例如该格式标记可以存储在预定寄存器中以供后续处理读取。该格式标记的可以采用适当形式,例如,为4位数据或8位数据,以不同的数值表示不同的格式。
例如,多个数据对象对应的数据位宽为32比特,则记录多个数据对象的格式为32比特,以便后续处理时以32比特的处理逻辑进行处理,例如,多个数据对象对应的数据位宽为64比特,则记录多个数据对象的格式标记为64比特,以便后续处理时以64比特的处理逻辑进行处理。
接着,在步骤S130,响应于多个存储地址包括至少一个连续地址分组,获取每个连续地址分组的操作起始地址。
例如,每个连续地址分组包括依次连续的N个存储地址。
例如,在一些示例中,获取至少一个连续地址分组可以包括:对多个存储地址中至少部分(例如全部)进行连续性判断,以确定多个存储地址中至少部分的连续性关系和大小关系,响应于多个存储地址包括连续且数量大于等于N的存储地址,获取至少一个连续地址分组。也就是说,这种方式将存储地址中N个满足连续性关系的存储地址作为一个连续地址分组,对于连续地址分组中的存储地址以地址合并方式执行后续操作,对不属于连续地址分组的存储地址以例如单个传输方式或其他组合传输方式执行后续操作,这种方式可以根据存储地址的连续性关系选择多个存储地址中满足连续地址分组条件的存储地址组成连续地址分组,降低对可执行地址合并的存储地址的要求。
例如,在另一些示例中,对多个存储地址根据地址集成量N进行分组以得到至少一个中间分组,对于每个中间分组进行连续性判断,确定每个中间分组中的N个存储地址的连续性关系和大小关系,响应于至少一个中间分组具有连续的N个存储地址,由此获取所述至少一个连续地址分组。也就是说,这种方式先将多个存储地址中每N个存储地址作为一个中间分组,再对每个中间分组进行连续性判断,将满足地址连续性关系的中间分组作为连续地址分组,实现逻辑更加简单,降低编程复杂度。
例如,在上述两种示例性的方法中,连续性判断可以包括:对将要进行连续性判断的L个存储地址(例如多个存储地址中至少部分或每个中间分组中的N个存储地址)进行排序,对排序后的所述L个存储地址中每相邻的两个存储地址进行差值计算,以确定每相邻的两个存储地址是否连续,由此确定L个存储地址是否整体上连续。
又例如,对于上述涉及每个中间分组中的N个存储地址的情形,对于每个中间分组进行连续性判断包括:对于第i个中间分组,确定第i个中间分组的N个存储地址中的地址最大值和地址最小值;将第i个中间分组对应的地址最大值减去第i个中间分组对应的地址最小值,得到地址差值;若地址差值小于N,则第i个中间分组的N个存储地址的连续性关系为地址连续,否则为地址不连续,这里i为正整数。
例如,获取每个连续地址分组的操作起始地址,包括:根据每个连续地址分组中的N个存储地址的大小关系选择每个连续地址分组的操作起始地址。例如,操作起始地址为每个连续地址分组中的N个存储地址的最小值。操作起始地址与连续地址分组分别对应,由此可以通过操作起始地址来对相应的连续地址分组进行操作。
最后,在步骤S140,基于每个连续地址分组的操作起始地址,分别对每个连续地址分组对应的N个数据对象进行传输以用于当前操作。
例如,对于当前操作为数据存储操作的情形,步骤S140可以包括:基于每个连续地址分组的操作起始地址,经同一传输操作向存储装置写入每个所述连续地址分组对应的N个数据对象。例如,同一传输操作为同一时钟周期内通过地址总线传输每个连续地址分组的操作起始地址,通过数据总线传输每个连续地址分组对应的N个数据对象。
例如,对于当前操作为数据加载操作的情形,步骤S140可以包括:基于每个连续地址分组的操作起始地址,经同一传输操作从存储装置中读取每个连续地址分组对应的N个数据对象。例如,同一传输操作为在一个时钟周期内通过数据总线获得每个连续地址分组对应的N个数据对象。
图3A为本公开至少一实施例提供的数据传输方法中步骤S140的示意性流程图。例如,如图3A所示,当前操作为数据存储操作时,步骤S140可以至少包括步骤S1401-步骤S1402。
在步骤S1401,对应于每个连续地址分组包括的连续的N个存储地址的大小关系,将每个连续地址分组对应的N个数据对象进行重排,使得每个连续地址分组对应的N个数据对象与每个连续地址分组包括的N个连续的存储地址对齐。
在步骤S1402,将每个连续地址分组对应且重排后的N个数据对象包括的N个数据,经同一传输操作,分别写入到存储装置中以每个连续地址分组的操作起始地址开始的一段存储空间。
例如,在一些示例中,存储装置的最小逻辑处理单位为M比特,当数据对象对应的数据位宽大于或等于M比特时,可以在执行数据存储操作时对数据对象的数据以M比特为单位进行拆分得到多个子数据对象,每个子数据对象对应的数据位宽为M比特,对子数据对象执行步骤S140,以支持数据位宽大于M比特的数据传输,从而复用不同格式下部分数据处理逻辑,降低编程复杂度。例如,选择最小逻辑处理单位为32比特,则当数据对象对应的数据位宽为64比特时,可以将其拆分为2个子数据对象。
例如,步骤S1401可以包括:将每个连续地址分组对应的N个数据对象分别以M比特为单位划分成多个子数据对象,得到每个连续地址分组对应的T个子数据对象;根据每个连续地址分组包括的连续的N个存储地址的大小关系,基于每个连续地址分组对应的T个子数据对象进行所述重排,其中,T和M为正整数。例如,重排使得数据对象与对应的存储地址保持顺序同步。
例如,根据每个连续地址分组包括的连续的N个存储地址的大小关系,基于每个连续地址分组对应的T个子数据对象进行上述重排,可以包括:根据每个连续地址分组包括的连续的N个存储地址的相对位置关系,生成每个连续地址分组包括的连续的N个存储地址对应的N个地址索引值;根据每个连续地址分组对应的N个地址索引值,确定每个连续地址分组对应的T个子数据对象对应的数据索引值;根据每个连续地址分组包括的连续的N个存储地址的大小关系,对每个连续地址分组对应的N个数据对象进行排列,得到每个连续地址分组对应的T个子数据对象对应的数据索引值序列;根据每个连续地址分组对应的T个子数据对象对应的数据索引值序列,对每个连续地址分组对应的T个子数据对象进行重排。
例如,N个存储地址对应的N个索引值分别为0至N-1,分别对应于每个连续地址分组中的第一个存储地址至最后一个存储地址;例如,每个连续地址分组对应的T个子数据对象对应的数据索引值为0至T-1,例如T=P*N,P为正整数且表示每个数据对象对应的子数据对象个数,则数据索引值0至T-1分别对应于每个连续地址分组中的第一个存储地址对应的P个子数据对象(例如第一个存储地址对应的P个子数据对象的数据索引值为0、1…P-1)至最后一个存储地址对应的P个子数据对象(例如最后一个存储地址对应的P个子数据对象的数据索引值为T-P…T-2、T-1);例如,将每个连续地址分组对应的T个数据索引值按照每个连续地址分组对应的T个子数据对象分别对应的存储地址的从小到大的顺序排列,得到每个连续地址分组对应的数据索引值序列,从而根据每个连续地址分组对应的T个子数据对象对应的数据索引值序列,对每个连续地址分组对应的T个子数据对象进行重排。
例如,步骤S1402可以包括:将每个连续地址分组对应且重排后的T个子数据对象包括的T个子数据依次拼接,得到每个连续地址分组对应的操作数据,例如,操作数据长度为T与M的乘积;将每个连续地址分组对应的操作数据分别写入到存储装置中以每个连续地址分组的操作起始地址开始的一段存储空间。
图3B为本公开至少一实施例提供的数据传输方法中步骤S140的示意性流程图。例如,如图3B所示,当前操作为数据加载操作时,步骤S140可以至少包括步骤S1403-步骤S1404。
在步骤S1403,从存储装置中以每个连续地址分组的操作起始地址开始的一段存储空间,读取每个连续地址分组对应的N个读取数据。
在步骤S1404,将读取的每个连续地址分组对应的N个读取数据,根据每个连续地址分组包括的连续的N个存储地址与每个连续地址分组对应的N个数据对象的对应关系,分别赋值给每个连续地址分组对应的N个数据对象。
例如,步骤S1403可以包括:获取在存储装置中从每个连续地址分组的操作初始地址开始的一段存储空间内的每个连续地址分组对应的操作数据,由操作数据得到每个连续地址分组对应的N个读取数据。
例如,步骤S1404可以包括:根据每个连续地址分组包括的连续的N个存储地址的大小关系,顺序生成每个连续地址分组的N个存储地址对应的N个地址选择值;根据每个连续地址分组的N个存储地址对应的N个地址选择值和多个数据对象的格式,从每个连续地址分组对应的操作数据中提取得到N个读取数据,分别赋值给每个连续地址分组对应的N个数据对象。
与数据存储操作相对应的,当存储装置的最小逻辑处理单位为M比特时,在加载数据过程中,从存储装置读取得到的操作数据由多个M比特为单位的子数据组成,从而需要从操作数据中按存储地址与数据对象的对应关系提取得到多个数据对象的数据。
例如,步骤S1404中的根据每个连续地址分组的N个存储地址对应的N个地址选择值和多个数据对象的格式,从每个连续地址分组对应的操作数据中提取得到N个读取数据,分别赋值给每个连续地址分组对应的N个数据对象,可以包括:根据多个数据对象的格式和存储装置的最小逻辑处理单位M,确定每个数据对象对应的子数据对象个数P;根据每个连续地址分组的N个存储地址对应的N个地址选择值和子数据对象个数P,顺序生成每个连续地址分组对应的T个子数据对象对应的数据选择值;根据每个连续地址分组对应的数据选择值从每个连续地址分组对应的操作数据中提取得到每个连续地址分组对应的T个子数据;根据每个连续地址分组对应的T个子数据得到每个连续地址分组对应的N个读取数据,分别赋值给每个连续地址分组对应的N个数据对象,这里T、P和M均为正整数。
例如,获取每个地址连续分组对应的操作数据后,根据每个连续地址分组包括的连续的N个存储地址的大小关系生成的N个存储地址对应的N个地址选择值可以为0至N-1,分别对应于每个连续地址分组中的存储地址最小值至存储地址最大值,也就是说,每个连续地址分组中的存储地址最小值对应的地址选择值为0,每个连续地址分组中的存储地址最大值对应的地址选择值为N-1,以此类推顺序得到每个连续地址分组对应的N个地址选择值。
例如,确定每个数据对象对应的子数据对象个数P后,根据每个连续地址分组对应的N个地址选择值和子数据对象个数P生成的数据选择值为0至T-1,分别对应于每个连续地址分组中的存储地址最小值对应的P个子数据对象(例如存储地址最小值对应的P个子数据对象的数据选择值为0、1…P-1)至存储地址最大值对应的P个子数据对象(例如存储地址最大值对应的P个子数据对象的数据索引值为T-P…T-2、T-1)。
例如,根据每个子数据对象对应的数据选择值从对应的操作数据中提取得到每个子数据对象的子数据,从而根据子数据的划分方式将每个数据对象对应的P个子数据依次拼接得到每个数据对象的数据,分别赋值给每个连续地址分组对应的N个数据对象。
例如,本公开至少一实施例提供的数据传输方法中的存储装置可以为处理器中的第一级缓存或第二级缓存。
例如,缓存的最小逻辑处理单位为32比特,常用的双精度浮点、长整型等数据的数据位宽为64比特,但目前针对64比特的数据不做地址集成,从而耗费更多的时钟周期传输地址和数据。下面以64比特数据在数据总线宽度为128比特的地址合并为例,具体说明本公开至少一实施例提供的数据传输方法中,如何对数据位宽大于存储装置的最小逻辑处理单位的数据执行地址合并。
图4A为64比特数据访问内存时不进行地址合并的时序图。如图4A所示,当不对64比特数据执行地址合并时,每个时钟周期传输2个64比特数据和1个32比特地址。例如,对于4个64比特数据,在周期0通过数据总线传输数据0和数据1,通过地址总线传输地址0;在周期1通过数据总线传输数据2和数据3,通过地址总线传输地址1;在周期2通过地址总线传输地址2;在周期3通过地址总线传输地址3。也就是说,通过2个时钟周期完成4个64比特数据的传输,通过4个时钟周期完成4个64比特数据对应的4个地址的传输,共需要4个时钟周期完成一次传输任务。
图4B为对64比特数据执行地址合并示意图。如图4B所示,由于数据总线宽度为128比特,数据位宽为64比特,则在这四个64比特数据的存储地址两两连续的情形,可以将它们的地址两两集成,从而将地址传输效率提升一倍。例如,当数据格式为64比特时,将4个数据的存储地址两两执行地址合并,这样只需要传输两个地址就完成前述数据的传输,相比于不做地址合并节省了2个地址的传输时间,传输速度提升1倍。
图4C为64比特数据访问内存时进行地址合并的时序图。如图4C所示,对于数据总线位宽为128比特时,由于采用了地址合并将两个64比特数据在一个时钟周期内完成数据传输,则只需要2个时钟周期就可完成前述四个64比特数据的传输任务,并且带宽占用率100%,数据传输效能达到最大,有效提升传输效率。
图4D为针对64比特数据的数据存储过程的地址合并原理图。如图4D所示,在数据存储过程中,如果相邻两个地址连续,那么则把地址值较小的地址作为操作初始地址通过地址总线输出至例如缓存,将相邻两个连续地址对应的两个数据在一个时钟周期通过数据总线发送(即同一传输操作)至例如缓存,同时将总数据宽度发送给缓存,使得在缓存中把这两个连续地址对应的两个数据连续写入操作初始地址开始的一段存储空间,例如该一段存储空间为操作初始地址对应的两个数据的位置,例如,总数据宽度用于指明该一段存储空间的长度。
例如,如图所示,地址0和地址1连续且地址0较小,则将地址0作为操作初始地址发送至缓存,将数据0和数据1在一个时钟周期内通过数据总线发送至缓存中,并且在缓存中从地址0开始的一段存储空间连续写入数据0和数据1。同样的,地址2和地址3连续且地址2较小,则将地址2作为操作初始地址发送至缓存,将数据2和数据3在一个时钟周期内发送至缓存中,并且在缓存中从地址2开始的一段存储空间连续写入数据2和数据3。
图4E为针对64比特数据的数据加载过程的地址合并原理图。如图4E所示,例如可以将数据加载过程理解为数据存储过程的逆过程,同数据存储过程类似,如果需要读取的两个数据的两个地址相邻而连续,那么则把地址值较小的地址作为操作初始地址通过地址总线输出至例如缓存,根据总数据位宽读取缓存中操作初始地址处的指定长度数据并通过数据总线返回(即同一传输操作),再根据地址和数据的对应关系提取对应的数据。
例如,需要读取的数据0和数据1的地址0和地址1连续且地址0较小,则将地址0作为操作初始地址发送至缓存,在缓存中从地址0开始读取总数据位宽指定宽度(这里为2个64比特数据)的数据,并根据地址和数据的对应关系从所读取的指定宽度的数据中提取数据0和数据1。同样的,需要读取的数据2和数据3的地址2和地址3连续且地址2较小,则将地址2作为操作初始地址发送至缓存,在缓存中从地址2开始读取总数据位宽指定宽度的数据,并根据地址和数据的对应关系从所读取的指定宽度的数据中提取数据2和数据3。
下面以数据总线宽度为128比特,并可对数据对象格式为32比特或64比特的数据执行数据传输为例,对本公开的上述部分实施例提供的方法进行非限制的描述。
需要说明的是,所能处理的数据格式不限于32比特数据或64比特数据,也可以对更多的数据格式进行处理,本公开对此不作限制。此外,当缓存的最小逻辑处理单位、数据位宽、数据总线宽度成比例增加时,例如,缓存的最小逻辑处理单位为64比特,数据对象对应的数据位宽至少为128比特,数据总线宽度至少为256比特时,也可以实施本公开所提出的数据传输方法以执行地址合并,本公开对此不作限制。
图5A为本公开至少一实施例提供的数据传输方法中数据存储操作的数据流图。
图5B为基于图5A所示的数据流图的实现框图。如图5B所示,实现框图包括对应于图5A的数据格式检查的数据格式检查模块、对应于图5A的地址连续性检查的第一地址连续性检查模块、对应于图5A的地址选择的地址选择模块,对应于图5A的数据排序的数据排序模块、对应于图5A的数据和地址输出的数据和地址输出模块,此外还包括数据输入缓存模块和地址输入缓存模块,用于将处理器发过来数据/地址进行缓存,以在后续处理发生短暂的阻塞的情况下避免处理器被立刻阻塞。此外,数据缓存模块还可以对数据宽度为64比特的数据对象的数据以32比特为单位分成2个子数据,使得每个数据对象对应2个子数据对象,以便于在数据排序等模块中向下兼容32比特的处理逻辑,复用部分逻辑及信号,降低编程复杂度。
下面结合图5A和图5B,具体说明根据本公开一实施例提供的数据传输方法中数据存储操作的实现过程。
如图5A所示,首先,获取多个数据对象后,对数据对象进行格式检查,记录与多个数据对象对应的以下称格式标记,格式标记用于后续处理时可以根据对应的格式标记执行不同的操作。
图5C为本公开一实施例提供的数据格式检查模块的示意图。如图5C所示,数据格式检查模块通过比较器实现数据格式检查,例如,通过处理器的指令获取数据格式为整数型、双精度浮点型等,通过比较器得到格式标记,例如,如果数据为32比特数据,则格式标记可以用2位数据记录为01,如果数据为64比特数据,则格式标记为10(例如,00和11用于记录其他格式)。
接着,如图5A所示,对多个数据对象进行地址连续性检查,以获取多个数据对象的地址连续性关系和大小关系,得到至少一个连续地址分组。
图5D为本公开一实施例提供的第一地址连续性检查模块的示意图。该模块可根据格式标记对输入的4个64比特数据或32比特数据进行地址连续性检查,输出地址合并标记和用于数据排序的数据排序信息。
如图5D所示,由于32比特数据是4个一组进行地址合并,因此为向下兼容32比特数据的处理逻辑,将每四个数据对象作为一个处理组输入第一地址连续性检查模块,并通过格式标记进行区分。例如,若数据对象对应的数据位宽为64比特,则将处理组中的4个数据分为两个中间分组进行后续地址连续性检查,此时4输入比较器的输出为地址比较信息。地址比较信息可以为2比特,其中1个比特表示地址0和地址1中的较小地址索引,另一个比特表示地址2和地址3中的较小地址索引;例如,若数据对象对应的数据位宽为32比特,则将处理组中的4个数据作为1个中间分组进行后续地址连续性检查,此时地址比较信息可以为4比特,每个比特代表每个地址与四个地址中最小地址的地址差值。
例如,以数据对象对应的数据宽度为64比特为例说明第一地址连续性检查模块的执行过程。
获取地址比较信息后,通过4输入选择器得到每个中间分组的存储地址最大值和存储地址最小值,从而通过加法器计算存储地址最大值和存储地址最小值的差值以判断中间分组的地址连续性。例如,4输入选择器的其中两个输出信号min(地址0,地址1)和max(地址0,地址1)分别为地址0和地址1中的最小地址和地址0和地址1中的最大地址,之后通过加法器1计算地址0和地址1的地址差值,若地址差值小于等于1则地址0和地址1连续;4输入选择器的另两个输出信号min(地址2,地址3)和max(地址2,地址3)分别为地址2和地址3中的最小地址和地址2和地址3中的最大地址,并通过加法器2计算地址2和地址3的地址差值,若地址差值小于等于1则地址2和地址3连续。将两个加法器的输出执行与运算,若两个中间分组均满足地址连续性,则地址合并标记为高电平,表示两个中间分组为地址连续分组,可以执行地址合并。
此外,由于每个64比特数据在数据输入缓冲模块被划分成2个32比特子数据,则需要对数据比较信息进行排序处理,以得到对应于子数据的数据排序信息,该数据排序信息也即前文所述的每个连续地址分组对应的T个子数据对象对应的数据索引值序列。需要说明的是,如果每个数据对象对应的数据位宽为32比特,则不需要执行排序处理,将地址比较信息作为地址排序信息输出。
例如,参考前述过程,对于地址0和地址1对应的第一地址连续分组,地址0对应的地址索引值为0,地址1对应的地址索引值为1,地址0对应的数据0被划分为子数据0和子数据1,分别对应于数据索引值0和1,地址1对应的数据1被拆分为子数据2和子数据3,分别对应于数据索引值2和3;若地址比较信息为“10”(最右侧为数据最低位),第一个比特“0”代表地址0较小,则根据第一地址连续分组的地址大小关系,得到第一地址连续分组对应的数据索引值序列为“3210”。
同理,对于地址2和地址3对应的第二地址连续分组,地址2对应的地址索引值为0,地址3对应的地址索引值为1,地址2对应的数据2被划分为子数据4和子数据5,分别对应于数据索引值0和1,地址3对应的数据3被拆分为子数据6和子数据7,分别对应于数据索引值2和3;由于第二个比特“1”代表地址3较小,则根据第二地址连续分组的地址大小关系,得到第二地址连续分组对应的数据索引值序列为“1032”,也即数据排序信息为“1032 3210”。
接着,如图5A所示,根据地址连续分组中的N个存储地址的大小关系,选出其中最小存储地址作为操作初始地址。
图5E为本公开一实施例提供的地址选择模块的示意图。该模块可通过地址比较信息选择每个地址连续分组中的N个存储地址中的最小地址,通过地址总线输出至缓存。例如,对于数据位宽为32比特的数据,根据地址连续分组中4个存储地址的大小关系,选出其中最小地址(例如如图5E所示的min(地址0,地址1,地址2,地址3))作为操作初始地址;例如,对于数据位宽为64比特的数据,根据地址连续分组中2个存储地址的大小关系,选出其中最小地址作为操作初始地址。
例如,以数据对象对应的数据宽度为64比特为例说明地址选择模块的执行过程。
例如,地址比较信息为“10”,则对于2输入选择器1来说,通过地址比较信息中的第一个比特“0”选择地址0输出至缓冲器,对于2输入选择器2来说,通过地址比较信息中的第二个比特“1”选择地址3输出至缓冲器,最后基于格式标记将缓冲器的内容通过地址总线发送至缓存。
接着,如图5A所示,根据每个地址连续分组的大小关系对数据进行排序,使得数据和对应的地址相匹配。
图5F为本公开一实施例提供的数据排序模块的示意图。该模块可根据地址排序信息对每个地址连续分组对应的所有数据实现数据排序,使得数据输出与对应的地址保持顺序同步。例如,对于数据位宽为32比特的数据,将每个地址连续分组对应的排序后的4个数据依次拼接为128比特数据,通过数据总线发送至缓存;例如,对于数据位宽为64比特的数据,将每个地址连续分组对应的排序后的4个子数据依次拼接为128比特数据,通过数据总线发送至缓存。
例如,以数据对象对应的数据宽度为64比特为例说明数据排序模块的执行过程。
例如,数据排序信息为“1032 3210”,则对于图5F中的选择器来说,将地址0和地址1对应的4个子数据按照子数据0、子数据1、子数据2、子数据3的顺序输出,并按输出顺序依次拼接得到操作数据进入缓存器,使得地址0对应的子数据0和子数据1位于操作数据的低位,地址1对应的子数据2和子数据3位于操作数据的高位。
同理,选择器将地址2和地址3对应的4个子数据按照子数据6、子数据7、子数据4、子数据5的顺序输出,并按输出顺序依次拼接得到操作数据进入缓存器,使得地址3对应的子数据6和子数据7位于操作数据的低位,地址2对应的子数据4和子数据5位于操作数据的高位。
需要说明的是,图5F所示的选择器仅为示意图,实际中不限于使用8输入选择器实现数据排序,可根据需要补充其他处理逻辑。
最后,如图5A所示,将每个地址连续分组的操作起始地址和对应的操作数据分别通过地址总线和数据总线输出。
图5G为本公开一实施例提供的地址和数据输出模块的示意图。该模块由寄存器实现,将每个地址连续分组的操作起始地址和对应的操作数据缓存一个时钟周期后,分别通过地址总线和数据总线输出,防止处理频率过高导致一个时钟周期内无法完成数据和地址的处理并输出。
图6A为根据本公开一实施例提供的数据传输方法中数据加载操作的实现框图。如图6A所示,系统实现框图包括数据格式检查模块、第二地址连续性检查模块、地址选择模块,数据选择模块、读取数据输入模块、读取数据输出模块、地址输出模块和地址输入缓存模块。其中,读取数据输入模块、读取数据输出模块、地址输出模块和地址输入缓存模块可用于解决阻塞等问题,此外还可以起到等待数据、对齐数据的作用,等待数据加载操作所需的所有数据对象的数据全部从缓存中返回后,再依次返回至处理器。
执行数据加载操作时,首先,获取多个数据对象,对数据对象进行格式检查,具体过程如图5C及数据存储操作中相关内容所述,这里不再赘述。
之后,对多个数据对象进行地址连续性检查,以获取多个数据对象的地址连续性关系和大小关系,得到至少一个连续地址分组。
图6B为本公开一实施例提供的第二地址连续性检查模块的示意图。该模块可根据格式标记对输入的4个数据位宽为64比特或32比特的数据对象进行地址连续性检查,输出地址合并标记和用于数据选择的数据选择信息。
第二地址连续性检查模块与第一地址连续性检查模块的区别在于,第二地址连续性检查模块对地址比较信息进行选择处理,以得到用于数据选择的数据选择信息。需要说明的是,如果每个数据对象对应的数据位宽为32比特,则不需要执行选择处理,将地址比较信息作为数据选择信息输出。
例如,以数据对象对应的数据宽度为64比特为例说明第二地址连续性检查模块的选择处理执行过程,其他部分可以参考图5D及数据存储操作中相关内容,这里不再赘述。
由于缓存的最小逻辑处理单位为32比特,故需要对缓存返回的128比特操作数据以32比特为单位进行数据选择,也就是对地址比较信息进行选择处理,以得到对应于每个子数据的数据选择信息,该数据选择信息也即前文所述的每个连续地址分组对应的T个子数据对象对应的数据选择值。
例如,参考前述过程,例如,地址比较信息为“10”,对于地址0和地址1对应的第一地址连续分组,由于地址0为第一地址连续分组中的最小地址,因此地址0对应的地址选择值为0,地址1对应的地址选择值为1;由于每个数据对象可以拆分为两个子数据对象,因此根据地址选择值可以得到,地址0对应的子数据0和子数据1的数据选择值分别为0和1,地址1对应的子数据2和子数据3的数据选择值分别为2和3。
同理,对于地址2和地址3对应的第二地址连续分组,由于地址3为第二地址连续分组中的最小地址,因此地址3对应的地址选择值为0,地址2对应的地址选择值为1;地址3对应的子数据6和子数据7的数据选择值分别为0和1,地址2对应的子数据4和子数据5的数据选择值分别为2和3。
之后,根据地址连续分组中的2个地址的大小关系,选出其中最小地址作为操作初始地址,具体过程如图5E及数据存储操作中相关内容所述,这里不再赘述。
获取每个连续地址分组的操作初始地址对应的操作数据后,将操作数据通过读取数据输入模块发送至数据选择模块,在数据选择模块中根据每个连续分地址分组对应的数据选择信息,从中提取得到4个子数据,从而得到每个连续地址分组对应的2个读取数据。模块示意图可以参考图5F,这里不再赘述。
例如,第一地址连续分组对应的数据选择信息为“3210”,也即地址0对应的子数据0和子数据1的数据选择值分别为0和1,地址1对应的子数据2和子数据3的数据选择值分别为2和3,从而可以根据每个子数据的数据选择值从第一地址连续分组对应的操作数据中提取出子数据0、子数据1、子数据2和子数据3,进而将子数据0和子数据1拼接得到数据0,子数据2和子数据3拼接得到数据1,分别赋值给第一地址连续分组对应的2个数据对象(数据0和数据1)。
例如,第二地址连续分组对应的数据选择信息为“1032”,地址3对应的子数据6和子数据7的数据选择值分别为0和1,地址2对应的子数据4和子数据5的数据选择值分别为2和3,从而可以根据每个子数据的数据选择值从第二地址连续分组对应的操作数据中提取出子数据4、子数据5、子数据6和子数据7,进而将子数据4和子数据5拼接得到数据2,子数据6和子数据7拼接得到数据3,分别赋值给第二地址连续分组对应的2个数据对象(数据2和数据3)。
最后,将每个连续地址分组对应的2个读取数据图6A中的读取数据输出模块依此返回给处理器。
与上述的数据传输方法相对应,本公开至少一实施例还提供一种数据传输装置,图7为本公开至少一实施例提供的一种数据传输装置的示意性框图。
例如,如图7所示,数据传输装置800包括获取单元801、格式检测单元802、地址选择单元803和数据传输单元804。
获取单元801配置为获取当前操作针对的多个数据对象以及与多个数据对象一一对应的多个存储地址。
格式检测单元802配置为确定多个数据对象的格式,根据多个数据对象的格式确定地址集成量N。例如,格式检测单元802可以对应于图5B或图6A所示的数据格式检查模块。
地址选择单元803配置为响应于多个存储地址包括至少一个连续地址分组的情形,获取每个连续地址分组的操作起始地址,例如,每个连续地址分组包括依次连续的N个存储地址。例如,地址选择单元803可以对应于图5B所示的第一地址连续性检查模块及地址选择模块,或图6A所示的第二地址连续性检查模块及地址选择模块。
数据传输单元804,配置为基于每个连续地址分组的操作起始地址,分别对每个连续地址分组对应的N个数据对象进行传输以用于当前操作。例如,数据传输单元804可以对应于图5B所示的数据排序模块或图6A所示的数据选择模块。
例如,获取单元801、格式检测单元802、地址选择单元803和数据传输单元804可以是专用硬件器件,用来实现如上的获取单元801、格式检测单元802、地址选择单元803和数据传输单元804的一些或全部功能。例如,获取单元801、格式检测单元802、地址选择单元803和数据传输单元804可以是一个电路或多个电路的组合,用于实现如上所述的功能。在本申请实施例中,该一个电路或多个电路的组合可以包括:(1)位于一个或多个处理器内部的单元模块;(2)位于一个或多个存储单元中的模块;(3)与处理器相连接的一个或多个非暂时的存储装置;以及(4)处理器或存储单元中可执行的存储在存储装置中的固件。
需要说明的是,获取单元801用于实现图2所示的步骤S110,格式检测单元802用于实现图2所示的步骤S120,地址选择单元803用于实现图2所示的步骤S130,数据传输单元804用于实现图2所示的步骤S140。从而关于获取单元801的具体说明可以参考上述数据传输方法的实施例中图2所示的步骤S110的相关描述,关于格式检测单元802的具体说明可以参考上述数据传输方法的实施例中图2所示的步骤S120的相关描述,关于地址选择单元803的具体说明可以参考上述数据传输方法的实施例中图2所示的步骤S130的相关描述,关于数据传输单元804的具体说明可以参考上述数据传输方法的实施例中图2所示的步骤S140的相关描述。此外,数据传输装置可以实现与前述数据传输方法相似的技术效果,在此不再赘述。
对于本公开,还有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)为了清晰起见,在用于描述本发明的实施例的附图中,层或结构的厚度和尺寸被放大。可以理解,当诸如层、膜、区域或基板之类的元件被称作位于另一元件“上”或“下”时,该元件可以“直接”位于另一元件“上”或“下”,或者可以存在中间元件。
(3)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (20)
1.一种数据传输方法包括:
获取当前操作针对的多个数据对象以及与所述多个数据对象一一对应的多个存储地址;
确定所述多个数据对象的格式,根据所述多个数据对象的格式确定地址集成量N,其中,N为正整数且表示所述地址集成量;
响应于所述多个存储地址包括至少一个连续地址分组,获取每个所述连续地址分组的操作起始地址,其中,每个所述连续地址分组包括依次连续的N个存储地址;
基于每个所述连续地址分组的操作起始地址,分别对每个所述连续地址分组对应的N个数据对象进行传输以用于所述当前操作。
2.根据权利要求1所述的方法,其中,根据所述多个数据对象的格式确定地址集成量N,包括:
根据用于传输所述多个数据对象的数据总线宽度以及所述多个数据对象的格式确定所述地址集成量N。
3.根据权利要求1所述的方法,还包括:
对所述多个存储地址中至少部分进行连续性判断,以确定所述多个存储地址中至少部分的连续性关系和大小关系,
响应于所述多个存储地址包括连续且数量大于等于N的存储地址,获取所述至少一个连续地址分组。
4.根据权利要求1所述的方法,还包括:
对所述多个存储地址根据所述地址集成量N进行分组以得到至少一个中间分组,
对于每个所述中间分组进行连续性判断,确定每个所述中间分组中的N个存储地址的连续性关系和大小关系,
响应于至少一个所述中间分组具有连续的N个存储地址,由此获取所述至少一个连续地址分组。
5.根据权利要求3或4所述的方法,其中,进行所述连续性判断,包括:
对将要进行连续性判断的L个存储地址进行排序,
对排序后的所述L个存储地址中每相邻的两个存储地址进行差值计算,以确定所述每相邻的两个存储地址是否连续,由此确定所述L个存储地址是否整体上连续,其中,L为正整数。
6.根据权利要求4所述的方法,其中,对于每个所述中间分组进行连续性判断包括:
对于第i个所述中间分组,确定第i个所述中间分组的N个存储地址中的地址最大值和地址最小值;
将所述地址最大值减去所述地址最小值,得到地址差值;
响应于所述地址差值小于N,则第i个所述中间分组的N个存储地址的连续性关系为地址连续,否则为地址不连续,
其中,i为正整数。
7.根据权利要求1所述的方法,其中,获取每个所述连续地址分组的操作起始地址,包括:
根据每个所述连续地址分组中的N个存储地址的大小关系选择每个所述连续地址分组的操作起始地址。
8.根据权利要求7所述的方法,其中,所述操作起始地址为每个所述连续地址分组中的N个存储地址的最小值。
9.根据权利要求1所述的方法,其中,所述当前操作包括数据加载操作或数据存储操作,
基于每个所述连续地址分组的操作起始地址,分别对每个所述连续地址分组对应的N个数据对象进行传输以用于所述当前操作,包括:
响应于所述数据存储操作,基于每个所述连续地址分组的操作起始地址,经同一传输操作向存储装置写入每个所述连续地址分组对应的N个数据对象;或者
响应于所述数据加载操作,基于每个所述连续地址分组的操作起始地址,经同一传输操作从存储装置中读取每个所述连续地址分组对应的N个数据对象。
10.根据权利要求9所述的方法,其中,响应于所述数据存储操作,基于每个所述连续地址分组的操作起始地址,经同一传输操作向存储装置写入每个所述连续地址分组对应的N个数据对象,包括:
对应于每个所述连续地址分组包括的连续的N个存储地址的大小关系,将每个所述连续地址分组对应的N个数据对象进行重排,使得每个所述连续地址分组对应的N个数据对象与每个所述连续地址分组包括的N个连续的存储地址对齐,
将每个所述连续地址分组对应且重排后的N个数据对象包括的N个数据,经所述同一传输操作,分别写入到所述存储装置中以每个所述连续地址分组的操作起始地址开始的一段存储空间。
11.根据权利要求10所述的方法,其中,所述存储装置的最小逻辑处理单位为M比特,
对应于每个所述连续地址分组包括的连续的N个存储地址的大小关系,将每个所述连续地址分组对应的N个数据对象进行重排,包括:
将每个所述连续地址分组对应的N个数据对象分别以所述M比特为单位划分成多个子数据对象,得到每个所述连续地址分组对应的T个子数据对象;
根据每个所述连续地址分组包括的连续的N个存储地址的大小关系,基于每个所述连续地址分组对应的T个子数据对象进行所述重排,
其中,T和M为正整数。
12.根据权利要求11所述的方法,其中,根据每个所述连续地址分组包括的连续的N个存储地址的大小关系,基于每个所述连续地址分组对应的T个子数据对象进行所述重排,包括:
根据每个所述连续地址分组包括的连续的N个存储地址的相对位置关系,生成每个所述连续地址分组包括的连续的N个存储地址对应的N个地址索引值;
根据每个所述连续地址分组对应的N个地址索引值,确定每个所述连续地址分组对应的T个子数据对象对应的数据索引值;
根据每个所述连续地址分组包括的连续的N个存储地址的大小关系,对每个所述连续地址分组对应的N个数据对象进行排列,得到每个所述连续地址分组对应的T个子数据对象对应的数据索引值序列;
根据每个所述连续地址分组对应的T个子数据对象对应的数据索引值序列,对每个所述连续地址分组对应的T个子数据对象进行所述重排。
13.根据权利要求11所述的方法,其中,将每个所述连续地址分组对应且重排后的N个数据对象包括的N个数据,经所述同一传输操作,分别写入到所述存储装置中以每个所述连续地址分组的操作起始地址开始的一段存储空间,包括:
将每个所述连续地址分组对应且重排后的T个子数据对象包括的T个子数据依次拼接,得到每个所述连续地址分组对应的操作数据,所述操作数据长度为T与M的乘积;
将每个所述连续地址分组对应的操作数据分别写入到所述存储装置中以每个所述连续地址分组的操作起始地址开始的一段存储空间。
14.根据权利要求9所述的方法,其中,响应于所述数据加载操作,基于每个所述连续地址分组的操作起始地址,经同一传输操作从存储装置中读取每个所述连续地址分组对应的N个数据对象,包括:
从所述存储装置中以每个所述连续地址分组的操作起始地址开始的一段存储空间,读取每个所述连续地址分组对应的N个读取数据,
将读取的每个所述连续地址分组对应的N个读取数据,根据每个所述连续地址分组包括的连续的N个存储地址与每个所述连续地址分组对应的N个数据对象的对应关系,分别赋值给每个所述连续地址分组对应的N个数据对象。
15.根据权利要求14所述的方法,其中,从所述存储装置中以每个所述连续地址分组的操作起始地址开始的一段存储空间,读取每个所述连续地址分组对应的N个读取数据,包括:
获取在所述存储装置中从每个所述连续地址分组的操作初始地址开始的一段存储空间内的每个所述连续地址分组对应的操作数据,由所述操作数据得到所述每个所述连续地址分组对应的N个读取数据。
16.根据权利要求14所述的方法,其中,将读取的每个所述连续地址分组对应的N个读取数据,根据每个所述连续地址分组包括的连续的N个存储地址与每个所述连续地址分组对应的N个数据对象的对应关系,分别赋值给每个所述连续地址分组对应的N个数据对象,包括:
根据每个所述连续地址分组包括的N个连续的存储地址的大小关系,顺序生成每个所述连续地址分组的N个存储地址对应的N个地址选择值;
根据每个所述连续地址分组的N个存储地址对应的N个地址选择值和所述多个数据对象的格式,从每个所述连续地址分组对应的操作数据中提取得到N个读取数据,分别赋值给每个所述连续地址分组对应的N个数据对象。
17.根据权利要求16所述的方法,其中,所述存储装置的最小逻辑处理单位为M比特,
根据每个所述连续地址分组的N个存储地址对应的N个地址选择值和所述多个数据对象的格式,从每个所述连续地址分组对应的操作数据中提取得到N个读取数据,分别赋值给每个所述连续地址分组对应的N个数据对象,包括:
根据所述多个数据对象的格式和所述存储装置的最小逻辑处理单位M,确定每个数据对象对应的子数据对象个数P;
根据每个所述连续地址分组的N个存储地址对应的N个地址选择值和所述子数据对象个数P,顺序生成每个所述连续地址分组对应的T个子数据对象对应的数据选择值;
根据每个所述连续地址分组对应的数据选择值从每个所述连续地址分组对应的操作数据中提取得到每个所述连续地址分组对应的T个子数据;
根据每个所述连续地址分组对应的T个子数据得到每个所述连续地址分组对应的N个读取数据,分别赋值给每个所述连续地址分组对应的N个数据对象,
其中,T、P和M均为正整数。
18.根据权利要求1-17任一项所述的方法,其中,所述存储装置为处理器中的第一级缓存或第二级缓存。
19.根据权利要求1-17任一项所述的方法,还包括:在确定所述多个数据对象的格式之后,记录与所述多个数据对象的格式对应的格式标记,其中,所述格式标记用于后续处理根据对应的格式进行操作。
20.一种数据传输装置,包括:
获取单元,配置为获取当前操作针对的多个数据对象以及与所述多个数据对象一一对应的多个存储地址;
格式检测单元,配置为确定所述多个数据对象的格式,根据所述多个数据对象的格式确定地址集成量N;
地址选择单元,配置为响应于所述多个存储地址包括至少一个连续地址分组的情形,获取每个所述连续地址分组的操作起始地址,其中,每个所述连续地址分组包括依次连续的N个存储地址;
数据传输单元,配置为基于每个所述连续地址分组的操作起始地址,分别对每个所述连续地址分组对应的N个数据对象进行传输以用于所述当前操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011380098.XA CN112380148B (zh) | 2020-11-30 | 2020-11-30 | 数据传输方法和数据传输装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011380098.XA CN112380148B (zh) | 2020-11-30 | 2020-11-30 | 数据传输方法和数据传输装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112380148A true CN112380148A (zh) | 2021-02-19 |
CN112380148B CN112380148B (zh) | 2022-10-25 |
Family
ID=74590250
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011380098.XA Active CN112380148B (zh) | 2020-11-30 | 2020-11-30 | 数据传输方法和数据传输装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112380148B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113656332A (zh) * | 2021-08-20 | 2021-11-16 | 中国科学院上海高等研究院 | 基于合并地址差值序列的cpu缓存数据预取方法 |
CN114153384A (zh) * | 2021-11-09 | 2022-03-08 | 尧云科技(西安)有限公司 | 一种混合缓存的存储方法及装置 |
CN114285670A (zh) * | 2021-12-31 | 2022-04-05 | 安徽中科锟铻量子工业互联网有限公司 | 一种基于量子随机数密钥的物联网关数据加密通信方法 |
CN114780031A (zh) * | 2022-04-15 | 2022-07-22 | 北京志凌海纳科技有限公司 | 一种基于单机存储引擎的数据处理方法和装置 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000155845A (ja) * | 1998-05-29 | 2000-06-06 | Mitsubishi Electronics America Inc | 記憶装置、デ―タフォ―マッタ、デ―タにアクセスする方法、デ―タの領域をクリアする方法、デ―タを圧縮する方法、デ―タをフォ―マット化する方法、グラフィックスシステムおよびグラフィックスシステムを動作させる方法 |
US20020188742A1 (en) * | 2001-04-23 | 2002-12-12 | Xiaoning Nie | Method and device for storing data packets |
CN1606851A (zh) * | 2001-12-21 | 2005-04-13 | 新兴光网络公司 | 寻址连续数据分组 |
CN1904868A (zh) * | 2005-07-11 | 2007-01-31 | 商辉达股份有限公司 | 用于包化总线的组合包 |
CN101135993A (zh) * | 2007-09-20 | 2008-03-05 | 华为技术有限公司 | 一种嵌入式系统芯片及数据读写处理方法 |
US20130185508A1 (en) * | 2012-01-12 | 2013-07-18 | Fusion-Io, Inc. | Systems and methods for managing cache admission |
CN103617136A (zh) * | 2013-12-04 | 2014-03-05 | 华为技术有限公司 | Scsi驱动侧及i/o请求的控制方法 |
CN104657285A (zh) * | 2013-11-16 | 2015-05-27 | 上海芯豪微电子有限公司 | 一种数据缓存系统和方法 |
CN104794065A (zh) * | 2015-05-04 | 2015-07-22 | 常州工学院 | 一种多分组定长数据循环存取方法 |
CN105930278A (zh) * | 2015-02-26 | 2016-09-07 | 爱思开海力士有限公司 | 数据储存设备及其操作方法 |
CN106649144A (zh) * | 2015-10-29 | 2017-05-10 | 爱思开海力士有限公司 | 数据储存设备及其操作方法 |
CN107992943A (zh) * | 2016-10-06 | 2018-05-04 | 想象技术有限公司 | 用于卷积神经网络的缓冲器寻址 |
CN108153683A (zh) * | 2016-12-02 | 2018-06-12 | Arm 有限公司 | 用于在存储器中的地址范围之间传输数据的装置和方法 |
CN111159075A (zh) * | 2019-12-31 | 2020-05-15 | 成都海光微电子技术有限公司 | 数据传输方法和数据传输装置 |
CN111176566A (zh) * | 2019-12-25 | 2020-05-19 | 山东方寸微电子科技有限公司 | 一种支持queue命令的eMMC读写控制方法及存储介质 |
-
2020
- 2020-11-30 CN CN202011380098.XA patent/CN112380148B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000155845A (ja) * | 1998-05-29 | 2000-06-06 | Mitsubishi Electronics America Inc | 記憶装置、デ―タフォ―マッタ、デ―タにアクセスする方法、デ―タの領域をクリアする方法、デ―タを圧縮する方法、デ―タをフォ―マット化する方法、グラフィックスシステムおよびグラフィックスシステムを動作させる方法 |
US20020188742A1 (en) * | 2001-04-23 | 2002-12-12 | Xiaoning Nie | Method and device for storing data packets |
CN1606851A (zh) * | 2001-12-21 | 2005-04-13 | 新兴光网络公司 | 寻址连续数据分组 |
CN1904868A (zh) * | 2005-07-11 | 2007-01-31 | 商辉达股份有限公司 | 用于包化总线的组合包 |
US20070079044A1 (en) * | 2005-07-11 | 2007-04-05 | Nvidia Corporation | Packet Combiner for a Packetized Bus with Dynamic Holdoff time |
CN101135993A (zh) * | 2007-09-20 | 2008-03-05 | 华为技术有限公司 | 一种嵌入式系统芯片及数据读写处理方法 |
US20130185508A1 (en) * | 2012-01-12 | 2013-07-18 | Fusion-Io, Inc. | Systems and methods for managing cache admission |
CN104657285A (zh) * | 2013-11-16 | 2015-05-27 | 上海芯豪微电子有限公司 | 一种数据缓存系统和方法 |
CN103617136A (zh) * | 2013-12-04 | 2014-03-05 | 华为技术有限公司 | Scsi驱动侧及i/o请求的控制方法 |
CN105930278A (zh) * | 2015-02-26 | 2016-09-07 | 爱思开海力士有限公司 | 数据储存设备及其操作方法 |
CN104794065A (zh) * | 2015-05-04 | 2015-07-22 | 常州工学院 | 一种多分组定长数据循环存取方法 |
CN106649144A (zh) * | 2015-10-29 | 2017-05-10 | 爱思开海力士有限公司 | 数据储存设备及其操作方法 |
CN107992943A (zh) * | 2016-10-06 | 2018-05-04 | 想象技术有限公司 | 用于卷积神经网络的缓冲器寻址 |
CN108153683A (zh) * | 2016-12-02 | 2018-06-12 | Arm 有限公司 | 用于在存储器中的地址范围之间传输数据的装置和方法 |
CN111176566A (zh) * | 2019-12-25 | 2020-05-19 | 山东方寸微电子科技有限公司 | 一种支持queue命令的eMMC读写控制方法及存储介质 |
CN111159075A (zh) * | 2019-12-31 | 2020-05-15 | 成都海光微电子技术有限公司 | 数据传输方法和数据传输装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113656332A (zh) * | 2021-08-20 | 2021-11-16 | 中国科学院上海高等研究院 | 基于合并地址差值序列的cpu缓存数据预取方法 |
CN113656332B (zh) * | 2021-08-20 | 2023-05-26 | 中国科学院上海高等研究院 | 基于合并地址差值序列的cpu缓存数据预取方法 |
CN114153384A (zh) * | 2021-11-09 | 2022-03-08 | 尧云科技(西安)有限公司 | 一种混合缓存的存储方法及装置 |
CN114285670A (zh) * | 2021-12-31 | 2022-04-05 | 安徽中科锟铻量子工业互联网有限公司 | 一种基于量子随机数密钥的物联网关数据加密通信方法 |
CN114285670B (zh) * | 2021-12-31 | 2022-11-15 | 安徽中科锟铻量子工业互联网有限公司 | 一种基于量子随机数密钥的物联网关数据加密通信方法 |
CN114780031A (zh) * | 2022-04-15 | 2022-07-22 | 北京志凌海纳科技有限公司 | 一种基于单机存储引擎的数据处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112380148B (zh) | 2022-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112380148B (zh) | 数据传输方法和数据传输装置 | |
US4354232A (en) | Cache memory command buffer circuit | |
US20120221747A1 (en) | Method for reordering the request queue of a hardware accelerator | |
US7111289B2 (en) | Method for implementing dual link list structure to enable fast link-list pointer updates | |
CN101777031A (zh) | 直接存储器存取控制器以及数据传输方法 | |
US6728256B1 (en) | Shared buffer control device | |
CN108257078A (zh) | 存储器知晓重排序源 | |
US6112268A (en) | System for indicating status of a buffer based on a write address of the buffer and generating an abort signal before buffer overflows | |
US6366996B1 (en) | Page memory management in non time critical data buffering applications | |
CN114036077A (zh) | 数据处理方法及相关装置 | |
EP0386719A2 (en) | Partial store control circuit | |
CN110968538B (zh) | 一种数据缓冲方法和装置 | |
US20210082082A1 (en) | Data processing method and processing circuit | |
WO2013004193A1 (en) | Method and apparatus for index-based virtual addressing | |
JPH04279945A (ja) | メモリ回路 | |
CN114780151A (zh) | 一种基于归并排序算法实现可变规模数量的数据排序系统 | |
US6763422B2 (en) | Cache memory capable of reducing area occupied by data memory macro units | |
US6789176B2 (en) | Address release method, and common buffering device for ATM switching system which employs the same method | |
CN112463218A (zh) | 指令发射控制方法及电路、数据处理方法及电路 | |
US9582438B2 (en) | Method and apparatus for identifying cause of interrupt | |
CN109344630B (zh) | 区块生成方法、装置、设备和存储介质 | |
CN110781100B (zh) | 一种数据检测方法、逻辑芯片及网络设备 | |
KR100732426B1 (ko) | 고속 컨텍스트 전환을 갖는 컴퓨터 | |
CN107622157B (zh) | 一种追踪电路时序路径连接性的方法 | |
CN116665836B (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 |