掌桥专利:专业的专利平台
掌桥专利
首页

一种非线性多存储信道数据交织方法及交织模块

文献发布时间:2023-06-19 19:28:50


一种非线性多存储信道数据交织方法及交织模块

技术领域

本申请涉及数据处理技术领域,具体涉及一种非线性多存储信道数据交织方法及交织模块。

背景技术

片上系统(System on Chip, SoC)是一种将多种组件整合到单个芯片上的集成电路(Integrated Circuit,IC)。应用程序处理器、安全隔区和其他协处理器等都是SoC的组件。近年来,许多高性能计算设备如图形计算处理设备(Graphics Processing Unit,GPU)、机器学习计算设备等,要求SoC能够提供更高的存储器读写速率。为实现上述要求,SoC可以将总线划分为多个存储信道,每个存储器提供固定的读写速率,通过合适的存储信道交织技术,将多个存储器同时调度运行起来,以实现读写速率的提高。

通常,经过存储信道交织处理后,多个存储器的地址是以某个固定粒度被对称地、均匀地、交错地映射到虚拟地址空间内,然而该交织方式在大多数时间内只有一至两个存储块在工作,大多数存储块处于非工作状态,存储器内的并行处理程度不够。

发明内容

针对现有技术的以上缺陷或改进需求,本申请提供了一种非线性多存储信道数据交织方法及交织模块,能够通过非线性映射来调整虚拟地址空间中的地址,将连续递增的虚拟地址映射为非线性非连续的物理地址,从而将数据非线性地存放到不同的存储信道中的不同位置,进一步充分利用多个存储信道的带宽,提高存储信道的并行度。

为实现上述目的,按照本发明的第一方面,本申请提供了一种多存储信道数据交织方法,包括:

根据存储器的总容量和交织粒度,从初始虚拟地址位中确定能够用于交织的虚拟地址位;

从能够用于交织的虚拟地址位中选取虚拟地址位进行非线性映射,得到映射后的虚拟地址位;

根据初始虚拟地址位以及映射后的虚拟地址位,形成物理地址。

在一些实施例中,根据存储器的总容量和交织粒度,从初始虚拟地址位中确定能够用于交织的虚拟地址位包括:

根据存储器的总容量,获取初始虚拟地址位中能够用于交织的虚拟地址位的最高比特位;

根据交织粒度,获取初始虚拟地址位中能够用于交织的虚拟地址位的最低比特位;

将初始虚拟地址位中能够用于交织的虚拟地址位的最高比特位、初始虚拟地址位中能够用于交织的虚拟地址位的最低比特位以及最高比特位和最低比特位之间的初始虚拟地址位作为能够用于交织的虚拟地址位。

在一些实施例中,从能够用于交织的虚拟地址位中选取虚拟地址位进行非线性映射,得到映射后的虚拟地址位包括:

从能够用于交织的虚拟地址位中选取第一数量的虚拟地址位,标记为第一虚拟地址位,对第一虚拟地址位进行第一非线性映射,得到与第一虚拟地址位数量相同的虚拟地址位,标记为第二虚拟地址位。

在一些实施例中,第一虚拟地址位包括初始虚拟地址位中能够用于交织的虚拟地址位的最低比特位。

在一些实施例中,第一虚拟地址位不包括初始虚拟地址位中能够用于交织的虚拟地址位的最高比特位。

在一些实施例中,标记能够用于交织的虚拟地址位除去第一虚拟地址位之后的虚拟地址位为剩余交织虚拟地址位;该方法还包括:从剩余交织虚拟地址位中选取第二数量的虚拟地址位,标记为第三虚拟地址位,对第三虚拟地址位进行第二非线性映射,得到与第三虚拟地址位数量相同的虚拟地址位,标记为第四虚拟地址位。

在一些实施例中,第一数量和第二数量相等,第一非线性映射和第二非线性映射采用相同的非线性映射函数实现。

在一些实施例中,标记能够用于交织的虚拟地址位除去第一虚拟地址位之后的虚拟地址位为剩余交织虚拟地址位;该方法还包括:从剩余交织虚拟地址位中选取一组或者多组虚拟地址位进行非线性映射,非线性映射后输出的虚拟地址位的数量与输入的虚拟地址位的数量相同。

在一些实施例中,根据初始虚拟地址位以及映射后的虚拟地址位,形成物理地址包括:

将第二虚拟地址位作为物理地址的最高位,标记为第一物理地址位。

在一些实施例中,标记初始虚拟地址位除去能够用于交织的虚拟地址位之后的虚拟地址位为剩余虚拟地址位;根据初始虚拟地址位以及映射后的虚拟地址位,形成物理地址还包括:

将剩余虚拟地址位作为物理地址的对应比特位,标记为第二物理地址位。

在一些实施例中,标记能够用于交织的虚拟地址位除去第一虚拟地址位之后的虚拟地址位为剩余交织虚拟地址位;根据初始虚拟地址位以及映射后的虚拟地址位,形成物理地址还包括:根据剩余交织虚拟地址位形成物理地址的剩余比特位,标记为第三物理地址位。

在一些实施例中,在剩余交织虚拟地址位的部分被进行非线性映射时,将映射后的这部分虚拟地址位和剩余交织虚拟地址位中未被映射的虚拟地址位一起,形成第三物理地址位;在剩余交织虚拟地址位的全部被进行非线性映射时,将映射后的虚拟地址位形成第三物理地址位;在剩余交织虚拟地址位的全部未被进行非线性映射时,将剩余交织虚拟地址位形成第三物理地址位。

在一些实施例中,该多存储信道数据交织方法还包括:

根据片上系统中存储信道的个数,从物理地址的最高一个比特位开始,选取相应数量的比特位,用于区分当前数据被送往的存储信道。

第二方面,本申请提供了一种多存储信道数据交织模块,包括虚拟地址划分模块、映射模块和物理地址划分模块,其中,

虚拟地址划分模块用于根据存储器的总容量和交织粒度,从初始虚拟地址位中确定能够用于交织的虚拟地址位;

映射模块用于从能够用于交织的虚拟地址位中选取虚拟地址位进行非线性映射,得到映射后的虚拟地址位;

物理地址划分模块用于根据初始虚拟地址位以及映射后的虚拟地址位,形成物理地址。

在一些实施例中,该多存储信道数据交织模块还包括信道区分模块,用于根据片上系统中存储信道的个数,从物理地址的最高一个比特位开始,选取相应数量的比特位,用于区分当前数据被送往的存储信道。

第三方面,本申请提供了一种片上系统,包括一个或多个处理单元、与一个或多个处理单元一一对应的上述多存储信道数据交织模块、多个存储控制器以及与多个存储控制器一一对应的多个存储器。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:根据不同的存储器总容量以及不同的交织粒度需求,选取虚拟地址空间中不同的地址位作为一对一映射函数的输入,初始的虚拟地址经过一对一映射函数处理之后由线性递增变为非线性,因此送入存储器内的地址也变为非线性,有利于提高存储器的并行度;此外,通过将非线性映射函数的输出结果与未参与非线性处理的虚拟地址位进行交换等方式,充分打乱虚拟地址的高有效位,形成物理地址,从而实现了均匀地将数据放到不同存储信道的不同位置。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例的具有非线性多存储信道数据交织能力的片上系统的结构示意图;

图2是本申请实施例的交织模块结构示意图;

图3是本申请实施例的非线性多存储信道数据交织方法的流程示意图;

图4是本申请一个实施例的片上系统中虚拟地址空间与物理地址空间之间的映射关系图;

图5是本申请另一个实施例的片上系统中虚拟地址空间与物理地址空间之间的映射关系图;

图6是本申请又一个实施例的片上系统中虚拟地址空间与物理地址空间之间的映射关系图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

片上系统可以在任意计算设备中集成,包括但不限于个人计算机、移动设备、便携式计算机、服务器、显卡、人工智能计算设备等。如图1所示,在本发明实施例中,SoC可以包括若干个处理单元,例如第一处理单元图形处理单元(Graphics Processing Unit,GPU)、第二处理单元高速串行计算机扩展总线(Peripheral Component Interconnect express,PCIe)、第三处理单元直接存储器访问单元(Direct Memory Access,DMA)、第四处理单元中央处理单元(Central Processing Unit,CPU)和第五处理单元数字信号处理器单元(Digital Signal Processing,DSP)等,系统寄存器,与若干个处理单元一一对应的若干个交织模块,分别为与GPU对应的第一交织模块、与PCIe对应的第二交织模块、与DMA对应的第三交织模块、与CPU对应的第四交织模块和与DSP对应的第五交织模块等,若干个存储控制器,分别为第一存储控制器、第二存储控制器、第三存储控制器、第四存储控制器、第五存储控制器等,以及与若干个存储控制器一一对应的若干个存储器,分别为第一存储器、第二存储器、第三存储器、第四存储器、第五存储器等。可以理解的是,上述各模块数量可根据实际系统进行设置,本发明对此不做限制。

GPU通过配置总线接口连接SoC配置总线,SoC配置总线保证GPU发出的读写信号可以送达系统寄存器,通过数据总线接口连接第一交织模块,PCIe通过数据总线接口连接第二交织模块,DMA通过数据总线接口连接第三交织模块,CPU通过数据总线接口连接第四交织模块,DSP通过数据总线接口连接第五交织模块,其他的处理单元也分别通过数据总线接口连接相应的交织模块,系统寄存器分别连接若干个交织模块。若干个存储控制器分别连接若干个存储器。若干个交织模块分别连接SoC数据总线,SoC数据总线保证若干个交织模块发出的读写信号可以送达相应的存储控制器。

GPU通过SoC配置总线将配置信息存放在系统寄存器中,系统寄存器向各交织模块输出交织控制信号,各交织模块接收来自系统寄存器的交织控制信号。GPU通过数据总线接口向第一交织模块发送数据读写指令,PCIe通过数据总线接口向第二交织模块发送数据读写指令,DMA通过数据总线接口向第三交织模块发送数据读写指令,CPU通过数据总线接口向第四交织模块发送数据读写指令,DSP通过数据总线接口向第五交织模块发送数据读写指令。各交织模块接收来自各处理单元的数据读写指令,数据读写指令被拆分为地址信息和数据信息,根据提前设定好的交织控制信号,对地址信息进行交织处理,将处理完成后的地址信息和数据信息经过SoC数据总线发往各存储控制器。存储控制器接收来自SoC数据总线的读写请求,并将其转化为存储器规定的数据格式,将数据读写指令中的数据信息写入存储器或从存储器读出数据送往SoC数据总线。

应当理解,处理单元的数量不受限制,可以是一个,两个或更多个,同样地,存储器的容量以及存储器的构成形式也是不受限制的,图1中仅示例性地给出了若干组存储控制器和存储器,存储控制器和存储器的数量均为2

在本发明的一些实施方式中,SoC包括一个或多个主动读/写存储器的处理单元、与处理单元一一对应的一个或多个交织模块、多个存储控制器、以及与存储控制器一一对应的多个存储器。每个交织模块分别连接多个存储控制器,即,多个存储器可以为多个处理单元共享。在一些实施方式中,SoC包括一个处理单元,处理单元为CPU、PCIe或者其他具备发出配置信号能力的处理单元。在一些实施方式中,SoC包括多个处理单元,处理单元可以为CPU、PCIe、DMA、GPU、DSP或者其他的处理单元,且至少其中一个处理单元为CPU、PCIe或者其他具备发出配置信号能力的处理单元。图1中给出了从GPU获取交织控制信号的情形,事实上,也可以从PCIe或其他具备发出配置信号能力的处理单元获取交织控制信号,与此对应地,用PCIe或其他具备发出配置信号能力的处理单元替代GPU通过SoC配置总线连接系统寄存器即可。

处理单元访问的地址处于多存储信道对应的虚拟地址空间。如图2所示,本申请实施例中,各个交织模块均包括虚拟地址划分模块210、映射模块220、物理地址划分模块230和信道区分模块240;其中,虚拟地址划分模块210,被配置于根据存储器的总容量和交织粒度,从初始虚拟地址位中确定能够用于交织的虚拟地址位;映射模块220,被配置于从能够用于交织的虚拟地址位中选取虚拟地址位进行非线性映射,得到映射后的虚拟地址位;物理地址划分模块230,被配置于根据初始虚拟地址位以及映射后的虚拟地址位,形成物理地址;信道区分模块240,被配置于根据片上系统中存储信道的个数,从物理地址的最高一个比特位开始,选取相应数量的比特位,用于区分当前数据应当被送往哪个存储信道。

在一些实施例中,虚拟地址划分模块210包括:第一交织比特位确定模块、第二交织比特位确定模块和第三交织比特位确定模块;其中,第一交织比特位确定模块被配置于根据存储器的总容量,获取初始虚拟地址位中能够用于交织的虚拟地址位的最高比特位;第二交织比特位确定模块被配置于根据交织粒度,获取初始虚拟地址位中能够用于交织的虚拟地址位的最低比特位;第三交织比特位确定模块被配置于将初始虚拟地址位中能够用于交织的虚拟地址位的最高比特位、初始虚拟地址位中能够用于交织的虚拟地址位的最低比特位以及最高比特位和最低比特位之间的初始虚拟地址位作为能够用于交织的虚拟地址位。

在一些实施例中,映射模块220还包括第一映射模块,被配置于从能够用于交织的虚拟地址位中选取一定数量(第一数量)的虚拟地址位,标记为第一虚拟地址位,对第一虚拟地址位进行非线性映射(第一非线性映射),得到与第一虚拟地址位数量相同的虚拟地址位,标记为第二虚拟地址位。

在一些实施方式中,第一虚拟地址位包括初始虚拟地址位中能够用于交织的虚拟地址位的最低比特位。在一些实施方式中,第一虚拟地址位不包括初始虚拟地址位中能够用于交织的虚拟地址位的最高比特位。

标记能够用于交织的虚拟地址位除去第一虚拟地址位之后的虚拟地址位为剩余交织虚拟地址位。

在一些实施例中,映射模块220还包括第二映射模块,被配置于从剩余交织虚拟地址位中选取一定数量(第二数量)的虚拟地址位,标记为第三虚拟地址位,对第三虚拟地址位进行非线性映射(第二非线性映射),得到与第三虚拟地址位数量相同的虚拟地址位,标记为第四虚拟地址位。在一些实施例中,第一数量和第二数量相等,第一非线性映射和第二非线性映射采用相同的非线性映射函数实现。

在一些实施例中,映射模块220还包括第三映射模块,被配置于剩余交织虚拟地址位中选取一组或者多组虚拟地址位进行非线性映射,非线性映射后输出的虚拟地址位的数量与输入的虚拟地址位的数量相同。

在一些实施例中,物理地址划分模块230还包括第一物理地址划分模块、第二物理地址划分模块和第三物理地址划分模块;其中,第一物理地址划分模块被配置于在形成物理地址时,将第二虚拟地址位作为物理地址的最高位,标记为第一物理地址位;标记初始虚拟地址位除去能够用于交织的虚拟地址位之后的虚拟地址位为剩余虚拟地址位。第二物理地址划分模块被配置于在形成物理地址时,将剩余虚拟地址位作为物理地址的对应比特位,标记为第二物理地址位;第三物理地址划分模块被配置于根据剩余交织虚拟地址位形成物理地址的剩余比特位,标记为第三物理地址位。

在一些实施例中,在剩余交织虚拟地址位的部分被进行非线性映射时,第三物理地址划分模块被配置于将映射后的这部分虚拟地址位和剩余交织虚拟地址位中未被映射的虚拟地址位一起,形成第三物理地址位。在一些实施方式中,在剩余交织虚拟地址位的全部被进行非线性映射时,第三物理地址划分模块被配置于将剩余交织虚拟地址位映射后的虚拟地址位形成第三物理地址位。在一些实施方式中,在剩余交织虚拟地址位的全部未被进行非线性映射时,第三物理地址划分模块被配置于将剩余交织虚拟地址位形成第三物理地址位。

本申请提出非线性多存储信道数据交织模块能根据不同的存储器总容量以及不同的交织粒度需求,选取虚拟地址空间中不同的地址位作为一对一映射函数的输入,初始的虚拟地址经过一对一映射函数处理之后由线性递增变为非线性,因此送入存储器内的地址也变为非线性,有利于提高存储器的并行度。

另外,本申请还能通过将非线性映射函数的输出结果与未参与非线性处理的虚拟地址位进行交换等方式,充分打乱虚拟地址的高有效位,形成物理地址,从而实现了均匀地将数据放到不同存储信道的不同位置。

以下分别进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺序的限定。

在本实施例中,提供了一种涉及数据处理的非线性多存储信道数据交织方法,如图3所示,该非线性多存储信道数据交织方法的具体流程可以包括如下步骤。

S310:根据存储器的总容量和交织粒度,从初始虚拟地址位中确定能够用于交织的虚拟地址位。

在本实施例中,未经过交织处理的地址称为虚拟地址(Virtual Address, VA),经过交织处理之后的地址称为物理地址(Physical Address, PA)。交织处理是将数字基带信号按已定义的规则进行打乱,在接收端解调后再将这些打乱的数据信号按相反的规则重新排列,使之恢复出初始的次序。交织的过程可以通过一组延时器来实现的,延时量是取样周期的整数倍。延时器由随机存储器(RAM)构成。交织时将数据按严格的规定顺序写入RAM中;去交织时再按相反的顺序从RAM中读出。

在一些实施例中,根据片上系统内存储信道的个数以及各个存储信道的存储容量,确定存储器的总容量。在一些实施例中,根据片上系统内进程的读写性能需求,确定交织粒度;在一些实施方式中,片上系统内进程的读写性能需求越高,交织粒度越小。例如,片上系统内有两个存储信道,每个存储信道的存储容量为1GB,则存储器的总容量为2GB,另外交织粒度可以为128Byte;片上系统内有四个存储信道,每个存储信道的存储容量为512MB,则存储器的总容量为2048MB,另外交织粒度可以为4kByte;片上系统内有八个存储信道,每个存储信道的存储容量为512MB,则存储器的总容量为4096MB,另外交织粒度可以为512Byte。

在一些实施例中,根据存储器的总容量和交织粒度,确定初始虚拟地址位中能够用于交织的虚拟地址位包括:根据存储器的总容量,获取初始虚拟地址位中能够用于交织的虚拟地址位的最高比特位;根据交织粒度,获取初始虚拟地址位中能够用于交织的虚拟地址位的最低比特位;将初始虚拟地址位中能够用于交织的虚拟地址位的最高比特位、初始虚拟地址位中能够用于交织的虚拟地址位的最低比特位以及最高比特位和最低比特位之间的初始虚拟地址位作为能够用于交织的虚拟地址位。

图4为本申请一个实施例的片上系统中虚拟地址空间与物理地址空间之间的映射关系图。如图4所示,本实施例的片上系统中内有两个存储信道,每个存储信道的存储容量为1GB,交织粒度为128Byte,则存储器的总容量为2GB = 2

图5为本申请另一个实施例的片上系统中虚拟地址空间与物理地址空间之间的映射关系图。如图5所示,本实施例的片上系统内有四个存储信道,每个存储信道的存储容量为512MB,交织粒度为4kByte,则存储器的总容量为2048MB = 2

图6为本申请又一个实施例的片上系统中虚拟地址空间与物理地址空间之间的映射关系图。如图6所示,本实施例的片上系统内有八个存储信道,每个存储信道的存储容量为512MB,交织粒度为512Byte,则存储器的总容量为4096MB = 2

S320:从能够用于交织的虚拟地址位中选取虚拟地址位进行非线性映射,得到映射后的虚拟地址位。

在一些实施例中,从能够用于交织的虚拟地址位中选取一定数量(第一数量)的虚拟地址位,标记为第一虚拟地址位,对第一虚拟地址位进行非线性映射(第一非线性映射),得到与第一虚拟地址位数量相同的虚拟地址位,标记为第二虚拟地址位。

在一些实施方式中,第一虚拟地址位包括初始虚拟地址位中能够用于交织的虚拟地址位的最低比特位。在一些实施方式中,第一虚拟地址位不包括初始虚拟地址位中能够用于交织的虚拟地址位的最高比特位。

标记能够用于交织的虚拟地址位除去第一虚拟地址位之后的虚拟地址位为剩余交织虚拟地址位。

在一些实施例中,本方法还包括:从剩余交织虚拟地址位中选取一定数量(第二数量)的虚拟地址位,标记为第三虚拟地址位,对第三虚拟地址位进行非线性映射(第二非线性映射),得到与第三虚拟地址位数量相同的虚拟地址位,标记为第四虚拟地址位。在一些实施例中,第一数量和第二数量相等,第一非线性映射和第二非线性映射采用相同的非线性映射函数实现。

在一些实施方式中,本方法还包括:从剩余交织虚拟地址位中选取一组或者多组虚拟地址位进行非线性映射,非线性映射后输出的虚拟地址位的数量与输入的虚拟地址位的数量相同。

具体地,如图4所示,本实施例中,从能够用于交织的虚拟地址位bit30至bit7中选取bit29、bit27、bit25、bit23、bit21、bit19、bit17、bit15、bit13、bit11、bit9和bit7作为第一虚拟地址位,对第一虚拟地址位进行非线性映射,即,将第一虚拟地址位作为非线性映射函数的输入,得到第二虚拟地址位,即非线性映射函数输出第二虚拟地址位。将剩余交织虚拟地址位bit30、bit28、bit26、bit24、bit22、bit20、bit18、bit16、bit14、bit12、bit10和bit8作为第三虚拟地址位,对第三虚拟地址位进行非线性映射,即,将第三虚拟地址位作为非线性映射函数的输入,得到第四虚拟地址位,即,非线性映射函数输出第四虚拟地址位。

如图4所示,本实施例中可以选取一个12bit的一对一非线性映射函数hash_out[11:0]=hash_12b(x[11:0])如下:

hash_out[11] = x[3]^ x[2] ^ x[1]^ x[0];

hash_out[10] = x[4]^ x[3] ^ x[2]^ x[1];

hash_out[9] = x[0];

hash_out[8] = x[9]^ x[8] ^ x[7]^ x[6] ^ x[1]^ x[0];

hash_out[7] = x[7]^ x[6] ^ x[5]^ x[4];

hash_out[6] = x[10]^ x[9] ^ x[8]^ x[7] ^ x[2]^ x[1];

hash_out[5] = x[8]^ x[7] ^ x[6]^ x[5] ^ x[0];

hash_out[4] = x[5]^ x[4] ^ x[3]^ x[2];

hash_out[3] = x[11]^ x[10] ^ x[9]^ x[8] ^ x[3]^ x[2];

hash_out[2] = x[1]^ x[0];

hash_out[1] = x[6]^ x[5] ^ x[4]^ x[3];

hash_out[0] = x[2]^ x[1] ^ x[0];

其中,^表示异或逻辑,x[i]表示二进制数x的第i位。应当了解,以上函数仅用作示例,并不唯一。一般地,非线性映射函数满足12比特输入,12比特输出,即一对一非线性映射条件即可。

利用上述非线性映射函数hash_12b,对第一虚拟地址位和第二虚拟地址位进行非线性映射。具体地,对第一虚拟地址位,bit29、bit27、bit25、bit23、bit21、bit19、bit17、bit15、bit13、bit11、bit9和bit7分别对应上述x[11]至x[0],计算得到hash_out[11:0],标记为hash_out_0,即第二虚拟地址位;对第三虚拟地址位,bit30、bit28、bit26、bit24、bit22、bit20、bit18、bit16、bit14、bit12、bit10和bit8分别对应上述x[11]至x[0],计算得到hash_out[11:0],标记为hash_out_1,即第四虚拟地址位。

又如图5所示,本实施例中,从能够用于交织的虚拟地址位bit30至bit12中选取bit27至bit12作为第一虚拟地址位,对第一虚拟地址位进行非线性映射,得到第二虚拟地址位。选取一个16bit的一对一非线性映射函数hash_out[15:0]=hash_16b(x[15:0])如下:

hash_out[0] = x[15]^ x[13] ^ x[4]^ x[0];

hash_out[1] = x[15]^ x[14] ^ x[13]^ x[5] ^ x[4]^ x[1] ^ x[0];

hash_out[2] = x[14]^ x[13] ^ x[6]^ x[5] ^ x[4]^ x[2]^ x[1]^ x[0];

hash_out[3] = x[15]^ x[14] ^ x[7]^ x[6] ^ x[5]^ x[3] ^ x[2]^ x[1];

hash_out[4] = x[13]^ x[8] ^ x[7]^ x[6] ^ x[3]^ x[2] ^ x[0];

hash_out[5] = x[14]^ x[9] ^ x[8]^ x[7] ^ x[4]^ x[3] ^ x[1];

hash_out[6] = x[15]^ x[10] ^ x[9]^ x[8] ^ x[5]^ x[4] ^ x[2];

hash_out[7] = x[15]^ x[13] ^ x[11]^ x[10] ^ x[9]^ x[6] ^ x[5]^ x[4] ^x[3]^ x[0];

hash_out[8] = x[15]^ x[14] ^ x[13]^ x[12] ^ x[11]^ x[10] ^ x[7]^ x[6]^ x[5]^ x[1] ^ x[0];

hash_out[9] = x[14]^ x[12] ^ x[11]^ x[8] ^ x[7]^ x[6] ^ x[4]^ x[2] ^x[1]^ x[0];

hash_out[10] = x[15]^ x[13] ^ x[12]^ x[9] ^ x[8]^ x[7] ^ x[5]^ x[3] ^x[2]^ x[1];

hash_out[11] = x[15]^ x[14] ^ x[10]^ x[9] ^ x[8]^ x[6] ^ x[3]^ x[2] ^x[0];

hash_out[12] = x[13]^ x[11] ^ x[10]^ x[9] ^ x[7]^ x[3] ^ x[1]^ x[0];

hash_out[13] = x[14]^ x[12] ^ x[11]^ x[10] ^ x[8]^ x[4] ^ x[2]^ x[1];

hash_out[14] = x[15]^ x[13] ^ x[12]^ x[11] ^ x[9]^ x[5] ^ x[3]^ x[2];

hash_out[15] = x[15]^ x[14] ^ x[12]^ x[10] ^ x[6]^ x[3] ^ x[0];

其中,^表示异或逻辑,x[i]表示二进制数x的第i位。应当了解,以上函数仅用作示例,并不唯一。一般地,非线性映射函数满足16比特输入,16比特输出,即一对一非线性映射条件即可。

利用上述非线性映射函数hash_16b,对第一虚拟地址位进行非线性映射。具体地,对第一虚拟地址位,bit27至bit12分别对应上述x[15]至x[0],计算得到hash_out[15:0],标记为hash_out_3,即第二虚拟地址位。

再如图6所示,本实施例中,从能够用于交织的虚拟地址位bit31至bit9中选取bit28至bit9作为第一虚拟地址位,对第一虚拟地址位进行非线性映射,得到第二虚拟地址位。选取一个20bit的一对一非线性映射函数hash_out[19:0]=hash_20b(x[19:0])。一般地,非线性映射函数满足20比特输入,20比特输出,即一对一非线性映射条件即可。

利用上述非线性映射函数hash_20b,对第一虚拟地址位进行非线性映射,计算得到hash_out[19:0],标记为hash_out_4,即第二虚拟地址位。

S330:根据初始虚拟地址位以及映射后的虚拟地址位,形成物理地址。

在一些实施例中,在形成物理地址时,将第二虚拟地址位作为物理地址的最高位,标记为第一物理地址位。

在一些实施例中,标记初始虚拟地址位除去能够用于交织的虚拟地址位之后的虚拟地址位为剩余虚拟地址位。在形成物理地址时,将剩余虚拟地址位作为物理地址的对应比特位,标记为第二物理地址位。

在一些实施例中,根据剩余交织虚拟地址位形成物理地址的剩余比特位,标记为第三物理地址位。在一些实施方式中,在剩余交织虚拟地址位的部分被进行非线性映射时,将映射后的这部分虚拟地址位和剩余交织虚拟地址位中未被映射的虚拟地址位一起,形成第三物理地址位。在一些实施方式中,在剩余交织虚拟地址位的全部被进行非线性映射时,将映射后的虚拟地址位形成第三物理地址位。在一些实施方式中,在剩余交织虚拟地址位的全部未被进行非线性映射时,将剩余交织虚拟地址位形成第三物理地址位。

具体地,如图4所示,物理地址(PA)可以由如下方式构成:将第二虚拟地址位hash_out_0作为物理地址的最高位bit30至bit19,即第一物理地址位;将初始虚拟地址位除去能够用于交织的虚拟地址位之后的剩余虚拟地址位bit6至bit0作为物理地址的bit6至bit0,即第二物理地址位;将剩余交织虚拟地址位(本实施例中即第三虚拟地址位)映射得到的第四虚拟地址位hash_out_1作为物理地址的bit18至bit7,即第三物理地址位。

具体地,如图5所示,物理地址可以由如下方式构成:将第二虚拟地址位hash_out_3作为物理地址的最高位bit30至bit15,即第一物理地址位;将初始虚拟地址位除去能够用于交织的虚拟地址位之后的剩余虚拟地址位bit11至bit0作为物理地址的bit11至bit0,即第二物理地址位;将剩余交织虚拟地址位bit30至bit28作为物理地址的bit14至bit12,即第三物理地址位。

再如图6对应的实施例中,物理地址可以由如下方式构成:将第二虚拟地址位hash_out_4作为物理地址的最高位bit31至bit12,即第一物理地址位;将初始虚拟地址位除去能够用于交织的虚拟地址位之后的剩余虚拟地址位bit8至bit0作为物理地址的bit8至bit0,即第二物理地址位;将剩余交织虚拟地址位bit31至bit29作为物理地址的bit11至bit9,即第三物理地址位。

S340:根据片上系统中存储信道的个数,从物理地址的最高一个比特位开始,选取相应数量的比特位,用于区分当前数据应当被送往哪个存储信道。

在图4所示的实施例中,片上系统内有两个存储信道,使用物理地址的bit30,即物理地址的最高一个比特位,来区分当前数据应当送往哪个存储信道。在图5所示的实施例中,片上系统内有四个存储信道,使用物理地址的bit30至bit29,即从物理地址的最高一个比特位bit30开始的两个比特位,来区分当前数据应当送往哪个存储信道。在图6所示的实施例中,片上系统内有八个存储信道,使用物理地址的bit31至bit29,即从物理地址的最高一个比特位bit31开始的三个比特位,来区分当前数据应当送往哪个存储信道。

经过交织处理后,同一片地址区域的不同粒度地址被非线性映射,可以被送往不同的存储信道中,并且原本变化较小的地址高位经过映射之后地址变化变得频繁,从而在同一个存储信道内,数据被分发至不同的存储区块中。

本申请通过非线性函数来调整VA中的某些位,将连续递增的VA映射为非线性非连续的PA,从而将数据非线性地存放到不同的存储信道中的不同位置,以充分利用多个存储信道的带宽,提高存储信道的并行度。

另外,针对不同的交织粒度和不同的存储器总容量,可选用的交织方法有所不同,本申请根据交织粒度和存储器总容量,确定可以用于交织的虚拟地址位,选取合适的非线性映射函数,选取特定的虚拟地址位作为非线性映射函数的输入,通过将非线性映射函数的输出结果与未参与映射处理的虚拟地址位进行交换等方式,充分打乱初始虚拟地址的高有效位,形成物理地址,以实现均匀地将数据放到不同存储信道的不同位置。

由上可知,本申请提出的非线性多存储信道数据交织方法能根据不同的存储器总容量以及不同的交织粒度需求,选取虚拟地址空间中不同的地址位作为一对一映射函数的输入,初始的虚拟地址经过一对一映射函数处理之后由线性递增变为非线性,因此送入存储器内的地址也变为非线性,有利于提高存储器的并行度。

需要注意的是,本申请中图4、图5、图6分别对应的实施例只是本申请中支持的一部分实施例,各个实施例存储信道的数量,选取的映射函数,地址交换方式等之间没有关联性。本方案支持的实施例非线性多存储信道数据交织方法以及交织模块不限于上述三种,还有诸多配置类型供用户选择,用户可以根据实际需求选取合适的配置类型。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或多个(两个或两个以上)用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。

应理解的是,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。

以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

相关技术
  • 一种对数据进行交织的方法和交织器
  • 一种对数据进行交织的方法和交织器
  • 一种多粒度组合的存储器数据交织方法和交织模块
  • 一种多粒度组合的存储器数据交织方法和交织模块
技术分类

06120115923363