零复制高速缓存制造技术

技术编号:12980424 阅读:137 留言:0更新日期:2016-03-04 01:57
对不可变缓冲区进行高速缓存使得在不可变缓冲区的寿命期间阻止其数据和地址被改变。第一计算实体维持不可变缓冲区的高速缓存并且具有对不可变缓冲区的强引用。只要任何实体具有对不可变缓冲区的强引用,该不可变缓冲区就被保证在该强引用的历时中持续存在。第二计算实体与第一计算实体通信以获得对不可变缓冲器的强引用并且之后从不可变缓冲器读取数据。在读取来自高速缓存的数据之时,第二计算实体将强引用降级成对不可变缓冲区的弱引用。对不可变缓冲区的弱引用不保证不可变缓冲区在该弱引用的历时中将继续存在。

【技术实现步骤摘要】
【国外来华专利技术】【专利说明】零复制高速缓存背景计算机操作系统性能通常由操作系统在给定时间间隔期间可维持的最大输入/输出(I/o)操作速率(也称为“I/O性能”)来表征。结果,操作系统采用各种公知机制来提升i/o性能。传统上,操作系统是使用向系统程序员提供对如何操纵存储器的非常精细的控制的非受管语言(如汇编语言、C、C++)来编写的。未经检查的指针的使用可被用来最小化操作系统开销并允许增加的吞吐量或降低的等待时间。使用这些未经检查的指针的不利方面在于它们难以创建和推理,导致不可靠的软件和安全弱点。用受管编程语言编写软件提供了充足的正确性益处和开发时间效率。这些受管语言防止程序员创建许多种类的软件缺陷,这造成改进的软件质量和缩短的开发时间。操作系统正确性是用于递送可靠且安全的计算体验的关键因素。因此,使用受管语言来创建操作系统是非常有说服力的主张,因为操作系统可靠性可以改进且开发成本可被降低。为了达到这些益处,受管编程语言在由程序员编写的源代码与物理计算机系统的原始机器资源之间插入抽象层。这一抽象层一般用于约束程序员被允许写什么,并且通过这样做消除了全部的各类潜在缺陷。不幸的是,这一抽象层引入可能损害所创建的软件的性能的开销。结果,普遍假定是受管语言用正确性缺陷来换取性能缺陷。因而,用受管语言编写的软件通常被认为先天地慢于用非受管语言编写的软件。影响受管代码操作系统的具体问题是对在数据穿过系统时在各层之间复制数据的固有需求。这是由以下事实引起的:系统的不同组件存在于不同隔离上下文中并且没有清晰的机制来摆脱这些隔离上下文。
技术实现思路
根据本文描述的至少一个实施例,描述了不可变缓冲区的高速缓存。不可变缓冲区在不可变缓冲区的寿命期间保护其中填充的数据免受改变。不可变缓冲区的物理地址在不可变缓冲区的寿命期间同样被保护免受改变。第一计算实体维持不可变缓冲区的高速缓存并且具有对不可变缓冲区的强引用。只要任何实体具有对不可变缓冲区的强引用,对具有该强引用的每一实体而言,该不可变缓冲区就被保证在至少该强引用的历时中持续存在。第二计算实体与第一计算实体通信以获得对不可变缓冲区的强引用并且之后从不可变缓冲区读取数据。在读取来自高速缓存的数据之时或之后,第二计算实体将对不可变缓冲区的强引用降级成对不可变缓冲区的弱引用。对不可变缓冲区的弱引用不保证不可变缓冲区在改弱引用的历时中将继续存在。这允许第一和第二计算实体具有不可变缓冲区的高速缓存,而不要求两个实体之间的通信,除了用于允许第二计算实体获得对强弓I用的初始访问的第一通信。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。附图简述为了描述能够获得上述和其它优点和特征的方式,各实施例的更具体的描述将通过参考各附图来呈现。可以理解,这些附图只描绘了示例实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释各实施例,在附图中:图1抽象地示出可在其中采用本文描述的一些实施例的计算系统;图2示出用于提供不可变缓冲区的方法的流程图;图3A示出填充缓冲区的过程在其中发生的环境;图3B示出在其中使经填充的缓冲区不可变的环境;图4示出用于使用不可变缓冲区的方法的流程图;图5示出其中不同计算实体具有不可变缓冲区的不同视图的环境;图6示出用于将不可变数据从一个计算实体传递到下一计算实体的方法的流程图;图7示出其中数据流从流源提供给流缓冲区并随后从流缓冲区提供给流消费者的流传输环境;图8示出其中第二计算实体通过第一计算实体的高速缓存来获取高速缓存的环境;图9示出第二计算实体从第一计算实体支持的高速缓存进行第一次读取的方法的流程图;图10示出第二计算实体从第一计算实体支持的高速缓存进行后续读取的方法的流程图;图11示出第一计算实体(或后备高速缓存)执行逐出的方法的流程图;图12示出示例受管代码系统;以及图13描绘正常受管字节阵列,它具有指向它的两个不同的跨度并允许应用将该阵列的各部分看作不同的类型。详细描述根据本文描述的各实施例,描述了促进受管操作系统中的零复制输入/输出(1/0)语义的机制。这样的机制中的一些可被用在非受管代码操作系统中以及受管代码操作系统中。各机制不是互斥的,因为一个、一些、或甚至全部机制可被组合以进一步促进零复制I/O语义。“零复制”指的是被设计成使数据能通过被写入存储器来进入系统并在不必复制该数据的情况下传播通过许多抽象层的体系结构。零复制体系结构不保证没有数据复制发生。相反,它仅仅使机制就位以确保大多数I/O操作可以在无需复制的情况下完成。在本说明书和权利要求书中,“存储器”被定义为任何随机存取存储器,它通常是易失性存储器,但也可包括非易失性部分或可能可完全是非易失性的。在本说明书和权利要求书中,“存储器”被定义为计算系统的主存储介质,包括可由计算系统的微处理器访问且可由硬件设备(如图形控制器或网络接口控制器)经由DMA(直接存储器访问)机制访问的可单独寻址的位置。首先,将描述使用共享数据的不可变缓冲区的不可变可共享零复制批量数据机制。这样的机制允许在无需复制的情况下在计算系统中转移数据的大型缓冲区。该机制将被进一步扩展到数据流在计算系统内的共享使用,具有完全控制以允许高效的资源利用,这些全都在维持完整的零复制语义的同时进行。尽管受管代码系统的当前类型安全性允许更直接地实现这些机制,但这些机制也可在非受管代码系统中使用。其次,将描述用于零复制高速缓存的机制。这样的零复制高速缓存可被用于非受管代码系统和受管代码系统两者中。零复制高速缓存使得可能创建表征进入高速缓存的数据以及从高速缓存返回的数据的零复制语义的通用高速缓存体系结构。第三,将描述进一步增强受管代码系统的性能的若干机制,而不管这些系统是否采用不可变缓冲区或共享数据。这样的受管代码机制包括统一存储器访问和类型安全类型铸造。统一存储器访问使受管代码能够使用一致且可组合的方法均匀地访问受管存储器和非受管存储器(用于I/O缓冲区)两者。类型安全类型铸造使受管代码能够执行指针铸造以允许给定存储器区域被看作不同类型,同时维持完整的类型安全性。将参考图1来描述计算系统的一些介绍性讨论。随后将按以上参考图2-13提供的次序来描述以上列出的机制。计算系统现在越来越多地采取多种多样的形式。例如,计算系统可以是手持式设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统或甚至常规上不被认为是计算系统的设备。在本说明书以及权利要求书中,术语“计算系统”被广义地定义为包括任何设备或系统(或其组合),该设备或系统包含至少一个物理有形的处理器以及其上能含有可由处理器执行的计算机可执行指令的物理有形的存储器。存储器可以采取任何形式,并可以取决于计算系统的性质和形式。计算系统可以分布在网络环境中,并可包括多个组分计算系统。如图1所示,在其最基本的配置中,计算系统100包括至少一个处理单元102和计算机可读介质104。计算机可读介质104可在概念上被认为包括物理系统存储器,它可以是易失性的、非易失性的、或这两者的某种组合。计算机可读介质104还在概念上包括非易失性大容量存储。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。如本文所使用的,术语本文档来自技高网...

【技术保护点】
一种系统,包括:不可变缓冲区,所述不可变缓冲区保护填充在所述不可变缓冲区中的数据在所述不可变缓冲区的寿命期间免于改变,并且还保护所述不可变缓冲区在所述不可变缓冲区的寿命期间免于改变其物理地址;第一计算实体,所述第一计算实体维持所述不可变缓冲区的高速缓存并且具有对所述不可变缓冲区的强引用,其中只要任何实体具有对所述不可变缓冲区的强引用,所述不可变缓冲区就被保证在至少具有强引用的每一实体的所述强引用的历时中持续存在;以及第二计算实体,所述第二计算实体与所述第一计算实体通信以获得对所述不可变缓冲区的强引用,并且之后从所述不可变缓冲区读取数据,其中在从所述高速缓存读取数据之时或之后,所述第二计算实体使对所述不可变缓冲区的强引用降级成对所述不可变缓冲区的弱引用,其中对所述不可变缓冲区的弱引用不保证所述不可变缓冲区将在所述弱引用的历时中持续存在。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:J·于A·E·古德塞尔F·S·特瑞克C·W·布鲁密A·H·莫罕穆德
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1