[发明专利]基于亲和性感知的DMA缓冲区管理方法及装置有效
申请号: | 201210078365.7 | 申请日: | 2012-03-22 |
公开(公告)号: | CN102662891A | 公开(公告)日: | 2012-09-12 |
发明(设计)人: | 程旭;钟祺;管雪涛;王晶 | 申请(专利权)人: | 北京北大众志微系统科技有限责任公司 |
主分类号: | G06F13/28 | 分类号: | G06F13/28;G06F12/08 |
代理公司: | 常州市维益专利事务所 32211 | 代理人: | 路接洲 |
地址: | 100080 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 亲和性 感知 dma 缓冲区 管理 方法 装置 | ||
技术领域
本发明涉及到计算机系统的内存管理方法,一种基于亲和性感知的DMA缓冲区管理方法及装置。
背景技术
外设的输入输出各需要经历4个步骤。输入的4个步骤是:(1)将数据从外设复制到内核空间。如果没有提供DMA(direct memory access)方式,则复制操作由CPU执行,数据将两次经过存储总线;(2)对数据进行校验和计算,此操作涉及到所有的传输数据,数据将再次经过存储总线;(3)将数据从内核复制到用户空间,此操作必须由CPU执行,数据跨越内核与用户空间,经过两次存储总线;(4)应用从用户空间获取数据。与接收过程相对,输出也需要类似的4个步骤。显然,在整个输入/输出过程中,数据最多会6次经过存储总线,存储总线需要提供6倍于I/O数据流的带宽。
随着片上多处理器系统的普及,多个线程会共享使用片上Cache资源,包括应用程序和内核线程,其中I/O处理属于典型的内核线程。但是传统的最近最少使用(LRU)的Cache替换策略并不能区分不同线程的访问,因此一个线程的Cache失效可能会替换属于另一个线程的Cache块,该问题被称为线程间干扰。为了减少线程间的干扰,相关工作使用亲和性描述数据的分布与访存性能的关系。进程在包含其所需数据的处理器上运行,能减少数据在处理器之间的流动,提高处理器的访存效率,即数据在存储层次中的位置决定了访存的开销。
特别是在近几年高速带宽和设备的出现,系统含有大量用于处理I/O的线程,其与应用程序并行执行。因此,Cache的干扰问题不仅仅局限于应用程序之间,在I/O和应用之间同样会存在Cache干扰的问题。由于I/O的数据重用度较低,并且每次外设进行I/O时,Cache中的部分数据会因替换而写回主存。一旦设备I/O的过程结束,被写回的数据需要再次被使用时,又需要从主存中读取。
因此,针对处理器中各个线程间共享的存储资源,特别是对于资源受限和设计较为简单的嵌入式系统,需要借助操作系统来管理资源,更需要从软件的角度提供一种改进的内存管理方法,方法的灵活性和通用性,从而实现对系统性能的优化。
发明内容
本发明要解决的技术问题是:提出一种基于亲和性感知的DMA缓冲区管理方法及装置,解决如何减少I/O处理过程引入的偏外存储访问,包含两个方面:1.)降低I/O处理过程自身的访存开销;2.)缓解I/O处理过程引入的Cache污染问题。
本发明所采用的技术方案为:一种基于亲和性感知的DMA缓冲区管理方法,包括:以亲和性的高低将缓冲区分为两类,并确定不同I/O处理过程对缓冲区亲和性的需求。并使用纯软件的手段,在操作系统层来标识缓冲区的亲和性。
具体的说,以输出处理过程的特点来标识低亲和性缓冲区,具体包括:输出过程中,由于一致性维护操作后,处理器不再访问输出缓冲区,所以将最近释放的输出缓冲区记录为低亲和性。
以输入处理过程的特点来标识高亲和性缓冲区,具体包括:当输入过程中,缓冲区释放前,处理器需要将输入缓冲区中的数据拷贝到用户缓冲区,所以将最近释放的输入缓冲区标识为高亲和性。
将不同亲和性的缓冲区集中管理,具体包括:所有最近被释放的低亲和性缓冲区存放于低亲和性链表中,最近被释放的高亲和性缓冲区存放于高亲和性链表中。
针对不同亲和性的缓冲区采用不同的管理策略,具体包括:对于高亲和性的缓冲区采用先进先出的管理策略,使高亲和性的缓冲区能尽快被重用,避免高亲和性缓冲区中的数据被挤出Cache;对于低亲和性的缓冲区采用后进先出的管理策略,使推迟低亲和性缓冲区被重用的时机,保证缓冲区中尽可能多的数据位于Cache之外。
同时,本发明还提供了一种基于亲和性感知的DMA缓冲区管理装置,包括缓冲区亲和性分析模块,缓冲区收集模块和缓冲区管理模块,其中:
缓冲区亲和性分析模块,用于分析系统中缓冲区亲和性的高低;高亲和性的缓冲区中的数据会大量占据Cache资源;而亲和性低的缓冲区中的数据会大量位于Cache之外;该模块将被释放缓冲区的亲和性信息传递给缓冲区收集模块;
缓冲区收集模块,用于收集被标了亲和性的缓冲区;其中高亲和性和低亲和性的缓冲区被分开存放,分别保存于两个不同的链表中,便于后续分配缓冲区时能够快速定位不同亲和性的缓冲区;缓冲区收集模块将链表中是否含有对应缓冲区的信息传递给缓冲区分配模块,供后续的分配过程进行决策;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京北大众志微系统科技有限责任公司,未经北京北大众志微系统科技有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210078365.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:用于吸烟物品的过滤器
- 下一篇:一种车载信息娱乐系统、方法及车载端