[发明专利]一种提高TLB刷新效率的方法有效
| 申请号: | 201810495361.6 | 申请日: | 2018-05-22 |
| 公开(公告)号: | CN108710584B | 公开(公告)日: | 2021-08-31 |
| 发明(设计)人: | 管慧娟;范冬冬 | 申请(专利权)人: | 郑州云海信息技术有限公司 |
| 主分类号: | G06F12/1027 | 分类号: | G06F12/1027;G06F12/1009 |
| 代理公司: | 济南舜源专利事务所有限公司 37205 | 代理人: | 刘晓政 |
| 地址: | 450000 河南省郑州市*** | 国省代码: | 河南;41 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 提高 tlb 刷新 效率 方法 | ||
本发明属于Linux操作系统TLB刷新技术领域,具体涉及一种提高TLB刷新效率的方法,包括:(1)创建进程描述符,添加进程上下文ID;(2)当发生缺页中断,需要建立页表项时,页表项的前16位填充该虚拟地址所在的进程上下文ID,新建立的页表项放于TLB中链表的头部;(3)当发生进程切换时,TLB表中的表项从链表尾遍历,将非新切换进程的页表项刷新替换成新切换进程的页表项,刷新的表项数以达到链表的进程数经验值为止;(4)当进程的虚拟地址命中TLB表项时,将该表项移动至链表头部。本申请通过在页表项中添加进程上下文ID,使得不同进程的页表项可以在TLB空间中共存;当刷新TLB时,从链表尾开始刷新,提高了TLB命中率和TLB刷新频率。
技术领域
本发明属于Linux操作系统TLB刷新技术领域,具体涉及一种提高TLB刷新效率的方法。
背景技术
Linux操作系统采用虚拟地址的方式管理各个进程对内存的使用,虚拟地址到物理地址的转换通过查询内存中的页表来完成,为加速虚拟地址到物理地址的转换,部分页表会存储在TLB高速缓存中,如果TLB命中,就不需要再访问内存中的页表,提高了访问速度,提升系统性能。
现有技术中进行进程切换时,需要刷新整个的TLB空间,即原来进程的页表项都替换出TLB,重新加载新切换进程的页表项。而现有的页表项不包含进程上下文的ID,不同进程的页表项不能在TLB共存,进程切换时只能刷新整个TLB,刷新效率低,也不能更好的利用数据访问的局部性原理,因为每个进程在一个执行时间片内访问的也许只是很少页表表示的地址空间,用不到所有TLB页表项,而切换出去的进程再次执行时,又需要重新加载TLB表项。
因此,提供一种高效率的TLB刷新方法是十分必要的。
发明内容
本发明的目的在于解决上述现有技术中存在的TLB刷新效率低的难题,提供一种提高TLB刷新效率的方法。
本发明是通过以下技术方案实现的:
本发明提供的一种提高TLB刷新效率的方法,包括:
(1)创建进程描述符,添加进程上下文ID;
(2)当发生缺页中断,需要建立页表项时,页表项的前16位填充该虚拟地址所在的进程上下文ID,新建立的页表项放于TLB中链表的头部;
(3)当发生进程切换时,TLB表中的表项从链表尾遍历,将非新切换进程的页表项刷新替换成新切换进程的页表项,刷新的表项数以达到链表的进程数经验值为止;
(4)当进程的虚拟地址命中TLB表项时,将该表项移动至链表头部。
进一步的,所述步骤(1)中以进程ID为种子随机生成16位的进程上文ID,所述进程上文ID标识用于标识该进程地址空间,存储在进程描述符中。
进一步的,所述步骤(2)中,将新建立的页表项放于TLB中链表的头部时,如遇到TLB中页表项满时,清空链表尾端的页表项。
进一步的,所述步骤(3)中,刷新的表项数已达到链表的m/n长度为止,所述m/n长度为根据系统常执行进程数训练所得。
与现有技术相比,本发明的有益效果是:
本发明提供的一种提高TLB刷新效率的方法,使得在进程切换时不必刷新整个TLB空间,本申请中通过在页表项中添加进程上下文ID,使得不同进程的页表项可以在TLB空间中共存;当刷新TLB时,从链表尾开始刷新,提高了TLB命中率和TLB刷新频率。
此外,本发明方法原理可靠,步骤简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于郑州云海信息技术有限公司,未经郑州云海信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810495361.6/2.html,转载请声明来源钻瓜专利网。





