通用操作系统对CPU二级缓存访问的控制方法.pdf

上传人:小** 文档编号:971839 上传时间:2018-03-22 格式:PDF 页数:8 大小:474.46KB
返回 下载 相关 举报
摘要
申请专利号:

CN200910096956.5

申请日:

2009.03.26

公开号:

CN101510176A

公开日:

2009.08.19

当前法律状态:

终止

有效性:

无权

法律详情:

未缴年费专利权终止IPC(主分类):G06F 12/08申请日:20090326授权公告日:20120530终止日期:20130326|||授权|||实质审查的生效|||公开

IPC分类号:

G06F12/08

主分类号:

G06F12/08

申请人:

浙江大学

发明人:

陈天洲; 曹 满; 马建良; 章铁飞; 项凌翔; 乔福明; 黄江伟; 王春昊; 缪良华; 陈 剑

地址:

310027浙江省杭州市西湖区浙大路38号

优先权:

专利代理机构:

杭州中成专利事务所有限公司

代理人:

唐银益

PDF下载: PDF下载
内容摘要

本发明涉及计算机通用操作系统内存管理技术领域,旨在提供一种通用操作系统对CPU二级缓存访问的控制方法。该方法包括以下步骤:在操作系统中以内存页着色的软件实现方法划分物理索引的缓存、利用缓存区域的结构来控制处理器二级缓存的使用情况、标记为缓存区域、提供系统调用。本发明通过改进操作系统内核对内存缺页中断和二级缓存的管理机制,添加系统调用,使得操作系统可以控制二级缓存的访问。程序员在编写对内存频繁访问的应用程序时,可以通过系统调用对规律性频繁访问且体积庞大的数据结构进行针对缓存的优化,从而减少二级缓存访问缺失率,显著提高程序性能。具有性能提升、可拓展性和便捷性等优点。

权利要求书

1、  一种通用操作系统对CPU二级缓存访问的控制方法,其特征在于,包括以下步骤:
1)在操作系统中以内存页着色的软件实现方法划分物理索引的缓存:
在物理索引的缓存中,数据在物理内存中的地址决定了数据所映射到的缓存组编号和组内偏移,用来将数据映射并索引到缓存的哈希函数必须利用物理内存地址中足够的位,从而可以寻址整个缓存;由于当前缓存容量相对较大,物理内存地址中的位数已经超过了内存的页内偏移的位数,物理内存的页编号的低位会与缓存组编号的高位有部分重叠,因此物理内存的页编号决定了缓存中的指定的一部分组,共享相同缓存组编号位的物理内存页的集合构成一个缓存全等类;整个物理内存被划分为多个缓存全等类,具体的个数与二级缓存大小和物理内存页的大小有关;
2)利用缓存区域的结构来控制处理器二级缓存的使用情况:
使用函数控制缓存区域,并利用缓存区域记录被控制的内存页地址的链表和起止地址、缓存全等类的数量、缓存的使用情况、当前应用程序的内存结构的信息;
3)标记为缓存区域
利用操作系统处理虚拟内存缺页的中断函数来保存应用程序访问内存物理页编号的记录,确定应用程序要访问的缓存地址,从而控制处理器二级缓存的访问范围:
当需要将一块应用程序的内存段固定在二级缓存中时,通过更改虚实地址转换页表项中这一块内存的权限位和标记位,使访问到这一块内存时会发生缺页中断,在缺页中断处理函数中,根据页表项中的标记位添加相关的分支,即可进行缓存区域的相关操作;
4)提供系统调用
系统调用将缓存区域的控制函数进行包装以方便地控制缓存区域,只需要在声明要优化的数据结构之前使用设置缓存区域的系统调用,即可优化二级缓存的使用情况。

2、
  根据权利要求1所述的通用操作系统对CPU二级缓存访问的控制方法,其特征在于,步骤(2)中,所述使用函数控制缓存区域,是指使用:初始化函数、释放函数、向缓存区域增加内存段函数、从缓存区域删除内存段函数、查找一个内存地址是否在指定缓存区域函数、为缓存区域分配新的内存页函数或清除缓存区域的内存页函数,实现对缓存区域的结构的控制。

说明书

通用操作系统对CPU二级缓存访问的控制方法
技术领域
本发明涉及计算机通用操作系统内存管理技术领域,特别是涉及一种通用操作系统对CPU二级缓存访问的控制方法。
背景技术
CPU缓存是位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。在CPU中加入缓存是一种高效的解决方案,这样整个内存储器就变成了既有缓存的高速度,又有内存的大容量的存储系统了。缓存对CPU的性能影响很大,主要是因为CPU的数据交换顺序和CPU与缓存间的带宽引起的。
CPU在缓存中找到有用的数据被称为命中,当缓存中没有CPU所需的数据时,发生缺失,CPU才访问内存。缓存的工作原理是当CPU要读取一个数据时,首先从缓存中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。正是这样的读取机制使CPU读取缓存的命中率非常高,大多数CPU可达90%左右,也就是说CPU下一次要读取的数据90%都在缓存中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。
最早先的CPU缓存是整体集成在CPU内部,且容量低。集成在CPU内的缓存渐渐难以满足CPU的需求,而制造工艺上的限制又不能大幅度提高缓存的容量,因此出现了集成在与CPU同一块电路板上或主板上的缓存。此时就把CPU内核集成的缓存称为一级缓存,而外部的称为二级缓存。随着CPU制造工艺的发展,二级缓存也能轻易的集成在CPU内核中,容量也在逐年提升。
CPU二级缓存的出现使得计算机的整体性能得到了又一次巨大的飞跃。二级缓存比内存容量小但速度快,同时比一级缓存容量大但速度略慢,处于计算机存储系统金字塔结构的第二层。影响二级缓存性能的最主要因素就是命中率,而提高命中率的方法主要分为两种:第一种是增加二级缓存容量,用更多的硬件成本换取性能;第二种是用软件方式提高性能,比如改进缓存替换算法。本发明属于后者,补充了二级缓存的管理方法。
为了保证CPU访问时有较高的命中率,缓存中的内容应该按一定的算法替换。目前缓存控制器较常用的算法是近似“最近最少使用算法”,它是将最近一段时间内最少被访问过的行淘汰出局。这是一种高效、科学的算法,在大多数情况下都有较好的表现。但是在连续多次按同一顺序遍历的操作上会出现很差的表现,而这种操作却是常常会遇到的。另一方面,缓存内容的替换算法是固化在CPU中的缓存控制器硬件中的,通用操作系统无法改变或者干预这种算法。因此,如果能够提供一种通用操作系统对二级缓存访问的控制方法,就可以在一定程度上弥补缓存替换算法的不足,并解决通用操作系统无法干预缓存内容的现状,使得二级缓存的使用更加灵活和高效。
发明内容
本发明的目的在于克服现有技术中的不足,提供一种通用操作系统对CPU二级缓存访问的控制方法。
通用操作系统是一类操作系统的统称,比如常见的Windows,Linux等都属于通用操作系统。与之相对应的是专用操作系统,或称为实时操作系统,多用于嵌入式领域。通用操作系统有更普遍的应用领域,本发明中的方法是针对通用操作系统的。
本发明解决其技术问题采用的技术方案包括以下步骤:
1)软件缓存划分
在操作系统中可以通过内存页着色的方法实现软件划分物理索引的处理器缓存:在物理索引的缓存中,数据在物理内存中的地址决定了数据所映射到的缓存组编号和组内偏移,用来将数据映射并索引到缓存的哈希函数必须利用物理内存地址中足够的位,从而可以寻址整个缓存;由于当前缓存容量相对较大,这些位数已经超过了内存的页内偏移的位数,物理内存的页编号的低位会与缓存组编号的高位有部分重叠,因此物理内存的页编号决定了缓存中的指定的一部分组,共享相同缓存组编号位的物理内存页的集合构成了一个缓存全等类,整个物理内存可以划分为多个缓存全等类,具体的个数与二级缓存大小和物理内存页的大小有关;
2)缓存区域控制方法
在本方法中使用一个名为缓存区域的结构,控制处理器二级缓存的使用情况;缓存区域中记录了被控制的内存页地址的链表和起止地址、缓存全等类的数量、缓存的使用情况、当前应用程序的内存结构的信息;控制缓存区域结构的函数包括初始化、释放、向缓存区域增加内存段、从缓存区域删除内存段、查找一个内存地址是否在指定缓存区域、为缓存区域分配新的内存页、清除缓存区域的内存页;
3)标记为缓存区域的机制
要控制处理器二级缓存的访问范围,首先要确定应用程序要访问的缓存地址;由软件缓存划分的方法得知,需要保存应用程序访问内存物理页编号的记录;保存访问记录可以利用操作系统处理虚拟内存缺页的中断函数;当需要将一块应用程序的内存段固定在二级缓存中时,通过更改虚实地址转换页表项中这一块内存的权限位和标记位,使访问到这一块内存时会发生缺页中断,在缺页中断处理函数中,根据页表项中的标记位添加相关的分支,即可进行缓存区域的相关操作;
4)向程序员提供的系统调用
程序员通过系统调用来优化二级缓存的使用情况;系统调用将缓存区域的控制函数进行包装,使得程序员可以方便的控制缓存区域,只需要在声明要优化的数据结构之前使用设置缓存区域的系统调用即可。
本发明与背景技术相比,具有的有益的效果是:
本发明通过改进操作系统内核对内存缺页中断和二级缓存的管理机制,添加系统调用,使得操作系统可以控制二级缓存的访问。该发明基于软件缓存划分的方法,利用物理内存页编号和二级缓存组编号的地址重叠部分可以将内存空间划分为多个缓存全等类。程序员在编写对内存频繁访问的应用程序时,可以通过系统调用对规律性频繁访问且体积庞大的数据结构进行针对缓存的优化,从而减少二级缓存访问缺失率,显著提高程序性能。
(1)性能提升。操作系统对CPU二级缓存的替换进行控制,从而克服了固化在缓存控制器硬件中的替换算法的弱点,大幅度提高二级缓存的命中率,使得程序性能得到显著提升。
(2)可拓展性。基于软件缓存划分和缓存全等类的方法,操作系统中可以设计多种缓存替换算法。对于具有不同内存访问规律的程序使用不同的缓存替换算法,可以进一步拓展本发明的应用范围。
(3)便捷性。程序员在编写程序时可以方便的利用相关的系统调用优化程序的缓存访问。
附图说明
图1是软件缓存划分编号位重叠的示意图。
具体实施方式
在实施通用操作系统对CPU二级缓存访问的控制方法时,具体方式如下:
1)软件缓存划分
目前通用CPU二级缓存普遍利用物理内存地址来确定内存所对应的缓存中的位置,也就是说目前通用CPU二级缓存都是物理索引的缓存;当前的二级缓存容量也已经达到足够大,使得控制数据映射的哈希函数利用的物理内存地址位数超过了内存页内偏移量的位数,因此内存的物理页编号的低位与缓存组编号的高位有部分重叠,操作系统可以利用这一部分重叠的位数进行软件缓存划分。
共享相同缓存组编号位的内存物理页的集合构成了一个缓存全等类,每一个类中的内存页都被映射到缓存中一个固定的区域,不同的类映射到的缓存区域不会相同;可用的缓存全等类的数量等于2n,其中n是在页内偏移量位之上的用来做缓存哈希的位数,即内存的物理页编号与缓存组编号重叠的位数。
以IBM PowerPC 970FX处理器为例,它的缓存行大小为128字节,二级缓存共有512组。内存页大小为常见的4KB时,物理内存页编号会与缓存组编号有4位的重叠,该系统中内存可以划分为16个,即24个缓存全等类,操作系统控制的内存地址可以分成16不同的缓存全等类,每一个类中的内存页都被映射到不同的二级缓存区域里。操作系统利用这种不同缓存全等类不会发生缓存地址冲突而进行数据替换的特征,将被标记到缓存区域的内存地址分散到不同的缓存全等类当中,从而防止最近最少使用替换原则发生较差表现的情况,提高二级缓存的命中率。操作系统利用这种特征,也可以在软件上实现其他的缓存替换策略,应对各种缓存表现的应用程序,实现本方法的可拓展性。
2)缓存区域控制方法
缓存区域结构控制着处理器二级缓存的使用情况,记录了被标记的物理内存地址,保存了与硬件相关的控制参数,并提供各种接口函数给外部使用。
被标记的物理内存地址采用链表的数据结构,利用链表的灵活性方便的实现增加、删除的操作。与硬件相关的控制参数包括二级缓存组编号与物理内存页地址的重叠位数,缓存全等类的数量,当前应用程序的内存结构的信息。
提供的接口函数有初始化、释放、向缓存区域增加内存段、从缓存区域删除内存段、查找一个内存地址是否在指定缓存区域、为缓存区域分配新的内存页、清除缓存区域的内存页。初始化函数向操作系统申请内存空间,创建链表,并检查计算机的硬件结构,给相关的控制参数初始值。释放函数释放申请的内存空间。向缓存区域增加内存段函数在链表的末尾增加一个节点,记录增加的内存地址。从缓存区域删除内存段先查找要删除的内存地址所在链表节点,然后从链表中删除该节点。查找一个内存地址是否在指定缓存区域使用简单的链表遍历查找内存地址节点。为缓存区域分配新的内存页函数将申请新的物理内存页,这个新的物理内存页地址对应空闲的二级缓存,然后将原来的内存页的内容复制到新的物理内存页中,同时修改系统中虚地址和实地址的转换表,使得原来的虚地址对应新的实地址。清除缓存区域的内存页将相应的物理内存页释放,使得对应的二级缓存区域相对空闲。
3)标记为缓存区域的机制
利用操作系统处理虚拟内存缺页的中断函数,保存应用程序访问的物理内存页编号记录,从而可以调用缓存区域结构中的接口函数控制物理内存页。
当需要将一块应用程序的内存段固定在二级缓存中时,首先通过相关系统调用将这一段内存对应的虚实地址转换页表项中的用户权限位设置为超级用户,这是为了引起权限错误而发生缺页中断并进入中断函数;然后将页表项中提供给系统程序员的可用位设置为特殊值,这是为了区别于正常的权限错误,这样就标记了该内存页为缓存区域中的内存页。当程序访问到被标记的内存页时,由于应用程序的访问权限属于普通用户,而此内存页被标记为超级用户,会发生缺页中断。在缺页中断处理函数中,根据页表项中的权限位和保留给系统程序员的可用位,增加分支。如果是一个被标记为缓存区域中的内存页,那么查找该内存地址是否已经在所有被控制的物理内存页中,如果在那么跳过,如果不在那么将这个内存页加入最空闲的缓存区域中,不管是否已经被控制都要将原来的页表项中的权限位和可用位置为正常,使得下一次访问该地址不会发生同样的缺页中断。
4)向程序员提供的系统调用
程序员通过系统调用来优化二级缓存的使用情况。系统调用将缓存区域的控制函数进行包装,使得程序员可以方便的控制缓存区域。提供一个特别的系统调用,将要申请的内存地址对应的虚实转换页表项中的用户权限位置为超级用户,并将提供给系统程序员的可用位置为特殊值,从而达到标记的目的。将缓存区域的初始化函数包装到这个特别的系统调用中,使得第一次调用标记内存地址功能的时候自动初始化缓存区域结构。程序员在使用规律性频繁访问且体积庞大的数据结构时,可以在声明该数据结构之前调用这个设置为缓存区域的系统调用,可以明显的提高这个数据结构的二级缓存命中率。
最后,还需要注意的是,以上公布的仅是本发明的具体实施例。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。

通用操作系统对CPU二级缓存访问的控制方法.pdf_第1页
第1页 / 共8页
通用操作系统对CPU二级缓存访问的控制方法.pdf_第2页
第2页 / 共8页
通用操作系统对CPU二级缓存访问的控制方法.pdf_第3页
第3页 / 共8页
点击查看更多>>
资源描述

《通用操作系统对CPU二级缓存访问的控制方法.pdf》由会员分享,可在线阅读,更多相关《通用操作系统对CPU二级缓存访问的控制方法.pdf(8页珍藏版)》请在专利查询网上搜索。

本发明涉及计算机通用操作系统内存管理技术领域,旨在提供一种通用操作系统对CPU二级缓存访问的控制方法。该方法包括以下步骤:在操作系统中以内存页着色的软件实现方法划分物理索引的缓存、利用缓存区域的结构来控制处理器二级缓存的使用情况、标记为缓存区域、提供系统调用。本发明通过改进操作系统内核对内存缺页中断和二级缓存的管理机制,添加系统调用,使得操作系统可以控制二级缓存的访问。程序员在编写对内存频繁访问的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1