CN113655966A - 供并行计算用的交叉存储器伪随机映射方法 - Google Patents
供并行计算用的交叉存储器伪随机映射方法 Download PDFInfo
- Publication number
- CN113655966A CN113655966A CN202110969401.8A CN202110969401A CN113655966A CN 113655966 A CN113655966 A CN 113655966A CN 202110969401 A CN202110969401 A CN 202110969401A CN 113655966 A CN113655966 A CN 113655966A
- Authority
- CN
- China
- Prior art keywords
- matrix
- address
- memory
- mapping
- columns
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 90
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000013507 mapping Methods 0.000 title claims abstract description 54
- 239000011159 matrix material Substances 0.000 claims abstract description 181
- 239000013598 vector Substances 0.000 claims description 48
- 230000008859 change Effects 0.000 claims description 31
- 230000008569 process Effects 0.000 claims description 11
- 238000003491 array Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 3
- 230000011218 segmentation Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 abstract description 5
- 238000013461 design Methods 0.000 abstract description 3
- 230000002441 reversible effect Effects 0.000 abstract description 2
- 238000010276 construction Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 244000118350 Andrographis paniculata Species 0.000 description 1
- 241000221095 Simmondsia Species 0.000 description 1
- 235000004433 Simmondsia californica Nutrition 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000013019 agitation Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 229920002803 thermoplastic polyurethane Polymers 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Human Computer Interaction (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种供并行计算用的交叉存储器伪随机映射方法,使用最大序列码(m‑sequence)生成的伪随机序列来构成地址映射矩阵、可以提高并行存取和并性计算性能,减缓动态存储器的存储延迟。本发明采用了地址映射的一种H矩阵调整方法,克服了之前方法的弱点,保证了正向映射和反向映射可以使用同样的H矩阵。本发明生成的地址映射矩阵与异或函数相结合来构成地址映射电路,设计容易、结构简单。本发明对于不同的地址宽度,使用了一种地址分割映射的方法来优化映射矩阵的伪随机性,用以提高并行存储性能。
Description
技术领域
本发明涉及存储器领域,尤其是涉及芯片设计和计算机体系结构领域,具体是一种供并行计算用的交叉存储器伪随机映射方法。
背景技术
机器学习、科学计算和图形处理需要巨大的计算能力,一般由大型芯片(如GPU、TPU、APU等)提供这样的算力,来实现高度复杂的机器学习任务和图形处理任务。用机器学习来做识别需要巨大的深度学习(Deep Learning)网络和海量的图像数据,训练过程非常耗时;一个三维应用或游戏场景中,若采用递归光追踪(Recursive Ray-Tracing)渲染,且场景复杂,则需要做海量运算。这就要求极高的计算性能和存储带宽。另一方面,机器学习和大数据处理算法中往往需要在内存和计算芯片之间产生大量的数据交换,因此需要很高的存储带宽。交叉存储是提高并行存储带宽的有效方法,在业界得到了广泛应用。
一个交叉存储系统采用了多个独立的存储块,并将数据均匀分布在各个块中,可以同时从多个块中读写数据。如此,可以数倍提升存储带宽。存储模块阵列构成的交叉存储系统(interleaved memory)就成为了大型芯片重要的组成部件。交叉映射旨在于将连续的存储地址映射到不同的存储器组,以提高存储带宽。对于n组存储模块,如果地址a映射到存储模块i,地址a+1一般都会映射到另一个不同的存储模块。这样,在最好的情况下一次可以读写n个数值,即可实现很好的存储带宽。本发明的技术就可以达到这样的目的。
前期的研究产生了许多种交叉存储方法,常用的有质数交叉方法和基于XOR运算的方法。交叉存储系统,特别是质数交叉存储例如(P.Budnick,D.Kuck“The organizationand use ofparallel memories”IEEE Transaction On Computers,Dec.1971;D.J.Kuck,“ILLIAC IV Software and Application Programming,”IEEE Trans.Computers,vol.17,no.8,pp.758-770,Aug.1968;G.S.Sohi,“High-Bandwidth Interleaved Memories forVectorProcessors—A Simulation Study,”IEEE Trans.Computers,vol.42,no.1,pp.34-44,Jan.1993;D.J.Kuck and R.A.Stokes,“The Burroughs Scientific Processor(BSP),”IEEE Trans.Computers,vol.31,no.5,pp.363-376,May1982;D.H.Lawrie andC.R.Vora,“The Prime Memory System for ArrayAccess,”IEEE Trans.Computers,vol.31,no.5,pp.435-442,May1982;A.Seznec and J.Lenfant,“Odd Memory Systems MayBe QuiteInteresting,”Proc.20th Ann.Int’l Symp.Computer Architecture,pp.341-350,May 1993),在很早期的并行计算平台就得到了应用。质数交叉存储通常使用一个质数P来计算存储块和块内地址,存储块号码b=A%P(b是A除以P的余数),块内地址a=A/P(a是A除以P的整数商)。这里,A是给定的全局存储地址。
基于XOR运算的方法,例如(J.M.Frailong,W.Jalby,J.Lenfant“XOR-schemes:aflexible organization in parallel memories”Proceedingsof 1985InternationalConference on Parallel Processing,Aug.1985;A.González,M.Valero,N.Topham andJ.M.Parcerisa,Eliminating Cache Conflict Misses Through XOR-Based PlacementFunctions,Proceedings of the 11th International Conference on Supercomputing,New York,NY,USA,1997,pp76-83;),也在早期就提出并得到了应用。此种方法将给定地址A的二进制码与一组(M个)特征向量做二进制XOR点积运算,生成存储块号码,用来替换部分地址,块内地址由剩余地址位构成,(J.M.Frailong,W.Jalby,J.Lenfant“XOR-schemes:aflexible organization in parallel memories”Proceedingsof 1985InternationalConference on Parallel Processing,Aug.1985;B.R.Rau,Pseudo RandomlyInterleaved Memory,International Symp.Computer Architecture,1991,(ISCA91)pp74-83;A.González,M.Valero,N.Topham and J.M.Parcerisa,Eliminating CacheConflict Misses Through XOR-Based Placement Functions,Proceedings of the 11thInternational Conference on Supercomputing,New York,NY,USA,1997,pp76-83;Sung-JinCho,_,Un-Sook Choi,Yoon-Hee Hwang,Han-Doo Kim,Design of new XOR-based hashfunctions for cache memories,Computers and Mathematics with Applications 55,2008,pp2005–2011;Hans Vandierendonck,Koen De Bosschere,XOR-based hashfunctions,IEEE Trans.Comput.54(2005)800–812;Liu Zhiyong and Li Xiaobo,“XORstorage schemes forfrequently used data patterns,”J.Parallel andDistributedComputing,vol.25,no.2,pp.162-173,1995;刘志勇,李恩有,乔香珍,高速缓冲存储器系统中的地址映射变换技术与装置,申请(专利)号:CN97120245.1,1997,公开/公告号:CN1217505A,中科院计算所)。
特别需要指出的是,各种XOR映射方法中,(B.R.Rau,Pseudo RandomlyInterleaved Memory,International Symp.Computer Architecture,1991,(ISCA91)pp74-83)采用的是伪随机映射,而其他的方法多是针对某些特定模式的,如(Liu Zhiyongand Li Xiaobo,“XOR storage schemes forfrequently used data patterns,”J.Parallel and DistributedComputing,vol.25,no.2,pp.162-173,1995;刘志勇,李恩有,乔香珍,高速缓冲存储器系统中的地址映射变换技术与装置,申请(专利)号:CN97120245.1,1997,公开/公告号:CN1217505A,中科院计算所;崔泽汉,陈荔城,陈明宇,高速缓冲存储器Cache地址的映射处理方法和装置,申请(专利)号:CN201410080762.7,公开/公告号:CN104899159B,2019,华为技术有限公司;中国科学院计算技术研究所;李恩有,刘志勇,一种高效并行存储方案——LR-XOR,《中国科学:技术科学》1998;Z.Zhang,Z.Zhu,andX.Zhang,“A Permutation-Based PageInterleaving Scheme to Reduce Row-BufferConflicts and ExploitDataLocality,”Proc.33rd Conf.Microprogramming andMicroarchitecture,pp.32-41,Dec.2000)。(G.-J.van den Braak,et al.:“ConfigurableXOR hash functions for bankedscratchpad memories in GPUs,”IEEETrans.Comput.65(2016)2045(DOI:10.1109/TC.2015.2479595);H.Salwan:“Eliminatingconflicts in a multilevel cache using XOR-basedplacement techniques,”HighPerformance Computing and Communicationsand 2013IEEE International Conferenceon Embedded and UbiquitousComputing(2013)198(DOI:10.1109/HPCC.and.EUC.2013.37);Feng Han,Li Li,Kun Wang,Fan Feng,HongbingPan,Jin Sha,and Jun Lin,An access pattern basedadaptive mapping functionfor GPGPUscratchpadmemory,IEICE Electronics Express,Vol.14,No.12,1–12)是一些采用自适应动态调整配置的XOR映射方法。(B.R.Rau,Pseudo Randomly Interleaved Memory,International Symp.Computer Architecture,1991,(ISCA91)pp74-83)的方法性能好,实现简单,被业界广泛采用。
上述方案中,存在着实现电路复杂、正反变换需要独立的变换矩阵、对于不同地址长度不能灵活扩展等缺点。
发明内容
本发明针对背景技术中存在的问题,提出了一种交叉存储块映射方法,用以提高交叉存储的有效带宽。
技术方案:
本发明公开了一种供并行计算用的交叉存储器伪随机映射方法,所述交叉存储器含有多个存储块,每个存储块的宽度是W,深度是D=2K,即存储块内地址为K位;所述存储块的数量为B=2M,伪随机映射方法包括以下步骤:
S1、判断B-1和M+K的关系,若(B-1)>M+K,则对B进行拆分,通过将M拆分为n份,第i份记做Mi,获得Bi=2Mi,保证(Bi-1)≤M+K;若(B-1)≤M+K,则n=1;
S2、根据对应交叉存储器的储存块及存储地址确定最大序列的本原多项式F(x);
S3、对于每份Mi,根据最大序列的本原多项式构建Mi行Bi-1列的H矩阵;
S4、构建Mi行Bi-1列的H’变化矩阵,满足H’最低的MixMi方阵为满秩;
S5、构建Mi行M-∑Mi-1+K列的H”变化矩阵;
S6、结合H”变化矩阵的异或运算实现地址的映射。
优选的,S2中根据交叉存储器的储存块个数Mi作为阶数在常用本原多项式表中选择最大序列的本原多项式F(x)。
作为第一种H矩阵的构建方法:本原多项式F(x)使用Mi级的线性反馈移位寄存器,在每一次移位过程中Mi个寄存器的状态组成Mi行Bi-1列的H矩阵。
作为另一种H矩阵的构建方法为:本原多项式F(x)做1/F(x)的多项式长除法,得到的商的多项式系数组成一维布尔向量;对该布尔向量移位Mi-1次得到Mi-1维布尔向量,由此组成Mi行Bi-1列的H矩阵。
具体的,S4中H’变化矩阵的构建方法为:
S4-1、从H矩阵中挑选出Mi列并剔除,其中每一列都只包含一个1;
S4-2、将这Mi列排成一个单位方阵,并放到Bi-1-Mi列最低的位置;
S4-3、其余Bi-1-Mi列保持不变,获得Bi-1列的H’变化矩阵。
针对第一种构建方法获得的H矩阵,S4中H’变化矩阵的构建方法为:通过设置线性反馈移位寄存器的不同初始状态,使的产生的前Mi个状态都只包含一个1,获得的Mi行Bi-1列的H矩阵作为H’矩阵。
针对另一种构建方法获得的H矩阵,S4中H’变化矩阵的构建方法为:通过移位使得所述商的多项式系数的低Mi位都只包含一个1,并调整Mi行的顺序,使得最低Mi行Mi列是单位矩阵,从而获得的Mi行Bi-1列的H矩阵作为H’矩阵。
具体的,S5中使用地址映射分段的方法实现H”变化矩阵,具体步骤为:
S5-1、根据交叉存储器的储存块个数Mi和存储块内地址位数K,得到交叉存储器的全地址M+K位;
S5-2、重复使用S4中的H’变化矩阵的列组成Mi行M-∑Mi-1+K列的H”变化矩阵;
S5-3、重复步骤S5-1至S5-2获得n个H”变化矩阵。
作为第一种H”变化矩阵的构建方法,S5-2中,有选择的重复使用S4中的H’变化矩阵构建H”变化矩阵:计算除法(M-∑Mi-1+K)/(Bi-1),令a等于除法的商,b等于除法的余数;则重复使用S4中的H’矩阵a次放到H”矩阵的低位,取H’矩阵的任意b列放到H”矩阵的高位。
作为第二种H”变化矩阵的构建方法,S5-2中,任选H’变化矩阵的多个列补至H’变化矩阵构成Mi行M-∑Mi-1+K列的H”变化矩阵。
S6中M+K位输入地址A[M+K-1:0]通过与H”矩阵的运算实现地址的映射,如果n=1,则映射过程为:
a)直接使用输入地址A[M+K-1:0]与H”矩阵的每一行做按位与,然后将所有位异或,得出长度为M的向量T;
b)然后用输入地址A的高位与向量T重新组合形成向量A’={A[M+K-1:M],T[M-1:0]};
c)T[M-1:0]即输入地址A映射的交叉存储器的储存块号码,A[M+K-1:M]即地址A映射的存储块内地址。
S6中M+K位输入地址A[M+K-1:0]通过与H”矩阵的运算实现地址的映射,如果n>1,则映射过程为:
a)直接使用输入地址A[M+K-1:0]与H1”矩阵的每一行做按位与,然后将所有位异或,得出长度为M1的向量T1;H1”矩阵为M1对应的H”变化矩阵;
b)然后用输入地址A[M-M1+K-1:M1]与H2”矩阵的每一行做按位与,然后将所有位异或,得出长度为M2的向量T2;H2”矩阵为M2对应的H”变化矩阵;
c)依次得到长度为Mn的向量Tn,并把所有向量组成新的长度为M’的向量T={Tn,···,T2,T1};
d)然后用输入地址A的高位与向量T重新组合形成向量A’={A[M+K-1:M],T[M-1:0]};
e)T[M-1:0]即输入地址A映射的交叉存储器的储存块号码,A[M+K-1:M]即地址A映射的存储块内地址。
本发明的有益效果
使用最大序列码(m-sequence)生成的伪随机序列来构成地址映射矩阵、可以提高并行存取和并性计算性能,减缓动态存储器的存储延迟。
本发明采用了地址映射的一种H矩阵调整方法,克服了之前方法的弱点,保证了正向映射和反向映射可以使用同样的H矩阵。本发明生成的地址映射矩阵与异或函数相结合来构成地址映射电路,设计容易、结构简单。
对于不同的地址宽度,使用了一种地址分割映射的方法来优化映射矩阵的伪随机性,用以提高并行存储性能。
附图说明
图1为实施例1中F(x)对应的线性反馈移位寄存器电路图
图2为实施例2中F1(x)对应的线性反馈移位寄存器电路图
图3为实施例3中F2(x)对应的线性反馈移位寄存器电路图
具体实施方式
下面结合实施例对本发明作进一步说明,但本发明的保护范围不限于此:
本发明提出了一种供并行计算用的交叉存储器伪随机映射方法,本发明中基本单元是存储块,每个存储块的宽度是W,深度是D=2K,可以存储D×W比特数据。交叉存储含有B=2M个存储块。
本发明与之前其他方法不同点在于:
1)基础H矩阵的生成方法;
2)H矩阵的重构排列(达到了使用同一个矩阵实现正反双向映射);
3)根据地址长度做映射分割并调整H矩阵(以保证很好的随机性)的方法。
1)基础H矩阵的生成方法
一个H矩阵由M个布尔向量Vi(即长度为L的二进制数)构成,i=0,1,…,L-1。每个向量用来生成存储块号码中的一位。这里,L是地址码的宽度,Vi=Vi,L-1V i,L-2V i,L-3…Vi, 1Vi,0。
用Q[0]、Q[1]、…、Q[B-1]来标注B个片上存储模块,这些模块构成1维阵列Q[0:B-1]。本发明仅适用于模块数目B为2的某次幂(即B=2M)的情景。数据的存取以W比特为单位,存储块内地址为K位。整个存储系统的容量为BxDxW比特,以W比特为单位则需要存储地址的宽度K+M,其中M比特用于存储块号码,K比特用于块内地址。
例如,给定32位的存储地址和32个存储模块,下面的H矩阵包含了5行32列,可以用来生成模块号Ni及模块内地址Ai。
给定存储地址X=x31x30x29…x1x0,
Ni[0]=x31^H[0,31]+x30^H[0,30]+x29^H[0,29]+…+x1^H[0,1]+x0^H[0,0],
Ni[1]=x31^H[1,31]+x30^H[1,30]+x29^H[1,29]+…+x1^H[1,1]+x0^H[1,0],
Ni[2]=x31^H[2,31]+x30^H[2,30]+x29^H[2,29]+…+x1^H[2,1]+x0^H[2,0],
Ni[3]=x31^H[3,31]+x30^H[3,30]+x29^H[3,29]+…+x1^H[3,1]+x0^H[3,0],
Ni[4]=x31^H[4,31]+x30^H[4,30]+x29^H[4,29]+…+x1^H[4,1]+x0^H[4,0].
Ai=x31x30x29…x6x5。
只要H矩阵的最低5x5方阵H[0…4;0…4]是满秩矩阵,则X到{Ai,Ni}的映射是唯一的,也即不同的地址X和Y会映射到不同的存储字中去。
本发明公开了两种构建H矩阵的方法:
方法1:使用伽罗华域上的n次本原多项式F(x)做1/F(x)的多项式长除法,可以得到一组(2n-1)个多项余式pi(x)=ai,n-1xn-1+ai,n-2xn-2+…+ai,1x+ai,0。每一个多项余式的系数代表了一个布尔向量。对该布尔向量移位Mi-1次得到Mi-1维布尔向量,由此组成Mi行Bi-1列的H矩阵。不可约多项式系数生成的向量组具有为随机性,由此生成的存储模块的地址分布也具有为随机性。最大序列m-sequence的多项式也是不可约多项式,并可以生成序列长度为2m-1的伪随机序列。这样的序列产生的地址到存储模块号的映射也具有随机的均匀分布。
方法2:最大序列m-sequence代表的伪随机序列可以使用相应的生成多项式构成的线性反馈移位寄存器来产生。下面的伪代码就是生成最大序列的方法。
本原多项式F(x)使用Mi级的线性反馈移位寄存器,在每一次移位过程中Mi个寄存器的状态组成Mi行Bi-1列的H矩阵。
优选的实施例中,方法1和方法2中所涉及的本原多项式F(x)的获取方法为:根据交叉存储器的储存块个数Mi作为阶数在常用本原多项式表中选择最大序列的本原多项式F(x),本原多项式F(x)的获取方法可参考文献:《通信原理(第七版)》2013.9国防工业出版社。
2)调整H矩阵的方法
基础H矩阵不能保证最低的MxM方阵为满秩的。本步骤旨在将基础H矩阵调整为满秩矩阵,则地址映射的逆变换亦可使用同样的矩阵来完成,可以大大简化硬件复杂度和功耗。
调整步骤:
S4-1、从H矩阵中挑选出Mi列并剔除,其中每一列都只包含一个1;
S4-2、将这Mi列排成一个单位方阵,并放到Bi-1-Mi列最低的位置;
S4-3、其余Bi-1-Mi列保持不变,获得Bi-1列的H’变化矩阵。
具体在本原多项式F(x)做1/F(x)的多项式长除法产生基础H矩阵的方案中,H’变化矩阵的构建方法为:通过移位使得所述商的多项式系数的低Mi位都只包含一个1,并调整Mi行的顺序,使得最低Mi行Mi列是单位矩阵,从而获得的Mi行Bi-1列的H矩阵作为H’矩阵。
具体在线性反馈移位寄存器来产生基础H矩阵的方案中,H’变化矩阵的构建方法为:通过设置线性反馈移位寄存器的不同初始状态,使的产生的前Mi个状态都只包含一个1,获得的Mi行Bi-1列的H矩阵作为H’矩阵。
3)根据地址长度做映射分割并调整H矩阵的方法
首先判断B-1和M+K的关系,若(B-1)>M+K,则对B进行拆分,通过将M拆分为n份,第i份记做Mi,获得Bi=2Mi,保证(Bi-1)≤M+K;若(B-1)≤M+K,则n=1。
然后进行:
S5-1、根据交叉存储器的储存块个数Mi和存储块内地址位数K,得到交叉存储器的全地址M+K位;
S5-2、重复使用S4中的H’变化矩阵组成Mi行M-∑Mi-1+K列的H”变化矩阵;
S5-3、重复步骤S5-1至S5-2获得n个H”变化矩阵。
最后,M+K位输入地址A[M+K-1:0]通过与H”矩阵的运算实现地址的映射。
其中,本申请公开了S5-2的两种实现方法:
方法1:有选择的重复使用H’变化矩阵构建H”变化矩阵:计算除法(M-∑Mi-1+K)/(Bi-1),令a等于除法的商,b等于除法的余数;则重复使用S4中的H’矩阵a次放到H”矩阵的低位,取H’矩阵的任意b列放到H”矩阵的高位。
方法2:任选H’变化矩阵的多个列补至H’变化矩阵构成Mi行M-∑Mi-1+K列的H”变化矩阵。
在结合H”变化矩阵的异或运算实现地址的映射时,根据n和1的关系存在两种情况:
情况1:n=1,则映射过程为:
a)直接使用输入地址A[M+K-1:0]与H”矩阵的每一行做按位与,然后将所有位异或,得出长度为M的向量T;
b)然后用输入地址A的高位与向量T重新组合形成向量A’={A[M+K-1:M],T[M-1:0]};
c)T[M-1:0]即输入地址A映射的交叉存储器的储存块号码,A[M+K-1:M]即地址A映射的存储块内地址。
情况2:n>1,则映射过程为:
a)直接使用输入地址A[M+K-1:0]与H1”矩阵的每一行做按位与,然后将所有位异或,得出长度为M1的向量T1;H1”矩阵为M1对应的H”变化矩阵;
b)然后用输入地址A[M-M1+K-1:M1]与H2”矩阵的每一行做按位与,然后将所有位异或,得出长度为M2的向量T2;H2”矩阵为M2对应的H”变化矩阵;
c)依次得到长度为Mn的向量Tn,并把所有向量组成新的长度为M’的向量T={Tn,···,T2,T1};
d)然后用输入地址A的高位与向量T重新组合形成向量A’={A[M+K-1:M],T[M-1:0]};
e)T[M-1:0]即输入地址A映射的交叉存储器的储存块号码,A[M+K-1:M]即地址A映射的存储块内地址。
下面的伪代码描述了地址映射过程。
上面的函数计算出Aout和Mout。其中,Mout是模块号,Aout是模块内地址。
地址反映射采用同一个H矩阵,下面的伪代码描述了反映射过程。
下面以n=1和n>1两个实施例,对本申请的方案进行详细描述。
实施例1:
假设交叉存储器包含8个存储块,即M=3,B=2M=8;每个存储块的块内地址是K=29位。所以整个交叉存储器的全地址是M+K=32位。
S1:由于B-1≤M+K,所以不用对M进行分割;
S2:用M=3作为阶数查常用本原多项式表得到本原多项式F(x)=x3+x+1;
S3:该F(x)对应的线性反馈移位寄存器电路如图1。
设三个移位寄存器的初始状态{a2,a1,a0}={0,0,1},通过移位6次,加上初始状态,可以得到不重复的7组移位寄存器状态,分别是{0,0,1},{1,0,0},{1,1,0},{1,1,1},{0,1,1},{1,0,1},{0,1,0};由此,每个状态作为一列可组成一个3行7列的H矩阵,即:
列6 | 列5 | 列4 | 列3 | 列2 | 列1 | 列0 |
0 | 1 | 0 | 1 | 1 | 1 | 0 |
1 | 0 | 1 | 1 | 1 | 0 | 0 |
0 | 1 | 1 | 1 | 0 | 0 | 1 |
S4:把H矩阵的列6放到列0后面,然后把第2行和第3行交换,使得最低的3x3矩阵是单位阵,调整后的H’矩阵是:
1 | 0 | 1 | 1 | 1 | 0 | 0 |
1 | 1 | 1 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 1 | 0 | 0 | 1 |
S5:重复H’矩阵来构造H”矩阵。32/7=4......4,所以需要把H’矩阵循环4次,并任意挑选H’矩阵的4列来组成H”矩阵,最终的H”矩阵是:
S6:假设要映射的地址是A=0x40000008,用地址A与矩阵H”的三行分别做按位与,然后按位异或操作,得出向量T,即:
T[0]=(A31&H”[0][31])^(A30&H”[0][30])^(A29&H”[0][29])^……^(A1&H”[0][1])^(A0&H”[0][0])=1;
T[1]=(A31&H”[1][31])^(A30&H”[1][30])^(A29&H”[1][29])^……^(A1&H”[1][1])^(A0&H”[1][0])=0;
T[2]=(A31&H”[2][31])^(A30&H”[2][30])^(A29&H”[2][29])^……^(A1&H”[2][1])^(A0&H”[2][0])=0;
然后得到映射后的全地址是A’={A[M+K-1:M],T[M-1:0]}=0x40000009;即映射到号码是1的储存块的内部地址0x08000001。
实施例2:
假设交叉存储器包含128个存储块,即M=7,B=2M=128;每个存储块的块内地址是K=25位。所以整个交叉存储器的全地址是M+K=32位。
S1:由于B-1>M+K,所以需要把M进行分割,这里把M分割成两份,令M1=4,M2=3,则B1=16,B2=8;
S2:用M1和M2作为阶数查常用本原多项式表得到本原多项式F1(x)=x4+x+1和F2(x)=x3+x+1。
S3:根据F1(x)和F2(x)对应的线性反馈移位寄存器电路(分别如图2和图3所示),分别得到H1和H2矩阵。
H1矩阵:
列14 | 列13 | 列12 | 列11 | 列10 | 列9 | 列8 | 列7 | 列6 | 列5 | 列4 | 列3 | 列2 | 列1 | 列0 |
0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 |
0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 |
H2矩阵:
列6 | 列5 | 列4 | 列3 | 列2 | 列1 | 列0 |
0 | 1 | 0 | 1 | 1 | 1 | 0 |
1 | 0 | 1 | 1 | 1 | 0 | 0 |
0 | 1 | 1 | 1 | 0 | 0 | 1 |
S4:把H1矩阵的列14放到列0前面作为新的列1,把列13放到新的列1前面作为新的列2,使得最低的4x4矩阵是单位阵,调整后的H’1矩阵是:
列14 | 列13 | 列12 | 列11 | 列10 | 列9 | 列8 | 列7 | 列6 | 列5 | 列4 | 列3 | 列2 | 列1 | 列0 |
1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 |
1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
把H2矩阵的列6放到列0后面,然后把第2行和第3行交换,使得最低的3x3矩阵是单位阵,调整后的H’2矩阵是:
列6 | 列5 | 列4 | 列3 | 列2 | 列1 | 列0 |
1 | 0 | 1 | 1 | 1 | 0 | 0 |
1 | 1 | 1 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 1 | 0 | 0 | 1 |
S5:重复H’1矩阵来构造H”1矩阵。32/15=2......2,所以需要把H’1矩阵循环2次,并任意挑选H’1矩阵的2列来组成H”1矩阵,最终的H”1矩阵是:
重复H’2矩阵来构造H”2矩阵。H”2矩阵的列数等于M-M1+K=7-4+25=28;而28/7=4,所以需要把H’2矩阵循环4次来组成H”2矩阵,最终的H”2矩阵是:
S6:假设要映射的地址是A=0x40000008,用地址A与矩阵H”1的四行分别做按位与,然后按位异或操作,得出向量T1,即:
T1[0]=(A31&H”1[0][31])^(A30&H”1[0][30])^(A29&H”1[0][29])^……^(A1&H”1[0][1])^(A0&H”1[0][0])=1;
T1[1]=(A31&H”1[1][31])^(A30&H”1[1][30])^(A29&H”1[1][29])^……^(A1&H”1[1][1])^(A0&H”1[1][0])=0;
T1[2]=(A31&H”1[2][31])^(A30&H”1[2][30])^(A29&H”1[2][29])^……^(A1&H”1[2][1])^(A0&H”1[2][0])=0;
T1[3]=(A31&H”1[3][31])^(A30&H”1[3][30])^(A29&H”1[3][29])^……^(A1&H”1[3][1])^(A0&H”1[3][0])=1;
用地址A[31:4]与矩阵H”2的三行分别做按位与,然后按位异或操作,得出向量T2,即:
T2[0]=(A31&H”2[0][27])^(A30&H”2[0][26])^(A29&H”2[0][25])^……^(A5&H”2[0][1])^(A4&H”2[0][0])=1;
T2[1]=(A31&H”2[1][27])^(A30&H”2[1][26])^(A29&H”2[1][25])^……^(A5&H”2[1][1])^(A4&H”2[1][0])=1;
T2[2]=(A31&H”2[2][27])^(A30&H”2[2][26])^(A29&H”2[2][25])^……^(A5&H”2[2][1])^(A4&H”2[2][0])=0;
然后把T1和T2组成向量T={T2,T1}={0111001};
最后得到映射后的全地址是A’={A[M+K-1:M],T[M-1:0]}=0x40000039;即映射到号码是0x39的储存块的内部地址0x00800000。
本文中所描述的具体实施例仅仅是对本发明精神做举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
Claims (12)
1.一种供并行计算用的交叉存储器伪随机映射方法,所述交叉存储器含有多个存储块,每个存储块的宽度是W,深度是D=2K,即存储块内地址为K位;其特征在于所述存储块的数量为B=2M,伪随机映射方法包括以下步骤:
S1、判断B-1和M+K的关系,若(B-1)>M+K,则对B进行拆分,通过将M拆分为n份,第i份记做Mi,获得Bi=2Mi,保证(Bi-1)≤M+K;若(B-1)≤M+K,则n=1;
S2、根据对应交叉存储器的储存块及存储地址确定最大序列的本原多项式F(x);
S3、对于每份Mi,根据最大序列的本原多项式构建Mi行Bi-1列的H矩阵;
S4、构建Mi行Bi-1列的H’变化矩阵,满足H’最低的MixMi方阵为满秩;
S5、构建Mi行M-∑Mi-1+K列的H”变化矩阵;
S6、结合H”变化矩阵的异或运算实现地址的映射。
2.根据权利要求1所述的方法,其特征在于S2中根据交叉存储器的储存块个数Mi作为阶数在常用本原多项式表中选择最大序列的本原多项式F(x)。
3.根据权利要求1所述的方法,其特征在于S3中,H矩阵的构建方法为:本原多项式F(x)使用Mi级的线性反馈移位寄存器,在每一次移位过程中Mi个寄存器的状态组成Mi行Bi-1列的H矩阵。
4.根据权利要求1所述的方法,其特征在于S3中,H矩阵的构建方法为:本原多项式F(x)做1/F(x)的多项式长除法,得到的商的多项式系数组成一维布尔向量;对该布尔向量移位Mi-1次得到Mi-1维布尔向量,由此组成Mi行Bi-1列的H矩阵。
5.根据权利要求1所述的方法,其特征在于S4中H’变化矩阵的构建方法为:
S4-1、从H矩阵中挑选出Mi列并剔除,其中每一列都只包含一个1;
S4-2、将这Mi列排成一个单位方阵,并放到Bi-1-Mi列最低的位置;
S4-3、其余Bi-1-Mi列保持不变,获得Bi-1列的H’变化矩阵。
6.根据权利要求3所述的方法,其特征在于S4中H’变化矩阵的构建方法为:通过设置线性反馈移位寄存器的不同初始状态,使的产生的前Mi个状态都只包含一个1,获得的Mi行Bi-1列的H矩阵作为H’矩阵。
7.根据权利要求4所述的方法,其特征在于S4中H’变化矩阵的构建方法为:通过移位使得所述商的多项式系数的低Mi位都只包含一个1,并调整Mi行的顺序,使得最低Mi行Mi列是单位矩阵,从而获得的Mi行Bi-1列的H矩阵作为H’矩阵。
8.根据权利要求1所述的方法,其特征在于S5中使用地址映射分段的方法实现H”变化矩阵,具体步骤为:
S5-1、根据交叉存储器的储存块个数Mi和存储块内地址位数K,得到交叉存储器的全地址M+K位;
S5-2、重复使用S4中的H’变化矩阵的列组成Mi行M-∑Mi-1+K列的H”变化矩阵;
S5-3、重复步骤S5-1至S5-2获得n个H”变化矩阵。
9.根据权利要求8所述的方法,其特征在于S5-2中,有选择的重复使用S4中的H’变化矩阵构建H”变化矩阵:计算除法(M-∑Mi-1+K)/(Bi-1),令a等于除法的商,b等于除法的余数;则重复使用S4中的H’矩阵a次放到H”矩阵的低位,取H’矩阵的任意b列放到H”矩阵的高位。
10.根据权利要求8所述的方法,其特征在于S5-2中,任选H’变化矩阵的多个列补至H’变化矩阵构成Mi行M-∑Mi-1+K列的H”变化矩阵。
11.根据权利要求1所述的方法,其特征在于S6中M+K位输入地址A[M+K-1:0]通过与H”矩阵的运算实现地址的映射,如果n=1,则映射过程为:
a)直接使用输入地址A[M+K-1:0]与H”矩阵的每一行做按位与,然后将所有位异或,得出长度为M的向量T;
b)然后用输入地址A的高位与向量T重新组合形成向量A’={A[M+K-1:M],T[M-1:0]};
c)T[M-1:0]即输入地址A映射的交叉存储器的储存块号码,A[M+K-1:M]即地址A映射的存储块内地址。
12.根据权利要求1所述的方法,其特征在于S6中M+K位输入地址A[M+K-1:0]通过与H”矩阵的运算实现地址的映射,如果n>1,则映射过程为:
a)直接使用输入地址A[M+K-1:0]与H1”矩阵的每一行做按位与,然后将所有位异或,得出长度为M1的向量T1;H1”矩阵为M1对应的H”变化矩阵;
b)然后用输入地址A[M-M1+K-1:M1]与H2”矩阵的每一行做按位与,然后将所有位异或,得出长度为M2的向量T2;H2”矩阵为M2对应的H”变化矩阵;
c)依次得到长度为Mn的向量Tn,并把所有向量组成新的长度为M’的向量T={Tn,···,T2,T1};
d)然后用输入地址A的高位与向量T重新组合形成向量A’={A[M+K-1:M],T[M-1:0]};
e)T[M-1:0]即输入地址A映射的交叉存储器的储存块号码,A[M+K-1:M]即地址A映射的存储块内地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110969401.8A CN113655966B (zh) | 2021-08-23 | 2021-08-23 | 供并行计算用的交叉存储器伪随机映射方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110969401.8A CN113655966B (zh) | 2021-08-23 | 2021-08-23 | 供并行计算用的交叉存储器伪随机映射方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113655966A true CN113655966A (zh) | 2021-11-16 |
CN113655966B CN113655966B (zh) | 2022-03-25 |
Family
ID=78492046
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110969401.8A Active CN113655966B (zh) | 2021-08-23 | 2021-08-23 | 供并行计算用的交叉存储器伪随机映射方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113655966B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5276826A (en) * | 1988-01-04 | 1994-01-04 | Hewlett-Packard Company | Apparatus for transforming addresses to provide pseudo-random access to memory modules |
CN1261696A (zh) * | 1998-09-15 | 2000-08-02 | 精工爱普生株式会社 | 能够将图象旋转180度的显示设备和方法 |
CN102841852A (zh) * | 2011-06-24 | 2012-12-26 | 华为技术有限公司 | 磨损均衡方法、存储装置及信息系统 |
CN103023515A (zh) * | 2013-01-01 | 2013-04-03 | 苏州威士达信息科技有限公司 | 基于块列循环的cmmb中ldpc编码器和编码方法 |
CN104850501A (zh) * | 2015-04-29 | 2015-08-19 | 中国人民解放军国防科学技术大学 | 一种ddr存储器访存地址映射方法及访存地址映射单元 |
US20180097618A1 (en) * | 2016-09-30 | 2018-04-05 | Intel Corporation | Linear masking circuits for side-channel immunization of advanced encryption standard hardware |
EP3561736A1 (en) * | 2016-12-20 | 2019-10-30 | Shanghai Cambricon Information Technology Co., Ltd | Multiplication and addition device for matrices, neural network computing device, and method |
CN110719113A (zh) * | 2014-05-21 | 2020-01-21 | 三星电子株式会社 | 传输设备及其交织方法 |
CN112231739A (zh) * | 2020-11-09 | 2021-01-15 | 珠海市一微半导体有限公司 | 一种基于地址重映射的烧录文件加解密方法及其系统 |
CN113110954A (zh) * | 2021-04-23 | 2021-07-13 | 合肥恒烁半导体有限公司 | 一种crc码并行计算方法、装置及其应用 |
-
2021
- 2021-08-23 CN CN202110969401.8A patent/CN113655966B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5276826A (en) * | 1988-01-04 | 1994-01-04 | Hewlett-Packard Company | Apparatus for transforming addresses to provide pseudo-random access to memory modules |
CN1261696A (zh) * | 1998-09-15 | 2000-08-02 | 精工爱普生株式会社 | 能够将图象旋转180度的显示设备和方法 |
CN102841852A (zh) * | 2011-06-24 | 2012-12-26 | 华为技术有限公司 | 磨损均衡方法、存储装置及信息系统 |
CN103023515A (zh) * | 2013-01-01 | 2013-04-03 | 苏州威士达信息科技有限公司 | 基于块列循环的cmmb中ldpc编码器和编码方法 |
CN110719113A (zh) * | 2014-05-21 | 2020-01-21 | 三星电子株式会社 | 传输设备及其交织方法 |
CN104850501A (zh) * | 2015-04-29 | 2015-08-19 | 中国人民解放军国防科学技术大学 | 一种ddr存储器访存地址映射方法及访存地址映射单元 |
US20180097618A1 (en) * | 2016-09-30 | 2018-04-05 | Intel Corporation | Linear masking circuits for side-channel immunization of advanced encryption standard hardware |
EP3561736A1 (en) * | 2016-12-20 | 2019-10-30 | Shanghai Cambricon Information Technology Co., Ltd | Multiplication and addition device for matrices, neural network computing device, and method |
CN112231739A (zh) * | 2020-11-09 | 2021-01-15 | 珠海市一微半导体有限公司 | 一种基于地址重映射的烧录文件加解密方法及其系统 |
CN113110954A (zh) * | 2021-04-23 | 2021-07-13 | 合肥恒烁半导体有限公司 | 一种crc码并行计算方法、装置及其应用 |
Non-Patent Citations (2)
Title |
---|
周科: "双倍速率同步动态随机存储器的地址映射方法", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
孙也: "高性能处理器存储控制器分析与优化设计", 《吉林广播电视大学学报》 * |
Also Published As
Publication number | Publication date |
---|---|
CN113655966B (zh) | 2022-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10545865B2 (en) | Systems and methods for implementing low-latency lookup circuits using sparse hash functions | |
CA1290854C (en) | Two-dimensional discrete cosine transform processor | |
US11507350B2 (en) | Processing apparatus and processing method | |
JP5089842B2 (ja) | マルチバンク、フォルトトレラント、高性能メモリアドレス指定のシステム及び方法 | |
JP4559505B2 (ja) | ランダム系列の反復周期の拡張 | |
KR20210130196A (ko) | 양자-보안 사물 인터넷을 위한 설정가능한 래티스 암호 프로세서 및 관련된 기법들 | |
Lee et al. | SPRING: a novel parallel chaos-based image encryption scheme | |
CN113039541A (zh) | 矩阵的空间局部变换 | |
JP2010521728A (ja) | データ圧縮のための回路及びこれを用いるプロセッサ | |
US11126549B2 (en) | Processing in-memory architectures for performing logical operations | |
US20090254694A1 (en) | Memory device with integrated parallel processing | |
CN112464296B (zh) | 一种用于同态加密技术的大整数乘法器硬件电路 | |
Kim et al. | Latin squares for parallel array access | |
CN107633297A (zh) | 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器 | |
JP2000231513A (ja) | N次元矩形データアレイの任意の所与次元におけるパラレルデータアクセスのためのメモリアーキテクチャ | |
CA2638318A1 (en) | High rate, long block length, low density parity check encoder | |
CN113655966B (zh) | 供并行计算用的交叉存储器伪随机映射方法 | |
JP2006072891A (ja) | セルオートマトンに基づく、制御可能な周期を有する擬似乱数シーケンスの生成方法および装置 | |
Aluru | Lagged Fibonacci random number generators for distributed memory parallel computers | |
KR0139699B1 (ko) | 이산 코사인 변환장치 | |
JP7000635B2 (ja) | マトリックスを変換するための装置及び方法、データ処理システム | |
US10884736B1 (en) | Method and apparatus for a low energy programmable vector processing unit for neural networks backend processing | |
Waltz | Implementation of SKIPSM for 3D binary morphology | |
US7127595B1 (en) | Method and system for configuring to a desired order the order of a data array | |
Stocco et al. | On spatial orders and location codes |
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 |