基于服务器的代码编译的制作方法

文档序号:6478771阅读:216来源:国知局
专利名称:基于服务器的代码编译的制作方法
技术领域
本发明大体上涉及基于服务器的代码编译的系统和方法。
背景技术
技术进步已产生更小且更强大的个人计算装置。举 例来说,当前存在多种便携式 个人计算装置,包含无线计算装置,例如便携式无线电话、个人数字助理(PDA)和寻呼装 置,其体积小、重量轻且易于由用户携带。更具体地说,便携式无线电话(例如蜂窝式电话 和因特网协议(IP)电话)可经由无线网络传送语音和数据包。此外,许多此类无线电话包 含并入其中的其它类型的装置。举例来说,无线电话还可包含便携式游戏控制台、数字静态 相机、数字视频相机、数字记录器和音频文件播放器。而且,此类无线电话可包含可用于接 入因特网的应用程序,例如万维网浏览器应用程序。由此,这些无线电话包含相当大的计算 能力。通常,随着这些装置变得更小且更强大,这些装置变得越来越受资源约束。举例来 说,屏幕大小、可用存储器和文件系统空间的量,以及输入和输出能力的量可能受装置的小 尺寸限制。此外,电池大小、电池所提供的电力的量以及电池寿命也可能受限制。另外,便携式装置上的计算资源是有限的。举例来说,蜂窝式电话上的处理器能力 受大小和功率消耗约束限制。由此,涉及软件从源代码到目标代码的转换的程序的编译通 常不在此些便携式装置上执行。然而,由于便携式装置具有不同的处理器和执行平台,因此 每一类型的具有不同平台的装置的编译需要是不同的。此平台变化为应用程序开发者带来 复杂性和增加的成本,应用程序开发者宁愿开发用于单个目标执行环境的软件应用程序, 而不愿创建不同版本的应用程序来适应多个平台。另外,随着具有增加的功能性(例如,视 频和多媒体应用处理能力)的各种便携式装置的激增,与用于不同目标平台的应用程序有 关的问题已变得更显著。因此,提供经改进的编译系统和方法将是有利的。

发明内容
本发明揭示一种基于服务器的编译方法和一种用于实施所述方法的服务器。所述 基于服务器的编译方法包含在具有多个编译器的服务器处接收代码编译请求。所述方法还 包含将代码编译请求中的信息与存储在服务器处的所述多个编译器的列表进行比较,以 确定服务器是否具有适合编译与所述代码编译请求相关联的源代码的编译器;以及经由网 络将对所述代码编译请求的响应从服务器传送到客户机。所述响应包含对代码编译请求的 接受或拒绝的指示。当所述响应包含对代码编译请求的接受的指示时,所述方法包含在服 务器处接收待编译的源代码;使用适合编译源代码以产生经编译的代码的选定编译器来编 译在服务器处接收到的源代码;以及经由网络将经编译的代码从服务器传送到客户机。在特定实施例中,服务器包含与数据通信网络的接口、存储多个不同编译器的编 译器库,以及响应所述接口处所接收到的数据的编译器选择逻辑。编译器选择逻辑包含用以基于对所接收到的数据的评估来选择所述多个不同编译器中的一者的逻辑。选定的编 译器用于产生经编译的输出数据,且所述经编译的输出数据经由数据通信网络传送到客户 机。在又一实施例中,揭示一种向客户机请求基于服务器的代码编译的方法。所述方 法包含将代码编译请求发送到具有多个编译器的服务器;从服务器接收对代码编译请求 的响应,所述响应指示代码编译请求的接受或拒绝;在检测到代码编译请求的接受后,将源 代码发送到服务器,所述源代码将在服务器处被编译;在服务器已编译所述源代码之后,接 收来自所述服务器的经编译的代码。在又一实施例中,揭示一种计算装置。所述计算装置包含处理器、可由所述处理器 存取的存储器,以及通信接口。所述通信接口经配置以将代码编译请求发送到具有多个编 译器的服务器,且从所述服务器接收对所述代码编译请求的响应。所述响应指示代码编译 请求的接受或拒绝。通信接口进一步经配置以将源代码发送到服务器,以在服务器处编译, 且接收来自所述服务器的经编译的代码。本文中所揭示的实施例中的一者或一者以上的优点可包含通过将软件应用程序 代码的编译移位到可具有较大处理资源的服务器来保存装置资源。本文中所揭示的一个或 一个以上实施例的另一优点可包含基于与应用处理单 元的兼容性而分配用于在应用处理 单元(例如,客户机装置的图形处理单元、视频处理单元或相机图像处理单元)处执行的软 件,而不需要软件的用户交互或用户选择。所述一个或一个以上实施例的另一特定优点可包含通过允许应用程序开发者将 经寻址的代码写入到所要平台,且通过提供可响应于接收到来自便携式装置的请求而编译 到达一个或一个以上特定装置平台的代码的基于服务器的代码编译系统,来简化软件编码 过程。以此方式,写入到单个平台的代码可经编译以供在于不同平台上操作的多个装置上 使用,而不为软件开发者增加复杂性,且不消耗便携式装置处的处理资源。在审阅整个申请案之后,将明白本发明的其它方面、优点和特征,整个申请案包含 以下部分


具体实施方式
和权利要求书。

通过参考结合附图进行的以下详细描述,本文所描述的实施例的方面和优点将变 得更显而易见,其中图1是包含用以执行基于服务器的编译的服务器的示范性系统的框图;图2是利用基于服务器的编译的系统的实施例的框图;图3是利用基于服务器的编译的系统的另一实施例的框图;图4是利用基于服务器的编译的系统的另一实施例的框图;图5是并入有用以执行经服务器编译的代码的处理器的便携式通信装置的框图;图6是并入有用以执行经服务器编译的代码的处理器的示范性蜂窝式电话的框 图;图7是执行基于服务器的编译的方法的特定说明性实施例的流程图;图8是执行基于服务器的编译的方法的第二特定说明性实施例的流程图;以及图9是客户机请求的编译的方法的特定说明性实施例的流程图。
具体实施例方式图1说明包含用以执行基于服务器的编译的服务器的示范性系统的框图。系统 100包含代表性的客户机102、104,数据网络106和服务器120。服务器120包含网络接口 130、编译器选择逻辑140、所支持且所存储的编译器的列表142,以及包含多个编译器150、 152、154的编译器库。所述多个编译器150、152和154耦合到网络接口 130,且耦合到编译 器选择逻辑140。网络接口 130耦合到数据通信网络106。数据通信网络106可为因特网 协议网络,且可为有线数据网络或无线数据网络。一般来说,编译器150、152和154适合于 将字节代码、符号代码或高级符号语言翻译成特定处理器可理解和执行的等效处理器可读 指令。在特定实施例中,经编译的结果可为中间表示语言代码或字节代码,例如,X86型处 理器的汇编代码。中间表示对于许多平台或处理单元来说可以是灵活且便携的。可将中间 表示语言代码用作到达特定平台或处理单元的另一(较低)级编译器的输入。存储在服务 器120处的编译器中的每一者(例如,所说明的编译器150、152和154)为用于为不同处理 器编译代码的不同编译器。举例来说,第一客户机102和第二客户机104可具有利用不同 执行平台的不同处理器。服务器120适合于接收编译请求、从可用的编译器150、152和154 选择适当的编译器,且使用对与第一客户机102相关联的特定处理器来说适当的选定编译 器来编译用于请求装置(例如,第一客户机102)的代码。编译器选择逻辑140响应在网络接口 130处接收到的数据(例如,从客户机102、 104中的一者接收到的代码编译请求110)。编译器选择逻辑140包含用以基于对所接收到 的数据的评估(例如,对代码编译请求消息110中所传送的信息的评估)来选择多个不同 编译器150、152或154中的一者的逻辑。在特定实施例中,可将编译器选择逻辑140实施 为逻辑电路。在操作期间,编译器选择逻辑140确定来自编译器库的选定编译器(例如,编 译器150),且将消息传送到请求客户机(例如,第一客户机102)。到达请求客户机的消息 指示对代码编译请求消息110的接受或拒绝。当合适的编译器在服务器120处可用时,服务器120传送对代码编译请求消息110 的接受。作为响应,请求客户机102或104可将待编译的源代码发送到服务器120,且服务 器120处的编译器选择逻辑140将接收到的源代码路由到选定编译器150、152或154。选定 编译器150、152或154编译所述源代码,并产生经编译的代码112。经编译的代码112 (也 称为目标代码)经由网络接口 130和网络106传送到请求客户机102或104。在特定实施例中,请求客户机102或104可为个人计算机、便携式计算机、手持式 计算装置,例如无线电话、个人数字助理、媒体重放装置或类似装置。请求客户机装置可包 含目标应用处理单元(例如图形处理单元(GPU)),以执行从服务器120发送的经编译的代 码。请求客户机102或104还可为软件应用程序、驱动程序、安装程序、其它处理器可执行 指令或其任何组合。代码编译请求110可包含关于目标应用处理单元的信息,使得服务器 120可选择适当的编译器。在特定实施例中,信息包含源代码语言名称、源代码语言版本、处 理单元名称、处理单元版本或其任何组合。在无线应用中,服务器120可安置在无线通信网路的无线基站内或与无线通信网 路的无线基站位于同一地点。在另一特定实施例中,服务器120可与无线通信网路的无线 基站通信。在服务器120包含用于各种GPU平台的着色器编译器(shader compiler)的应用中,待传输的典型源代码文件大小或经编译文件大小可较小,例如小于2,OOO个字节。因 此,源代码经由无线通信网路的传输、在服务器120处的编译以及由请求客户机102或104 的接收可发生在运行时间,而不引入不可接受的延迟。在特定实施例中,客户机102或104可包含通用中央处理单元(CPU)、数字信号处 理器(DSP) —个或一个以上应用处理单元或其任何组合。应用处理单元可包含图形处理单 元、视频处理单元、相机图像处理单元、其它应用处理单元或其任何组合。应用程序可包含 多个层,例如具有基于一个或一个以上应用编程接口(例如,OpenGL 、DireCtX 等)的代 码的应用层、在编程接口下的驱动程序层,以及可在一个或一个以上专用应用处理单元上、 在DSP上或在CPU上执行的应用处理层。在特定实施例中,根据特定配置,应用处理层的一 些组件可在专用应用处理单元上执行,其它组件可在DSP上执行,且另外其它组件可在CPU 上执行。在特定实施例中,例如在客户机102或104的CPU上运行的安装程序、应用程序或 驱动程序等客户程序可向服务器120发出针对用于单个应用程序的不同组件的不同编译 请求。举例来说,客户机102或104可产生针对一些组件将代码编译成CPU可执行代码 的请求、针对其它组件将源代码编译成DSP可执行代码的请求,以及针对特定组件将源代 码编译成可由专用处理单元执行的机器代码的请求。客户机可分配从服务器120接收到的 经编译的代码,以供在对应的应用处理单元、DSP、CPU或其任何组合上执行。在特定实施例 中,当此些应用处理单元并非专用且不可有效地配置于客户机装置中时,CPU或DSP可起到 一个或一个以上应用处理单元的作用。在特定实施例中,服务器120可接收着色语言源代码,且可编译所述源代码以供 在GPU处执行。在其它实施例中,服务器120可适合于编译用于其它处理平台的其它类型 的源代码。举例来说,服务器120可编译以C或另一编程语言写就的数字信号处理器(DSP) 代码,且可输出DSP可执行代码。作为另一实例,在计算任务中的至少一部分被从GPU移到 DSP的情况下,服务器120可接收着色语言代码,且可输出DSP可执行代码。作为另一实例, 服务器120可接收着色语言代码,且可输出高级精简指令集计算(RISC)机器(例如,ARM) 代码。在另一实例中,服务器120可接收C语言源代码,且可输出GPU可执行代码,例如用 于GPU处的通用计算。举例来说,GPU可用于执行从CPU或DSP移到GPU的通用音频或视 频处理。根据特定的硬件配置,其它实施例可包含接收C代码且输出CPU可执行代码或DSP 可执行代码的服务器120。图2说明利用基于服务器的编译的系统200的实施例的框图。系统200包含经由 网络206与服务器204通信的客户机装置202。在特定实施例中,网络206可包含无线网 络、有线网络或其任何组合。客户机装置202包含可用于将数据组织在客户机装置202的 存储器(未图示)处的目录和文件中的文件系统208。客户机装置202还包含一个或一个 以上应用程序210、一驱动程序212和一应用处理单元214。在特定实施例中,应用处理单 元214可包含图形处理单元(GPU)、视频处理器、相机或成像处理器、音频处理器、另一专用 处理器或其任何组合。在特定实施例中,客户机装置202可包含CPU(未图示)、DSP(未图 示)或其任何组合。CPU、DSP和应用处理单元214可以存取存储器、应用程序210和驱动 程序212。CPU可执行应用程序210,以经由网络206而与服务器204通信。服务器204包 含前端216、第一编译器218和第二编译器220。前端216可包含编译器选择逻辑,例如图 1中所说明的编译器选择逻辑140。
在特定说明性实施例中,客户机装置202可执行一个或一个以上应用程序210中 的至少一者,以经由文件系统208检索存储在存储器中的源代码或中间表示字节代码。例 如中央处理单元(CPU)等处理器可执行所述一个或一个以上应用程序210,且可产生与源 代码有关的代码编译请求。所述代码编译请求可包含代码语言识别符(例如,着色器编程 语言名称(例如,OpenGL着色语言(GLSL)、高级着色语言(HLSL)、Gg等)、高级编程语言名 称(例如,JAVA ,C++)或其它编程语言识别符)、版本识别符、目标名称(例如,GPU名称 或CPU名称)、目标版本、所支持的二进制代码名称以及版本识别符。客户机装置202尝试 建立经由网络206到服务器204的连接。如果所述连接被建立,那么客户机装置202可经由 网络206将代码编译请求发送到服务器204,以确定服务器204是否有能力编译所述代码。 客户机装置202接收来自服务器204的响应。所述响应可为指示服务器204可编译所述代 码的接受。或者,所述响应可包含请求的拒绝。如果响应指示服务器204接受,那么客户机 装置202经由网络206将代码 发送到服务器204,且等待经编译的结果。当客户机装置202 接收到经编译的结果时,客户机装置202可执行所述经编译的结果。在特定实例中,在客户机装置202(即,客户机)处执行的特定应用程序210可起 始与服务器204的通信。举例来说,在执行中的特定点处,应用程序210可能需要执行源代 码或中间表示字节代码。应用程序210可向服务器204起始对编译所述代码的请求。响应 于接收到指示接受的响应,应用程序210可将代码发送到服务器204以供编译。应用程序 210可接收经编译的代码。在应用程序210接收到经编译的结果之后,应用程序210将结 果存储在本机文件系统208处(S卩,在存储器处),将经编译的结果提供给驱动程序212、将 经编译的结果提供给应用处理单元214,或其任何组合。在特定说明性实施例中,应用程序 210可检查经编译的结果,并在下次执行应用程序210时加载所述经编译的结果。在另一 特定说明性实施例中,应用程序210可暂停执行,请求编译运行中的代码,接收经编译的代 码,且使用所述经编译的代码来恢复执行。在又一特定说明性实施例中,客户机可向服务器 204请求特定应用程序(服务器204根据所述请求来编译所请求的应用程序),且向客户机 提供经编译的代码以供存储、执行或其任何组合。图3说明利用基于服务器的编译的系统300的另一特定实施例的框图。系统300 包含经由网络306与服务器304通信的客户机装置302。在特定实施例中,网络306可包 含无线网络、有线网络或其任何组合。客户机装置302包含可用于将数据组织在客户机装 置302的存储器(未图示)处的目录和文件中的文件系统308。客户机装置302还包含一 个或一个以上应用程序310、一驱动程序312、一应用处理单元314和一安装程序(下载程 序)316。在特定实施例中,应用处理单元314可包含图形处理单元(GPU)、视频处理单元、 相机或图像处理单元、音频处理单元、另一专用处理单元或其任何组合。在特定实施例中, 客户机装置302可包含CPU(未图示)、DSP(未图示)或其任何组合。在特定说明性实施例 中,CPU、DSP和应用处理单元314中的每一者可以存取存储器、所述一个或一个以上应用程 序310和驱动程序312,且CPU执行所述一个或一个以上应用程序310中的至少一者。在特 定实施例中,安装程序316可为可执行以经由网络306与服务器304通信以下载经编译的 代码的软件应用程序。服务器304包含前端318、第一编译器320和第二编译器322。前端 318可包含编译器选择逻辑,例如图1中所说明的编译器选择逻辑140。在特定说明性实施例中,安装程序316可起始与服务器304的通信。当安装软件时,安装程序316代表所述一个或一个以上应用程序310中的一应用程序收集数据,且将对 编译服务的请求发送到服务器304。安装程序316接收来自服务器304的经编译的代码,且 将所述经编译的代码存储在本机文件系统308处。所述一个或一个以上应用程序310中的 一者可从本机文件系统308读取经编译的(二进制)代码和格式,且可将经编译的代码直 接发送到驱动程序312。在另一特定实施例中,当从另一服务器(未图示)下载应用程序 时,安装程序(下载程序)316可指示从中下载应用程序的服务器将编译请求发送到服务器 304、将经编译的代码直接发送到客户机装置302。在另一特定实施例中,当从应用服务器 (未图示)下载应用程序时,安装程序(下载程序)316可将编译信息提供给应用服务器, 且应用服务器可将编译请求发送到服务器304。服务器304可将经编译的二进制代码传回 到应用服务器,应用服务器可将应用程序和二进制代码打包在一起,以发送到客户机装置 302。通过经由应用服务器将请求路由到服务器304,编译和安装可对客户机装置302透明。在特定实施例中,客户机装置302可为在线游戏装置,且在应用程序正在客户机 装置处运行且相对于玩家交互而推进的同时,可发生应用程序下载。当正被下载的应用程 序的对应程序部分需要从源代码编译成可由客户机装置302处的一个或一个以上处理单 元执行的机器代码时,下载可能经由网络306要求服务器304的编译服务。在此情况下,下 载服务器或应用服务器可直接向服务器304起始编译请求,且在应用服务器处接收来自服 务器304的经编译的代码。应用服务器可将经编译的代码发送到客户机装置302以供执 行。从应用服务器下载的经编译的代码可连同应用程序可能需要的相关联的其它应用程序 代码和数据或文件一起下载以供执行。在特定说明性实施例中,服务器304允许软件开发 者编码特定应用程序,而无需关注所述应用程序将在上面执行的平台,因为服务器304经 配置以确定请求客户机的平台,且选择适合将源代码编译成可由与请求客户机相关联的平 台执行的目标代码的编译器。
图4说明利用基于服务器的编译的系统400的另一特定实施例的框图。系统400 包含经由网络406与服务器404通信的客户机装置402。在特定实施例中,网络406可包 含无线网络、有线网络或其任何组合。客户机装置402包含可用于将数据组织在客户机装 置402的存储器(未图示)处的目录和文件中的文件系统408。客户机装置402还包含一 个或一个以上应用程序410、一驱动程序412和一应用处理单元414。在特定实施例中,应 用处理单元414可包含图形处理单元(GPU)、视频处理器、相机或成像处理器、音频处理器、 另一专用处理器或其任何组合。在特定实施例中,客户机装置402可包含CPU(未图示)、 DSP(未图示)或其任何组合。当一个或一个以上应用处理单元并非专用且不可有效地配置 于客户机装置中时,CPU或DSP可执行所述应用处理单元的功能。在特定说明性实施例中, CPU、DSP和应用处理单元414可以存取存储器、所述一个或一个以上应用程序410和驱动 程序412。在特定实施例中,驱动程序412可为可执行以经由网络406与服务器404通信 以请求源代码编译、下载经编译的代码或其任何组合的软件应用程序。服务器404包含前 端416、第一编译器418和第二编译器420。前端416可包含编译器选择逻辑,例如图1中 所说明的编译器选择逻辑140。在特定说明性实施例中,当应用程序410请求经编译的源代码时,驱动程序412起 始与服务器404的通信。服务器404可为经配置以编译着色器程序以渲染图形效果且计算 与图形元素相关联的色彩的着色器编译服务器。
在特定说明性实施例中,驱动程序412可接收来自服务器404的经编译的代码,且 可使所述经编译的代码受到应用程序410的作用。应用程序410可读取经编译的结果,并 将所述经编译的结果存储在本机文件系统408中。应用程序410接着可在应用程序410的 后续执行期间,加载来自本机文件系统408的经编译的代码。在说明性实施例中,可仅在应 用程序410在客户机装置402处的第一次执行期间,在服务器404处编译源代码。
在另一特定说明性实施例中,驱动程序412可不使经编译的代码受到应用程序 410的作用。每当应用程序410被执行时,应用程序410可向驱动程序412请求源代码的编 译。应用程序410可在运行时间请求经编译的代码,仿佛驱动程序适合于执行运行时间编 译,而应用程序410无需了解服务器404。在特定说明性实施例中,驱动程序412可将编译 请求直接发送到运行中的服务器404,且可按需要高速缓存经编译的代码。服务器404因此 可起到驱动程序412的扩展的作用。在等待接收来自服务器404的经编译的代码的同时, 驱动程序412可继续执行可与编译并行执行的操作。在特定实施例中,应用处理单元414可包含GPU,其在等待来自服务器404的经编 译的代码的同时,加载顶点和纹理着色数据。可实现此实施方案所提供的一个特定优点,因 为通过使用驱动程序412来透明地向服务器404请求和从服务器404接收经编译的代码, 与循序地执行顶点/纹理数据的编译和加载的系统相比,可改进用于应用程序410的图形 的加载速度。另外,例如当游戏等级推进时,服务器404可用于提供按需编译。客户机装置 402可仅针对特定游戏等级或特定细节,经由网络406将编译请求发送到服务器404。因此, 可节省时间和存储。图5说明概括标明为520的便携式通信装置的示范性非限制实施例。如图5中所 说明,便携式通信装置包含芯片上系统522,所述芯片上系统522包含CPU(未图示)、数字 信号处理器524和图形处理单元(GPU)526。在特定实施例中,CPU可经配置以起始与编译 器服务器(例如,图1中所说明且本文中所描述的服务器120)的交互,以接收经编译的代 码以供执行。图5还展示GPU 526耦合到数字信号处理器524和显示器528。输入装置530 和存储器532也耦合到数字信号处理器524。另外,编码器/解码器(CODEC) 534可耦合到 数字信号处理器524。扬声器536和麦克风538可耦合到C0DEC534。图5还指示无线控制器540可耦合到数字信号处理器524和无线天线542。在特 定实施例中,电源544耦合到芯片上系统522。此外,在特定实施例中,如图5中所说明,显 示器528、输入装置530、扬声器536、麦克风538、无线天线542和电源544在芯片上系统 522外部。然而,显示器528、输入装置530、扬声器536、麦克风538、无线天线542和电源 544每一者均耦合到芯片上系统522的一组件。在特定实施例中,数字信号处理器524利用经交错的多线程操作来处理与执行便 携式通信装置520的各种组件所需的功能性和操作所必需的程序线程相关联的指令。举例 来说,当经由无线天线建立无线通信会话时,用户可对着麦克风538说话。可将表示用户的 语音的电子信号发送到CODEC 534以进行编码。数字信号处理器524可为C0DEC534执行数 据处理,以编码来自麦克风的电子信号。此外,可通过无线控制器540将经由无线天线542 接收到的传入信号发送到CODEC 534,以进行解码且将其发送到扬声器536。数字信号处理 器524还可在解码经由无线天线542接收到的信号时为CODEC 534执行数据处理。此外,在无线通信会话之前、期间或之后,数字信号处理器524可处理从输入装置530接收到的输入。举例来说,在无线通信会话期间,用户可能正在使用输入装置530和显示器528,以经由嵌入便携式通信装置520的存储器532内的万维网浏览器在因特网上冲 浪(surf)。数字信号处理器524可使如本文所描述的输入装置530、GPU 526、显示器528、 CODEC 534和无线控制器540所使用的各种程序线程交错,以高效地控制便携式通信装置 520和其中的各种组件的操作。在一个或一个以上时钟周期期间,同时执行与所述各种程序 线程相关联的指令中的许多指令。由此,实质上减少因浪费的时钟周期而导致的功率和能 量消耗。参看图6,展示蜂窝式电话的示范性非限制实施例,且将其概括标明为620。如图 所示,蜂窝式电话620包含芯片上系统622,芯片上系统622包含耦合在一起的数字基带处 理器624和模拟基带处理器626。蜂窝式电话620还包含CPU(未图示)和图形处理单元 (GPU)6280在特定说明性实施例中,CPU可经配置以起始与编译器服务器(例如图1中所 说明且本文中所描述的服务器120)的交互,以接收经编译的代码以供执行。在特定实施 例中,数字基带处理器624为数字信号处理器。如图6中所指示,GPU 628和触摸屏控制器 630耦合到数字基带处理器624。又,在芯片上系统622外部的触摸屏显示器632耦合到 GPU 628和触摸屏控制器630。图6进一步指示视频编码器634 (例如,逐行倒相(PAL)编码器、循序传送彩色与 存储(sequential couleur a memoire,SECAM)编码器,或美国国家电视系统委员会(NTSC) 编码器)耦合到数字基带处理器624。此外,视频放大器636耦合到视频编码器634和触 摸屏显示器632。而且,视频端口 638耦合到视频放大器636。如图6中所描绘,通用串行 总线(USB)控制器640耦合到数字基带处理器624。而且,USB端口 642耦合到USB控制 器640。存储器644和订户识别模块(SIM)卡646也可耦合到数字基带处理器624。此外, 如图6中所示,数字相机648可耦合到数字基带处理器624。在示范性实施例中,数字相机 648为电荷耦合装置(CXD)相机或互补金属氧化物半导体(CMOS)相机。如图6中进一步说明,立体声音频CODEC 650可耦合到模拟基带处理器626。此 夕卜,音频放大器652可耦合到立体声音频CODEC 650。在示范性实施例中,第一立体声扬声 器654和第二立体声扬声器656耦合到音频放大器652。图6展示麦克风放大器658也可 耦合到立体声音频CODEC 650。另外,麦克风660可耦合到麦克风放大器658。在特定实施 例中,调频(FM)无线电调谐器662可耦合到立体声音频CODEC 650。而且,FM天线664耦 合到FM无线电调谐器662。此外,立体声头戴式耳机666可耦合到立体声音频CODEC 650。图6进一步指示射频(RF)收发器668可耦合到模拟基带处理器626。RF开关670 可耦合到RF收发器668和RF天线672。如图6中所示,小键盘674可耦合到模拟基带处 理器626。而且,具有麦克风的单声道头戴耳机676可耦合到模拟基带处理器626。此外, 振动器装置678可耦合到模拟基带处理器626。图6还展示电源680可耦合到芯片上系统 622。在特定实施例中,电源680为直流(DC)电源,其向蜂窝式电话620的需要电力的各个 组件提供电力。此外,在特定实施例中,电源为可再充电DC电池或来源于连接到AC电源的 交流(AC)到DC变换器的DC电源。在特定实施例中,如图6中所描绘,触摸屏显示器632、视频端口 638、USB端口 642、相机648、第一立体声扬声器654、第二立体声扬声器656、麦克风、FM天线664、立体声 头戴式耳机666、RF开关670、RF天线672、小键盘674、单声道头戴耳机676、振动器678和电源680在芯片上系统622的外部。此外,在特定实施例中,数字基带处理器624可使用本 文所描述的经交错的多线程操作,以便处理与同蜂窝式电话620相关联的不同组件中的一 者或一者以上相关联的各种程序线程。在特定实施例中,蜂窝式电话620可经配置以经由网络向编译器服务器起始不同 的编译请求,以针对在装置上运行的应用程序的不同程序组件请求不同的编译。举例来说, 对于被指派为在GPU 628处执行的程序组件的计算任务,可在编译器服务器处选择着色器 编译器。作为另一实例,对于被指派给视频CODEC、编码器或解码器(未图示)的程序组件 的计算任务,可在编译器服务器处选择对应的视频编译器。作为又一实例,对于被指派给音 频CODEC 650的程序组件的计算任务,可在编译器服务器处选择对应的音频编译器。作为 又一实例,对于被指派为在DSP 624处执行的程序组件的计算任务,可在编译器服务器处 选择DSP编译器。经编译的代码可在蜂窝式电话620处被接收,并被分配给一个或一个以 上对应处理单元以供执行。图7为说明执行基于服务器的编译的方法的特定说明性实施例的流程图。参看 图7,基于服务器的编译方法包含在具有多个编译器的服务器处接收代码编译请求(702 处);以及将所述代码编译请求中的信息与存储在服务器处的所述多个编译器的列表进行 比较,以确定服务器是否具有适合编译与所述代码编译请求相关联的源代码的编译器(704 处)。所述方法进一步包含经由网 络将对所述代码编译请求的响应从服务器传送到客户机, 所述响应包含对代码编译请求的接受或拒绝的指示(706处)。前进到决策节点708,当所述响应指示拒绝时,所述方法终止(716处)。返回708, 当所述响应指示代码编译请求的接受时,所述方法继续进行到710,且包含在服务器处接收 待编译的源代码。进行到712,所述方法还包含使用适合编译源代码的选定编译器来编译在 服务器处接收到的源代码以产生经编译的代码。所述方法进一步包含经由网络将经编译的 代码从服务器传送到客户机(714处)。所述方法结束(716处)。图8是说明执行基于服务器的编译的方法的第二特定说明性实施例的流程图。在 802处,所述方法包含在具有多个编译器的服务器处接收一个或一个以上代码编译请求。前 进到804,与服务器相关联的逻辑从所述一个或一个以上代码编译请求中选择一代码编译 请求。继续进行到806,所述逻辑将选定代码编译请求中的信息与存储在服务器处的所述多 个编译器的列表进行比较,以确定服务器是否具有适合编译与所述选定代码编译请求相关 联的源代码的编译器。移到808,所述逻辑经由网络将对选定代码编译请求的响应从服务器 传送到请求客户机,所述响应包含对选定编译请求的接受或拒绝的指示。在决策节点810处,当所述响应指示接受时,所述方法前进到812,且在服务器处 接收待编译的源代码。继续进行到814,所述方法包含使用适合编译所述源代码的选定编译 器来编译在服务器处接收到的源代码以产生经编译的代码。前进到816,所述方法包含经由 网络将经编译的代码从服务器传送到请求客户机。继续进行到决策节点818,如果存在另一 源编译请求,那么所述方法进行到820,且从一个或一个以上代码编译请求选择另一代码编 译请求(即,第二代码编译请求)。所述方法进行到806,且将选定代码编译请求中的信息 与存储在服务器处的多个编译器的列表进行比较,以确定服务器是否具有适合编译与选定 代码编译请求相关联的源代码的编译器。返回到810,如果所述响应指示拒绝,那么所述方法前进到决策节点818,其中所述方法确定是否存在另一源编译请求。如果存在另一源编译请求,那么所述方法进行到 820。在818处,如果不存在其它源编译请求,那么所述方法在822处终止。在特定实施例中,代码编译请求中的信息包含源代码语言名称、源代码语言版本、 处理装置名称、处理装置版本、驱动程序名称、驱动程序版本、操作系统名称、操作系统版本 或其任何组合。代码编译请求中的信息包含可由服务器用来识别特定编译器并从编译器库 选择特定编译器的信息,其中所述选定编译器是合适的且与将客户机上执行的代码匹配。 此信息可包含关于特定处理装置(例如,特定图形处理装置)的信息,其由处理装置的卖主 提供。另外,处理装置的卖主可提供存储在服务器上的编译器,使得服务器可从客户机接收 卖主提供的信息,且可将接收到的信息与编译器库中先前存储的信息进行匹配,以选择适 当的编译器供使用。所述方法可用于来自多个装置的多个客户机,且第一和第二客户机的 使用是出于说明性目的。在特定实施例中,客户机是应用程序、安装程序或装置驱动程序。另外,客户机可 加载或以其它方式安置在包含处理器的客户机装置上。在另一特定实施例中,源代码可包 含着色语言,例如OpenGL着色语言、OpenGL顶点程序、OpenGL片段程序、OpenGLES着色 语言、英伟达Cg编程语言(nVidia Cg programming language)、微软DirectX高级着色 语言或另一着色语言,且被选择以供使用的基于服务器的编译器是着色器编译器。源代码 可包含着色程序,例如可结合游戏应用程序使用的Open GL glFx、微软效应(Microsoft Effect)或英伟达效应CgFX (nVidia Effect CgFX)。服务器处的着色器编译器可用以编译 用于着色程序的源代码,以产生可被传送且接着可在客户机(例如,包含图形处理单元的 目标便携式装置或最终用户计算机)处执行的经编译的代码。在特定实施例中,服务器包含充足的计算能力,且通信接口具有充足的频宽,使得 源代码的编译响应于编译代码请求而在实时或近实时基础上执行。图9是说明客户机所请求的编译的方法的流程图。参看图9,请求基于服务器的 代码编译的方法包含将代码编译请求发送到具有多个编译器的服务器(902处);以及从 服务器接收对所述代码编译请求的响应,所述响应指示代码编译请求的接受或拒绝(904 处)。如果在决策节点906处检测到代码编译请求的拒绝,那么所述方法在916处终止。否 贝U,在决策节点906处,在检测到代码编译请求的接受后,所述方法包含将源代码发送到 服务器(908处);以及在服务器已编译源代码之后,从服务器接收经编译的代码(910处)。 所述方法进一步包含将经编译的代码存储在处理器可读存储器中(912处);以及执行经 编译的代码(914处)。在特定实施例中,经编译的代码可在应用处理单元(例如,GPU)处 执行。在另一实施例中,经编译的代码可在数字信号处理器(DSP)或中央处理单元(CPU) 处执行。所述方法在916处终止。在特定实施例中,源代码为着色器程序代码,且经编译的 代码包含着色器对象代码。所属领域的技术人员将进一步了解,可将结合本文所揭示的实施例而描述的各种 说明性逻辑块、配置、模块、电路和算法步骤实施为电子硬件、计算机软件或两者的组合。为 了清楚地说明硬件与软件的这种可互换性,上文已大体依据各种说明性组件、块、配置、模 块、电路和步骤的功能性描述了各种说明性组件、块、配置、模块、电路和步骤。将此功能性 实施为硬件还是软件取决于特定应用和强加在整个系统上的设计约束。所属领域的技术人 员可针对每一特定应用以不同方式实施所描述的功能性,但此类实施决策不应被解译为导致偏离本发明的范围。结合本文中所揭示的实施例而描述的方法或算法的步骤可直接以硬件、以由处理 器执行的软件模块或以两者的组合来体现。软件模块可驻存在RAM存储器、快闪存储器、 ROM存储器、PROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可装卸盘、CD-ROM或 此项技术中已知的任何其它形式的存储媒体中。示范性存储媒体耦合到处理器,以使得处 理器可从存储媒体读取信息且将信息写入到存储媒体。在替代方案中,存储媒体可与处理 器成一体式。处理器和存储媒体可驻存在ASIC中。ASIC可驻存在计算装置或用户终端中。 在替代方案中,处理器和存储媒体可作为离散组件驻存在计算装置或用户终端中。提供对所揭示实施例的先前描述以使所属领域的任何技术人员能够制作或使用 本发明。对这些实施例的各种修改对于所属领域的技术人员来说将是显而易见的,且本文 中所界定的一般原理可在不脱离本发明的精神或范围的情况下应用于其它实施例。因此, 本发明无意限于本文所示的实施例,而是将被赋予与如由权利要求书界定的原理和新颖特 征一致的最宽范围。
权利要求
一种基于服务器的编译方法,其包括在具有多个编译器的服务器处接收代码编译请求;将所述代码编译请求中的信息与存储在所述服务器处的所述多个编译器的列表进行比较,以确定所述服务器是否具有适合编译与所述代码编译请求相关联的源代码的编译器;经由网络将对所述代码编译请求的响应从所述服务器传送到客户机,所述响应包含对所述代码编译请求的接受或拒绝的指示;当所述响应包含对所述代码编译请求的接受的指示时在所述服务器处接收待编译的源代码;使用适合编译所述源代码的选定编译器来编译所述在所述服务器处接收到的源代码,以产生经编译的代码;且经由所述网络将所述经编译的代码从所述服务器传送到所述客户机。
2.根据权利要求1所述的方法,其中所述信息包含源代码语言名称、源代码语言版本、 处理装置名称、处理装置版本、驱动程序名称、驱动程序版本或其任何组合。
3.根据权利要求1所述的方法,其中所述客户机为应用程序、安装程序或装置驱动程 序中的一者,且其中所述客户机安置在包含处理器的装置上。
4.根据权利要求1所述的方法,其中所述网络为因特网协议网络。
5.根据权利要求1所述的方法,其中所述网络为无线网络,且其中所述服务器安置在 无线基站内。
6.根据权利要求1所述的方法,其中从由以下各项组成的群组中选择所述源代码着 色语言代码、用以翻译为机器可执行代码的中间表示字节代码,以及c语言代码,且其中从 由以下各项组成的群组中选择所述经编译的代码图形处理单元(GPU)可执行代码、数字 信号处理器(DSP)可执行代码,以及CPU可执行代码。
7.根据权利要求1所述的方法,其中所述源代码包含图形程序,且其中所述客户机为 安装程序,其由分配器使用以结合将游戏应用程序安装到包含图形处理单元的目标装置上 而请求对所述图形程序的编译。
8.根据权利要求1所述的方法,其中响应于所述编译代码请求而在实时或近实时基础 上执行所述源代码的所述编译。
9.根据权利要求1所述的方法,其进一步包括在所述服务器处接收来自第二客户机的第二代码编译请求;将所述第二代码编译请求中的信息与存储在所述服务器处的所述多个编译器的所述 列表进行比较,以确定所述服务器是否具有适合编译与所述第二代码编译请求相关联的源 代码的编译器;经由所述网络将对所述第二代码编译请求的第二响应从所述服务器传送到所述第二 客户机,所述第二响应包含对所述第二代码编译请求的接受或拒绝的指示;当所述第二响应包含对所述第二代码编译请求的接受的指示时在所述服务器处接收待编译的第二源代码;使用适合编译所述第二源代码的第二选定编译器来编译所述在所述服务器处接收到 的第二源代码,以产生第二经编译的代码;以及经由所述网络将所述第二经编译的代码从所述服务器传送到所述第二客户机。
10.一种服务器,其包括 到数据通信网络的接口;编译器库,其存储多个不同编译器;以及编译器选择逻辑,其响应所述接口处所接收到的数据,且包含用以基于对所述所接收 到的数据的评估来选择所述多个不同编译器中的一个编译器的逻辑,其中由所述多个不同编译器中的所述选定编译器产生的经编译的输出数据经由所述 数据通信网络被传送到客户机装置。
11.根据权利要求10所述的服务器,其中所述所接收到的数据包括来自客户机装置的 编译请求,所述编译请求包含与所述客户机装置相关联的信息。
12.根据权利要求10所述的服务器,其中所述多个不同编译器中的所述选定编译器接 收源代码数据,且编译所述源代码数据以产生经编译的输出数据。
13.根据权利要求12所述的服务器,其中所述客户机装置包含用以执行所述经编译的 输出数据的图形处理单元。
14.根据权利要求13所述的服务器,其中所述通信网路为无线网络,且其中所述客户 机装置为无线通信装置。
15.一种请求基于服务器的代码编译的方法,所述方法包括 将代码编译请求发送到具有多个编译器的服务器;从所述服务器接收对所述代码编译请求的响应,所述响应指示所述代码编译请求的接 受或拒绝;在检测到所述代码编译请求的接受后,将源代码发送到所述服务器,所述源代码将在 所述服务器处编译;以及在所述服务器已编译所述源代码之后,接收来自所述服务器的经编译的代码。
16.根据权利要求15所述的方法,其进一步包括将所述经编译的代码存储在处理器可 读存储器中。
17.根据权利要求16所述的方法,其进一步包括在图形处理装置处执行所述经编译的 代码,其中所述源代码包括着色器程序代码,且其中所述经编译的代码包括着色器对象代码。
18.一种计算装置,其包括 处理器;可由所述处理器存取的存储器;以及 通信接口,其经配置以将代码编译请求发送到具有多个编译器的服务器;从所述服务器接收对所述代码编译请求的响应,所述响应指示所述代码编译请求的接 受或拒绝;将源代码发送到所述服务器,所述源代码将在所述服务器处编译;且 接收来自所述服务器的经编译的代码。
19.根据权利要求18所述的计算装置,其中从所述服务器接收到的所述经编译的代码 存储在所述存储器中,且由所述处理器执行。
20.根据权利要求18所述的计算装置,其中所述存储器包含应用程序,且包含装置驱 动程序。
21.根据权利要求20所述的计算装置,其中所述应用程序包含用以起始经由所述通信 接口将所述代码编译请求发送到所述服务器的逻辑。
22.根据权利要求21所述的计算装置,其中所述处理器为图形处理单元、视频处理单 元、数字信号处理器或相机图像处理单元中的一者,且其中与所述处理器相关联且存储在 所述服务器处的编译器由所述处理器的卖主提供。
23.根据权利要求18所述的计算装置,其进一步包括存储在所述存储器中的文件系统。
24.根据权利要求18所述的计算装置,其进一步包括响应所述处理器以显示图形和数 据的显示装置。
25.根据权利要求18所述的计算装置,其进一步包括 麦克风,其耦合到所述处理器且适合于接收音频输入;以及 扬声器,其耦合到所述处理器且适合于产生音频输出。
全文摘要
本发明揭示一种服务器,其包含到数据通信网络的接口、存储多个不同编译器的编译器库,以及响应所述接口处所接收到的数据且包含逻辑的编译器选择逻辑。所述编译器选择逻辑经配置以基于对所述所接收到的数据的评估来选择所述多个不同编译器中的一个编译器。所述选定编译器产生经编译的输出数据,且所述经编译的输出数据经由所述数据通信网络被传送到客户机。
文档编号G06F9/45GK101836188SQ200880113180
公开日2010年9月15日 申请日期2008年10月24日 优先权日2007年10月26日
发明者于春, 杜云, 焦国方, 陈令军 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1