具体实施方式
概述
在线驱动器模型的支持者把性能优势描述为把API实现合并到驱动器中的主要动机。这个合并有许多不期望的副作用,主要是由于运行时间的后续释放不能在预先释放运行时间的驱动器的顶上添加API方法的特征、性能改进和变化。
这里所描述的发明承认管理代码(包括应用程序、运行时间和驱动器)应该具有客户机实际硬件配置的先验信息,正如JIT编译器具有关于客户机的微处理器类型的先验信息。例如,在JIT时间,系统知道图形驱动器(DirectX 6.0、DirectX7.0等)的有效版本,因此如果管理应用程序和驱动器,JIT编译器就可以发出对特定驱动器版本的可执行调节。
示例网络和分布式环境
一个本领域的普通技术人员会明白可以配置计算机或其他客户机或服务器设备作为计算机网络或分布式计算环境中的一部分。在这点上,本发明属于具有任何数量存储器或存储单元以及在任何数量的存储单元或卷中所产生的任何数量的应用和过程的任何计算机系统。本发明应用于具有在带有远程或本地存储器的网络环境或分布式计算环境中配置的服务器计算机以及客户计算机的环境。本发明还应用于独立计算设备,其具有用于产生、接收和发送与服务有关的信息的编程语言操作、解释和执行能力。
分布式计算通过计算设备和系统之间的直接交换便于计算机资源和服务的共享。这些资源和服务包括信息交换、高速缓存和文件的磁盘存储。分布式计算利用网络连接,使得客户机平衡其整体力量使整个企业得利。在这点上,各利设备具有数据集,期望它们可以实现本发明的图像边界定义技术。
图1提供示例网络或分布式计算环境的示意图。分布式计算环境包括计算对象10a、10b等以及计算对象或设备110a、110b、110c等。这些对象可包括程序、方法、数据存储、可编程逻辑等。对象可包括相同或不同设备部分,比如PDA、电视、MP3播放器、电视、个人计算机等。每个对象可通过通信网络14与另一对象进行通信。该网络本身包括为图1系统提供服务的计算对象和计算设备。根据本发明的一个方面,每个对象10或110可包含数据,期望它可实现图像剪切或边界定义。也期望它可把来自对象10或110的图像剪切与另一对象10或110的图像剪切比较。
在分布式计算结构中,通常可单独用作客户机的计算机相互之间直接通信,并且可用作客户机和服务器,假设不管用做什么它们对于网络都是最有效的。这减少了服务器的负荷并允许所有客户机访问可用于其他客户机的资源,由此增加了整个网络的能力和有效性。
分布式计算可以更有效地协助不同地界间的商务传递服务以及能力。此外,分布式计算可以把数据移动到更靠近消耗数据用作为网络高速缓存机构的点。分布式计算还允许计算网络使用智能代理一起动态工作。智能代理位于对等计算机中并来回传送各种信息。智能代理还可代表其它对等系统开始各种任务。例如,智能代理可用于优先化网络上的任务、改变话务流、本地搜索文件或确定诸如病毒的异常行为并在其影响网络之前制止它。也可以考虑所有其它种类的服务。在这样的环境中可实现本发明图像剪切算法。
还可以明白,诸如110c的对象可以由另一计算设备10或110管理。这样,虽然所描述的物理环境把所连接的设备显示为计算机,但这样的说明仅是示例性的,并且可以选择性地描述物理环境,包括不同数字设备(比如PDA、电视、MP3播放器等)、软件对象(接口、COM对象等)。
有不同系统、部件和网络配置支持分布式计算环境。例如,计算系统可通过有线或无线系统、通过本地网络或广域分布式网络连接起来。当前,许多网络连接于因特网,它提供用于广域分布式计算的基础结构并结合了许多不同网络。
因特网通常指的是使用计算机网络领域中熟知的TCP/IP协议套件的网络与网关集合。TCP/IP是“传输控制协议/接口协议”的缩写。因特网可描述为通过计算机执行允许用户交互和共向网络上的信息的网络协议来互相连接的地理上分布式远程计算机网络系统。由于这样广泛的信息共享,诸如因特网的远程网络一般就发展为开放系统,开发商可实质上无限制地对其设计软件应用以实现特别操作或服务。
这样,网络基础结构允许网络拓扑的主机,比如客户机/服务器、对等或混合结构。“客户机”是类和组的成员,它使用与它无关的另一类或组的服务。这样,在计算中客户机是请求由另一程序所提供的服务的处理,粗略说即是指令或任务集。客户机处理使用所请求的服务,而无需“知道”任何有关其它程序和服务本身的工作细节。在客户机/服务器结构中,特别是网络系统中,客户机通常是访问由另一计算机(例如服务器)提供的共享网络资源。在图1的例子中,计算机110a、110b等可被看作客户机,而计算机10a、10b等可被看作服务器,其中服务器10a、10b等保存随后复制到客户计算机110a、110b等的数据。
服务器通常是在诸如因特网的远端网络上可访问的远端计算机系统。客户机处理过程可在第一计算机系统活动,而服务器处理过程可在第二计算机系统活动,它们互相通过通信媒介通信,由此提供分布式功能并允许多个客户机利用服务器的信息收集能力。
客户机和服务器使用由协议层提供的函数互相通信。例如,超文本传输协议(HTTP)是与万维网(WWW)(或简称“Web”)结合使用的公共协议。通常诸如通用资源定位器(URL)或因特网协议(IP)地址的计算机网络地址用于互相识别服务器或客户计算机。网络地址可称为通用资源定位器地址。例如,在通信媒介上可提供通信。尤其客户机和服务器可通过TCP/IP连接相互耦接以进行大容量通信。
这样,图1说明了示例网络和分布式环境,具有通过网络/总线与客户计算机通信的服务器,其中可使用本发明。更详细地,根据本发明,若干服务器10a、10b等通过通信网络/总线14(它可以是LAN、WAN、内部网、因特网等)与若干客户机或远程计算设备110a、110b、110c、110d、110e等(比如便携式计算机、手提式计算机、瘦客户机、网络应用装置或其它设备,比如VCR、TV、电炉、灯、加热器等)相互连接。这样可以预期,本发明可以应用于任何计算设备,可期望对于图像剪切或边界定义服务可传送到与其连接的另一计算设备。
例如,在通信网络/总线14为因特网的网络环境中,服务器可以是Web服务器,客户机110a、110b、110c、110d、110e等通过诸如超文本传输协议(HTTP)的任何若干已知协议与其通信。服务器10也用作客户机110,这就是分布式计算环境的特征。通信根据需要可以是有线的或是无线的。客户设备110可以或可以不通过通信网络/总线14通信,并且可具有与其相联的独立通信能力。例如,在TV或VCR的情况下,它们的控制可以有或可以没有网络化的方面。每个客户计算机110和服务器计算机10可以配备各种应用程序模块或对象135,并且连接于或访问各种类型的存储元件或对象,通过它们可存储文件或把文件部分下载或移入到其中。根据本发明,任何计算机10a、10b、110a、110b等负责数据库20或其他存储元件的维护或更新,比如根据本发明存储用于处理图像的图像处理程序的数据库20。这样,在具有客户机计算机110a、110b等的计算机网络环境中可使用本发明,这些计算机可访问计算机网络/总线14和服务器计算机10a、10b等并与其交互动作,而它们又与客户计算机110a、110b等以及其他设备111和数据库20交互动作。
示例计算设备
希望图2和以下讨论提供可实现本发明的计算环境的一般简述。然而,应该理解可考虑结合本发明使用手提式、便携式和其他计算设备以及所有类型的计算对象。尽管以下描述了通用计算机,但这只是一个例子,并且本发明可用具有网络/总线协作和交互的瘦客户机实现。这样,本发明可在网络主控服务的环境中实现,其中包含很少或最少的客户资源,例如其中客户设备仅用作对网络/总线的接口的网络环境,比如放置在装置中的对象。实质上,对于本发明图像剪切算法操作的环境,把数据存储在任何地方或从其中检索数据都是期望的或合适的。
虽然不需要,可通过操作系统实现本发明,它由设备或对象服务的开发商使用并且/或者包括在协助处理图像数据的应用软件中。可在由一台或多台计算机(客户工作站、服务器和其他设备)执行的计算机可执行指令(比如程序模块)的一般环境中描述软件。一般,程序模块包括进行特定任务或实现特定抽象数据类型的例程、程序、对象、成分、数据结构等。通常,可在不同实施例中按需要组合或分布程序模块的功能。此外,本领域的技术人员会理解本发明可用其它计算机系统配置实施。适用于本发明的其他熟知计算系统、环境和/或配置包括(但不仅限于)个人计算机(PC)、自动柜员机、服务器计算机、手提式或膝上型设备、多处理器系统、基于微处理器的系统、可编程用户电子设备、网络PC、装置、光、环境控制元件、小型计算机、大型计算机等。本发明也可在分布式计算环境中实施,其中由通过通信网络/总线或其他数据传输媒介链接的远端处理设备完成任务。在分布式计算环境中,程序模块可位于本地或远程计算机存储媒介,包括存储器存储设备,并且客户机节点依次用作服务器节点。
这样图2说明了实现本发明的适用计算系统环境100的例子,尽管如上清楚地表示,但计算系统环境100只是适用的计算环境的例子,并且不希望提出对于本发明使用和功能范围的任何限制。计算环境100不应说明为具有任何从属性或与示例操作环境100中说明的一个部件或部件组合有关的需要。
参照图2。实现本发明的示例系统包括计算机110形式的通用计算设备。计算机110的部件包括(但不仅限于)处理单元120、系统存储器130以及把包括系统存储器的各种系统部件耦接到处理单元120的系统总线121。系统总线可以是几种类型的总线结构的任一种,包括使用任何一种总线结构的存储器总线或存储器控制器、外部总线以及本地总线。通过举例(但非限制),这样的结构包括工业标准结构(ISA)总线、微通道结构(MCA)总线、高级ISA(EISA)总线、视频电子标准协会(VESA)本地总线和外围设备互连(PCI)总线(也称作为Mezzanine总线)。
计算机110通常包括各种计算机可读媒介。计算可读媒介可以是任何可由计算机110访问的可用媒介,并且包括易失性和非易失性媒介、可卸和非可卸媒介。通过举例(但非限制),计算机可读媒介包含计算机存储媒介和通信媒介。计算机存储媒介包括可由任何方法或技术实现的易失性和非易失性、可卸和非可卸媒介,以存储信息,比如计算机可读指令、数据结构、程序模块或其他数据。计算机存储媒介包括(但不仅限于)RAM、ROM、EEPROM、闪存或其他存储器技术、CDROM、数字通用磁盘(DVD)或其他光盘存储器、盒式磁带、磁带、磁盘存储器或其他此存储设备,或任何其他可用于存储期望信息并可由计算机110访问的媒介。通信媒介通常实施计算机可读指令、数据结构、程序模块或其他以调制数据信号形式(比如载波或其他传输机构的数据并包括任何信息传递媒介。术语“已调制数据信号”意思是以对信号中的信息以编码的方式设定或改变了其特性中的一个或多个。通过举例(但非限制)通信媒介包括诸如有线网络或直接有线连接的有线媒介以及诸如声学、RF、红外和其他无线媒介的无线媒介。以上任意的组合应包括在计算机可读媒介范围内。
系统存储器130包括以易失性和/或非易失性存储器形式的计算机存储媒介,比如只读存储器(ROM)131和随机存取存储器(RAM)132。在ROM 131中存储基本输入/输出系统133(BIOS),它包含协助计算机110内元件之间传输信息的基本例程,比如开启期间。RAM 132通常包含数据和/或程序模块,它们通过处理单元120可立即访问的且/或当时可操作的。通过举例(但非限制),图2示出了操作系统134、应用程序135、其他程序模块136以及程序数据137。
计算机110还包括其他可卸/非可卸、易失性/非易失性计算机存储媒介。通过举例,图2只示出了从可卸、非易失性磁盘152读取或写入其中的磁盘驱动器151,以及从可卸、非易失性光盘156(比如CD ROM或其他光媒介)读取或写入其中的光盘驱动器155。可用于示例操作环境中的其他可写/非可卸、易失性/非易失性计算机存储媒介包括(但不限于)盒式磁带、闪存卡、数字通用磁盘、数字视频带、固体状态RAM、固体状态ROM等。硬盘驱动器141通常通过诸如接口140的非可卸存储器接口连接于系统总线121,并且磁盘驱动器151和光盘驱动器155通常通过诸如接口150的可卸存储器接口连接于系统总线121。
以上讨论的以及图2所示的驱动器及其相关计算机存储媒介提供计算机可读指令、数据结构、程序模块以其它计算机110的数据的存储。例如在图2中,硬盘驱动器141示为存储操作系统144、应用程序145、其他程序模块146以及程序数据147。注意这些部件或是与操作系统134、应用程序135、其他程序模块136以及程序数据137相同或是与其不同。在这里以不同的标号给出操作系统144、应用程序145、其他程序模块146以及程序数据147以表示至少它们是不同形式。用户可以通过诸如键盘162和定位设备161(通常称作为鼠标、轨迹球或触摸输入板)的输入设备把命令和信息输入计算机110。其他输入设备(未示出)包括话筒、操纵杆、游戏操纵杆、卫星转盘、扫描仪等。这些和其他输入设备经常通过耦合于系统总线121的用户输入接口160连接于处理单元120,但也可由其他接口和总线结构连接,比如并行端口、游戏端口或通用串行总线(USB)连接。诸如Northbridge的图形接口也可连接于系统总线121。Northbridge是与CPU或主处理单元120通信的芯片组,并且假设负责AGP通信。一个或多个图形处理单元(GPU)184可与图形接口182通信。在这点上,GPU 184一般包括片上存储器存储,比如寄存器存储,并且GPU 184与视频存储器186通信。监视器191或其他类型的显示设备电通过诸如视频接口190的接口连接于系统总线121,它就可与视频存储器186通信。除了监视器191,计算机还包括其他外围输出设备,比如扬声器197和打印机196,它可通过输出外围接口195连接。
计算机110操作于对一个或多个远程计算机(比如远程计算机180)使用逻辑连接的网络或分布式环境中。远端计算机180可以是个人计算机(PC)、服务器、路由器、网络PC、对等设备或其他普通网络节点,并且通常包括许多或所有以上所述的与计算机110有关的元件,虽然图2只说明了存储器存储设备181。图2中所述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但还包括其他网络/总线。这样的网络环境通常出现在家庭、办公室、公司范围的计算机网络、内部网和因特网中。
当用于LAN网络环境中时,计算机110通过网络接口或适配器170连接于LAN 171。当用于WAN网络环境时,计算机110通常包括调制解调器172或其他用于在诸如因特网的WAN 173上建立通信的装置。可以是内部或外部的调制解调器172可通过用户输入接口160或其他合适机构连接于系统总线121。在网络环境中,有关计算机110所述的程序模块和其各部分可存储于远程存储器存储设备中。通过举例(但非限制)图2把远程应用程序185示为位于存储设备181上。可以理解,所示的网络连接是示例性的并且可使用计算机间建立通信链路的其他装置。
示例分布式计算框架和结构
关于个人计算机和因特网的结合已开发并正开发各种分布式计算框架。相似的个人和商务用户配备用于应用程序和计算设备的无缝互操作和允许Web的接口,使计算活动逐步面向Web浏览器或网络。
例如,MICROSOFT的.Net平台包括服务器、构件服务,比如基于Web的数据存储和可下载设备软件。一般说来,.Net平台提供(1)使计算设备的整个范围一起工作的能力以及自动更新用户信息并在对它们全部同步的能力,(2)由更多使用XML而不是HTML引起的Web站点的增加的交互能力,(3)构成定制访问以及把产品和服务从各应用程序的管理的中心开始点传递到用户的在线服务,比如电子邮件,例如诸如Office.Net特征的软件,(4)集中数据存储,它增加了对信息存取的有效性和便利性以及用户和设备间信息的同步性,(5)集成各种通信媒介的能力,比如电子邮件、传真和电话,(6)对于开发商,产生可再使用模块,由此增加生产率并减少编程差错的数量以及(7)还有许多其他跨平台集成特征。
计算系统中驱动器的管理
图3A和3B是应用程序135、运行时间302和驱动器303如何通过API和DDI进行交互的简单描述。
在图形API/DDI配置的环境中,当前普遍有两个驱动器模型:在线驱动器模型和分层驱动器模型。图3A描述了在线驱动器模型,实质上是完全的API实现,构造它运行在特定硬件上,例如视频接口190(图2)。使用在线驱动器模型的API的例子包括专用图形API,比如3Dfx幻灯片和ATI CIF以及OpenGL。
在图3B所示的分层驱动器引入了间接的附加层,其中API实现在通过DDI调用驱动器303之前完成了一些逻辑(比如参数确认)和代码(比如几何流水线)。术语“分层驱动器”并不仅指API在工作之后调用DDI的思想,还指的是驱动器303可根据硬件306完成多少功能来实现不同“层”的思想。例如,仅实现光栅化的图形硬件产品的DDI具有比实现变换与光照以及光栅化更低的层次。
支持各种分层驱动器增加了运行时间302实现的复杂性。例如,MICROSOFT的产品DIRECTX 7.0支持硬件加速的多边形转换与光源,它必须检查基础驱动器是否实现该特征。如果是,应用程序135就可利用该特征创建和使用设备;否则,在软件中必须由运行时间302仿真该特征。结果,由DIRECTX 7.0执行的代码路径根据它正运行在DIRECTX 7.0型驱动器上还是在预DIRECTX 7.0驱动器上而显著不同。
图4进一步说明系统中示例应用程序、运行时间和驱动器的各层。应用程序135、运行时间302和部分驱动器303操作于用户模式中以把绘图命令写入DMA存储器中的硬件专用命令缓冲器。在现今的PC系统中,这些写入通常是非暂时性地写入AGP存储器;并且如该实现例子所述,应用程序135位于EXE中,而运行时间302和用户模式驱动器303位于动态链接应用程序135的DLL中。系统用户模式部分的这些细节可改变;特别地,应用程序135、应用程序135和运行时间302,或者应用程序301、运行时间302和用户模式驱动器303可以是潜在的管理代码。
为了防止用户模式驱动器(如303)的非授权替换,系统通常询问核心驱动器405(由于从安全观点是信任内核码的)以用于用户模式驱动器DLL的加载。
命令缓冲调度程序404(“调度程序”)和核心驱动器405以核心模式一起工作以把命令缓冲器调度给硬件406(调度程序404判定应该调度哪个命令缓冲器,同时核心驱动器405指示硬件406在调度程序404的请求下调度命令缓冲器)。该系统考虑到驱动器逻辑的容量应位于用户模式驱动器403的DLL中,而不是核心驱动器405。当用户模式驱动器403包含把DDL层调用映射到硬件专用命令(它的操作是复杂的并易于出错的,尤其在编译顶点和/或阴影模型程序时)中的大量代码时,核心驱动器405就相对较小且较简单,从而最大化了系统鲁棒性。
图5说明了当应用程序135在示例图形操作中进行API调用时发生的事件序列。命令缓冲器在图5中没有专门表示为硬件部件;根据图4,用户模式驱动器303把硬件专用命令写入设备的当前命令缓冲器,命令缓冲调度程序(系统核心支持530的一部分)通过核心模式驱动器405把指令缓冲器调度到硬件306,并且完成的命令缓冲器可由系统中的应用程序135循环使用。注意,多个应用程序135潜在共享可用命令缓冲池,由系统核心支持530仲裁该资源的共享。
当应用程序135开始创建绘图环境501时,系统核心支持530检查是否能创建新的指令缓冲器531。如果是这样,创建532新的指令缓冲器并对其初始化533,并且在应用程序135进行绘图调用502之前该线程得到已初始化的命令缓冲器。如果在步骤531不能创建命令缓冲器,那么应用程序135必须等待直到初始化命令缓冲器变为可用534。一旦应用程序135得到了命令缓冲器,应用程序135、运行时间302和用户模式驱动器303进入三个部件之间的通常交互,它使硬件专用的命令写入命令缓冲器。由运行时间302确认来自应用程序135的绘图调用502;随后检查512确定是否需要清洗当前命令缓冲器。如果不是,把绘图命令译为更简单的、规范的DDI调用513并把它传递到用户模式驱动器520。驱动器把DDI调用译为硬件专用命令并试图把它们写入命令缓冲器。如果对清洗的检查522确定命令缓冲器中没有空间,那么必须把命令缓冲提交到系统核心支持530并且在命令写入之前从同处得到的新命令缓冲器并继续执行。如果运行时间302或用户模式驱动器303确定需要清洗,就根据步骤535把命令缓冲器加入等待队列。同时,系统核心可以检查536是否立即提交命令缓冲器(通常由于没用指令缓冲器运行)。如果不是,把命令缓冲器留在等待队列中并且必须得到新的命令缓冲器534。注意该功能框(它等待直到合适的初始化的命令缓冲可用且随后把它分配给设备)相同于应用程序135开始绘图之前其需要的操作。
当为调度540选择准备命令缓冲器时,系统核心支持530使核心驱动器405环境把硬件切换为合适的环境551并把命令缓冲器调度到硬件552。随后硬件306读取并执行命令缓冲器561,直到它被抢占或者命令缓冲器用完。如果指令缓冲器正常完结563,硬件就发出中断信号并执行中断服务例程553。ISR可以希望在此时保存硬件环境554,虽然驱动器希望推迟这个操作到环境切换551,该情况下应要求硬件连续执行两个命令缓冲器,它们操作于同一环境。在步骤554之后,核心系统支持530释放该命令缓冲器所需的资源538,并且传送任何通知机构,比如让所考虑的客户机知道完成命令缓冲器的事件。在步骤538后,核心系统支持具有两个不同的任务:它必须重新初始化新的可用的命令缓冲器并把它加入初始化池533,并且它必须解锁任何等待命令缓冲器并把它们移到准备队列中539。在步骤539后,调度540可选择另一命令缓冲器540。
根据本发明的一个方面,关于图4和5描述的相互处理通信的复杂性说明了对管理代码的需要。尤其关于图5所示的系统可平衡管理代码,其中以中间语言的形式传递应用程序135、运行时间302和/或用户模式驱动器303的部分并在客户机进行JIT编译。把三个部件分别以中间语言的形式传递到客户机。JIT编译器随后将它们合成为所有三个部件的部分都包括的统一的对象代码块。这样的结构会使系统执行更优的对象代码。此外,可把应用程序135对入口点的调用中的常量传送到运行时间302和用户模式驱动器303,潜在地产生了把若干常量字写入命令缓冲器的对象代码,而不是交叉几个函数调用的边界以完成同一效果。应用程序135的中间语言形式仍旧是硬件独立的,这是由于用户模式驱动器303专用于客户机上的图形硬件。此外,可把所有管理代码通过网络传递到系统,如以上图1所示。
在通过产生所有三个部件(即应用程序135、运行时间302和用户模式驱动器303)的管理代码完成最佳潜在性能改进的同时,系统可管理应用程序135和运行时间302,并且使它们与独立的用户模式驱动器303交互动作,或者甚至仅管理应用程序135并使其与独立的运行时间302和用户模式驱动器303交互动作。事实上,可使这样的子系统平稳共存,只要中间语言和运行时间302和/或用户模式驱动器303的用户模式DLL形式都是可用的。
系统还可从迟限定的管理代码中得利,这大致已作了描述。如果运行时间302是可管理的,那么JIT可进行优化,比如在运行时间的参数确认检查。在图4的系统中,由JIT产生的统一对象代码块把规范命令缓冲器数据写入可DMA的存储器以最终提交给硬件。在图5的系统中,由JIT产生的对象代码把数据由核心模式驱动器405发送到分析和转译的中间缓冲器。下面该部分将更详细地描述本发明管理代码方面的系统和优点。
管理代码
常规的软件调用机构需要写入资源代码、把资源代码编译为特定计算机类型的可执行模式,并在客户计算机上安装可执行代码,这样它就可以运行了。在.Net基础结构中允许的另一方法在该过程中添加额外步骤。把资源代码译为可便于编译的中间形式,它可安装在客户机计算机上。随后客户计算机使用JIT(“运行时执行”)编译器把中间代码译为本机可执行的“管理”代码,这样它就可以运行了。该方法有几个优点。一个优点就是中间代码是独立平台的;由于译为可执行代码是发生在客户机上,所以任何知道如何编译中间代码的客户机就可执行应用程序。相关的优点就是可把独立平台的中间代码发送到当写入代码时尚不存在的平台并在其上运行。
然而,在本发明的环境中,JIT编译的最重要优点就是当产生管理代码时,JIT编译器具有目标计算机实际特性的先验信息(即运行JIT编译器所在的客户机)。如果客户计算机具有特定类型的微处理器,那么JIT编译器可发送该特定微处理器本机的代码。例如,Pentium Pro微处理器把条件移动指令加入x86指令集,而Pentium 3微处理器添加了不可用于其上代的预取和其它高速缓冲管理指令。在常规调用的软件中支持者这些微处理器专用的指令需要开发商写入使用所有不同特征的资源代码,随后写入检测软件以检测哪条代码路径在代码运行所在的客户机上执行。JIT步骤使开发商免于完成该任务,并甚至提供开发商对未来革新的保护。换句话说,包括有利于开发商应用的新指令的计算机可包括JIT编译器以知道如何发送该指令;应用程序从新指令中得利,即使开发应用程序时它不存在。
在线驱动器模型的支持者把性能优势描述为把API实现与驱动器结合的主要动机。这个结合有许多不期望的副作用,主要是由于运行时间的后续释放不能在预先释放运行时间的驱动器之顶上添加API方法的特征、性能改进和变化。在突出基于驱动器安装工作的API改进的效用的DIRECTX的历史中有充足的先例。这些API的改进范围从便利绘图方法(比如在预DIRECTX 5.0驱动器上工作的DIRECTX5.0基本绘图API);性能改进(比如在预DIRECTX 6.0驱动器上工作的DIRECTX 6.0几何流水线);到API级策略改变(比如在预DIRECTX 6.0驱动器上工作的DIRECTX6.0文本管理器)。如果所考虑的驱动器是在线驱动器,这些类型的改进是困难的或不可能的。
就像JIT编译器具有客户机上微处理器的先验信息,它也具有客户机实际硬件配置的先验信息。尤其它具有客户机中图形处理器和相关驱动器的类型的信息。例如,在JIT时间,系统知道图形驱动器的有效版本(DIRECTX 6.0、DIRECTX 7.0等),因此如果应用程序和驱动器是可管理的,那么编译器可发送对于特定驱动器版本的可执行调节。图6描述了这样的系统。
以诸如MICROSOFT的CLRT的中间语言(IL)的形式接收应用程序135和运行时间302,JIT编译器602取得应用程序IL 135和运行时间IL 302,并把它们结合到单独编译的管理应用程序604中。该应用程序与驱动器303和硬件306通信,如上所述。
图6中描述的基于JIT的方法产生了许多优化,包括:
--对不同DDI的支持更有效,由于在编译时间DDI类形是已知的。这消除了大量条件代码。
--如果在JIT时间条件已知就可消除条件代码-例如对于保证有效的参数可消除参数确认。
--通常的运行时间函数还是可以是内嵌的,使指令围绕函数调用调度。
--可执行代码(内嵌的或在运行时间实现中的)的目标可针对特定主处理器类型。随着微处理器销售商增加它们修改指令集的速度,处理器专用优化的重要性也增加。
通过平衡基于中间语言(IL)的驱动器可进一步改进该结构的性能。
图7提供了管理代码系统的备选实施例。这里,该结构可使编译的应用程序135把硬件专用的命令直接写入命令缓冲器或FIFO中。除了性能含义外,其他潜在好处包括减少IHV传送跨平台驱动器所需的工程工作以及更好地使确认工具确信驱动器的正确性。把应用程序135、运行时间302和驱动器303都以IL的形式传递到JIT 602。JIT 602把它们转换为管理应用程序604。
在历史上,DIRECTX实现了分层驱动器模型,其中运行时间把图形和绘图命令译为简化的、硬件独立的标志流。当DIRECYX运行时间确定需要清洗时(即必须由硬件执行流中的命令),它就转换为核心模式并把命令流传递到图形驱动器。随后驱动器分析命令流并把它译为硬件专用命令,并且通常把那些命令写入存储器缓冲器以由硬件消耗。
返回参考图4并结合图6和7,核心模式驱动器405应具有最小容量,它只实现足够的代码以初始化硬件、开始DMA操作以消耗已组成的命令缓冲器,并建立及处理中断。在图4的环境中实现本发明可采取两种形式。首先如上所述,应用程序135和运行时间302可由JIT 602编译以使迟限定的管理代码与驱动器DLL 303交互动作。JIT 602随后在编译时间会知道驱动器DLL 303的额外特性(例如,它是否实现变换和光照加速),并且当产生客户机计算机的对象代码时它可利用该信息。
在图4环境中实现的本发明第二“管理驱动器”变例需要具有都由JIT 602编译的应用程序135、运行时间302和驱动器DLL 303,以使统一可执行代码块进行从API的转译以及把硬件专用的命令写入DMA存储器410。该结构把鲁棒性和分层驱动器模型的其他优点与由在线驱动器模型的硬件特征得到的有效性结合。因此,与其它驱动器结构相比,这个“管理驱动器模型”提供较高潜在性能。
如上所述,尽管结合不同计算设备和网络结构描述了本发明的示例实施例,但基本概念可应用于任何计算设备或系统,其中期望对应用程序和驱动器管理管理。这样,根据本发明管理应用程序的技术可应用于各种应用和设备。例如,本发明的优点可应用于计算设备的图形系统,如果作为设备上的独立对象、作为另一设备的一部分、作为来自服务器的可下载对象、作为设备或对象和网络之间的“中间人”等等。可存储所产生的管理应用程序以为以后使用,或输出到另一独立、从属或相关过程或服务。尽管这里示例编程语言、名称和例子选择为不同选择的代表,但不希望这些语言、名称和例子是限制性的。
结合硬件或软件或两者组合(当需要时)实现这里所述的各种技术。这样本发明的方法和设备或其某些方面和部分可采取有形媒介中实施的程序代码(即指令)的形式,比如软盘、CD-ROM、硬盘或任何其他机器可读存储媒介,其中当把程序代码加载进诸如计算机的机器并由其执行时,该机器变为实现本发明的设备。在可编程计算机上执行程序代码的情况下,计算设备一般包括处理器、可由处理器读取的存储媒介(包括易失性和非易失性存储器和/或存储元件),至少一个输入设备以及至少一个输出设备。可使用本发明边界发现技术的一个或多个程序(例如通过使用数据处理API等)较佳地以高级面向过程或对象的编程语言实现以与计算机系统通信。然而,如果需要程序可以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释语言并结合硬件实现。
也可通过以在一些传送媒介(比如通过电线或电缆、通过光纤或通过任何其他形式的传送)上发送的程序代码的形式实施的通信实现本发明的方法和设备,其中当接收程序代码并加载到机器(比如EPROM、门阵列、可编程逻辑设备(PLD)、客户计算机、视频记录器等)中并由其执行时,具有如以上示例性实施例所述的驱动器技术的接收机变为实现本发明的设备。当在通用处理器上实现时,程序代码结合处理器以提供操作实现本发明功能的唯一设备。此外,结合本发明使用的任何存储技术总是硬件和软件的组合。
尽管结合各图的较佳实施例描述了本发明,可以理解可用其它相似的实施例,或者可对所述实施利进行修改和添加而不偏离本发明实现其相同功能。例如,尽管在网络环境的环境中描述了本发明示例网络环境(比如对等网络环境),但本领域的技术人员会明白本发明并不限于此,并且如本申请所述,该方法可应用于任何计算设备或环境,比如游戏操作台、手提式计算机、便携式计算机等,不管有线还是无线,并且该方法可应用于任何数量的此种通过通信网络连接的计算设备并通过网络交互。
此外,应该强调要考虑包括手提式设备操作系统和其它应用程序专用的操作系统的各种计算机平台,尤其当无线网络设备的数量持续增加。进一步,本发明可用或通过多个处理芯片或设备实现,并且通过多个设备相似地实现存储。因此,本发明应不限于任何单个实施例,但是应以根据所附权利要求书的广度和范围说明。