CN102270181A - 一种内存访问方法和装置 - Google Patents

一种内存访问方法和装置 Download PDF

Info

Publication number
CN102270181A
CN102270181A CN2010101933775A CN201010193377A CN102270181A CN 102270181 A CN102270181 A CN 102270181A CN 2010101933775 A CN2010101933775 A CN 2010101933775A CN 201010193377 A CN201010193377 A CN 201010193377A CN 102270181 A CN102270181 A CN 102270181A
Authority
CN
China
Prior art keywords
page
cpu
instruction
program
value
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
Application number
CN2010101933775A
Other languages
English (en)
Other versions
CN102270181B (zh
Inventor
江小炜
彭洪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Actions Technology Co Ltd
Original Assignee
Actions Semiconductor Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Actions Semiconductor Co Ltd filed Critical Actions Semiconductor Co Ltd
Priority to CN2010101933775A priority Critical patent/CN102270181B/zh
Publication of CN102270181A publication Critical patent/CN102270181A/zh
Application granted granted Critical
Publication of CN102270181B publication Critical patent/CN102270181B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

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

Description

一种内存访问方法和装置
技术领域
本发明涉及计算机技术,特别涉及一种内存访问方法和装置。
背景技术
在当前的计算机系统特别是嵌入式系统当中,硬件运算能力的日益提高使得越来越多的系统功能得以实现,而实现这些功能的软件的规模也相应的不断增大,从而软件的可执行代码的长度越来越长。
对于传统的寻址范围为2M字节的中央处理器(CPU),M为正整数,CPU在内存(RAM)空间中的一次寻址范围为2M字节,从而每次能够被执行的可执行代码的最大长度也为2M字节。显然,若可执行代码的长度超过该寻址范围时,即使可执行代码能够全部保存在RAM空间当中,CPU也无法一次性全部执行。这时,传统的解决方法是采用软件方式的分页(BankSwitch)模式来控制每次执行的可行代码片段——将保存全部可执行代码的RAM空间进行分页,CPU每次选取其中一页进行执行且各页之间的地址复用;同时,由于每页的可执行代码并非功能上完整的单元,从而在可执行代码的执行过程中不可避免的需要在各页之间进行切换,因此,还需要设置进行分页切换的代码(通常称为Bank切换代码)来实现各分页之间的切换。
下面通过一个具体示例来对所述Bank Switch模式进行详细说明,BankSwitch模式下可执行代码在RAM中的存储方式如图1所示,假设此时的RAM空间(通常也称为程序空间)为223字节,将其等分成128个bank(页面),每一个页面的大小为216字节:
其中,可执行代码共分为128页(其编号为bank 0~bank 127),各页的地址复用——其起始地址大于等于0x0000,小于0xffff(称为bank baseaddress),结束地址为0xFFFF,通常将该地址空间称为页空间;在任一时刻,仅有一个页面中保存的可执行代码处于执行状态,通常称该页面为处于激活状态的页面——即,CPU在同一时间点上仅执行处于激活状态的页面中保存的可执行代码;同时,所述地址复用的含义为:处于激活状态的页面i(i=0、1...n,n≤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,用于在进行页面切换时,保存将要访问的数据或指令所在的页面号码至页面寄存器中,开始执行页面切换处理程序,所述页面切换处理程序包括根据记录的不匹配地址设置返回现场使用的程序指针,从外部存储器中将将要访问的数据或指令更新到程序RAM当中,并将当前页面寄存器的值更新为保存的页面号码;之后,结束页面切换处理程序,将程序计数器的值修改回记录的所述发现页面不匹配时的程序计数器的值,并通知所述硬件检测电路继续进行判断。
所述硬件检测电路包括:
判断单元,用于将CPU访问的地址空间等分成2N个页面,N为大于0的整数且N小于CPU的寻址的位宽M,M为大于0的整数,其中,M的高N位表示页面号码,低(M-N)位为页面内的地址;判断程序计数器的高N位与当前页面寄存器的值是否相同,所述当前页面寄存器的值表示CPU当前访问的数据或指令所在的页面号码;如果相同,则所述CPU将要访问的数据或指令与当前正在访问的数据或指令在同一页面;如果不同,则不在同一页面。
所述硬件检测电路还包括:
页面切换触发单元,用于在CPU采用直接取指的方式访问程序空间时,将页面切换指令作为CPU的预取指令送入CPU,当CPU执行到该指令时产生进行页面切换的控制信号,开始页面切换;还用于在CPU通过寄存器间接寻址的方式访问程序空间和数据空间时,直接向CPU发送进行页面切换的控制信号。
所述CPU包括:
页面切换执行单元,用于在当CPU采用直接取指的方式访问程序空间时,将当前的程序计数器压入堆栈,并将此时程序计数器的高N位所表示的页面号作为新页面号进行保存;之后,准备执行页面切换处理程序;将堆栈中程序计数器的取值修改为不匹配地址,作为返回现场使用的程序指针,从外部存储器中将将要取指的代码更新到程序RAM当中,并将当前页面寄存器的值更新为所述保存的新页面号;还用于在当CPU通过寄存器间接寻址的方式访问程序空间和数据空间时,接收硬件检测电路发送的控制信号,取消当前指令的执行并保存当前指令的PC的取值;将当前指令的PC修改为页面切换处理程序所在的起始地址,并将送往地址总线的访问信号无效掉;之后,准备执行页面切换处理程序;将取值等于不匹配地址的PC压入堆栈作为返回现场使用的程序指针,从外部存储器中将将要访问的数据或指令更新到程序RAM当中,并将当前页面寄存器的值更新为所述将要访问的数据或指令所在页面的页面号码;
返回单元,用于在页面切换处理程序结束后,将程序计数器的值修改回记录的发现页面不匹配时的程序计数器的值,并通知所述硬件检测电路继续进行判断。
由上述的技术方案可见,本发明提供的内存访问方法和装置,通过在需要页面切换的时候首先记录用于在页面切换完成后返回现场的地址,而在页面切换过程中则将将要访问的数据或指令更新到程序RAM当中,并将当前页面寄存器的值更新为所述将要访问的数据或指令所在页面的页面号码,最后再利用记录的地址返回现场,能够有效避免现有技术中对每一次页面切换都需要分别设置切换代码的问题,减小了页面切换代码的大小,降低了对RAM大小的要求,同时由于对各种页面切换提供了统一的接口,使得软件设计人员可以不必关心页面切换的具体实现细节,从而显著降低了程序的编写设计难度和调试复杂度。
附图说明
图1为现有技术中Bank Switch模式下可执行代码在RAM中的存储方式示意图。
图2为本发明实施例中内存访问方法的流程示意图。
图3为本发明实施例中内存访问装置的组成结构示意图。
具体实施方式
为使本发明的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
为了便于说明,下面以支持8M字节的程序空间和8M字节的数据空间的CPU为例,其中,数据空间的地址范围是00:0000h~7f:ffffh,程序空间的地址范围是80:0000h~FF:FFFFH,把地址范围从00:0000h~FF:FFFFH的空间等分成256个大小为64KB的页面,其中页面号码为0ffh的页面,其对应的地址范围是0ff0000h~0ffffffh,可以看出,该页面刚好是程序空间中的最后一页。
对于程序空间而言,CPU当前使用的页面称之为程序RAM,为了标识程序RAM在程序空间中的位置,可以通过定义程序RAM的页面号码来实现,其默认值通常设置为FFh;另一方面,为了对当前在程序RAM中执行的可执行代码或对当前在程序RAM中使用的数据所在的原始页面进行标识,可以通过定义当前页面寄存器来实现,所述当前页面寄存器的值表示的就是当前在程序RAM中执行的可执行代码所在的原始页面的页面号码,其默认值通常同样设置为FFh;或者,所述当前页面寄存器的值表示的是当前在程序RAM中使用的数据所在的原始页面的页面号码,其默认值则通常设置为00h;
当系统上电或复位时,程序RAM加载芯片外部存储器中的程序,为了保证系统能够正常运行,此时所述程序RAM的当前页面寄存器的默认值对应的页面中需要存储至少包括那些不需要进行页面切换的程序,包括系统中基本的、全局性的代码——例如用于变量初始化的代码、中断服务代码,通常将其统称为公共代码或公共程序。在本发明实施例中,为了便于说明,假设所述第一部分的公用程序放置在FFh页面,因此需要将所述程序RAM的默认页面号设置为FFh,以保证程序RAM能够加载这些公用程序开始正常工作,同时,程序RAM的当前页面寄存器的默认值也设置为FFh,因为此时程序RAM中执行的可执行代码所在的原始页面同样为FFh。根据上述描述容易理解,所述程序RAM的默认页面号和当前页面寄存器的默认值还可以根据系统或设计者的要求进行修改,并不一定必须设置为FFh。
当CPU开始正常工作后,其通过24位的地址总线对程序/数据空间进行访问,该24位的地址总线的取值由CPU使用的程序计数器(ProgramCounter,PC)确定,其中,所述24位地址线的高8位表示的是CPU将要访问的数据或指令(即下一时刻将要访问的数据或指令)所在的页面号码,而根据前文所述,当前页面寄存器的值(同样也是8位)表示的则是CPU当前访问的数据或指令所在的页面号码。当CPU访问数据或指令时,需要判断其将要访问的数据或指令与CPU当前正在访问的数据或指令是否在同一页面。显然,当所述PC的高8位与当前页面寄存器的值相同时,表示CPU将要访问的数据或指令所在的页面与当前页面相同——即CPU将要访问的数据或指令位于当前页面;而当所述PC的高8位与当前页面寄存器的值不同时,则表示CPU将要访问的数据或指令所在的页面与当前页面不同——即CPU将要访问的数据或指令并不位于当前页面。
当CPU将要访问的指令位于当前页面时,表示CPU将要访问的是公共代码/公共程序,或者CPU将要访问的代码本身就位于FFh页面;相关问题不属于本发明讨论的范畴,不再详细分析;而当CPU将要访问的数据或指令不在当前页面时,意味着此时需要进行页面切换——即,需要将CPU将要访问的数据或指令更新到程序RAM当中。由于CPU可以通过直接取指的方式访问程序空间,也可以通过寄存器间接寻址的方式访问程序空间和数据空间,且两种方式下工作过程存在一定的差异,因此下面将分别详细进行介绍:
A、若CPU通过直接取指的方式访问程序空间,且需要页面切换时;
此时,当所述PC的高8位与当前页面寄存器的值不同时,CPU的指令不再从程序RAM中获得,而是通过预先设计的硬件触发电路直接送给CPU一个触发其进行页面切换的控制指令,用于使CPU跳转到页面切换处理程序的起始地址处,具体实现时可以是类似软件中断的控制指令或者类似程序调用的控制指令,两者的区别是:类似软件中断的指令会使CPU进入中断响应,中断响应时硬件将会自动完成对当前PC的压栈,然后再跳转到页面切换处理程序的起始地址处;而类似程序调用的指令则会使CPU进入程序调用,该过程中需要通过人为设定来使硬件完成对当前PC的压栈,然后再跳转到页面切换处理程序的起始地址。
根据CPU的工作原理,由于CPU通常采用预取指令的方式进行工作,因此,当所述硬件触发电路将页面切换指令送入CPU之后,该指令通常并不会立即被执行,而是作为预取指令在CPU缓存中进行排队;而由于CPU的预取方式,有时已经取入CPU的指令会因为CPU执行之前的指令而发生跳转,导致之后的预取指令没有被执行,因此只有当该页面切换指令实际被CPU执行到的时候,才真正开始页面切换的流程。
当CPU执行到页面切换指令时,产生进行页面切换的控制信号,首先将当前的PC压入堆栈,并将此时PC高8位所表示的页面号作为新页面号进行保存;之后,将跳转到页面切换代码的入口处准备执行页面切换处理程序;
需要说明的是,此时的PC值应当等于页面切换处理程序起始处的地址;此外,所述的页面切换处理程序是本发明实施例预先设定的用于进行页面切换的一段代码指令,该代码指令同时还是不需要进行页面切换就能够执行的公共代码,其既可以固化在芯片ROM中供CPU在需要的时候随时进行调用,也可以放置在FF页面的公用段——即,其程序入口可以灵活地由设计者根据需要自由定义。
接下来,CPU开始执行页面切换处理程序,需要说明的是,由于所述页面切换处理程序是通过中断指令或程序调用指令跳转进行执行的一段代码,因此为了保证在执行完所述处理程序后能够顺利返回CPU出现跳转的位置(该位置由开始执行页面切换处理程序时的PC值确定,为了便于描述,下文中将该位置称为不匹配地址)继续后续流程,就需要在触发CPU进行页面切换时记录下此时的不匹配地址,因此,执行页面切换处理程序的流程包括:
将堆栈中的PC的取值修改为不匹配地址;此时,PC的取值表示的是执行完页面切换处理流程后返回的地址;
从外部存储器中将将要取指的代码更新到程序RAM当中,并将当前页面寄存器的值更新为所述保存的新页面号;
结束页面切换处理程序,按照PC的取值返回到所述不匹配地址,CPU继续执行所述判断其将要访问的数据或指令与当前正在访问的数据或指令是否在同一页面的步骤。
显然,由于此时CPU将要访问的代码已经更新到程序RAM当中,且当前页面寄存器的值也已经更新为所述将要取指的代码所在页面的页面号码,因此此时PC高8位的值与当前页面寄存器的值必定相同——即,需要的页面切换已经成功完成。
B、若CPU通过寄存器间接寻址的方式访问程序空间和数据空间,且需要页面切换时;
此时,当所述PC的高8位与当前页面寄存器的值不同时,CPU的指令和数据不再从程序RAM中获得,而是通过预先设计的硬件触发电路直接送给CPU一个触发其进行页面切换的控制信号来将CPU当前执行的指令取消并切换到页面切换处理程序的入口位置处;因此,当CPU接到进行页面切换的控制信号后,首先取消当前指令的执行,之后,一方面,将当前指令(即所述被取消执行的指令)的PC的取值进行保存;另一方面,将当前指令的PC修改为页面切换处理程序的起始地址,再将送往总线的访问信号无效掉,准备执行页面切换处理程序;
接下来,CPU开始执行页面切换处理程序,与前文所述相同,为了保证在执行完所述处理程序后能够顺利返回以继续后续流程,需要在触发CPU进行页面切换时记录下此时的不匹配地址(也就是被取消执行的指令所在的地址),因此,此时执行页面切换处理程序的流程包括:
将表示返回地址的PC压入堆栈,且PC的取值等于不匹配地址;从外部存储器中将将要访问的数据或指令更新到程序RAM当中,并将当前页面寄存器的值更新为所述将要访问的数据或指令所在页面的页面号码,容易理解,此时可以根据保存的当前指令的PC的高8位获得更新后的当前页面寄存器的取值;
最后,结束页面切换处理程序,按照堆栈中PC的取值返回到页面切换处理程序开始前的地址(即所述不匹配地址),CPU重新执行被取消的指令,并进行所述判断其将要访问的数据或指令与当前正在访问的数据或指令是否在同一页面的步骤。
显然,由于此时CPU将要访问的代码已经更新到程序RAM当中,且当前页面寄存器的值也已经更新为所述将要访问的数据或指令所在页面的页面号码,因此此时PC高8位的值与当前页面寄存器的值必定相同——即,需要的页面切换已经成功完成。
在上述说明的基础上,本发明实施例提供一种内存访问方法,其流程如图2所示,其中包括:
步骤201:通过预设的硬件检测电路判断CPU将要访问的数据或指令与CPU当前正在访问的数据或指令是否在同一页面,如果不在同一页面,触发CPU的页面切换机制,并同时记录发现页面不匹配时的程序计数器的值;
步骤202:CPU进行页面切换时,保存将要访问的数据或指令所在的页面号码,开始执行页面切换处理程序;
步骤203:根据记录的不匹配地址设置返回现场使用的程序指针,从外部存储器中将将要访问的数据或指令更新到程序RAM当中,并将当前页面寄存器的值更新为保存的页面号码;
步骤204:结束页面切换处理程序,将程序计数器的值修改回记录的所述发现页面不匹配时的程序计数器的值,并返回继续执行步骤201。
其中,步骤201中所述判断CPU将要访问的数据或指令与CPU当前正在访问的数据或指令是否在同一页面的方法包括:
判断程序计数器的高8位与当前页面寄存器的值是否相同,所述当前页面寄存器的值表示CPU当前访问的数据或指令所在的页面号码;
如果相同,则所述CPU将要访问的数据或指令与当前正在访问的数据或指令在同一页面;如果不同,则不在同一页面。
根据前文中A部分的说明,当CPU采用直接取指的方式访问程序空间时,所述触发CPU的页面切换机制的方法包括:
硬件检测电路将页面切换指令作为CPU的预取指令送入CPU,当CPU执行到该指令时产生进行页面切换的控制信号,开始页面切换;
相应地,此时所述步骤202~203的方法具体包括:
CPU将当前的程序计数器压入堆栈,并将此时程序计数器的高8位所表示的页面号作为新页面号进行保存;之后,准备执行页面切换处理程序;
将堆栈中程序计数器的取值修改为不匹配地址,作为返回现场使用的程序指针,从外部存储器中将将要取指的代码更新到程序RAM当中,并将当前页面寄存器的值更新为所述保存的新页面号。
此外,根据前文中B部分的说明,若CPU采用通过寄存器间接寻址的方式访问程序空间和数据空间时,所述触发CPU的页面切换机制的方法则为:硬件检测电路直接向CPU发送进行页面切换的控制信号;
此时,所述步骤202~203的方法则具体包括:
CPU接到进行页面切换的控制信号后,取消当前指令的执行并保存当前指令的PC的取值;将当前指令的PC修改为页面切换处理程序所在的起始地址,并将送往地址总线的访问信号无效掉;之后,准备执行页面切换处理程序;
将取值等于不匹配地址的PC压入堆栈作为返回现场使用的程序指针,从外部存储器中将将要访问的数据或指令更新到程序RAM当中,并将当前页面寄存器的值更新为所述将要访问的数据或指令所在页面的页面号码。
此外,与所述内存访问方法对应,本发明实施例还提供一种内存访问装置,该装置的组成结构如图3所示,其中包括:硬件检测电路310和CPU320;
硬件检测电路310,用于判断CPU320将要访问的数据或指令与CPU320当前正在访问的数据或指令是否在同一页面,如果不在同一页面,触发CPU320的页面切换机制,并同时记录发现页面不匹配时的程序计数器的值;
CPU320,用于在进行页面切换时,保存将要访问的数据或指令所在的页面号码至页面寄存器中,开始执行页面切换处理程序,所述页面切换处理程序包括根据记录的不匹配地址设置返回现场使用的程序指针,从外部存储器中将将要访问的数据或指令更新到程序RAM当中,并将当前页面寄存器的值更新为保存的页面号码;之后,结束页面切换处理程序,将程序计数器的值修改回记录的发现页面不匹配时的程序计数器的值,并通知所述硬件检测电路310继续进行判断。
其中,所述硬件检测电路310包括:
判断单元311,用于将CPU320访问的地址空间等分成2N个页面,N为大于0的整数且N小于CPU320的寻址的位宽M,M为大于0的整数,其中,M的高N位表示页面号码,低(M-N)位为页面内的地址;判断程序计数器的高N位与当前页面寄存器的值是否相同,所述当前页面寄存器的值表示CPU320当前访问的数据或指令所在的页面号码;如果相同,则所述CPU320将要访问的数据或指令与当前正在访问的数据或指令在同一页面;如果不同,则不在同一页面。
较佳地,所述硬件检测电路310还进一步包括:
页面切换触发单元312,用于在CPU320采用直接取指的方式访问程序空间时,将页面切换指令作为CPU320的预取指令送入CPU320,当CPU320执行到该指令时产生进行页面切换的控制信号,开始页面切换;还用于在CPU320通过寄存器间接寻址的方式访问程序空间和数据空间时,直接向CPU320发送进行页面切换的控制信号。
另一方面,所述CPU320则包括:页面切换执行单元321和返回单元322;
页面切换执行单元321,用于在当CPU320采用直接取指的方式访问程序空间时,将当前的程序计数器压入堆栈,并将此时程序计数器的高N位所表示的页面号作为新页面号进行保存;之后,准备执行页面切换处理程序;将堆栈中程序计数器的取值修改为不匹配地址,作为返回现场使用的程序指针,从外部存储器中将将要取指的代码更新到程序RAM当中,并将当前页面寄存器的值更新为所述保存的新页面号;还用于在当CPU320通过寄存器间接寻址的方式访问程序空间和数据空间时,接收硬件检测电路310发送的控制信号,取消当前指令的执行并保存当前指令的PC的取值;将当前指令的PC修改为页面切换处理程序所在的起始地址,并将送往地址总线的访问信号无效掉;之后,准备执行页面切换处理程序;将取值等于不匹配地址的PC压入堆栈作为返回现场使用的程序指针,从外部存储器中将将要访问的数据或指令更新到程序RAM当中,并将当前页面寄存器的值更新为所述将要访问的数据或指令所在页面的页面号码;
返回单元322,用于在页面切换处理程序结束后,将程序计数器的值修改回记录的发现页面不匹配时的程序计数器的值,并通知所述硬件检测电路310继续进行判断。
可见,本发明实施例提供的内存访问方法和装置,采用硬件辅助进行页面切换的方法,通过在需要页面切换的时候首先记录用于在页面切换完成后返回现场的地址,而在页面切换过程中则将将要访问的数据或指令更新到程序RAM当中,并将当前页面寄存器的值更新为所述将要访问的数据或指令所在页面的页面号码,最后再利用记录的地址返回现场,能够有效避免现有技术中对每一次页面切换都需要分别设置切换代码的问题,减小了页面切换代码的大小,降低了对RAM大小的要求,同时由于对各种页面切换提供了统一的接口,使得软件设计人员可以不必关心页面切换的具体实现细节,从而显著降低了程序的编写设计难度和调试复杂度。
以上所述,仅是本发明所列举实施例而已,并不能用以限定本发明,本领域的技术人员显然可以在不脱离本发明的精神或范围内进行适当的修改和变化。

Claims (11)

1.一种内存访问方法,其特征在于,该方法包括:
步骤A、通过预设的硬件检测电路判断CPU将要访问的数据或指令与CPU当前正在访问的数据或指令是否在同一页面,如果不在同一页面,触发CPU的页面切换机制,并同时记录发现页面不匹配时的程序计数器的值;
步骤B、CPU进行页面切换时,保存将要访问的数据或指令所在的页面号码至页面寄存器中,开始执行页面切换处理程序,所述页面切换处理程序包括根据记录的不匹配地址设置返回现场使用的程序指针,从外部存储器中将将要访问的数据或指令更新到程序RAM当中,并将当前页面寄存器的值更新为保存的页面号码;
步骤C、结束页面切换处理程序,将程序计数器的值修改回记录的所述发现页面不匹配时的程序计数器的值,并返回继续执行步骤A。
2.根据权利要求1所述的方法,其特征在于,所述判断CPU将要访问的数据或指令与CPU当前正在访问的数据或指令是否在同一页面的方法包括:
将CPU访问的地址空间等分成2N个页面,N为大于0的整数且N小于CPU的寻址的位宽M,M为大于0的整数,其中,M的高N位表示页面号码,低(M-N)位为页面内的地址;
判断程序计数器的高N位与当前页面寄存器的值是否相同,所述当前页面寄存器的值表示CPU当前访问的数据或指令所在的页面号码;
如果相同,则所述CPU将要访问的数据或指令与当前正在访问的数据或指令在同一页面;如果不同,则不在同一页面。
3.根据权利要求2所述的方法,其特征在于,若CPU采用直接取指的方式访问程序空间,所述触发CPU的页面切换机制的方法包括:
硬件检测电路将页面切换指令作为CPU的预取指令送入CPU,当CPU执行到该指令时产生进行页面切换的控制信号,开始页面切换。
4.根据权利要求3所述的方法,其特征在于,所述CPU进行页面切换时,保存将要访问的数据或指令所在的页面号码,开始执行页面切换处理程序;根据记录的不匹配地址设置返回现场使用的程序指针,从外部存储器中将将要访问的指令更新到程序RAM当中,并将当前页面寄存器的值更新为保存的页面号码的方法包括:
CPU将当前的程序计数器压入堆栈,并将此时程序计数器的高N位所表示的页面号作为新页面号进行保存;之后,准备执行页面切换处理程序;
将堆栈中程序计数器的取值修改为不匹配地址,作为返回现场使用的程序指针,从外部存储器中将将要取指的代码更新到程序RAM当中,并将当前页面寄存器的值更新为所述保存的新页面号。
5.根据权利要求2所述的方法,其特征在于,若CPU通过寄存器间接寻址的方式访问程序空间和数据空间,所述触发CPU的页面切换机制的方法包括:硬件检测电路直接向CPU发送进行页面切换的控制信号。
6.根据权利要求5所述的方法,其特征在于,所述CPU进行页面切换时,保存CPU将要访问的数据或指令所在的页面号码,开始执行页面切换处理程序;根据记录的不匹配地址设置返回现场使用的程序指针,从外部存储器中将将要访问的数据或指令更新到程序RAM当中,并将当前页面寄存器的值更新为保存的页面号码的方法包括:
CPU接到硬件检测电路发送的控制信号后,取消当前指令的执行并保存当前指令的PC的取值;将当前指令的PC修改为页面切换处理程序所在的起始地址,并将送往地址总线的访问信号无效掉;之后,准备执行页面切换处理程序;
将取值等于不匹配地址的PC压入堆栈作为返回现场使用的程序指针,从外部存储器中将将要访问的数据或指令更新到程序RAM当中,并将当前页面寄存器的值更新为所述将要访问的数据或指令所在页面的页面号码。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述页面切换处理程序常驻内存且放置在程序空间默认页面的公用段当中,供CPU在需要的时候随时调用。
8.一种内存访问装置,其特征在于,该装置包括:
硬件检测电路,用于判断CPU将要访问的数据或指令与CPU当前正在访问的数据或指令是否在同一页面,如果不在同一页面,触发CPU的页面切换机制,并同时记录发现页面不匹配时的程序计数器的值;
CPU,用于在进行页面切换时,保存将要访问的数据或指令所在的页面号码至页面寄存器中,开始执行页面切换处理程序,所述页面切换处理程序包括根据记录的不匹配地址设置返回现场使用的程序指针,从外部存储器中将将要访问的数据或指令更新到程序RAM当中,并将当前页面寄存器的值更新为保存的页面号码;之后,结束页面切换处理程序,将程序计数器的值修改回记录的所述发现页面不匹配时的程序计数器的值,并通知所述硬件检测电路继续进行判断。
9.根据权利要求8所述的装置,其特征在于,所述硬件检测电路包括:
判断单元,用于将CPU访问的地址空间等分成2N个页面,N为大于0的整数且N小于CPU的寻址的位宽M,M为大于0的整数,其中,M的高N位表示页面号码,低(M-N)位为页面内的地址;判断程序计数器的高N位与当前页面寄存器的值是否相同,所述当前页面寄存器的值表示CPU当前访问的数据或指令所在的页面号码;如果相同,则所述CPU将要访问的数据或指令与当前正在访问的数据或指令在同一页面;如果不同,则不在同一页面。
10.根据权利要求9所述的装置,其特征在于,所述硬件检测电路还包括:
页面切换触发单元,用于在CPU采用直接取指的方式访问程序空间时,将页面切换指令作为CPU的预取指令送入CPU,当CPU执行到该指令时产生进行页面切换的控制信号,开始页面切换;还用于在CPU通过寄存器间接寻址的方式访问程序空间和数据空间时,直接向CPU发送进行页面切换的控制信号。
11.根据权利要求10所述的装置,其特征在于,所述CPU包括:
页面切换执行单元,用于在当CPU采用直接取指的方式访问程序空间时,将当前的程序计数器压入堆栈,并将此时程序计数器的高N位所表示的页面号作为新页面号进行保存;之后,准备执行页面切换处理程序;将堆栈中程序计数器的取值修改为不匹配地址,作为返回现场使用的程序指针,从外部存储器中将将要取指的代码更新到程序RAM当中,并将当前页面寄存器的值更新为所述保存的新页面号;还用于在当CPU通过寄存器间接寻址的方式访问程序空间和数据空间时,接收硬件检测电路发送的控制信号,取消当前指令的执行并保存当前指令的PC的取值;将当前指令的PC修改为页面切换处理程序所在的起始地址,并将送往地址总线的访问信号无效掉;之后,准备执行页面切换处理程序;将取值等于不匹配地址的PC压入堆栈作为返回现场使用的程序指针,从外部存储器中将将要访问的数据或指令更新到程序RAM当中,并将当前页面寄存器的值更新为所述将要访问的数据或指令所在页面的页面号码;
返回单元,用于在页面切换处理程序结束后,将程序计数器的值修改回记录的发现页面不匹配时的程序计数器的值,并通知所述硬件检测电路继续进行判断。
CN2010101933775A 2010-06-01 2010-06-01 一种内存访问方法和装置 Active CN102270181B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010101933775A CN102270181B (zh) 2010-06-01 2010-06-01 一种内存访问方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010101933775A CN102270181B (zh) 2010-06-01 2010-06-01 一种内存访问方法和装置

Publications (2)

Publication Number Publication Date
CN102270181A true CN102270181A (zh) 2011-12-07
CN102270181B CN102270181B (zh) 2013-10-02

Family

ID=45052489

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010101933775A Active CN102270181B (zh) 2010-06-01 2010-06-01 一种内存访问方法和装置

Country Status (1)

Country Link
CN (1) CN102270181B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016134641A1 (en) * 2015-02-23 2016-09-01 Huawei Technologies Co., Ltd. On-demand loading of dynamic scripting language code for reduced memory usage
CN103631648B (zh) * 2012-08-20 2017-02-22 华为技术有限公司 一种任务处理方法及系统
CN110622096A (zh) * 2017-06-23 2019-12-27 日立汽车系统株式会社 电子控制装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1445660A (zh) * 2003-04-15 2003-10-01 威盛电子股份有限公司 显示控制器读取系统存储器中的存储数据的方法
CN1779662A (zh) * 2004-11-24 2006-05-31 中国科学院计算技术研究所 改进的虚拟地址变换方法及其装置
CN101078979A (zh) * 2007-06-29 2007-11-28 东南大学 具有多通道指令预取功能的存储控制电路
US20100064101A1 (en) * 2000-08-21 2010-03-11 Hitachi, Ltd. Memory controller and data processing system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100064101A1 (en) * 2000-08-21 2010-03-11 Hitachi, Ltd. Memory controller and data processing system
CN1445660A (zh) * 2003-04-15 2003-10-01 威盛电子股份有限公司 显示控制器读取系统存储器中的存储数据的方法
CN1779662A (zh) * 2004-11-24 2006-05-31 中国科学院计算技术研究所 改进的虚拟地址变换方法及其装置
CN101078979A (zh) * 2007-06-29 2007-11-28 东南大学 具有多通道指令预取功能的存储控制电路

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103631648B (zh) * 2012-08-20 2017-02-22 华为技术有限公司 一种任务处理方法及系统
WO2016134641A1 (en) * 2015-02-23 2016-09-01 Huawei Technologies Co., Ltd. On-demand loading of dynamic scripting language code for reduced memory usage
CN106796525A (zh) * 2015-02-23 2017-05-31 华为技术有限公司 按需加载动态脚本语言代码以减少内存使用
US9772865B2 (en) 2015-02-23 2017-09-26 Futurewei Technologies, Inc. On-demand loading of dynamic scripting language code for reduced memory usage
CN106796525B (zh) * 2015-02-23 2019-11-19 华为技术有限公司 按需加载动态脚本语言代码以减少内存使用
CN110622096A (zh) * 2017-06-23 2019-12-27 日立汽车系统株式会社 电子控制装置

Also Published As

Publication number Publication date
CN102270181B (zh) 2013-10-02

Similar Documents

Publication Publication Date Title
EP2510444B1 (en) Hierarchical translation tables control
CN106354524B (zh) 实时更新固件的系统和方法
KR20150129692A (ko) 멀티 부트 디바이스들용 부트 시퀀싱
EP2318933B1 (en) Method for updating data in memories using a memory management unit
US20130036426A1 (en) Information processing device and task switching method
CN105512054B (zh) 主机接口控制器以及储存装置控制方法
KR20170141205A (ko) Dsp 엔진 및 향상된 컨텍스트 스위치 기능부를 구비한 중앙 처리 유닛
CN117421259A (zh) 用飞行中预取服务于cpu需求请求
DE102013202995A1 (de) Energieeinsparung in Verzweigungsvorhersagen
DE102013202992A1 (de) Energieeinsparung bei Verzweigungsvorhersage
CN102270181B (zh) 一种内存访问方法和装置
US6564283B1 (en) Data processing system for expanded addresses
EP3830719B1 (en) Binary search procedure for control table stored in memory system
EP0531123B1 (en) A dynamic address translation processing apparatus in a data processing system
US20070061627A1 (en) Debugging system and method
JP5007868B2 (ja) プロセッサメモリシステム
US5404471A (en) Method and apparatus for switching address generation modes in CPU having plural address generation modes
US7934073B2 (en) Method for performing jump and translation state change at the same time
CN114047952B (zh) 用于单片机的处理器、方法、单片机和存储介质
US10031862B2 (en) Memory protection unit, memory management unit, and microcontroller
CN105608020B (zh) 主机接口控制器以及储存装置控制方法
US20040148464A1 (en) Cache memory device and method of controlling the cache memory device
JP4148854B2 (ja) リアルタイム制御システム
KR100870175B1 (ko) 에이알엠7 계열 마이크로 컨트롤러에서의 콘텍스트 스위치방법
JPH01237732A (ja) 制御装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: JUXIN(ZHUHAI) TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: JULI INTEGRATED CIRCUIT DESIGN CO., LTD.

Effective date: 20141215

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20141215

Address after: 519085, C, No. 1, No. four, 1 hi tech Zone, Tang Wan Town, Guangdong, Zhuhai

Patentee after: ACTIONS (ZHUHAI) TECHNOLOGY Co.,Ltd.

Address before: 519085 No. 1, unit 15, building 1, 1 Da Ha Road, Tang Wan Town, Guangdong, Zhuhai

Patentee before: Juli Integrated Circuit Design Co., Ltd.

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 519085 High-tech Zone, Tangjiawan Town, Zhuhai City, Guangdong Province

Patentee after: ACTIONS TECHNOLOGY Co.,Ltd.

Address before: 519085 High-tech Zone, Tangjiawan Town, Zhuhai City, Guangdong Province

Patentee before: ACTIONS (ZHUHAI) TECHNOLOGY Co.,Ltd.