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