一种消除内存访问等待的数字信号处理器内存控制方法,用于数字信号处理器中的内存控制单元的设计。将读写操作流水层分隔成数据地址产生、地址访问、内存读及内存写四个基本层次,并且将写内存设计在第四层以消除访存等待,在发生内存写后读冲突时,采用读操作先拥有内存总线的控制权,而将写操作内容暂时存入写回队列的方式解决,以提高数字信号处理器的性能。本发明专利技术将读写操作流水层分隔并采用硬件写回队列的方法,在硬件层次上实现了一种数据相关消除的方案,且对于数字信号处理器软件开发过程完全透明,从而使得数字信号处理器在达到高主频的同时实现高效的处理效率。
【技术实现步骤摘要】
本专利技术涉及的是一种,用于数字信号处理器中的内存控制单元的设计,属于数字信号处理
技术介绍
数字信号处理器主要用在信号传送、音频视频压缩解码、频谱分析等领域,这些领域无一例外的需要处理器进行大量的数据交换,所以确保数字信号处理器在运行过程中获得高数据吞吐率是设计数字信号处理器的一个基本前提。当今各个应用领域对运算性能不断提出新的要求,数字信号处理器已向着高主频深度流水线的方向发展。目前主流数字信号处理器比如TI公司C54x系列的流水线深度为6,TI公司C6200的流水线深度为11,ADI公司300MHz BlackFin的流水线深度为8。随着数字信号处理器流水线深度的不断增加,不可避免的产生了数据相关问题,即处理器低层次流水线上所需数据仍处在高层次流水线上。当这种情况发生时,处理器一般将自动进入等待周期,等到深层流水线完成运算,数据相关消除后才继续工作。如果数字信号处理器过多的进入等待周期,其实际处理能力就会下降,若不能很好的解决数据相关等待的问题,即使数字信号处理器拥有一个相对较高的主频,其处理能力的优势将得不到体现。
技术实现思路
本专利技术的目的在于克服现有技术的不足,提供一种,将读写操作分层并采用硬件写回队列的方法,在硬件层次上实现了一种数据相关消除的方案,且对于数字信号处理器软件开发过程完全透明,从而使得数字信号处理器在达到高主频的同时实现高效的处理效率。为实现这样的目的,本专利技术基于对流水线结构以及数据等待的原因分析,结合静态存储器(SRAM)时钟同步触发单元结构的特点,提出了一种,将读写操作流水层分隔成数据地址产生、地址访问、内存读及内存写四个基本层次,并且将写内存设计在第四层以消除访存等待。在发生内存写后读冲突时,采用读操作先拥有内存总线的控制权,而将写操作内容暂时存入写回队列的方式解决,以提高数字信号处理器的性能。本专利技术所提出的,包括读写操作流水层分隔以及写回队列这两个基本步骤1.读写操作流水层分隔将读写操作流水层分隔成数据地址产生、地址访问、内存读及内存写四个基本层次,并且将写内存设计在第四层。第一层产生数据地址,为第二层的地址访问提供相应的地址;第二层根据第一层产生的数据地址进行地址访问,这样内存总线上就有将访问内存单元的地址;第三层读内存,根据内存总线上的地址读取相应内存单元的内容;第四层写内存,根据内存总线上的地址写相应内存单元的内容。由于静态存储器为时钟同步触发单元结构,当第二层向内存总线发出数据地址后,第三层即可得到相应的数据,由于写内存在第四层,这样就消除访存等待,解决流水线冲突。但是将读写操作流水层分隔有可能造成内存写后读冲突,这就需要用写回队列来解决。2.指令写回为了解决第一步读写操作流水层分隔造成的内存写后读冲突,第二步采用指令写回技术。当发生内存写后读冲突时,写操作的优先级将自动低于读操作,读操作将先拥有内存总线的控制权,而写操作指令暂时存入指令写回队列中;当内存总线空闲时,再将写操作的内容送入内存总线。在未发生内存写后读冲突时,流水线就工作在正常模式下,此时不向指令写回队列写入指令。经过对流水线的分析,整个指令写回队列的深度不大于1,完全可以用同步寄存器来实现,而不会引入新的内存模块,使得后端设计容易实现。本专利技术的,通过对读写操作流水层分隔以及指令写回队列的设计,在硬件层次上实现数据相关的消除,使得访存单元可以为数字信号处理器提供100%效率的访存控制能力,提高了数字信号处理器的性能,而且对于数字信号处理器软件开发过程完全透明,从而使得数字信号处理器在达到高主频的同时实现高效的处理效率,克服了目前方法中的插入等待周期的缺陷,是一种有效和简捷的内存控制方法。采用本专利技术的方法由于无需将内存奇偶分开,将数字信号处理器内部嵌入式内存进行了合并,使得整个数字信号处理器的静态功耗得到了一定程度的下降。附图说明图1为本专利技术基于内存读写操作流水层分隔的方法示意图。图2本专利技术的写回队列示意图具体实施方式为更好地理解本专利技术的技术方案,以下结合附图及具体的实施例作进一步描述。图1是本专利技术基于内存读写操作流水层分隔的方法示意图。如图1所示,本专利技术的第一步是将读写操作流水层分隔成数据地址产生、地址访问、内存读及内存写四个基本层次,并且将写内存设计在第四层。第一层数据地址产生,目的是根据指令产生读内存或写内存的地址;第二层地址访问,根据第一层产生的数据地址进行地址访问,这样内存总线上就有将访问内存单元的地址;第三层读内存,根据内存总线上的地址读取相应内存单元的内容;第四层写内存,根据内存总线上的地址写相应内存单元的内容。由于静态存储器为时钟同步触发单元结构,当第二层向内存总线发出数据地址后,第三层即可得到相应的数据,由于读内存和写内存分别处在第三层和第四层,这样就消除访存等待,解决流水线冲突。但这会引起两条指令同时抢占内存总线的写后读的冲突,这需要由第二步指令写回来解决。图2是本专利技术指令写回的方法示意图。在产生写后读冲突时,读操作将先拥有内存总线的控制权,同时将内存写操作指令送入到指令写回队列中,内存读操作先于内存写操作从内存读出数据;在内存读操作完成、内存总线空闲时,内存写操作指令从指令写回队列中弹出,拥有内存总线的控制权。实施例以下是一段数字信号处理器典型的数据依赖程序数据依赖程序 其中指令2表示将寄存器r0,r3和r6中的值进行乘累加操作并将得到的值送入到寄存器r6中,与此同时并发两条内存访问指令1.将寄存器r7的值存到指定的内存单元中;2.将指定内存单元中的值存入到寄存器r7中。类似的,指令3表示将寄存器r5和r7中的值进行相减操作并将得到的值送入到寄存器r5中,与此同时并发两条内存访问指令1.将指定内存单元中的值存入到寄存器r6中;2.将寄存器r6的值存到指定的内存单元中。当数字信号处理器运行指令3时,须将寄存器r6的数据写入内存,但是r6恰好是上一条乘加指令的运算结果,所以此时访存单元无法取得正确的运算结果,直到指令2完全流出流水线。同样,指令3与指令4之间,指令5与指令6之间都存在类似的数据依赖关系,如果以平均一个等待周期进行计算,以上这段6条指令构成的程序运行周期数为6(指令周期)+3(等待周期)=9个周期这样,整个流水线性能将下降33%。经过读写操作流水层分隔后,当数字信号处理器执行指令3,流水线第一层产生访问内存的数据地址;第二层根据第一层得到的数据地址进行地址访问,这时内存总线上就有将访问内存单元的地址;第三层将指定内存单元中的值写入到临时寄存器中;第四层根据内存总线上的地址往相应内存单元写入寄存器r6中的数据,同时将临时寄存器的值写到r6寄存器中。由于当指令2运行到第四层时,将寄存器r6中的数据写存操作不需立即执行,只有当指令3运行到第四层时才需要进行写存操作,此时指令2的运算操作已完全执行完毕,可以即刻写入,所以消除了流水线的等待。实现写回队列后,当数字信号处理器运行指令4,流水线处理到第四层时,指令6处于流水线第二层,此时指令4的写回操作自动进入写回队列,对指令6的处理完全可以正常进行。当总线空闲时,指令4的写回操作可以自动执行完成。可见当读写操作流水线层分开与写回队列同时实现后,访存单元可达到100%工作效率,所有的访存等待都在硬本文档来自技高网...
【技术保护点】
一种消除内存访问等待的数字信号处理器内存控制方法,其特征在于包括读写操作流水层分隔和写回队列这两个步骤:1)读写操作流水层分隔:将读写操作流水层分隔成数据地址产生、地址访问、内存读及内存写四个基本层次,并且将写内存设计在第四层,第一层产生数据地址,为第二层的地址访问提供相应的地址,第二层根据得到的数据地址进行地址访问,第三层读取地址所指定的内存单元的值,第四层将数据写到地址所指定的内存单元内;2)写回队列:当发生内存写后读冲突时,读操作将先拥有内存总线的控制权,而写操作的内容先暂时存入写回队列中,当内存总线空闲时,再将写操作的内容送入内存总线。
【技术特征摘要】
【专利技术属性】
技术研发人员:徐如淏,王兵,
申请(专利权)人:上海交通大学,
类型:发明
国别省市:31[中国|上海]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。