CN1266512A - 适用于面向对象编程语言的硬件加速器 - Google Patents
适用于面向对象编程语言的硬件加速器 Download PDFInfo
- Publication number
- CN1266512A CN1266512A CN98804866A CN98804866A CN1266512A CN 1266512 A CN1266512 A CN 1266512A CN 98804866 A CN98804866 A CN 98804866A CN 98804866 A CN98804866 A CN 98804866A CN 1266512 A CN1266512 A CN 1266512A
- Authority
- CN
- China
- Prior art keywords
- java
- hardware
- constituent element
- window
- entity
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 230000001133 acceleration Effects 0.000 title description 2
- 238000000034 method Methods 0.000 claims abstract description 66
- 239000000470 constituent Substances 0.000 claims description 116
- 238000003860 storage Methods 0.000 claims description 26
- 230000007246 mechanism Effects 0.000 claims description 7
- 230000015572 biosynthetic process Effects 0.000 claims description 6
- 230000035945 sensitivity Effects 0.000 claims 3
- 238000012545 processing Methods 0.000 abstract description 19
- 238000007726 management method Methods 0.000 description 73
- 238000010586 diagram Methods 0.000 description 27
- 230000006870 function Effects 0.000 description 26
- 239000011324 bead Substances 0.000 description 13
- 230000008520 organization Effects 0.000 description 8
- 230000006855 networking Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000012216 screening Methods 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000012384 transportation and delivery Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000003973 paint Substances 0.000 description 2
- 238000003825 pressing Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000001994 activation Methods 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000003455 independent Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000031068 symbiosis, encompassing mutualism through parasitism Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 230000004382 visual function Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45529—Embedded in an application, e.g. JavaScript in a Web browser
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种用于加速面向对象编程语言的方法和装置,它是在硬件门级上提供的。在一个附从于Java语言的实施例中,一种Java应用程序结构已在硬件中实现。在本发明的最佳实施例中支持Java.AWT,Java.NET,和Java.IO的应用程序结构。应用程序结构分类被存储在共享存储器库中。由小应用程序执行的支持应用程序结构分类的实体和方法被卸载到硬件对象管理系统。一个软件占位程序提供作为介于硬件对象管理系统和中央处理器之间的接口程序。通过修改或替换软件占位程序能够支持另外的应用程序结构。硬件对象管理系统请求是由一个应用程序特别结构硬件加速器来执行的。需要时可从共享存储器中检索应用程序结构分类,而执行指令则被存储在共享存储器中以便由中央处理器进行存取。当硬件对象管理系统的硬件加速器执行程序请求时,中央处理器可连续处理不配套的应用程序结构指令。
Description
发明的背景
技术领域
本发明涉及面向对象编程语言。更确切地说,本发明涉及一种适用于面向对象编程语言的硬件加速器。
现有技术的描述
面向对象编程(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卡的一部份。
熟悉本技术领域的人士将能够很容易地应用众所周知的编程技术和设备,来构造本发明所要求的硬件和软件。
因此,应当仅用以下包含的权项来限制本发明。
Claims (32)
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与一对象定位单元相关联。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US4595197P | 1997-05-08 | 1997-05-08 | |
US60/045,951 | 1997-05-08 | ||
US08/965,540 US6330659B1 (en) | 1997-11-06 | 1997-11-06 | Hardware accelerator for an object-oriented programming language |
US08/965,540 | 1997-11-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1266512A true CN1266512A (zh) | 2000-09-13 |
Family
ID=26723394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN98804866A Pending CN1266512A (zh) | 1997-05-08 | 1998-04-30 | 适用于面向对象编程语言的硬件加速器 |
Country Status (8)
Country | Link |
---|---|
US (1) | US6983357B2 (zh) |
EP (1) | EP0980544A1 (zh) |
JP (1) | JP2000514944A (zh) |
KR (1) | KR20010020250A (zh) |
CN (1) | CN1266512A (zh) |
AU (1) | AU734115B2 (zh) |
CA (1) | CA2287413A1 (zh) |
WO (1) | WO1998050852A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101523349B (zh) * | 2006-10-02 | 2013-08-14 | 国际商业机器公司 | 被配置以支持寄存器窗口架构的计算系统的控制装置和方法 |
CN105677491A (zh) * | 2015-12-31 | 2016-06-15 | 杭州华为数字技术有限公司 | 一种数据传输方法及装置 |
CN102224476B (zh) * | 2008-10-14 | 2017-08-01 | 奥布隆工业有限公司 | 多进程交互系统和方法 |
CN107771319A (zh) * | 2015-06-07 | 2018-03-06 | 苹果公司 | 封装图形库和硬件的图形引擎和环境 |
Families Citing this family (85)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9098297B2 (en) * | 1997-05-08 | 2015-08-04 | Nvidia Corporation | Hardware accelerator for an object-oriented programming language |
US6687758B2 (en) | 2001-03-07 | 2004-02-03 | Alacritech, Inc. | Port aggregation for network connections that are offloaded to network interface devices |
US6470415B1 (en) | 1999-10-13 | 2002-10-22 | Alacritech, Inc. | Queue system involving SRAM head, SRAM tail and DRAM body |
US6427171B1 (en) | 1997-10-14 | 2002-07-30 | Alacritech, Inc. | Protocol processing stack for use with intelligent network interface device |
US6697868B2 (en) | 2000-02-28 | 2004-02-24 | Alacritech, Inc. | Protocol processing stack for use with intelligent network interface device |
US6427173B1 (en) | 1997-10-14 | 2002-07-30 | Alacritech, Inc. | Intelligent network interfaced device and system for accelerated communication |
US7237036B2 (en) | 1997-10-14 | 2007-06-26 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding a TCP connection |
US7076568B2 (en) | 1997-10-14 | 2006-07-11 | Alacritech, Inc. | Data communication apparatus for computer intelligent network interface card which transfers data between a network and a storage device according designated uniform datagram protocol socket |
US7042898B2 (en) | 1997-10-14 | 2006-05-09 | Alacritech, Inc. | Reducing delays associated with inserting a checksum into a network message |
US6807581B1 (en) | 2000-09-29 | 2004-10-19 | Alacritech, Inc. | Intelligent network storage interface system |
US6591302B2 (en) | 1997-10-14 | 2003-07-08 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding to a TCP connection |
US6226680B1 (en) | 1997-10-14 | 2001-05-01 | Alacritech, Inc. | Intelligent network interface system method for protocol processing |
US8782199B2 (en) | 1997-10-14 | 2014-07-15 | A-Tech Llc | Parsing a packet header |
US6389479B1 (en) | 1997-10-14 | 2002-05-14 | Alacritech, Inc. | Intelligent network interface device and system for accelerated communication |
US7284070B2 (en) | 1997-10-14 | 2007-10-16 | Alacritech, Inc. | TCP offload network interface device |
US6434620B1 (en) | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US6658480B2 (en) | 1997-10-14 | 2003-12-02 | Alacritech, Inc. | Intelligent network interface system and method for accelerated protocol processing |
US6757746B2 (en) | 1997-10-14 | 2004-06-29 | Alacritech, Inc. | Obtaining a destination address so that a network interface device can write network data without headers directly into host memory |
US6480205B1 (en) | 1998-07-22 | 2002-11-12 | Nvidia Corporation | Method and apparatus for occlusion culling in graphics systems |
US6332215B1 (en) | 1998-12-08 | 2001-12-18 | Nazomi Communications, Inc. | Java virtual machine hardware for RISC and CISC processors |
US6826749B2 (en) * | 1998-12-08 | 2004-11-30 | Nazomi Communications, Inc. | Java hardware accelerator using thread manager |
AU7060300A (en) | 1999-08-16 | 2001-03-13 | Iready Corporation | Internet jack |
ATE390788T1 (de) | 1999-10-14 | 2008-04-15 | Bluearc Uk Ltd | Vorrichtung und verfahren zur hardware-ausführung oder hardware-beschleunigung von betriebssystemfunktionen |
US7209140B1 (en) | 1999-12-06 | 2007-04-24 | Nvidia Corporation | System, method and article of manufacture for a programmable vertex processing model with instruction set |
US6844880B1 (en) | 1999-12-06 | 2005-01-18 | Nvidia Corporation | System, method and computer program product for an improved programmable vertex processing model with instruction set |
WO2002059757A1 (en) * | 2001-01-26 | 2002-08-01 | Iready Corporation | Communications processor |
US7379475B2 (en) | 2002-01-25 | 2008-05-27 | Nvidia Corporation | Communications processor |
KR100425681B1 (ko) * | 2001-07-23 | 2004-04-03 | 엘지전자 주식회사 | 디에스엠-씨씨 기반 장치의 에이피아이 구현 장치 및 방법 |
US8769508B2 (en) | 2001-08-24 | 2014-07-01 | Nazomi Communications Inc. | Virtual machine hardware for RISC and CISC processors |
KR100487739B1 (ko) * | 2001-12-27 | 2005-05-06 | 한국전자통신연구원 | 웹 기반 응용 시스템의 메모리 상에서 비즈니스 객체 관리장치 및 그 방법 |
US7543087B2 (en) | 2002-04-22 | 2009-06-02 | Alacritech, Inc. | Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device |
US7457822B1 (en) | 2002-11-01 | 2008-11-25 | Bluearc Uk Limited | Apparatus and method for hardware-based file system |
US7149752B2 (en) * | 2002-12-03 | 2006-12-12 | Jp Morgan Chase Bank | Method for simplifying databinding in application programs |
US8032439B2 (en) * | 2003-01-07 | 2011-10-04 | Jpmorgan Chase Bank, N.A. | System and method for process scheduling |
US7130987B2 (en) * | 2003-01-24 | 2006-10-31 | Mistletoe Technologies, Inc. | Reconfigurable semantic processor |
US7415596B2 (en) * | 2003-01-24 | 2008-08-19 | Gigafin Networks, Inc. | Parser table/production rule table configuration using CAM and SRAM |
US7424571B2 (en) | 2004-07-27 | 2008-09-09 | Gigafin Networks, Inc. | Array machine context data memory |
US20050281281A1 (en) * | 2003-01-24 | 2005-12-22 | Rajesh Nair | Port input buffer architecture |
US20060259508A1 (en) * | 2003-01-24 | 2006-11-16 | Mistletoe Technologies, Inc. | Method and apparatus for detecting semantic elements using a push down automaton |
US7379998B2 (en) * | 2003-03-31 | 2008-05-27 | Jp Morgan Chase Bank | System and method for multi-platform queue queries |
KR100479175B1 (ko) * | 2003-04-23 | 2005-03-25 | 에스케이 텔레콤주식회사 | 자바 가속칩을 이용하는 무선 인터넷 서비스 플랫폼이탑재된 이동 단말기 및 이를 이용한 그래픽 가속 방법 |
US7814073B2 (en) * | 2003-05-02 | 2010-10-12 | Jp Morgan Chase Bank | Utility for identifying differences between two Java objects |
US20040230602A1 (en) * | 2003-05-14 | 2004-11-18 | Andrew Doddington | System and method for decoupling data presentation layer and data gathering and storage layer in a distributed data processing system |
US7366722B2 (en) * | 2003-05-15 | 2008-04-29 | Jp Morgan Chase Bank | System and method for specifying application services and distributing them across multiple processors using XML |
US7509641B2 (en) * | 2003-05-16 | 2009-03-24 | Jp Morgan Chase Bank | Job processing framework |
US7853507B2 (en) * | 2003-06-23 | 2010-12-14 | Omx Technology Ab | Method for organizing financial instruments in a CSD-system |
US8572289B1 (en) | 2003-12-19 | 2013-10-29 | Nvidia Corporation | System, method and computer program product for stateless offloading of upper level network protocol operations |
US8549170B2 (en) | 2003-12-19 | 2013-10-01 | Nvidia Corporation | Retransmission system and method for a transport offload engine |
US8176545B1 (en) | 2003-12-19 | 2012-05-08 | Nvidia Corporation | Integrated policy checking system and method |
US8065439B1 (en) | 2003-12-19 | 2011-11-22 | Nvidia Corporation | System and method for using metadata in the context of a transport offload engine |
US20050144174A1 (en) * | 2003-12-31 | 2005-06-30 | Leonid Pesenson | Framework for providing remote processing of a graphical user interface |
US20050222990A1 (en) * | 2004-04-06 | 2005-10-06 | Milne Kenneth T | Methods and systems for using script files to obtain, format and disseminate database information |
US7698413B1 (en) | 2004-04-12 | 2010-04-13 | Nvidia Corporation | Method and apparatus for accessing and maintaining socket control information for high speed network connections |
WO2005102016A2 (en) * | 2004-04-26 | 2005-11-03 | Jp Morgan Chase Bank | System and method for routing messages |
DE102004021975A1 (de) * | 2004-05-04 | 2005-12-01 | Carl v. Ossietzky Universität Oldenburg, vertreten durch den Kanzler | Verfahren zur Bestimmung von Verklemmungen in nebenläufigen Prozessen |
US7398356B2 (en) | 2004-07-22 | 2008-07-08 | Mistletoe Technologies, Inc. | Contextual memory interface for network processor |
US7451268B2 (en) * | 2004-07-27 | 2008-11-11 | Gigafin Networks, Inc. | Arbiter for array machine context data memory |
US20070043871A1 (en) * | 2005-07-19 | 2007-02-22 | Mistletoe Technologies, Inc. | Debug non-terminal symbol for parser error handling |
US20060031555A1 (en) * | 2004-08-05 | 2006-02-09 | Somsubhra Sikdar | Data context switching in a semantic processor |
US20070019661A1 (en) * | 2005-07-20 | 2007-01-25 | Mistletoe Technologies, Inc. | Packet output buffer for semantic processor |
US7957379B2 (en) | 2004-10-19 | 2011-06-07 | Nvidia Corporation | System and method for processing RX packets in high speed network applications using an RX FIFO buffer |
US20070016906A1 (en) * | 2005-07-18 | 2007-01-18 | Mistletoe Technologies, Inc. | Efficient hardware allocation of processes to processors |
US20070022225A1 (en) * | 2005-07-21 | 2007-01-25 | Mistletoe Technologies, Inc. | Memory DMA interface with checksum |
US20070022275A1 (en) * | 2005-07-25 | 2007-01-25 | Mistletoe Technologies, Inc. | Processor cluster implementing conditional instruction skip |
US20070157155A1 (en) * | 2005-12-30 | 2007-07-05 | Peters Eric C | System and method for software generation and execution |
US7610172B2 (en) * | 2006-06-16 | 2009-10-27 | Jpmorgan Chase Bank, N.A. | Method and system for monitoring non-occurring events |
US9043553B2 (en) * | 2007-06-27 | 2015-05-26 | Microsoft Technology Licensing, Llc | Leveraging transactional memory hardware to accelerate virtualization and emulation |
US8266387B2 (en) * | 2007-06-27 | 2012-09-11 | Microsoft Corporation | Leveraging transactional memory hardware to accelerate virtualization emulation |
US20090006507A1 (en) * | 2007-06-27 | 2009-01-01 | Mingnan Guo | System and method for ordering reclamation of unreachable objects |
US8176253B2 (en) * | 2007-06-27 | 2012-05-08 | Microsoft Corporation | Leveraging transactional memory hardware to accelerate virtualization and emulation |
US8477143B2 (en) | 2008-03-04 | 2013-07-02 | Apple Inc. | Buffers for display acceleration |
US8289333B2 (en) * | 2008-03-04 | 2012-10-16 | Apple Inc. | Multi-context graphics processing |
US9418171B2 (en) * | 2008-03-04 | 2016-08-16 | Apple Inc. | Acceleration of rendering of web-based content |
US8539513B1 (en) | 2008-04-01 | 2013-09-17 | Alacritech, Inc. | Accelerating data transfer in a virtual computer system with tightly coupled TCP connections |
GB0806183D0 (en) * | 2008-04-04 | 2008-05-14 | Picsel Res Ltd | Presentation of objects in 3D displays |
US8341286B1 (en) | 2008-07-31 | 2012-12-25 | Alacritech, Inc. | TCP offload send optimization |
US8141102B2 (en) * | 2008-09-04 | 2012-03-20 | International Business Machines Corporation | Data processing in a hybrid computing environment |
US9306793B1 (en) | 2008-10-22 | 2016-04-05 | Alacritech, Inc. | TCP offload device that batches session layer headers to reduce interrupts as well as CPU copies |
KR101572262B1 (ko) | 2009-01-02 | 2015-11-27 | 삼성전자주식회사 | 모바일 응용프로그램 모델의 동작방법 및 장치 |
US20100325565A1 (en) * | 2009-06-17 | 2010-12-23 | EchoStar Technologies, L.L.C. | Apparatus and methods for generating graphical interfaces |
US8990802B1 (en) * | 2010-05-24 | 2015-03-24 | Thinking Software, Inc. | Pinball virtual machine (PVM) implementing computing process within a structural space using PVM atoms and PVM atomic threads |
US9836316B2 (en) * | 2012-09-28 | 2017-12-05 | Intel Corporation | Flexible acceleration of code execution |
WO2014142836A1 (en) | 2013-03-13 | 2014-09-18 | Empire Technology Development, Llc | Memory allocation accelerator |
KR102273023B1 (ko) | 2014-10-16 | 2021-07-05 | 삼성전자주식회사 | 화질 개선 알고리즘 처리 방법 및 장치 |
US10853125B2 (en) | 2016-08-19 | 2020-12-01 | Oracle International Corporation | Resource efficient acceleration of datastream analytics processing using an analytics accelerator |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4695949A (en) * | 1984-07-19 | 1987-09-22 | Texas Instruments Incorporated | Method for efficient support for reference counting |
US4807111A (en) * | 1987-06-19 | 1989-02-21 | International Business Machines Corporation | Dynamic queueing method |
US4839851A (en) * | 1987-07-13 | 1989-06-13 | Idaho Research Foundation, Inc. | Programmable data path device |
JPH04314133A (ja) * | 1991-04-11 | 1992-11-05 | Nec Corp | 情報処理装置 |
US5218698A (en) * | 1991-11-22 | 1993-06-08 | Aerojet-General Corporation | Garbage collection system for a symbolic digital processor |
US5877764A (en) * | 1992-10-23 | 1999-03-02 | International Business Machines Corporation | Graphical user interface for managing text i/o between a user and a parallel program |
EP0672277B1 (en) * | 1992-12-01 | 1998-05-13 | Microsoft Corporation | A method and system for in-place interaction with embedded objects |
US5596702A (en) * | 1993-04-16 | 1997-01-21 | International Business Machines Corporation | Method and system for dynamically sharing user interface displays among a plurality of application program |
US5621434A (en) * | 1993-08-11 | 1997-04-15 | Object Technology Licensing Corp. | Cursor manipulation system and method |
AU6023994A (en) * | 1993-11-02 | 1995-05-23 | Taligent, Inc. | Object-oriented graphic system |
JPH09507109A (ja) * | 1993-11-02 | 1997-07-15 | パラコム コーポレイション | コンピュータデータベースに関するトランザクションの処理を促進させるための装置 |
AU6018294A (en) * | 1993-12-02 | 1995-06-19 | Taligent, Inc. | Method and apparatus for displaying hardware dependent graphics in an object-oriented operating system |
US5650941A (en) * | 1994-09-07 | 1997-07-22 | Intel Corporation | Computer architecture for creating and manipulating displayable objects |
US5664162A (en) * | 1994-05-23 | 1997-09-02 | Cirrus Logic, Inc. | Graphics accelerator with dual memory controllers |
US5680605A (en) * | 1995-02-07 | 1997-10-21 | Torres; Robert J. | Method and apparatus for searching a large volume of data with a pointer-based device in a data processing system |
US5870622A (en) * | 1995-06-07 | 1999-02-09 | Advanced Micro Devices, Inc. | Computer system and method for transferring commands and data to a dedicated multimedia engine |
US5918051A (en) * | 1995-07-19 | 1999-06-29 | Ricoh Company, Ltd. | Object-oriented communication system with support for multiple remote machine types |
US5778178A (en) * | 1995-11-13 | 1998-07-07 | Arunachalam; Lakshmi | Method and apparatus for enabling real-time bi-directional transactions on a network |
US5946487A (en) * | 1996-06-10 | 1999-08-31 | Lsi Logic Corporation | Object-oriented multi-media architecture |
US5754556A (en) * | 1996-07-18 | 1998-05-19 | Teradyne, Inc. | Semiconductor memory tester with hardware accelerators |
US5854750A (en) * | 1996-09-03 | 1998-12-29 | Insession, Inc. | System and method for processing transactions in an environment containing a number of object oriented applications |
US5923892A (en) * | 1997-10-27 | 1999-07-13 | Levy; Paul S. | Host processor and coprocessor arrangement for processing platform-independent code |
-
1998
- 1998-04-30 KR KR1019997009848A patent/KR20010020250A/ko not_active Application Discontinuation
- 1998-04-30 AU AU73648/98A patent/AU734115B2/en not_active Ceased
- 1998-04-30 EP EP98920921A patent/EP0980544A1/en not_active Withdrawn
- 1998-04-30 CN CN98804866A patent/CN1266512A/zh active Pending
- 1998-04-30 WO PCT/US1998/008719 patent/WO1998050852A1/en not_active Application Discontinuation
- 1998-04-30 CA CA002287413A patent/CA2287413A1/en not_active Abandoned
- 1998-04-30 JP JP10548207A patent/JP2000514944A/ja active Pending
-
2001
- 2001-06-20 US US09/886,167 patent/US6983357B2/en not_active Expired - Lifetime
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101523349B (zh) * | 2006-10-02 | 2013-08-14 | 国际商业机器公司 | 被配置以支持寄存器窗口架构的计算系统的控制装置和方法 |
CN102224476B (zh) * | 2008-10-14 | 2017-08-01 | 奥布隆工业有限公司 | 多进程交互系统和方法 |
CN107771319A (zh) * | 2015-06-07 | 2018-03-06 | 苹果公司 | 封装图形库和硬件的图形引擎和环境 |
CN107771319B (zh) * | 2015-06-07 | 2021-02-26 | 苹果公司 | 封装图形库和硬件的图形引擎和环境 |
CN105677491A (zh) * | 2015-12-31 | 2016-06-15 | 杭州华为数字技术有限公司 | 一种数据传输方法及装置 |
CN105677491B (zh) * | 2015-12-31 | 2019-07-23 | 杭州华为数字技术有限公司 | 一种数据传输方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO1998050852A1 (en) | 1998-11-12 |
AU734115B2 (en) | 2001-06-07 |
US20020078115A1 (en) | 2002-06-20 |
JP2000514944A (ja) | 2000-11-07 |
EP0980544A1 (en) | 2000-02-23 |
KR20010020250A (ko) | 2001-03-15 |
AU7364898A (en) | 1998-11-27 |
US6983357B2 (en) | 2006-01-03 |
CA2287413A1 (en) | 1998-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1266512A (zh) | 适用于面向对象编程语言的硬件加速器 | |
CN1149492C (zh) | 遥控方法和服务器 | |
CN1137443C (zh) | 设备控制系统和方法 | |
CN1266598C (zh) | 用于应用程序执行的动态java类的加载 | |
CN1189830C (zh) | 数字广播接收机的事件发送方法及装置 | |
CN1273888C (zh) | 成像装置、信息处理装置、程序执行方法及程序生成方法 | |
CN1211364A (zh) | 一种管理互配单元及生产该单元的方法 | |
CN100338955C (zh) | 在电视机顶盒中执行交互式电视的设备和方法 | |
CN1551016A (zh) | 文件管理方法及其装置和注解信息产生方法及其装置 | |
CN1609793A (zh) | 用于计算机平台的编程接口 | |
CN1795434A (zh) | 程序执行控制设备,程序执行控制方法,控制程序和记录介质 | |
CN1302401A (zh) | 可视数据集成系统和方法 | |
CN1669018A (zh) | 手持终端框架系统 | |
CN1276575A (zh) | 数据库存取系统 | |
CN1200514A (zh) | 信息处理方法和装置及存储服务器控制程序的存储器媒体 | |
CN101052948A (zh) | 对象过程图应用程序开发系统 | |
CN1821956A (zh) | 用现有内容生成用于执行任务的活动内容向导可执行文件 | |
CN1768373A (zh) | 信息处理装置、信息处理方法、及计算机程序 | |
CN1328668A (zh) | 用于指定网络上的位置的系统和处理 | |
CN1484171A (zh) | 操作屏幕显示装置、方法及包含显示操作屏幕的程序的记录媒体 | |
CN1745369A (zh) | 信息处理装置、信息处理方法及计算机程序 | |
CN1841328A (zh) | 脚本语言的自动机方法 | |
CN1218223A (zh) | 执行移动对象的方法以及存储移动对象的记录介质 | |
CN1270530C (zh) | 接收装置及其方法 | |
CN1577332A (zh) | 信息显示控制装置、服务器和记录了程序的记录媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |