一种多粒度组合的存储器数据交织方法和交织模块与流程

文档序号:32128592发布日期:2022-11-09 09:02阅读:54来源:国知局
一种多粒度组合的存储器数据交织方法和交织模块与流程

1.本发明属于数据处理技术领域,更具体地,涉及一种多粒度组合的存储器数据交织方法和交织模块。


背景技术:

2.当前计算设备通常由片上系统(system on chip,soc)构成,许多高性能计算设备如图形计算处理设备(graphics processing unit,gpu),人工智能计算设备等,要求soc能够提供更高的存储器读写速率。为实现上述要求,soc可以将总线划分为多个存储信道,每个存储器提供固定的读写速率,通过合适的存储信道交织技术,将多个存储器同时调度运行起来,以实现读写速率的提高。
3.通常,经过存储信道交织处理后,多个存储器的地址是以某个固定粒度被对称地、均匀地、交错地映射到虚拟地址空间内(下称均匀交织处理)。从应用角度看,在某个基地址的基础上发出的递增地址,经均匀交织处理后被映射到多个存储器中;单个存储器内收到的地址也是线性递增的,这导致在单个存储器内,大多数时间内只有一至两个存储块在工作,大多数存储块处于非工作状态,因此,存储器内的并行处理程度不够。此外,某些高性能计算设备并非每时每刻都处于极高性能的工作状态下,在性能要求较低或次低的工作场景下,均匀交织处理仍需要所有的存储器同时工作,这造成了不必要的功耗浪费。上述问题在移动计算设备,如智能手机/平板电脑/笔记本电脑等上,有更加明显的表现。


技术实现要素:

4.针对现有技术的以上缺陷或改进需求,本发明提供了一种多粒度组合的存储器数据交织方法和交织模块,通过调整总线配置及合理划分存储器中的不同存储区域,能实现多种不同粒度的单层交织,以及不同粒度的交叠交织,通过灵活的交织方案,能有效避免单个存储器内并行处理程度不够导致的存储空间利用率低、以及所有存储器同时工作造成的不必要的功耗浪费。
5.为实现上述目的,按照本发明的一个方面,提供了一种存储器数据交织方法,包括:
6.划分系统地址空间,得到第一系统交织区和第二系统交织区;
7.划分存储器地址空间,得到第一存储交织区和第二存储交织区;
8.其中,对第一系统交织区内的地址进行第一交织粒度的交织处理后,再对应至第一存储交织区;对第二系统交织区内的地址进行第二交织粒度的交织处理后,再对应至第二存储交织区;第一交织粒度小于第二交织粒度。
9.在一些实施方式中,第一存储交织区包括偶数个容量相等的第一子存储交织区,偶数个第一子存储交织区分别设置在不同的存储器中。
10.在一些实施方式中,对第一系统交织区内的地址进行第一交织粒度的交织处理包括:
11.获取输入地址相对于第一系统交织区的基地址的偏移地址;
12.使偏移地址的与第一交织粒度对应数量的低位比特保持不变;
13.用偏移地址的与低位比特相邻的高位比特区分存储器;
14.使偏移地址的剩余高位比特线性增加,构成各存储器的第一子存储交织区内部的偏移地址。
15.在一些实施方式中,第二存储交织区包括一个第二子存储交织区或者多个容量相等的第二子存储交织区,多个第二子存储交织区分别设置在不同的存储器中。
16.在一些实施方式中,对第二系统交织区内的地址进行第二交织粒度的交织处理包括:
17.获取输入地址相对于第二系统交织区的基地址的偏移地址;
18.使偏移地址的与第二交织粒度对应数量的低位比特保持不变;
19.对偏移地址的剩余高位比特进行处理,使剩余高位比特被非线性地打乱。
20.在一些实施方式中,对偏移地址的剩余高位比特进行处理,使剩余高位比特被非线性地打乱包括:
21.取偏移地址的比特w-1至比特t作为非线性映射函数的输入,得到具有与输入的比特位数量相等的比特位的输出hash_out;其中,w为第二系统交织区的最小容量对应的地址宽度,t为第二交织粒度对应的地址宽度;
22.根据第二系统交织区的总容量,取偏移地址的不同比特位备用;
23.基于hash_out和偏移地址的备用的比特位进行映射,得到具有与备用的比特位数量相等的比特位的输出hash_div;
24.根据hash_out、hash_div和第二系统交织区的总容量,计算得到输出地址。
25.在一些实施方式中,还包括:
26.划分系统地址空间,得到系统交叠区;
27.划分存储器地址空间,得到存储交叠区;
28.其中,对系统交叠区内的地址先进行第二交织粒度的交织处理,再进行第一交织粒度的交织处理后,再对应至存储交叠区。
29.按照本发明的另一个方面,提供了一种存储器数据交织方法,包括:
30.划分系统地址空间,得到系统交叠区;
31.划分存储器地址空间,得到存储交叠区;
32.其中,对系统交叠区内的地址先进行第二交织粒度的交织处理,再进行第一交织粒度的交织处理后,再对应至存储交叠区;第一交织粒度小于第二交织粒度。
33.在一些实施方式中,存储交叠区包括偶数个容量相等的子存储交叠区,偶数个子存储交叠区分别设置在不同的存储器中。
34.在一些实施方式中,第二交织粒度的交织处理包括:
35.获取输入地址相对于系统交叠区的基地址的偏移地址;
36.使偏移地址的与第二交织粒度对应数量的低位比特保持不变;
37.对偏移地址的剩余高位比特进行处理,使剩余高位比特被非线性地打乱。
38.在一些实施方式中,对偏移地址的剩余高位比特进行处理,使剩余高位比特被非线性地打乱包括:
39.取偏移地址的比特w-1至比特t作为非线性映射函数的输入,得到具有与输入的比特位数量相等的比特位的输出hash_out;其中,w为系统交叠区的最小容量对应的地址宽度,t为第二交织粒度对应的地址宽度;
40.根据系统交叠区的总容量,取偏移地址的不同比特位备用;
41.基于hash_out和偏移地址的备用的比特位进行映射,得到具有与备用的比特位数量相等的比特位的输出hash_div;
42.根据hash_out、hash_div和系统交叠区的总容量,计算得到输出地址。
43.在一些实施方式中,第一交织粒度的交织处理包括:
44.获取输入地址经第二交织粒度的交织处理后的地址相对于系统交叠区的地址经第二交织粒度的交织处理后的基地址的偏移地址;
45.使偏移地址的与第一交织粒度对应数量的低位比特保持不变;
46.用偏移地址的与低位比特相邻的高位比特区分存储器;
47.使偏移地址的剩余高位比特线性增加,构成各存储器的子存储交叠区内部的偏移地址。
48.在一些实施方式中,上述存储器数据交织方法还包括:
49.划分系统地址空间,得到第一系统交织区、第二系统交织区和系统线性区;
50.划分存储器地址空间,得到第一存储交织区和第二存储交织区和存储线性区;
51.其中,对第一系统交织区内的地址进行第一交织粒度的交织处理后,再对应至第一存储交织区;对第二系统交织区内的地址进行第二交织粒度的交织处理后,再对应至第二存储交织区;存储线性区的地址与系统线性区的地址对应。
52.按照本发明的又一个方面,提供了一种交织模块,包括交织预处理模块、第一交织处理模块、第二交织处理模块和线性处理模块;
53.交织预处理模块用于根据交织控制信号,确定当前地址在系统地址空间中的位置,进而判断当前地址的后续处理方式,并将判断结果送往第一交织处理模块;
54.第一交织处理模块用于根据交织预处理模块的判断结果,确定是否对当前地址进行第二交织粒度的交织处理;
55.第二交织处理模块用于根据交织预处理模块的判断结果,确定是否对来自第一交织处理模块的地址进行第一交织粒度的交织处理;第一交织粒度小于第二交织粒度;
56.线性处理模块用于根据交织预处理模块的判断结果,确定对来自第二交织处理模块的地址采用第一线性处理方式或第二线性处理方式进行处理。
57.在一些实施方式中,系统地址空间包括第一系统交织区、第二系统交织区和系统线性区;交织预处理模块在当前地址落在第二系统交织区时,判断当前地址需要由第一交织处理模块进行处理;交织预处理模块在当前地址落在第一系统交织区时,判断当前地址需要由第二交织处理模块进行处理。
58.在一些实施方式中,系统地址空间包括系统交叠区;交织预处理模块在当前地址落在系统交叠区时,判断当前地址需要由第一交织处理模块和第二交织处理模块进行处理。
59.在一些实施方式中,在交织预处理模块的判断结果为当前地址需要由第一交织处理模块进行处理时,第一交织处理模块根据交织控制信号,对当前地址进行第二交织粒度
的交织处理,并将交织处理后的地址发送给第二交织处理模块;在交织预处理模块的判断结果为当前地址不需要由第一交织处理模块进行处理时,第一交织处理模块将当前地址发送给第二交织处理模块。
60.在一些实施方式中,在交织预处理模块的判断结果为当前地址需要由第二交织处理模块进行处理时,第二交织处理模块根据交织控制信号,对来自第一交织处理模块的地址进行第一交织粒度的交织处理,并将交织处理后的地址发送给线性处理模块;在交织预处理模块的判断结果为当前地址不需要由第二交织处理模块进行处理时,第二交织处理模块将来自第一交织处理模块的地址发送给线性处理模块。
61.在一些实施方式中,在交织预处理模块的判断结果为当前地址需要由第一交织处理模块和第二交织处理模块至少其中之一进行处理时,采用第一线性处理方式,否则采用第二线性处理方式;第一线性处理方式包括:将来自第二交织处理模块的地址以按序均分的方式映射至各存储器地址空间的对应区域;第二线性处理方式包括:将来自第二交织处理模块的地址顺序填满各存储器地址空间的对应区域。
62.按照本发明的又一个方面,提供了一种片上系统,包括一个或多个处理单元、与一个或多个处理单元一一对应的一个或多个上述交织模块、多个存储控制器以及与多个存储控制器一一对应的多个存储器。
63.总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:将多个存储器中的存储资源划分为多个交织区和线性区,例如包括具有第一交织粒度(例如细粒度)的交织区、具有第二交织粒度(例如粗粒度)的交织区、第一交织粒度和第二交织粒度交叠的交叠区以及线性区,对不同的交织区设置不同的交织方式,总线在转发数据时根据地址信息及配置信息确定当前数据属于哪个区域,将地址使用其所在区域对应的交织方法进行处理,以实现数据交织;交织分步进行,按粒度从粗到细执行,若地址命中对应区域,则按照对应的规则来处理,若多个交织区映射到存储器中同一块区域,则对当前地址处理多次,以实现不同交织粒度的交叠。通过调整总线配置及合理划分存储器中的不同存储区域,能实现多种不同粒度的单层交织,以及不同粒度的交叠交织,以实现灵活的数据交织方案。
附图说明
64.图1是本发明实施例的具备多粒度组合交织能力的片上系统的部分结构示意图;
65.图2是本发明一个实施例的系统地址空间和各存储器内地址空间的映射关系示意图;
66.图3是本发明又一个实施例的系统地址空间和各存储器内地址空间的映射关系示意图;
67.图4是本发明又一个实施例的系统地址空间和各存储器内地址空间的映射关系示意图;
68.图5是本发明又一个实施例的系统地址空间和各存储器内地址空间的映射关系示意图;
69.图6a是图2所示的交织区2a1与存储器地址空间的映射关系示例;
70.图6b是图2所示的交织区2a3与存储器地址空间的映射关系示例;
71.图6c是图2所示的交叠区2a2与存储器地址空间的映射关系示例;
72.图6d是图2所示的线性区2a4与存储器地址空间的映射关系示例;
73.图7是本发明实施例的交织模块的结构示意图;
74.图8是本发明实施例的交织策略配置流程图。
具体实施方式
75.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。正如本领域技术人员可以认识到的那样,在不脱离本技术的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
76.片上系统可以在任意计算设备中集成,包括但不限于个人计算机、移动设备、便携式计算机、服务器、显卡、人工智能计算设备等。如图1所示,在本发明实施例中,soc包括4个处理单元,分别为第一处理单元中央处理单元(central processing unit,cpu)、第二处理单元高速串行计算机扩展总线(peripheral component interconnect express,pcie)、第三处理单元直接存储器访问单元(direct memory access,dma)和第四处理单元图形处理单元(graphics processing unit,gpu),系统寄存器,与4个处理单元一一对应的4个交织模块,分别为与cpu对应的第一交织模块、与pcie对应的第二交织模块、与dma对应的第三交织模块和与gpu对应的第四交织模块,4个存储控制器,分别为第一存储控制器、第二存储控制器、第三存储控制器和第四存储控制器,以及与4个存储控制器一一对应的4个存储器,分别为第一存储器、第二存储器、第三存储器和第四存储器。
77.cpu通过配置总线接口连接soc配置总线,soc配置总线保证cpu发出的读写信号可以送达系统寄存器,通过数据总线接口连接第一交织模块,pcie通过数据总线接口连接第二交织模块,dma通过数据总线接口连接第三交织模块,gpu通过数据总线接口连接第四交织模块,系统寄存器分别连接第一交织模块、第二交织模块、第三交织模块和第四交织模块。第一存储控制器连接第一存储器,第二存储控制器连接第二存储器,第三存储控制器连接第三存储器,第四存储控制器连接第四存储器。第一交织模块、第二交织模块、第三交织模块和第四交织模块连接soc数据总线,soc数据总线保证第一交织模块、第二交织模块、第三交织模块和第四交织模块发出的读写信号可以送达第一至第四存储控制器。
78.cpu通过soc配置总线将配置信息存放在系统寄存器中,系统寄存器向各交织模块输出交织控制信号,各交织模块接收来自系统寄存器的交织控制信号。cpu通过数据总线接口向第一交织模块发送数据读写指令,pcie通过数据总线接口向第二交织模块发送数据读写指令,dma通过数据总线接口向第三交织模块发送数据读写指令,gpu通过数据总线接口向第四交织模块发送数据读写指令。各交织模块接收来自各处理单元的数据读写指令,数据读写指令被拆分为地址信息和数据信息,根据提前设定好的交织控制信号,对地址信息进行交织处理,将处理完成后的地址信息和数据信息经过soc数据总线发往各存储控制器。存储控制器接收来自soc数据总线的读写请求,并将其转化为存储器规定的数据格式,将数据读写指令中的数据信息写入存储器或从存储器读出数据送往soc数据总线。
79.应当理解,处理单元的数量不受限制,可以是一个,两个或更多个,同样地,存储控
制器及存储器的数量、存储器的容量以及存储器的构成形式也是不受限制的,图1中仅示例性地给出了4组存储控制器和存储器,也可以是两组、三组、五组或更多组。存储器可以是片内的静态随机存储器(static random access memory,sram),也可以是片外的双倍速率同步动态随机存储器(double data rate synchronous dynamic random access memory,ddr sdram)等,本发明对此不作限制。
80.在本发明的一些实施方式中,soc包括一个或多个主动读/写存储器的处理单元、与处理单元一一对应的一个或多个交织模块、多个存储控制器、以及与存储控制器一一对应的多个存储器。每个交织模块分别连接多个存储控制器,即,多个存储器可以为多个处理单元共享。在一些实施方式中,soc包括一个处理单元,处理单元为cpu、pcie或者其他具备发出配置信号能力的处理单元。在一些实施方式中,soc包括多个处理单元,处理单元可以为cpu、pcie、dma、gpu或者其他的处理单元,且至少其中一个处理单元为cpu、pcie或者其他具备发出配置信号能力的处理单元。图1中给出了从cpu获取交织控制信号的情形,事实上,也可以从pcie或其他具备发出配置信号能力的处理单元获取交织控制信号,与此对应地,用pcie或其他具备发出配置信号能力的处理单元替代cpu通过soc配置总线连接系统寄存器即可。
81.处理单元访问的地址处于系统地址空间,划分系统地址空间得到具有第一交织粒度(例如128字节)的第一系统交织区、具有第二交织粒度(例如4096字节)的第二系统交织区、第一交织粒度和第二交织粒度交叠的系统交叠区以及不做交织处理的系统线性区。系统地址空间与存储器地址空间构成映射关系,多个存储器内同样划分具有第一交织粒度的第一存储交织区、具有第二交织粒度的第二存储交织区、存储交叠区和存储线性区。第一系统交织区与第一存储交织区构成映射关系,第二系统交织区与第二存储交织区构成映射关系,系统交叠区与存储交叠区构成映射关系,系统线性区和存储线性区构成映射关系。第一系统交织区的容量与第一存储交织区的容量相等,第二系统交织区的容量与第二存储交织区的容量相等,系统交叠区的容量与存储交叠区的容量相等,系统线性区的容量与存储线性区的容量相等。
82.在一些实施方式中,第一交织粒度为2m字节,第二交织粒度为2n字节。在一些实施方式中,第一交织粒度小于第二交织粒度,即m<n,第一交织粒度为细粒度,第二交织粒度为粗粒度。在一些实施方式中,第一交织粒度为128字节。在一些实施方式中,第二交织粒度为4096字节。
83.在一些实施方式中,由于需要对称交织,第一存储交织区包括偶数个容量相等的第一子存储交织区,偶数个第一子存储交织区分别设置在不同的存储器中,即偶数个第一子存储交织区中的每一个占用一个存储器,一共占用偶数个存储器。在一些实施方式中,由于需要对称交织,存储交叠区包括偶数个容量相等的子存储交叠区,偶数个子存储交叠区分别设置在不同的存储器中,即偶数个子存储交叠区中的每一个占用一个存储器,一共占用偶数个存储器。在一些实施方式中,第二存储交织区包括一个第二子存储交织区或者多个容量相等的第二子存储交织区。在一些实施方式中,soc中存储器的总数为n,第二子存储交织区的个数可以为奇数,也可以为偶数,满足小于或者等于n即可。在一些实施方式中,各个存储器中除去第一子存储交织区、第二子存储交织区和子存储交叠区之后的地址空间,为子存储线性区。
84.在一些实施方式中,每个存储器均存在线性区。在一些实施方式中,某个存储器的容量被交织区和交叠区占满时,该存储器不存在线性区。用户可以根据实际需要进行配置,使得各个存储器中是否设置第一子存储交织区、第二子存储交织区、子存储交叠区和子存储线性区,即,各存储器中可以不设置第一子存储交织区、第二子存储交织区、子存储交叠区和子存储线性区中的一个或者多个。
85.系统地址空间内各区域的容量为所有存储器内对应区域的容量之和。例如,第一系统交织区的容量为各存储器内第一子存储交织区的容量之和;第二系统交织区的容量为各存储器内第二子存储交织区的容量之和;系统交叠区的容量为各存储器内子存储交叠区的容量之和;系统线性区的容量为各存储器内子存储线性区的容量之和。
86.在一些实施方式中,在系统地址空间中,第一系统交织区、系统交叠区、第二系统交织区和系统线性区的地址按从小到大的顺序排列。在一些实施方式中,在存储器地址空间中,第一子存储交织区、子存储交叠区、第二子存储交织区和子存储线性区的地址按从小到大的顺序排列,且第一子存储交织区、子存储交叠区、第二子存储交织区和子存储线性区中的一个或多个并非必须,即,可以不设置该区域。例如,某个存储器的地址空间中不设置第一子存储交织区,子存储交叠区、第二子存储交织区和子存储线性区的地址按从小到大的顺序排列;或者,某个存储器的地址空间中不设置子存储交叠区,第一子存储交织区、第二子存储交织区和子存储线性区的地址按从小到大的顺序排列;或者,某个存储器的地址空间中不设置第二子存储交织区,第一子存储交织区、子存储交叠区和子存储线性区的地址按从小到大的顺序排列;再或者,某个存储器的地址空间中不设置第一子存储交织区和子存储交叠区,第二子存储交织区和子存储线性区的地址按从小到大的顺序排列。
87.作为示例,下面给出4种配置下系统地址空间和各存储器内地址空间的映射关系,应当了解,满足上述关系的配置都应当属于本发明的保护范围,且不限于下述4种。
88.图2是本发明一个实施例的系统地址空间和各存储器内地址空间的映射关系示意图。如图2所示,系统地址空间与4个存储器内的地址空间构成映射关系。具体地,系统地址空间被划分为具有第一交织粒度的第一系统交织区(即交织区2a1)、具有第二交织粒度的第二系统交织区(即交织区2a3)、第一交织粒度和第二交织粒度交叠的系统交叠区(即交叠区2a2)以及不做交织处理的系统线性区(即线性区2a4)。第一存储器(即存储器2b0)的地址空间包括第一子存储交织区(即交织区2b01)、子存储交叠区(即交叠区2b02)、第二子存储交织区(即交织区2b03)和子存储线性区(即线性区2b04);第二存储器(即存储器2b1)的地址空间包括第一子存储交织区(即交织区2b11)、子存储交叠区(即交叠区2b12)、第二子存储交织区(即交织区2b13)和子存储线性区(即线性区2b14);第三存储器(即存储器2b2)的地址空间包括第一子存储交织区(即交织区2b21)、子存储交叠区(即交叠区2b22)、第二子存储交织区(即交织区2b23)和子存储线性区(即线性区2b24);第四存储器(即存储器2b3)的地址空间包括第一子存储交织区(即交织区2b31)、子存储交叠区(即交叠区2b32)、第二子存储交织区(即交织区2b33)和子存储线性区(即线性区2b34)。
89.交织区2a1与交织区2b01、2b11、2b21和2b31构成映射关系,交织区2a1的容量为交织区2b01、2b11、2b21和2b31的容量之和,且交织区2b01、2b11、2b21和2b31的容量均相等。交叠区2a2与交叠区2b02、2b12、2b22和2b32构成映射关系,交叠区2a2的容量为交叠区2b02、2b12、2b22和2b32的容量之和,且交叠区2b02、2b12、2b22和2b32的容量均相等。交织
区2a3与交织区2b03、2b13、2b23和2b33构成映射关系,交织区2a3的容量为交织区2b03、2b13、2b23和2b33的容量之和,且交织区2b03、2b13、2b23和2b33的容量均相等。线性区2a4与线性区2b04、2b14、2b24和2b34构成映射关系,线性区2a4的容量为线性区2b04、2b14、2b24和2b34的容量之和。
90.其中,第一交织粒度为128字节,第二交织粒度为4096字节,为大多数总线分页的天然边界。在一些实施方式中,交织区2b01、2b11、2b21和2b31的容量可以为128兆字节、256兆字节、512兆字节、768兆字节、1024兆字节、1536兆字节、2048兆字节、4096兆字节或其他。在一些实施方式中,交织区2b03、2b13、2b23和2b33的容量可以为128兆字节、256兆字节、512兆字节、768兆字节、1024兆字节、1536兆字节、2048兆字节、4096兆字节或其他。系统地址处于交叠区2a2内时,第一交织粒度和第二交织粒度交叠,以第一交织粒度为128字节、第二交织粒度为4096字节为例,先进行粒度为4096字节的第一次交织,随后进行粒度为128字节的第二次交织。
91.图3是本发明又一个实施例的系统地址空间和各存储器内地址空间的映射关系示意图。如图3所示,系统地址空间与3个存储器内的地址空间构成映射关系,且系统地址空间中不存在交叠区,其中一个存储器只设置了一个交织区。具体地,系统地址空间被划分为具有第一交织粒度(如128字节)的第一系统交织区(即交织区3a1)、具有第二交织粒度(如4096字节)的第二系统交织区(即交织区3a2)以及不做交织处理的系统线性区(即线性区3a3)。第一存储器(即存储器3b0)的地址空间包括第一子存储交织区(即交织区3b01)、第二子存储交织区(即交织区3b02)和子存储线性区(即线性区3b03);第二存储器(即存储器3b1)的地址空间包括第一子存储交织区(即交织区3b11)、第二子存储交织区(即交织区3b12)和子存储线性区(即线性区3b13);第三存储器(即存储器3b2)的地址空间包括第二子存储交织区(即交织区3b22)和子存储线性区(即线性区3b23)。
92.交织区3a1与交织区3b01和3b11构成映射关系,开展粒度为128字节的地址交织,交织区3a1的容量为交织区3b01和3b11的容量之和,且交织区3b01和3b11的容量相等。交织区3a2与交织区3b02、3b12和3b22构成映射关系,开展粒度为4096字节的地址交织,交织区3a2的容量为交织区3b02、3b12和3b22的容量之和,且交织区3b02、3b12和3b22的容量均相等。线性区3a3与线性区3b03、3b13和3b23构成映射关系,线性区3a3的容量为线性区3b03、3b13和3b23的容量之和。
93.图4是本发明又一个实施例的系统地址空间和各存储器内地址空间的映射关系示意图。如图4所示,系统地址空间与4个存储器内的地址空间构成映射关系,且其中两个存储器只设置了一个交织区。具体地,系统地址空间被划分为具有第一交织粒度的第一系统交织区(即交织区4a1)、具有第二交织粒度的第二系统交织区(即交织区4a3)、第一交织粒度和第二交织粒度的系统交叠区(即交叠区4a2)以及不做交织处理的系统线性区(即线性区4a4)。第一存储器(即存储器4b0)的地址空间包括第一子存储交织区(即交织区4b01)、子存储交叠区(即交叠区4b02)、第二子存储交织区(即交织区4b03)和子存储线性区(即线性区4b04);第二存储器(即存储器4b1)的地址空间包括第一子存储交织区(即交织区4b11)、子存储交叠区(即交叠区4b12)、第二子存储交织区(即交织区4b13)和子存储线性区(即线性区4b14);第三存储器(即存储器4b2)的地址空间包括第一子存储交织区(即交织区4b21)、子存储交叠区(即交叠区4b22)和子存储线性区(即线性区4b24);第四存储器(即存储器
4b3)的地址空间包括第一子存储交织区(即交织区4b31)、子存储交叠区(即交叠区4b32)和子存储线性区(即线性区4b34)。
94.交织区4a1与交织区4b01、4b11、4b21和4b31构成映射关系,交织区4a1的容量为交织区4b01、4b11、4b21和4b31的容量之和,且交织区4b01、4b11、4b21和4b31的容量均相等。交叠区4a2与交叠区4b02、4b12、4b22和4b32构成映射关系,交叠区4a2的容量为交叠区4b02、4b12、4b22和4b32的容量之和,且交叠区4b02、4b12、4b22和4b32的容量均相等。交织区4a3与交织区4b03和4b13构成映射关系,交织区4a3的容量为交织区4b03和4b13的容量之和,且交织区4b03和4b13的容量相等。线性区4a4与线性区4b04、4b14、4b24和4b34构成映射关系,线性区4a4的容量为线性区4b04、4b14、4b24和4b34的容量之和。
95.图5是本发明又一个实施例的系统地址空间和各存储器内地址空间的映射关系示意图。如图5所示,系统地址空间与4个存储器内的地址空间构成映射关系,且其中一个存储器只设置了一个交织区,还有一个存储器未设置交织区。具体地,系统地址空间被划分为具有第一交织粒度的第一系统交织区(即交织区5a1)、具有第二交织粒度的第二系统交织区(即交织区5a3)、第一交织粒度和第二交织粒度交叠的系统交叠区(即交叠区5a2)以及不做交织处理的系统线性区(即线性区5a4)。第一存储器(即存储器5b0)的地址空间包括第一子存储交织区(即交织区5b01)、子存储交叠区(即交叠区5b02)、第二子存储交织区(即交织区5b03)和子存储线性区(即线性区5b04);第二存储器(即存储器5b1)的地址空间包括第一子存储交织区(即交织区5b11)、子存储交叠区(即交叠区5b12)、第二子存储交织区(即交织区5b13)和子存储线性区(即线性区5b14);第三存储器(即存储器5b2)的地址空间包括子存储交叠区(即交叠区5b22)、第二子存储交织区(即交织区5b23)和子存储线性区(即线性区5b24);第四存储器(即存储器5b3)的地址空间包括子存储交叠区(即交叠区5b32)和子存储线性区(即线性区5b34)。
96.交织区5a1与交织区5b01和5b11构成映射关系,交织区5a1的容量为交织区5b01和5b11的容量之和,且交织区5b01和5b11的容量相等。交叠区5a2与交叠区5b02、5b12、5b22和5b32构成映射关系,交叠区5a2的容量为交叠区5b02、5b12、5b22和5b32的容量之和,且交叠区5b02、5b12、5b22和5b32的容量均相等。交织区5a3与交织区5b03、5b13和5b23构成映射关系,交织区5a3的容量为交织区5b03、5b13和5b23的容量之和,且交织区5b03、5b13和5b23的容量相等。线性区5a4与线性区5b04、5b14、5b24和5b34构成映射关系,线性区5a4的容量为线性区5b04、5b14、5b24和5b34的容量之和。
97.图6a是图2所示的交织区2a1与存储器地址空间的映射关系示例。系统地址空间内交织区2a1的地址线性增加,以128字节为分块,进行交织处理。如图6a所示,取输入地址相对于交织区2a1的基地址的偏移地址,在偏移地址上完成128字节的交织处理。因交织粒度为128字节,即27字节,且4个存储器2b0、2b1、2b2和2b3均设置了粒度为128字节的交织区,偏移地址的比特6至比特0应当保持不变,偏移地址的比特8和比特7用于区分存储器,即比特8和比特7相同的偏移地址放在一起,剩余高位地址线性增加,即比特8和比特7相同的偏移地址中,比特9及以上的高位地址线性增加,构成各存储器交织区内部的偏移地址。
98.具体地,如下表一所示,偏移地址的比特6至比特0保持不变,均为0;偏移地址的比特8和比特7用于区分存储器,即,比特8和比特7为11的偏移地址放在一起,比特8和比特7为10的偏移地址放在一起,比特8和比特7为01的偏移地址放在一起,比特8和比特7为00的偏
移地址放在一起,且比特8和比特7的地址线性增加,依次为00、01、10和11;在比特8和比特7相同的偏移地址中,剩余高位比特15至比特9的地址线性增加,依次为0000000、0000001和0000010,构成各存储器交织区内部的偏移地址。
99.再对交织处理后的地址按序进行四等分,经过交织后的地址如果落在第一个四等分块内,则被分配到存储器2b0,如果落在第二个四等分块内,则被分配到存储器2b1,如果落在第三个四等分块内,则被分配到存储器2b2,如果落在第四个四等分块内,则被分配到存储器2b3。具体地,结合下表一,比特8和比特7为00的地址被分配到存储器2b0,比特8和比特7为01的地址被分配到存储器2b1,比特8和比特7为10的地址被分配到存储器2b2,比特8和比特7为11的地址被分配到存储器2b3;剩余高位比特15至比特9的地址线性增加,依次顺序填充对应存储器的地址区域,占用存储器地址区域中不同的块。其中,比特15至比特9为0000000的地址占用各存储器的第一块地址区域,比特15至比特9为0000001的地址占用各存储器的第二块地址区域,比特15至比特9为0000010的地址占用各存储器的第三块地址区域,依此类推。
100.表一
[0101][0102]
经过交织处理后,地址0x0000开始的128字节数据被分配给交织区2b01中的第一块地址区域,地址0x0080开始的128字节数据被分配给交织区2b11中的第一块地址区域,地址0x0100开始的128字节数据被分配给交织区2b21中的第一块地址区域,地址0x0180开始的128字节数据被分配给交织区2b31中的第一块地址区域,地址0x0200开始的128字节数据又被分配回交织区2b01中的第二块地址区域,依此类推。也即经过交织处理后,地址以128字节为分块单位,被均匀交织到存储器交织区2b01、2b11、2b21和2b31中,系统地址空间中的线性递增地址被均匀地分配到4个存储器2b0、2b1、2b2和2b3中,直到交织区2a1的地址上
限,可见,经过细粒度的交织后,连续的线性读写任务被均分到4个存储控制器中,因此能够更有效地利用存储控制器的读写性能。
[0103]
上述方法中,如两个存储器设置了粒度为128字节的交织区,则偏移地址的比特6至比特0保持不变,取偏移地址的比特7用于区分存储器,即比特7相同的偏移地址放在一起,剩余高位地址线性增加,即比特7相同的偏移地址中,比特8及以上的高位地址线性增加,构成各存储器交织区内部的偏移地址。
[0104]
图6b是图2所示的交织区2a3与存储器地址空间的映射关系示例。系统地址空间内交织区2a3的地址线性增加,以4096字节为分块,进行交织处理。如图6b所示,取输入地址相对于交织区2a3的基地址的偏移地址,在偏移地址上完成4096字节的交织处理,使用伪随机算法将线性递增的地址打乱。再对交织处理后的地址按序进行四等分,经过交织后的地址如果落在第一个四等分块内,则被分配到存储器2b0,如果落在第二个四等分块内,则被分配到存储器2b1,如果落在第三个四等分块内,则被分配到存储器2b2,如果落在第四个四等分块内,则被分配到存储器2b3。具体地,在图6b中,存储器2b0的第1至3个4096字节分块数据来自交织之后的第一个四等分块的第1至3个4096字节数据,即来自系统地址空间的分别以地址0x000000、0x3f4000和0x187000开始的4096字节数据;存储器2b1的第1至3个4096字节分块数据来自交织之后的第二个四等分块的第1至3个4096字节数据,即来自系统地址空间的分别以地址0x28e000、0x364000和0x221000开始的4096字节数据,依此类推。原本线性增加的连续读写地址经过交织后,以4096字节为分块被随机地分到不同存储器的不同位置。
[0105]
图6c是图2所示的交叠区2a2与存储器地址空间的映射关系示例。系统地址空间内交叠区2a2的地址线性增加,如图6c所示,取输入地址相对于交叠区2a2的基地址的偏移地址,在偏移地址上进行交织处理。具体地,先经过以4096字节为分块的第一次交织处理,使用伪随机算法将线性递增的地址打乱,随后对被打乱的地址进行第二次交织处理,首先将每个4096字节分块按128字节进行分块,即每个4096字节分块进一步划分得到32个128字节分块,之后再按照图6a的规则将地址对应的数据按序均匀分配至4个存储器中。经过第一次交织处理后,地址0x000000开始的4096字节数据被映射到第一块地址空间,地址0x3f4000开始的4096字节数据被映射到第二块地址空间,地址0x187000开始的4096字节数据被映射到第三块地址空间
……
。经过第二次交织处理后,存储器2b0的第一块128字节空间的数据来自系统地址空间内的0x000000开始的128字节数据,存储器2b1的第一块128字节空间的数据来自系统地址空间内的0x000080开始的128字节数据,存储器2b2的第一块128字节空间的数据来自系统地址空间内的0x000100开始的128字节数据,存储器2b3的第一块128字节空间的数据来自系统地址空间内的0x000180开始的128字节数据,
……
,存储器2b0的第33块128字节空间的数据来自系统地址空间内的0x3f4000开始的128字节数据,存储器2b1的第33块128字节空间的数据来自系统地址空间内的0x3f4080开始的128字节数据,存储器2b2的第33块128字节空间的数据来自系统地址空间内的0x3f4100开始的128字节数据,存储器2b3的第33块128字节空间的数据来自系统地址空间内的0x3f4180开始的128字节数据。
[0106]
可见,经过图6a的交织处理后,原来的线性地址仍以线性的形式被均匀分配到4个存储器中,而经过图6c的两次交织处理后,原来的线性地址以不规律的形式被分到4个存储
器中的不同位置。对存储控制器而言,在大量的连续递增读写访问中,通过两次交织处理,接收到的读写请求被打乱到存储器内的各个区域,相比于图6a中均匀利用4个存储控制器进行局部线性连续读写,能进一步提升存储控制器的读写访问效率。
[0107]
应当了解,上述图6b和图6c中的映射关系仅为示例,用于方便表达并帮助读者理解,实际的地址映射关系可能并非如此,因此上述映射关系不应构成对本发明的限制。
[0108]
图6d是图2所示的线性区2a4与存储器地址空间的映射关系示例。系统地址空间内线性区2a4的地址线性增加,线性区2a4被依次映射到4个存储器2b0、2b1、2b2和2b3内的线性区,在各存储器的线性区内,地址也是连续地、线性地增加。具体地,线性区2a4的地址从小到大逐一映射到存储器2b0的线性区2b04,在到达存储器2b0的线性区2b04的顶端时,线性区2a4的下一地址被映射到存储器2b1的线性区2b14的起始位置,并继续从小到大逐一映射到存储器2b1的线性区2b14,在到达存储器2b1的线性区2b14的顶端时,线性区2a4的下一地址被映射到存储器2b2的线性区2b24的起始位置,并继续从小到大逐一映射到存储器2b2的线性区2b24,在到达存储器2b2的线性区2b24的顶端时,线性区2a4的下一地址被映射到存储器2b3的线性区2b34的起始位置,并继续从小到大逐一映射到存储器2b3的线性区2b34,从而依次填满各存储器的线性区。与以上交织区和交叠区不同的是,若处理单元仅使用线性区的某个区间,则只有与该区间对应的存储器需要保持活跃状态,其余存储器不需要保持活跃状态甚至可以断电。
[0109]
与图6a类似地,图3中系统地址空间交织区3a1中的线性递增地址被以第一交织粒度(如128字节)为分块,均匀地分配至存储器地址空间的交织区3b01和交织区3b11,此时交织区3a1内的读写任务不影响存储器3b2;与图6b类似地,系统地址空间交织区3a2中的线性递增地址被以第二交织粒度(如4096字节)为分块、使用伪随机算法进行打乱后,分配至存储器地址空间的交织区3b02、3b12和3b22;与图6d类似地,系统地址空间线性区3a3中的线性递增地址被以线性的方式依次映射至线性区3b03、3b13和3b23,依次填满各存储器的线性区。
[0110]
与图6a类似地,图4中系统地址空间交织区4a1中的线性递增地址被以第一交织粒度(如128字节)为分块,均匀地分配至存储器地址空间的交织区4b01、4b11、4b21和4b31;与图6c类似地,系统地址空间交叠区4a2中的线性递增地址经过两次交织处理,被随机分到存储器地址空间的交叠区4b02、4b12、4b22和4b32;与图6b类似地,系统地址空间交织区4a3中的线性递增地址被以第二交织粒度(如4096字节)为分块、使用伪随机算法进行打乱后,分配至交织区4b03和4b13;与图6d类似地,系统地址空间线性区4a4中的线性递增地址被以线性的方式依次映射至线性区4b04、4b14、4b24和4b34,依次填满各存储器的线性区。
[0111]
与图6a类似地,图5中系统地址空间交织区5a1中的线性递增地址被以第一交织粒度(如128字节)为分块,均匀地分配到存储器地址空间的交织区5b01和5b11;与图6c类似地,系统地址空间交叠区5a2中的线性递增地址经过两次交织处理,被随机分配到存储器地址空间的交叠区5b02、5b12、5b22和5b32;与图6b类似地,系统地址空间交织区5a3中的线性递增地址被以第二交织粒度(如4096字节)为分块、使用伪随机算法进行打乱后,分配至交织区5b03、5b13和5b23;与图6d类似地,系统地址空间线性区5a4中的线性递增地址被以线性的方式依次映射至线性区5b04、5b14、5b24和5b34,依次填满各存储器的线性区。
[0112]
下面以4096字节为例,说明本发明实施例的完成第二交织粒度的交织处理的具体
实现方式。
[0113]
系统交叠区和第二系统交织区的地址映射都需要进行第二交织粒度的交织处理,此处交织处理的对象为输入地址相对于系统交叠区/第二系统交织区的基地址的偏移地址。因交织粒度为4096字节,即2
t
字节,t=12,偏移地址的比特11至比特0应当保持不变,对偏移地址的比特12及以上的高位比特进行处理,使其被非线性地打乱。此外,考虑到灵活性,不将系统交叠区/第二系统交织区的容量设置为固定值,而是设定系统交叠区/第二系统交织区的最小容量,并用该最小容量对应的地址宽度减去12作为一对一映射函数的宽度,其余高位比特可以使用与映射结果互换位置等方式实现非线性打乱。
[0114]
具体地,包括如下步骤:
[0115]
(1)设定系统交叠区/第二系统交织区的最小容量m,最小容量m对应的地址宽度为w,取输入地址相对于系统交叠区/第二系统交织区的基地址的偏移地址的比特w-1至比特t(标记为addr_offset[w-1:t])作为非线性映射函数的输入,得到具有与输入的比特位数量相等的比特位的输出hash_out。
[0116]
例如,设定系统交叠区/第二系统交织区的最小容量为256mb,则该最小容量对应的地址宽度w=28,取偏移地址的比特27至比特12(标记为addr_offset[27:12],一共16个比特,其中,addr_offset[27]表示偏移地址的比特27,addr_offset[26]表示偏移地址的比特26,依此类推,addr_offset[12]表示偏移地址的比特12),作为下述非线性映射函数的输入,得到16个比特的输出hash_out。
[0117]
hash_out[0]=x[15]^x[13]^x[4]^x[0];
[0118]
hash_out[1]=x[15]^x[14]^x[13]^x[5]^x[4]^x[1]^x[0];
[0119]
hash_out[2]=x[14]^x[13]^x[6]^x[5]^x[4]^x[2]^x[1]^x[0];
[0120]
hash_out[3]=x[15]^x[14]^x[7]^x[6]^x[5]^x[3]^x[2]^x[1];
[0121]
hash_out[4]=x[13]^x[8]^x[7]^x[6]^x[3]^x[2]^x[0];
[0122]
hash_out[5]=x[14]^x[9]^x[8]^x[7]^x[4]^x[3]^x[1];
[0123]
hash_out[6]=x[15]^x[10]^x[9]^x[8]^x[5]^x[4]^x[2];
[0124]
hash_out[7]=x[15]^x[13]^x[11]^x[10]^x[9]^x[6]^x[5]^x[4]^x[3]^x[0];
[0125]
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];
[0126]
hash_out[9]=x[14]^x[12]^x[11]^x[8]^x[7]^x[6]^x[4]^x[2]^x[1]^x[0];
[0127]
hash_out[10]=x[15]^x[13]^x[12]^x[9]^x[8]^x[7]^x[5]^x[3]^x[2]^x[1];
[0128]
hash_out[11]=x[15]^x[14]^x[10]^x[9]^x[8]^x[6]^x[3]^x[2]^x[0];
[0129]
hash_out[12]=x[13]^x[11]^x[10]^x[9]^x[7]^x[3]^x[1]^x[0];
[0130]
hash_out[13]=x[14]^x[12]^x[11]^x[10]^x[8]^x[4]^x[2]^x[1];
[0131]
hash_out[14]=x[15]^x[13]^x[12]^x[11]^x[9]^x[5]^x[3]^x[2];
[0132]
hash_out[15]=x[15]^x[14]^x[12]^x[10]^x[6]^x[3]^x[0];
[0133]
其中,^表示异或逻辑,x[i]表示二进制数x的第i位,其中,i=0,1,

,15,将addr_offset[27:12]代入上述非线性映射函数,x[i]=addr_offset[i+12],hash_out[0]表示hash_out的比特0,hash_out[1]表示hash_out的比特1,依此类推,hash_out[15]表示hash_out的比特15。
[0134]
应当了解,以上函数仅为示例,不唯一,满足16比特输入,16比特输出,一对一非线性映射等条件即可。
[0135]
(2)针对不同的系统交叠区/第二系统交织区总容量,取偏移地址的不同比特位备用。
[0136]
具体地,在一些实施方式中,系统交叠区/第二系统交织区总容量对应的地址宽度为w,该总容量为最小容量的2n*3倍时,取偏移地址的比特w-1至比特w-2备用,记为addr_offset[w-1:w-2]。
[0137]
在一些实施方式中,系统交叠区/第二系统交织区总容量为最小容量的2n*9倍时,取偏移地址的比特w-1至比特w-4备用,记为addr_offset[w-1:w-4];其中,n≥0且n为整数。
[0138]
例如,系统交叠区/第二系统交织区总容量为768mb时,该总容量对应的地址宽度w=30,取偏移地址的比特29至比特28备用,记为addr_offset[29:28];
[0139]
系统交叠区/第二系统交织区总容量为1.5gb时,该总容量对应的地址宽度w=31,取偏移地址的比特30至比特29备用,记为addr_offset[30:29];
[0140]
系统交叠区/第二系统交织区总容量为3gb时,该总容量对应的地址宽度w=32,取偏移地址的比特31至比特30备用,记为addr_offset[31:30];
[0141]
系统交叠区/第二系统交织区总容量为6gb时,该总容量对应的地址宽度w=33,取偏移地址的比特32至比特31备用,记为addr_offset[32:31];
[0142]
系统交叠区/第二系统交织区总容量为12gb时,该总容量对应的地址宽度w=34,取偏移地址的比特33至比特32备用,记为addr_offset[33:32];
[0143]
系统交叠区/第二系统交织区总容量为2.25gb时,该总容量对应的地址宽度w=32,取偏移地址的比特31至比特28备用,记为addr_offset[31:28];
[0144]
系统交叠区/第二系统交织区总容量为4.5gb时,该总容量对应的地址宽度w=33,取偏移地址的比特32至比特29备用,记为addr_offset[32:29]。
[0145]
(3)基于hash_out和偏移地址的备用的比特位进行映射,得到具有与备用的比特位数量相等的比特位的输出hash_div;
[0146]
具体地,在一些实施方式中,系统交叠区/第二系统交织区总容量为最小容量的2n*3倍时,基于hash_out的部分比特数据做三等分,并根据hash_out的该部分比特数据落在三等分中的区间,以及备用的比特位的取值,进行映射,得到具有与备用的比特位数量相等的比特位的输出。
[0147]
在一些实施方式中,系统交叠区/第二系统交织区总容量为最小容量的2n*9倍时,基于hash_out的全部比特数据做九等分,并根据hash_out的全部比特数据落在该九等分中的区间,以及备用的比特位的取值,进行映射,得到具有与备用的比特位数量相等的比特位的输出。
[0148]
例如,总容量为768mb、1.5gb、3gb、6gb或者12gb时,映射结果可以如下表二所示,其中,hash_out[15:8]为hash_out的比特15至比特8,hash_div3_h2b=addr_offset[w-1:w-2]。
[0149]
表二
[0150][0151]
例如,总容量为2.25gb或者4.5gb时,映射结果可以如下表三所示,将hash_out的取值0-65536做九等分,得到区间0-8,其中,hash_div9_h4b=addr_offset[w-1:w-4]。
[0152]
表三
[0153][0154]
(4)针对不同的系统交叠区/第二系统交织区总容量,采用不同的方式计算得到输出地址。
[0155]
具体地,在一些实施方式中,在总容量为最小容量时,输出地址为{l’d0,hash_out,addr_offset[t-1:0]},表示l个二进制0、hash_out以及addr_offset[t-1:0]的拼接。
[0156]
在一些实施方式中,在总容量为最小容量的2m倍时,总容量对应的地址宽度为w,输出地址为{l’d0,hash_out,addr_offset[w-1:w],addr_offset[11:0]},表示l个二进制0、hash_out、addr_offset[w-1:w]以及addr_offset[11:0]的拼接,其中,m为正整数。也就是说,通过将其余高位比特addr_offset[w-1:w]与映射结果hash_out的位置互换,实现非线性打乱。
[0157]
在一些实施方式中,在总容量为最小容量的3倍或者9倍时,输出地址为{l’d0,hash_div,hash_out,addr_offset[t-1:0]},表示l个二进制0、hash_div、hash_out以及addr_offset[t-1:0]的拼接。
[0158]
在一些实施方式中,在总容量为最小容量的2m*3倍时,输出地址为{l’d0,hash_div,hash_out,addr_offset[w-3:w],addr_offset[t-1:0]},表示l个二进制0、hash_div、hash_out、addr_offset[w-3:w]以及addr_offset[t-1:0]的拼接。
[0159]
在一些实施方式中,在总容量为最小容量的2m*9倍时,输出地址为{l’d0,hash_div,hash_out,addr_offset[w-5:w],addr_offset[t-1:0]},表示l个二进制0、hash_div、hash_out、addr_offset[w-5:w]以及addr_offset[t-1:0]的拼接。
[0160]
上述情况中,l的取值可能不同,l应当取合适的值,使得输出地址的总位数符合要求即可。下表四给出了输出地址位为40时,不同容量下的输出地址addr_out[39:0]的示例。
[0161]
表四
[0162][0163][0164]
图7为本发明实施例的交织模块的结构示意图。如图7所示,交织模块包括交织预处理模块、第一交织处理模块、第二交织处理模块和线性处理模块。交织预处理模块的第一输入端用于连接系统寄存器,用于获取来自系统寄存器的交织控制信号,交织预处理模块的第二输入端用于经数据总线中的地址信号线连接处理单元,用于获取来自处理单元的数据读写指令中的地址信息。交织预处理模块的输出端连接第一交织处理模块的第一输入端。第一交织处理模块的第二输入端用于连接系统寄存器,用于获取来自系统寄存器的交织控制信号,第一交织处理模块的输出端连接第二交织处理模块的第一输入端。第二交织处理模块的第二输入端用于连接系统寄存器,用于获取来自系统寄存器的交织控制信号,
第二交织处理模块的输出端连接线性处理模块的第一输入端。线性处理模块的第二输入端用于连接系统寄存器,用于获取来自系统寄存器的交织控制信号,线性处理模块的输出端用于连接soc数据总线,用于将交织处理后的地址信息发送给存储控制器。此外,交织模块用于经数据总线中的数据信号线连接处理单元,用于获取来自处理单元的数据读写指令中的数据信息,并将数据信息经过soc数据总线发送给存储控制器。
[0165]
交织预处理模块对收到的交织控制信号进行解析,以确定当前地址属于系统地址空间中的哪个分区,进而判断当前地址的后续处理方式,并将判断结果随当前地址送往第一交织处理模块。
[0166]
具体地,交织预处理模块在当前地址落在第二系统交织区或者系统交叠区时,判断当前地址需要由第一交织处理模块进行处理,否则判断当前地址不需要由第一交织处理模块进行处理。交织预处理模块在当前地址落在第一系统交织区或者系统交叠区时,判断当前地址需要由第二交织处理模块进行处理,否则判断当前地址不需要由第二交织处理模块进行处理。
[0167]
交织控制信号包括:第一系统交织区的使能状态,与第一系统交织区构成映射关系的第一子存储交织区的数量,以及第一子存储交织区的容量;系统交叠区的使能状态,与系统交叠区构成映射关系的子存储交叠区的数量,以及子存储交叠区的容量;第二系统交织区的使能状态,与第二系统交织区构成映射关系的第二子存储交织区的数量,以及第二子存储交织区的容量;存储器的数量以及各存储器的容量。
[0168]
第一交织处理模块负责完成第二交织粒度(如4096字节)的交织处理。具体地,第一交织处理模块根据来自交织预处理模块的判断结果确定是否对当前地址进行交织处理,在交织预处理模块的判断结果为当前地址需要由第一交织处理模块进行处理时,第一交织处理模块根据交织控制信号,对当前地址进行第二交织粒度的交织处理,并将交织处理后的地址和交织预处理模块的判断结果发送给第二交织处理模块;在交织预处理模块的判断结果为当前地址不需要由第一交织处理模块进行处理时,第一交织处理模块将当前地址和交织预处理模块的判断结果发送给第二交织处理模块。
[0169]
对当前地址进行第二交织粒度的交织处理的具体方式可参考图6b和图6c中所述的实施方式,由于前面已有详细记载,在此不再赘述。
[0170]
第二交织处理模块负责完成第一交织粒度(如128字节)的交织处理。具体地,第二交织处理模块根据交织预处理模块的判断结果确定是否对来自第一交织处理模块的地址进行交织处理,在交织预处理模块的判断结果为当前地址需要由第二交织处理模块进行处理时,第二交织处理模块根据交织控制信号,对来自第一交织处理模块的地址进行第一交织粒度的交织处理,并将交织处理后的地址和交织预处理模块的判断结果发送给线性处理模块;在交织预处理模块的判断结果为当前地址不需要由第二交织处理模块进行处理时,第二交织处理模块将来自第一交织处理模块的地址和交织预处理模块的判断结果发送给线性处理模块。
[0171]
对当前地址进行第一交织粒度的交织处理的具体方式可参考图6a和图6c中所述的实施方式,由于前面已有详细记载,在此不再赘述。如果总线允许突发传输,且一次突发传输的地址跨越了128字节,则需要将一次长突发传输拆分成多个短突发传输,以适应128字节交织。
[0172]
线性处理模块根据交织预处理模块的判断结果确定对来自第二交织处理模块的地址的处理方式。具体地,在交织预处理模块的判断结果为当前地址需要由第一交织处理模块和第二交织处理模块至少其中之一进行处理时,采用第一线性处理方式,包括将来自第二交织处理模块的地址以按序均分的方式映射至各存储器地址空间的对应区域,具体可以参考图6a至图6c中所述的实施方式,由于前面已有详细记载,在此不再赘述;在交织预处理模块的判断结果为当前地址不需要由第一交织处理模块进行处理、也不需要由第二交织处理模块进行处理时,采用第二线性处理方式,包括将来自第二交织处理模块的地址顺序填满各存储器地址空间的子存储线性区,具体可以参考图6d中所述的实施方式,由于前面已有详细记载,在此不再赘述。
[0173]
如前所述,cpu通过配置总线将配置信息存放在系统寄存器中,系统寄存器向各交织模块输出交织控制信号,各交织模块接收来自系统寄存器的交织控制信号。具体地,配置信息可以由用户根据各处理单元的读写性能需求进行合理配置。
[0174]
图8给出了一种在soc中配置交织策略,为处理单元的各进程分配合适区域的读写空间的实施步骤。
[0175]
步骤一:在开始任务之前,用户需要评估未来一段时间内各处理单元的读写性能需求,并据此进行合理的交织配置,包括配置存储器中交织区/交叠区/线性区的开闭状态、数量及容量等。
[0176]
在一些实施方式中,处理单元的读写性能需求包括:高读写性能需求(标记为第一读写性能需求)、中等读写性能需求(标记为第二读写性能需求)和低读写性能需求(标记为第三读写性能需求)。在高读写性能需求下,各处理单元的各个进程都需要总线具备较高吞吐率,因此,将所有存储空间配置为存储交叠区(标记为第一配置类型),以尽可能地提供最高读写性能,例如,4个存储器的存储交叠区打开,其他区域关闭,存储交叠区的总容量为2048mb;在中等读写性能需求下,各处理单元内的部分进程需要较高的读写吞吐率,部分进程需要中等读写吞吐率,部分进程只需要较低的读写吞吐率,因此,在存储器中同时设置第一存储交织区、存储交叠区、第二存储交织区及存储线性区,且根据各类进程所需的内存占比,分配第一存储交织区、存储交叠区、第二存储交织区和存储线性区的数量及容量(标记为第二配置类型),例如,2个存储器的第一存储交织区(交织区1)打开,总容量为256mb,4个存储器的存储交叠区打开,总容量为1024mb,4个存储器的第二存储交织区(交织区2)打开,总容量为256mb,4个存储器的存储线性区打开;在低读写性能需求下,单个存储器的读写吞吐率就能满足大部分进程的性能需求,只有少量进程需要多个存储器交织才能满足其读写性能需求,因此,在存储器中同时设置第一存储交织区、第二存储交织区和存储线性区,且存储器的大部分容量用作存储线性区(标记为第三配置类型),例如,2个存储器的第一存储交织区(交织区1)打开,总容量为128mb,存储交叠区关闭,2个存储器的第二存储交织区(交织区2)打开,总容量为128mb,4个存储器的存储线性区打开。
[0177]
需要注意的是,上述三种性能需求只是本方案中支持的一部分,本方案支持的配置类型不限于这三种,还有诸多配置类型供用户选择,用户可以根据实际需求选取合适的配置类型。
[0178]
步骤二、用户根据各个进程的读写性能需求,给各个进程分配合适的读写空间。
[0179]
在第一配置类型下,所有进程都是高性能读写需求,给所有进程分配存储交叠区
内的空间;在第二配置类型下,给最高性能要求的进程分配存储交叠区内的空间,给较高性能要求的进程分配第一存储交织区内的空间,给较低性能要求的进程分配第二存储交织区内的空间,给最低性能要求的进程分配存储线性区内的空间;在第三配置类型下,给占进程大部分的低性能要求的进程分配存储线性区内的空间,给占进程少部分的较高性能需求的进程分配第一存储交织区或第二存储交织区内的空间。其中,第一存储交织区的交织粒度小于第二存储交织区的交织粒度。
[0180]
步骤三、各个进程获取到分配的内存空间后,各自开始工作,各进程所在的处理单元向其对应的交织模块发出数据读写请求(即数据读写指令),各交织模块接收到数据读写请求后,按照配置类型(即配置信息),对数据读写请求中的当前地址进行交织处理。
[0181]
步骤四、如果进程的读写性能需求发生变化,则判断当前各交织配置能否符合进程读写要求,若符合则返回步骤二,重新分配内存空间;若当前交织配置不能符合进程读写要求,则返回步骤一,重新评估各处理单元的读写性能需求,并据此进行合理的交织配置。由此,可解决soc提供的数据交织处理不够灵活,交织处理方式有限,且soc不能根据工作场景的需求来提供多种粒度、多种方式的信道交织技术的问题。
[0182]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本技术的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0183]
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0184]
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或多个(两个或两个以上)用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
[0185]
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
[0186]
应理解的是,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0187]
此外,在本技术各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
[0188]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1