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
English (en)
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/zh
Application granted granted Critical
Publication of TWI276998B publication Critical patent/TWI276998B/zh

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)

Description

1276998 ⑴ 玖、發明說明 _ (發明說明應敘明:發明所屬之技術領域、先前技術、内容、實施方式及圖式簡單說明) 技術領域: 本發明涉及管理計算系統中驅動程式的系統和方法。 先前技術: 就電腦系統設計而言,驅動程式是使硬體功能對作業系統 公開的軟體組件,以致作業系統進而可使那些功能對應用 程式公開。通常作業系統透過「裝置驅動程式介面」(「DDI」) 和驅動程式互動,謹慎定義的通訊協定啟動作業系統以:載 入驅動程式、詢問硬體提供的功能,並使那些功能供應用 程式使用。 作業系統提供給應用程式的軟體介面,即是「應用程式 設計介面」(「API」)。作業系統提供的API,使應用軟體抽 象化,但不一定類似基礎硬體的特性。大幅遠離基礎硬韹 的例子,=是為大量儲存所提供的目錄/檔案軟體抽象化。· 與基礎硬體不同的另一軟體抽象化是虛擬記憶體,這會使 應用程式通透地使用本機硬碟儲存體,如同它是隨機存取 記憶體一般。 當API導致硬體資源受到利用的時候,作業系統透過DDI 呼叫驅動程式利用那些資源。由於API和基礎硬體提供的 軟體抽象4匕=之間的差異,從API呼叫到DDI呼叫的轉譯,需 要處理大量的邏輯和程式碼。就這個規格而言,應用程一式 —層級APf和驅動程式一層級DDI之間的軟體,統稱為「執 行時間」。
應用程式、驅動程式等通常由高階語言撰寫,例如像C i
-6- 1276998 (2) 。這類語言通常主要由編譯實作為機器碼。 ,驅動程式與在系統上運作的應用程式和其 撰寫。然後應用程式和驅動程式,通常在安 應用程式執行時,動態(例如,DLL )連結在 統的優點是,編譯器可針對處理器的特定 將程式碼最佳化。但是,編譯器不能針對拍 例如PENTIUM 4和PENTIUM 3,將程式碼最佳化 器不會將其他系統參數包括驅動程式版本、 組件的程式碼最佳化,更不會考慮目標系統 制。而是,應用程式或執行時間層級系統, 昂貴的邏輯計算來判斷這類參數,而且由袁 以致於程式會佔用所有類別的電腦系統來^ 另一個適用的程式設計範例是在執行時 。及時(JIT)編譯器是這類系統的範例。其他 譯的系統,包括在說明狀態下立刻開始執行 統,但同時編譯程式碼並持續地使編譯最β 編譯器,當類別載入虛擬機器的時候,虛擬 法指標,會被指向JIT編譯器的指標所取代 次呼叫每個方法時,同時會叫用JIT編譯器 法。然後虛擬方法表格中的指標,以指 碼版本,以致於未來對方法的呼叫將跳到 JIT編譯系統,例如像JAVA位元碼,CLRT指令 間語言(IL)傳送程式碼給目標機器的優點。 成把IL轉換成本機處理器可執行的指令。因 發明說明續頁
在這類情況-下 他的程式分開 裝流程期間或 一起。這類系 類別(例如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的影像剪 輯。
在分散式計算架構中,電腦,傳統上可獨自作為用戶端 、彼此間直接通訊、並可同時擔任用戶端和伺服器,假設 任一角色對網路都是最有效率的。這減少伺服器的負載, 並允許所_亦_用戶端存取在其他用戶端上得到的資源,藉此 增加功能和整個網路的效率。 - 分散式計算可以超越地理上限制,更有效率地協助企業― 傳送服務和功能。而且,分散式計算可以將資料移動到比 較靠近使用的位置,當做網路快取機制。分散式計算也允 -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連接彼此耦合,以用於高容量通訊。
因此,圖1說明一範例網路或分散式環境,有一伺服器 經由網路/匯流排與用戶端電腦通訊,其中可使用本發明 。更詳細地說,根據本發明,許多伺服器10a、10b等,經 由通訊網路/匯流排14,可以是LAN、WAN、企業内部網路 、網際網路等,和許多用戶端或遠端計算裝置110a、JlOb 、110c、110d、110e等互連,該用戶端或遠端計算裝置例如 像可攜式電腦、掌上型電腦、薄型用戶端、網路裝置、或 其他裝置例如像攝錄影機、電視、烤箱、燈具、暖爐等等 。因此一般認為,本發明可適用任何要與另一計算裝置通 訊以進行·:影像剪輯或邊界定義服務相關的計算裝置。
在通訊鋼路/匯流排14是網際網路的網路環境中,例如_ ,伺服器10可以是Web伺服器,利用該伺服器用戶端110a 、110b、110c、110d、110e等,經由許多的已知通訊協定, 例如像超文字傳送通訊協定(HTTP),進行通訊。伺服器10 也可做為用戶端110,如同是一分散式計算環境的特徵。 通訊可以是視需要以有線或無線的方式。用戶端裝置110 不一定要孽:_由通訊網路/匯流排14通訊,就可以與其有獨 立的通訊。例如,假使有一台電視或攝錄影機,不一定匕乂 網路來控制。每一用戶端電腦110和伺服器電腦10可配備-各種不同的應用程式模組或物件135,並連接或存取各種 不同類型的儲存元件或物件,檔案可以儲存在其中,或是 -13 - 1276998 發明說明續頁 ⑺
部份檔案可下載或轉移至其中。任何電腦10a、10b、110a-、 110b等,負責根據本發明維護和更新資料庫20或其他儲# 元件,例如像資料庫20,用於儲存影像處理軟體,以便根 據本發明來處理影像。因此,本發明可用於具有用戶端電 腦110、110b等的電腦網路環境中,前述裝置可以存取並與 電腦網路/匯流排14和伺服器電腦10a、10b等互動,前述裝 置可以與用戶端電腦110a、110b等和其他裝置111和資料庫 20互動。 _ 範例計算裝置 圖2和下列討論,試圖簡單概略地說明適當的計算環境 ,其中本發明可實作為:但是,應該了解到,所有類型的 手持、可攜式和其他計算裝置和計算物件,都可與本發明 連結使用:。雖然一般用途電腦如下所述,但這僅是其中一 個範例,。-本發明可與具有網路/匯流排互通性和相互作用^ 的薄型用戶端一起實作。因此,本發明可實作於網路裝載 服務環境中,其中牽涉到十分小或極小部份的用_戶端資源 ,例如一網路環境,其中用戶端裝置只提供網路/匯流排 介面的服務,例如像放在一裝置内的物件。基本上,任何 可儲存資料的地方或可擷取資料的地方,都是操作本發明 影像剪輯_運_算法的適當環境。 - 雖然非必要,本發明可經由一作業系統實作,供裝置或 物件服務的開發人員使用,及/或包含在應用軟體内,以-協助處理影像資料。軟體可以電腦可執行指令的一般内容 來描述,例如像程式模組,由一或多個電腦執行,例如像 -14- 1276998 發明說明續頁 (10)
用戶端工作站、伺服器或其他裝置。一般而言,程式模_組 包括執行特殊工作或實施特殊抽象資料型別的常式、程式 、物件、組件、資料結構等等。通常,程式模組的功能可 視需要結合或者分散在各種不同的具體實施例中。而且, 本行業的專家將暸解,本發明可與其他電腦系統配置一起 實行。其他廣為人知的計算系統、環境、及/或適合與本 發明共同使用的配置包括,但不限於:個人電腦(PC)、自 動數鈔機、伺服器電腦、掌上型或膝上型電腦裝置、炙處-理器系統、以微處理器為基礎的系統、可程式的消費性電 子裝置、網路PC、裝置、燈具、環境控制元件、迷你電腦 、主機電腦等等。還可在分散式計算環境中實施本發明, 其中會由透過通訊網路/匯流排或其他資料傳輸媒體所連 結的遠端;處理裝置來執行工作。在分散式計算環境中,程 式模組可5位於本機和包括記憶體儲存裝置的遠端電腦儲, 存媒體,且用戶端節點可進而當做伺服器節點。
因此,圖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號中的其他資料,例如像載波或其他傳送機帋 並包括任何資訊傳送媒體。「調變資料信號」一詞,音 具有一或多個其特性集、或以這類方法變更以便將信=
訊編碼的信號〇 J^ ^ , U 和者乾例的方式,而不是限制,通訊媒 -16- (12)^276998 發明說明續頁 t L接有線媒體,例如像有線網路或直接線路連接,以及 無' 绝 、'’媒體,例如像聲音、RF、紅外線和其他無線媒體。上 麵的組合亦涵蓋於電腦可讀式媒體的範疇中。
、系统記憶體130包括電腦儲存媒體,具有非永久性及/或 永A '性記憶體的形式,例如像唯讀記憶體(ROM) 131和隨機 存* I[又上 i 尤t思體(RAM) 132。基本輸出入系統133 (BIOS),包含協助 電嗎110之内元件之間傳送資訊基本常式,例如像在啟
/、间,通常儲存在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 。
磁碟/光碟機和之前曾討論過的圖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加以連接。
電腦110可使用邏輯連接,在一網路或分散式環境中, 連接至一或多個遠端電腦,例如像遠端電腦180。遠端電 腦180可以是個人電腦、伺服器、路由器、網路PC、對等 裝置或其他通用的網路節點,通常包括許多或所有如上所 描述與電腦110相關的元件,但只有記憶體儲存裝置18】已-經在圖2中加以說明。圖2中描述的邏輯連接,包括一區域 網路(LAN) 171和一廣域網路(WAN) 173,但是也可包括其他的 網路/匯流排。這類網路環境常見於家庭、辦公室、企業 寬頻電腦網路、企業内部網路和網際網路中。 當用於:LAN網路環境時,電腦110透過轉接器170的網路介 面連接到。LAN 171。當用於WAN網路環境時,電腦110通常包-
括一數據機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驅動程式上執行,而截然 不同。
圖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.〇
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發明說明續頁
發明的一種裝置。假使程式碼在可程式的電腦上執行,該 計算裝置通常將包括一處理器,以及處理器可讀取的儲存 媒體(包括非永久性和永久性記憶體及/或儲存元件),至 少一輸入裝置,和至少一輸出裝置。可利用本發明的邊界 探索技術的一或多個程式,例如,透過資料處理ΑΠ或類 似事物的使用,較好以一高階程序或物件導向程式語言實 作,以便與電腦系統通訊。但是,程式可以組合語言或機 器語言實作,如果需要的話。無論如何,語言可以是一—編 譯或解譯語言,並可與硬體實作結合。
本發明的方法和裝置,也可經由通訊,該通訊透過傳輸 媒體傳輸的程式碼形式具體化,例如像透過電線或接線、 透過光纖、或經由傳輸的任何其他形式,其中,當程式碼 由機器接:收、載入並執行的時候,例如像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 程 式 資 料
-33- (29) 發明說明續頁 非可抽換式、永久性記憶體介面 硬碟機 作業系統 應用程式 其他程式模組 程式資料
可抽換式、永久性記憶體介面 磁性磁碟機 - 可抽換式、永久性磁性磁碟 光碟機 可抽換式、永久性光碟 使用者輸入介面 指標裝置 鍵盤 介面或轉接器 區域網路(LAN)
數據機 區域網路(WAN) 遠端電腦 記憶體儲存裝置 圖形介面 處理單元(圖形處理器) 遠端應用程式 視訊記憶體 -34-
發明說明續頁 視訊介面 顯示器 輸出週邊介面 印表機 制ρ八
執行時間 驅動程式 執行時間/磁碟機 驅動程式DLL 硬體 命令緩衝區排程器 核心棱式驅動程式 DMA記憶體 接收 執行中 初始化
建立並且初始化裝置 圖示呼叫 驗證 檢查 轉換為DDI呼叫 轉換為硬體命令 檢查是否清除 系統核心支援 •35- (31) 發明說明續頁 是否可以建立新的命令緩衝區? 建立新的命令緩衝區 初始化新的命令緩衝區 執行緒取得初始化的命令緩衝區 命令緩衝區加入至等候7[宁列 檢查是否可送出命令緩衝區 釋放資源 標TF為備安 - 釋放資源 備妥仔列 選取要調度的備妥CB 告知用戶端先選取 内容切換 調度命令緩衝區 中斷服務常式 儲存内容步驟 硬體讀取和執行命令緩衝區 是否先取得? 命令緩衝區正常完成 JIT編譯器 已編譯的管理應用程式 -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項之電腦可讀式媒體,其中該編 譯器包含及時編譯器。
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 (zh)
EP (1) EP1326166A3 (zh)
JP (1) JP2003263326A (zh)
CN (1) CN100555223C (zh)
AR (1) AR039369A1 (zh)
BR (1) BR0300078A (zh)
CA (1) CA2415485A1 (zh)
MX (1) MXPA03000095A (zh)
RU (1) RU2304305C2 (zh)
TW (1) TWI276998B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI419005B (zh) * 2007-08-02 2013-12-11 Planty Net Co Ltd 驗證應用程式及控制其執行的方法

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6809736B1 (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
US7768522B2 (en) 2002-01-08 2010-08-03 Apple Inc. Virtualization of graphics resources and thread blocking
US6809735B1 (en) * 2002-01-08 2004-10-26 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
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
US7559050B2 (en) * 2003-06-30 2009-07-07 Microsoft Corporation Generating software development tools via target architecture specification
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
US8417834B2 (en) * 2003-09-10 2013-04-09 Broadcom Corporation Unified infrastructure over ethernet
US8704837B2 (en) * 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US8024722B2 (en) * 2004-08-12 2011-09-20 Trek 2000 International Ltd Method and system for automatic installation of a functional unit driver on a host
US8443348B2 (en) 2006-06-20 2013-05-14 Google Inc. Application program interface of a parallel-processing computer system that supports multiple programming languages
US7814486B2 (en) * 2006-06-20 2010-10-12 Google Inc. Multi-thread runtime 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
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
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
US8136102B2 (en) * 2006-06-20 2012-03-13 Google Inc. Systems and methods for compiling an application for 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
US8108844B2 (en) * 2006-06-20 2012-01-31 Google Inc. Systems and methods for dynamically choosing a processing element for a compute kernel
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 (zh) * 2007-09-05 2013-09-04 北京软通科技有限责任公司 下载计算机硬件设备驱动程序的方法、装置及系统
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
JP5427187B2 (ja) * 2007-12-13 2014-02-26 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 複数のグラフィックサブシステムおよび低電力消費モードを有するコンピューティングデバイス用ドライバアーキテクチャ、ソフトウェアおよび方法
US8176499B2 (en) * 2008-05-30 2012-05-08 Microsoft Corporation Defining, distributing and presenting device experiences
KR100962704B1 (ko) * 2008-07-02 2010-06-11 유상규 일측 단말의 제어로 타 단말의 주변장치를 이용하는 단말장치 및 그 인터페이스 방법
US20110063306A1 (en) * 2009-09-16 2011-03-17 Nvidia Corporation CO-PROCESSING TECHNIQUES ON HETEROGENEOUS GPUs INCLUDING IDENTIFYING ONE GPU AS A NON-GRAPHICS DEVICE
TWI391824B (zh) * 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 (zh) * 2012-06-13 2017-11-28 中兴通讯股份有限公司 一种支持双ip业务的ndis驱动方法和驱动系统
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 (zh) * 2016-04-06 2017-10-20 晨星半导体股份有限公司 嵌入式系统的操作方法与控制芯片
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
TWI739284B (zh) * 2020-01-20 2021-09-11 精品科技股份有限公司 控制台程式的控制管理方法及系統
CN111290351A (zh) * 2020-01-21 2020-06-16 深圳市雷赛软件技术有限公司 一种驱动器管理方法、系统、计算机设备及存储介质
CN113741856A (zh) * 2021-07-27 2021-12-03 深圳市广通远驰科技有限公司 驱动绑定方法、装置、电子设备及存储介质

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
EP1168168A3 (en) * 2000-06-20 2005-04-13 Interuniversitair Microelektronica Centrum Vzw 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 (zh) * 2007-08-02 2013-12-11 Planty Net Co Ltd 驗證應用程式及控制其執行的方法

Also Published As

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

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 (zh) 用于远程web服务克隆和实例化的系统和方法
US6714968B1 (en) Method and system for seamless access to a remote storage server utilizing multiple access interfaces executing on the remote server
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
US20100077070A1 (en) Method and system for directly mapping web services interfaces and java interfaces
CN1552029A (zh) 用于异步Web服务的Web服务开发平台
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
WO2007088100A1 (en) Computer-implemented method, system, and program product for optimizing a distributed application
EP1378822A1 (en) Data processing system and data processing method, information processing device and information processing method, and storage medium
CN102420873A (zh) 复合网络全新云应用平台
JPH0991143A (ja) データ処理方法および装置
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
US20070006121A1 (en) Development activity recipe
Balderrama et al. jGASW: a service-oriented framework supporting HTC and non-functional concerns
GB2483226A (en) Compound network application platform
CN110520842B (zh) 针对传统应用兼容性的地址空间拆分系统及方法
US20090328029A1 (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