一种嵌入式处理器的存储空间模拟方法

文档序号:6442504阅读:160来源:国知局

专利名称::一种嵌入式处理器的存储空间模拟方法
技术领域
:本发明涉及一种嵌入式处理器的存储空间模拟方法,属于嵌入式芯片模拟领域。
背景技术
:在设计空间飞行器计算机系统软件时,传统的设计过程是在硬件目标运行平台上进行运行调试和测试,该种方法存在对硬件的过度依赖,并且操作复杂和耗时,为解决这些问题,宜采用基于软件的模拟环境进行嵌入式系统软件的设计与开发。在模拟环境中为了模拟处理器的完整存储空间,针对不同的地址范围,通常采用静态模拟或者动态模拟方法,动态模拟方法开销低,但效率无法保证,静态模拟方法效率高但开销较大。
发明内容本发明的技术解决问题是克服现有技术的不足,提供了一种嵌入式处理器的存储空间模拟方法,该方法可以模拟嵌入式处理器的完整存储空间,针对不同的地址范围,采用了静态模拟和动态模拟相结合的混合模拟方法,实现了一种效率高、开销低的大容量存储空间模拟机制。本发明的技术解决方案是一种嵌入式处理器的存储空间模拟方法,步骤如下(1)在内存中开辟存储空间,之后将开辟出的存储空间划分为多个存储页,每个存储页的大小为预设的固定值;(2)在内存中构建一个页表的数据结构,所述页表的数据结构是一个多级链表,每一级链表中包含一个页表头和多个页表项,页表项与步骤(1)中划分出来的存储页一一对应,每个页表项包含两部分,一部分为其所对应的存储页的标签信息,另一部分为指向下一个页表项的指针;(3)在基于步骤⑴和步骤(2)所构建的结构上,进行内存访问。所述内存访问包括读操作,具体通过如下步骤进行(2.1)将所述嵌入式处理器待访问的地址所在的存储页映射到对应的页表头,之后判断该页表头是否为空,若所述页表头为空,则表示没有与该页表头匹配的页表项,从而无法建立存储页和页表头之间的对应关系,返回0作为读操作的结果;若不为空,则进入步骤(2.2);(2.2)根据页表头获取该页表头所在的链表的第一个页表项,之后判断所述第一个页表项是否与待访问地址所在的存储页一致,若一致,则表示所述待访问地址所在的存储页之前被访问过,即从页表头到存储页之间的对应关系已经建立,则直接获取待访问地址所在存储页中的数据作为读操作的结果;若不一致,则进入步骤(2.3);(2.3)根据当前页表项中的指向下一个页表项的指针,获得下一个页表项,之后判断该页表项是否为空,若所述页表项为空,则表示没有与该页表项匹配的存储页,从而无法建立存储页和页表项之间的对应关系,返回0作为读操作的结果;若不为空,则进入步骤(2.4);(2.4)判断所述当前页表项是否与待访问地址所在的存储页一致,若一致,则表示所述待访问地址所在的存储页之前被访问过,即从当前页表项到存储页之间的对应关系已经建立,则直接获取待访问地址所在存储页中的数据作为读操作的结果;若不一致,则返回步骤(2.3)。所述内存访问包括写操作,具体通过如下步骤进行(3.1)将所述嵌入式处理器待访问的地址所在的存储页映射到对应的页表头,之后判断该页表头是否为空,若所述页表头为空,则表示没有与该页表头匹配的页表项,未建立存储页和页表头之间的对应关系,之后在内存中申请新的空间作为存储页,并且在该页表头所在的链表中增加相应的页表项,使得所述该页表头、增加的页表项和新申请的存储页形成映射关系,之后将写操作待写入的数据存入所述新申请的存储页中;若不为空,则进入步骤(3.2);(3.2)根据页表头获取该页表头所在的链表的第一个页表项,之后判断所述第一个页表项是否与待访问地址所在的存储页一致,若一致,则表示所述待访问地址所在的存储页之前被访问过,即从页表头到存储页之间的对应关系已经建立,则直接将写操作待写入的数据写入待访问地址所在存储页中;若不一致,则进入步骤(3.3);(3.3)根据当前页表项中的指向下一个页表项的指针,获得下一个页表项,之后判断该页表项是否为空,若所述页表项为空,则表示没有与该页表项匹配的存储页,未建立存储页和页表项之间的对应关系,之后在内存中申请新的空间作为存储页,并且在链表中增加相应的页表项,使得增加的页表项和新申请的存储页形成映射关系,之后将写操作待写入的数据存入所述新申请的存储页中;若不为空,则进入步骤(3.4);(3.4)判断所述当前页表项是否与待访问地址所在的存储页一致,若一致,则表示所述待访问地址所在的存储页之前被访问过,即从当前页表项到存储页之间的对应关系已经建立,则直接将写操作待写入的数据写入待访问地址所在存储页中;若不一致,则返回步骤(3.3)。所述页表项为空是指该页表项中的标签信息和指向下一个页表项的指针均为空。本发明与现有技术相比具有如下优点1)为了降低模拟开销,本发明中存储空间主要采用动态模拟的方法,具体来讲,主要使用分页的方法来模拟大容量的存储空间,只对那些真正访问到了的存储空间进行模拟,从而减少了模拟所需的空间大小;2)为了提高模拟空间访问效率,针对常用的地址空间采用了静态的直接模拟,减少了模拟空间访问过程中的转换操作,从而提高了模拟速度。图1为本发明原理图;图2为动态存储空间模拟机制下的读操作过程流程图;图3为动态存储空间模拟机制下的写操作过程流程具体实施例方式本发明提供了一种嵌入式处理器的存储空间模拟方法,步骤如下(1)在内存中开辟存储空间,之后将开辟出的存储空间划分为多个固定大小的存储页(memorypage),每个存储页的大小为预设的固定值;每个页的大小可以自由设定,实际使用中可以设定在1KB1MB的大小范围,比如,当设定为4KB大小时,4GB的存储空间就可以划分为IM个存储页。(2)在内存中构建一个页表的数据结构(pagetable),页表中包含若干项,具体的项数记为MEM_PTAB_SIZE,其大小可以根据实际情况来设定,比如对于AT697的存储空间来说,我们可以设定为IK64K项即可比较好的满足需要。所述页表的数据结构是一个多级链表,每一级链表中包含一个页表头和多个页表项,pagetable中的表项只需要记录每个页表项链表的头(pte_h),链表中每一项都对应一个具体的页表项(Pte),页表项与步骤(1)中划分出来的存储页一一对应,每个页表项包含两部分,一部分为其所对应的存储页的标签信息(Tag信息),Tag信息用来和本次访问的物理地址进行比对,以判断是否对应该存储页;另一部分为指向下一个页表项的指针;MEM_PTAB_SIZE较小时,可能存在多个存储页映射到pagetable中的同一项,因此,对于每一项,需要能够表示多个存储页(可以使用地址的高位来实现存储页到pagetable每项之间的影射)(3)在基于步骤(1)和步骤(2)所构建的结构上,进行内存访问。每次地址访问的过程如下首先,根据访问的物理地址的高位进行映射,在pagetable中找到对应的pte_h,然后,从链表头开始遍历整个链表,根据tag信息和访问地址进行比对,判断该链表中每个页表项是否对应该物理地址所在的页,如果比对成功,则成功找到对应存储页,然后再结合地址低位所表示的页内偏移量,在相应地址执行具体的读操作或者写操作,如果遍历链表后匹配不成功,则说明该页还没有被访问过,因此也还没有对其进行模拟,此时,我们分配一个新的模拟存储页,然后添加该页对应的页表项,并插入对应的链表中。可以看到,在初始阶段,所有的pte_h都为空,没有分配页表项,也即没有对任何的存储空间进行模拟,只有当检测到实际的地址访问操作之后,才会分配对应的存储页进行模拟。考虑到实际程序中用到的地址空间有限,这种模拟方法所需的空间开销很小内存访问包括读操作和写操作,如图2所示,读操作通过如下步骤进行(2.1)将所述嵌入式处理器待访问的地址映射到对应的某个pte_h中,映射方法为针对待访问地址的部分位进行直接映射,比如,假定存储页大小为1M,那么地址的低20位作为页内偏移地址,假定总共有64项的pte_h,那么需要8位索引,此时可以用地址的bit20-bit27作为索引位用于确定对应到哪个pte_h。pte_h中存在一个指针指向第一个页表项(pte),如果该pte_h还没有对应的pte,则pte_h指针为空,此时说明没有找到匹配的存储页,也即现在访问的页是第一次访问,对于读操作,直接返回0作为读到的值即可(相当于访问一个没有写过的内存地址,初始化值总是0)。之后判断该页表头是否为空,若所述页表头pte_h为空,则表示没有与该页表头匹配的页表项,从而无法建立存储页和页表头之间的对应关系,返回0作为读操作的结果;若不为空,则进入步骤(2.2);(2.2)如果pte_h不为空,则根据该指针获取第一个页表项(pte),并进行地址比对,如果地址匹配,则这个Pte对应的页就是我们要访问的页,也即该页之前访问过,因此在模拟器中有分配空间模拟该页,此时可以直接从Pte中读出该页对应的地址并根据地址的低20位的页内偏移读取到页内对应位置的数据。之后判断所述第一个页表项是否与待访问地址所在的存储页一致,若一致,则表示所述待访问地址所在的存储页之前被访问过,即从页表头到存储页之间的对应关系已经建立,则直接获取待访问地址所在存储页中的数据作为读操作的结果;若不一致,则进入步骤(2.3);(2.3)根据当前页表项中的指向下一个页表项的指针,获得下一个页表项,之后判断该页表项是否为空,若所述页表项为空,则表示没有与该页表项匹配的存储页,从而无法建立存储页和页表项之间的对应关系,返回0作为读操作的结果;若不为空,则进入步骤(2.4);所述页表项为空是指该页表项中的标签信息和指向下一个页表项的指针均为空。(2.4)判断所述当前页表项是否与待访问地址所在的存储页一致,若一致,则表示所述待访问地址所在的存储页之前被访问过,即从当前页表项到存储页之间的对应关系已经建立,则直接获取待访问地址所在存储页中的数据作为读操作的结果;若不一致,则返回步骤(2.3)。如图3所示,写操作的流程和读操作类似,区别的地方主要在于没有找到地址匹配的Pte项时的处理方法有所不同,读操作是直接返回0作为读到的值,而写操作则是需要在内存中分配地址空间来模拟这个新页,分配新的Pte项,并将其挂入对应的pte_h链表中。写操作通过如下步骤进行(3.1)将所述嵌入式处理器待访问的地址所在的存储页用2.1中同样的方法映射到对应的页表头,之后判断该页表头是否为空,若所述页表头为空,则表示没有与该页表头匹配的页表项,未建立存储页和页表头之间的对应关系,之后在内存中申请新的空间作为存储页,并且在该页表头所在的链表中增加相应的页表项,使得所述该页表头、增加的页表项和新申请的存储页形成映射关系,之后将写操作待写入的数据存入所述新申请的存储页中;若不为空,则进入步骤(3.2);(3.2)根据页表头获取该页表头所在的链表的第一个页表项,之后判断所述第一个页表项是否与待访问地址所在的存储页一致,若一致,则表示所述待访问地址所在的存储页之前被访问过,即从页表头到存储页之间的对应关系已经建立,则直接将写操作待写入的数据写入待访问地址所在存储页中;若不一致,则进入步骤(3.3);(3.3)根据当前页表项中的指向下一个页表项的指针,获得下一个页表项,之后判断该页表项是否为空,若所述页表项为空,则表示没有与该页表项匹配的存储页,未建立存储页和页表项之间的对应关系,之后在内存中申请新的空间作为存储页,并且在链表中增加相应的页表项,使得增加的页表项和新申请的存储页形成映射关系,之后将写操作待写入的数据存入所述新申请的存储页中;若不为空,则进入步骤(3.4);(3.4)判断所述当前页表项是否与待访问地址所在的存储页一致,若一致,则表示所述待访问地址所在的存储页之前被访问过,即从当前页表项到存储页之间的对应关系已经建立,则直接将写操作待写入的数据写入待访问地址所在存储页中;若不一致,则返回步骤(3.3)。上述过程为动态存储空间模拟机制下的访存操作执行流程,静态存储空间模拟机制下的访存操作执行流程有较大不同。在静态存储空间模拟机制下,地址是直接访问的,不经过页表转换,其执行流程简单很多。静态模拟的地址范围在模拟器中总是预先分配好空间进行直接模拟,每次读写访问时,直接从模拟存储空间中读出或者写入值即可,速度更快。此外,本描述采用的是一级页表的机制,在实际使用中,可以根据需要增加页表级数,比如对于地址空间更大的情况,可以采用两级甚至三级的页表机制进行模拟。本发明本专利中的存储空间方法具有开销小、效率高的特点,能够很好的对嵌入式处理器芯片进行模拟。本发明未详细说明部分属本领域技术人员公知常识。权利要求1.一种嵌入式处理器的存储空间模拟方法,其特征在于步骤如下(1)在内存中开辟存储空间,之后将开辟出的存储空间划分为多个存储页,每个存储页的大小为预设的固定值;(2)在内存中构建一个页表的数据结构,所述页表的数据结构是一个多级链表,每一级链表中包含一个页表头和多个页表项,页表项与步骤(1)中划分出来的存储页一一对应,每个页表项包含两部分,一部分为其所对应的存储页的标签信息,另一部分为指向下一个页表项的指针;(3)在基于步骤(1)和步骤(2)所构建的结构上,进行内存访问。2.根据权利要求1所述的一种嵌入式处理器的存储空间模拟方法,其特征在于所述内存访问包括读操作,具体通过如下步骤进行(2.1)将所述嵌入式处理器待访问的地址所在的存储页映射到对应的页表头,之后判断该页表头是否为空,若所述页表头为空,则表示没有与该页表头匹配的页表项,从而无法建立存储页和页表头之间的对应关系,返回0作为读操作的结果;若不为空,则进入步骤(2.2);(2.2)根据页表头获取该页表头所在的链表的第一个页表项,之后判断所述第一个页表项是否与待访问地址所在的存储页一致,若一致,则表示所述待访问地址所在的存储页之前被访问过,即从页表头到存储页之间的对应关系已经建立,则直接获取待访问地址所在存储页中的数据作为读操作的结果;若不一致,则进入步骤(2.3);(2.3)根据当前页表项中的指向下一个页表项的指针,获得下一个页表项,之后判断该页表项是否为空,若所述页表项为空,则表示没有与该页表项匹配的存储页,从而无法建立存储页和页表项之间的对应关系,返回0作为读操作的结果;若不为空,则进入步骤(2.4);(2.4)判断所述当前页表项是否与待访问地址所在的存储页一致,若一致,则表示所述待访问地址所在的存储页之前被访问过,即从当前页表项到存储页之间的对应关系已经建立,则直接获取待访问地址所在存储页中的数据作为读操作的结果;若不一致,则返回步骤(2.3)。3.根据权利要求1所述的一种嵌入式处理器的存储空间模拟方法,其特征在于所述内存访问包括写操作,具体通过如下步骤进行(3.1)将所述嵌入式处理器待访问的地址所在的存储页映射到对应的页表头,之后判断该页表头是否为空,若所述页表头为空,则表示没有与该页表头匹配的页表项,未建立存储页和页表头之间的对应关系,之后在内存中申请新的空间作为存储页,并且在该页表头所在的链表中增加相应的页表项,使得所述该页表头、增加的页表项和新申请的存储页形成映射关系,之后将写操作待写入的数据存入所述新申请的存储页中;若不为空,则进入步骤(3.2);(3.2)根据页表头获取该页表头所在的链表的第一个页表项,之后判断所述第一个页表项是否与待访问地址所在的存储页一致,若一致,则表示所述待访问地址所在的存储页之前被访问过,即从页表头到存储页之间的对应关系已经建立,则直接将写操作待写入的数据写入待访问地址所在存储页中;若不一致,则进入步骤(3.3);(3.3)根据当前页表项中的指向下一个页表项的指针,获得下一个页表项,之后判断该页表项是否为空,若所述页表项为空,则表示没有与该页表项匹配的存储页,未建立存储页和页表项之间的对应关系,之后在内存中申请新的空间作为存储页,并且在链表中增加相应的页表项,使得增加的页表项和新申请的存储页形成映射关系,之后将写操作待写入的数据存入所述新申请的存储页中;若不为空,则进入步骤(3.4);(3.4)判断所述当前页表项是否与待访问地址所在的存储页一致,若一致,则表示所述待访问地址所在的存储页之前被访问过,即从当前页表项到存储页之间的对应关系已经建立,则直接将写操作待写入的数据写入待访问地址所在存储页中;若不一致,则返回步骤(3.3)。4.根据权利要求1所述的一种嵌入式处理器的存储空间模拟方法,其特征在于所述页表项为空是指该页表项中的标签信息和指向下一个页表项的指针均为空。全文摘要一种嵌入式处理器的存储空间模拟方法,提供了嵌入式处理器的存储空间模拟方法。该方法可以模拟嵌入式处理器的完整存储空间,通过采用分页的方式来模拟大容量的完整存储空间,在分页机制下,只模拟程序中真正使用到的那部分存储空间,从而节省了模拟所需的空间开销;本方明针对不同的地址范围,采用静态模拟和动态模拟相结合的混合模拟方法,实现了一种效率高、开销低的大容量存储空间模拟机制。文档编号G06F9/455GK102541623SQ201110433239公开日2012年7月4日申请日期2011年12月20日优先权日2011年12月20日发明者乔磊,刘鸿瑾,吴一帆,吴军,彭飞,杨桦申请人:北京控制工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1