基于高速缓冲存储器行偏移量实现优先读取存储器的方法技术

技术编号:2848249 阅读:313 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种基于高速缓冲存储器行偏移量实现优先读取存储器的方法,目的是提高存控部件读入Cache失效所需数据的效率。技术方案是设计一种新的存控部件,且在Cache中设计偏移量截取逻辑、起始地址产生逻辑和数据回收与计数逻辑,将Cache行平均分成M块,当CPU核读Cache失效时,首先判断失效数据位于Cache行的哪一块,并用偏移量f指示该块的位置。Cache向存控部件发访存请求时,向存控部件输出f和Cache行的起始地址A;存控部件根据A和f,计算出失效数据块f的起始地址,读取f并返回给Cache,计算其他M-1个数据块的起始地址并读取各块的数据,返回给Cache,从而完成整个Cache行的读取。采用本发明专利技术可优先读入Cache失效所需的数据,尽早解除Cache失效状态,提高微处理器性能。

【技术实现步骤摘要】

本专利技术涉及嵌入式微处理器和SoC(System on Chip,片上系统)设计中从外部存储器读取数据到片内Cache(高速缓冲存储器)的方法,尤其是当Cache与外部存储器的存控部件之间存在直接数据通路时读取存储器的方法。
技术介绍
在通用CPU中,负责与外部存储器交换数据的存控部件都由主板上的桥接芯片来实现。而在嵌入式微处理器,例如Digital SignalProcessor,数字信号处理器)、ASIC(Application Specific Integrated Circuit,专用集成电路),以及某些SoC中,存控部件常常与CPU核集成在一块芯片上,构成微处理器。这种情况下,微处理器芯片可以直接挂接外部存储器,不需要桥接芯片。Cache是现代微处理器芯片内常用的高速数据缓冲存储器,对于提高处理器的性能至关重要。在嵌入式微处理器中,Cache常常通过存控部件与片外存储器交换数据。当CPU核读Cache失效时,要通过存控部件从外部存储器Mem内读入所需的数据。在现代Cache技术中,Cache一般组织成多行的结构,每一行的数据量根据CPU体系结构的不同而不同。当CPU核读Cache失效时,要通过存控部件从外部存储器Mem读入失效数据所在行的一整行数据,然后解除失效状态。由于Cache每一行数据的地址都是连续的,因此Cache在向存控部件发出读请求时,只需要给出该Cache行的起始地址,存控部件自动进行地址累加,连续读入整行数据。这种方法的缺点是总是从首地址开始连续读入一行数据,效率较低。因为,当CPU核所需的数据是Cache行的最后一个数据时,存控部件将最后读入该数据。在此之前,Cache失效状态始终无法解除,CPU核得不到所需的数据,CPU流水线始终被阻塞。因此,存控部件读入Cache失效所需数据越早,CPU流水线被阻塞的时间就越短,微处理器的性能就越好。
技术实现思路
本专利技术要解决的技术问题是在嵌入式微处理器或SoC中,对于Cache与存控部件存在直接数据通路的情况,当CPU核读Cache失效时,提高存控部件读入Cache失效所需数据的效率,尽早解除Cache失效状态,提高微处理器的性能。本专利技术的技术方案是设计一种新的存控部件,同时在Cache中设计偏移量截取逻辑、起始地址产生逻辑和数据回收与计数逻辑,由它们共同完成存储器优先读取。由于计算机系统一般以字节(8位二进制数)为最小单位进行寻址,本专利技术假设Cache行大小为M*S个字节,将Cache行平均分成M块,每块包含S个字节。若计算机系统以字或长字为单位寻址,则划分Cache行时相应以字或长字为单位进行。为了处理方便,通常取M=2n,S=2p(n、p均为正整数)。在Cache中设计偏移量截取逻辑、起始地址产生逻辑和数据回收与计数逻辑。当CPU核读Cache失效时,数据命中/失效判断逻辑首先判断失效数据位于Cache行的哪一块,Cache向存控部件发访存请求时,偏移量截取逻辑产生偏移量f,起始地址产生逻辑产生起始地址A,并将f和A同时输出给存控部件。f和A的产生方式如下。假设k=log2(M*S)-1,数据的逻辑地址D为q位宽,偏移量截取逻辑截取失效数据的逻辑地址D的第k位到第k-(n-1)位,即D[kk-(n-1)],共n位地址,作为块偏移量f;如果失效数据位于Cache行的第f块(0≤f≤M-1),则f=D[kk-(n-1)]。起始地址产生逻辑,将q位逻辑地址D的第k位到第0位都置为0,高位地址不变,作为起始地址,即 存控部件由数据块读顺序控制器、逻辑移位器、加法器、地址译码单元和存储控制器组成。其中数据块读顺序控制器、逻辑移位器、加法器负责计算各个块的首地址A+(f+i)S,其中i=-f,1-f,...,-1,1,2,..,M-1-f。数据块读顺序控制器选择需要读取的数据块,即选择i的值,并计算出f+i,输出给逻辑移位器。地址译码单元和存储控制器首先读取失效数据所在的数据块f,即选择i=0。在读入第f块数据之后,再采取连续循环读取方式或截断读取方式读入其他M-1块数据,从而完成整个Cache行的读请求。连续循环读取方式是在读入第f块数据之后,连续读取第f+1到第M-1块数据,然后再读取第0到第f-1块数据,即选择i=1,2,...,M-1-f之后,再选择i=-f,1-f,...,-1。截断式读取方式是在读入第f块数据之后,首先读取第0到第f-1块数据,然后再读取第f+1到第M-1块数据,即选择i=-f,1-f,...,-1之后,再选择i=1,2,...,M-1-f。显然第二种方式将一行数据分成了三段,比第一种方式增加了一次地址计算操作。但是,在某些采用n级Cache结构的处理器中,如果第n-1级Cache优先需要第0到第f-1块数据,那么应该采用第二种读取方式。因此,在不同的微处理器结构中,这两种读取顺序都是可行的。由于S=2p(p为正整数),为了避免使用乘法器之类的复杂运算单元,本专利技术在存控部件中采用逻辑移位的方式来计算(f+i)S,即采用逻辑移位器将f+i左移p位,就得到了(f+i)S的结果,然后将该结果输出给加法器。加法器在Cache行首地址的基础上加上(f+i)S,得到偏移块的首地址A+(f+i)S,然后将这一地址和读存储器命令交给地址译码单元和存储控制器进行处理,地址译码单元和存储控制器从数据块的首地址A+(f+i)S开始,连续从外部存储器中读入一块数据,返回给Cache。Cache的数据回收与计数逻辑收到第f块数据后,将该块数据写入Cache存储体,同时向CPU或者上一级Cache返回数据,即可解除Cache失效状态。然后,Cache的数据回收与计数逻辑按照与存控部件约定的读取顺序(连续循环读取或截断读取),将后续收到的M-1块数据依次写入Cache存储体中Cache行的相应位置,从而完成整个Cache行的读取。从理论上讲,如果将Cache行划分的块数M越大,那么每一块所包含的字节数S就越小,存控部件优先读取失效数据块之后,Cache解除失效状态就越早,CPU的性能似乎越高。但是,当M越大时,n的值也越大,Cache与存控部件的判断与控制逻辑就越复杂,硬件成本也越高。因此在选择M值时要在CPU性能与硬件成本之间进行权衡,尽量使得M≤8,那么Cache用不超过3位宽的信号就可以指示失效数据块的偏移量f,Cache与存控部件的控制逻辑也比较容易实现。对于只有一级Cache的嵌入式微处理器,可以在一级Cache与存控部件之间采用本专利技术。如果嵌入式微处理器内包含n级Cache,那么应该在第n级Cache与存控部件之间采用本专利技术。采用本专利技术可以达到以下有益的技术效果1、本专利技术优先读入Cache失效所需的数据,尽早解除Cache失效状态,大大提高了嵌入式微处理器的性能;2、对于多路组相联的Cache,在不分块的情况下,Cache行是Cache存储体的最小数据单元,因此将Cache行进一步分块是对最小数据单元的进一步细化,与Cache的路数和相联结构无关。Cache的相联结构是用于快速判断数据在Cache内是否失效的,本专利技术是在判断失效之后,提高读取数据效率的一种方法。只要嵌入式微处理器的Cache与存控部件之间存在直接通路就本文档来自技高网
...

【技术保护点】
一种基于高速缓冲存储器行偏移量实现优先读取存储器的方法,其特征在于设计一种新的存控部件,且在Cache中设计偏移量截取逻辑、起始地址产生逻辑和数据回收与计数逻辑,将大小为M*S个字节的Cache行平均分成M块,每块包含S个字节,M和S均为2的整数次幂,即M=2↑[n],S=2↑[p],n、p均为正整数;当CPU核读Cache失效时,数据命中/失效判断逻辑首先判断失效数据位于Cache行的哪一块,Cache向存控部件发访存请求时,偏移量截取逻辑产生偏移量f、起始地址产生逻辑产生起始地址A,并同时输出给存控部件;存控部件由数据块读顺序控制器、逻辑移位器、加法器、地址译码单元和存储控制器组成;数据块读顺序控制器、逻辑移位器、加法器负责计算各个块的首地址A+[f+i]S,其中i=-f,1-f,…,-1,1,2,…,M-1-f;数据块读顺序控制器选择需要读取的数据块,即选择i的值,并计算出f+i,输出给逻辑移位器;地址译码单元和存储控制器读取失效数据所在的数据块f,即选择i=0,在读入第f块数据之后,再采取连续循环读取方式或截断读取方式读入其他M-1块数据;Cache的数据回收与计数逻辑收到第f块数据后,将该块数据写入Cache存储体,同时向CPU或者上一级Cache返回数据,即可解除Cache失效状态;然后,Cache的数据回收与计数逻辑按照连续循环读取或截断读取顺序,将后续收到的M-1块数据依次写入Cache存储体中Cache行的相应位置,从而完成整个Cache行的读取。...

【技术特征摘要】
1.一种基于高速缓冲存储器行偏移量实现优先读取存储器的方法,其特征在于设计一种新的存控部件,且在Cache中设计偏移量截取逻辑、起始地址产生逻辑和数据回收与计数逻辑,将大小为M*S个字节的Cache行平均分成M块,每块包含S个字节,M和S均为2的整数次幂,即M=2n,S=2p,n、p均为正整数;当CPU核读Cache失效时,数据命中/失效判断逻辑首先判断失效数据位于Cache行的哪一块,Cache向存控部件发访存请求时,偏移量截取逻辑产生偏移量f、起始地址产生逻辑产生起始地址A,并同时输出给存控部件;存控部件由数据块读顺序控制器、逻辑移位器、加法器、地址译码单元和存储控制器组成;数据块读顺序控制器、逻辑移位器、加法器负责计算各个块的首地址A+[f+i]S,其中i=-f,1-f,...,-1,1,2,...,M-1-f;数据块读顺序控制器选择需要读取的数据块,即选择i的值,并计算出f+i,输出给逻辑移位器;地址译码单元和存储控制器读取失效数据所在的数据块f,即选择i=0,在读入第f块数据之后,再采取连续循环读取方式或截断读取方式读入其他M-1块数据;Cache的数据回收与计数逻辑收到第f块数据后,将该块数据写入Cache存储体,同时向CPU或者上一级Cache返回数据,即可解除Cache失效状态;然后,Cache的数据回收与计数逻辑按照连续循环读取或截断读取顺序,将后续收到的M-1块数据依次写入Cache存储体中Cache行的相应位置,从而完成整个Cache行的读取。2.如权利要求1所述的基于高速缓冲存储器行偏移量实现优先读取存储器的方法,其特征在于假设k=log2[M*S]-1,数据的逻辑地址D为q位宽,偏移量截取逻辑截取失效数据的逻辑地址D的第k位到第k-[n-1]位,即D[k:k-[n-1]],共n位地址...

【专利技术属性】
技术研发人员:汪东卢晏安陈书明郭阳孙书为扈啸方兴
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:43[中国|湖南]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1