CN100399298C - 操作Linux内核页表加速模拟PowerPC体系结构的方法 - Google Patents
操作Linux内核页表加速模拟PowerPC体系结构的方法 Download PDFInfo
- Publication number
- CN100399298C CN100399298C CNB2005100609909A CN200510060990A CN100399298C CN 100399298 C CN100399298 C CN 100399298C CN B2005100609909 A CNB2005100609909 A CN B2005100609909A CN 200510060990 A CN200510060990 A CN 200510060990A CN 100399298 C CN100399298 C CN 100399298C
- Authority
- CN
- China
- Prior art keywords
- page
- page table
- kernel
- write
- read
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 16
- 230000003139 buffering effect Effects 0.000 claims abstract description 12
- 230000015572 biosynthetic process Effects 0.000 claims description 11
- 238000012544 monitoring process Methods 0.000 claims description 5
- 238000012545 processing Methods 0.000 claims description 3
- 238000004088 simulation Methods 0.000 abstract description 7
- 238000007726 management method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种操作Linux内核页表加速模拟PowerPC体系结构的方法。本发明方法通过截取对内核页表区域的读写操作,并将其进行缓冲队列管理,充分利用计算机科学中的时间,空间局部性的原理,对频繁的内核页表读写进行控制,提高***cache命中率,弥补了PPCLinux本身的缺憾,从而达到模拟效率的提高。
Description
技术领域
本发明涉及计算机虚拟技术,特别是涉及一种操作Linux内核页表加速模拟PowerPC体系结构的方法。
背景技术
随着嵌入式设备普及,例如个人数字助手(PDA),手机等,基于便携移动设备的应用大量涌现。而嵌入式设备上的应用程序一般都在与目标平台异构的机器环境下开发,而且嵌入式设备又非常的昂贵,因此采用软件仿真模拟是一种必要的手段。
计算机***模拟器技术是在某种架构的计算机中通过模拟目标架构计算机的硬件特征和其指令执行的过程,从而实现在一台计算机上虚拟出多台计算机的技术。流行的计算机***模拟器例如:Bochs,可以在多种体系结构的机器上模拟多台Intel 80×86体系的计算机,并运行Linux、freebsd等操作***的Intel80×86版本;armulator,可以在Intel 80×86体系结构的机器上模拟ARM体系的计算机,并运行ucLinux的ARM移植版本等。
为了在模拟器上高效的运行操作***,传统的全***模拟有一定的局限性,为了突破瓶颈,必然要采用部分虚拟技术,即从硬件的角度看,他知道运行其上的是那种操作***,并知晓这种操作***的一些特性和细节,从而进行优化管理,达到提高运行效率的目的。
PowerPC体系结构与传统的X86体系结构不同的一点是其采取的是虚页表,即硬件并不知道页表的格式,更不会去操作页表,。硬件只知道TLB的存在,而通过访问页表进行TLB的更新全部是软件行为。
操作***访问页表是一个特别频繁的过程,而对与Linux操作***,内核页表更是频繁被访问,因为所有进程进入内核态都采用同一个页表,因此采用传统的模拟方法必然会导致模拟效率的低下。
发明内容
本发明的目的在于提供一种操作Linux内核页表加速模拟PowerPC体系结构的方法,从硬件的角度对其进行管理和优化访问必然会提高模拟的效率。
所述方法是针对Linux操作***,从硬件的角度来管理PowerPC软页表的模拟技术,其具体步骤如下:
1)进入地址监控模块,对操作***的读写请求地址进行监控分发;当虚拟机侦测到对操作***内核页表所在物理地址的读写操作,则进入管理模块,执行步骤2),否则按一般的读写操作对待,不执行步骤2);
2)组织关于内核页表所在物理页的数据,根据读写请求的地址来判断其操作目标页是一级页表或是二级页表,从而进行读写模块的操作;
3)处理对内核页表的读和写操作;
处理读操作时,当所访问的页为脏时,将该页写操作队列中的请求完成;当读缓冲中含有所需的数据时,直接返回,否则进行被模拟操作***的访存操作;
处理写操作时,对内核页表页的写操作采取延后策略,对每个页表所在页维持一个写请求队列,当对应页的写请求到来时,首先将该页标志为脏页,然后将此请求加入该队列;
4)内核页表所在的物理页的监控模块,该模块是一个守护进程,每隔一段时间,对达到一定长度的步骤3)中的内核页表页的写请求队列进行刷新;由于操作***会频繁的对内核页表页进行开辟和释放的操作,为了保证和虚拟机维护的页表页缓冲达到数据的一致,每隔一定时间,对一级页表进行监测,当某一项由0变为非0时,二级页表则增加了一页,这时就相应的增加一个缓冲让虚拟机来维护,反之则去掉一个缓冲,从而减少主机的内存资源占用。
本发明与背景技术相比,具有的有益的效果是:首先在于从硬件的角度对软件掌控的资源进行管理和优化,充分利用计算机科学中的时间,空间局部性的原理,对频繁的内核页表读写进行控制,提高***cache命中率,弥补了PPCLinux本身的缺憾,从而达到模拟效率的提高;其次,并不需要修改操作***源代码,具有充分的移植性和高度的可易用性。
附图说明
附图是发明的操作流程图。
具体实施方式
在某PowerPC的模拟器中,已经实现了指令的解释执行以及对MMU的模拟,并准备运行PPCLinux-2.4.25。
1)首先进入地址监控模块(如附图所示),对操作***的读写请求地址进行监控分发;当操作***的访存请求到来时,首先根据地址确定是否是对Linux内核空间的访问,即访问地址要大于PAGE_OFFSET,往往是3G,因为内核页表以及普通进程的页表都是存储在内核空间的。如果经检测访问属于内核空间,则进行进一步的地址检测,否则将其视为一般的读写请求;接下来进一步根据地址判断是否是对页表的访问[address_dispatch()],由于内核的global pagetable是静态定义在数据段中的(声明在asm-ppc/pgtable.h:extern pgd_tswapper_pg_dir[PTRS_PER_PGD]),其起始地址可从System.map通过命令”grepswapper_pg_dir System.map”得到,而二级页表的地址在一级页表的表项中,即起始地址后的每四个字节的值即一个二级页表的起始值,从pgd_offset()得到。当虚拟机侦测到对操作***内核页表所在物理地址的读写操作,则进入相应的管理模块,否则按一般的读写操作对待。
2)其次组织关于内核页表所在物理页的数据,根据读写请求的地址来判断其操作目标页是一级页表或是二级页表,从而进行具体的读写模块的操作;PPCLinux的一级页表占两张物理页,共8K,一共有2048项即一级和二级页表最多占2048+2=2050页,即维护一个含2050项的静态数据,每项是对应页读写缓冲的数据结构的指针。当读写地址大于swapper_pg_dir并且小于swapper_pg_dir+8k时,是对一级页表的访问,否则是对二级页表的访问,然后轮询一级页表的每个非零表项,从而确定访问的具体是哪一张二级页表。根据读写地址便可分发到对应页的缓冲,进行读写操作[handle_pgt_read(),handle_pgt_write()]。
3)处理读请求时,当所访问的页为脏,即其dirty_flag=true时,将该页写操作队列中的请求完成[flush_write_queue()],即将先前写请求数据刷新到虚拟机***的对应内存区域中;当读缓冲中含有所需的数据时,直接将该值返回,否则进行被模拟操作***的访存操作,并将访存返回后的数据存储在维护该页表的缓冲区中;
4)处理写请求时,采取的是延后写操作策略。首先将该页标志为脏页,即置该页的dirty_flag=true,然后将此请求加入该页写请求队列[addto_write_queue()],并未真正的对虚拟机***的对应内存区进行写更新操作。
5)同时,还有一个对页表页进行监控的守护进程在工作,每隔一段时间(2分钟左右,过长导致内存数据一致性较差,过短又加重***负荷),对达到一定长度(80~100请求数)的内核页表页的写请求队列进行刷新[flush_write_queue()];其次,由于操作***会频繁的对内核页表页进行开辟和释放的操作,为了保证和虚拟机维护的页表页缓冲达到数据的一致,每隔一定时间(5~8分钟),对一级页表进行监测,当某一项由0变为非0时,二级页表则增加了一页,这时就相应的增加一个缓冲[add_page_buffer()]让虚拟机来维护,反之则去调[del_page_buffer()]一个缓冲,从而减少主机的内存资源占用。
Claims (1)
1.一种操作Linux内核页表加速模拟PowerPC体系结构的方法,其特征在于:
所述方法是针对Linux操作***,从硬件的角度来管理PowerPC软页表的模拟技术,其具体步骤如下:
1)进入地址监控模块,对操作***的读写请求地址进行监控分发;当虚拟机侦测到对操作***内核页表所在物理地址的读写操作,则进入管理模块,执行步骤2),否则按一般的读写操作对待,不执行步骤2);
2)组织关于内核页表所在物理页的数据,根据读写请求的地址来判断其操作目标页是一级页表或是二级页表,从而进行读写模块的操作;
3)处理对内核页表的读和写操作;
处理读操作时,当所访问的页为脏时,将该页写操作队列中的请求完成;当读缓冲中含有所需的数据时,直接返回,否则进行被模拟操作***的访存操作;
处理写操作时,对内核页表页的写操作采取延后策略,对每个页表所在页维持一个写请求队列,当对应页的写请求到来时,首先将该页标志为脏页,然后将此请求加入该队列;
4)内核页表所在的物理页的监控模块,该模块是一个守护进程,每隔一段时间,对达到一定长度的步骤3)中的内核页表页的写请求队列进行刷新;由于操作***会频繁的对内核页表页进行开辟和释放的操作,为了保证和虚拟机维护的页表页缓冲达到数据的一致,每隔一定时间,对一级页表进行监测,当某一项由0变为非0时,二级页表则增加了一页,这时就相应的增加一个缓冲让虚拟机来维护,反之则去掉一个缓冲,从而减少主机的内存资源占用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100609909A CN100399298C (zh) | 2005-10-08 | 2005-10-08 | 操作Linux内核页表加速模拟PowerPC体系结构的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100609909A CN100399298C (zh) | 2005-10-08 | 2005-10-08 | 操作Linux内核页表加速模拟PowerPC体系结构的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1746866A CN1746866A (zh) | 2006-03-15 |
CN100399298C true CN100399298C (zh) | 2008-07-02 |
Family
ID=36166410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100609909A Expired - Fee Related CN100399298C (zh) | 2005-10-08 | 2005-10-08 | 操作Linux内核页表加速模拟PowerPC体系结构的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100399298C (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706736B (zh) * | 2009-12-22 | 2012-10-10 | 北京大学 | 一种高效的脏页获取方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560746A (zh) * | 2004-02-27 | 2005-01-05 | 中国人民解放军国防科学技术大学 | 基于操作***反向页表的页迁移和复制方法 |
-
2005
- 2005-10-08 CN CNB2005100609909A patent/CN100399298C/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560746A (zh) * | 2004-02-27 | 2005-01-05 | 中国人民解放军国防科学技术大学 | 基于操作***反向页表的页迁移和复制方法 |
Non-Patent Citations (4)
Title |
---|
dvcenv - A Device Model Test Environment for a Full Computer System Simulator. Hakan Zeffer,全文,Microelectronics and Information Technology Royal Institute of Technology Sweden. 2002 |
dvcenv - A Device Model Test Environment for a Full Computer System Simulator. Hakan Zeffer,全文,Microelectronics and Information Technology Royal Institute of Technology Sweden. 2002 * |
Simulation and Debugging of Full System Binary Translation. Erik R. Altman, Kemal Ebcioglu,Thomas J.Computer Science. 2000 |
Simulation and Debugging of Full System Binary Translation. Erik R. Altman, Kemal Ebcioglu,Thomas J.Computer Science. 2000 * |
Also Published As
Publication number | Publication date |
---|---|
CN1746866A (zh) | 2006-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8661181B2 (en) | Memory protection unit in a virtual processing environment | |
CN105393229B (zh) | 虚拟机中的页面错误注入 | |
US8307360B2 (en) | Caching binary translations for virtual machine guest | |
US7913058B2 (en) | System and method for identifying TLB entries associated with a physical address of a specified range | |
EP1891533B1 (en) | Translating loads for accelerating virtualized partition | |
CN102906721B (zh) | 与访问地址空间并行地对地址空间调整大小 | |
CN1993683B (zh) | 体系结构事件期间维持处理器资源 | |
US7917689B2 (en) | Methods and apparatuses for nonvolatile memory wear leveling | |
CN101351773B (zh) | 基于存储器访问数据结构执行直接高速缓存访问事务 | |
US8301864B2 (en) | Apparatus and method for executing rapid memory management unit emulation and full-system simulator | |
JP7483950B2 (ja) | バイナリ変換を実行するためのシステム及び方法 | |
US20140108701A1 (en) | Memory protection unit in a virtual processing environment | |
US9600414B2 (en) | Concurrent memory operations | |
CN109952567B (zh) | 用于旁通高级dram存储器控制器的内部高速缓存的方法和装置 | |
CN101425020A (zh) | 对mmu仿真进行加速的方法、装置和全***仿真器 | |
US20140108766A1 (en) | Prefetching tablewalk address translations | |
KR101724590B1 (ko) | 멀티 프로세서 시스템에서의 메모리 보호 장치 및 방법 | |
CN102662726B (zh) | 虚拟机的模拟方法和计算机设备 | |
EP3746899B1 (en) | Controlling guard tag checking in memory accesses | |
Li et al. | SEAL: User experience-aware two-level swap for mobile devices | |
US20120173842A1 (en) | Operating System Management of Address-Translation-Related Data Structures and Hardware Lookasides | |
CN100399298C (zh) | 操作Linux内核页表加速模拟PowerPC体系结构的方法 | |
TWI787451B (zh) | 用於資料處理的方法、設備、電腦程式、與儲存器媒體 | |
CN114860628A (zh) | 模拟计算***中的存储器追踪 | |
CN111566628B (zh) | 控制存储器访问中的守卫标签检查的设备和方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080702 Termination date: 20151008 |
|
EXPY | Termination of patent right or utility model |