TWI276998B - Systems and methods for managing drivers in a computing system - Google Patents

Systems and methods for managing drivers in a computing system Download PDF

Info

Publication number
TWI276998B
TWI276998B TW091137490A TW91137490A TWI276998B TW I276998 B TWI276998 B TW I276998B TW 091137490 A TW091137490 A TW 091137490A TW 91137490 A TW91137490 A TW 91137490A TW I276998 B TWI276998 B TW I276998B
Authority
TW
Taiwan
Prior art keywords
driver
application
hardware
computer
instructions
Prior art date
Application number
TW091137490A
Other languages
Chinese (zh)
Other versions
TW200305823A (en
Inventor
Nicholas P Wilt
James Miller
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of TW200305823A publication Critical patent/TW200305823A/en
Application granted granted Critical
Publication of TWI276998B publication Critical patent/TWI276998B/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

Managed code, including applications, runtime, and driver, have a priori knowledge of the client's exact hardware configuration, just as the JIT compiler has a priori knowledge of the microprocessor type on the target computer system. At compile time, the compiler knows the effective version various system drivers, so that the compiler can emit an executable tuned for a particular driver version and target system.

Description

1276998 ⑴ 玖、發明說明 _ (發明說明應敘明:發明所屬之技術領域、先前技術、内容、實施方式及圖式簡單說明) 技術領域: 本發明涉及管理計算系統中驅動程式的系統和方法。 先前技術: 就電腦系統設計而言,驅動程式是使硬體功能對作業系統 公開的軟體組件,以致作業系統進而可使那些功能對應用 程式公開。通常作業系統透過「裝置驅動程式介面」(「DDI」) 和驅動程式互動,謹慎定義的通訊協定啟動作業系統以:載 入驅動程式、詢問硬體提供的功能,並使那些功能供應用 程式使用。 作業系統提供給應用程式的軟體介面,即是「應用程式 設計介面」(「API」)。作業系統提供的API,使應用軟體抽 象化,但不一定類似基礎硬體的特性。大幅遠離基礎硬韹 的例子,=是為大量儲存所提供的目錄/檔案軟體抽象化。· 與基礎硬體不同的另一軟體抽象化是虛擬記憶體,這會使 應用程式通透地使用本機硬碟儲存體,如同它是隨機存取 記憶體一般。 當API導致硬體資源受到利用的時候,作業系統透過DDI 呼叫驅動程式利用那些資源。由於API和基礎硬體提供的 軟體抽象4匕=之間的差異,從API呼叫到DDI呼叫的轉譯,需 要處理大量的邏輯和程式碼。就這個規格而言,應用程一式 —層級APf和驅動程式一層級DDI之間的軟體,統稱為「執 行時間」。1276998 (1) Description of the invention _ (Description of the invention should be described: a technical field, prior art, content, embodiment and schematic description of the invention) Technical Field: The present invention relates to a system and method for managing a driver in a computing system. Prior Art: In terms of computer system design, a driver is a software component that exposes hardware functions to the operating system so that the operating system can make those functions public to the application. Usually, the operating system interacts with the driver through the Device Driver Interface ("DDI"), and the protocol protocol is carefully defined to start the operating system: load the driver, ask for the functions provided by the hardware, and use those function providers. . The software interface provided by the operating system to the application is the "application design interface" ("API"). The API provided by the operating system makes the application software abstract, but not necessarily similar to the characteristics of the underlying hardware. A sharp departure from the basic hard example, = is the abstraction of the directory/archive software provided for mass storage. • Another software abstraction that differs from the underlying hardware is virtual memory, which allows the application to transparently use native hard disk storage as if it were random access memory. When the API causes hardware resources to be utilized, the operating system utilizes those resources through the DDI call driver. Due to the difference between the software abstraction provided by the API and the underlying hardware, translation from API calls to DDI calls requires a large amount of logic and code. For this specification, the software between application-level APf and driver-level DDI is collectively referred to as "execution time."

應用程式、驅動程式等通常由高階語言撰寫,例如像C iApplications, drivers, etc. are usually written in high-level languages, such as C i

-6- 1276998 (2) 。這類語言通常主要由編譯實作為機器碼。 ,驅動程式與在系統上運作的應用程式和其 撰寫。然後應用程式和驅動程式,通常在安 應用程式執行時,動態(例如,DLL )連結在 統的優點是,編譯器可針對處理器的特定 將程式碼最佳化。但是,編譯器不能針對拍 例如PENTIUM 4和PENTIUM 3,將程式碼最佳化 器不會將其他系統參數包括驅動程式版本、 組件的程式碼最佳化,更不會考慮目標系統 制。而是,應用程式或執行時間層級系統, 昂貴的邏輯計算來判斷這類參數,而且由袁 以致於程式會佔用所有類別的電腦系統來^ 另一個適用的程式設計範例是在執行時 。及時(JIT)編譯器是這類系統的範例。其他 譯的系統,包括在說明狀態下立刻開始執行 統,但同時編譯程式碼並持續地使編譯最β 編譯器,當類別載入虛擬機器的時候,虛擬 法指標,會被指向JIT編譯器的指標所取代 次呼叫每個方法時,同時會叫用JIT編譯器 法。然後虛擬方法表格中的指標,以指 碼版本,以致於未來對方法的呼叫將跳到 JIT編譯系統,例如像JAVA位元碼,CLRT指令 間語言(IL)傳送程式碼給目標機器的優點。 成把IL轉換成本機處理器可執行的指令。因 發明說明續頁-6- 1276998 (2). Such languages are usually mainly compiled as machine code. , drivers and applications that run on the system and their authoring. Then the application and the driver, usually when the application is executed, the advantage of dynamic (for example, DLL) linking is that the compiler can optimize the specific code for the processor. However, the compiler cannot target programs such as PENTIUM 4 and PENTIUM 3, and the code optimizer does not optimize other system parameters including the driver version, component code, or the target system. Instead, applications or execution time-level systems, expensive logic calculations to determine such parameters, and Yuan so that the program will occupy all types of computer systems ^ Another applicable programming paradigm is at execution time. The Just-In-Time (JIT) compiler is an example of such a system. Other translated systems, including the implementation of the system immediately in the description state, but at the same time compile the code and continue to compile the most beta compiler, when the category is loaded into the virtual machine, the virtual method indicator will be pointed to the JIT compiler. When the indicator replaces each method, the JIT compiler method is also called. The metrics in the virtual method table are then indexed so that future calls to the method will jump to the JIT compilation system, such as JAVA bit code, CLRT inter-instruction language (IL) to transfer the code to the target machine. Converting the IL into an instruction executable by the processor. Due to the description of the invention

在這類情況-下 他的程式分開 裝流程期間或 一起。這類系 類別(例如X86) 「定微處理器, 。而且,編譯 以及其他硬_體-的特定系統限 必須使用代價 、處理器限制, 九行編譯。 間編譯程式碼· 在執行時間編_ 的連續編譯系 .化。藉由及時 方法表中的方 。然後,第一 ,以編譯該方 向方法的機器 機器碼。這些 等等,有以中-編譯器被設計 此,相同的IL 1276998 (3) 發明說明續頁 指令可以送至具有不同本機處理器的電腦,但仍在目標i 理器上執行。 — 雖然這類中間語言編譯器,編譯在目標電腦系統上的中間 語言指令,但是他們也不會針對特定的目標電腦系統將程 式碼最佳化,包括解釋驅動程式版本和其他的硬體組件。 發明内容: 有鑑於前述内容,因此本發明提供包含應用程式和執行 時間、及/或驅動程式的管理程式碼。管理程式碼,由_具-有電腦系統精確硬體配置先驗知識的編譯器所編譯,正如 JIT編譯器具有用戶端上微處理器類型的先驗知識。在編 譯時,各種不同的硬體驅動程式的系統有效版本均為已知 ,因此,如果要管理應用程式和驅動程式,編譯器可以送 出一專為;特定驅動程式版本所調整的可執行檔。 因此,本發明包含的系統和方法,可管理程式碼,以編、 譯針對具有選定處理器的作業系統和與計算組件互動的 驅動程式所配置的程式碼。該系統包含以一中間語言編譯 器可讀取的中間語言所接收的複數個應用程式指令,以及 以一中間語言編譯器可讀取的中間語言所接收的複數個 執行時間指令。中間語言編譯器可將應用程式指令和執行 時間指令_」譯為處理器可執行的一組管理指令碼指令-, 以便與選取的驅動程式互動。驅動程式(或驅動程式的部 份)也可以=中間語言提供,並根據應用程式指令和執行時-間指令編譯為一組管理程式碼指令。 實施方式: 1276998 發明說明續頁 (4) 概覽 - 線上驅動程式模型的支持者表示,效能優越是合併API 實作至驅動程式之内的主要動機。這個合併有許多不受歡 迎的副作用,主要因為無法釋放後續的執行時間,以便在 執行時間的釋放之前,於驅動程式的最上方加入ΑΠ原則 的特性、效能改良或變更。 此處描述的本發明發現,管理程式碼,包括應用程式、 執行時間和驅動程式,應具有用戶端精確硬體配置的先驗-知識,正如JIT編譯器具有用戶端上微處理器類型的先驗 知識。例如,在JIT時,系統知道圖形驅動程式(DirectX 6.0 、DirectX 7.0等)的有效版本,因此,如果應用程式和驅動程 式被管理,JIT編譯器可以送出針對特定驅動程式版本調 整的可執:行檔。 範例網路-和分散式環境 - 本行業的專家可瞭解,電腦或其他用戶端或伺服器裝置 可以部署成電腦網路的一部份,或在分散式計算環境中運 作。就這點來看,本發明與具有任何數量的記憶體或儲存 單元的電腦系統有關,以及與在任何數量的儲存單元或容 量上發生的應用程式和流程有關。本發明可適用具有伺服 器電腦和_1_戶端電腦的環境,該電腦部署在網路環境或分 散式計算環境中,具有遠端或本機儲存裝置。本發明也可 套用到單機型的計算裝置,具有程式語言功能、解譯和執-行功能,用於產生、接收和傳送與服務相關的資訊。 分散式計算有助於在計算裝置和系統之間電腦資源和 1276998 發明說明續頁 (5) 服務的直-接交換。這些資源和服務包括檔案的資訊交換一、 快取儲存、和磁碟儲存。分散式計算利用網路連接,允許 用戶端善用他們的集體電力,以加惠整個企業。就這點來 看,不同裝置具有資料集以執行本發明影像邊界技術,是 眾人想要的技術。 圖1提供一範例網路或分散式計算環境的示意圖。分散 式計算環境包含計算物件l〇a、10b等,以及計算物件或裝 置110a、110b、110c等。這些物件可包含程式、方法、瓷料-儲存、可程式的邏輯等。該物件可包含相同或不同的裝置 部份,例如像PDA、電視、MP3播放機、電視、個人電腦等 。每個物件可以藉由通訊網路14與另一物件通訊。這個網 路它本身.可包含其他的計算物件和計算裝置,以提供服務 給圖1的系統。根據本發明的觀點,每一物件10或110可包 含執行影I剪輯或邊界定義所需要的資料。也希望比較來-自物件10或110的影像剪輯,與另一物件10或110的影像剪 輯。In this case - his program is installed separately during the process or together. This type of category (such as X86) "fixes the microprocessor, and, the compiler and other hard_body-specific system limits must use the cost, processor limits, nine lines of compilation. Inter-compiled code · at execution time _ The continuous compilation is based on the method in the method table. Then, first, to compile the machine code of the direction method. These and so on, there is a medium-compiler designed this, the same IL 1276998 ( 3) Description of the invention The continuation instructions can be sent to a computer with a different native processor, but still executed on the target I. — Although such intermediate language compilers compile intermediate language instructions on the target computer system, They also do not optimize the code for a particular target computer system, including interpreting the driver version and other hardware components. SUMMARY OF THE INVENTION In view of the foregoing, the present invention provides application and execution time, and/or Or the driver's management code. The management code is compiled by the compiler with the prior knowledge of the computer system's precise hardware configuration, just like JIT. The translator has a priori knowledge of the type of microprocessor on the client. At compile time, the valid versions of the various hardware drivers are known, so if you want to manage applications and drivers, the compiler can send them out. An executable file adapted for a particular driver version. Accordingly, the present invention encompasses systems and methods for managing code for editing and translating operating systems for selected processors and drivers for interacting with computing components Configurable code. The system includes a plurality of application instructions received in an intermediate language readable by an intermediate language compiler, and a plurality of execution times received in an intermediate language readable by an intermediate language compiler The intermediate language compiler can translate the application instructions and execution time instructions into a set of management instruction code instructions executable by the processor to interact with the selected driver. The driver (or part of the driver) can also be provided in the intermediate language and compiled into a set of management code instructions based on the application instructions and execution-time instructions. Implementation: 1276998 Description of the Invention (4) Overview - Proponents of the online driver model say that superior performance is the main motivation for merging API implementations into drivers. This merge has many unwelcome side effects, mainly because the subsequent execution time cannot be released, so that the characteristics, performance improvements, or changes of the principle can be added to the top of the driver before the release of the execution time. The invention described herein finds that the management code, including the application, execution time, and driver, should have a priori-knowledge of the client-side precise hardware configuration, just as the JIT compiler has the type of microprocessor on the client side. Knowledge. For example, in JIT, the system knows the valid version of the graphics driver (DirectX 6.0, DirectX 7.0, etc.), so if the application and driver are managed, the JIT compiler can send executables for specific driver version adjustments: files. Example Network - and Decentralized Environment - Experts in the industry can understand that a computer or other client or server device can be deployed as part of a computer network or in a decentralized computing environment. In this regard, the present invention relates to computer systems having any number of memory or storage units, and to applications and processes that occur in any number of storage units or capacities. The present invention is applicable to an environment having a server computer and a client computer deployed in a network environment or a distributed computing environment with remote or local storage devices. The present invention can also be applied to a stand-alone computing device having program language functions, interpretation and execution functions for generating, receiving and transmitting service related information. Decentralized calculations facilitate computer resources between computing devices and systems. (5) Direct-to-exchange of services. These resources and services include information exchange of files, cache storage, and disk storage. Decentralized computing leverages network connectivity, allowing users to leverage their collective power to benefit the entire enterprise. In this regard, different devices have a data set to perform the image boundary technique of the present invention, which is a technique that everyone desires. Figure 1 provides a schematic diagram of an example network or distributed computing environment. The decentralized computing environment includes computing objects l〇a, 10b, etc., as well as computing objects or devices 110a, 110b, 110c, and the like. These items can include programs, methods, porcelain-storage, programmable logic, and the like. The object may contain the same or different device parts, such as PDAs, televisions, MP3 players, televisions, personal computers, and the like. Each item can communicate with another item via communication network 14. This network itself. Can contain other computing objects and computing devices to provide services to the system of Figure 1. In accordance with the teachings of the present invention, each object 10 or 110 can contain the information needed to perform a shadow clip or boundary definition. It is also desirable to compare image clips from object 10 or 110 to image clips of another object 10 or 110.

在分散式計算架構中,電腦,傳統上可獨自作為用戶端 、彼此間直接通訊、並可同時擔任用戶端和伺服器,假設 任一角色對網路都是最有效率的。這減少伺服器的負載, 並允許所_亦_用戶端存取在其他用戶端上得到的資源,藉此 增加功能和整個網路的效率。 - 分散式計算可以超越地理上限制,更有效率地協助企業― 傳送服務和功能。而且,分散式計算可以將資料移動到比 較靠近使用的位置,當做網路快取機制。分散式計算也允 -10· 1276998 發明說明續頁 ⑹ 許計算網路使用智慧型代理裝置動態地共同工作。代理-裝 置位在對等電腦上,且與各種不同類型的資訊來回通訊、 代理裝置也可代表其他對等系統啟始工作。例如,智慧型 代理裝置可以用來優先執行在一網路上的工作、變更交通 流量、搜尋本機檔案、或決定例如像病毒判斷等異常的行 為,並在它影響網路之前制止它。也可同時注意其他所有 類型的服務。本發明的影像剪輯運算法可在這類環境中實 作。 —- 也可瞭解一物件,例如像110c,可裝載在另一計算裝置 10或110上。因此,雖然實體環境描述可顯示被連接的裝 置如電腦,這類圖例只是範例,實體環境可另一方面被描 述或描述包含各種不同的數位裝置,例如像PDA、電視、 MP3播放機等,軟體物件,例如像介面、COM物件等等。、 有支援汾散式計算環境的多種系統、組件和網路配置。-例如,計算系統可以透過區域網路或廣域網路,由有線或 無線系統連接在一起。目前,許多網路耦合到網際網路, 提供基礎結構給廣泛分散式的計算,並包含許多不同的網 路。 網際網路普遍稱為利用通訊協定TCP/IP組合的網路和閘 道的集合j 衾通訊協定在電腦網路中是眾所週知的。TCPAP 是「傳送控制通訊協定/介面程式」的縮寫。網際網路可描 述為一種她理分散式的遠端電腦網路的系統,與執行網路_ 通訊協定的電腦互連,並允許使用者透過網路互動及共用 資訊。由於這類普遍的資訊共用架構,遠端網路例如像網 1276998 發明說明續頁 ⑺ 際網路,因此進展為一種開放的系統,開發人員可以設計 用來執行特殊化操作或服務的軟體應用程式,本質上沒有 任何限制。 因此,網路基礎結構造成多種網路拓樸,例如像主從式 、對等共享、或拼合架構。「用戶端」是使用與它無關的 另一類別或群組服務的類別或群組的一個成員。因此,在 計算時,一個用戶端是一流程,簡單地說,也就是,要求 由另一程式提供服務的一組指令或工作。用戶端流程利_用-要求服務,不需「知道」另一程式或服務本身的任何工作 細節。在主從式架構中,特別一網路系統,用戶端通常是 存取由另一電腦,例如一伺服器,提供共用網路資源的一 台電腦。在圖1的範例中,電腦110a、110b等可以視為用戶 端,電腦dOa、10b等可視為伺服器,其中伺服器10a,10b等 負責維護。在用戶端電腦ll〇a、110b等中複製的資料。 _ 伺服器通常是可透過遠端網路,例如像網際網路,存取 的一種遠端電腦系統。用戶端流程可在一第一電腦系統中 作用,伺服器流程可在一第二電腦系統中作用,在一通訊 媒體上彼此通訊,因此提供分散式功能並允多個用戶端利 用伺服器的資訊收集功能。 用戶端何服器利用由一通訊協定層提供的功能,彼此 通訊。例如,「超文字傳送通訊協定」(HTTP)是與「全球實 訊網」(WWW)(或簡稱為「網路」(Web))有關的通用通訊協定-。通常,一電腦網路位址例如像通用資源***(URL)或 網際網路通訊協定(IP)位址,可用來辨識彼此的伺服器或 -12- 1276998 發明說明續頁 ⑻ 用戶端電腦。網路位址可稱為是「通用資源***」位址 。例如,通訊可以透過通訊媒體提供。特別是,用戶端和 伺服器可經由TCP/IP連接彼此耦合,以用於高容量通訊。In a decentralized computing architecture, computers can traditionally act as a client, communicate directly with each other, and act as both a client and a server, assuming that any role is most efficient for the network. This reduces the load on the server and allows the client to access resources available on other clients, thereby increasing the functionality and efficiency of the entire network. - Decentralized computing can exceed the geographic limits and more efficiently assist companies in delivering services and functions. Moreover, decentralized computing can move data closer to where it is used, as a network cache mechanism. Decentralized calculations also allow -10· 1276998 Description of the invention (6) The computing network uses intelligent agent devices to work together dynamically. The proxy-device is located on the peer-to-peer computer and communicates with various types of information, and the proxy device can also initiate work on behalf of other peer-to-peer systems. For example, a smart proxy device can be used to prioritize work on a network, change traffic, search for local files, or determine anomalies such as virus judgments and stop it before it affects the network. You can also pay attention to all other types of services at the same time. The image editing algorithm of the present invention can be implemented in such an environment. --- It is also known that an item, such as 110c, can be loaded on another computing device 10 or 110. Thus, although the physical environment description may show connected devices such as computers, such illustrations are merely examples, and the physical environment may be described or described on the other hand as containing various digital devices, such as PDAs, televisions, MP3 players, etc., software. Objects, such as interfaces, COM objects, and so on. There are a variety of systems, components, and network configurations that support a decentralized computing environment. - For example, computing systems can be connected by wired or wireless systems over a regional or wide area network. Today, many networks are coupled to the Internet, providing the infrastructure to widely distributed computing and encompassing many different networks. The Internet is commonly referred to as a collection of networks and gateways that utilize a combination of TCP/IP protocols. The protocol is well known in computer networks. TCPAP is an abbreviation for "Transmission Control Protocol/Interface Program". The Internet can be described as a system of decentralized remote computer networks that interconnects computers that implement network protocols and allows users to interact and share information over the network. Due to this common information sharing architecture, remote networks such as the Web 1276998 invented the continuation page (7), thus progressing to an open system where developers can design software applications for performing specialized operations or services. There are essentially no restrictions. As a result, the network infrastructure creates multiple network topologies, such as master-slave, peer-to-peer, or flattened architectures. A "client" is a member of a category or group that uses another category or group service that is not related to it. Therefore, in computing, a client is a process, in a nutshell, that is, a set of instructions or jobs that require service from another program. The client process uses the service request without having to "know" any work details of another program or service itself. In a master-slave architecture, in particular a network system, the client typically accesses a computer that provides shared network resources by another computer, such as a server. In the example of Fig. 1, the computers 110a, 110b, etc. can be regarded as users, and the computers dOa, 10b, etc. can be regarded as servers, and the servers 10a, 10b and the like are responsible for maintenance. Data copied in the client computer ll〇a, 110b, and the like. _ The server is usually a remote computer system that can be accessed through a remote network, such as the Internet. The client process can function in a first computer system, and the server process can function in a second computer system to communicate with each other on a communication medium, thereby providing distributed functions and allowing multiple clients to utilize the server information. Collection function. The client device communicates with each other using functions provided by a communication protocol layer. For example, Hypertext Transfer Protocol (HTTP) is a general-purpose communication protocol associated with the World Wide Web (WWW) (or simply "Web"). Typically, a computer network address, such as a universal resource locator (URL) or an Internet Protocol (IP) address, can be used to identify each other's servers or -12-1276998 invention instructions (8) client computers. The network address can be referred to as the "Universal Resource Locator" address. For example, communications can be provided via communication media. In particular, the client and server can be coupled to each other via a TCP/IP connection for high volume communication.

因此,圖1說明一範例網路或分散式環境,有一伺服器 經由網路/匯流排與用戶端電腦通訊,其中可使用本發明 。更詳細地說,根據本發明,許多伺服器10a、10b等,經 由通訊網路/匯流排14,可以是LAN、WAN、企業内部網路 、網際網路等,和許多用戶端或遠端計算裝置110a、JlOb 、110c、110d、110e等互連,該用戶端或遠端計算裝置例如 像可攜式電腦、掌上型電腦、薄型用戶端、網路裝置、或 其他裝置例如像攝錄影機、電視、烤箱、燈具、暖爐等等 。因此一般認為,本發明可適用任何要與另一計算裝置通 訊以進行·:影像剪輯或邊界定義服務相關的計算裝置。Thus, Figure 1 illustrates an exemplary network or decentralized environment in which a server communicates with a client computer via a network/bus, in which the present invention may be utilized. In more detail, according to the present invention, a plurality of servers 10a, 10b, etc., via a communication network/bus 14 can be a LAN, a WAN, an intranet, an Internet, etc., and a number of client or remote computing devices. Interconnected with 110a, J10, 110c, 110d, 110e, etc., such as a portable computer, a palmtop computer, a thin client, a network device, or other device such as a video camera, TV, oven, lamps, heaters, etc. It is therefore generally accepted that the present invention is applicable to any computing device that is to be in communication with another computing device for performing video clip or boundary definition services.

在通訊鋼路/匯流排14是網際網路的網路環境中,例如_ ,伺服器10可以是Web伺服器,利用該伺服器用戶端110a 、110b、110c、110d、110e等,經由許多的已知通訊協定, 例如像超文字傳送通訊協定(HTTP),進行通訊。伺服器10 也可做為用戶端110,如同是一分散式計算環境的特徵。 通訊可以是視需要以有線或無線的方式。用戶端裝置110 不一定要孽:_由通訊網路/匯流排14通訊,就可以與其有獨 立的通訊。例如,假使有一台電視或攝錄影機,不一定匕乂 網路來控制。每一用戶端電腦110和伺服器電腦10可配備-各種不同的應用程式模組或物件135,並連接或存取各種 不同類型的儲存元件或物件,檔案可以儲存在其中,或是 -13 - 1276998 發明說明續頁 ⑺In the communication network road/bus 14 is a network environment of the Internet, for example, the server 10 can be a web server, and the server clients 110a, 110b, 110c, 110d, 110e, etc. are used, through many Known communication protocols, such as Hypertext Transfer Protocol (HTTP), communicate. Server 10 can also function as client 110 as a feature of a distributed computing environment. Communication can be wired or wireless as needed. The client device 110 does not have to be: _ communicated by the communication network/bus 14 to have independent communication with it. For example, if there is a TV or camcorder, it is not necessarily controlled by the network. Each client computer 110 and server computer 10 can be equipped with a variety of different application modules or objects 135, and can connect or access various types of storage elements or objects, files can be stored therein, or -13 1276998 Description of invention continuation page (7)

部份檔案可下載或轉移至其中。任何電腦10a、10b、110a-、 110b等,負責根據本發明維護和更新資料庫20或其他儲# 元件,例如像資料庫20,用於儲存影像處理軟體,以便根 據本發明來處理影像。因此,本發明可用於具有用戶端電 腦110、110b等的電腦網路環境中,前述裝置可以存取並與 電腦網路/匯流排14和伺服器電腦10a、10b等互動,前述裝 置可以與用戶端電腦110a、110b等和其他裝置111和資料庫 20互動。 _ 範例計算裝置 圖2和下列討論,試圖簡單概略地說明適當的計算環境 ,其中本發明可實作為:但是,應該了解到,所有類型的 手持、可攜式和其他計算裝置和計算物件,都可與本發明 連結使用:。雖然一般用途電腦如下所述,但這僅是其中一 個範例,。-本發明可與具有網路/匯流排互通性和相互作用^ 的薄型用戶端一起實作。因此,本發明可實作於網路裝載 服務環境中,其中牽涉到十分小或極小部份的用_戶端資源 ,例如一網路環境,其中用戶端裝置只提供網路/匯流排 介面的服務,例如像放在一裝置内的物件。基本上,任何 可儲存資料的地方或可擷取資料的地方,都是操作本發明 影像剪輯_運_算法的適當環境。 - 雖然非必要,本發明可經由一作業系統實作,供裝置或 物件服務的開發人員使用,及/或包含在應用軟體内,以-協助處理影像資料。軟體可以電腦可執行指令的一般内容 來描述,例如像程式模組,由一或多個電腦執行,例如像 -14- 1276998 發明說明續頁 (10)Some files can be downloaded or transferred to it. Any computer 10a, 10b, 110a-, 110b, etc., is responsible for maintaining and updating the database 20 or other storage elements, such as, for example, the database 20, for storing image processing software in accordance with the present invention for processing images in accordance with the present invention. Therefore, the present invention can be applied to a computer network environment having a client computer 110, 110b, etc., and the foregoing device can access and interact with the computer network/busbar 14 and the server computers 10a, 10b, etc., and the foregoing device can be used with the user. The end computers 110a, 110b, etc. interact with other devices 111 and the repository 20. _ Example Computing Device Figure 2 and the following discussion attempt to briefly and briefly illustrate a suitable computing environment in which the present invention can be implemented as: However, it should be understood that all types of handheld, portable, and other computing devices and computing objects are Can be used in conjunction with the present invention: Although general-purpose computers are described below, this is only one example. - The present invention can be implemented with a thin client with network/bus interoperability and interaction^. Therefore, the present invention can be implemented in a network loading service environment, which involves a very small or very small portion of the user resources, such as a network environment, in which the client device only provides the network/bus interface. Services, such as objects placed in a device. Basically, any place where data can be stored or where data can be retrieved is an appropriate environment for operating the image editing algorithm of the present invention. - Although not necessary, the invention may be implemented via an operating system for use by a developer of the device or object service, and/or included in the application software to assist in processing the image data. Software can be described in the general context of computer-executable instructions, such as, for example, a program module, executed by one or more computers, such as, for example, -14-1276998.

用戶端工作站、伺服器或其他裝置。一般而言,程式模_組 包括執行特殊工作或實施特殊抽象資料型別的常式、程式 、物件、組件、資料結構等等。通常,程式模組的功能可 視需要結合或者分散在各種不同的具體實施例中。而且, 本行業的專家將暸解,本發明可與其他電腦系統配置一起 實行。其他廣為人知的計算系統、環境、及/或適合與本 發明共同使用的配置包括,但不限於:個人電腦(PC)、自 動數鈔機、伺服器電腦、掌上型或膝上型電腦裝置、炙處-理器系統、以微處理器為基礎的系統、可程式的消費性電 子裝置、網路PC、裝置、燈具、環境控制元件、迷你電腦 、主機電腦等等。還可在分散式計算環境中實施本發明, 其中會由透過通訊網路/匯流排或其他資料傳輸媒體所連 結的遠端;處理裝置來執行工作。在分散式計算環境中,程 式模組可5位於本機和包括記憶體儲存裝置的遠端電腦儲, 存媒體,且用戶端節點可進而當做伺服器節點。Client workstation, server or other device. In general, program modules include routines, programs, objects, components, data structures, etc. that perform special tasks or implement special abstract data types. In general, the functionality of the programming modules can be combined or dispersed in various specific embodiments as desired. Moreover, those skilled in the art will appreciate that the present invention can be practiced with other computer system configurations. Other well-known computing systems, environments, and/or configurations suitable for use with the present invention include, but are not limited to, personal computers (PCs), automatic money counters, server computers, palm or laptop devices, A processor system, a microprocessor based system, a programmable consumer electronic device, a network PC, a device, a light fixture, an environmental control component, a mini computer, a host computer, and the like. The invention may also be practiced in a distributed computing environment where the processing is performed by a remote device coupled through a communication network/bus or other data transmission medium. In a distributed computing environment, the program module 5 can be located in the local machine and the remote computer including the memory storage device to store and store media, and the client node can be used as a server node.

因此,圖2說明可實作本發明的適當計算系統環境100的 範例,雖然已詳述如上,計算系統環境100僅是一適當的 計算環境的範例,且不用來限制本發明的使用範疇或功能 。計算環境100也不應該解釋為,屬於或需要範例操作環 境100中所_就明的任何組件或該組件組合。 - 參見圖2,實作本發明的範例系統,包括一電腦110形式 的一般用途計算裝置。電腦110的組件可包括,但不限於-,一處理單元120、一系統記憶體130、和一系統匯流排121 ,將包括系統記憶體的各種不同的系統元件,耦合至處理 -15 - 1276998 (li) I發日續頁 單元120。系統匯流排121可以是任何類型的匯流排結構-, 包括一記憶體匯流排或記憶體控制器、一周邊匯流排、-和 使用各式匯流排架構的本機匯流排。藉著範例的方式說明 ,而不是限制,這類架構包括產業標準架構(ISA)匯流排、 微通道架構(MCA)匯流排、增強ISA(EISA)匯流排、視訊電子 學標準協會(VESA)本機匯流排、和週邊組件互連(pci)匯流 排(也就是夾層式(Mezzanine)匯流排)。 電腦110通常包括多種電腦可讀的媒體。電腦可讀丈媒— 體可以是任何電腦110可存取的可用媒體,包括非永久性 和永久性的媒體、可移動和不可移動的媒體。藉著範例的 方式說明,而不是限制,電腦可讀式媒體可包含電腦儲存 媒體和通訊媒體。電腦儲存媒體包括非永久性和永久性、 可移動和·:不可移動的媒體,實作於任何資訊儲存的方法 技術,例如像電腦可讀的指令、資料結構、程式模組或 他貝料。電腦儲存媒體包括,但不限於,RAM、 抹除可程式唯讀記憶體、快閃記憶體或其他記憶體技徐 CDROM,數位多功能磁碟(DVD)或其他光碟儲存器、磁性 τ、磁帶、磁性磁碟儲存器或其他磁性儲存裝置,或任 其他的媒體,可用來儲存電腦11〇可存取的資訊。通訊 體通常具,—化電腦可讀指令、資料結構、程式模組或在 .文貝料k號中的其他資料,例如像載波或其他傳送機帋 並包括任何資訊傳送媒體。「調變資料信號」一詞,音 具有一或多個其特性集、或以這類方法變更以便將信=Thus, FIG. 2 illustrates an example of a suitable computing system environment 100 that can be implemented in the present invention, although as described above in detail, computing system environment 100 is merely an example of a suitable computing environment and is not intended to limit the scope of use or functionality of the present invention. . Neither should the computing environment 100 be interpreted as belonging to or requiring any component or combination of components in the example operating environment 100. - Referring to Figure 2, an exemplary system of the present invention is implemented, including a general purpose computing device in the form of a computer 110. The components of computer 110 may include, but are not limited to, a processing unit 120, a system memory 130, and a system bus 121 that couple various system components including system memory to processing -15 - 1276998 ( Li) I continuation page unit 120. The system bus bar 121 can be any type of bus bar structure - including a memory bus or memory controller, a peripheral bus, and a local bus using various bus bars. By way of example, rather than limitation, such architectures include industry standard architecture (ISA) bus, micro channel architecture (MCA) bus, enhanced ISA (EISA) bus, and video electronics standards association (VESA). The busbar, and the peripheral component interconnect (pci) busbar (that is, the mezzanine busbar). Computer 110 typically includes a variety of computer readable media. The computer readable medium can be any available media accessible by the computer 110, including non-permanent and permanent media, removable and non-removable media. By way of example, rather than limitation, computer readable media may include computer storage media and communication media. Computer storage media includes non-permanent and permanent, removable and non-removable media, implemented in any method of information storage, such as computer-readable instructions, data structures, programming modules or other materials. Computer storage media includes, but is not limited to, RAM, eraseable programmable read-only memory, flash memory or other memory technology CDROM, digital multi-function disk (DVD) or other optical disk storage, magnetic τ, tape A magnetic disk storage or other magnetic storage device, or any other medium, can be used to store information accessible to the computer. The communication body usually has, - a computer readable instruction, a data structure, a program module or other information in the k number, such as a carrier wave or other transmitter, and includes any information transmission medium. The term "modulated data signal" has one or more of its characteristic sets, or is altered in such a way as to signal =

訊編碼的信號〇 J^ ^ , U 和者乾例的方式,而不是限制,通訊媒 -16- (12)^276998 發明說明續頁 t L接有線媒體,例如像有線網路或直接線路連接,以及 無' 绝 、'’媒體,例如像聲音、RF、紅外線和其他無線媒體。上 麵的組合亦涵蓋於電腦可讀式媒體的範疇中。The signal of the coded code 〇J^ ^ , U and the way of the dry case, rather than the limitation, the communication medium -16 - (12) ^ 276998 invention description continuation page t L wired media, such as wired network or direct line connection And no 'extreme,' media, such as sound, RF, infrared and other wireless media. The above combinations are also covered in the context of computer readable media.

、***記憶體130包括電腦儲存媒體,具有非永久性及/或 永A '性記憶體的形式,例如像唯讀記憶體(ROM) 131和隨機 存* I[又上 i 尤t思體(RAM) 132。基本輸出入系統133 (BIOS),包含協助 電嗎110之内元件之間傳送資訊基本常式,例如像在啟The system memory 130 includes a computer storage medium having a form of non-permanent and/or permanent A's memory, such as, for example, a read-only memory (ROM) 131 and a random memory. RAM) 132. Basic input and output system 133 (BIOS), including the basic routine for transmitting information between components within 110, such as

/、间,通常儲存在ROM 131中。RAM 132通常包含資料义/-或年。斗 王式模組,可供處理單元120立即存取,及/或由處理單 在其上操作。藉著範例的方式,而不是限制,圖2說明 作業g 、 、 糸統134、應用程式135、其他程式模組136、和程式資 科 137 。 、 、兒鳩110也可包括其他可抽換/不可抽換式、非永久性/ 久性電斕儲存媒體。僅藉著範例的方式,圖2說明一辟 碟機、 ^' $ 141,從·不可抽換式、永久性磁性媒體讀取或寫入; 礤磲機151,從可抽換式、永久性磁碟152讀取或寫入; 光碟機155,從可抽換式、永久性光碟156讀取或寫入, 例如像CD ROM或其他的光學媒體。其他可用於範例操作 袤境的可抽換式/不可抽換式、非永久性/永久性電腦儲存 媒體,包梦二,·但不限於:磁性卡帶、快閃記憶體卡、數位 多功能磁碟、數位錄影帶、固態RAM、固態r〇m等等。硬 碟機141通考透過不可移動的記憶體介面連接到系統匯流〜 排121 ’上述介面例如像介面140,磁碟機151和光碟機155通 常連接到可移動的記憶體介面的系統匯流排121,例如像 -17- 1276998 發明說明續頁 (13) 介面150 。/, is usually stored in the ROM 131. The RAM 132 typically contains the data meaning /- or year. The king-style module is available for immediate access by the processing unit 120 and/or by the processing unit. By way of example, and not limitation, FIG. 2 illustrates job g, system 134, application 135, other program modules 136, and program 137. , 鸠 110 may also include other removable/non-replaceable, non-permanent/long-term eMule storage media. By way of example only, Figure 2 illustrates a disc player, ^' $ 141, from non-replaceable, permanent magnetic media read or write; downtime 151, from removable, permanent The disk 152 reads or writes; the disk drive 155 reads or writes from the removable, permanent optical disk 156, such as, for example, a CD ROM or other optical medium. Other removable/non-permanent/non-permanent/permanent computer storage media that can be used in the paradigm of the example operation, including Dream Card 2, but not limited to: magnetic cassette, flash memory card, digital multi-function magnetic Discs, digital video tapes, solid state RAM, solid state r〇m, etc. The hard disk drive 141 is connected to the system sink through the non-removable memory interface. The above-mentioned interface, such as the interface 140, the disk drive 151 and the optical disk drive 155 are usually connected to the system busbar 121 of the removable memory interface. For example, like the -17-1276998 invention description continuation page (13) interface 150.

磁碟/光碟機和之前曾討論過的圖2所述相關電腦儲存 媒體,提供電腦可讀取的指令、資料結構、程式模組和其 他資料儲存方式給電腦110。例如,圖2的硬碟機141包括作 業系統144、應用程式145、其他程式模組146、和程式資料 147。注意這些組件可以是相同或不同於作業系統134、應 用程式135、其他程式模組136、和程式資料137。此處的作 業系統144、應用程式145、其他程式模組146、和程式資_料-147都有不同的基本數量,以表示他們是不同的複本。使 用者可透過輸入裝置輸入命令和資訊進電腦110之内,例 如像鍵盤162和指標裝置161,通常稱為滑鼠,軌跡球或觸 控板。其他的輸入裝置(未顯示)可包括麥克風、遊戲操縱 桿、遊戲:板、碟形天線、掃描器、或類似事物。這些和其 他的輸入<裝置時常透過耦合到系統匯流排121的使用者輸-入介面160,連接到處理單元120,但是也可藉由其他的介 面和匯流排結構連接,例如像並列埠、遊戲埠或通用序列 匯流排(USB)。圖形介面182,例如像Northbridge,也可連接到 系統匯流排121。Northbridge是一種與CPU、或處理單元120主 機通訊,並負責AGP通訊的晶片組。一或多個圖形處理單 元(圖形>^理器)184可與圖形介面182通訊。在這一方面 圖形處理器184通常包括晶片上的記憶體儲存器,例如像 暫存儲存器和圖形處理器184與一影像記憶體186通訊。顯-示器191或其他類型的顯示裝置,經由一介面也連接到系 統匯流排121,例如像影像介面190,可進而與影像記憶體 -18 - 1276998 發明說明續頁 (14) 186通訊。除了顯示器191,電腦也包括其他的周邊輸出衮 置,例如像,p八197和印表機196,皆透過一輸出周邊介面 195加以連接。The disk/disc machine and the associated computer storage medium of Figure 2 previously discussed provide computer readable instructions, data structures, program modules and other data storage methods to the computer 110. For example, the hard disk drive 141 of FIG. 2 includes a job system 144, an application program 145, other program modules 146, and program data 147. Note that these components may be the same or different from operating system 134, application 135, other programming modules 136, and program data 137. The job system 144, application 145, other program modules 146, and program_147 have different basic numbers to indicate that they are different replicas. The user can enter commands and information into the computer 110 through the input device, such as the keyboard 162 and the indicator device 161, commonly referred to as a mouse, trackball or touchpad. Other input devices (not shown) may include a microphone, game joystick, game: board, dish antenna, scanner, or the like. These and other input <devices are often coupled to the processing unit 120 via a user input-in interface 160 coupled to the system bus 121, but may be connected by other interfaces and busbar structures, such as, for example, parallel, Game 通用 or Universal Serial Bus (USB). A graphical interface 182, such as, for example, Northbridge, can also be coupled to system bus 121. Northbridge is a chipset that communicates with the CPU, or processor unit 120, and is responsible for AGP communications. One or more graphics processing units (graphics > processor) 184 can communicate with graphics interface 182. In this regard, graphics processor 184 typically includes a memory bank on the wafer, such as, for example, a temporary memory and graphics processor 184 in communication with an image memory 186. Display 191 or other type of display device is also coupled to system bus 121 via an interface, such as image interface 190, which in turn communicates with image memory -18 - 1276998, Illustrated Continuation (14) 186. In addition to display 191, the computer also includes other peripheral output devices, such as, for example, p8 197 and printer 196, all connected via an output peripheral interface 195.

電腦110可使用邏輯連接,在一網路或分散式環境中, 連接至一或多個遠端電腦,例如像遠端電腦180。遠端電 腦180可以是個人電腦、伺服器、路由器、網路PC、對等 裝置或其他通用的網路節點,通常包括許多或所有如上所 描述與電腦110相關的元件,但只有記憶體儲存裝置18】已-經在圖2中加以說明。圖2中描述的邏輯連接,包括一區域 網路(LAN) 171和一廣域網路(WAN) 173,但是也可包括其他的 網路/匯流排。這類網路環境常見於家庭、辦公室、企業 寬頻電腦網路、企業内部網路和網際網路中。 當用於:LAN網路環境時,電腦110透過轉接器170的網路介 面連接到。LAN 171。當用於WAN網路環境時,電腦110通常包-Computer 110 can be connected to one or more remote computers, such as remote computer 180, in a network or distributed environment using logical connections. The remote computer 180 can be a personal computer, server, router, network PC, peer device, or other general purpose network node, typically including many or all of the components associated with the computer 110 as described above, but only memory storage devices. 18] has been illustrated in Figure 2. The logical connections depicted in Figure 2 include a local area network (LAN) 171 and a wide area network (WAN) 173, but may also include other network/bus banks. This type of network environment is common in homes, offices, corporate broadband computer networks, corporate intranets, and the Internet. When used in a LAN network environment, the computer 110 is connected through the network interface of the adapter 170. LAN 171. When used in a WAN environment, computer 110 is usually packaged -

括一數據機172或其他的裝置,以在WAN 173上建立通訊, 例如像網際網路。數據機172,可以是内部或外部,可經 由使用者輸入介面160,或其他適當機制連接到系統匯流 排12卜在網路環境中,與電腦110或上述裝置相關的程式 模組,可儲存在遠端記憶體儲存裝置中。藉著範例的方式 ,而不是|艮;_制,圖2中的遠端應用程式185位於記憶體裝置 181上。應了解到,所顯示的網路連接,是在可使用電腦 之間建立通信連結的範例和其他裝置。 範例分散式計算結構或架構 各種不同的分散式計算結構,已經且正在隨著個人計算 -19- 1276998 (15) I發明說明續頁 1置和網際網路而發展。同樣為個人和商用使用者,針谢 ” °式和w十异裝置’提供無缝的交互作用和Web啟動介 ’使得計算活動逐漸增加Web瀏覽器或網路導向。 J如’ MICROSOFT®的.Net平台,包括伺服器、建置組塊服 %例如像以網路為基礎的資料儲存和可下載的裝置軟體 為又而了 ’ .Net平台提供⑴使整個範圍的計算裝置共同 作並壤所有使用者資訊自動更新而且同步化的能力, ()為、祠站增加叉談功能,由功能更強的xml並非html此動― (3)、、泉上服務’其特色為自訂化的存取,以及從中央起始 點值… 、 运屋品和服務給使用者,以管理各種不同的應用程式 (例如像電子郵件)或軟體(例如像〇ffke n…,⑷集中的資料 儲存,將增加效率且使資訊的存取更容易,並讓使用者和 衣置义間·的貧訊同步化’⑺整合各種不同的通訊媒體,例 像%子-郵件、傳真和電話的能力,⑹用於開發人員,建― 二可再使用的模組,藉此增加生產力而且減少程式錯誤的 能力,以及⑺許多其他跨平臺的整合功能。 ~~2H___系、纟的驅動程式的營理 圖3A和3B是應用程式135、執行時間3〇2和驅動程式3〇3, 如何透過ΑΠ和DDI互動的簡單說明。 就圖形八—打^以部署而言,目前有兩個常見的驅動程式模 型·線上驅動程式模型和分層驅動程式模型。圖3A描述線 上驅動程式,本質上已完成一完整的Αρι實作,以便在特一 定硬體上執行,例如视訊介面19〇 (圖2)。利用線上驅動程 式模型的API範例,包括專有的圖形Αρι,例如像3Dfe卻如和 -20- 1276998 發明說明續頁 (16) ATI CIF、和OpenGL (開放式繪圖介面)。 一 分層驅動程式,如圖3B所示,介紹額外層級的間接方式 ,其中API實作在透過DDI呼叫驅動程式303之前實作一些邏 輯(例如像參數驗證)和程式碼(例如像幾何管線)。「分層 驅動程式」這個詞,不僅是指API在做工作之後呼叫DDI的 想法,而且也指根據硬體306所實作的功能數,驅動程式 303可實作不同「層級」的想法。例如,實作光柵化的圖形 硬體產品的DDI,會比實作轉換和照明以及光柵化的皇品— 低階。 支援多種分層驅動程式,可增加執行時間302實作的複 雜性。例如,Microsoft的DIRECTX 7.0,可支援硬體力口速白勺轉 換和照明.,必須確認基礎驅動程式303是否實作該功能。 如果是這:樣,應用程式135可以建立並且使用具有該功能 的裝置;·"否則,該功能必須由軟體的執行時間302所模擬-。因此,DIRECTX 7.0執行的程式碼路徑,根據它是在DIRECTX 7.0型的驅動程式或前DIRECTX 7.0驅動程式上執行,而截然 不同。A modem 172 or other device is included to establish communication over the WAN 173, such as, for example, the Internet. The data machine 172 can be internal or external, and can be connected to the system bus 12 via the user input interface 160 or other suitable mechanism. The program module associated with the computer 110 or the above device can be stored in the data module 172. In the remote memory storage device. By way of example, rather than |, the remote application 185 of Figure 2 is located on the memory device 181. It should be understood that the network connections shown are examples and other means of establishing a communication link between available computers. Example Decentralized Computational Structures or Architectures A variety of decentralized computational structures have been developed with personal computing. Also for both personal and commercial users, the “° and W” devices provide seamless interaction and web launch media, which makes computing activities gradually increase in web browsers or network orientation. J. ' MICROSOFT®. The Net platform, including servers, built-in chunks, such as network-based data storage and downloadable device software, is again available. The .Net platform provides (1) enabling the entire range of computing devices to work together. The ability to automatically update and synchronize information, () for the station to increase the cross-talk function, the more powerful xml is not the html this move - (3), spring service 'its feature is customized access And from the central starting point value..., transporting goods and services to users to manage a variety of different applications (such as email) or software (such as 〇ffke n..., (4) centralized data storage will increase Efficiency and access to information is easier, and users and devices are synchronized. (7) Integrate various communication media, such as % sub-mail, fax and phone capabilities, (6) for Developer , build - two reusable modules to increase productivity and reduce the ability of program errors, and (7) many other cross-platform integration functions. ~~2H___, the driver of the driver, Figure 3A and 3B are Application 135, execution time 3〇2 and driver 3〇3, how to interact with DDI through simple instructions. In terms of graphics, there are two common driver models and online drivers. Model and layered driver model. Figure 3A depicts the online driver, essentially completing a complete Α ι implementation for execution on a specific hardware, such as the video interface 19〇 (Figure 2). Using the online driver Examples of APIs for the model, including proprietary graphics, such as 3Dfe and -20-1276998, Illustrative Continuation (16) ATI CIF, and OpenGL (Open Drawing Interface). A layered driver, as shown in Figure 3B As shown, an additional level of indirect approach is introduced, where the API implementation implements some logic (such as parameter validation) and code (such as geometry pipelines) before passing through the DDI call driver 303. The term "layer driver" refers not only to the idea that the API calls DDI after doing work, but also refers to the idea that the driver 303 can implement different "hierarchies" according to the number of functions implemented by the hardware 306. For example, The DDI of a rasterized graphics hardware product will be lower than the implementation of conversion and illumination and rasterization. Low-level support for multiple layered drivers can increase the complexity of execution time 302. For example, Microsoft DIRECTX 7.0 can support hardware speed conversion and lighting. It must be confirmed whether the basic driver 303 implements this function. If this is the case, the application 135 can establish and use a device with this function; ·" Otherwise, the function must be simulated by the execution time 302 of the software. Therefore, the code path executed by DIRECTX 7.0 is quite different depending on whether it is executed on a DIRECTX 7.0 driver or a front DIRECTX 7.0 driver.

圖4進一步說明一系統中範例應用程式、執行時間和驅 動程式的層級。應用程式135、執行時間302和部份驅動程 式303,在爹二用者模式中運作,以寫入圖示命令至DMA記憶 體中硬體特定的命令緩衝區之内。在現今PC系統中,這些 寫入通常將會永久寫入AGP記憶體之内;如這個實作範例-所描述,應用程式135常駐於ΕΧΕ中,執行時間302和使用者 模式驅動程式303常駐於動態連結至應用程式135内的DLL -21 - 1276998 發明說明續頁 ⑼ 。系統的使用者模式部份的這些細節可以改變;明確的1¾ ,應用程式135,應用程式135和執行時間302、或應用程式 301、執行時間302和使用者模式驅動程式303可以是管理程 式碼。 為了要對抗未授權的使用者模式驅動程式(例如,303 ) 的取代,系統通常要求核心驅動程式405 (因為從安全的觀 點來看,核心程式碼是可信賴的)載入使用者模式驅動程 式 303 DLL。 _ * 命令緩衝區排程器404 (「排程器」)和核心驅動程式405 — 起在核心模式中工作,以對硬體406調度命令緩衝區(當核 心驅動程式405應排程器404的請求,指示硬體406調度命令 緩衝區的時候,排程器404會決定要調度的命令緩衝區)。 這種系統;認為大多數的驅動程式邏輯,將會常駐於使用者 模式驅動4呈式403 DLL而不是核心驅動程式405。當使用者-模式驅動程式403可以包含大量對應DDI層級呼叫至硬體 特定命令的程式碼的時候(該操作可能會複雜且易出錯, 尤其當編譯頂端及/或顏色較暗的程式的時候),核心驅動 程式405會較小且較簡單,以最大化系統的彈性。 圖5釐清當應用程式135在圖形操作範例中產生API呼叫 時所發生事件順序。命令緩衝區在圖5中並沒有特別描 述成硬體組件;根據圖4,使用者模式驅動程式303將硬體 特定命令窝入裝置目前的命令緩衝區之内,命令緩衝區排-程器(系統核心支援530的一部份),經由核心模式驅動程式 405將命令緩衝區分配給硬體306,結束的命令緩衝區,由 •22- 1276998 發明說明續頁 (18) 系統的應用程式135回收使用。應注意,多個應用程式Γ35 可能可以共用可用的命令緩衝儲存區,由系統核心支援 530仲裁該資源的共用。 當應用程式135最初建立圖示内容501的時候,系統核心 支援530檢查以了解是否可以建立新的命令緩衝區531。如 果是這樣,則建立新的命令緩衝區532並且進行初始化533 ,而且在應用程式135可以執行圖示呼叫502之前,執行緒 取得已初始化的命令緩衝區534。如果無法在第531步驟中-建立命令緩衝區,應用程式135必須等候,直到已初始化 的命令緩衝區變成可用534。一旦應用程式135獲得命令緩 衝區,應用程式135、執行時間302和使用者模式驅動程式 303進入在三個組件之間的典型相互作用,即會導致硬體 特定的命:令寫入命令緩衝區之内。應用程式135的圖示呼 叫502由執4亍時間302驗證511 ;然後檢查512判斷是否需要清-除目前的命令緩衝區。如果不,圖示命令會轉換成比較簡 單的標準DDI呼叫513,並傳給使用者模式驅動程式520。驅 動程式將DDI呼叫轉換成硬體特定的命令並嘗試將他們寫 入命令緩衝區之内。如果檢查滿溢522判斷沒有命令緩衝 區的空間,在寫入命令而且執行繼續之前,命令緩衝區必 須交付給_系__統核心支援530,而且以相同方式取得新的命 令緩衝區。如果執行時間302或使用者模式驅動程式303判 斷需要清除,根據步驟535,命令緩衝區會加入到等候佇-列。那時,系統核心可以檢查536命令緩衝區是否可以立 刻送出(通常因為沒有命令緩衝區正在執行)。如果不,命 -23 - 1276998 發明說明續頁 (19) 令緩衝區會留在等候作列中,而且必須取得一個新的命令 緩衝區534。應注意,這個功能性區塊,該區塊等到有適 當初始化命令緩衝區出現然後分配到裝置,與它可以開始 繪圖之前,應用程式135所需的操作相同。 當為了調度而選取備妥命令緩衝區540的時候,系統核 心支援530命令核心驅動程式405内容,將硬體切換到適當 的内容551並將命令緩衝區調度到硬體552。然後,硬體306 讀取並執行命令緩衝區561,直到先取得它或命令緩衡區— 結束。如果命令緩衝區正常完成563,硬體發出中斷信號 且中斷服務常式553會執行。此時ISR可能希望儲存硬體内 容554,雖然驅動程式可能希望將這操作延遲到内容切換 551,以防萬一硬體被要求在相同内容上運作的列中,執 行兩個命:令緩衝區。在這一個步驟554之後,核心系統支 援530可以。釋放該命令緩衝區需要的資源538,和發出信號-給任何通知機制,例如像讓感興趣的用戶端知道命令緩衝 區已完成的事件。在步驟538之後’核心系統支援有兩個 任務:它必須再初始化最近可用的命令緩衝區和把它加入 被初始化的儲存區533,並且它必須除去任何候補命令緩 衝區的障礙,和移動他們進入備妥彳宁列之内539。在步驟 539之後,遘取要調度的另一個命令緩衝區540。 - 圖4和5描述的中間流程通訊的複雜性,說明根據本發明 的觀點對管理程式碼的需求。特別是,圖5所描述的系統-,可利用管理程式碼,其中應用程式135、執行時間302及/ 或使用者模式驅動程式303的部份,以中間語言形式遞送 -24- 1276998 發明說明續頁 (20) ,並在用戶端上進行JIT編譯。三個組件將以中間語言充 式分別遞送至用戶端。然後JIT編譯器會將他們合成至包 括所有三個組件部份的統一目標碼之内。這類架構將啟動 一系統,其中將會執行最佳的目標碼。除此之外,在應用 程式135呼叫進入點中的常數,可傳播至執行時間302和使 用者模式驅動程式303之内,可能造成寫入一些常數字至 命令緩衝區之内,而不是跨越一些功能呼叫界限才能達成 相同的結果的目標碼。應用程式135的中間語言形式仍會— 是硬體獨立的,因為使用者模式驅動程式303是特別針對 用戶端上的圖形硬體所設計的。而且,所有的管理程式碼 都可能如以上圖1所描述,傳送至某個網路上的系統。 當產生.所有三個組件(也就是應用程式135、執行時間302 和使用者:模式驅動程式303 )的管理程式碼,應達到最佳潛 在效能改。良時,一系統可以應使應用程式135和執行時間-302受到管理,並與個別使用者模式驅動程式303互動,或 甚至只有應用程式135受到管理,並與個別執行時間302和 使用者模式驅動程式303互動。事實上,假使中間語言和 執行時間302及/或使用者模式驅動程式303的使用者模式 DLL形式兩者都存在的話,這類子系統可以和平共存。 該系統冬13"受益於最近繫結的管理程式碼,如以上所描 述:如果執行時間302受到管理,JIT可以執行最佳化,例 如像在執行時間檢查參數驗證。在圖4的系統中,由JIT產-生的統一物件程式碼,將標準命令緩衝區資料寫入可DMA 的記憶體之内,最後會送至硬體。在圖5的系統中,由ΉΤ -25- 1276998 發明說明續頁 (21) 產生的目標碼將會送出資料至由核心模式驅動程式405 一分 析和轉換的中間緩衝區之内。下面的區段更詳盡地描述本 發明管理程式碼觀點的系統和其優點。 管理程式碼 傳統軟體部署的機制,已需要寫原始程式碼,為特定類 型的電腦編譯原始程式碼為可執行的形式,並在用戶端電 腦上安裝可執行的程式碼,如此它才可以執行。另一種用 於.NET基礎結構的方法,將額外步驟力π入這個流程。詨原-始程式碼轉換為可安裝在用戶端電腦上一種現有相容的 中間形式。然後用戶端電腦使用JIT (「及時」)編譯器,將 中間程式碼轉換成本機可執行「管理」程式碼,因此它可 以執行。這個方式有一些優點。一優點是,中間程式碼是 平***立:;由於可執行程式碼的轉換在用戶端上發生,知 道該如何2編譯中間程式碼的任何用戶端,都可以執行應用-程式。一相關的優點是,當撰寫程式碼的時候,平***立 中間程式碼可以傳送至不存在的平台,並且在該平台上執 行。 但是,就本發明而言,JIT編譯的最重要的優點是:當管 理程式碼正產生的時候,JIT編譯器有目標電腦的精確性 質的先驗_知_識(也就是,JIT編譯器正在其上執行的用戶端) 。如果用戶端電腦有一特定類型的微處理器,JIT編譯器 可以送出該特定微處理器所熟悉’的程式碼。例如,Pentium Pro微處理器把有條件的移動指令加入x86指令集,而且 Pentium 3微處理器增加了預先擷取功能,以及在它之前舊 -26- (22) 1276998 發明說明續頁 版處理為上無法使用的其他快取管理指令。要支援傳統部 署軟體中這些微處理器特定的指令,需要開發人員撰寫使 用所有不同特性的原始程式碼,然後撰寫偵測軟體,猜測 出程式碼碰巧要執行的用戶端所執行的程式碼路徑。JIT 步驟使開發人員不需執行這項任務,甚至協助開發人員對 杬未來的改革。換句話說,包括將會對設計者應用程式有 益的新指令的電腦,可以包括知道該如何送出該指令的 JI丁編譯器;即使當該應用程式在發展時它還不存在,—應_ 用私式仍將k新的指令獲益。線上驅動程式模型的支持者 表示,效能優越是合併API實作至驅動程式之内的主要動 機。14個合併有許多不受歡迎的副作用,主要因為無法釋 放後續的執行時間,以便在執行時間的釋放之前,於驅動 程式的最上方加Λ API原則的特性、效能改良或變更。 DIRECTX的'歷史上有很多的前例,著重在使用驅動程式安 裝基礎的ΑΠ改良之運用。這些AP][改良可以從簡單易用的 圖示方法,例如像使用前DIRECTX 5.0驅動程式的dIrectx 5.〇Figure 4 further illustrates the level of sample applications, execution time, and drivers in a system. The application 135, the execution time 302, and the partial driver 303 operate in the second user mode to write the illustrated commands to the hardware specific command buffer in the DMA memory. In today's PC systems, these writes are typically permanently written to the AGP memory; as described in this implementation example, the application 135 resides in the UI, the execution time 302 and the user mode driver 303 reside in Dynamically linked to the DLL in the application 135 - 21 - 1276998 Description of the Invention (9). These details of the user mode portion of the system can be changed; explicit 13⁄4, application 135, application 135 and execution time 302, or application 301, execution time 302, and user mode driver 303 can be management code. In order to combat the replacement of unauthorized user mode drivers (eg, 303), the system usually requires the kernel driver 405 (because the core code is trusted from a security point of view) to load the user mode driver. 303 DLL. _ * Command buffer scheduler 404 ("scheduler") and core driver 405 work in core mode to dispatch command buffers to hardware 406 (when core driver 405 should be scheduled 404) When the request indicates that the hardware 406 schedules the command buffer, the scheduler 404 determines the command buffer to be scheduled. Such a system; it is believed that most of the driver logic will reside in the user mode driver 4 403 DLL instead of the core driver 405. When the user-mode driver 403 can contain a large number of code corresponding to DDI level calls to hardware specific commands (this operation can be complicated and error-prone, especially when compiling top and/or darker programs) The core driver 405 will be smaller and simpler to maximize system resiliency. Figure 5 clarifies the sequence of events that occur when the application 135 generates an API call in the graphical operation example. The command buffer is not specifically described as a hardware component in FIG. 5; according to FIG. 4, the user mode driver 303 inserts a hardware specific command into the current command buffer of the device, and commands the buffer queue ( A part of the system core support 530), the command buffer is allocated to the hardware 306 via the core mode driver 405, and the command buffer is terminated. The application program 135 of the system is reclaimed by the application file 135. . It should be noted that multiple applications Γ 35 may share the available command buffer storage area, and system core support 530 arbitrates the sharing of the resources. When the application 135 initially creates the graphical content 501, the system core supports 530 checks to see if a new command buffer 531 can be created. If so, a new command buffer 532 is created and initialized 533, and the thread fetches the initialized command buffer 534 before the application 135 can execute the illustrated call 502. If the command buffer cannot be established in step 531, the application 135 must wait until the initialized command buffer becomes available 534. Once the application 135 obtains the command buffer, the application 135, the execution time 302, and the user mode driver 303 enter a typical interaction between the three components, which results in a hardware specific life: the write command buffer within. The graphical call 502 of the application 135 is verified 511 by the time 302; then the check 512 determines if the current command buffer needs to be cleared. If not, the illustrated command will be converted to a relatively simple standard DDI call 513 and passed to the user mode driver 520. The driver converts DDI calls into hardware-specific commands and attempts to write them into the command buffer. If the check overflow 522 determines that there is no space in the command buffer, the command buffer must be delivered to the core support 530 and the new command buffer is fetched in the same manner before the command is written and execution continues. If execution time 302 or user mode driver 303 determines that removal is required, then according to step 535, the command buffer is added to the wait queue. At that point, the system core can check if the 536 command buffer can be sent immediately (usually because no command buffer is executing). If not, the continuation page (19) leaves the buffer in the waiting queue and must obtain a new command buffer 534. It should be noted that this functional block, which waits until the appropriate initialization command buffer appears and then is assigned to the device, the same operations required by the application 135 before it can begin drawing. When the ready command buffer 540 is selected for scheduling, the system core support 530 commands the core driver 405 content, switches the hardware to the appropriate content 551, and dispatches the command buffer to the hardware 552. The hardware 306 then reads and executes the command buffer 561 until it is first acquired or the command is ramped up - ending. If the command buffer completes normally 563, the hardware issues an interrupt signal and the interrupt service routine 553 executes. At this point the ISR may wish to store the hardware content 554, although the driver may wish to delay this operation to the content switch 551, in case the hardware is required to be in the column operating on the same content, executing two lives: the buffer . After this one step 554, core system support 530 can. Release the resource 538 required by the command buffer, and signal - to any notification mechanism, such as an event that lets interested parties know that the command buffer has completed. After step 538, the core system support has two tasks: it must reinitialize the most recently available command buffer and add it to the initialized storage area 533, and it must remove the barriers of any alternate command buffers and move them into Ready to be included in the list 539. After step 539, another command buffer 540 to be scheduled is retrieved. - The complexity of the intermediate flow communication depicted in Figures 4 and 5 illustrates the need for management code in accordance with the teachings of the present invention. In particular, the system depicted in FIG. 5 can utilize the management code, wherein the application 135, the execution time 302, and/or the portion of the user mode driver 303 are delivered in an intermediate language - 24 - 1276998. Page (20) and JIT compilation on the client side. The three components will be delivered to the client in an intermediate language. The JIT compiler then synthesizes them into a uniform object code that includes all three component parts. This type of architecture will launch a system where the best target code will be executed. In addition, the constants in the application 135 call entry point can be propagated to the execution time 302 and the user mode driver 303, possibly causing some constant numbers to be written into the command buffer instead of spanning some The target code of the functional call boundary to achieve the same result. The intermediate language form of application 135 will still be hardware independent, since user mode driver 303 is specifically designed for graphics hardware on the client side. Moreover, all management code may be transferred to a system on a network as described in Figure 1 above. When the management code for all three components (ie, application 135, execution time 302, and user: mode driver 303) is generated, the best potential performance change should be achieved. In good condition, a system can be managed with application 135 and execution time -302 and interact with individual user mode driver 303, or even only application 135 can be managed with individual execution time 302 and user mode drivers. Program 303 interacts. In fact, if both the intermediate language and the execution time 302 and/or the user mode DLL form of the user mode driver 303 are present, such subsystems can coexist peacefully. The system winter 13" benefits from the recently tied management code, as described above: if the execution time 302 is managed, the JIT can perform optimizations, such as checking parameter validation at execution time. In the system of Figure 4, the standard command buffer data is written into the DMA-capable memory by the JIT-generated unified object code, and finally sent to the hardware. In the system of Fig. 5, the object code generated by the continuation page (21) of the pp. -25-1276998 will send the data to the intermediate buffer which is analyzed and converted by the core mode driver 405. The following sections describe in more detail the system and advantages of the present invention for managing code views. Management Code The traditional software deployment mechanism requires writing the original code, compiling the source code into an executable form for a particular type of computer, and installing the executable code on the client computer so that it can execute. Another method for the .NET infrastructure puts an extra step into the process. The original-start code is converted to an existing compatible intermediate form that can be installed on the client computer. The client computer then uses the JIT ("Timely") compiler to convert the intermediate code to the native executable "management" code so it can be executed. This approach has some advantages. One advantage is that the intermediate code is platform independent:; since the conversion of the executable code occurs on the client side, it is possible to execute the application-program by knowing how to compile any client of the intermediate code. A related advantage is that when writing code, platform independent intermediate code can be transferred to and executed on a platform that does not exist. However, as far as the present invention is concerned, the most important advantage of JIT compilation is that when the management code is being generated, the JIT compiler has the a priori knowledge of the precise nature of the target computer (that is, the JIT compiler is working The client side executed on it). If the client computer has a specific type of microprocessor, the JIT compiler can send the code that is familiar to that particular microprocessor. For example, the Pentium Pro microprocessor adds conditional move instructions to the x86 instruction set, and the Pentium 3 microprocessor adds pre-fetching capabilities, and before it was used, the old -26-(22) 1276998 invention sequel was processed as Other cache management instructions that are not available. To support these microprocessor-specific instructions in traditional deployment software, developers need to write the original code that uses all the different features, then write the detection software, guessing the code path executed by the client that the code happens to execute. The JIT step eliminates the need for developers to perform this task and even assist developers in their future reforms. In other words, a computer that includes new instructions that will benefit the designer's application can include a JI compiler that knows how to send the instruction; even if the application does not exist when it is developed, it should Private will still benefit from the new instructions. Proponents of the online driver model say that superior performance is the main motivation for merging API implementations into drivers. There are a number of unwelcome side effects in the 14 merges, mainly because the subsequent execution time cannot be released, so that the characteristics, performance improvements, or changes of the API principles are added to the top of the driver before the execution time is released. DIRECTX's 'history has a lot of precedents, focusing on the use of driver-based installation improvements. These APs] can be improved from easy-to-use graphical methods such as dIrectx 5. Using the DIRECTX 5.0 driver.

DrawPrimitive API;效能進步,例如像使用前direcTX 6.0驅動程 式的DIRECTX 6.0幾何管線;和API層級原則變更,例如像使 用前DIRECTX 6.0驅動程式的DIRECTX 6.0質材管理員。如果有 問題的驅j力—程式是線上驅動程式,這些類型的改良將很難 或無法傳送。 正如JIT編譯器有微處理器類型的先驗知識在,用戶端,〜 它也有用戶端精確硬體配置的先驗知識。特別是,它有用 戶端的圖形處理器和相關驅動程式類型的知識。例如,在 -27· 1276998 發明說明續頁 (23) JIT時,系統知道圖形驅動程式(DIRECTX 6·0、DIRECTX 7.0等) 的有效版本,因此,如果應用程式和驅動程式受到管理, JIT編譯器可以送出針對該驅動程式版本調整的可執行檔 。圖6描述這類系統。 應用程式135和執行時間302兩者都以例如像MICROSOF丁的 CLRT的中間語言形式(IL)所接收。JIT編譯器602採用應用程 式IL 135和執行時間IL 302,並合併他們至單一編譯的管理 應用程式604,該應用程式將會與上述的磁碟/光碟機303和-硬體306通訊。 圖6中描述以JIT為基礎的方式,可達成許多最佳化,包 括: --.由於在編譯時DDI類型為已知的,因此支援不同 的DDI,將會是更有效率的。這排除大量的狀況碼。 -- 如果在JIT時狀況為已知的,則可以排除狀況碼一-例如,保証有效的參數就可排除參數驗證。 -- 可以内嵌瑣碎的執行時間函數,以便在函數呼叫 時,啟動指令排程。 -- 可以特定主機處理器類型的可執行程式碼(同時 内嵌和在執行時間實作中)為目標。當微處理器代理 商修丨立_指令集增加速率時,處理器特定最佳化的重要 4生會增加。 一 這個架構的效能可以利用以中間語言(IL)為基礎的驅動.程-式,有進一步的改良。 圖7提供管理程式碼系統的交互具體實施例。在這裡, -28- (24)1276998 I構將啟動已 直接寫入命令 潛在利益包括 面的工作,並 式的正確性。 均以IL形式遞 式 604。 從過往經驗 其中執行時間 標記資料流。 就是,資料流 心模式,並將 動程式將:會剖 令,且通常將 用。 回頭參見圖 小的尺寸,只 DMA操作以使 。就圖4而言 述,應用,_式 近繫結的管理 會在編譯時知 否實作轉換和 的時候,它可 發明說明磧頁 編譯的應用程式135,以便將硬體特定命令 緩衝區或FIFO内。除了效能含意之外,其他 :減少IHV傳送跨平臺驅動程式所需工程方 具有較佳的啟動驗證用工具,以確保驅動程 應用程式135、執行時間302和驅動程式3〇3, 送到JIT 602。JIT 602將他們轉換為管理應用程 來看,DIRECTX已實作分層驅動程式模型,_ 將圖形和圖式命令轉換為簡化、硬體獨立的 當DIRECTX執行時間判斷需要清除的時候(也 的命令必須由硬體執行),它將會轉換為核 命令資料流傳遞至圖形驅動程式。然後,驅 析命令資料流,並將它轉換成硬體特定的命 那些命令寫記憶體緩衝區之内,以供硬體使 4以及圖6和7,核心模式驅動程式405將有最 夠實作足夠的程式碼,以初始化硬體、啟始 用已組成的命令緩衝區,並設定和控制中斷 ’實作本發明的方式有兩種。首先,如上所 135和執行時間302可能由JIT 602編譯,以致最 程式碼與驅動程式DLL 303互動。然後JIT 602 道驅動程式DLL 303的精確特性(例如,它是一 照明加速),和當為用戶端電腦產生目標碼 以利用該知識。 -29- 1276998 _ (25) 發明說明續頁 第二,圖4中實作本發明的「管理驅動程式」變數,將f 要承擔JIT 602所編譯的應用程式135、執行時間302和驅動程 式DLL 303,以致於統一的可執行程式碼從API執行轉換, 並將硬體特定的命令寫入DMA記憶體410。這個架構將分層 驅動程式模型的彈性和其他優點,結合上線上驅動程式模 型特定硬體所得到的效率。因此,這個「管理驅動程式模 型」與其他驅動程式架構相較,具有較大的潛力。 如上所述,已結合各種不同計算裝置和網路架構,來說-明本發明的範例具體實施例,基礎觀念可套用到任何計算 裝置或系統,其中希望能夠管理應用程式和驅動程式。因 此,根據本發明管理應用程式的技術,可套用到多種應用 程式和裝置。例如,本發明的優點可套用到計算裝置的圖 形系統,:例如裝置上的個別物件、另一物件的一部份、來 自伺服器啲可下載物件、裝置或物件和網路等之間的「中, 間者」。所產生的管理應用程式可加以儲存以供稍後使用 ,或輸出給其他獨立、附屬或相關的流程或服務。在此處 ,所選擇的範例程式語言、名稱和範例係作為各種不同選 項的代表,並不是要限制這些語言、名稱和範例。 此處描述的各種技術,可與硬體或軟體,或視需要與兩 者的組合_共_同實作。因此,本發明的方法和裝置,或某觀 點或上述部份,可採用在實體媒體中具體化的程式碼(也 就是,指令)的形式,例如像軟碟片、光碟、硬式磁碟機-或任何其他機器可讀取的儲存媒體,其中,當程式碼由機 器載入而且執行的時候,例如像電腦,該機器變成實行本 -30- 1276998 _ (26) I發明說明續頁DrawPrimitive API; performance improvements such as DIRECTX 6.0 geometry pipelines using pre-direcTX 6.0 drivers; and API hierarchy changes, such as DIRECTX 6.0 material administrators using pre-DIRECTX 6.0 drivers. If there is a problem with the driver - the program is an online driver, these types of improvements will be difficult or impossible to transfer. Just as the JIT compiler has a priori knowledge of the microprocessor type, the client side, ~ it also has a priori knowledge of the client-side exact hardware configuration. In particular, it has knowledge of the client's graphics processor and associated driver types. For example, in the JIT of -27·1276998, the system knows the valid version of the graphics driver (DIRECTX 6.1, DIRECTX 7.0, etc.), so if the application and driver are managed, the JIT compiler An executable file that is tuned for this driver version can be sent. Figure 6 depicts such a system. Both the application 135 and the execution time 302 are received in an intermediate language form (IL) such as a CLRT like MICROSOF. The JIT compiler 602 employs the application IL 135 and the execution time IL 302 and merges them into a single compiled management application 604 that will communicate with the above described disk/disc 303 and hardware 306. The JIT-based approach is illustrated in Figure 6, and many optimizations can be achieved, including: --. Since the DDI type is known at compile time, it will be more efficient to support different DDIs. This excludes a large number of status codes. -- If the condition is known at JIT, the status code can be excluded - for example, a valid parameter can be used to exclude parameter verification. -- Trivial execution time functions can be embedded to initiate instruction scheduling when a function calls. -- Targeted executable code for a specific host processor type (simultaneously embedded and implemented in execution time). When the microprocessor agent repairs the _ instruction set increase rate, the processor-specific optimization will increase. The performance of this architecture can be further improved by using an intermediate language (IL)-based driver. Figure 7 provides an embodiment of the interaction of the management code system. Here, -28-(24)1276998 I will initiate the work that has been directly written to the potential benefits of the face, and the correctness of the formula. Both are in the form of IL 604. From past experience, where execution time marks the data stream. That is, the data flow mode, and the program will: will be configured, and will usually be used. Looking back at the small size, only the DMA operation is used. As far as Figure 4 is concerned, the application, the management of the _-type near-knot will know the implementation of the conversion and compile time, it can invent the application page 135 compiled in order to put the hardware specific command buffer or Within the FIFO. In addition to the performance implications, the other: the engineering required to reduce the IHV transport cross-platform drivers has better boot verification tools to ensure that the driver application 135, execution time 302 and driver 3〇3 are sent to JIT 602. . JIT 602 converts them into management applications. DIRECTX has implemented a layered driver model, _ converting graphics and schema commands into simplified, hardware-independent DIRECTX execution time judgments that need to be cleared (also orders) Must be executed by hardware), it will be converted to a nuclear command data stream to the graphics driver. Then, the command data stream is parsed and converted into hardware-specific commands written in the memory buffer for the hardware to make 4 and Figures 6 and 7, the core mode driver 405 will have the most real There are two ways to implement enough code to initialize the hardware, start the composed command buffer, and set and control the interrupt. First, the above 135 and execution time 302 may be compiled by JIT 602 such that the most code interacts with driver DLL 303. Then the JIT 602 driver DLL 303 has the exact characteristics (for example, it is an illumination acceleration), and when the target code is generated for the client computer to take advantage of this knowledge. -29- 1276998 _ (25) Description of the Invention Continued page 2, the "management driver" variable of the present invention is implemented in FIG. 4, and f is assumed to be the application 135 compiled by JIT 602, execution time 302, and driver DLL. 303, so that the unified executable code performs conversion from the API and writes hardware specific commands to the DMA memory 410. This architecture combines the resiliency of the layered driver model with other advantages, combined with the efficiency of the on-line driver model-specific hardware. Therefore, this "management driver model" has great potential compared to other driver architectures. As described above, in conjunction with various computing devices and network architectures, the basic concepts of the present invention can be applied to any computing device or system in which it is desirable to be able to manage applications and drivers. Thus, the techniques for managing applications in accordance with the present invention can be applied to a variety of applications and devices. For example, the advantages of the present invention can be applied to a graphics system of a computing device, such as, for example, an individual object on a device, a portion of another object, from a server, a downloadable object, a device or object, and a network. In the middle, the middle." The resulting management application can be stored for later use or exported to other independent, affiliated or related processes or services. Here, the selected sample programming languages, names, and examples are representative of various options and are not intended to limit those languages, names, and examples. The various techniques described herein can be implemented in conjunction with hardware or software, or as desired. Thus, the method and apparatus of the present invention, or a point or portion thereof, may take the form of a code (i.e., an instruction) embodied in a physical medium, such as a floppy disk, a compact disc, or a hard disk drive - Or any other machine readable storage medium, wherein when the code is loaded and executed by the machine, such as, for example, a computer, the machine becomes the implementation of this -30- 1276998 _ (26) I invention description continuation page

發明的一種裝置。假使程式碼在可程式的電腦上執行,該 計算裝置通常將包括一處理器,以及處理器可讀取的儲存 媒體(包括非永久性和永久性記憶體及/或儲存元件),至 少一輸入裝置,和至少一輸出裝置。可利用本發明的邊界 探索技術的一或多個程式,例如,透過資料處理ΑΠ或類 似事物的使用,較好以一高階程序或物件導向程式語言實 作,以便與電腦系統通訊。但是,程式可以組合語言或機 器語言實作,如果需要的話。無論如何,語言可以是一—編 譯或解譯語言,並可與硬體實作結合。An apparatus of the invention. In the event that the code is executed on a programmable computer, the computing device will typically include a processor and processor-readable storage medium (including non-permanent and permanent memory and/or storage elements), at least one input. a device, and at least one output device. One or more programs that utilize the boundary exploration techniques of the present invention, for example, through the use of data processing or the like, are preferably implemented in a high level program or object oriented programming language for communication with a computer system. However, the program can be implemented in a combination of language or machine language, if needed. In any case, the language can be a one-compilation or interpretation language and can be combined with hardware implementation.

本發明的方法和裝置,也可經由通訊,該通訊透過傳輸 媒體傳輸的程式碼形式具體化,例如像透過電線或接線、 透過光纖、或經由傳輸的任何其他形式,其中,當程式碼 由機器接:收、載入並執行的時候,例如像EPROM、閘陣列 、可程式的邏輯裝置(PLD)、用戶端電腦、錄影機或類似事-物,或一接收機器,具有如上範例具體實施例所描述的驅 動程式技術,則變成實行本發明的一種裝置。當在一般用 途處理器上實作時,程式碼與處理器結合,提供一種可叫 用本發明功能的獨特裝置。此外,用於與本發明結合的任 何儲存技術,一定都是硬體和軟體的組合。 雖然已_結_合各圖式的較佳具體實施例來描述本發明,但 應了解也可使用其他類似的具體實施例,或對上述具體實 施例修改及增減,以執行本發明的相同功能,而仍不脫離一 其範疇。例如,當就網路環境的觀點來描述本發明範例網 路環境的時候,例如像對等網路環境,本行業的專家將發 -31 - 1276998 _ ^27) 發明說明續頁 現本發明不限於該環境,且本應用中所描述的方法,可I 用至任何計算裝置或環境,例如像遊戲主控台、掌上型電 腦、可攜式電腦及其他,不論是有線或無線均可,並可套 用到任何數量的這類經由通訊網路連接的計算裝置,並透 過網路互動。 此外,應強調多種電腦平台,包括手提裝置作業系統, 並思考其他應用特定的作業系統,尤其是無線網路裝置的 數量持續地在增加。並且,本發明可在或跨複數個處理-晶 片或裝置來實作,而且同樣也可以在複數個裝置上進行儲 存。因此,本發明不應該侷限於任何單一的具體實施例, 而是應根據附加的申請專利範圍的範®壽來加以解釋。 圖式簡單說明: 管理程:式碼的系統和方法,另參考隨附的圖式加以描述: 圖1是表示一範例網路環境的方媿圖,具有其中可實作-本發明的多種計算裝置; 圖2是表示一可實作本發明的範例非極限計算裝置的方 塊圖; 圖3A和3B說明各種不同計算系統的不同驅動程式模型; 圖4是電腦系統的方塊圖,具有根據本發明觀點的使用 者模式驅_動-程式DLL架構; 圖5說明當應用程式在範例圖形應用程式中產生API呼 叫時所發生的事件序列; 一 圖6根據本發明的觀點,說明應用程式和執行時間經過 JIT編譯的應用;以及 -32- 1276998 發明說明續頁 (28) 圖7根據本發明的觀點,說明應用程式、驅動程式和執 行時間經過JIT編譯的應用。 圖式代表符號說明: 10a, 10b 飼 服 器 物 件 14 通 訊 網 路 /匯 .流排 20 資 料 庫 100 計 算 系 統 環 境 110 物 件 110a 計 算 裝 置 110b 計 算 裝 置 110c 物 件 llOd 物 件 llOe 計 算 裝 置 120 處 理 單 元 121 系 統 匯 流 排 130 系 統 記 憶 體 131 唯 讀 記 憶 體 (ROM) 132 隨 機 存 取 記 憶體(RAM) 133 基 本 輸 出 入 系統 134 作 業 系 統 135 應 用 程 式 135a,135b,135c,135d, 135e 應 用 程 式 136 其 他 程 式 模 組 137 程 式 資 料The method and apparatus of the present invention may also be embodied via communication, the form of the code transmitted through the transmission medium, such as, for example, through wires or wires, through optical fibers, or via any other form of transmission, wherein the code is encoded by the machine When receiving, loading, and executing, such as, for example, an EPROM, a gate array, a programmable logic device (PLD), a client computer, a video recorder, or the like, or a receiver, having the above-described exemplary embodiment The described driver technology becomes a device for practicing the present invention. When implemented on a general purpose processor, the code is combined with the processor to provide a unique means of calling the functionality of the present invention. Moreover, any storage technique used in connection with the present invention must be a combination of hardware and software. Although the present invention has been described in terms of a preferred embodiment of the drawings, it is understood that other similar embodiments may be used, or modifications and additions to the above-described embodiments may be practiced to practice the invention. Function, and still not out of its scope. For example, when describing the exemplary network environment of the present invention from the point of view of the network environment, such as, for example, a peer-to-peer network environment, experts in the industry will issue a statement - 31 - 1276998 _ ^27. Limited to the environment, and the methods described in this application can be used in any computing device or environment, such as, for example, a gaming console, a palmtop computer, a portable computer, and the like, whether wired or wireless, and It can be applied to any number of such computing devices connected via a communication network and interacted through the network. In addition, a variety of computer platforms, including portable device operating systems, should be emphasized, and other application-specific operating systems should be considered, especially the number of wireless networking devices continues to increase. Moreover, the invention can be implemented in or across a plurality of processing-discs or devices, and can also be stored on a plurality of devices. Therefore, the present invention should not be limited to any single specific embodiment, but should be construed in accordance with the scope of the appended claims. BRIEF DESCRIPTION OF THE DRAWINGS: A management system: a system and method for a code, which is further described with reference to the accompanying drawings: Figure 1 is a block diagram showing an exemplary network environment with various calculations in which the present invention can be implemented Figure 2 is a block diagram showing an exemplary non-limiting computing device embodying the present invention; Figures 3A and 3B illustrate different driver models for various computing systems; Figure 4 is a block diagram of a computer system having a Figure 5 illustrates the sequence of events that occur when an application generates an API call in a sample graphics application; Figure 6 illustrates the application and execution time in accordance with the teachings of the present invention. Application compiled by JIT; and -32-1276998 Description of the Invention (28) FIG. 7 illustrates an application, a driver, and an application whose execution time is compiled by JIT according to the viewpoint of the present invention. Schematic representation of the symbol: 10a, 10b feeding device object 14 communication network / sink. stream 20 database 100 computing system environment 110 object 110a computing device 110b computing device 110c object llOd object llOe computing device 120 processing unit 121 system bus 130 System Memory 131 Read Only Memory (ROM) 132 Random Access Memory (RAM) 133 Basic Input and Output System 134 Operating System 135 Application 135a, 135b, 135c, 135d, 135e Application 136 Other Program Module 137 Program data

-33- (29) 發明說明續頁 非可抽換式、永久性記憶體介面 硬碟機 作業系統 應用程式 其他程式模組 程式資料-33- (29) Description of the Invention Continued Page Non-removable, permanent memory interface Hard disk drive Operating system Application Other program modules Program data

可抽換式、永久性記憶體介面 磁性磁碟機 - 可抽換式、永久性磁性磁碟 光碟機 可抽換式、永久性光碟 使用者輸入介面 指標裝置 鍵盤 介面或轉接器 區域網路(LAN)Removable, permanent memory interface magnetic disk drive - removable, permanent magnetic disk drive removable, permanent optical disk user input interface device keyboard interface or adapter area network (LAN)

數據機 區域網路(WAN) 遠端電腦 記憶體儲存裝置 圖形介面 處理單元(圖形處理器) 遠端應用程式 視訊記憶體 -34-Data Machine Area Network (WAN) Remote Computer Memory Storage Device Graphical Processing Unit (Graphics Processor) Remote Application Video Memory -34-

發明說明續頁 視訊介面 顯示器 輸出週邊介面 印表機 制ρ八Description of the Invention Continued Page Video Interface Display Output Peripheral Interface Printer ρ八

執行時間 驅動程式 執行時間/磁碟機 驅動程式DLL 硬體 命令緩衝區排程器 核心棱式驅動程式 DMA記憶體 接收 執行中 初始化Execution time Driver Execution time/driver Driver DLL hardware Command buffer scheduler Core edge driver DMA memory Receive In progress Initialization

建立並且初始化裝置 圖示呼叫 驗證 檢查 轉換為DDI呼叫 轉換為硬體命令 檢查是否清除 系統核心支援 •35- (31) 發明說明續頁 是否可以建立新的命令緩衝區? 建立新的命令緩衝區 初始化新的命令緩衝區 執行緒取得初始化的命令緩衝區 命令緩衝區加入至等候7[宁列 檢查是否可送出命令緩衝區 釋放資源 標TF為備安 - 釋放資源 備妥仔列 選取要調度的備妥CB 告知用戶端先選取 内容切換 調度命令緩衝區 中斷服務常式 儲存内容步驟 硬體讀取和執行命令緩衝區 是否先取得? 命令緩衝區正常完成 JIT編譯器 已編譯的管理應用程式 -36-Establish and initialize the device Icon call Verify Check Convert to DDI call Convert to hardware command Check for clear System Core Support • 35- (31) Invention Description Continued Can a new command buffer be created? Create a new command buffer Initialize a new command buffer Thread Get the initialized command buffer Command buffer is added to wait 7 [Ning column check whether the command buffer can be sent to release the resource flag TF for standby - release resources ready The column selects the ready CB to be scheduled to inform the client to select the content switching schedule command buffer interrupt service routine storage content step hardware read and execute command buffer first obtained? The command buffer completes normally. JIT Compiler Compiled Management Application -36-

Claims (1)

1276998 拾、申請專利範圍 1. 一種電腦系統,包括: 一處理器; 一作業系統,具有一與一計算組件互動的選取驅動 程式; 複數個應用程式指令,該等指令具有中間語言編譯 器可讀取的中間語言形式;以及 複數個執行時間指令,該等指令具有中間語言I譯 器可讀取的中間語言形式; 一中間語言編譯器,其中該中間語言編譯器可將應 用程式指令和執行時間指令,編譯為處理器可執行的 指令,以便與選取的驅動程式互動。 2. 如申請專利範圍第1項之電腦系統’其中該選取的驅動 程式包含複數個中間語言指令。 3. 如申請專利範圍第2項之電腦系統,其中該選取的驅動 程式分為使用者模式和核心模式指令。 4. 如申請專利範圍第3項之電腦系統,其中該選取驅動程 式的使用者模式指令,從裝置驅動程式介面指令轉換 為硬體特定命令。 5. 如申請_專利範圍弟4項之電腦系統^其中該選取的驅動 程式,將硬體特定命令寫入作業系統分配的緩衝區, 以送至硬體時間的排程器。 6. 如申請專利範圍第1項之電腦系統,其中該等複數個應 用程式指令和複數個執行時間指令,透過網路遞送到 1276998 _ 申請專利範圍續頁 該電腦系統。 7. 如申請專利範圍第2項之電腦系統,其中該選取的驅動 程式係透過網路遞送。 8. 如申請專利範圍第1項之電腦系統,其中該編譯器包含 一及時編譯器。 9. 一種與硬體進行軟體互動的方法,包含: 提供一具有中間程式語言形式的應用程式: 提供一具有中間程式語言形式的執行時間程式; 將該應用程式和執行時間程式編譯成單一可執行的 程式,以便在目標電腦系統上執行。 10. 如申請專利範圍第9項之方法,進一步包含提供一具有 中間程式語言形式的驅動程式,其中該驅動程式與該 應用程式和執行時間程式一起編譯為單一可執行的程 式。 11. 如申請專利範圍第10項之方法,其中該驅動程式包含 以可執行形式提供的核心模式部份。 12. 如申請專利範圍第11項之方法,其中該驅動程式包含 以中間語言形式提供的使用者模式部份。 13. 如申請專利範圍第12項之方法,其中該使用者模式部 份從裝置驅動程式介面指令轉換為硬體特定命令。 14. 如申請專利範圍第10項之方法,其中該驅動程式將硬 體特定命令寫入作業系統分配的緩衝區,以送至硬體一 時間的排程器。 15.如申請專利範圍第9項之方法,其中該應用程式和執行 1276998 _ 申請專利範圍續頁 時間程式,係透過網路遞送到目標電腦系統。 16. 如申請專利範圍第10項之方法,其中該驅動程式係透 過網路遞送。 17. 如申請專利範圍第9項之方法,其中該編譯器包含一及 時編澤為·。 18. —種電腦可讀式媒體,具有用於與硬體進行軟體互動 的電腦可執行指令,包含: 用於接收具有中間程式語言形式的應用程式的指令: 用於接收具有中間程式語言形式的執行時間程式的 指令; 用於將應用程式和執行時間程式編譯成單一可執行 的程式,以便在目標電腦系統上執行的指令。 19. 如申請專利範圍第18項之電腦可讀式媒體,進一步包 含用於接收具有中間程式語言形式的驅動程式的指令 ,其中該驅動程式與該應用程式和執行時間程式一起 編譯為單一可執行的程式。 20. 如申請專利範圍第19項之電腦可讀式媒體,其中該驅 動程式包含以可執行形式提供的核心模式部份,其中 接收到的指令包含使用者模式指令。 21. 如申請專利範圍第20項之電腦可讀式媒體,其中該使 用者模式指令包含中間語言指令。 22. 如申請專利範圍第21項之電腦可讀式媒體,其中該使一 用者模式指令從裝置驅動程式介面指令轉換為硬體特 定命令。 1276998 t#:專利範国讀頁 23. 如申請專利範圍第22項之電腦可讀式媒體,其中該驅 動程式將硬體特定命令寫入作業系統分配的緩衝區, 以送至該硬體時間的排程器。 24. 如申請專利範圍第18項之電腦可讀式媒體,其中該應 用程式和執行時間程式透過網路遞送到目標電腦系統 〇 25. 如申請專利範圍第19項之電腦可讀式媒體,其中該驅 動程式係透過網路遞送。 26. 如申請專利範圍第18項之電腦可讀式媒體,其中該編 譯器包含及時編譯器。1276998 Pickup, Patent Application Range 1. A computer system comprising: a processor; an operating system having a selected driver that interacts with a computing component; a plurality of application instructions that are readable by an intermediate language compiler An intermediate language form; and a plurality of execution time instructions having an intermediate language form readable by an intermediate language I translator; an intermediate language compiler, wherein the intermediate language compiler can execute application instructions and execution time The instructions are compiled into instructions executable by the processor to interact with the selected driver. 2. A computer system as claimed in claim 1 wherein the selected driver comprises a plurality of intermediate language instructions. 3. For the computer system of claim 2, wherein the selected driver is divided into a user mode and a core mode command. 4. The computer system of claim 3, wherein the driver mode user mode command is selected to be converted from a device driver interface command to a hardware specific command. 5. If the computer system of the application 4 of the patent scope is selected, the selected driver is written to the buffer allocated by the operating system to be sent to the scheduler of the hardware time. 6. The computer system of claim 1 wherein the plurality of application instructions and the plurality of execution time instructions are delivered over the network to 1276998 _ patent pending continuation of the computer system. 7. The computer system of claim 2, wherein the selected driver is delivered via the Internet. 8. The computer system of claim 1, wherein the compiler includes a timely compiler. 9. A method of interacting with a hardware, comprising: providing an application having an intermediate programming language: providing an execution time program in an intermediate programming language; compiling the application and execution time program into a single executable Program to execute on the target computer system. 10. The method of claim 9, further comprising providing a driver in the form of an intermediate programming language, wherein the driver is compiled into a single executable program along with the application and the execution time program. 11. The method of claim 10, wherein the driver includes a core mode portion provided in an executable form. 12. The method of claim 11, wherein the driver comprises a user mode portion provided in an intermediate language. 13. The method of claim 12, wherein the user mode component is converted from a device driver interface command to a hardware specific command. 14. The method of claim 10, wherein the driver writes the hardware specific command to a buffer allocated by the operating system for delivery to the hardware scheduler. 15. The method of claim 9, wherein the application and the execution of the 1276998 _ patent pending continuation time program are delivered to the target computer system via the network. 16. The method of claim 10, wherein the driver is delivered over a network. 17. The method of claim 9, wherein the compiler comprises a chronograph. 18. A computer readable medium having computer executable instructions for interacting with a hardware, comprising: instructions for receiving an application having an intermediate programming language: for receiving an intermediate programming language An instruction to execute a time program; an instruction to compile an application and execution time program into a single executable program for execution on a target computer system. 19. The computer readable medium of claim 18, further comprising instructions for receiving a driver having an intermediate programming language, wherein the driver is compiled into a single executable together with the application and the execution time program Program. 20. The computer readable medium of claim 19, wherein the driver comprises a core mode portion provided in an executable form, wherein the received command includes a user mode instruction. 21. The computer readable medium of claim 20, wherein the user mode instruction comprises an intermediate language instruction. 22. The computer readable medium of claim 21, wherein the user mode command is converted from a device driver interface command to a hardware specific command. 1276998 t#: Patent Fanguo Read Page 23. The computer readable medium of claim 22, wherein the driver writes a hardware specific command to a buffer allocated by the operating system to be sent to the hardware time Scheduler. 24. The computer readable medium of claim 18, wherein the application and the execution time program are delivered to the target computer system via the network. 25. The computer readable medium of claim 19, wherein The driver is delivered over the network. 26. The computer readable medium of claim 18, wherein the compiler comprises a timely compiler.
TW091137490A 2002-01-04 2002-12-26 Systems and methods for managing drivers in a computing system TWI276998B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/039,035 US7600222B2 (en) 2002-01-04 2002-01-04 Systems and methods for managing drivers in a computing system

Publications (2)

Publication Number Publication Date
TW200305823A TW200305823A (en) 2003-11-01
TWI276998B true TWI276998B (en) 2007-03-21

Family

ID=21903307

Family Applications (1)

Application Number Title Priority Date Filing Date
TW091137490A TWI276998B (en) 2002-01-04 2002-12-26 Systems and methods for managing drivers in a computing system

Country Status (10)

Country Link
US (1) US7600222B2 (en)
EP (1) EP1326166A3 (en)
JP (1) JP2003263326A (en)
CN (1) CN100555223C (en)
AR (1) AR039369A1 (en)
BR (1) BR0300078A (en)
CA (1) CA2415485A1 (en)
MX (1) MXPA03000095A (en)
RU (1) RU2304305C2 (en)
TW (1) TWI276998B (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI419005B (en) * 2007-08-02 2013-12-11 Planty Net Co Ltd Method for verifying application programs and controlling the execution thereof

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7768522B2 (en) 2002-01-08 2010-08-03 Apple Inc. Virtualization of graphics resources and thread blocking
US6809736B1 (en) 2002-01-08 2004-10-26 Apple Computer, Inc. Virtualization of graphics resources
US6809735B1 (en) * 2002-01-08 2004-10-26 Apple Computer, Inc. Virtualization of graphics resources
US7015919B1 (en) * 2002-01-08 2006-03-21 Apple Computer, Inc. Virtualization of graphics resources
US20080313282A1 (en) * 2002-09-10 2008-12-18 Warila Bruce W User interface, operating system and architecture
GB0229669D0 (en) * 2002-12-19 2003-01-29 Ibm A method for capturing computer application diagnostics
US7707566B2 (en) * 2003-06-26 2010-04-27 Microsoft Corporation Software development infrastructure
US7559050B2 (en) * 2003-06-30 2009-07-07 Microsoft Corporation Generating software development tools via target architecture specification
US7685581B2 (en) * 2003-06-27 2010-03-23 Microsoft Corporation Type system for representing and checking consistency of heterogeneous program components during the process of compilation
US7086041B2 (en) * 2003-06-27 2006-08-01 Microsoft Corporation Extensible type system for representing and checking consistency of program components during the process of compilation
US7788652B2 (en) * 2003-06-27 2010-08-31 Microsoft Corporation Representing type information in a compiler and programming tools framework
US8285881B2 (en) * 2003-09-10 2012-10-09 Broadcom Corporation System and method for load balancing and fail over
CN1954574B (en) 2003-12-08 2011-04-06 美国博通公司 Unified infrastructure over Ethernet
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US8704837B2 (en) 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
WO2006016852A1 (en) * 2004-08-12 2006-02-16 Trek 2000 International Ltd Method and system for automatic installation of a functional unit driver on a host
US8136104B2 (en) 2006-06-20 2012-03-13 Google Inc. Systems and methods for determining compute kernels for an application in a parallel-processing computer system
US8108844B2 (en) * 2006-06-20 2012-01-31 Google Inc. Systems and methods for dynamically choosing a processing element for a compute kernel
US7814486B2 (en) * 2006-06-20 2010-10-12 Google Inc. Multi-thread runtime system
US8146066B2 (en) * 2006-06-20 2012-03-27 Google Inc. Systems and methods for caching compute kernels for an application running on a parallel-processing computer system
US8381202B2 (en) * 2006-06-20 2013-02-19 Google Inc. Runtime system for executing an application in a parallel-processing computer system
US8443348B2 (en) * 2006-06-20 2013-05-14 Google Inc. Application program interface of a parallel-processing computer system that supports multiple programming languages
US8136102B2 (en) * 2006-06-20 2012-03-13 Google Inc. Systems and methods for compiling an application for a parallel-processing computer system
US8024708B2 (en) 2006-06-20 2011-09-20 Google Inc. Systems and methods for debugging an application running on a parallel-processing computer system
US8261270B2 (en) 2006-06-20 2012-09-04 Google Inc. Systems and methods for generating reference results using a parallel-processing computer system
US8375368B2 (en) 2006-06-20 2013-02-12 Google Inc. Systems and methods for profiling an application running on a parallel-processing computer system
US20080126625A1 (en) * 2006-07-17 2008-05-29 International Business Machines Corporation Just-in-time buffer allocation for use in event completion style input/output models
US7506218B2 (en) * 2006-08-18 2009-03-17 International Business Machines Corporation Timeout request scheduling using grouping and nonsynchronized processing to enhance performance
US20080201695A1 (en) * 2007-02-16 2008-08-21 Qing Zhou Computer graphics rendering
US8166492B2 (en) * 2007-04-10 2012-04-24 Microsoft Corporation Application compatibility using a hybrid environment
US7992137B2 (en) * 2007-07-30 2011-08-02 Nvidia Corporation Client server system for analysis and performance tuning of remote graphics devices
CN101382894B (en) * 2007-09-05 2013-09-04 北京软通科技有限责任公司 Method, device and system for downloading computer hardware device driver
US8209673B1 (en) * 2007-09-25 2012-06-26 Nvidia Corporation SLI approval policy database
US8146099B2 (en) * 2007-09-27 2012-03-27 Microsoft Corporation Service-oriented pipeline based architecture
CN101978352B (en) * 2007-12-13 2017-11-03 先进微装置公司 For with multiple graphics subsystem, the driver framework of the computing device of the power dissipation modes of reduction, software and method
US8176499B2 (en) * 2008-05-30 2012-05-08 Microsoft Corporation Defining, distributing and presenting device experiences
KR100962704B1 (en) * 2008-07-02 2010-06-11 유상규 A terminal unit using a peripheral device of the other terminal by control of one terminal and an interface method thereof
US20110063305A1 (en) * 2009-09-16 2011-03-17 Nvidia Corporation Co-processing techniques on heterogeneous graphics processing units
TWI391824B (en) * 2009-12-18 2013-04-01 Feeling Technology Corp Drive the connection system
US9830889B2 (en) 2009-12-31 2017-11-28 Nvidia Corporation Methods and system for artifically and dynamically limiting the display resolution of an application
US20110209128A1 (en) * 2010-02-24 2011-08-25 Nokia Corporation Systems, methods and apparatuses for facilitating targeted compilation of source code
US9098548B1 (en) * 2010-06-14 2015-08-04 Open Invention Network, Llc Method and apparatus for accessing a data source from a client using a driver
US8762972B2 (en) * 2011-02-08 2014-06-24 Nokia Corporation Methods and apparatuses for facilitating execution of applications requiring runtime compilation
US8683428B2 (en) * 2011-03-23 2014-03-25 Microsoft Corporation Automated generation of client/driver communication interfaces
CN103491121B (en) * 2012-06-13 2017-11-28 中兴通讯股份有限公司 A kind of NDIS driving methods and drive system for supporting double IP operations
US10324952B1 (en) * 2013-03-04 2019-06-18 Google Llc Hosted database
US9792663B2 (en) 2014-12-15 2017-10-17 Microsoft Technology Licensing, Llc User-defined command buffer formats supporting data-parallel translation
CN107273101A (en) * 2016-04-06 2017-10-20 晨星半导体股份有限公司 The operating method and control chip of embedded system
US10198259B2 (en) * 2016-06-23 2019-02-05 Advanced Micro Devices, Inc. System and method for scheduling instructions in a multithread SIMD architecture with a fixed number of registers
US9904527B1 (en) * 2016-08-12 2018-02-27 Amazon Technologies, Inc. Optimizing API implementer programs using fine-grained code analysis
US10289394B2 (en) * 2016-10-11 2019-05-14 Oracle International Corporation Selective generation of multiple versions of machine code for source code functions for execution on different processor versions and/or architectures
US10795989B2 (en) * 2017-03-05 2020-10-06 Fortinet, Inc. Secure just-in-time (JIT) code generation
US10108442B1 (en) * 2017-09-18 2018-10-23 International Business Machines Corporation Optimization and affinity for hypervisor-based just-in-time translator
EP3819725A1 (en) * 2019-11-06 2021-05-12 Siemens Aktiengesellschaft System and method for administration of drive components
TWI739284B (en) * 2020-01-20 2021-09-11 精品科技股份有限公司 Console application control management method and system
CN111290351A (en) * 2020-01-21 2020-06-16 深圳市雷赛软件技术有限公司 Driver management method, system, computer equipment and storage medium
CN113741856A (en) * 2021-07-27 2021-12-03 深圳市广通远驰科技有限公司 Drive binding method and device, electronic equipment and storage medium

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6212574B1 (en) * 1997-04-04 2001-04-03 Microsoft Corporation User mode proxy of kernel mode operations in a computer operating system
US6148438A (en) * 1998-01-06 2000-11-14 National Instruments Corporation System and method for creating composite classes for objects having virtual functions for avoidance of user mode/kernel mode transitions
US6618767B1 (en) 1998-11-17 2003-09-09 Sun Microsystems, Inc. Mechanism by which devices on unforeseen platform variants may be supported without re-release of core platform kernel software
US6871350B2 (en) * 1998-12-15 2005-03-22 Microsoft Corporation User mode device driver interface for translating source code from the user mode device driver to be executed in the kernel mode or user mode
US6594761B1 (en) * 1999-06-09 2003-07-15 Cloakware Corporation Tamper resistant software encoding
US6615167B1 (en) * 2000-01-31 2003-09-02 International Business Machines Corporation Processor-independent system-on-chip verification for embedded processor systems
US6769115B1 (en) * 2000-05-01 2004-07-27 Emc Corporation Adaptive interface for a software development environment
US7150011B2 (en) * 2000-06-20 2006-12-12 Interuniversitair Microelektronica Centrum (Imec) Virtual hardware machine, methods, and devices

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI419005B (en) * 2007-08-02 2013-12-11 Planty Net Co Ltd Method for verifying application programs and controlling the execution thereof

Also Published As

Publication number Publication date
EP1326166A3 (en) 2003-11-05
CN1432913A (en) 2003-07-30
RU2304305C2 (en) 2007-08-10
CA2415485A1 (en) 2003-07-04
EP1326166A2 (en) 2003-07-09
US7600222B2 (en) 2009-10-06
US20030131147A1 (en) 2003-07-10
MXPA03000095A (en) 2004-12-07
TW200305823A (en) 2003-11-01
CN100555223C (en) 2009-10-28
AR039369A1 (en) 2005-02-16
JP2003263326A (en) 2003-09-19
BR0300078A (en) 2003-09-02

Similar Documents

Publication Publication Date Title
TWI276998B (en) Systems and methods for managing drivers in a computing system
US6138140A (en) Data processing method and device
US7133933B2 (en) Content synchronization frameworks using dynamic attributes and file bundles for connected devices
CN1249601C (en) System and method for far distance WEB service cloning and example
US6714968B1 (en) Method and system for seamless access to a remote storage server utilizing multiple access interfaces executing on the remote server
US8589518B2 (en) Method and system for directly mapping web services interfaces and java interfaces
US9454616B2 (en) Method and system for unifying configuration descriptors
EP1174793A2 (en) System and method providing multi-tier applications architecture
US7673028B2 (en) Method and system for container-managed configuration and administration
CN1552029A (en) Web service development platform for asynchronous web services
WO2002033545A2 (en) Pluggable instantiable distributed objects
EP2791787B1 (en) Autonomous network streaming
US20080288955A1 (en) Method and System for Managing Preferences in a Client Portlet Container
US7975255B2 (en) Method, apparatus, and program product for building integration workflow endpoints into web components
EP1378822A1 (en) Data processing system and data processing method, information processing device and information processing method, and storage medium
CN102420873A (en) Compound network brand new cloud application platform
JPH0991143A (en) Method and device for processing data
US20070061277A1 (en) Method, system, and storage medium for providing dynamic deployment of grid services over a computer network
WO2006111209A1 (en) Process and system for sharing program fragments
Balderrama et al. jGASW: a service-oriented framework supporting HTC and non-functional concerns
US20070006121A1 (en) Development activity recipe
GB2483226A (en) Compound network application platform
CN110520842B (en) Address space splitting system and method for traditional application compatibility
US20090328029A1 (en) Software portal system for providing relation information of software and data format and method of operating the same
WO2008069541A1 (en) Software portal system for providing relation information of software and data format and method of operating the same

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees