專利名稱:適用于面向對象編程語言的硬件加速器的制作方法
發明的
背景技術:
領域本發明涉及面向對象編程語言。更確切地說,本發明涉及一種適用于面向對象編程語言的硬件加速器。
現有技術的描述面向對象編程(OOP)是基于"對象"概念的一種編程語言和技術的分類名稱。一個對象是在程序中有特定作用的獨立組元。OOP語言包括C++,以及由美國Sun微系統公司(Sun Microsystems,Inc.)開發的Java語言。僅僅為了討論的目的,本文中述及的OOP語言指的是Java。
OOP定義對象的分類。"類"是一個對象或一組共享公共結構和特征的對象集合的原型。對象也稱為“實體”,是類的特定表示法。類的每一實體根據它們的特定屬性加以區分。這些屬性由“實體變量”予以定義。在類中定義這些實體變量的類型和名稱。然而,實體變量的數值卻是在對象中設定和變換的。
類的特征決定該類的實體如何操作。類的特征是由與所述類有關的,被稱為“方法” 的一組例行程序確定的。在對象上的操作是應用方法來完成的。方法對一特定類的所有實體是共用的。
類是分層次排列的。在層次中每一類可以有一個類置于該層之上被稱之為“超類”,或有一個類置于其下被稱為“子類”。子類從它們的超類中“繼承”屬性和特征。這樣,一個子類就不必對在超類中定義的特征重新定義,但卻能夠從超類中接受方法和變量。
在OOP中,過程調用以報文傳送術語來描述。報文指定方法并可任選地包括其他自變量。當將報文發送到對象時,對象的類尋求其中指定的方法,從而確定如何在給定對象上完成所請求的操作。若該方法未被定義用于上述對象的類,則搜索該對象的超類。該過程要貫穿所述類的整個層次,一直持續到不是找到上述方法定義就是再沒有更高層的超類可找為止。
調用過程自變量的排列由一調用約定加以確定。該調用約定確定特定的指令,按這些指令,將自變量推向存儲棧或進入寄存器,同樣它還擔負消除上述自變量。
藉助調用約定或接口程序,應用訪問操作系統和其他服務被稱為應用程序編程接口(API)。在Java中,核心Java API定義最小的功能集,考慮到Java的順應性,它必須受到計算機系統基礎技術的支持。
Java支持稱之為應用程序的獨立程序和支持稱之為小應用程序的從屬性程序。Java小應用程序是通過電子網絡傳輸的程序,這些程序由接收裝置上的應用程序執行。上述電子網絡的實例包括因特網和局部區域網絡系統,在此處稱之為內聯網。接收裝置包括計算機,個人數字助理,以及能連因特網的電話。
此處為了討論起見,假設一個Java小應用程序將通過因特網傳送到接收的計算機供顯示在萬維網(Web)網頁中用。一個Java應用程序是可獨立應用的程序,并不需要借助一個應用程序來執行,例如,在接收的計算機上設置一個Web瀏覽器。
Java是獨立的計算機平臺語言,能夠靠任何Java應允的計算機系統運行。Java開發環境包括一Java編譯程序和一Java解釋程序。該Java編譯程序從一Java程序中生成字節碼。Java字節碼是機器指令而不是特別的計算機平臺。
將一個特別的計算機平臺字節碼翻譯器用于執行Java程序。該字節碼翻譯器被稱為Java虛擬機。適用于小應用程序,把上述字節碼翻譯器裝入一啟動Java的Web瀏覽器內部。Java虛擬機和它的支持代碼統稱為Java運行系統。
Java虛擬機包括字節碼指令集,一組寄存器,一用以存儲方法的區域,一存儲棧和一無用單元收集堆。Java虛擬機寄存器暫時保存表示機器狀態的數據。上述寄存器對機器運行起反應,在執行每個字節碼以后進行更新數據。上述方法區域存儲Java字節碼,它們執行Java系統中的大部分方法。
存儲堆棧用于為字節碼和方法組供應參數,并收回它們的結果。棧幀包含用于方法調用的局部變量,其執行環境,以及其操作數棧。
所述堆是存儲單元,從存儲單元中重新產生的實體予以保留。實體會自動地在Java中被“無用存儲單元收集”。無用單元收集程序是一種程序設計子例程,將它設計成能追蹤每個被建立的實體,并在對上述實體的最終訪問已消失后,釋放存儲一個實體的存儲器。
在Java中,把在不同程序中打算反復重新使用的對象/分類作為一個“分類庫”加以存儲。一組分類體現用以解決許多相關問題的抽象設計,通常稱為可重用基本設計結構。存儲在上述Java分類庫中的核心應用可重用基本設計結構包括Java.Lang,Java.Util,Java.Applet,Java.IO,Java.NET,以及Java.AWT。
Java.Lang包括把數據類型和系統權能添加到語言本身的分類,而Java.Util包含實用程序分類和簡單類集分類。Java.Applet包含用以執行Java小應用程序的分類。
Java.IO包含從數據流中寫入和讀出的輸入和輸出分類,例如,標準的輸入和輸出。Java.IO還包括適用于處理文件的輸入和輸出分類。
Java.NET包含聯網支持分類。該分類包括按照比如標準萬維網協議,例如TCP/IP和IP,用以連接和檢索文件的那些分類,以及用以建立網絡界面接口比如那些用在UNIX的應用程序的那些分類。
Java抽象分屏成套軟件工具(Java.AWT)提供用以建立基于圖形用戶接口(GUI)小應用程序和應用程序的分類和特征。例如上述Java.AWT能夠用在屏幕繪圖,建立窗口、按鈕、選項欄、滑動塊區和其他用戶界面元素。Java.AWT還能用于處理用戶輸入,例如鼠標器單擊和擊鍵。
面向對象軟件可重用基本設計結構一般是使用計算機的隨機存儲器(RAM),只讀存儲器(ROM)或虛擬存儲器(VM)來執行的。例如在計算機上啟動Java應用程序或小應用程序時,首先執行的一項操作是建立GUI。
雖然,因為基于軟件的工具正在應用,是能夠要求計算機操作系統處理能力的有效百分率來實際生成并顯示所述GUI的。但為此當GUI元素正呈現在顯示設備上的時候,由上述操作系統處理的其他指令就會明顯地放慢下來。另外,在顯示正進行更新的同時,倘若發生鼠標或鍵盤事件,Java運行可能進入一種死鎖狀態,在更新事件發生的同時,系統也正嘗試處理待辦的鼠標或鍵盤事件。最后運行系統不能在合理的時間范圍內抓起并處理所有的事件。直到最終用戶程序出現中止工作,明顯地拒絕進一步的命令和輸入。
Java是一個多處理單元/多線程處理系統。因而,它支持許多程序,以及同時執行許多各自在其自己地址空間內的處理過程。線程是執行這些處理過程中之一的代碼序列。因此,Java編程環境和運行系統兩者都有一個多線程體系結構。
在一個Java的多線程程序中,運行Java程序的一個單線程可能會被阻塞,直到例如一個窗口被拉下。此外,任何依賴于該單線程的其他線程也可能被阻塞。舉例來說,通過網絡傳輸信息,阻塞能夠約束或延遲。阻塞就這樣被定義為,一個Java線程在重新開始執行之前等待任務完成的能力。
往往希望是作為嵌入式環境的一部分來運行Java程序,例如,在諸如能連因特網的電話機那樣的設備上運行Java應用程序和小應用程序。然而,需要Java代碼和一快速字節碼處理器來使上述設備與Java相容。可是這會顯著增大制作和操作該設備的成本。
因此若能減少性能的降低而提供一種方法和設備則將是一個優點。如果這種方法和設備允許面向對象的程序既能有效應用于嵌入式環境又能有效應用于臺式環境中,則將是另一個優點。
發明概要本發明提供一種使面向對象的編程語言得以加速的方法和設備。本發明的最佳實施例配置成與一Java相容的處理器一起使用,用Java編程語言和標準Java基于對象的可重用基本設計結構。然而,本發明的另一些實施例適合于與任何面向對象編程語言一起應用。本發明的另一些實施例還適合于與其它基于對象的結構一起應用,例如,蘋果計算機的“開放式步驟”結構或微軟的基于對象的AFC庫。
本發明提供一種硬件加速器,它包含執行一種或多種Java應用程序結構的功能。在本發明目前最佳的實施例中,將加速器構成作為一個專用集成電路(ASIC)的一部分。上述加速器包括一硬件對象管理系統,它管理實體以及分派給實體的數值的狀態。
本發明的最佳實施例執行Java抽象分屏成套軟件工具(AWT),Java.NET,以及Java輸入/輸出應用程序結構。此外,如果需要的話,本發明還能夠支持另一些Java結構。
Java運行系統既管理硬件對象管理系統又管理軟件對象管理系統。上述軟件對象管理系統可以完全用軟件方式來完成,或既用軟件又用硬件來完成。
由一Java程序執行的,支持Java應用程序結構分類的實體和方法被卸載到硬件對象管理系統。于是,在本發明的最佳實施例中,在上述硬件對象管理系統管理Java.AWT和Java.NET請求的同時,中央處理器(CPU)仍能繼續處理指令。
本發明存儲應用程序結構分類作為在共用存儲器中的分類庫。然而,每一支持應用程序結構是分別加以管理的。一項請求被分配到特定應用程序結構的硬件控制器,根據需要訪問共用存儲器。
一軟件占位程序被提供作為硬件對象管理系統和CPU之間的一個接口。上述軟件占位程序能夠進行修改和替換,以允許本發明可與任何兼容的OOP語言一起應用。
硬件對象管理系統包括一個用以接收和存儲對象請求的輸入/輸出請求隊列。當任務處理器為對象指定存儲器時,就把它從隊列中除去。現用對象列表追蹤Java虛擬機中的引用計數數到一實體。當到實體的引用計數數為零時,借助一無用存儲單元收集程序釋放存儲上述對象的存儲器。
在本發明目前最佳的實施例中,Java.AWT硬件工具包含一個窗口/觀察系統和一映射驅動程序。一個圖形Java程序構成有如一個分層的嵌套式包容文件和組元。包容文件管理稱之為組元的可視對象的收集。組元表示在屏幕上顯示的可視功能性,例如,選項欄,按鈕,可編輯文本區和文本區段。包容文件本身可以相互間分層嵌套,并可與另一個包容文件保持父代<->子代關系。對一給定的應用程序來說,在視窗層的頂部有一包容文件視窗,它是借助一視窗系統(AWT.圖文框)對象呈現的。AWT.圖文框把本機窗口定義為專門的計算機平臺(即WindowsTMSolarisTM)。
此外,還能夠把包容文件看成是特定分類組元,它有容納其它一些組元的能力。這是因為從功能性來看包容文件分類為組元的子類。屏面是在一應用程序或小應用程序范圍以內可被顯示在一顯示屏上的包容文件。圖文框是帶標題和選項欄的窗口,同時還是另一種組元/包容文件的類型。共享分類特征意味著所有這些分類允許它們共享各種特性,并能很好集成在一起。所述Java.AWT硬件工具通過優化通信和增加包容文件顯示效率,在不同的組元對象變型之間影響這些共享功能。
包容文件是能夠容納其它組元的Java.AWT組元。屏面是能夠被顯示在顯示屏上的一個包容文件,例如一個小應用程序。圖文框是具有像標題和選項欄這樣一類特征的窗口。
窗口/觀察系統包括一個用以建立圖文框和組元,并用以把數據傳送到映射驅動程序的通用圖形控制器;一個用以管理圖文框的窗口管理器;一個在圖文框范圍內用以管理包容文件分層的布局管理器;以及一個在包容文件范圍內用以管理組元分層的組元管理器。
Java.NET硬件工具包含一個窗口/觀察系統和一個連通性驅動程序。上述窗口/觀察系統包括一網絡控制器,它包含用于Java.NET可重用基本設計結構等價的微代碼。一網絡查詢機制執行DNS查找并把報告結果傳到上述網絡控制器,一網絡界面接口管理器管理由應用程序使用的網絡界面,以及一數據流管理器用于通過由網絡協議支持的鏈路往返空間輸入和輸出數據。
因此,本發明提供一種硬件工具,它借助支持應用程序結構的協同指令用以減少阻塞。Java處理過程由此得以加速。
附圖的簡要說明
圖1是顯示按照本發明的硬件加速器10結構性綜述的框圖;圖2是按照本發明的Java加速器的示意框圖;圖3顯示按照本發明在對象實體化和刪除以后的對象目錄表;圖4是顯示按照本發明的包容文件與其內部組元實體連接序列的框圖;圖5是顯示按照本發明的現用對象數據清單的框圖;圖6是按照本發明的硬件加速器的內部功能框圖;圖7是圖6上示出的Java.AWT加速器的更加詳細的框圖;圖8是顯示全部應用本發明同時使用幾個線程的JVM的框圖;圖9是按照本發明在硬件中處理AWT顯示對象的理想話路圖;圖10是顯示由本發明支持的Java抽象分屏全套軟件工具對象的框圖;圖11是按照本發明的Java抽象分屏全套軟件工具硬件實現的功能框圖;圖12是按照本發明的視窗系統的框圖;圖13顯示按照本發明由一映射驅動程序支持的組元表;圖14是顯示按照本發明結合處理實例的示意圖;圖15顯示由圖13的映射驅動程序的圖形程序節支持的映射類型表;圖16是顯示按照本發明的Java.AWT加速器"指令"執行和對象管理的框圖;圖17是按照本發明嵌入AWT程序節中的功能性說明;圖18是按照本發明的Java抽象分屏全套軟件工具窗口/包容文件/觀察實體分層結構的實施例的框圖;圖19是由本發明支持的Java.Net對象的框圖;圖20是按照本發明的Java.Net加速器的功能框圖;以及圖21是按照本發明嵌入NET程序節中的功能性說明。
發明的詳細描述本發明提供一種用以加速面向對象的編程語言的方法和設備。本發明的最佳實施例已加以優化可與由美國Sun微系統公司開發的Java編程語言,并與Java應用程序接口一起使用。然而,本發明也容易適合于與任何面向對象的編程語言一起使用,例如C++程序設計語言,或甚至可適用于以面向對象形式書寫的程序C語言。因此,以下論述只是作為例子而提供的,并不能作為對本發明范圍的限制。
同樣地,與Java加速器內連的工具也可應用不同的應用程序結構,或設定應用程序結構不與Sun公司的Java APIS相連。
雖然,本發明的最佳實施例適合用于通過因特網的數據傳送,但本發明等同地可應用于其他廣域網或局域網。另外,盡管最佳實施例是與臺式計算機一起應用的,實際上本發明也可與其他設備一起應用,包括網絡服務器,個人數據助理,傳真機和能與因特網聯網的電話。
以下述及的顯示屏和圖形用戶接口的布局結構是按照本發明目前最佳的實施例配置的。然而,熟悉本技術領域的人士會理解到,上述顯示屏和圖形用戶接口為迎合本發明另一個實施例的需要,是很容易加以修改的。因此,以下論述僅僅提供作為本發明的例子,而不能作為對本發明范圍的限制。
圖1是顯示按照本發明的硬件加速器10結構性綜述的框圖。靠計算機的CPU(圖上未示出)運行的Java虛擬機16,是供靠計算機系統運行的Java應用程序12用的字節碼翻譯器。為了Java小應用程序14,將上述字節碼翻譯器構成可啟動Java的萬維網瀏覽器。硬件對象管理Java加速器的存儲器400(參見圖2)的一部分被預先指定容納對象描述信息和參數。這些對象空間全都是相等尺寸的,但各自的格式卻取決于分配給它們的對象類型。在每個對象描述信息的起始點有一個狀態字節,它指明那個特定對象空間是否是在使用中。
在啟動的同時,標志符表明為正空閑著。于是軟件可應用以下步驟開始建立對象*將第一項命令或任務發布到AWT命令寄存器407或NET命令寄存器413。
*上述命令接著在AWT命令解碼器408或NET命令解碼器414進行解碼。
*一旦確定需要有待建立對象的類型,就從空閑對象定位器403獲得下一個可用的對象ID,并與任何其它狀態信息一道通過返回操作先進先出(FIFOs)405或412回傳,經由AWT數據寄存器406或NET數據寄存器410退出系統的處理器。
*只要上述空閑對象定位器將其對象ID傳回到系統,它便出去并開始為下一個空閑對象空間輪詢可用的存儲器400。
*當它發現一個時,它把對象空間的ID存儲在所述下一個對象建立命令的預報中。
*萬一,空閑對象定位器循環通過所有記憶存儲器卻沒有找到一個可用的對象空間,將會把存儲器超出狀態返回給系統。
*當系統希望存取一已經建立的特定對象時,它把任務和對象的ID一道傳到AWT命令寄存器407或NET命令寄存器413。對象ID和任務被分列并譯碼,同時上述ID被傳送到對象ID分解器402。該程序塊接著把對象ID轉換成一存儲器地址,可以用該地址在存儲器塊400中存取一特定的對象空間。
*當系統接收到對象刪除請求,恰當的命令和對象的ID一道被傳到命令寄存器。上述任務和ID被譯碼和分列,同時上述ID隨即被傳到對象分解器。Java加速器這時開動并清除在存儲器中該特定對象空間中表示使用著的狀態位,這樣它就使空閑對象定位器可用于下一個對象建立命令。在空閑對象定位器之前已報告存儲器超出狀態的情況下,上述新近釋放對象的ID被直接存儲在該空閑對象定位器中,因而消除所述定位器循環通過存儲器尋找上述定位的需要。
*該空閑對象定位器具有存儲下一個“n”空閑對象IDs的能力。將這種能力應用在每個單獨對象空間尺寸很小的場合,某些對象于是就利用“n”對象空間使之鏈接在一起。在這種情況下,第一個對象空間包含一個鏈接域,它指明連續的對象標示符存儲在哪里。這種在每一逐次對象空間中的連續直到第“n-1”空間為止,它包含一個到第n個(“nth”)對象空間的鏈路。在這種結構形式下,該空閑對象定位器響應一對象建立命令,報告反饋起始對象空間的ID。同樣地,如果確定有待建立的對象的類型需要多個對象空間,若有足夠的空閑對象空間可用,那么該空閑對象定位器僅僅報告反饋起始的ID。反之,則返回存儲器超出狀態信號。在這種情況下,對象空間并非必須按連續序列,而可以是隨機鏈接的。該空閑對象定位器應當能夠存儲 “n”空閑對象IDs,此處“n”是有待建立的最大對象所需要的最大限度的對象空間數量。
由硬件提供的所述對象IDs在長度方面可以是任何比特數。
該硬件對象管理器也可在對象IDs由主機系統提供而不是由硬件返回的狀態下運行。在這種情況下,將第一個提供的對象ID存儲在一變址引用計數寄存器中,并與所述第一空閑對象定位相關聯。每個接著發生的對象請求,其ID都要與所述引用計數寄存器加以比較。上述偏移量確定在存儲器中的實際對象定位。倘若該特定記錄已經在使用著,那么就應用下一個空閑對象定位。一預定的引用字段要與每個對象記錄一起算入,以表明其關聯的偏移量。偏移量是按模量計算方式完成的,為此當偏移量大于配給的存儲空間時,會使存儲器定位再回卷到起點。該系統也適用于系統提供的對象ID比特數大于硬件對象ID的狀態下運行。
圖3用實例說明在幾個對象已被實例化和刪除以后,所述堆看來像什么情況。要注意已刪除的5號對象當前已釋放可供重新使用。應當指出包容文件對象實質上居于組元鏈接表的首位。當對象數值為零時上述列表終止。為此并沒有0號對象,任何對它的引用都是無效的。
其它對象類型可顯示出與上述相同的功能性。例如一按鈕對象類似地引用一串對象,它本身就可能超過30比特。在這種情況下,按鈕對象會指向一串對象,后者會依次指向每個對象按30比特長度量度的另一串對象。由此顯示出組合對象是如何進入列表功能的。
圖4明確顯示包容文件與其內部組元實體的連接序列,在圖4中不直接示出相同的列表。在現用對象列表上的對象圖5是顯示按照本發明的現用對象數據清單的框圖。該現用對象數據清單包含可能有的許多30比特塊的列表,各自代表一個特定對象類型的現用實體。每個對象類型有與其關聯的結構。所有實體化的對象都包含標志,該標志描述對象類型,運行系統的方法選擇程序和對象所歸屬的結構。邊框布局實體另外還包含給包容文件用以安排一組組元的指針,有可能對象引用到其在北面,南面,東面和西面的組元,以及當繪制它們時確定在組元之間離開(在象素中)空間的數值。包容文件對象包含封裝組元的數量,引用持有該包容文件的接受實體值的組元對象,以及引用組元對象鏈接表中第一包容文件對象。組元對象包含一“類型”值,它代表他們是否應當按壓一按鈕,或根據一按鈕,滑動塊,文本字段或其它窗口小部件類型來處理事件。它們還包含一個通往包容文件中下一個可用組元的鏈路。
本發明將對象(參照圖5)處理在小程序塊中。所述對象依據它們的大小和覆蓋區看起來總是相同的。在現用對象列表上實體相互間的區分是其數據結構或實體變量。
實體可以是或簡單或復雜的。它們可包含8,16,32位整數或單位布爾值。它們還可包含對象對其它對象的參考IDs。
就包容文件對象的情況而言。在已經把關于包容文件對象的請求置于輸入/輸出請求隊列以后,J快速取得該請求并建立一固定大小的存儲塊以存儲與該包容文件實體有關的變量。在建立幾個組元對象以后,可將它們加到該包容文件上。如果指定一布局管理程序管理分配給包容文件的對象,這是相應地完成的。在包容文件<->邊框布局伴隨共生的情況下,可將五個可能的組元直接加到上述包容文件上。該邊框布局對象于是就被給定最多可引用五個(北,南,東,西和中)組元,這樣它就知道如何在以后恰當的時間取用并更新這些對象。
現用對象列表包含可能許多個30字節塊的目錄,其中每個代表特定對象類型的現用實體。
每個對象類型有一與以下示出的三個對象實體圖中關聯的結構。
所有實體化的對象都包含描述對象類型的標志,用于運行系統的方法選擇程序,以及對象所歸屬的結構。邊框布局實體另外還包含給包容文件用以安排一組組元的指針,有可能對象引用到其在北,南,東和西的組元,以及當繪制它們時確定在組元之間離開(在象素中)空間的數值。
包容文件對象包含封裝組元的數量,引用持有該包容文件的接受實體值的組元對象,以及引用組元對象鏈接表中第一包容文件對象。組元對象包含一“類型”值,它代表他們是否應當按壓按鈕,或根據按鈕,滑動塊,文本字段或其它窗口小部件類型來處理事件。它們還包容一個通往包容文件中下一個可用組元的鏈路。
這些對象定義直接映射進入由上述可重用基本設計結構所管理的C數據類型結構中(要注意這些是初步的結構,都將會改變且進一步優化)。類型定義結構ir_描述符_∥對象的開頭三字節。{j字節 結構類型;_∥結構的特定類型(Java.AWT,NET,IFC,等等)j字節 對象類型;_∥對象的特定類型(圖文框,事件,包容文件,等等)j字節 方法類型;_∥特定對象方法(-畫圖(),等等)j字節 使用著;_∥找出是否有記錄在使用著。}降序;類型定義 結構ir)_包容文件_∥提示每個包容文件必須引用一個組元結構{降序 對象描述符;j短_n組元;_∥包容文件中現有組元數。
矩形_嵌入;__∥布局管理程序可以是五個系統設定之一。
j字節_布局類型;_∥代表用于該包容文件的布局類型。
j接口_布局對象;_∥布局實體的特定索引。
j接口_接受組元對象;_∥我們是組元的子類所以我們需要這
__∥對組元結構的索引。
//////////////////////隨變量而定的圖文框-對象。
_j布爾_是可調整大小的;_∥與圖文框對象一起使用。
_j字節_光標類型;_∥光標0-13與圖文框對象一起使用。
_無符號短菜單欄對象;_∥菜單欄往往附屬于圖文框對象。
////////////////////////接口第一個組元節點;}包容文件,對話,圖文框,窗口;∥為方便起見指定多個名稱。__∥一窗口=圖文框=對話=包容文件遠至__∥涉及J快遞。類型定義結構ir組元{降序 對象描述符;j字節同層對象類型;_∥這是組元的選中對象值__∥例如,按鈕,標號,文本字段,等等。_無符號 短X;_無符號 短Y;_無符號 短 寬度;_無符號 短 高度;_無符號 短 父代對象;_∥對包容文件對象索引。_無符號 短 字體對象;_∥對描述由該組元使用著的字體的對象索引。_無符號 短 前景顏色對象;_∥對前景顏色對象索引。_無符號 短 背景顏色對象;_∥對背景顏色對象索引。_無符號 短 光標對象;_∥對光標對象索引。_無符號 短 串對象;_∥引用包含串的對象到__∥設法在組元中上色(可能是0)。_j布爾 可見的;_j布爾 啟動;_j布爾 有效;∥ 尺寸 最小尺寸;_∥組元包含的最小允許尺寸。∥ 尺寸 最佳尺寸;_∥組元包含的最佳尺寸。_j接口下一個組元節點;_∥對在包容文件中下一個已知組元索引。}詳細檢查,組元;_∥詳細檢查是僅僅用畫圖()方法的組元。類型定義 結構ir邊框布局{降序 對象描述符;j短h間隔;j短v間隔;j短 包容文件;_∥索引包容文件的陣列中與我們有關的。j短 北組元;_∥索引組元的陣列中指針指向之處。j短 南組元;j短 西組元;j短 東組元;j短 中組元;}邊框布局;類型定義 結構ir_信息流布局{降序 對象描述符;j短h間隔;j短v間隔;j短 對準;}信息流布局;類型定義 結構ir_網格布局{降序 對象描述符;無符號 短h間隔;無符號 短v間隔;無符號 短 行;無符號 短 列;}網格布局;類型定義結構ir_W圖形{降序 對象描述符;無符號 短 X,Y;無符號 短 寬度,高度;無符號 短 前景顏色對象;_∥對前景顏色對象索引.無符號 短 X偏移量,Y偏移量;矩形 剪輯矩形;_∥由W圖形改變剪輯()設定}W圖形;其他概念本文中提出的對象定義的要點(與其它本文中未定義的一起)被用于建立實體和保持獨特的實體數值。不用這些數據結構,上述在現用對象列表中30字節塊就會毫無意義。應用這些對象結構來識別,設定和存取在特定對象實體范圍內的數值。所述運行系統應用對象實體的收集從而形成方法執行,對給定數據集是很有意義的。
可以為對象規定在描述信息結構中的方法描述符,以便將所述對象傳送到低級幀緩存執行。該智能化的幀緩存接著可讀出所述結構,并以合乎理性的方式翻譯一項命令(例如,調整大小或刷新屏幕)。在這時圖形和組元對象就把它們的結構轉到該智能化幀緩存。
Java運行系統18包括Java虛擬機以及它的支持代碼。該Java運行系統分列實體化和方法調用。在本發明的最佳實施例中,該Java運行系統管理兩個實體管理程序,一個硬件對象管理系統22和一個軟件對象管理系統20。然而,在本發明的另一個實施例中,該Java運行系統管理兩個以上實體管理程序。
上述硬件對象管理系統包含支持Java應用程序結構的功能。在本發明目前最佳的實施例中,該硬件對象管理系統執行Java抽象分屏成套軟件工具(AWT)26,和Java.NET 24應用程序結構。Java輸入/輸出 應用程序結構(未示出)也執行支持Java.NET功能。上述配件對象管理系統當需要時可容易地適用于支持另外一些Java結構。為此,本發明提供一種Java應用程序結構硬件工具,它對CPU起到一個加速器的作用。
該硬件對象管理系統管理實體以及分配給實體的數值狀態。在本發明目前最佳的實施例中,該硬件對象管理系統全部用門加以實現,并可外接隨機存儲器(RAM)。
在該實施例中,硬件對象管理系統被構成為一專用集成電路(ASIC)的一部份。應予理解的是,雖然本發明的最佳實施例述及與門級工具和專用集成電路(ASIC)相聯系,但對熟悉本技術領域的人士來說本發明的實際硬件實現是可考慮加以選擇的。
上述軟件對象管理系統可完全用軟件來實現。然而,在本發明的另一個實施例中,該軟件對象管理系統是既用軟件又用硬件元件來實現的。軟件對象管理系統的一個實例是計算機系統的存儲管理器。
用Java程序執行的支持Java應用程序結構分類的實體和方法被卸載到硬件對象管理系統。因此,在本發明的最佳實施例中,在所述硬件對象管理系統管理Java.AWT和Java.NET請求的同時,CPU能夠連續處理指令。
無論什么時候在所述硬件實現的Java應用程序結構分類中的實體和方法正通過一Java程序執行時,上述實體和方法就被卸載到硬件對象管理系統。這樣,在本發明的最佳實施例中,該硬件對象管理系統管理靠Java虛擬機運行的線程的Java.AWT和Java.NET請求。因此,在所述硬件對象管理系統管理Java.AWT和Java.NET請求的同時,CPU仍可用于連續處理指令和線程而不取決于卸載的實體和方法。
打算在不同程序中要反復重新使用的應用程序結構分類被存儲于Java分類庫32(圖1)中。這些分類可包括Java.AWT 34,Java.NET 36,Java.Lang 42,Java.IO 38和Java.Util 44的那些應用程序結構。
上述應用程序結構分類作為分類庫被存儲在共享的存儲器中。盡管,每個支持應用程序結構是各別地進行管理的。將一請求分配給特定應用程序結構的硬件控制器,而需要時可訪問共享的存儲器。
用以完成網絡運行的分類和特征,例如,建立一網絡界面接口連接,是借助Java.NET加速器24來完成的。Java.NET加速器配置一個接口通往網絡TCP/IP存儲棧28。該Java.NET加速器包括一Java.NET 36聯網對象和Java.IO 38輸入/輸出相關對象兩者的硬件實現。這是因為聯網需要含有數據的輸入和輸出。把兩個結構都結合進硬件內使冗余軟件編碼能顯著減少。
在Java.NET加速器的實現的一個實施例中,應用Java.IO硬件工具在網絡界面接口連接期間處理數據輸入和輸出。在Java.NET加速器中,Java.NET和Java.IO應用程序結構分類通過繼承性被約束在一起。這樣,在一個結構中的分類能接受在另一個結構中的功能并疊加于其上。
Java.AWT加速器完成所述抽象分屏成套軟件工具的分類和方法(即,特征)。該Java抽象分屏成套軟件工具(Java.AWT)提供用以建立基于圖形用戶接口(GUI)的小應用程序和應用程序的分類和特征。這樣的分類包括Java.AWT類32,和任何關聯的繪制工具,例如,兩維繪制驅動程序40。
Java.AWT加速器可用于繪圖到顯示屏上,建立窗口,按鈕,選項欄,滑動塊區,以及其他用戶接口元素,而且還能用于處理用戶輸入,例如,鼠標器單擊和擊鍵。因此,為Java.AWT加速器配置一接口通往上述設備30就可用作計算機顯示,幀緩存,鍵盤和鼠標器。結構上的綜述圖6和7是本發明結構上的概要框圖。所述支持應用程序結構,例如,Java.AWT 26(在圖7中相當詳細地示出),Java.NET 24,以及Java.IO(圖上未示出)都被分類整理到一ASIC中從而構成加速器。對以下討論來說,Java.NET加速器將假定包括Java.IO的輸入/輸出相關對象。
在本發明的最佳實施例中,硬件對象管理系統22也被分類整理到ASIC中去管理實體和分配給實體的數值狀態。例如,該硬件對象管理系統存儲數據以追蹤一按鈕是否被按壓。該硬件對象管理系統還存儲指明對象之間關系的數據,例如,按鈕是特定窗口的一部份。該信息存儲在共享的存儲器內。
提供軟件占位程序作為每個加速器和運行Java虛擬機的CPU之間的一個接口。于是,Java.NET加速器與Java.NET軟件占位程序52和Java.IO軟件占位程序54相關聯,而Java.AWT加速器與Java.AWT軟件占位程序50相關聯。本發明覆蓋硬件組元的軟件占位程序是能夠加以修改和替代的,其允許本發明與任何可兼容的OOP語言一道使用。
以上述及的圖2是按照本發明的硬件加速器60的內部功能框圖。提供寄存器接口程序64(406,407,409,410,413,415)以監控并同步化傳送在主機CPU 62與本發明之間的所有輸入和輸出。
Java附從的主機CPU運轉Java虛擬機,例如,來自只讀存儲器(ROM)的存儲器88。經由物理傳輸94傳送到本發明的Java小應用程序或應用程序,接著經由物理傳輸接口86對準主機CPU。AWT命令解碼器408和NET命令解碼器414用于把二進制輸入信息轉換成用二進制代碼表示的輸出元素。
上述小應用程序或應用程序以字節碼形式存儲在存儲器400內。必須建立一GUI用以顯示小應用程序和應用程序。因此,當Java程序靠上述存儲器一開始運行時,構成一調用到存儲在ROM中的功能庫,指示生成GUI顯示。
借助于硬件對象管理系統402,403和軟件占位程序,把上述調用指向相應的Java應用程序結構加速器。舉例來說,當Java.AWT窗口被請求時,該Java.AWT加速器建立一窗口對象。圖形命令生成器80接著被請求指揮圖形控制器82在顯示屏500上實際繪制出窗口。
Java.NET加速器可包括電子郵件和萬維網瀏覽器應用驅動程序74。于是,舉例來說,應用本發明可以從因特網下載JPFG或GIF圖象。這時,上述圖象通過網絡TCP/IP棧76被引導到JPEG/GIF解碼器78,并接著導向由一幀緩存管理程序84控制的幀緩存器92。從而,本發明用一硬件工具加速從網上下載的圖形圖象的顯示。
存儲控制器/判優器401擔任主機CPU和共享主存儲器400之間的接口。該存儲控制器/判優器在本發明的各種組元之間分配和操縱系統存儲器。上述存儲器管理包括對存儲器的分配,例如,分配給Java.AWT加速器,或為CPU準備由本發明所建立的對象的存儲單元。
圖8是顯示按照本發明Java虛擬機/運行時間的多線程操作的框圖。因為Java有一多線程的體系結構,靠Java虛擬機16和運行時間18運行的Java小應用程序12和應用程序14可以是用同時執行的多線程100,102,104,106構成的。
包含一種支持Java應用程序結構的分類和方法的線程,經由硬件對象管理系統被引導到本發明。于是,在本發明的最佳實施例中,硬件對象管理系統管理靠上述Java虛擬機運行的線程Java.AWT 26和Java.NET 24的請求。因此,在硬件對象管理系統管理Java.AWT和Java.NET請求的同時,CPU仍能夠不依賴在其上的線程和指令連續處理。
圖9是按照本發明的硬件對象管理系統圖。本發明管理Java.AWT和Java.NET請求,如上所述這些請求是由靠Java虛擬機運行的線程構成的。對象在專用緩沖器中被保留和去除保留。
硬件對象管理系統包括用以接收和存儲對象請求的輸入/輸出請求隊列108。上述請求可以包括建立一個包容文件110;建立一個邊框布局112;建立一個屏面114;建立一個標識符116;建立一個文本字段118;以及建立一個按鈕120。
當任務處理器150為一對象分配存儲區時,例如,在建立一個新包容文件對象152之前,該對象從隊列中移走。現用對象列表122存儲實體124的目錄。將使用著的標志140提供給一個實體,以指明在Java虛擬機中引用計數126的總數。
當給一個實體的引用計數數字為零142時,存儲該對象的存儲區已通過無用單元收集程序(圖上未示出)去除保留。該現用對象列表也將指明所述特定實體未在使用128。
一個對象的狀態被存儲在一狀態表144中。所述狀態可包括該對象是在使用著146,或存儲該對象的存儲區已被去除保留148。
圖10是顯示由本發明支持的Java抽象分屏全套軟件工具對象的框圖。AWT快遞結構連接到基于軟件的Java.AWT占位程序。AWT快遞結構154本身能夠分解成兩部份。低層實現對于把基本的Java命令轉換到我們的顯示是必需的,并允許對鼠標/光筆/鍵盤事件的控制以及更新窗口和查看層面。高層實現基本上為AWT的余項加特征,例如把為UI元素(按鈕,文本區,文本字段)的微化畫圖特征包含進去。
Java虛擬機用一組命令(任務)156,158發送數據到本發明,并從本發明接收數據。Java編程語言主要依靠低層對象。因此,低層寄存器158包括對于Java的實現是極為重要的對象。
在本發明的一個實施例中,只執行低層實現。該實施例大大減小尺寸和存儲容量要求,而且對用于嵌入式系統中是很有利的。
低層的功能性包括基本分屏控制,圖象繪制,字體控制,以及事件處理。由本發明最佳實施例支持的低層對象包括彩色模型210;組元212;包容文件214;
圖象裁剪篩選216;直接換色模型218;事件220;字體222;字體規格224;圖文框226;圖形228;網格包壓縮230;圖象232;圖象篩選234;彩色模型索引236;選項單組元238;象素數據采集器240;以及RGB圖象篩選242。
高層寄存器156提供能夠任選地在硬件中執行的補充功能。這些高層功能包括標準GUI窗口小部件,GUI布局特征,以及存儲媒體控制對象。由本發明的最佳實施例支持的高層對象包括邊框布局160;按鈕162;詳細檢查164;卡片布局166;
校驗框168;校驗框組170;校驗框選項172;選擇174;對話框176;信息流布局178;網格包布局180;網格布局182;標識符184;目錄186;媒體跟蹤器188;菜單190;菜單欄192;可選項194;多邊形196;矩形198;滾動條200;文本區202;文本組元204;文本字段206;以及窗口208。
因為本發明用硬件代表完整的應用程序結構,所以本發明顯著省略代碼數量的需要。例如,OOP應用程序結構的某些部件能夠通過常規應用來構成,而其它部件則由于應用程序結構的獨特應用被隱蔽起來。然而,在硬件實現中,是不需要隱蔽這些結構部件的。省略冗余編碼和僅執行那些可公開地訪問,在硬件門陣列范圍內啟動任務的軟件占位程序的功能是更為有用的。
從而,在本發明中可省略許多Java應用程序結構的對象和分類。一個被省略分類的例子是美國Sun微系統公司的Java.NET.網絡界面輸入數據流分類。該分類源自Java.IO.文件輸入數據流并只在原始基類上增加極少量功能。因此,本發明能夠省略這樣冗余的分類,卻沒有導致重要功能的流失。
圖11是按照本發明的Java抽象分屏全套軟件工具硬件實現的功能框圖。一個包括Java.AWT應用程序結構實體和方法的線程,從Java虛擬機16卸載并經由Java.AWT軟件占位程序50到達硬件對象管理系統22。寄存器接口64監控并同步化地傳送在主機CPU 62與硬件對象管理系統之間的所有輸入和輸出。
對象請求被接收并存儲,直到在輸入/輸出 請求隊列108中進行處理。接著任務處理器150將每一請求引導到硬件AWT加速器250。該加速器包括窗口/觀察系統252和映射驅動程序260。
上述窗口/觀察系統包括用以管理由本發明生成的圖文框的一窗口管理器254。該布局管理器256管理在每個圖文框范圍內包容文件的分層,而組元管理器258則管理在每一包容文件內的組元。
上述窗口/觀察系統還包括通用圖形控制器82,它用于建立圖文框和組元并把數據傳到映射驅動程序。在該通用圖形控制器中完成用于Java.AWT應用程序結構的硬件等價微代碼。由窗口/觀察系統的其它組元和映射驅動程序相應地作出并執行對象/方法 請求。
映射驅動程序260應用繪制工具,例如,圖象再現器262,多邊形再現器264,以及字體再現器266建立所請求的對象。熟悉本技術領域的人士會理解到,所述繪制工具的類型包括映射驅動程序在內,是可以按照支持應用程序結構的特定需要而加以改變的。
圖象再現器262接收并還原壓縮圖象數據。于是就在顯示屏的給定組元范圍內再現所述圖象。多邊形再現器264為再現基于向量的圖象提供加速。能夠支持預定制圖類型,例如,繪制弧形,線條,橢圓形,多邊形和矩形。字體再現器266管理用以顯示文本的請求。窗口服務器和對象執行窗口服務器/分屏系統(參照圖12)出現在離開Java虛擬機的最遠點。它依賴于從對象執行機制(即,運行系統)轉到其上的命令,而從不直接從軟件層接收命令。因此,窗口服務器沒有來自軟件層的直接接口。
這大體上相當于Java在PC上運行的方式。一般,建立對等對象以映射從Java處理器到運行系統之外編譯資源的請求。對Windows′95/NTTM或任何其它現代操作系統來說,這意味著作出對標準視窗系統不是C就是匯編代碼的調用。
用在這些操作系統中的編譯代碼,就這樣對實現系統級分屏請求形成基本的需要。窗口受控于顯示屏上,往往利用標準按鈕,滑動塊和其它基于操作系統的UI窗口小部件來簡化編碼,增強性能,并提供與主機本身操作系統適配的用戶接口。在美國Sun微系統公司的Java開發工具中,這是應用一對等接口程序加以調用的,使用一組基于軟件的分類占位程序映射在Java對象與編譯本機碼之間的功能。
本發明不嚴格地應用對等的概念。無論如何,所述對等實現完全是在門級實現情況下予以提供的,而且,只有從其它基于專用集成電路功能(即,硬編碼Java對象)才是可存取的。從許多透視系數中了解到這樣做的意義。首先,可以在寄存器定義層很容易地把基于對等的繪制類型換出,允許常規或多個UI實現得以建立。其次,在ASICS中能夠適當地將對等間隔成適于硬件的不同區域。這是硬件與軟件之間的差異。在軟件中要建立邏輯功能組合,而在ASICs則要考慮到效率和減少門計數。
在軟件中我們可以按順序方式邏輯地組合基于對象的功能。所有基于觀察的對象可以在一處...一個結構中運行得非常協調。在硬件中卻必須把事情分開來。人們可以在窗口服務器為每個UI對象建立一個對象實現。然而,結果弄清楚這既不有效也不合乎需要。
需要指出的是,倘若可能,為使門計數減到最低限度應當犧牲精美,在圖12中作出更有吸引力的方案。
應當指出在這個分屏系統的實現中,只有少許可與標準Java‘對等’對象相比較的對象。它們與只用軟件Java實現中的對等有相當的差別因為它們支持更為抽象的功能組。一個軟件實現可能把對等分配給每一個UI對象(即,按鈕,滑動塊,文本組元,等等),而本發明采用一個單一組元對等,處理所有與組元有關的繪制請求。映射驅動程序是如何運行的映射驅動程序511當時壓縮所有現行的繪制代碼,并為解釋圖文框512,圖形513,組元514和程序串515實體提供再現器/處理器。該映射驅動程序一般通過存儲器引用或經由一固定大小數據流(30字節)存取這些實體。所述實體包含一命令字節,指導映射驅動程序關于該對象應執行哪一種方法。
當該映射驅動程序接收一實體時,它首先對正被發送到四個支持對象之一的對象類型解碼。一旦搞明對象類型,就把適用于該特定對象類型的參數傳送到解碼器。上述執行方法(例如,組元畫圖())被確定,同時該方法得以執行。繪制組元實體就一組元畫圖()而言,所述對象被進一步詢問以找出有待顯示的組元的類型。映射驅動程序的當前組元扇區知道,該如何再現圖13上示出的基于觀察的窗口小部件的類型。
一旦映射驅動程序察覺到組元類型是在繪制,就詢問實體關于例如窗口小部件存儲單元和尺寸之類的信息。然后上述組元就在顯示屏上再現。
因為對象都是相當小的,不可能在組元實體范圍內傳送程序串。情況正是如此,在本發明中一個實體的固定大小多半是30字節,它可能比程序串本身的大小更小。為此,在發送現行組元到映射驅動程序之前,先發送程序串或至少引用程序串。
程序串由映射驅動程序累加存儲。數據流或引用固定字節對象包含串信息一般被送到映射驅動程序。該程序串可能后隨另一個包含另一個程序串的固定程序塊。連續傳輸被并置在一程序串的末端上,直到一組元實體到達。一旦所述組元到達,該累加存儲的程序串與其相關聯,于是該組元就與其程序串一起再現。在文本可能有非常龐大程序串的情況下,上述并置特別有必要。
應當指出,在最終ASIC形式中,上述并置處理(參照圖14)包括把指針累加到固定程序塊,其包含用以再現的程序串而不是并置的程序串本身。這是很有必要的,因為某些組元可能有很大的文本內容,例如,在傳統Java上的文本區多半是32千字節或更大些。一文本區基本上是一文本編輯對象。把本發明的型式按比例縮小有可能任意分配一最大文本字符數,使之能夠保證有效應用在只有小的存儲覆蓋區的設備上。
一旦組元與其程序串得以再現,程序串本身就被復位為零,處于為下一個程序串/組元結合的準備狀態。繪制圖形實體圖形實體與組元實體有所不同。圖形實體擔負繪制低層圖元,在這方面組元可驅動這圖元或甚至驅動數以百計的圖元,包括線條,實心區和文本,以便繪制某些像可編輯文本區那樣。圖形對象支持基本要素繪制的通用類型。圖15示出的繪制類型是由映射驅動程序中的圖形對象支持的。
圖形對等實現在映射驅動程序中看起來是相當復雜的,但實際上比組元對等要簡單得多。圖形滿足很低層次繪制,而組元通常把一組圖形繪制特征組合進如前面段落所描述的單個宏指令中。繪制圖文框實體圖文框比較直截了當地說就是它們做什么。當這是圖文框對等實現的一種分類時,它在一特定類型的顯示屏上繪制窗口。窗口顯示類型可取決于上述實現而改變,并可支持多種個性類型,情況就是概括驅動程序的全面作用。
通常,圖文框有一標題欄,一圖標圖象和一與其關聯的光標類型。圖文框按組元和圖形相同的方式運轉,但被形成在它們包含的UI后面。
圖文框在標準Java實現中是包容文件的一種類型。然而,因為這有些像幀元同位體,它與任何其它對象沒有直接關系。就映射驅動程序而論,一個窗口僅僅是具有一宏指令的特殊對象,它繪制特定的線條集合,等等。它表現得與一組元在該層次上的工作方式非常相似。
圖16是顯示按照本發明的Java.AWT加速器對象管理的框圖。對象請求在執行驅動程序270中排隊等候輸入/輸出請求隊列108待決處理。當一個對象開始激活時,它就加入現用對象目錄122。
在圖16中,輸入/輸出隊列請求中第一個對象請求是建立一個圖文框對象272。當所述圖文框被建立時,就把274加入到現用對象目錄。下一個對象請求,建立一個事件對象276,接著就被移向上述輸入/輸出 請求隊列的頂部。當所述事件被建立時,也把278加入到現用對象目錄。
其余對象激活一直進行到對象Java虛擬機無用單元回收程序引用計數減少到零為止(參照以上圖9)。此外,需要時對象可包含相互引用。例如,窗口范圍內的關系,窗口之中的一個按鈕,依據所述按鈕顯示的文本就是由上述引用加以表明的。
圖17是按照本發明在Java.AWT加速器中窗口/觀察系統252功能性的說明。在該通用圖形控制器82中完成用于Java.AWT應用程序結構的硬件等價微代碼。在本發明的最佳實施例中,通過上述通用圖形控制器完成的功能包括建立圖文框(即,窗口);
建立組元(即,視圖);傳送圖象數據到圖象再現器;傳送文本到字體再現器;傳送形狀到多邊形再現器;允許為圖文框和組元選擇(聚焦);從顯示屏中實際刪除圖文框和組元;當調用視圖中畫圖方法時來回移動對象層;以及通過按下鼠標器和鍵盤按鈕,借助圖文框和組元鏈操縱鼠標器和鍵盤事件。
通過窗口管理器254完成的功能包括利用在多邊形再現器中的多邊形制圖拉出到視窗上;管理多個窗口以便它們能夠重疊;確定圖文框中已發生事件,并通知適當的布局管理器實體它可能需要進行更新;以及在每一個圖文框中監視各分層的包容文件。
窗口/觀察系統還包括一布局管理器256和一組元管理器258。上述布局管理器屬于(被引用)一圖文框,并完成以下功能在一個圖文框的范圍內管理各分層的包容文件;以及確定包容文件中已發生事件,如有必要,指示包容文件進行更新。
通過組元管理器完成的功能包括在一個包容文件的范圍內管理各分層的組元;以及確定組元中已發生事件,如有必要,指示組元進行更新。
圖18是按照本發明的Java抽象分屏全套軟件工具窗口/包容文件/觀察實體分層290的實施例框圖。結構292可包含一個或多個包容文件294,296。每一包容文件本身又可包含一個或多個不同類型的組元。
圖19是由本發明支持的Java.NET對象的框圖。可提供寫作工具以允許用戶從現成NET/IO可重用基本設計結構154中,通過匯編先有組元建立Java.NET和Java.IO可重用基本設計結構的對象和方法。
在本發明的最佳實施例中支持的Java.NET分類320包括數據語法分析信息包324;數據語法分析網絡界面接口326;超文本傳輸協議統一資源地址(HTTPURL)連接328;因特網地址330;多目標信息包網絡界面接口332;服務器網絡界面接口334;網絡界面接口336;網絡界面接口實現338;統一資源地址(URL)340;URL連接342;URL編碼器344;以及
URL數據流處理程序326。
在本發明的最佳實施例中支持的Java.IO分類322包括緩存輸入數據流348;緩存輸出數據流350;字節陣列輸出數據流352;輸入數據流354;輸出數據流356;行輸入數據流358;打印數據流360;<通用化方法>362;以及<通用化功能>364。
在Java.NET加速器中省去許多冗余支持對象,并沒有導致損失任何聯網功能。
圖20是按照本發明的Java.NET加速器的功能框圖。將包括Java.NET應用程序結構實體和方法的一個線程,從Java虛擬機16并通過Java.NET軟件占位程序52卸載到硬件對象管理系統22。寄存器接口程序64監控并同步化地傳送到在主機CPU 62與上述硬件對象管理系統之間的所有輸入和輸出。
Java.NET對象請求被接收并存儲在輸入/輸出請求隊列108中待決處理。接著任務處理器150將每一請求引導到硬件NET加速器370。該加速器包括聯網系統372和連接驅動程序382。上述連接驅動程序利用,舉例來說,如IP 384,TCP/IP 386,以及UDP 388這樣的網絡通信協議,執行請求以建立,保持,或終止網絡連接。
在網絡控制器374中完成用于Java.NET加速器的微代碼。窗口/觀察系統還包括網絡查詢機制376,網絡界面接口管理器378和數據流管理器380。
圖21是按照本發明在Java.NET加速器窗口/觀察系統372內部的功能性說明。網絡控制器374的功能包括信令DNS查詢;信令網絡界面形成,允許多路同時的網絡界面;導通網絡輸入和輸出;信令關閉網絡界面;以及以抽象分層形式通過TCP和UDP協議運行。
網絡控制器可同步地或非同步地運行。網絡查詢機制376完成DNS查閱并把結果報告到網絡控制器。
網絡界面管理器378管理正由應用程序使用著的網絡界面。該項管理包括打開或終止網絡界面的連接。上述網絡界面管理器還確定包容文件中已發生事件,如有必要,通知包容文件進行更新。當被請求時,將網絡界面狀態傳送到上述網絡控制器。
數據流管理器380通過TCP/IP或UDP鏈路穿梭傳送基于字符/數據流的輸入或輸出。上述數據流管理器提供一種不同于應用程序使用的輸入/輸出數據流的選擇。此外,當被請求時,該數據流管理器把緩存區轉換到網絡控制器。
雖然此中依照最佳實施例描述了本發明,但是熟悉本技術領域的人士很容易懂得,其它應用可能替代這些陳述而沒有脫離本發明的實質和范圍。
例如,在本發明的最佳實施例中,不管支持應用程序結構的數量有多少,在ASIC上只需要一個硬件對象管理系統。然而,在另外一些實施例中,提供多個硬件對象管理系統。舉例來說,當每個硬件組件有一專用硬件對象管理系統時,可為每個支持應用程序結構提供單獨的硬件組件,例如,一塊ASIC。
可以將本發明構成計算機系統的一部份,或者也可以構成可插入的設備,例如一PCI卡的一部份。
熟悉本技術領域的人士將能夠很容易地應用眾所周知的編程技術和設備,來構造本發明所要求的硬件和軟件。
因此,應當僅用以下包含的權項來限制本發明。
權利要求
1.一種用于加速運行面向對象編程語言處理器的裝置,其特征在于,它包含用于完成至少一種所述面向對象編程語言的應用程序結構的硬件加速器;以及用于把所述硬件加速器連接到所述處理器的軟件占位程序。
2.按照權利要求1所述的裝置,其特征在于所述面向對象編程語言是Java。
3.按照權利要求1所述的裝置,其特征在于,還包含用于管理所述應用程序結構的實體和分配給所述實體的數值狀態的硬件對象管理系統。
4.按照權利要求1所述的裝置,其特征在于,所述硬件加速器包含用于接收和順序地存儲每一待決執行指令的所述指令的輸入/輸出請求隊列;用于處理所述指令的任務處理器;以及用于追蹤引用計數數到一實體并用于去除未在使用實體的現用對象目錄。
5.按照權利要求1所述的裝置,其特征在于所述硬件加速器實現Java.AWT應用程序結構。
6.按照權利要求5所述的裝置,其特征在于,還包含一窗口/觀察系統;以及一映射驅動程序。
7.按照權利要求6所述的裝置,其特征在于,所述窗口/觀察系統包含用于建立圖文框和組元并用于把數據傳送到所述映射驅動程序的一通用圖形控制器;用于管理所述圖文框的窗口管理器;用于在所述圖文框之內管理包容文件分層的布局管理器;以及用于在所述包容文件之內管理組元分層的組元管理器。
8.按照權利要求1所述的裝置,其特征在于所述硬件加速器實現Java.NET和Java.IO應用程序結構。
9.按照權利要求8所述的裝置,其特征在于,還包含一窗口/觀察系統;以及一連接驅動程序。
10.按照權利要求9所述的裝置,其特征在于,所述窗口/觀察系統包含對所述硬件對象管理系統敏感的網絡控制器,所述網絡控制器實現Java.NET結構等價的微代碼,其中所述網絡控制器通過由所述連接驅動程序支持的協議作為抽象層運行;用于執行DNS查找并用于把報告結果傳送到上述網絡控制器的網絡查詢機制;用于管理由應用程序使用的網絡界面的網絡界面接口管理器;以及用于通過由網絡協議支持的鏈路往返空間輸入和輸出數據的數據流管理器。
11.按照權利要求1所述的裝置,其特征在于所述硬件加速器構成作為應用程序專用集成電路的一部份。
12.一種用于加速運行Java編程語言的處理器的裝置,其特征在于,它包含用于實現至少一種Java應用程序結構的硬件加速器;用于管理應用程序結構的實體和分配給所述實體的數值狀態的硬件對象管理系統,所述硬件對象管理系統包含用于接收和順序地存儲每一待決執行指令的所述指令的輸入/輸出請求隊列,用于處理所述指令的任務處理器,以及用于追蹤引用計數數到一實體并用于去除未在使用實體的現用對象目錄;以及用于把所述硬件對象管理系統連接到所述處理器的軟件占位程序。
13.按照權利要求12所述的裝置,其特征在于所述硬件加速器實現Java.AWT應用程序結構。
14.按照權利要求13所述的裝置,其特征在于,還包含一窗口/觀察系統;以及一映射驅動程序。
15.按照權利要求14所述的裝置,其特征在于,所述窗口/觀察系統包含用于建立圖文框和組元并用于把數據傳送到所述映射驅動程序的通用圖形控制器;用于管理所述圖文框的窗口管理器;用于在所述圖文框之內管理包容文件分層的布局管理器;以及用于在所述包容文件之內管理組元分層的組元管理器。
16.按照權利要求12所述的裝置,其特征在于所述硬件加速器實現Java.NET和Java.IO應用程序結構。
17.按照權利要求16所述的裝置,其特征在于,還包含一窗口/觀察系統;以及一連接驅動程序。
18.按照權利要求17所述的裝置,其特征在于,所述窗口/觀察系統包含對所述硬件對象管理系統敏感的網絡控制器,所述網絡控制器實現Java.NET結構等價的微代碼,其中所述網絡控制器通過由所述連接驅動程序支持的協議作為抽象層運行;用于執行DNS查找并用于把報告結果傳送到上述網絡控制器的網絡查詢機制;用于管理由應用程序使用的網絡界面的網絡界面接口管理器;以及用于通過由所述協議支持的鏈路往返空間輸入和輸出數據的數據流管理器。
19.按照權利要求12所述的裝置,其特征在于所述硬件加速器構成作為應用程序專用集成電路的一部份。
20.一種用于加速運行面向對象編程語言處理器的方法,其特征在于,它包含如下步驟用硬件加速器完成至少一種所述面向對象應用程序結構的應用程序結構;以及用軟件占位程序把所述硬件加速器連接到所述處理器。
21.按照權利要求20所述的方法,其特征在于所述面向對象編程語言是Java。
22.按照權利要求20所述的方法,其特征在于,還包含用硬件對象管理系統管理所述應用程序結構的實體和分配給所述實體的數值狀態的步驟。
23.按照權利要求20所述的方法,其特征在于,所述實現至少一個應用程序結構的步驟包含如下步驟接收和順序地把所述指令存儲在每一待決執行指令的輸入/輸出請求隊列中;在任務處理器中處理所述指令;以及借助現用對象目錄追蹤引用計數數到一實體并去除未在使用的實體。
24.按照權利要求20所述的方法,其特征在于所述硬件加速器實現Java.AWT應用程序結構。
25.按照權利要求24所述的方法,其特征在于,還包含如下步驟用窗口/觀察系統建立并顯示窗口和視圖;以及用映射驅動程序在顯示屏上繪制所述窗口和視圖。
26.按照權利要求25所述的方法,其特征在于,還包含如下步驟提供通用圖形控制器用于建立圖文框和組元并用于把數據傳送到所述映射驅動程序;提供窗口管理器用于管理所述圖文框;提供布局管理器用于在所述圖文框之內管理包容文件分層;以及提供組元管理器用于在所述包容文件之內管理組元分層。
27.按照權利要求20所述的方法,其特征在于所述硬件加速器實現Java.NET和Java.IO應用程序結構。
28.按照權利要求27所述的方法,其特征在于,還包含如下步驟用窗口/觀察系統建立并顯示窗口和視圖;以及應用連接驅動程序操縱網絡連接。
29.按照權利要求28所述的方法,其特征在于,還包含如下步驟提供對所述硬件對象管理系統敏感的網絡控制器,所述網絡控制器實現Java.NET結構等價的微代碼,其中所述網絡控制器通過由所述連接驅動程序支持的協議作為抽象層運行;提供網絡查詢機制用于執行DNS查找并用于把報告結果傳送到所述網絡控制器;用網絡界面接口管理器管理由所述應用程序使用的網絡界面;以及用數據流管理器通過由所述協議支持的鏈路往返空間輸入和輸出數據。
30.按照權利要求20所述的方法,其特征在于所述硬件加速器的構成作為應用程序專用集成電路的一部份。
31.按照權利要求22所述的方法,其特征在于所述硬件對象管理系統提供對象IDs返回到調用系統,以及其中所述對象ID可能是可變位長度。
32.按照權利要求22所述的方法,其特征在于,所述硬件對象管理系統可接受來自調用系統的對象IDs以便識別,所述對象識別各對象,所述方法還包含如下步驟把基對象ID存儲在基引用寄存器中并使所述基對象ID與空閑對象定位單元相關聯;以及把所有另外的對象IDs引用到所述基引用寄存器使所述對象ID與一對象定位單元相關聯。
全文摘要
本發明公開了一種用于加速面向對象編程語言的方法和裝置,它是在硬件門級上提供的。在一個附從于Java語言的實施例中,一種Java應用程序結構已在硬件中實現。在本發明的最佳實施例中支持Java.AWT,Java.NET,和Java.IO的應用程序結構。應用程序結構分類被存儲在共享存儲器庫中。由小應用程序執行的支持應用程序結構分類的實體和方法被卸載到硬件對象管理系統。一個軟件占位程序提供作為介于硬件對象管理系統和中央處理器之間的接口程序。通過修改或替換軟件占位程序能夠支持另外的應用程序結構。硬件對象管理系統請求是由一個應用程序特別結構硬件加速器來執行的。需要時可從共享存儲器中檢索應用程序結構分類,而執行指令則被存儲在共享存儲器中以便由中央處理器進行存取。當硬件對象管理系統的硬件加速器執行程序請求時,中央處理器可連續處理不配套的應用程序結構指令。
文檔編號G06F9/44GK1266512SQ98804866
公開日2000年9月13日 申請日期1998年4月30日 優先權日1997年5月8日
發明者T·C·波夫, J·S·米那米, R·柯亞瑪 申請人:艾瑞迪公司