一种内存访问方法和装置制造方法及图纸

技术编号:6959860 阅读:328 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种内存访问方法:判断CPU将要访问的数据或指令与当前正在访问的是否在同一页面,如果否,触发页面切换机制;进行页面切换时,保存将要访问的数据或指令所在的页面号码,执行页面切换处理程序;从外部存储器中将将要访问的数据或指令更新到程序RAM当中;结束页面切换处理程序,将程序计数器的值修改回记录的所述发现页面不匹配时的程序计数器的值后继续执行。本发明专利技术实施例还提供一种内存访问装置。本发明专利技术提供的内存访问方法和装置,能够避免每次页面切换都需要切换代码的问题,减少了页面切换代码量,对各种页面切换提供统一接口,使设计人员不必关心页面切换的具体实现细节,显著降低了程序的编写设计难度和调试复杂度。

【技术实现步骤摘要】

本专利技术涉及计算机技术,特别涉及一种内存访问方法和装置
技术介绍
在当前的计算机系统特别是嵌入式系统当中,硬件运算能力的日益提高使得越来越多的系统功能得以实现,而实现这些功能的软件的规模也相应的不断增大,从而软件的可执行代码的长度越来越长。对于传统的寻址范围为2M字节的中央处理器(CPU),M为正整数,CPU在内存 (RAM)空间中的一次寻址范围为2M字节,从而每次能够被执行的可执行代码的最大长度也为2M字节。显然,若可执行代码的长度超过该寻址范围时,即使可执行代码能够全部保存在RAM空间当中,CPU也无法一次性全部执行。这时,传统的解决方法是采用软件方式的分页(BankSwitch)模式来控制每次执行的可行代码片段——将保存全部可执行代码的RAM 空间进行分页,CPU每次选取其中一页进行执行且各页之间的地址复用;同时,由于每页的可执行代码并非功能上完整的单元,从而在可执行代码的执行过程中不可避免的需要在各页之间进行切换,因此,还需要设置进行分页切换的代码(通常称为Bank切换代码)来实现各分页之间的切换。下面通过一个具体示例来对所述Bank Switch模式进行详细说明,BankSwitch模式下可执行代码在RAM中的存储方式如图1所示,假设此时的RAM空间(通常也称为程序空间)为223字节,将其等分成1 个bank (页面),每一个页面的大小为216字节其中,可执行代码共分为1 页(其编号为bank 0 bank 127),各页的地址复用——其起始地址大于等于0x0000,小于Oxffff (称为bank baseaddress),结束地址为 OxFFFF,通常将该地址空间称为页空间;在任一时刻,仅有一个页面中保存的可执行代码处于执行状态,通常称该页面为处于激活状态的页面——即,CPU在同一时间点上仅执行处于激活状态的页面中保存的可执行代码;同时,所述地址复用的含义为处于激活状态的页面i (i = 0、1. . . η,η彡127)的物理地址空间为所述的bank base address FFFF, 而未处于激活状态的其它各页面则未被分配地址;另一方面,物理地址空间0000 bank base address称为共用段,该地址空间用于存储所述可执行代码中那些基本的、全局性的代码——例如用于变量初始化的代码、中断服务代码以及用于进行分页切换的页面切换代码等。在这种情况下,如果当前处于激活状态的页面中的可执行代码执行过程中,需要调用位于其它页面的代码,就必须要在不同的页面间进行切换,因此每一个这种用于进行页面切换的页面切换代码都需要存储在RAM的根空间中。随着代码的页面数量的增多(即 i值越大),相应产生的页面切换代码的数量就越多,从而所有页面切换代码在根空间中占用的空间就越大。通常,每个用于进行页面切换的页面切换代码的大小约为32 48字节, 而一个正常尺寸的软件需要的页面切换代码的数量至少为上百个,这就会使得RAM根空间中存储的页面切换代码增大到4KB以上,而对于目前集成电路中的RAM来说,使用4KB字节或以上的空间只是用来完成页面切换的功能显然是不能接受的,因为RAM空间数量有限且成本很高,这种方式会导致大量RAM空间被占用而无法反复利用。
技术实现思路
本专利技术的主要目的在于提供一种内存访问方法和装置,能够减小对RAM空间的需要,提高RAM空间利用效率,降低程序编写和调试的复杂程度。为达到上述目的,本专利技术的技术方案具体是这样实现的一种内存访问方法,该方法包括步骤A、通过预设的硬件检测电路判断CPU将要访问的数据或指令与CPU当前正在访问的数据或指令是否在同一页面,如果不在同一页面,触发CPU的页面切换机制,并同时记录发现页面不匹配时的程序计数器的值;步骤B、CPU进行页面切换时,保存将要访问的数据或指令所在的页面号码至页面寄存器中,开始执行页面切换处理程序,所述页面切换处理程序包括根据记录的不匹配地址设置返回现场使用的程序指针,从外部存储器中将将要访问的数据或指令更新到程序 RAM当中,并将当前页面寄存器的值更新为保存的页面号码;步骤C、结束页面切换处理程序,将程序计数器的值修改回记录的所述发现页面不匹配时的程序计数器的值,并返回继续执行步骤A。所述判断CPU将要访问的数据或指令与CPU当前正在访问的数据或指令是否在同一页面的方法包括将CPU访问的地址空间等分成2N个页面,N为大于0的整数且N小于CPU的寻址的位宽M,M为大于0的整数,其中,M的高N位表示页面号码,低(M-N)位为页面内的地址;判断程序计数器的高N位与当前页面寄存器的值是否相同,所述当前页面寄存器的值表示CPU当前访问的数据或指令所在的页面号码;如果相同,则所述CPU将要访问的数据或指令与当前正在访问的数据或指令在同一页面;如果不同,则不在同一页面。若CPU采用直接取指的方式访问程序空间,所述触发CPU的页面切换机制的方法包括硬件检测电路将页面切换指令作为CPU的预取指令送入CPU,当CPU执行到该指令时产生进行页面切换的控制信号,开始页面切换。所述CPU进行页面切换时,保存将要访问的数据或指令所在的页面号码,开始执行页面切换处理程序;根据记录的不匹配地址设置返回现场使用的程序指针,从外部存储器中将将要访问的指令更新到程序RAM当中,并将当前页面寄存器的值更新为保存的页面号码的方法包括CPU将当前的程序计数器压入堆栈,并将此时程序计数器的高N位所表示的页面号作为新页面号进行保存;之后,准备执行页面切换处理程序;将堆栈中程序计数器的取值修改为不匹配地址,作为返回现场使用的程序指针, 从外部存储器中将将要取指的代码更新到程序RAM当中,并将当前页面寄存器的值更新为所述保存的新页面号。若CPU通过寄存器间接寻址的方式访问程序空间和数据空间,所述触发CPU的页面切换机制的方法包括硬件检测电路直接向CPU发送进行页面切换的控制信号。所述CPU进行页面切换时,保存CPU将要访问的数据或指令所在的页面号码,开始执行页面切换处理程序;根据记录的不匹配地址设置返回现场使用的程序指针,从外部存储器中将将要访问的数据或指令更新到程序RAM当中,并将当前页面寄存器的值更新为保存的页面号码的方法包括CPU接到硬件检测电路发送的控制信号后,取消当前指令的执行并保存当前指令的PC的取值;将当前指令的PC修改为页面切换处理程序所在的起始地址,并将送往地址总线的访问信号无效掉;之后,准备执行页面切换处理程序;将取值等于不匹配地址的PC压入堆栈作为返回现场使用的程序指针,从外部存储器中将将要访问的数据或指令更新到程序RAM当中,并将当前页面寄存器的值更新为所述将要访问的数据或指令所在页面的页面号码。所述页面切换处理程序常驻内存且放置在程序空间默认页面的公用段当中,供 CPU在需要的时候随时调用。一种内存访问装置,该装置包括硬件检测电路,用于判断CPU将要访问的数据或指令与CPU当前正在访问的数据或指令是否在同一页面,如果不在同一页面,触发CPU的页面切换机制,并同时记录发现页面不匹配时的程序计数器的值;CPU,用于在进行页面切换时,保存将要访问的数据或指令所在的页面号码至页面寄存器中,开始执行页面切换处理程序,所述页面切换处理程序包括根据记录的不匹配本文档来自技高网
...

【技术保护点】
1.一种内存访问方法,其特征在于,该方法包括:步骤A、通过预设的硬件检测电路判断CPU将要访问的数据或指令与CPU当前正在访问的数据或指令是否在同一页面,如果不在同一页面,触发CPU的页面切换机制,并同时记录发现页面不匹配时的程序计数器的值;步骤B、CPU进行页面切换时,保存将要访问的数据或指令所在的页面号码至页面寄存器中,开始执行页面切换处理程序,所述页面切换处理程序包括根据记录的不匹配地址设置返回现场使用的程序指针,从外部存储器中将将要访问的数据或指令更新到程序RAM当中,并将当前页面寄存器的值更新为保存的页面号码;步骤C、结束页面切换处理程序,将程序计数器的值修改回记录的所述发现页面不匹配时的程序计数器的值,并返回继续执行步骤A。

【技术特征摘要】

【专利技术属性】
技术研发人员:江小炜彭洪
申请(专利权)人:炬力集成电路设计有限公司
类型:发明
国别省市:44

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

1