首页> 中国专利> 使用部分重配置对现场可编程门阵列进行编程的改进的过程

使用部分重配置对现场可编程门阵列进行编程的改进的过程

摘要

对现场可编程门阵列(FPGA)数字电子集成电路(IC)或支持部分重配置的其他IC即具有可重配置分区和可在每个可重配置分区中配置的原语变体的特定FPGA进行编程包括:在将配置比特流写入FPGA之前,编译和存储用于可在该特定FPGA上实现的不同原语函数的原语比特流;在图形用户界面中接收输入,以连接表示要在该特定FPGA上实现的算法的功能逻辑的图形块,该图形块与可重配置逻辑有关;自动确定原语函数的包括与该图形块相对应的特定原语函数的子集;从数字存储装置获取原语比特流的与原始函数的该子集相对应的子集;使用部分重配置操作,将原语比特流的该子集写入该特定FPGA。

著录项

说明书

技术领域

本公开的一个技术领域是现场可编程门阵列(FPGA)集成电路(IC)和其他类型的可编程IC的编程。另一个技术领域是FPGA编程领域的部分重配置(PR)。

背景技术

本节中描述的方法是可能执行的方法,但不一定是先前已经设想或执行的方法。因此,除非另有说明,否则不应将本节中描述的任何方法仅因为其包括在本节中就将其视为现有技术。

现场可编程门阵列(FPGA)集成电路是具有可配置逻辑块(CLB)矩阵的半导体器件,其中的CLB可被配置为产生不同的复杂数字电路。CLB经由跨越FPGA区域的可编程互连器而连接。FPGA还可包括随机存取存储器、数字信号处理器(DSP)片或其他逻辑元件。CLB可被配置为产生逻辑运算诸如AND和XOR,然后与FPGA上的其他逻辑元件串联和/或并联耦接,以产生指定的数字电路。

FPGA配置使用诸如Verilog或VHDL的硬件描述语言(HDL)来描述。使用专用软件来编译用HDL编写的程序,以生成包含用于特定目标FPGA的配置信息的比特流。VIVADO是一种示例性集成设计环境,可用于编写和编译HDL设计以生成用于Xilinx FPGA的比特流。

FPGA已被证明具有实现高速DSP或高度并行DSP算法的强大功能。FPGA可例如从Xilinx,Inc.商购获得。FPGA使得创建可重配置的数字电子产品成为可能。一个示例是由Liquid Instruments Pty Ltd开发的Moku:Lab。但是,目前用于对FPGA进行编程的技术存在若干缺点。

对FPGA进行编程通常需要专门的知识,这些知识可能需要很长时间才能掌握。编译工具常常只能从FPGA的制造商或供应商获得,并且具有这些芯片特有的接口。用户必须花时间安装和学习这些工具。开发时间可能很长,具体取决于复杂性。此外,编译所完成的程序(包括进行设计更改或整个开发)的时间可能在几分钟到几小时之间,具体取决于复杂性。如今的开发人员所面对的是对FPGA程序的相对简单的更改,他们不希望在加载到FPGA之前等待数小时才能重新编译和递送整个比特流。

基于这些问题,需要改进的FPGA编程技术,并且长期以来都存在尚未满足的对能够大幅缩短FPGA程序编译时间的方法的特殊需求。

发明内容

所附权利要求可以用作本发明的概述。

附图说明

在附图中:

图1示出了可用于实现示例的示例性分布式计算机系统。

图2示出了根据实施方案的示例性计算实施方案。

图3A示出了利用部分重配置的FPGA的示例性系统架构。

图3B示出了复杂DSP算法的示例,该复杂DSP算法可使用IDE的GUI来设计以选择表示信号处理电路的功能块并以图形方式连接这些功能块。

图3C示出了在图3A的架构内实现图3B的示例。

图3D示出了前述架构的一种变型,其中低级PR模块是次要特征。

图4示出了另一种架构变型,其中将仪器分为两类:测量或监视仪器,以及信号生成或控制器仪器。

图5是示出了可用来实现实施方案的示例性计算机系统的方块图。

具体实施方式

在下面的描述中,出于说明的目的,阐述了许多具体细节以便提供对本发明的透彻理解。然而,显而易见的是,可在没有这些具体细节的情况下实践本发明。在其他情况下,以方块图形式示出了公知的结构和设备,以避免不必要地使本发明晦涩难懂。根据以下概要在各节中描述了实施方案:

1.基础技术

2.实施方案总体概述

3.实施方案的结构和功能示例

4.具体实施示例-硬件概述

1.基础技术

通常可使用方块图来象征性地描述DSP算法。几种商用系统允许使用方块图图形用户界面(GUI)来设计用于数字集成电路(IC)(例如FPGA或其他器件)的算法。Simulink和LabVIEW是提供方块图环境的工具的商业示例,这些方块图环境能够促进针对FPGA和其他目标平台的基于软件的数字系统的设计、验证和实现。这些系统消除了对目标平台进行编程的一些复杂性,但仍需要较长的编译时间,并可能导致较长的开发时间。

GNUradio是一种工具示例,其提供了将各个功能块拖放到一起并在连接到GNUradio兼容硬件的主机处理器上观察其交互的环境。使用该系统,设计人员无需生成用于部署到外部处理系统的源代码。但是,GNUradio不适合基于硬件的高带宽应用。

利用部分重配置(PR),FPGA编程电路可分为多个区域,这些区域可单独编译,产生区域比特流作为结果。可将每个区域比特流分别加载到现有的FPGA中,使得现有区域比特流有效地被换成新的比特流。现代FPGA可支持数百个单独的区域,每个区域都能够独立配置。

部分重配置(PR)是一种FPGA配置技术,它允许动态更改活动设计中的功能模块,而FPGA的其余部分继续运行。PR可用于在FPGA运行时期间的不同时间更改硬件模块,从而允许大型或复杂的设计适合较小的FPGA。一个示例是软件定义的无线电,其中在运行时交换不同的调制和解调协议。PR例如在Xilinx ZYNQ系列FPGA上可用。

使用PR,电路设计被分为可重配置逻辑和不可重配置逻辑。术语“静态逻辑”用于FPGA上所有不可重配置的逻辑元件,而术语“可重配置逻辑”指可重配置的逻辑元件。可重配置模块(RM)(或“模块”)是可放置在可重配置分区(RP)(或“分区”)内的逻辑的HDL描述。每个RP是FPGA上专门在该分区内使用的逻辑元件的物理集合。可重配置帧(RF)表示可被定义为RP的最小可重配区域。多个RF可被包括在单个RP中并且被包封在该RP中。部分比特流是生成的文件,其中包含有关RM的配置细节和配置位置的信息。

当设计被分为静态逻辑和可重配置逻辑之后,可重配置逻辑将分为RP区段,并且标识用于每个分区的所有RM。每个比特流包括配置数据和位置数据。因此,将为所有RP位置中的所有模块生成单独的单个比特流。因此,如果在两个不同的RP中需要相同的功能模块,则需要两个比特流。模块和分区存在与本公开无关但可能影响特定电路的具体实施的其他约束;这些约束在其他出版物中有详细记录。

2.实施方案总体概述

在一个实施方案中,公开了一种方法,该方法提供支持部分重配置的数字电子集成电路(IC)的配置速度和效率的改进,该IC即具有多个可重配置分区和可在每个可重配置分区中配置的多个原语变体的特定IC,并且当使用一个或多个处理器执行该方法时,该方法使得该一个或多个处理器执行以下操作:在将配置比特流写入该特定IC之前,使用数字存储装置来编译和存储用于可写入该特定IC并在其上实现的多个不同原语函数的多个原语比特流;接收输入,该输入用于指定使用可重配置逻辑在该特定IC上实现的算法的功能逻辑;自动确定这些原语函数的包括与这些功能逻辑相对应的特定原语函数的子集;从数字存储装置获取这些原语比特流的与这些原语函数的该子集相对应的子集;使用一个或多个部分重配置操作,将这些原语比特流的该子集写入该特定IC;其中该方法由一个或多个计算设备执行。

在另一个实施方案中,公开了一种方法,该方法提供支持部分重配置的现场可编程门阵列(FPGA)数字电子集成电路的编程速度和效率的改进,该FPGA数字电子集成电路即具有多个可重配置分区和可在每个可重配置分区中配置的多个原语变体的特定FPGA,该方法包括:在将配置比特流写入该特定FPGA之前,使用数字存储装置来编译和存储用于可写入该特定FPGA并在其上实现的多个不同原语函数的多个原语比特流;接收输入,该输入用于指定部分使用可重配置逻辑在该特定FPGA上实现的算法的功能逻辑;自动确定这些原语函数的包括与这些图形块相对应的特定原语函数的子集;从数字存储装置获取这些原语比特流的与这些原语函数的该子集相对应的子集;使用一个或多个部分重配置操作,将这些原语比特流的该子集写入该特定FPGA;其中该方法由一个或多个计算设备执行。

实施方案假定可使用以M个块区域的矩阵连接的N个离散块类型来描述用于FPGA算法的所有方块图。尽管专门描述了与FPGA一起使用的特定实施方案,但是本公开的方法可更普遍地应用于其他可编程集成电路,并且不需要使用FPGA。

一种方法可能是将用于所有可能的方块图连接的比特流提前编译,然后基于用户的方块图进行选择。涉及N^M个完整比特流的存储和编译。当M和/或N增大到超出小值时,此方法的存储和编译时间将变得不可行。存储和编译时间随着M或N的增大而呈指数或多项式增加。每个部分比特流的大小约为100kB,编译大约需要5分钟,具体取决于复杂性。如果M=N=100,则需要大约5*100^100分钟的编译时间和100^98GB的存储空间。

在实施方案中,采用部分重配置(PR)技术,其中将M个区域中的每个定义为部分可重配置,并且针对每个M个区域,提前编译用于N个块类型中的每个的单个部分比特流。在该语境中,“提前”是指在最终用户计算机用于使用图形工具或非图形工具设计算法之前;当该设计过程开始时,用户可以使用许多比特流的预编译库,这些比特流对应于可被配置为实现算法的可用的N个块类型。因此,仅需要编译和存储M*N个比特流。如果M=N=100,则只需要50,000分钟的编译时间和1GB的存储空间。该方法在一定程度上依赖于用户算法或应用将需要的特定功能的预测,并预先计算用于这些功能的比特流。

在一些实施方案中,提前编译用于少于全部N个块类型的单个部分比特流,并且在设计时和/或刚好在部署之前编译用于将算法完全部署到目标平台所需的其他块类型的比特流。在一些实施方案中,基于当前用户或其他用户过去使用的块类型的流行度来选择少于N个块类型的子集进行预编译,因此该子集包含最有可能在特定设计中被选择的块类型。例如,可对编译代理122进行编程,以检测IDE 120中特定块类型的用户选择,并将用户选择的报告传输到编译服务器进程132,以单独存储或与采用类似方式从该编译代理的在不相关用户的不同主机计算机上运行的其他实例接收的数据组合存储。以这种方式,块类型的实际选择的众包报告可能会影响在服务器侧预编译哪些块类型。或者,用户输入和/或配置数据可指定预编译哪些块类型以及在设计或部署时编译哪些块类型。该方法可以允许用户在具有所存储的预编译比特流的库的省时和效率益处与预先进行编译的计算负担之间取得平衡。根据整个公开内容和所附权利要求书,其他实施方案、方面和特征将变得显而易见。

3.实施方案的结构和功能示例

图1示出了可用于实现示例的示例性分布式计算机系统。在对附图的讨论中,术语“原语”是指用于DSP或FPGA 110的其他应用的被编译成单个部分比特流的逻辑分组。

在一个实施方案中,客户端计算设备102直接或间接地经由一个或多个网络104通信地耦接到服务器106。

客户端计算设备102可包括台式计算机、膝上型计算机、移动计算设备、工作站或能够与FPGA 110连接的其他计算设备,该客户端计算设备将被编程以实现用户的算法。在一个实施方案中,客户端计算设备102还与外围电子设备112连接,该外围电子设备在各种实施方案中可包括处理器开发板、模数转换器、数模转换器、网络连接、电源转换器或其他设备中的一者或多者。

客户端计算设备102托管或执行集成开发环境(IDE)120,该集成开发环境是被布置为支持FPGA程序114的创建、管理和编译的应用程序。在一些实施方案中,IDE 120生成图形用户界面并允许与该图形用户界面进行用户交互,该图形用户界面通过连接表示计算功能的图形块、图标或小部件来允许对DSP算法进行编程。

在一个实施方案中,使用客户端计算设备102来托管或执行编译代理122,该编译代理与IDE 120集成在一起或作为单独的程序,并且被编程或配置为与服务器106处的兼容编译服务器进程132互操作,如进一步描述的。在一个实施方案中,编译代理122被编程为确定从服务器106获取哪些比特流原语以及将这些比特流原语放置在FPGA 110内的何处。使用这些元件,客户端计算设备102可生成或获取一组已编译的比特流124,这些比特流被写入FPGA 110以完成对该FPGA的编程。在一些实施方案中,IDE120和编译代理122被配置或编程为执行服务器106与联网数据存储装置140之间的通信或消息传送协议,这些协议包含或控制已编译的比特流原语142的分发,如在其他部分中进一步描述的;运行软件和固件以控制客户端任务;以及并存储已编译的比特流124以用于要在FPGA 110中编程的原语。根据原语的数量和/或存储要求,可由服务器106使用存储装置140来共享或完全执行已编译的比特流124的存储。

FPGA 110支持PR。在一个实施方案中,FPGA 110是非常大的单元,它具有多个区域,每个区域包含足以满足编程算法可能需要的最耗费资源的配置的多个处理元件。预计会有大量资源分布在许多离散区域。尽管一个实施方案可在用户不太关心空间大小的较大FPGA中最佳地执行,但是无论设备大小如何,本文所述的方法都可用,并且不需要大型FPGA或其他大型平台。

网络104广义上代表使用地面链路、卫星链路、有线链路或无线链路中的任何者的局域网、广域网、网际网络或互联网的任何组合。客户端计算设备102和服务器106各自托管通向网络104的接口,这些接口与网络104上承载的传输、会话和应用流量的协议兼容。如果客户端计算设备102和服务器106可使用数字电子消息和异步、无状态或有状态协议进行通信以交换请求、响应和数据有效载荷,则在网络104上使用的特定协议不是关键性的。

在一个实施方案中,服务器106包括台式计算机、机架式计算机或公共或私有云计算中心中的一个或多个虚拟计算实例中的任一者。服务器106可包括在服务器计算机或群集上与其他进程、服务器或应用程序一起执行的进程。可使用诸如使用DOCKER或KUBERNETES容器化的操作系统虚拟化来实现服务器106。服务器106包括存储器140或被编程为访问该存储器,该存储器可包括基于云的数字数据存储装置或其他联网的数据存储装置。

在一个实施方案中,服务器106存储用于FPGA原语函数的源代码130,FPGA原语函数在本文的其他部分中进一步描述。服务器106还托管或执行编译服务器进程132,该进程被配置或编程为将源代码130编译为比特流原语,该比特流原语存储在如由已编译的比特流142所指示的存储装置140中。值得注意的是,在实施方案中,可在由客户端计算设备102进行任何编程活动之前,对可在FPGA 110的可重配置分区中使用的所有函数原语的源代码130进行编译,并将该源代码存储在存储装置140中,以等待对来自客户端计算设备的比特流的请求。编译服务器进程132可使用预先从FPGA 110的供应商获取的或者以其他方式与FPGA 110兼容的程序、库或函数。

原语的比特流142可实现大量不同的实质信号处理功能中的任何一个。可在各种实施方案中使用的原语的示例包括:信号加法器;信号乘法器;信号混合器;数字滤波器;振荡器;积分器;三角运算;快速傅立叶变换;PID控制器;锁相环;积分器;微分器;正弦波发生器;直接数字合成器;直接I型(单阶块)无限冲激响应滤波器;直流增益。

在图1的示例中,服务器106被编程或配置用于使用存储装置140来存储原语的已编译的比特流142。根据原语的数量和/或存储要求,该任务可由客户端计算设备102执行完全共享。响应于来自客户端计算设备102的请求,编译服务器进程132还被编程或配置用于获取已编译的比特流142并将其传输到客户端计算设备102,如进一步描述的。

已经描述了一个实施方案,其中某些操作发生在客户端计算设备102中,通过网络104与服务器106进行通信,并且其中存储装置140与服务器相关联地被管理。然而,其他实施方案可在单个主机计算机或虚拟计算实例中完全实现,并且不需要客户端-服务器架构。此外,存储装置140可位于主机计算机上,或者可以与虚拟计算实例相关联,并且不需要将预编译的比特流的数字存储与客户端计算设备102或任何其他用于设计算法的计算机分开。例如,单个主机计算机或虚拟计算实例(诸如客户端计算设备102)可托管图1所示的所有功能元件和数据存储设备作为集成系统。或者,可使用图1的架构,但是可将一组预编译比特流作为用于客户端计算设备处的本地存储的包或单元从服务器106递送到客户端计算设备102。在一个实施方案中,使用安装程序进程来执行预编译比特流的包的递送,该安装程序进程使用客户端计算设备处的客户端软件和/或在客户端计算设备的浏览器中运行的浏览器可执行代码的任意组合来执行。

图2示出了根据实施方案的示例性计算机实现的过程。图2涉及由客户端计算设备102和服务器106在不同时间执行的功能步骤。

在一个实施方案中,在方块202处,服务器或服务器计算机针对指定的目标平台预编译所有可能的原语组合。在方块204处,该过程将已编译的比特流原语存储在网络存储装置上。

例如,服务器106使用编译服务器进程将原语的源代码130预编译为已编译的比特流142,该已编译的比特流使用存储装置140来存储。在不同实施方案中,源代码130中表示的原语的数量可以变化。例如,可在配置数据中将指定的FPGA定义为支持“100”个分区。对于每个分区,可提供N个不同的变体来接收预编译的比特流。特定区域的比特流集合不一定能够与其他任何区域的比特流集合互换。因此,FPGA的区域“01”可支持从20个不同比特流的第一特定集合中选择的第一比特流,并且同一FPGA的区域“64”可支持从20个其他比特流的第二不同的特定集合中选择的第二比特流。

在一个实施方案中,管理动作或配置数据可指定对与目标FPGA的分区相关联的变体的变更。例如,如果修改分区“64”以将锁相环功能块添加到该分区中的一个变体,该分区先前没有与其相关联的PLL块或在其变体之一中不具有PLL块,则分区“64”的所有比特流将需要使用服务器106重新编译。但是,与分区关联的每个功能块可包含几组不相关的逻辑指令,从而提高灵活性。例如,与分区“64”相关联的20个变体中的一个特定变体可定义用于PLL和用于加法器的逻辑。在一些实施方案中,任何两组或更多组逻辑可在与分区的变体相关联的功能块中。这种安排可能会受到FPGA中可用的总计算能力的约束。

异步地,在方块206处,在客户端计算设备处使用图形用户界面来对算法或程序进行定义或编程。例如,可定义DSP算法。定义DSP算法可包括:接收指定拖动、放置、连接图形块的用户输入,这些图形块在IDE120的GUI界面中象征性地定义DSP算法的操作。

在一些实施方案中,方块206可包括接收一个或多个参数值以改变特定功能块的配置。示例包括寄存器级参数值或指定将输入或输出重定向到指定的寄存器或其他输出位置。

在方块208处,使用客户端计算设备102将算法分段或分组为对应的原语。方块208可涉及确定FPGA 110的哪些可用RP和变体将接收哪些特定的预编译原语比特流142,以导致在FPGA上实现该算法。

方块208还可包括确定该算法的功能块(如在使用IDE 120的GUI中所指定的)与已经在服务器处预编译的可用原语的关联。在一些实施方案中,可基于指定GUI中表示的功能块如何对应于服务器106处的特定原语和/或比特流的映射表、配置文件或其他数据来自动执行方块208。另选地,IDE 120可自然地或在编译代理122的控制下提供GUI小部件,这些GUI小部件被编程为接受输入以选择GUI中的功能块并指定用于实现该功能块的特定原语。

此时,客户端计算设备102已确定在FPGA上实现该算法所需的和可交换为FPGA上的RP和RP变体的所有预编译比特流142的标识符。

在方块210处,客户端计算设备102将请求传输到服务器106以获取用于指定的原语的比特流。可传输一个或多个请求。该一个或多个请求共同指定在FPGA上实现该算法所需的和可交换为FPGA上的RP和RP变体的所有预编译比特流142。

在方块212处,在服务器106处从存储装置140或其他联网存储装置获取与DSP算法的区域和组相对应的比特流原语,并通过网络104在响应中将副本返回给客户端计算设备102。已编译的比特流142在它们被接收之后可采用已编译比特流124的形式存储在客户端计算设备102处。

在方块214处,将所获取的比特流部署到FPGA。编译代理122与IDE120协作,可导致将所接收的已编译比特流124写入FPGA 110的指定的FP和变体。在方块214完成之后,已经利用使用IDE 120的GUI设计的并且使用与该设计相关联的原语的预编译比特流142来实现的所有可重配置的逻辑对FPGA进行了编程。这些步骤比常规方法要快得多,在常规方法中,此时需要编译比特流才能将算法部署到IC。

图3A示出了利用部分重配置的FPGA的示例性系统架构。在一个实施方案中,两个输入“输入1”、“输入2”间接耦接到两组三(3)行,每行具有五(5)个顺序连接的DSP块PR区域,表示为“1.1”至“6.5”。多个互连器302允许行之间的任意连接。互连器302可在不同实施方案中采用不同方式实现。示例包括大型多路复用网络、高速AXI数据总线,或作为具有针对不同连接的变体的PR区域。

每个DSP PR区域1.1到6.5是相同的,并且可被配置作为N个变体之一,每个变体使用预编译比特流142中的不同比特流原语进行描述。每个变体的接口都是相同的,包括输入“输入1”、“输入2”和输出“输出1”、“输出2”以及与配置AXI总线304的连接。每个变体包含用于不同目的的逻辑,以及用于选择将哪些信号传递到每个输出的输出多路复用。

尽管某些实施方案已经提到使用多达20个变体和约20个逻辑功能块,但是其他实施方案可使用其他数量的这些元件,具体地讲对于可被定义用于特定变体的不同种类的逻辑的数量没有限制。可在PR区域配置的各种实施方案中使用的可能的功能块的示例包括:信号加法器;信号乘法器;信号混合器;数字滤波器;振荡器;积分器;三角运算;快速傅立叶变换;PID控制器;锁相环;积分器;微分器;正弦波发生器;直接数字合成器;直接I型(单阶块)无限冲激响应滤波器;直流增益;零值。此外,复杂的功能块可能会导致比特流在FPGA区域的两个或更多个变体之间划分。

图3B示出了复杂DSP算法的示例,该复杂DSP算法可使用IDE的GUI来设计以选择表示信号处理电路的功能块并以图形方式连接这些功能块。图3B包括用于频率调制控制系统的方块图,并且将看到,信号处理功能可包括正弦波发生器、解调、控制器、扫描器和IIR。在虚线内分组的块310、312是可被分组为单个比特流原语的元件的示例。

图3C示出了在图3A的架构内实现图3B的示例。在图3C中,图3B的功能块已经被分配给图3A的架构的特定RP或区域,并且在图3C中被适当地标记以表示这些关联。例如,图3A的区域1.1被分配给正弦波发生器逻辑,区域1.2被分配给解调器,依此类推。与互连器302和总线304相关地选择区域实现了在特定芯片排列中实现图3B的逻辑。

图3D示出了前述架构的一种变型,其中低级PR模块是次要特征。在该示例中,方框N.1、N.2、N.X表示较大的PR区域,这些PR区域可被配置作为现有仪器(例如Moku:Lab上可用的仪器)的单通道版本。通过这种安排,用户可使用单个硬件单元创建高度复杂的系统。低级PR模块1.1、1.2、1.3至6.3对于进一步定制以满足特定用例或用户要求仍然有用。因此,该架构示出了将具有专用于复杂功能的较大PR区域的FPGA与可使用预编译比特流142重配置以交换芯片上其他功能的低级模块集成的可能性,而不干扰较大区域的使用和芯片的主要功能。

图4示出了另一种架构变型,其中将仪器分为两类:测量或监视仪器,以及信号生成或控制器仪器。PR区域402、404、406特定于信号生成或控制器仪器,并且PR区域408特定于测量或监视仪器。使用这种安排,Moku:Lab系统可保持相同的功能并具有更大的灵活性。此外,如果为信号生成或控制器仪器分配了两(2)个变体,则FPGA中所需的资源将不会明显比本文撰写时可用的Moku:Lab器件高。

实施方案提供了优于先前实践的许多益处。一个关键的益处是,从用户的角度来看,完全消除了编译时间。客户端计算设备102可获取用于对FPGA进行编程所需的每个功能块的比特流的预编译版本,而无需在FPGA块的本地编译中涉及长时延。此外,完成编译所需的所有工具都预先安装在服务器计算机106上并进行管理,并作为服务提供给客户端计算设备102。因此,客户端计算设备102的用户不需要安装或学习特定于芯片或特定于供应商的编译工具。

4.具体实施示例-硬件概述

根据一个实施方案,本文所述的技术由至少一个计算设备实现。可使用至少一个服务器计算机和/或使用诸如分组数据网络的网络耦接的其他计算设备的组合来全部或部分地实施这些技术。这些计算设备可包括至少一个通用硬件处理器,该通用硬件处理器被编程为按照固件、存储器、其他存储装置或组合中的程序指令来执行技术。此类计算设备还可将定制的硬连线逻辑、ASIC或FPGA与定制的编程相结合来实现所述的技术。这些计算设备可以是服务器计算机、工作站、个人计算机、便携式计算机系统、手持设备、移动计算设备、可穿戴设备、身体安装或可植入设备、智能手机、智能电器、网际互连设备、自主或半自主设备(诸如机器人或无人驾驶的地面或空中载具)、结合硬连线和/或程序逻辑以实现所述技术的任何其他电子设备、数据中心中的一个或多个虚拟计算机器或实例,和/或服务器计算机和/或个人计算机的网络。

图5是示出了可用来实现实施方案的示例性计算机系统的方块图。在图5的示例中,计算机系统500和用于以硬件、软件或硬件和软件的组合来实现所公开的技术的指令被示意性地表示为例如方框和圆,它们采用本公开所属领域的普通技术人员通常用来就计算机架构和计算机系统具体实施进行沟通的相同的细节层次。

计算机系统500包括输入/输出(I/O)子系统502,该子系统I/O可包括总线和/或其他通信机制以用于通过电子信号路径在计算机系统500的部件之间传递信息和/或指令。I/O子系统502可包括I/O控制器、存储器控制器和至少一个I/O端口。电子信号路径在附图中示意性地表示为例如直线、单向箭头或双向箭头。

至少一个硬件处理器504耦接到I/O子系统502,以用于处理信息和指令。硬件处理器504可包括例如通用微处理器或微控制器和/或专用微处理器,诸如嵌入式系统或图形处理单元(GPU)或数字信号处理器或ARM处理器。处理器504可包括集成算术逻辑单元(ALU),或者可耦接到单独的ALU。

计算机系统500包括存储器506的一个或多个单元,诸如主存储器,其耦接到I/O子系统502,用于以电子方式数字存储数据和要由处理器504执行的指令。存储器506可包括易失性存储器,诸如各种形式的随机存取存储器(RAM)或其他动态存储设备。存储器506还可用于在要由处理器504执行的指令的执行期间存储临时变量或其他中间信息。当这些指令被存储在处理器504可访问的非暂态计算机可读存储介质中时,它们可使计算机系统500成为被定制为执行这些指令中指定的操作的专用机器。

计算机系统500还包括非易失性存储器,诸如耦接到I/O子系统502的只读存储器(ROM)508或其他静态存储设备,用于存储关于处理器504的信息和指令。ROM 508可包括各种形式的可编程ROM(PROM),诸如可擦除PROM(EPROM)或电可擦除PROM(EEPROM)。永久性存储装置510的单元可包括各种形式的非易失性RAM(NVRAM),诸如闪存存储器,或固态存储器、磁盘或光盘诸如CD-ROM或DVD-ROM,并且可耦接到I/O子系统502以用于存储信息和指令。存储器510是可用于存储指令和数据的非暂态计算机可读介质的示例,这些指令和数据在由处理器504执行时,使得执行计算机实现的方法来执行本文的技术。

存储器506、ROM 508或存储装置510中的指令可包括一组或多组指令,这些指令被组织为模块、方法、对象、函数、例程或调用。这些指令可被组织为一个或多个计算机程序、操作系统服务或应用程序,包括移动应用程序。这些指令可包括操作系统和/或系统软件;用于支持多媒体、编程或其他功能的一个或多个库;用于实现TCP/IP、HTTP或其他通信协议的数据协议指令或堆栈;用于解析或呈现使用HTML、XML、JPEG、MPEG或PNG编码的文件的文件格式处理指令;用于呈现或解释图形用户界面(GUI)、命令行界面或文本用户界面的命令的用户界面指令;应用软件,诸如办公套件、互联网接入应用程序、设计和制造应用程序、图形应用程序、音频应用程序、软件工程应用程序、教育应用程序、游戏或其他应用程序。这些指令可实现web服务器、web应用服务器或web客户端。这些指令可被组织为表示层、应用层和数据存储层,诸如使用结构化查询语言(SQL)或不使用SQL的关系数据库系统、对象存储库、图形数据库、平面文件系统或其他数据存储装置。

计算机系统500可经由I/O子系统502耦接到至少一个输出设备512。在一实施方案中,输出设备512是数字计算机显示器。可在各种实施方案中使用的显示器的示例包括触摸屏显示器或发光二极管(LED)显示器或液晶显示器(LCD)或电子纸显示器。作为显示设备的替代或补充,计算机系统500可包括其他类型的输出设备512。其他输出设备512的示例包括打印机、票证打印机、绘图仪、投影仪、声卡或显卡、扬声器、蜂鸣器或压电设备或其他可听设备、灯或LED或LCD指示器、触觉设备、致动器或伺服器。

至少一个输入设备514耦接到I/O子系统502,用于将信号、数据、命令选择或手势传送给处理器504。输入设备514的示例包括触摸屏、麦克风、静止图像和视频数字相机、字母数字键和其他键、小键盘、键盘、绘图板、图像扫描仪、操纵杆、时钟、开关、按钮、拨盘、滑块和/或各种类型的传感器(诸如力传感器、运动传感器、热传感器、加速度计、陀螺仪和惯性测量单元(IMU)传感器)和/或各种类型的收发器(诸如无线收发器,诸如蜂窝或Wi-Fi、射频(RF)或红外(IR)收发器和全球定位系统(GPS)收发器)。

另一种类型的输入设备是控制设备516,该控制设备可执行光标控制或其他自动控制功能,诸如在显示屏上的图形界面中导航,来作为输入功能的替代或补充。控制设备516可以是触控板、鼠标、轨迹球或光标方向键,用于将方向信息和命令选择传达给处理器504和用于控制显示器512上的光标移动。输入设备可在两个轴(第一轴(例如,x轴)和第二轴(例如,y轴))上具有至少两个自由度,这允许该设备指定平面中的位置。另一类型的输入设备是有线、无线或光学控制设备,诸如操纵杆、手柄、控制台、方向盘、踏板、变速机构或其他类型的控制设备。输入设备514可包括多个不同的输入设备诸如视频相机和深度传感器的组合。

在另一个实施方案中,计算机系统500可包括物联网(IoT)设备,其中省略了输出设备512、输入设备514和控制设备516中的一者或多者。或者,在这样的实施方案中,输入设备514可包括一个或多个相机、运动检测器、温度计、麦克风、地震检测器、其他传感器或检测器、测量设备或编码器,并且输出设备512可包括专用显示器,诸如单线LED或LCD显示屏、一个或多个指示器、显示面板、仪表、阀门、螺线管、致动器或伺服器。

当计算机系统500是移动计算设备时,输入设备514可包括耦接到GPS模块的全球定位系统(GPS)接收器,该GPS模块能够对多个GPS卫星进行三角测量,确定并生成地理位置或位置数据,诸如计算机系统500的地球物理位置的纬度-经度值。输出设备512可包括用于单独生成或与其他特定于应用的数据组合地生成位置报告包、通知、脉冲或心跳信号或指定计算机系统500的位置的其他重复数据传输(指向主机524或服务器530)的硬件、软件、固件和接口。

计算机系统500可使用定制的硬连线逻辑、至少一个ASIC或FPGA、固件和/或程序指令或逻辑来实现本文所述的技术,当与计算机系统结合地被加载和使用或执行时,这些指令或逻辑引起或对该计算机系统进行编程以作为专用机器运行。根据一个实施方案,本文的技术由计算机系统500响应于处理器504执行包含在主存储器506中的至少一条指令的至少一个序列而执行。可从另一个存储介质诸如存储装置510将此类指令读入主存储器506。包含在主存储器506中的指令序列的执行使得处理器504执行本文所述的过程步骤。在另选的实施方案中,可使用硬连线电路代替软件指令或与软件指令结合使用。

如本文所用,术语“存储介质”是指存储使机器以特定方式运行的数据和/或指令的任何非暂态介质。这样的存储介质可包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储装置510。易失性介质包括动态存储器,诸如存储器506。存储介质的常见形式包括例如硬盘、固态驱动器、闪存驱动器、磁数据存储介质、任何光学或物理数据存储介质、存储芯片等。

存储介质与传输介质不同,但可与传输介质结合使用。传输介质参与存储介质之间的信息传输。例如,传输介质包括同轴电缆、铜线和光纤,包括构成I/O子系统502的总线的线。传输介质也可采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的声波或光波。

在将至少一条指令的至少一个序列传送给处理器504以供执行时,可涉及各种形式的介质。例如,这些指令最初可承载在远程计算机的磁盘或固态驱动器上。该远程计算机可将这些指令加载到其动态存储器中,并使用调制解调器通过通信链路(诸如光纤或同轴电缆或电话线)发送这些指令。计算机系统500本地的调制解调器或路由器可在该通信链路上接收数据,并将数据转换为可由计算机系统500读取的格式。例如,诸如射频天线或红外检测器的接收器可接收无线或光信号中携带的数据,并且适当的电路可将该数据提供给I/O子系统502,诸如将该数据放置在总线上,I/O子系统502通过该总线将数据传送到存储器506,处理器504从该存储器中检索并执行这些指令。由存储器506接收的指令可任选地在由处理器504执行之前或之后被存储在存储装置510上。

计算机系统500还包括耦接到总线502的通信接口518。通信接口518提供耦接到网络链路520的双向数据通信,该网络链路直接或间接连接到至少一个通信网络,诸如网络522或互联网上的公共云或私有云。例如,通信接口518可以是以太网联网接口、综合业务数字网(ISDN)卡、电缆调制解调器、卫星调制解调器或用于提供到对应类型的通信线路(例如以太网电缆或任何种类的金属电缆或光纤线或电话线)的数据通信连接的调制解调器。网络522广义上代表局域网(LAN)、广域网(WAN)、校园网、网际网络或它们的任何组合。通信接口518可包括用于提供到兼容的LAN的数据通信连接的LAN卡,或连接以根据蜂窝无线电话无线网络标准来发送或接收蜂窝数据的蜂窝无线电话接口,或连接以根据卫星无线网络标准来发送或接收数字数据的卫星无线电接口。在任何这样的具体实施中,通信接口518在携带表示各种类型的信息的数字数据流的信号路径上发送和接收电信号、电磁信号或光信号。

网络链路520通常使用例如卫星、蜂窝、Wi-Fi或蓝牙技术直接地或通过至少一个网络向其他数据设备提供电、电磁或光数据通信。例如,网络链路520可提供通过网络522到主机计算机524的连接。

此外,网络链路520可提供通过网络522的连接,或者提供经由互联网服务提供商(ISP)526所操作的网际网络设备和/或计算机到其他计算设备的连接。ISP 526通过表示为互联网528的全球分组数据通信网络提供数据通信服务。服务器计算机530可耦接到互联网528。服务器530广义上代表具有或不具有管理程序的任何计算机、数据中心、虚拟机或虚拟计算实例,或者执行诸如DOCKER或KUBERNETES的容器化程序系统的计算机。服务器530可代表使用多于一台的计算机或实例来实现的以及可通过传输web服务请求、HTTP有效载荷中的含参数的统一资源定位符(URL)、API调用、应用服务调用或其他服务调用来使用的电子数字服务。计算机系统500和服务器530可形成分布式计算系统的元件,该分布式计算系统包括协作执行任务或执行应用程序或服务的其他计算机、处理集群、服务器场或其他计算机组织。服务器530可包括被组织为模块、方法、对象、函数、例程或调用的一组或多组指令。这些指令可被组织为一个或多个计算机程序、操作系统服务或应用程序,包括移动应用程序。这些指令可包括操作系统和/或系统软件;用于支持多媒体、编程或其他功能的一个或多个库;用于实现TCP/IP、HTTP或其他通信协议的数据协议指令或堆栈;用于解析或呈现使用HTML、XML、JPEG、MPEG或PNG编码的文件的文件格式处理指令;用于呈现或解释图形用户界面(GUI)、命令行界面或文本用户界面的命令的用户界面指令;应用软件,诸如办公套件、互联网接入应用程序、设计和制造应用程序、图形应用程序、音频应用程序、软件工程应用程序、教育应用程序、游戏或其他应用程序。服务器530可包括web应用服务器,该web应用服务器托管表示层、应用层和数据存储层,诸如使用结构化查询语言(SQL)或不使用SQL的关系数据库系统、对象存储库、图形数据库、平面文件系统或其他数据存储装置。

计算机系统500可通过网络、网络链路520和通信接口518发送消息以及接收数据和指令,包括程序代码。在互联网示例中,服务器530可通过互联网528、ISP 526、本地网络522和通信接口518发送对应用程序的请求的代码。所接收的代码可在被接收时由处理器504执行,和/或存储在存储装置510或其他非易失性存储器中以供以后执行。

如本节中所述,指令的执行可实现正在被执行并且由程序代码及其当前活动组成的计算机程序实例的形式的进程。根据操作系统(OS)的不同,进程可由同时执行指令的多个执行线程组成。在这种语境下,计算机程序是指令的被动集合,而进程可以是这些指令的实际执行。多个进程可与同一程序相关联;例如,启用同一程序的多个实例通常意味着多于一个的进程正在执行。可实现多任务以允许多个进程共享处理器504。当每个处理器504或处理器的核心一次执行单个任务时,计算机系统500可被编程为实现多任务,以允许每个处理器在正在执行的任务之间切换,而不必等待每个任务完成。在一个实施方案中,可在任务执行输入/输出操作时、当任务指示它可被切换时或在硬件中断时执行切换。可实现分时以通过快速执行上下文切换来同时提供多个进程的并发执行的外观,从而允许交互式用户应用程序的快速响应。在一个实施方案中,为了安全性和可靠性,操作系统可防止独立进程之间的直接通信,从而提供严格受影响和受控的进程间通信功能。

在前述说明书中,已经参考许多具体细节描述了本发明的实施方案,这些具体细节可能随具体实施而变化。因此,说明书和附图应被认为是例示性的而不是限制性的。本发明的范围的唯一而且独有的指示,以及申请人希望作为本发明范围的内容,是本申请所公布的权利要求书的字面和等效范围,其采用这些权利要求所公布的特定形式,包括任何后续订正。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号