CN1746866A - 操作Linux内核页表加速模拟PowerPC体系结构的方法 - Google Patents
操作Linux内核页表加速模拟PowerPC体系结构的方法 Download PDFInfo
- Publication number
- CN1746866A CN1746866A CNA2005100609909A CN200510060990A CN1746866A CN 1746866 A CN1746866 A CN 1746866A CN A2005100609909 A CNA2005100609909 A CN A2005100609909A CN 200510060990 A CN200510060990 A CN 200510060990A CN 1746866 A CN1746866 A CN 1746866A
- Authority
- CN
- China
- Prior art keywords
- page
- page table
- write
- kernel
- 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.)
- Granted
Links
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体系结构的方法,从硬件的角度对其进行管理和优化访问必然会提高模拟的效率。
本发明采用的技术方案其步骤如下:
1)针对Linux操作系统,从硬件的角度来管理PowerPC软页表的部分模拟技术;
2)首先进入地址监控模块,对操作系统的读写请求地址进行监控分发;当虚拟机侦测到对操作系统内核页表所在物理地址的读写操作,则进入相应的管理模块,否则按一般的读写操作对待;
3)其次组织关于内核页表所在物理页的数据,根据读写请求的地址来判断其操作目标页是一级页表或是二级页表,从而进行具体的读写模块的操作;
4)然后处理对内核页表的读和写操作;
处理读操作时,当所访问的页为脏时,将该页写操作队列中的请求完成;当读缓冲中含有所需的数据时,直接返回,否则进行被模拟操作系统的访存操作;
处理写操作时,对内核页表页的写操作采取延后策略,即对每个页表所在页维持一个写请求队列,当对应页的写请求到来时,首先将该页标志为脏页,然后将此请求加入该队列;
6)内核页表所在物理页的监控模块,该模块相当一个守护进程,主要有两个作用:首先,每隔一段时间,对达到一定长度的内核页表页的写请求队列进行刷新;其次,由于操作系统会频繁的对内核页表页进行开辟和释放的操作,为了保证和虚拟机维护的页表页缓冲达到数据的一致,每隔一定时间,对一级页表进行监测,当某一项由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体系结构的方法,其特征在于:
1)针对Linux操作系统,从硬件的角度来管理PowerPC软页表的部分模拟技术;
2)首先进入地址监控模块,对操作系统的读写请求地址进行监控分发;当虚拟机侦测到对操作系统内核页表所在物理地址的读写操作,则进入相应的管理模块,否则按一般的读写操作对待;
3)其次组织关于内核页表所在物理页的数据,根据读写请求的地址来判断其操作目标页是一级页表或是二级页表,从而进行具体的读写模块的操作;
4)然后处理对内核页表的读和写操作;
处理读操作时,当所访问的页为脏时,将该页写操作队列中的请求完成;当读缓冲中含有所需的数据时,直接返回,否则进行被模拟操作系统的访存操作;
处理写操作时,对内核页表页的写操作采取延后策略,即对每个页表所在页维持一个写请求队列,当对应页的写请求到来时,首先将该页标志为脏页,然后将此请求加入该队列;
6)内核页表所在物理页的监控模块,该模块相当一个守护进程,主要有两个作用:首先,每隔一段时间,对达到一定长度的内核页表页的写请求队列进行刷新;其次,由于操作系统会频繁的对内核页表页进行开辟和释放的操作,为了保证和虚拟机维护的页表页缓冲达到数据的一致,每隔一定时间,对一级页表进行监测,当某一项由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 true CN1746866A (zh) | 2006-03-15 |
CN100399298C 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) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706736B (zh) * | 2009-12-22 | 2012-10-10 | 北京大学 | 一种高效的脏页获取方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100383763C (zh) * | 2004-02-27 | 2008-04-23 | 中国人民解放军国防科学技术大学 | 基于操作系统反向页表的页迁移和复制方法 |
-
2005
- 2005-10-08 CN CNB2005100609909A patent/CN100399298C/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706736B (zh) * | 2009-12-22 | 2012-10-10 | 北京大学 | 一种高效的脏页获取方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100399298C (zh) | 2008-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1135477C (zh) | 实现动态显示存储器的方法和装置 | |
US7149872B2 (en) | System and method for identifying TLB entries associated with a physical address of a specified range | |
CN101203838B (zh) | 直接存储器存取转换的地址窗口支持 | |
US8700879B2 (en) | Concurrent memory operations | |
JP5697279B2 (ja) | メモリアクセスを正確に予測するための、領域に基づく技術 | |
AU658914B2 (en) | Improving computer performance by simulated cache associativity | |
CN105164653B (zh) | 属性字段的多核页表集合 | |
KR20060049129A (ko) | 시스템 성능을 향상시키기 위하여 외장형 메모리 장치를이용하는 시스템 및 방법 | |
Biswas et al. | Exploiting data similarity to reduce memory footprints | |
Lee et al. | A case for hardware-based demand paging | |
US20020169936A1 (en) | Optimized page tables for address translation | |
CN1912854A (zh) | 用于从地址高速缓存去除条目的方法和设备 | |
Allen et al. | Demystifying gpu uvm cost with deep runtime and workload analysis | |
Yoon et al. | Optimized memory-disk integrated system with DRAM and nonvolatile memory | |
EP2601579A1 (en) | Processor support for filling memory regions | |
CN100399298C (zh) | 操作Linux内核页表加速模拟PowerPC体系结构的方法 | |
Park et al. | Modeling and analysis of the page sizing problem for NVM storage in virtualized systems | |
TWI787451B (zh) | 用於資料處理的方法、設備、電腦程式、與儲存器媒體 | |
US10108339B2 (en) | Reduction of intermingling of input and output operations in solid state drives | |
Choi et al. | A hybrid SSD with PRAM and NAND Flash memory | |
CN112148486A (zh) | 内存页面管理方法、装置、设备及可读存储介质 | |
Bae et al. | Ssdstreamer: Specializing i/o stack for large-scale machine learning | |
Ahn et al. | Design and implementation of user-level remote memory extension library | |
US20090024798A1 (en) | Storing Data | |
CN112988074B (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 |