CN108710584A - 一种提高tlb刷新效率的方法 - Google Patents
一种提高tlb刷新效率的方法 Download PDFInfo
- Publication number
- CN108710584A CN108710584A CN201810495361.6A CN201810495361A CN108710584A CN 108710584 A CN108710584 A CN 108710584A CN 201810495361 A CN201810495361 A CN 201810495361A CN 108710584 A CN108710584 A CN 108710584A
- Authority
- CN
- China
- Prior art keywords
- tlb
- page table
- table entry
- chained list
- entry
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明属于Linux操作系统TLB刷新技术领域,具体涉及一种提高TLB刷新效率的方法,包括:(1)创建进程描述符,添加进程上下文ID;(2)当发生缺页中断,需要建立页表项时,页表项的前16位填充该虚拟地址所在的进程上下文ID,新建立的页表项放于TLB中链表的头部;(3)当发生进程切换时,TLB表中的表项从链表尾遍历,将非新切换进程的页表项刷新替换成新切换进程的页表项,刷新的表项数以达到链表的进程数经验值为止;(4)当进程的虚拟地址命中TLB表项时,将该表项移动至链表头部。本申请通过在页表项中添加进程上下文ID,使得不同进程的页表项可以在TLB空间中共存;当刷新TLB时,从链表尾开始刷新,提高了TLB命中率和TLB刷新频率。
Description
技术领域
本发明属于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刷新频率。
此外,本发明方法原理可靠,步骤简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。
附图说明
图1是本发明实施例1中提供的一种提高TLB刷新效率的方法的流程图。
图2是本发明实施例2中提供的流程图。
具体实施方式
下面结合附图对本发明作进一步详细描述:
实施例1
如图1所示,本发明提供的一种提高TLB刷新效率的方法,包括:
(1)创建进程描述符,添加进程上下文ID;
(2)当发生缺页中断,需要建立页表项时,页表项的前16位填充该虚拟地址所在的进程上下文ID,新建立的页表项放于TLB中链表的头部;
(3)当发生进程切换时,TLB表中的表项从链表尾遍历,将非新切换进程的页表项刷新替换成新切换进程的页表项,刷新的表项数以达到链表的进程数经验值为止;
(4)当进程的虚拟地址命中TLB表项时,将该表项移动至链表头部。
在本实施例中,所述步骤(1)中以进程ID为种子随机生成16位的进程上文ID,所述进程上文ID标识用于标识该进程地址空间,存储在进程描述符中。
在本实施例中,所述步骤(2)中,将新建立的页表项放于TLB中链表的头部时,如遇到TLB中页表项满时,清空链表尾端的页表项。
在本实施例中,所述步骤(3)中,刷新的表项数已达到链表的m/n长度为止,所述m/n长度为根据系统常执行进程数训练所得。
实施例2
如图2所示,本实施例涉及平台为运行Linux操作系统的x86_64位服务器,针对只占用了48位的四级分页结构的系统,具体步骤如下:
(1)进程创建时,生成一个16位的进程上下文contextID;
(2)缺页中断handle_mm_fault发生时,pte = pte | (contextID<<48);
(3)Flush_tlb_page函数中刷新pte到TLB中,插入页表链表头list_insert(head,pte)。
(4)当进程发生切换时,flush_tlb函数中从链表尾开始遍历,遍历的元素个数是总链表长度的m/n,遍历到的不是新切换进程的页表项都刷新出去,用新进程的页表项替换。
(5)进程最近访问的地址命中TLB时,移动页表项到链表头。
Linux 64地址空间中64位地址采用4层地址映射,pgd、pud、pmd、pte各占了9位,加上12位的页内index,共用了48位。页表项同样占用了48位,高16位可以用来记录进程上下文ID;TLB空间中的页表项按最近最常使用算法(MRU)排列在链表中,链表头存储的是最近使用的页表项,链表尾是最近很少使用的页表项,当刷新TLB时,从链表尾开始刷新。
本发明提供的一种提高TLB刷新效率的方法,使得在进程切换时不必刷新整个TLB空间,本申请中通过在页表项中添加进程上下文ID,使得不同进程的页表项可以在TLB空间中共存;当刷新TLB时,从链表尾开始刷新,提高了TLB命中率和TLB刷新频率。
上述技术方案只是本发明的一种实施方式,对于本领域内的技术人员而言,在本发明公开了应用方法和原理的基础上,很容易做出各种类型的改进或变形,而不仅限于本发明上述具体实施方式所描述的方法,因此前面描述的方式只是优选的,而并不具有限制性的意义。
Claims (4)
1.一种提高TLB刷新效率的方法,其特征在于,包括:
(1)创建进程描述符,添加进程上下文ID;
(2)当发生缺页中断,需要建立页表项时,页表项的前16位填充该虚拟地址所在的进程上下文ID,新建立的页表项放于TLB中链表的头部;
(3)当发生进程切换时,TLB表中的表项从链表尾遍历,将非新切换进程的页表项刷新替换成新切换进程的页表项,刷新的表项数以达到链表的进程数经验值为止;
(4)当进程的虚拟地址命中TLB表项时,将该表项移动至链表头部。
2.如权利要求1所述的一种提高TLB刷新效率的方法,其特征在于,所述步骤(1)中以进程ID为种子随机生成16位的进程上文ID,所述进程上文ID标识用于标识该进程地址空间,存储在进程描述符中。
3.如权利要求1所述的一种提高TLB刷新效率的方法,其特征在于:所述步骤(2)中,将新建立的页表项放于TLB中链表的头部时,如遇到TLB中页表项满时,清空链表尾端的页表项。
4.如权利要求1所述的一种提高TLB刷新效率的方法,其特征在于,所述步骤(3)中,刷新的表项数已达到链表的m/n长度为止,所述m/n长度为根据系统常执行进程数训练所得。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810495361.6A CN108710584B (zh) | 2018-05-22 | 2018-05-22 | 一种提高tlb刷新效率的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810495361.6A CN108710584B (zh) | 2018-05-22 | 2018-05-22 | 一种提高tlb刷新效率的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108710584A true CN108710584A (zh) | 2018-10-26 |
CN108710584B CN108710584B (zh) | 2021-08-31 |
Family
ID=63868621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810495361.6A Active CN108710584B (zh) | 2018-05-22 | 2018-05-22 | 一种提高tlb刷新效率的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108710584B (zh) |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560746A (zh) * | 2004-02-27 | 2005-01-05 | 中国人民解放军国防科学技术大学 | 基于操作系统反向页表的页迁移和复制方法 |
CN101246452A (zh) * | 2007-02-12 | 2008-08-20 | 国际商业机器公司 | 执行快速的mmu模拟的方法和装置、以及全系统模拟器 |
CN101315602A (zh) * | 2008-05-09 | 2008-12-03 | 浙江大学 | 硬件化的进程内存管理核的方法 |
CN101484894A (zh) * | 2006-07-07 | 2009-07-15 | 国际商业机器公司 | 继承维基页面的维基页面布局的方法 |
CN101539869A (zh) * | 2009-04-13 | 2009-09-23 | 浙江大学 | 与调度性能直接相关的内存管理核的硬件化的方法 |
CN101727405A (zh) * | 2008-10-20 | 2010-06-09 | 株式会社东芝 | 虚拟地址高速缓冲存储器和方法以及处理器 |
CN102880426A (zh) * | 2012-08-01 | 2013-01-16 | 龙芯中科技术有限公司 | 一种系统虚拟机减少tlb刷新的方法及系统虚拟机 |
CN103777926A (zh) * | 2012-10-25 | 2014-05-07 | 辉达公司 | 多线程处理单元中的高效存储器虚拟化 |
US20140223141A1 (en) * | 2011-12-29 | 2014-08-07 | Jonathan D. Combs | Sharing tlb mappings between contexts |
CN104572313A (zh) * | 2013-10-22 | 2015-04-29 | 华为技术有限公司 | 一种进程间的通信方法及装置 |
CN104636203A (zh) * | 2013-11-14 | 2015-05-20 | 凯为公司 | 用于通过较少位来表示处理器上下文的方法和装置 |
CN105280215A (zh) * | 2014-06-09 | 2016-01-27 | 华为技术有限公司 | 动态随机存取存储器dram的刷新方法、设备以及系统 |
CN105446889A (zh) * | 2014-07-31 | 2016-03-30 | 华为技术有限公司 | 一种内存管理方法、装置以及内存控制器 |
CN107480075A (zh) * | 2016-06-08 | 2017-12-15 | 谷歌公司 | 低开销的转换后备缓冲器下拉 |
-
2018
- 2018-05-22 CN CN201810495361.6A patent/CN108710584B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560746A (zh) * | 2004-02-27 | 2005-01-05 | 中国人民解放军国防科学技术大学 | 基于操作系统反向页表的页迁移和复制方法 |
CN101484894A (zh) * | 2006-07-07 | 2009-07-15 | 国际商业机器公司 | 继承维基页面的维基页面布局的方法 |
CN101246452A (zh) * | 2007-02-12 | 2008-08-20 | 国际商业机器公司 | 执行快速的mmu模拟的方法和装置、以及全系统模拟器 |
CN101315602A (zh) * | 2008-05-09 | 2008-12-03 | 浙江大学 | 硬件化的进程内存管理核的方法 |
CN101727405A (zh) * | 2008-10-20 | 2010-06-09 | 株式会社东芝 | 虚拟地址高速缓冲存储器和方法以及处理器 |
CN101539869A (zh) * | 2009-04-13 | 2009-09-23 | 浙江大学 | 与调度性能直接相关的内存管理核的硬件化的方法 |
US20140223141A1 (en) * | 2011-12-29 | 2014-08-07 | Jonathan D. Combs | Sharing tlb mappings between contexts |
US9703566B2 (en) * | 2011-12-29 | 2017-07-11 | Intel Corporation | Sharing TLB mappings between contexts |
CN102880426A (zh) * | 2012-08-01 | 2013-01-16 | 龙芯中科技术有限公司 | 一种系统虚拟机减少tlb刷新的方法及系统虚拟机 |
CN103777926A (zh) * | 2012-10-25 | 2014-05-07 | 辉达公司 | 多线程处理单元中的高效存储器虚拟化 |
CN104572313A (zh) * | 2013-10-22 | 2015-04-29 | 华为技术有限公司 | 一种进程间的通信方法及装置 |
CN104636203A (zh) * | 2013-11-14 | 2015-05-20 | 凯为公司 | 用于通过较少位来表示处理器上下文的方法和装置 |
CN105280215A (zh) * | 2014-06-09 | 2016-01-27 | 华为技术有限公司 | 动态随机存取存储器dram的刷新方法、设备以及系统 |
CN105446889A (zh) * | 2014-07-31 | 2016-03-30 | 华为技术有限公司 | 一种内存管理方法、装置以及内存控制器 |
CN107480075A (zh) * | 2016-06-08 | 2017-12-15 | 谷歌公司 | 低开销的转换后备缓冲器下拉 |
Also Published As
Publication number | Publication date |
---|---|
CN108710584B (zh) | 2021-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11636038B2 (en) | Method and apparatus for controlling cache line storage in cache memory | |
CN108804350B (zh) | 一种内存访问方法及计算机系统 | |
CN102460400B (zh) | 基于管理程序的本地和远程虚拟内存页面管理 | |
US10891241B2 (en) | Cache memory that supports tagless addressing | |
JP2017138852A (ja) | 情報処理装置、記憶装置およびプログラム | |
KR20120058352A (ko) | 하이브리드 메모리 시스템, 및 그 관리 방법 | |
CN103425600A (zh) | 一种固态盘闪存转换层中的地址映射方法 | |
EP3553665B1 (en) | Non-volatile memory access method, device, and system | |
US9720773B2 (en) | Managing reuse information in caches | |
CN105095116A (zh) | 缓存替换的方法、缓存控制器和处理器 | |
CN102662869B (zh) | 虚拟机中的内存访问方法和装置及查找器 | |
WO2019062747A1 (zh) | 数据访问方法以及计算机系统 | |
CN106560798A (zh) | 一种内存访问方法、装置及计算机系统 | |
CN110018971B (zh) | 缓存替换技术 | |
US20160259732A1 (en) | Managing reuse information for memory pages | |
CN109815167A (zh) | 用于高效虚拟标记的高速缓存实现的系统和方法 | |
CN106294212A (zh) | 用于精确预测存储器存取的基于区域的技术 | |
US10013360B2 (en) | Managing reuse information with multiple translation stages | |
JP2020518063A (ja) | サイレントアクティブページ移行障害 | |
CN108572799B (zh) | 一种双向哈希链表的异构内存系统数据页迁移方法 | |
US9471509B2 (en) | Managing address-independent page attributes | |
CN105005510A (zh) | 应用于固态硬盘阻变存储器缓存的纠错保护架构及方法 | |
CN103019959A (zh) | 一种指令高速缓冲存储器 | |
CN104281545B (zh) | 一种数据读取方法及设备 | |
JP4915756B2 (ja) | アドレス変換を高速化する方法及びシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |