CN1190211A - 面向对象的多媒体结构 - Google Patents
面向对象的多媒体结构 Download PDFInfo
- Publication number
- CN1190211A CN1190211A CN97117496A CN97117496A CN1190211A CN 1190211 A CN1190211 A CN 1190211A CN 97117496 A CN97117496 A CN 97117496A CN 97117496 A CN97117496 A CN 97117496A CN 1190211 A CN1190211 A CN 1190211A
- Authority
- CN
- China
- Prior art keywords
- processor
- hardware
- virtual machine
- thread
- program
- 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
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
一种面向对象的多媒体结构对由面向对象源程序汇编的伪语言字节码的输入流提供实时处理。该结构包括多个并行处理布置的处理器。至少一些处理器专门适用于或优化用于执行多媒体方法,如视频解压缩,反向离散余弦变换,运动估算等。该结构还包括虚拟机计算程序,该程序由字节码流重建实体及线程,并将它们每个发送到合适的硬件资源,以便并行处理。该结构通过客户机的操作系统及执行硬件扩展面向对象范例,以便提供专用/并行处理机的优点,而仍保留伪语言环境的可移植性。
Description
本发明涉及数字计算机硬件及软件结构领域,更具体地,涉及用于实时地处理多媒体数据的面向对象的多媒体结构。
多媒体系统将多种信息源,如声音、图形、动画、图像、音频及全运动视频信号组合成宽广范围的应用。通常,多媒体代表了三个不同的渊久工业的新结合:计算、通信及广播的新结合。多媒体系统的明确特征是连续媒体,如声音、视频及动画的结合。分布式多媒体系统需要在相对长的时间周期上连续地传送数据,例如播出从远方摄像机来的视频信息流、媒体同步,很大的存储器及其它的技术上的挑战。
新的及改进的多媒体使用具有各种各样的应用。例如,包括建立顶置盒(set top boxes)及交互电视,多媒体图书馆(数据库),便携式计算机,游戏机,先进的便携式数字仪器,移动式终端及全球网页(world wide web pages)。在多媒体应用中涉及的大量数据及需要实时或近实时的处理对硬件及软件系统设计者提出了挑战。这些挑战正在多个不同的前沿被提出,例如在压缩算法及专用硬件处理器方面被提出。多媒体应用的复杂性着重于计算机系统的所有部件。多媒体数据需要对实现图形、变换、数据解压缩等有非常大的处理能力。其结构显然必须提供非常高的总线带宽及高效的I/O(输入/输出)。多媒体操作系统应支持新数据类型、实时调度(scheduling)及快速中断处理。
从历史上看,数据处理是从仅包括字符数据的环境发展而来。计算机图形学及另外的多媒体成分相对地是新出现的。传统计算机系统的特征也在于线性或“平面(flat)”处理。计算机顺序地执行一系列预定的对字符集起作用的指令。在大多数情况下,使用批量处理。重要地,还应指示出,从历史背景来看计算机处理器是通用类型的处理器。这就是,计算机被设计成执行能由应用程序来实现的任何特定功能。仅在相当罕见的情况下才开发了“专用处理器”来满足专门的需要。因此,现有技术的计算机结构被设计成执行由程序员提供的一系列任何指令。对于可以推知系统设计师来说该专门应用是未知的,因此,该结构对任何专门应用不能得以优化。于是,虽然通用计算机在应用是灵活的,但其性能则受到限制。
多媒体应用的出现推动了各种不同硬件及软件领域的发展。例如,多媒体应用所需的大量数据使压缩/解压缩技术的进展。我们已经看到用于音频压缩的JPEG标准及用于视频数据压缩的MPEG(运动图像专家组)标准的发展。MPEG2是当前在许多计算机上应用的标准。最近,我们看到用于多媒体数据“流处理”的软件的改进。例如JAVA(一种编程语言)的异步图像模型允许图像数据从国际互联网(internet)中“流”出,这意味着客户机“applet”可开始处理图像,因为数据成为可用的。没有这种能力,用户就必须等待多媒体数据,以便在它能被显示或在应用程序中使用前完成下载。然而,JAVA环境不是实时的并仅允许有限的交互性。
处理多媒体数据存在的限制部分是由于数据量及许多必须的操作、如解压缩及图形操作要占用大量的计算而引起的。更快速微处理机的使用已有一些收益。实际上,全球网的显著激增部分应归功于微处理器技术的进步。然而,现今的微处理器、如IntelX86,P5,P6等仍是通用型的微处理机。它们对多媒体应用作出的优化,如果有的话,也仅是有限的,不连续的方式。不仅在专用硬件如共用处理器方面而且在开发更高效的硬件方面还需要进一步的改进。
已经开发出一些类型的专用硬件来满足这种需要。例如,已知用数字信号处理(DSP)集成电路来实时地处理音频数据。DSP装置有时以加装“声卡”的方式来实现,以使目标的PC(个人计算机)升级。已知用视频随机存取存储器(VRAM)器件来改善屏显更新速率。VRAM通常是以“视卡”的方式实现的,这是一种使用在个人计算机中的电路板,用来通过根据改进的显示带宽来改善屏显更新速率。但是,由于这些专用处理器及存储器是与传统通用型处理器结构相关地使用的,因此它们的作用是有限的。用俗话讲,这些类型的共用处理器被“栓”在现有的结构上。这些系统仍然是实质上在单个通用中心处理器的控制下处理作为平面数据流的数据。因而,依然需要能更有效利用各种硬件及软件技术优点来实时地处理多媒体应用的新结构。
以上的背景讨论说明正在成长的多媒体应用和内容及要求交互实时处理是如何驱动了对更大的计算能力及更高的数据通信带宽的需求,以便传送及处理多媒体数据。因为大型及带宽受限制的基础结构已经确立,通信信道带宽的增大,例如ISDN(综合服务数字网络)及T-1线的扩展使用是有益的,但其价格昂贵并仅在有限的地方有用。甚至在获得了相当长的通信带宽的地方,客户机处理能力依然有限。
硬件能力、压缩算法等的技术进步各自有其用途,但这些零星进步仅提供有限的改进,因为它们并不协调一致。上述的一个例子是各种“加速器”如视卡简单地拴在依赖单一的通用中心处理器旧结构上。并行计算的传统概念难以应用,因为它们的实现不是可移植的。
本发明产生于对整个硬件及软件环境的再估价并致力于提供多媒体数据处理的实质性进步。根据本发明的一个方面,一种改进的多媒体软件及硬件结构充分利用了面向对象范例的优点,并将该范例从数据通信到多媒体内容性能过程中全程实时地执行。在该新MM(多媒体)结构中,软件实体被下送到作为轻级别处理(LWP)或在多处理器中并行执行的线程(threads)的执行级。在现有技术中,面向对象技术用于编程及编写多媒体应用程序。为了减小数据通信带宽要求及提供在各种硬件平台间的可移植性,这些面向对象的应用程序被编译成低级伪语言(如Java字节码),及在运行时这些字节码基本上通过将伪语言操作翻译成基于目标处理器的等效操作(OP码)而被翻译。
在本发明的新结构中,原始“实体(object)”及在源程序中定义的“线程”由输入字节码流在新型虚拟机中被复原。该新的虚拟机包括例示实体的类别库及在源程序中使用的方法,并恢复原始应用程序的“线程”。在硬件方面,设置了在微内核操作系统控制下的多个处理器。设计并优化了一个或多个硬件处理器来执行特定的MM功能或方法,如音频解压缩或中视实体旋转计算。虚拟机使由字节码流复原的实体及线程与当前可获得的硬件资源表相关联-咨询类别库。在可能的范围上,在对于这些任务最适合的处理器上安排这些并行执行的实体方法及程序线程。该结构提供了并行处理机的性能,并维持了伪码程序在各个平台间的可移植性。此外,虚拟机能再次自动地利用对其可用的硬件资源包括还未得到的核心,而不用在应用程序的可移植性方面作出妥协。
需要由硬件直接支持的这些功能的实体或线程被发送给相应的处理器,以便执行。其它处理器或“核心”可设来直接执行虚拟语言(例如Java字节码)。“平面”线程或码段可发送给“本机(native)”处理器(例如SUNPico-Java引擎)以便不翻译OP码地执行。因此,取代现有技术中的简单解释在目标处理器上执行的一系列伪语言指令流,该新结构使并行处理原理与面向对象的范例相结合,以加速执行。换言之,环境的优点仍旧保留并实际上得到了扩展,一直到硬件。
按该面向对象范例,线程及实体通过“调用(calls)”资源-这里是选择的硬件处理器而被执行。因此,本发明的一个方面是使各软件进程更好地“对准(align)”执行硬件。该系统是面向对象的,这种性质贯穿了包括虚拟机,微内核(kernel),以及在硬件包括用于执行涉及特定实体类别方法的任务的分离单元(现今技术中的处理器或核心)的意义上甚至还包括硬件。该新的虚拟机可被编程用于任何目标硬件平台,从而保持面向对象环境的可移植性优点。并且,它使自身适应于当前可用的平台硬件资源,这样就能在价格性能比上具有灵活性。
在一个优选实施例中,本发明包括一个存储在存储器中的虚拟机程序。该虚拟机具有对实体类别定义的存储库的入口,及具有对伪语言指令如字节码的输入流进行接收及缓存的硬件的入口。该VM(虚拟机)包括一个类别加载器,它检验并保证在字节码中引用的所有类别出现在这些存储库中,并从可能是发送字节码流的源的网络资源中下载任何被遗漏的类别库。
从以下参照附图对本发明的优选实施例作出的详细说明中将会更容易地弄清本发明的上述及其它目的、特征和优点。
图1是说明现有技术的用于多媒体应用的面向对象虚拟机环境的简化数据流程图;
图2表示根据本发明的处理多媒体应用的新面向对象的处理器结构;
图3表示图2结构中的更多细节;
图4是更详细地表示图2及3的虚拟机的混合数据流动及硬件框图;
图5是表示在图2及3的新结构中程序线程的处理的功能框图。
图1是用面向对象的编程语言实现的虚拟机的数据流程图。Sun微系统的Java环境即为一例。该Java环境包括几个不同部分。首先,具有Java编程语言,它属于C语言系列。它具有类似于C++的实体语义,只是加上了附加的实体特征及无用单元收集。Java由于其动态链接、运行时间码加载及安全码执行的支持而变得著名。在图1中框10代表写在Java语言源代码中的程序。
Java语言程序可汇编成用于在各种机器结构上执行。但是Java环境的第二核心件是虚拟机(“VM”)。如图1中虚线30下方(虚拟机API)所示。Java虚拟机实现一种抽象处理器结构。虚拟机可在各种操作系统和硬件上以软件来实现。Java源代码程序10根据Java虚拟指令集被汇编成伪码,一系列的“字节码”。因此虚拟机必须对每个目标平台来移植。在虚拟机40中,运行时解释机执行非常象仿真的任务:它将Java指令集字节代码翻译成可在目标平台硬件上执行的OP码。
作为该过程的一部分,解释机还通过对Java环境的另外成分的调用来引进代码,即访问基础类别库-Java类别定义。该步骤对于其中程序实体仅是预定义类别的例子的面向对象范例来说是基本的。其它由解释机可用的库提供了不是必需在Java中实现的各种功能。例如,VM将通常包括C码TCP/IP(传输控制协议/网间协议)功能的库。在任何情况下,可使用对目标平台操作系统44的调用来执行生成的“解释”码,而该系统44又与处理器硬件46相接口。因此,这种现有技术的环境将原始面向对象程序转换成用于在目标平台中执行的串行平面码。它提供了可移植性,因为同一源代码程序10能在对其实现了虚拟机40的任何平台上执行。关于实现Java虚拟机的更多细节例如可从Brian Case著的“实现Java虚拟机-Java复杂指令集可由软件或硬件来建立”,《微处理器通讯》,1996年3月25日,第12页。而可移植性是由Java获得的,客户机上程序的执行回过来依赖于通用处理器的传统平面码串行执行。
图2是表示根据本发明的新多媒体结构的概念图。在图2中。数据(这里意即程序码及数据)如下所述从图的左面流到右面。以面向对象伪码形式的输入数据例如Java字节码被接收以便执行。该字节码流可在本地(在同一机中)起源或经过一局域或宽域网从服务器传送到客户机。该输入流还能只经过全球性网如Internet(国际互联网)100传送。这种字节码流遵守一预定虚拟机API(应用程序接口)。虚拟机102包括运行时解释机,无用单元收集机构及以下将描述的其它特征。这些输入流不限于Java字节码,尽管面向对象的伪码是需要的。本发明的系统对于与发展中的新多媒体编程语言、如MPEG(运动图像专家组)-4“语法描述语言”有关的方面是尤其有用的。
“MPEG-4”是一种正出现的编码标准,它将支持数字音频-视频数据的通信,访问及操作的新方式(尤其以内容为基础)。该标准的传播开来还为期遥远-预计要用几年的时间来完全确定。但是,提供音频-视频实体的编码本身其概念是清楚的。在传统的“平面”表示(represontations)中,视频及音频帧不区分实体。帧的所有部分具有相等的优先级,因此当编码时,例如详细的背景数据能从更重要的前景物体中“窃取”位。采用MPEG-4的人相信需要某种形式的基于实体的编码来达到新的性能等级及交互性。
计划的MPEG-4的功能性应易于支持交互性,高压缩率和/或通用可访问性。关键是内容为基础的交互性概念,即与音频-视频场景中有意义的实体相互作用的能力。为了说明起见,假设一个电影场景具有一个在移动的汽车。大量数据(所有帧)必须连续地以实时速率被压缩、传送、解压缩、显示、更新等,以便播放该电影,甚至无交互性。数据的所有帧均被处理。MPEG 4将识别该数据中的大部分是静态的,这些数据可能不相关。实体-例如汽车轮-是变化(旋转)的。因此,MPEG-4编码将每个汽车轮看待为一个实体(一个软件实体对应于一个实际物体)。MPEG-4语法描述语言(MSDL)将提供模板来支持与自然实体及人工实体两者的交互作用。取代处理显示汽车的大量象素数据,在MSDL中描述的车轮实体将简称为“自旋”方法。见移动图像及相关音频信息的ISO/IEC JTC1/SC29/WG11/NO998编码(MPEG-4建议程序包,1995年7月)。这里所述的系统将易于适用MSDL中编码的多媒体应用的处理。
再参见图2,虚拟机102至少还包括源码语言的一个基础类别库(软件实体定义组),及最好还包括一个扩展类别库。例如Java基础类别包括约15个不同的程序包,所有均包括在Java开发程序包(JDK)中。例如JDK程序包包括java.applet,java awt,java,io,java.net及java.image。为说明起见,一个applet接口用于重放音频剪辑(“接口”是专门类型的Java类别)。程序包java.awt包括用于构成用户接口及屏上图形所必须的类别和接口。例子是按钮,标记,屏面,彩色等。图像程序包类别处理象素图像的操作。
扩展类(extension class)是更专门的类别,是用于实现诸如通过internet的商业交易,加密术,银行业务,数据为API及各种图形操作这类事情的当今许多正在构建中的专门类。如以下将说明的,本发明的MM结构可获得扩展类别的全部优点,正如它们所表现的那样,重要的是,它能用专门的硬件处理器来执行扩展类实体调用。这种处理器可以包括例如专用的特殊目的的处理器,RISC(精简指令系统计算机)核心,本机引擎或另外类型还未众知的处理器。新扩展类的出现可推动硬件设计师提供用于执行这些类方法的专门处理器。
在操作中,虚拟机102重建在源码中通过将所有输入字节码映射成(a)场;(b)实体;(c)线程所指示的软件实体。场是在编译时间未完全揭示的变量。在它们能被访问前VM将其分解。过程(course)的实体是在类别库中确定的类别例。
线程也称为轻量级进程(LWP),是可单独执行它们指令的单独控制流,允许同时地多线程过程以执行大量任务。多线程可作为单个进程运行(在某些使用中词“线程”与“轻量级进程”可互换。但是在某些实施方式中,没有必要在每个线程及单个LWP之间形成一一对应)。但是,本发明寻求执行时的最大并行性,并因此试图调度每个线程用于单独执行,如下面将更全面描述的。Java语言实现线程类别。作为虚拟机一部分的基础类及扩展类使该重建得以成功,因为它们包含与被编译者用来产生伪码或字节码的库相同的信息。VM包括将下载任何在库中不出现的伪码中使用的类的类别装入器成分。
“线程”或多线程编程的概念在现有技术中公知为写程序的方法论,以便改善应用程序处理能力,应用程序响应度及程序结构,以及有效地开发可获得的并行处理机。线程的研究及实验使用已在大学及研究机构中广为传播了一段时间。但是,仅是在过去几年中它才进入工业用来在商用操作系统中实现。现今,具有三组主要的多线程库:UNIX,OS/2及Windows NT。多线程处理通过多处理器(SMP)机的优点显然可获得性能的很大改善。在单处器机中,该优点是不很明显的,但对于多任务必须(基本上)同时进行的一些应用此优点很突出。
在典型的多任务操作系统,如VMS或UNIX中,在用户空间及内核空间之间具有确定的分界线。该划分是由硬件执行的。用户程序在用户空间中执行。用户空间包括用户码,全局数据,程序计数器及堆栈指针。程序或进程能直接访问及改变的数据限制在用户空间中的数据上。当用户程序需要来自内核的某些东西时(例如,读文件或找出当前时间),用户程序必须作系统调用。这是建立某些变元的库功能,而非执行专门的陷阱(trap)指令。该指令引起硬件陷入内核,然后它执行机器控制。内核确定什么行动是必须的,及是否允许做它。最后,内核执行所需的任务,将任何信息返回到用户进程。
因为操作系统已经完成了对I/O,存储器,处理器等的控制,它需要保持每个正在运行的进程的数据。该数据告诉操作系统,该进程是在什么状态-打开了什么文件,那个用户正在运行它等。因此多任务领域中进程的概念延伸到内核,在那里该信息被保持在进程结构中。多个进程可同时在多任务系统中运行。每个具有其自己的存储空间,及其自己的堆栈,程序计数器等。没有两个进程可以看到或改变彼此的存储器,除非它们已建立了专门的共享存储区域。因此每个程序具有一个堆栈,一个程序计数器,及每个进程一组CPU寄存器。因而,这些程序或处理中的每个每次仅能作一件事,它们是单线程处理。
正如多任务操作系统通过多于单个进程的运行可同时作多于一件的事,一个进程通过多于单线程的运行可作相同的事。每个线程是能单独执行其指令的不同控制流,就允许多线程进程能同时执行多个任务。例如,一个线程可运行GUI(图形用户接口),而第二线程执行I/O,及第三线程执行计算。一个线程类似于一个进程,它包括数据、码、内核状态、及一组CPU寄存器。但是一个处理是内核级实体,并包含诸如虚拟存储图,文件说明符,用户ID等东西,及每个进程具有自己的这些东西的集合。于是,对于程序在进程结构中访问数据或查询其状态或改变其状态的唯一方式是经由系统调用。
在现有技术中,线程首先是用户级实体。线程结构是在用户空间中并能直接用线程库调用来访问,这些正是使用级功能。寄存器(堆栈指针,程序计数器等)都是线程的一部分,及每个线程具有自己的堆栈,但是正在执行的码不是线程的一部分。实际码(函数、例程、信号处理器等)是全局性的并能在任何线程上执行。重要的是,一个进程中所有的线程共享该进程的状态。它们驻留在正好同一存储空间中,见到相同函数及见到相同数据。当一个线程改变了一个进程变量,当其它线程下次访问它时将看到该变化。当一个线程打开一文件读它时,所有另外线程能从它读到。由于这种安排意味着一定的同步及调度要求,它具有执行多任务而无实际进程转换的内核的优点。
再参照图2,再建实体及线程符合操作系统ADI104。操作系统106包括实时微内核操作系统,它将实体、线程及Java字节码发送到多个核心或并行处理器112,如后面将要解释的。本发明的一个重要方面是更好地使程序线与硬件源“在空中对齐”。因为线程提供同时执行,及它们具有对相同用户存储空间的入口,程序员必须使它们操作的协调或“同步”。在另一线程修改同一数据的同时,一个线程不能读数据。因此,一个线程必须能获得对一实体的排它的访问,至少是暂时的。对于线程同步已知有多种技术。在最简单的情况下,共用排它锁(Mutual Exclusion Lock)或mutex仅允许一个线程在一个时刻执行一给定码段,例如修改全局数据的码。已知条件变量用来禁止线程的执行直到给定条件检验为真为止。
在Java中,例如,线程作为语言的整体部分被支持。它提供了在类协议中要定义的同步方法。当具有同步方法的类被“实质化”时,则给予新实体一个“监视器”,为了调用一实体中的同步信息,线程将获取该实体的监视器。如果它能获取该监视器,线程就进入到该同步方法,并当它具有该监控器期间,没有别的线程能调用该实体中的同步方法。如果一个线程调用了一实体中的同步方法及该实体的监控器被另一线程所有,则该调用线程被阻塞直到另外线程放弃该监控器。当原始线程退出其获得监控器的同步方法时,监控器的所有权转移给被阻塞的线程,该线程现在就可以进入曾对其阻塞的方法。VM102识别应用程序层线程,并分离它们以便单独、并行地执行,正如以下将要描述的。
然后VM产生在主平台上执行的码。重要的是,首先它检查在该平台上可得到的硬件资源的表,将识别的线程及实体与硬件表相比较。换言之,VM知道机中的硬件资源(尽管应用程序编程员可能过去不知道)。根据可用的硬件资源,可对于每个执行线程或LWP在存储器的堆栈中安排合适的地址及变量。对于每个线程安排可执行码及在存储器中存储该码。可执行码的产生包括对于那些将传送至本机处理器引擎的线程的OP码翻译。然后VM调用微内核操作系统104,以便调度线程的执行。
用于由VM执行的线程的识别符不限于那些被应用程序员清楚描述的线程。例如,VM可在硬件资源表中发现具体的处理器-例如用于将“低音增强”加到音频文件中的处理器。如果VM发现调用“低音增强”实体,它将该调用安排为用于在“低音增强”硬件上执行的线程,因为硬件功能与软件方法相匹配。通常,以新VM中的“线程”可以是被应用程序员清楚地描述的一个线程,或它能为被VM指定作为执行的线程的任何实体或码的片断。因此,如果它具有适于处理两个较小线程的硬件资源,则VM或内核能将一个线程“分裂”为两个线程,由此增加并行性。图5表示一个重建的线程T2,它被分裂(见路径324,326),用于在两个不同的处理器上执行。
可以采用来自该类型的商业上可获得的操作系统的微内核操作系统104,它也被称为RTOS-实时微内核操作系统。美国加州的Mountain View的ISI“集成系统解决”公司具有称为pSOS的这种产品。依阿华州的DesMoines的“微件”公司具有称为OS-9的这种产品。加州Oakland的“风河”公司提供了V×Works OS的产品。微内核与硬件资源106相接口;它将实体及线程分类并将它们导向相应的硬件处理器108。微内核处理硬件资源的调度直到需要的程度。例如,在需要20个不同的任务但少于20个处理器的情况,或处理器的组合与待执行的线程和实体的类型不对应时,微内核将使用现有技术已知的技术来调度任务。微内核也参与处理网络文件系统(NFS),网络操作,外围设备驱动器,虚拟存储器管理,用户接口,及通常由操作系统负责的另外任务。
两个另外的存储管理器任务被分配给微内核。第一个是“无用单元收集”,即释放分配给实体或线程的存储器,对它们在码中不再有参考。无用单元收集的详情例如已由Java环境公知。无用单元收集任务的本身是一种进程,它可以分配给适合的处理器。最好,操作系统用Java语言来写,无用单元收集任务可在Java本机处理器上用本机代码运行。另外的专门存储器管理是管理各本机处理器如Pico-Java处理器间分布的存储器。
图3也表示根据本发明的多媒体结构的一个实施例,这里表示出硬件资源108的附加细节。每个硬件资源,通常为处理器核心,它与微内核104通信,如由线124所示。下述类型的处理器表示出本发明本优选实施例。但是,硬件资源的许多不同组合可在此结构中用来优化具体多媒体应用程序的性能。本发明的一个优点是能随意地加上或除去各种处理器,而不改变虚拟机。这对于改善性能提供了大的灵活性及可移植性。在图3中,以说明的方式,硬件资源108包括:视频背景处理器120;DSP音频处理器122;视频解压缩处理器124;两维物体转动处理器126;立体声音频同步处理器128;三维描绘处理器130;用户图形接口工具处理器132;附加视频背景处理器134,及一个或多个本机字节码处理器136。
某些或所有这些处理器例如可为商业上可购得的处理器核心,例如从美国剑桥的RISC机器有限公司可购得的ARM-8RISC处理器。这类处理器能以小、低功率构型在100MIPS量级上提供高性能。另外,一个或多个处理器可为本机字节码核心。还具有设计用于直接执行虚拟机伪语言指令的处理器。不适于这些可获得的专用处理器中一个的码片段或线将被虚拟机发送到本机字节码核心以便执行,如下面所述。在另一个实施例中,上述某些或全部处理器可为本机字节码核心。在此情况下,虚拟机中的码产生将不需要OP码的翻译。硬件资源的具体选择及组合将涉及另外工程设计选择中的价格/性能比的折衷。最好,某些或所有的处理器是用单片集成电路模件来实现的,以便减小尺寸、价格及功耗。图3还以两个例子的形式描绘了在虚拟机102中软件实体如何重建的及如何通过到达相应的硬件处理器。所示的例子是由虚线152所示的视频背景实体及由虚线150所示的三维视频实体。
图4更详细地表示虚拟机程序102。最好以软件来实现的虚拟机与接收如前所述的字节码输入流100的硬件缓存器、流水线或类似元件200相通信。虚拟机的第一操作由重建框200表示。重建步骤200包括一个类加载器,它确定输入字节码中哪些类将被参考并检查类库204中的那些类。存储在虚拟机中的类库包括应用编程语言库。例如,在Java语言的情况下,基础库包括AWT类(摘要窗工具包)、网络类、实用、图形、声音、视频类等。扩展类的例子在上面已描述了。最好,将应用扩展类存储在虚拟机中,以便使数字类的增量链接减至最小。重建步骤202包括识别任何遗漏类,即在字节码中参考的但在存储库不能得到的类,并由箭头206所示地从输入流100的源中下载遗漏类。利用语法分析这些字节码及参照类库,重建步骤202包括重建原始软件实体、线程及在源程序中使用的码片段(图1中10)。这些实体、线程及字节码片段的表提供给相关进程210,如箭头208所示。相关处理步骤210检验、硬件资源表212。
硬件资源表通过与微内核104的通信来形成,后者又与硬件资源108接口。然后进程210将需被执行的实体、线程及字节码与当前可用的硬件资源相关联。它将物体及线程联编(bind)到最适合的、可用的硬件资源上。其例子已在前面参照图3描述了。接着,在步骤216中,虚拟机根据需要使用类库求解变量(场)及另外的参照量。它安排所有对执行现有任务所必须的参数及变量。基本上具有四种类型的任务或进程要被执行:线程,实体,applet及平面码段。一种共产生进程220类似于传统的码产生。它包括将OP码从虚拟机伪语言转换到可执行的机器码。如果它被设计用于在不是使用相同指令集的不同硬件处理器上执行时,从一个进程到另一进程这可能会不同。某些进程,尤其是平面码段,可以直接地在本机伪码处理器上执行而无OP码翻译。例如,以Java字节码伪语言的码段可直接地在从加里福尼亚的Sun微系统公司购得的Pico Java本机码处理器上执行。共产生进程220以适当顺序在堆栈上安排操作数、变量、指针等,以便用于待执行的每个进程,然后将进程“传送”给微内核104。在该进程中,共产生步骤220将保证每个可执行进程被送向如在上述相关步骤210中确定的适当处理器。在图4的底部,例如由线230指示的可执行进程在相应的处理器120,122,136上执行。各种类型的处理器已在上面对图3的说明中概括了。
执行线程不一定1:1地联编于硬件资源。在某些应用中,通过设置基于可用的资源“在空中”重建线程的“智能”内核甚至将能获得性能的更大改善。最好,设置相当多的处理器,如20,30或甚至100个。许多线程可并行执行。此外,整个进程是连续的及动态的。因此当线程完全执行时硬件分配持续地改变并且新的硬件被分配。在单个硅“芯片”上实施整个系统将以低成本提供高性能。
通过在系统中采用“智能控制器”可实现性能的进一步改善。智能控制器可设置在微内核及硬件资源之间并有效控制对总线的访问。它将地址传送给处理器并有效降低总线业务量,由此减少争用及延迟。
图5还表示出本发明的宽广概念。在图5中,源程序300包括多个程序线程,由T1、T2及T3表示。源程序300被编译在适当的编译程序302中,以便形成一系列的伪语言字节码304。编译程序302包括用于300中的具体面向对象编程语言的类库。字节码304可通过任何的各种装置、如包括在机器可读分配介质,例如网络、internet等上的磁盘或光盘被存储、传送或分配。
在图5中的下部,在客户机上接收的字节码如上所述地在虚拟机306上被处理。虚拟机重建程序线程及实体310,然后被发送到总的由320表示的相应专用处理器。因此,可以看到,原始程序300的面向对象特征被重建出来并通过硬件处理器320携带,提供了并行执行的好处,而且保留了可移植性、紧凑、及面向对象范例的其它优点。通过设置如在这里描述过的合适硬件处理器,本发明的结构能提供比现有技术方案有效得多的多媒体数据实时处理。
对本发明的原理已在其优选实施例中描述及图解,应该明白,在不偏离该原理的情况下,在布置及细节上可以修改。对于在所附权利要求精神及范围内的所有修改及变化都涵盖在其保护范围内。
Claims (20)
1.一种对由面向对象源程序编译的伪语言字节码的输入流进行实时处理的系统,该系统包括:存储器;用于接收字节码输入流的输入装置;并行布置的多个硬件处理器;及存储在所述存储器中并与所述输入装置连接的虚拟机计算程序,其包括:用于由字节码流重建软件线程的装置;用于将重建的软件线程翻译成相应可执行进程的装置;用于选择一个合适的硬件处理以执行相应可执行进程的装置;及用于将相应可执行进程发送到所选硬件处理器以便执行的装置。
2.根据权利要求1的系统,其中所述虚拟机程序包括:用于维持当前在该系统中可用的硬件处理器表的装置;及用于选择一个合适的硬件处理器以执行所述可执行进程的装置包括检验该表的装置,由此使系统自动适配,以便利用当前可用的硬件处理器。
3.根据权利要求1的系统,其中所述虚拟机程序包括存储在所述存储器中的预定类协议库,及所述用于选择硬件处理器的装置包括使当前在该系统中可用的硬件处理器的表与实体级协议库相关联。
4.根据权利要求3的系统,其中所述虚拟机程序包括动态类加载器装置,用于确定在输入字节码流中参照的实体是否是在所述类库中定义的类协议例子,及用于下载任何遗漏的类协议或库。
5.根据权利要求1的系统,其中所述虚拟机程序包括:用于由字节码重建多个各异的进程线程的装置;用于选择相应硬件处理器以便执行每个进程线程的装置;及用于将每个进程线程发送到相应选择的硬件处理器以便作为轻量级处理并行执行的装置。
6.根据权利要求5的系统,其中所述处理器至少包括一个专用于执行选择的多媒体方法的多媒体处理器,且所述虚拟机程序包括用于将多媒体进程线程发送给所述多媒体处理器的装置。
7.根据权利要求5的系统,其中所述处理器至少包括一个专用于执行音频数据的音频处理器及所述虚拟机程序包括用于将音频进程线程发送给该音频处理器的装置。
8.根据权利要求5的系统,其中所述处理器至少包括一个专用于图形数据解压缩用的图形解压缩处理器,及所述虚拟机程序包括用于将图形进程线程发送给该图形解压缩处理器的装置。
9.根据权利要求5的系统,其中所述处理器至少包括一个专用于描绘图形数据的图形描绘处理器,及所述虚拟机程序包括用于将图形进程线程发送给该图形描绘处理器的装置。
10.根据权利要求5的系统,其中所述处理器至少包括一个专用于执行本机字节码的本机字节码处理器,及所述虚拟机程序包括用于将平面进程线程发送给本机字节处理器以便不用翻译OP码就执行的装置。
11.根据权利要求5的系统,还包括一个微内核操作系统,用于作所述硬件处理器及虚拟机程序之间的接口。
12.根据权利要求11的系统,其中所述虚拟机程序用面向对象编程语言书写。
13.根据权利要求12的系统,其中所述面向对象编程语言包括Java编程语言类,及虚拟机程序包括存储在所述存储器中的Java类协议库,以及所述用于选择硬件处理器的装置包括用于使在该系统中当前可用的硬件处理器表与Java类库相互关联的装置。
14.一种用于将由一面向对象的多媒体源程序编译的输入字节码流转换为多个进程线程以便实时并行执行的、用字节码解释的与硬件无关的计算机实现的虚拟机的方法,该方法包括下列步骤:保持可用硬件资源表;由输入字节码流重建多个程序实体及线程;使所述重建的程序实体和线程与可用的硬件资源表相互关联;及将每个所述重建的程序实体和线程发送到选择的一个相应的硬件资源,以便基本上并行地执行,由此提供改善的执行性能并且保持字节码的可移植性。
15.根据权利要求14的方法,还包括在多媒体应用程序中定义的支持预定同步方法。
16.根据权利要求14的方法,其中:
所述可用的硬件资源表包括用于每个硬件资源的所述硬件资源表专门对其适用的特定多媒体功能的指示,如果有的话;及
所述相关步骤包括将所述程序实体及线程与所述表相比较,以便识别专门适用于执行任何所述程序实体及线程的那些硬件资源,如果有的话;及
所述发送步骤包括将所述程序实体及线程联编于相应的被识别硬件资源上,以便执行。
17.根据权利要求14的方法,还包括:识别在所述源程序中同步的所说明的进程;
在监视器控制下执行所述同步的进程,以保证各变量保持在一致状态;及
调度所有其它用于并行执行的进程直到所述可用的硬件资源允许的程度。
18.根据权利要求14的方法,其中所述硬件资源包括多个处理器,每个处理器对于其原始功能被优化;并且该方法还包括提供与多个所述处理器中每个连接的相协调的、全局的高速缓存器,以改善性能。
19.一种用于实时处理面向对象的多媒体数据输入流的系统,包括:
用于接收输入数据流的输入装置;
多个并行布置的硬件处理器;
与所述输入装置相连接的虚拟机计算程序,其包括:用于由输入数据重建软件线程的装置;用于将所述重建软件线程翻译成相应可执行进程的装置;用于选择适当的一个硬件处理器来执行所述相应的可执行进程的装置;及用于将该相应的可执行进程发送到所选择的硬件处理器以便执行的装置;及
用于管理所述多个硬件处理器的微内核操作系统;该微内核操作系统包括用于检测所述硬件处理器的装置,以便将可用的处理器表提供给所述虚拟机程序,用来与所述选择适当的一个硬件处理器关连使用,以便执行相应的可执行进程。
20.根据权利要求19的系统,其中所述硬件处理器包括至少一个对于执行预定介质实体方法优化的专用处理器,及至少一个用于以本机伪码语言执行平面码段的RISC处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN97117496A CN1190211A (zh) | 1997-06-10 | 1997-06-10 | 面向对象的多媒体结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN97117496A CN1190211A (zh) | 1997-06-10 | 1997-06-10 | 面向对象的多媒体结构 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1190211A true CN1190211A (zh) | 1998-08-12 |
Family
ID=5174477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN97117496A Pending CN1190211A (zh) | 1997-06-10 | 1997-06-10 | 面向对象的多媒体结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1190211A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005109865A1 (en) * | 2004-05-09 | 2005-11-17 | St Microelectronics Nv | A method for realizing embedded digital television service platform |
CN1308813C (zh) * | 2002-08-22 | 2007-04-04 | 智慧第一公司 | 非临时存储器参量的控制装置、结构和方法 |
CN100583044C (zh) * | 2004-04-02 | 2010-01-20 | 株式会社日立制作所 | 数据处理装置及其方法 |
US8019823B2 (en) | 2006-11-30 | 2011-09-13 | Huawei Technologies Co., Ltd. | Method, system and device for increasing multimedia messaging service system capacity |
CN102299820A (zh) * | 2011-08-26 | 2011-12-28 | 于辉 | 一种盟员节点装置及hla系统构架的实现方法 |
CN102411631A (zh) * | 2011-12-22 | 2012-04-11 | 中国科学院声学研究所 | 一种嵌入式浏览器磁盘缓存的方法 |
-
1997
- 1997-06-10 CN CN97117496A patent/CN1190211A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1308813C (zh) * | 2002-08-22 | 2007-04-04 | 智慧第一公司 | 非临时存储器参量的控制装置、结构和方法 |
CN100583044C (zh) * | 2004-04-02 | 2010-01-20 | 株式会社日立制作所 | 数据处理装置及其方法 |
WO2005109865A1 (en) * | 2004-05-09 | 2005-11-17 | St Microelectronics Nv | A method for realizing embedded digital television service platform |
US8019823B2 (en) | 2006-11-30 | 2011-09-13 | Huawei Technologies Co., Ltd. | Method, system and device for increasing multimedia messaging service system capacity |
CN102299820A (zh) * | 2011-08-26 | 2011-12-28 | 于辉 | 一种盟员节点装置及hla系统构架的实现方法 |
CN102299820B (zh) * | 2011-08-26 | 2014-07-23 | 于辉 | 一种盟员节点装置及hla系统构架的实现方法 |
CN102411631A (zh) * | 2011-12-22 | 2012-04-11 | 中国科学院声学研究所 | 一种嵌入式浏览器磁盘缓存的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5946487A (en) | Object-oriented multi-media architecture | |
EP2141651B1 (en) | Framework to integrate and abstract processing of multiple hardware domains, data types and format | |
Peleg et al. | Intel MMX for multimedia PCs | |
US20070261038A1 (en) | Code Translation and Pipeline Optimization | |
US20120191922A1 (en) | Object synchronization in shared object space | |
US20040095387A1 (en) | Virtualized and realized user interface controls | |
US20130097410A1 (en) | Machine processor | |
CA2468361A1 (en) | System and method of generating applications for mobile devices | |
US20050086237A1 (en) | Shared queues in shared object space | |
CN109690505A (zh) | 用于针对虚拟化输入/输出实施方式的混合层地址映射的设备和方法 | |
JP2021149941A (ja) | ダイナミック量子化グリッドを用いたモーションブラー | |
US11094036B2 (en) | Task execution on a graphics processor using indirect argument buffers | |
CN117078832A (zh) | 用于经实施例化的几何结构的更有效的光线跟踪方法和装置 | |
Heller et al. | Closing the performance gap with modern c++ | |
CN109643277A (zh) | 用于中介传递和共享存储器页合并的装置和方法 | |
KR102668137B1 (ko) | 태스크들 및 작업 흐름들의 상태 비저장 병렬 프로세싱 방법 및 장치 | |
US9348676B2 (en) | System and method of processing buffers in an OpenCL environment | |
CN1190211A (zh) | 面向对象的多媒体结构 | |
CN103631645A (zh) | 一种基于数字医疗的数字家庭中间件系统 | |
US20130103931A1 (en) | Machine processor | |
US9448823B2 (en) | Provision of a download script | |
Basoglu et al. | The MAP1000A VLIM mediaprocessor | |
Khaldi et al. | Extending llvm ir for dpc++ matrix support: A case study with intel® advanced matrix extensions (intel® amx) | |
Nikhil et al. | Stampede A Programming System for Emerging Scalable Interactive Multimedia Applications | |
Guan et al. | RPYFMM: Parallel adaptive fast multipole method for Rotne–Prager–Yamakawa tensor in biomolecular hydrodynamics simulations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C01 | Deemed withdrawal of patent application (patent law 1993) | ||
WD01 | Invention patent application deemed withdrawn after publication |