发明内容
有鉴于此,本公开的目的是提供一种传感器控制***、片上***和计算装置,以解决现有技术中存在的技术问题。
根据本公开实施例的第一方面,提供一种传感器控制***,所述传感器控制***设置在芯片内部,包括:
多个传感器链,每个传感器链由一个或多个工艺传感器串联而成,且每个传感器链共享同一电压域;
选择单元,用于根据控制信号确定其余传感器链是否经由第一传感器链耦接至链控制器,所述其余传感器链为所述第一传感器链之外的传感器链;
链控制器,用于获取所述第一传感器链的电压域的状态信息,并根据所述状态信息向所述选择单元的控制端发送所述控制信号。
在一些实施例中,所述选择单元包括:第一输入端、第二输入端、输出端和控制端,第二传感器链的一端同时与所述第一输入端和所述第一传感器链的一端分别耦接,所述第二传感器链的另一端耦接至所述链控制器,所述第一传感器链的另一端耦接至所述第二输入端,所述输出端耦接至所述链控制器,
其中,所述第一传感器链和所述第二传感器链为所述多个传感器链中不同的两个传感器链。
在一些实施例中,所述第一传感器链的第一电压域嵌套在所述第二传感器链的第二电压域中,则所述链控制器在所述第一电压域的状态信息为有效时,向所述控制端发送第一控制信号,以使能所述第二输入端,当所述第一电压域的状态信息为无效时,向所述控制端发送第二控制信号,以使能所述第一输入端。
在一些实施例中,所述第一传感器链的第一电压域和所述第二传感器链的第二电压域各自独立,
则所述链控制器在所述第一电压域的状态信息和所述第二电压域为有效时,向所述控制端发送第一控制信号,以使能所述第二输入端,当所述第一电压域的状态信息为无效且所述第二电压域为有效时,向所述控制端发送第二控制信号,以使能所述第一输入端。
在一些实施例中,所述链控制器包括:
控制模块,用于产生和发送所述控制信号;
收发模块,用于经由所述多个传感器链发送读数据指令和接收检测数据。
在一些实施例中,所述链控制器还包括:
寄存器组,用于存储所述多个传感器链各自对应的多个电压域的状态信息;
则所述控制模块获取所述多个电压域的状态信息并据此产生所述第一控制信号和所述第二控制信号。
在一些实施例中,所述链控制器包括:
在所述第一传感器链的电压域的状态信息为有效时,根据检测需求向所述选择单元的控制端发送第一控制信号或第二控制信号,以对应地使能所述第一输入端或所述第二输入端。
根据本公开实施例的第二方面,提供一种片上***,包括:
调频调压控制器,其中,上述任意一项所述的传感器控制***中的链控制器设置在所述调频调压控制器中,上述任意一项所述的传感器控制***中的所述多个传感器链和所述选择单元设置在所述片上***之中但所述调频调压控制器的外部,
其中,所述调频调压控制器还包括:频率电压计算单元,用于根据接收到的多个检测数据计算出当前环境下的工艺偏差,并根据所述工艺偏差确定所述片上***要调节到的目标频率和/或目标电压。
在一些实施例中,提供所述频率电压计算单元将所述多个检测数据进行加权计算,以得到当前环境下的工艺偏差。
根据本公开实施例的第三方面,提供一种传感器控制方法,包括:
提供多个传感器链,每个传感器链由一个或多个传感器串联而成,且每个传感器链共享同一电压域;
根据控制信号确定其余传感器链是否经由第一传感器链耦接至链控制器,其中,所述其余传感器链为在所述多个传感器链中的所述第一传感器链之外的传感器链,所述链控制器获取所述第一传感器链的电压域的状态信息,并根据所述状态信息向所述选择单元的控制端发送所述控制信号。
根据本公开实施例的第四方面,提供一种计算装置,包括:
上述任意一项所述片上***作为处理器;
存储设备;
用于耦接所述处理器和所述存储设备的总线单元。
本公开实施例提供的传感器控制***,通过选择单元耦接跨电压域的传感器链,从而在较小的资源开销下解决了跨多电压域情景下某个电压域掉电导致读数据指令失效和数据传输失败的问题,同时选择单元的管理结构简单灵活,能够适用未来多种应用场景。进一步地,在无额外硬件资源开销下实现了各个电压域的选读功能,大幅提高了读取各个电压域中的传感器的速度。
具体实施方式
以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
片上***
图1是包含单条传感器链的片上***100的结构示意图。参考图上所示,处理单元101和高速内存103、高速缓存104耦接到片上总线102。片上总线102例如为AXI总线。AXI总线是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0及以上协议中最重要的部分,它是面向于高性能、高带宽、低延迟的片内总线。AIX总线将地址/控制和数据相位分离,支持不对齐的数据传输,同时支持突发传输和乱序传输,因此满足了超高性能和复杂的片上***设计的需求。处理单元101可以为任意具有不同电路结构的处理单元,例如为微处理器、微控制器、数字处理单元(DSP)、处理器核、图形处理单元(GPU)、神经网络处理单元,等等。不同于设置在片上***中的高速内存103,位于片外的存储器可以容量更大但速度较慢、成本较低。在一些实现中,高速内存103和104可以为静态随机存取存储器(SRAM),而片外的存储器为DRAM(动态随机存取存储器)和闪存(flash)存储器。
片上***100还包括耦接到片上总线105的AVFS控制器105耦接到片上总线102上。AVFS控制器105还分别与时钟管理单元106、位于片外的电源管理电路211耦接。片上***100还包括与AVFS控制器105耦接的链控制器1051以及与链控制器1051耦接的多个传感器ps1至ps6。在一些实施例中,电源管理电路212还可设置在片上***200的内部。
片上***100还包括未被示出的接口电路,用于片上***100与片外的外部设备耦接。外部设备例如可以为文字、音频和视频的输入/输出设备和各种存储器。处理单元101可通过接口电路访问片外的外部设备。
片上***100还可内嵌基本软件和应用程序(未示出),基本软件例如为片上***的操作***,应用程序是一些专有目的的程序。另有其他的应用程序可以存储在片上***100之外的存储器中,这些应用程序可以通过接口电路拷贝到片上***100中的高速内存104中,或者通过接口电路访问片上***100中的资源。
当片上***100工作时,处理单元101从高速缓存104读取各种指令,并对指令进行译码和执行。同时,处理单元101可经由片上总线102向AVFS控制器105发送调频调压指令,AVFS控制器105可根据调频调压指令或者自适应地执行调频调压操作。执行调频调压操作时,AVFS控制器105生成调频信号REGF和调压信号REGV,将调频信号REGF发送给时钟管理单元106,将调压信号REGV发送给电源管理电路211,由时钟管理单元106调节时钟频率FCPU,由电源管理电路211调节向片上***100提供的供电电压VCPU。
AVFS控制器105包括链控制器1051和频率电压计算单元1052。链控制器1051用于向多个传感器ps1至ps6发送读数据指令,多个传感器ps1至ps6中的每个传感器接收到读数据指令后,获取检测数据,并将检测数据传输给链控制器1051。在一个实施例中,链控制器1051将多个检测数据直接传递给频率电压计算单元1052,频率电压计算单元1052根据多个检测数据计算出当前环境下的工艺偏差,并根据工艺偏差确定片上***要调节到的目标频率和/或目标电压,并将目标频率和/或目标电压经由调频信号REGF和调压信号REGV传递出去。在另一个实施例中,链控制器1051将多个检测数据直接传递给频率电压计算单元1052,频率电压计算单元1052根据多个检测数据计算出当前环境下的工艺偏差,并根据工艺偏差确定片上***要调节到的目标频率和/或目标电压,并将目标频率和/或目标电压经由调频信号REGF和调压信号REGV传递出去。
应理解,根据多个检测数据计算出当前环境下的工艺偏差可以采用多种算法。例如,采用加权计算,首先为每个传感器配置一权重,例如可根据每个工艺传感器在单向数据传输路径中的位置(或者序号)配置其权重。然后将进行如公式(1)的加权计算。
SENSOR=(sensor0*w0+……+sensor5*w5)/(w0+……+w5) 公式(1)
其中,sensor0至sensor5为从传感器ps1至ps6返回的检测数据,SENSOR是当前工艺环境下的工艺偏差,w0至w5为传感器ps1至ps6对应的权重。
如图上所示,多个工艺传感器ps1至ps6与链控制器1051首尾相连组成单向的数据传输路径。数据传输路径的起点和终点都是链控制器1051,图上箭头表示指令和数据传输路径的方向(单项传输路径)。链控制器1051经由数据传输路径向多个传感器ps1至ps6发送读数据指令并从多个传感器ps接收反馈回来的检测数据。将传感器串联起来的物理链路有利于节约***100上的布线空间。需要说明的是,通常符合边界扫描协议(例如IEEE1149.1)的芯片中都包含扫描链(Scan chains),它主要用于帮助测试人员从集成电路的外部控制和观测集成电路内部的信号变化。在本实施例中,则可以利用传感器ps内部的扫描链串连多个传感器ps。
如图上所示,ps1至ps3属于电压域domain01,ps4至ps6属于电压域domain02,domain01和domain02的电压不同,例如,电源管理电路211向domain01提供的电源电压为1.2V,向domain02提供的电源电源为1.5V。那么当domain01和domain02其中之一的电源掉电时,由传感器ps1至ps6组成的串行数据传输路径中断,读数据指令和检测数据都无法完成传输。
图2是本公开一实施例提供的片上***200的结构图。参考图上所示,片上***200包括处理单元201、高速缓存204、高速内存203、AVFS控制器205以及用于将这些模块耦接到一起的片上总线202。关于处理单元201、高速缓存204、高速内存203和总线202的功能,和图1的相应模块相同,这里就不再重复。
AVFS控制器205包括链控制器2051和频率电压计算单元2052。链控制器2051用于从多个传感器获得多个检测数据,频率电压计算单元2052根据多个检测数据计算出当前环境下的工艺偏差,并根据工艺偏差确定片上***要调节到的目标频率和/或目标电压;或者,链控制器2051用于从多个传感器获得多个检测数据并根据多个检测数据计算出当前环境下的工艺偏差,频率电压计算单元2052根据工艺偏差确定片上***要调节到的目标频率和/或目标电压。
如图上所示,传感器ps1和ps2串联组成的传感器链位于电压域domain11中,即传感器ps1和ps2均由电压域domain11提供电压,传感器ps3和ps10串联组成的传感器链位于电压域domain12中,即传感器ps3和ps10均由电压域domain11提供电压。图上用虚线限定的domain11的区域包含用虚线限定的domain12的区域,这是为了表示电压域domain12嵌套在电压域domain11中,电压域domain12优先级高于电压域domain11,相应地,domain11掉电时,domain12一定掉电,但domain12掉电时,domain11不一定掉电。其中,图上箭头表示物理链路方向同时也是指令和数据传输路径的方向。
为了domain12掉电时指令和数据传输不至于失败,domain11对应的传感器链中的首个传感器ps1耦接到AVFS控制器205,将domain11对应的传感器链中的末尾传感器ps2与选择单元206的输入端1耦接,并同时将ps2与domain12对应的传感器链的首个传感器ps3耦接,将domain12对应的传感器链的末尾传感器10与选择单元206的输入端2耦接,将选择单元206的输出端与AVFS控制器205耦接,并且选择单元206的控制端接收控制信号domain_valid,domain_valid可指示domain12目前是否有效,如果两个电压域都有效,则使能选择单元206的输入端2,如此,读数据指令从链控制器2051传递到传感器ps1和ps2,再继续传递给ps3至ps10,再经由选择单元206回到链控制器2051,同样,每个传感器的检测数据也按照这样的路径传递到链控制器2051,但当domain_valid指示domain12无效时,则使能选择单元206的输入端1,读数据指令从链控制器2051传递到传感器ps1和ps2,再经由选择单元206回到链控制器2051,同样,传感器ps1和ps2的检测数据也经由这样的路径传递到链控制器2051,但传感器ps3至ps10被略过。
在一个实施例中,如图上所示,链控制器2051包括寄存器组20511、控制模块20512和收发模块20513。寄存器组20511用于存储各个电压域的状态信息。控制模块20512用于产生和发送控制信号。收发模块20513与传感器ps1和选择单元206的输出端耦接,用于发送读数据指令和从多个工艺传感器ps1至ps10接收多个检测数据。
在图2所示的实施例中,由于domain11和domain12是嵌套关系,因此控制信号domain_valid只需要指示domain12的状态信息。例如,domain_valid为第一值时,指示domain12有效,为第二值时,指示domain12无效。
在图1所示的实施例中,由于domain01和domain02是相互独立关系,因此控制信号domain_valid需要指示domain01和domain02的状态信息。例如,domain_valid为’11’时,指示domain01和domain02均有效,为’01’时,指示domain01有效和domain02无效,为’10’时,指示domain02有效和domain01无效。当然在图1所示的示例中,由于domain01的传感器链直接和链控制器1051链接,因此当domain01无效时,无论domain02是否有效,都无法传送数据和指令,但是只要在链控制器1051和domain01的传感器链之间增加一个选择单元,就可以绕过domain01的传感器链进行数据和指令传输。
综合图1和图2的示例,可以理解本实施例的一个理念是链控制器在某个电压域无效时绕过该电压域所在的传感器链,但是本公开还可以采用另一个理念,即在各个电压域都有效时,链控制器决定绕过一个或多个传感器链进行数据和指令传输。例如,基于图1的改进实施例(指在链控制器1051和domain01的传感器链之间增加一个选择单元)中,链控制器在domain01和domain02都有效的情况下,在某个时刻绕过domain01或domain02的传感器链进行数据和指令传输。进一步地,链控制器可以交替地绕过domain01或domain02的传感器链进行数据和指令传输。
图3是图2中的寄存器组20511存储的状态信息的示例图。寄存器组内存在一组可扩展的电压域的属性管理表项,该表项组内一个寄存器存储着对应的电压域中的传感器信息,传感器信息包括该电压域中存在的传感器个数、序号等,表头由对应的电压域标识以及有效或无效的状态信息组成。电压域的状态信息可由硬件生成。电压域的状态信息也可由软件可配置寄存器组成:如软件保存的电压域状态信号等。软件可配置方式可以实现传感器按电压域选读的功能,如果想读取某个电压域内所有传感器的检测数据,则将其余电压域中的传感器配置为不去读取即可,如此不需要增加额外的硬件资源开销。
在一个实施例中,如图上所示,选择单元206包括一两路选择器207,两路选择器207包括输入端1和2、控制端和输出端,控制端与寄存器208耦接。两路选择器207分别耦接传感器ps2和传感器ps10。
应该理解,多个传感器可以包括两个以上的电压域,任意两个电压域中的传感器都可以按照上面的方式通过选择单元耦接,并且通过选择单元的控制信号来实现对多个电压域中的传感器的选读功能。
应该指出的是,上述多个传感器链、链控制器和选择单元可以组成传感器控制***,用于控制不同电压域的传感器链采集检测数据并根据检测数据计算工艺偏差。此外,还需要说明的是,工艺传感器是片上***中通常使用的传感器类型,但本公开提供的传感器控制***可以扩展到其他传感器类型,例如,温度传感器。
图4是本公开实施例提供的片上***中的链控制器进行读取数据操作的流程图。如图上所示,具体包括以下步骤。
在步骤S401中,配置寄存器组内的属性管理表项。根据当前场景下各个电压域的供电状态信号以及要选读的电压域配置domain属性表项。
在步骤S402中,使能读操作。
在步骤S403中,控制模块进行传感器个数数计算。即控制模块进行帧数计算,计算公式:
其中N表示传感器链穿过的电压域个数,domain_valid和sensor_number使用寄存器组内的属性管理表项内的信息。
在步骤S404中,向相应的传感器发送读数据指令,并从相应传感器接收检测数据。
在步骤S405中,接收m个帧数据后,读操作结束。
综上详细介绍了本公开实施例的传感器控制***和片上***。在控制***中,通过选择单元耦接跨电压域的传感器链,从而在较小的资源开销下解决了跨多电压域情景下某个电源域掉电导致读数据指令失效和数据传输失败的问题,同时选择单元的管理结构简单灵活,能够适用未来多种应用场景。进一步地,在无额外硬件资源开销下实现了各个电压域的选读功能,大幅提高了读取各个电压域中的传感器的速度。
相应地,本公开实施例提供一种传感器控制方法,包括:
提供多个传感器链,每个传感器链由一个或多个传感器串联而成,且每个传感器链共享同一电压域;
根据控制信号确定其余传感器链是否经由第一传感器链耦接至链控制器,其中,其余传感器链为在多个传感器链中的第一传感器链之外的传感器链,链控制器获取第一传感器链的电压域的状态信息,并根据状态信息向选择单元的控制端发送控制信号。
片上***的具体应用
图5是本公开实施例所应用的通用计算机***的结构示意图。如图上所示,计算机***500可以包括一个或多个处理器12,以及存储器14。其中,上述实施例提供的片上***可用作处理器12。
计算机***500中的存储器14可以主存储器(简称为主存或内存)。用于存储由数据信号表示的指令信息和/或数据信息,例如存放处理器12提供的数据(例如为运算结果),也可以用于实现处理器12与外部存储设备16(或称为辅助存储器或外部存储器)之间的数据交换。
在一些情形下,处理器12可能需要访问存储器14,以获取存储器14中的数据或对存储器14中的数据进行修改。由于存储器14的访问速度较慢,为了缓解处理器12与存储器14之间的速度差距,计算机***500还包括与总线11耦合的高速缓冲存储器18,高速缓冲存储器18用于对存储器14中的一些可能会被反复调用的程序数据或者报文数据等数据进行缓存。高速缓冲存储器18例如由静态随机存储器(StaticRandom Access Memory,简称为SRAM)等类型的存储装置实现。高速缓冲存储器18可以为多级结构,例如具有一级缓存(L1Cache)、二级缓存(L2 Cache)和三级缓存(L3 Cache)的三级缓存结构,也可以是三级以上的缓存结构或其他类型缓存结构。在一些实施例中,高速缓冲存储器18的一部分(例如一级缓存,或一级缓存和二级缓存)可以集成在处理器12内部或与处理器12集成于同一片上***中。
基于此,处理器12可以包括指令执行单元121、内存管理单元122等部分。指令执行单元121在执行一些需要修改内存的指令时发起写访问请求,该写访问请求指定了需要写入内存中的写入数据和相应的物理地址;内存管理单元122用于将这些指令指定的虚拟地址转译为该虚拟地址映射的物理地址,写访问请求指定的物理地址与相应指令指定的物理地址可以一致。
存储器14和高速缓冲存储器18之间的信息交互通常按块来组织。在一些实施例中,高速缓冲存储器18和存储器14可以按照相同的空间尺寸被划分成数据块,数据块可以作为高速缓冲存储器18和存储器14之间的数据交换的最小单位(包括预设长度的一个或多个数据)。为了表述简洁清晰,下面将高速缓冲存储器18中的各个数据块简称为缓存块(可以称为cacheline或高速缓存线),且不同的缓存块具有不同的缓存块地址;将存储器14中的各个数据块简称为内存块,且不同的内存块具有不同的内存块地址。缓存块地址例如包括用于定位数据块的物理地址标签。
由于受到空间和资源的限制,高速缓冲存储器18无法对存储器14中的全部内容都进行缓存,即高速缓冲存储器18的存储容量通常小于存储器14,高速缓冲存储器18提供的各个缓存块地址无法对应存储器14提供的全部内存块地址。处理器12在需要访问内存时,首先经总线11访问高速缓冲存储器18,以判断所要访问的内容是否已被存储于高速缓冲存储器18中,如果是,则高速缓冲存储器18命中,此时处理器12直接从高速缓冲存储器18中调用所要访问的内容;如果处理器12需要访问的内容不在高速缓冲存储器18中,则高速缓冲存储器18,处理器12需要经总线11访问存储器14,以在存储器14中查找相应的信息。因为高速缓冲存储器18的存取速率非常快,因此当高速缓冲存储器18命中时,处理器12的效率可以显著提高,进而也使整个计算机***500的性能和效率得以提升。
此外,计算机***500还可以包括存储设备16、显示设备13、音频设备19、鼠标/键盘15等输入/输出设备。存储设备16例如是通过相应接口与总线11耦合的硬盘、光盘以及闪存等用于信息存取的设备。显示设备13例如经相应的显卡与总线11耦合,用于根据总线11提供的显示信号进行显示。
计算机***500通常还包括通信设备17,因此可以通过各种方式与网络或其他设备通信。通信设备17例如可以包括一种或多种通信模块,作为示例,通信设备17可以包括适用于特定的无线通信协议的无线通信模块。例如,通信设备17可以包括WLAN模块,用于实现符合电气和电子工程师协会(IEEE)制定的602.11标准的Wi-FiTM通信;通信设备17也可以包括WWAN模块,用于实现符合蜂窝或其他无线广域协议的无线广域通信;通信设备17还可以包括蓝牙模块等采用其它协议的通信模块,或其它自定义类型的通信模块;通信设备17也可以是用于串行传输数据的端口。
当然,不同的计算机***根据主板、操作***和指令集架构的不同,其结构也可能有所变化。例如目前很多计算机***设置有耦接在总线11和各个输入/输出设备之间的输入/输出控制中心,且该输入/输出控制中心可以集成于处理器12之内或独立于处理器12。
图6是本公开实施例所应用的嵌入式***的结构图。上述实施例提供的片上***可用作处理器601。
虽然嵌入式***在硬件结构上与计算机***具有高度相似性,但是嵌入式***应用上的特点致使嵌入式***在硬件的组成和实现形式上与通用计算机***又有较大区别。
首先,为满足嵌入式***600在速度、体积和功耗上的要求,操作***、应用软件、特殊数据等需要长期保存的数据,通常不使用磁盘这类具有大容量且速度较慢的存储介质,而大多使用随机存储器602或闪存(Flash Memory)603。
另外,在嵌入式***600中,需要A/D(模拟/数字转换)接口605和串行接口606,用于测控的需要,这在通用计算机中用得很少。A/D接口605主要完成测试中所需要的模拟信号到数字信号的转换、和数字信号到模拟信号的转换。嵌入式***600应用于工业生产时经常需要测试。由于单片机产生的是数字信号,在测试时需要转换成模拟信号用于测试,因此,与通用计算机不同,需要A/D(模拟/数字转换)接口605完成相关转换。另外,工业中经常需要多个嵌入式***串接在一起,完成相关功能,因此需要用于将多个嵌入式***串联的串行接口606,而在通用计算机中则大多不需要。
另外,嵌入式***600作为一个基本的处理单元,常常在工业设计中需要将多个嵌入式***600联成网络,因此需要将嵌入式***600联入网络的网络接口607。这在通用计算机中大多也不需要。此外,根据实际应用和规模的不同,有些嵌入式***600要采用外部总线604。随着嵌入式***600应用领域的迅速扩张,嵌入式***600越来越趋于个性化,根据自身特点采用总线的种类也越来越多。另外,为了对嵌入式处理器601内部电路进行测试,处理器芯片普遍采用了边界扫描测试技术。为了适应该测试,采用了调试接口608。
随着超大规模集成电路(Very Large Scale Integration)和半导体工艺的迅速发展,上述的嵌入式***的部分或者全部可实现在一个硅片上,即为嵌入式片上***(SoC)。
本公开实施例的商业价值
本公开实施例提供的片上***,通过选择单元耦接跨电压域的传感器链以解决跨多电压域情景下某个电源域掉电导致传输失败的问题。这样的片上***可用于形成多种场景使用的计算装置,例如数据中心数量庞大的云服务器;再例如,日常生活中使用的电子设备,包括诸如笔记本和手机等终端设备以及某些消费型电子产品。由此可见,本公开实施例的片上***以及由该片上***构建的计算装置在具有实用价值的基础上,具备了商业价值和经济价值。
本领域的技术人员能够理解,本公开可以实现为***、方法和计算机程序产品。因此,本公开可以具体实现为以下形式,即完全的硬件、完全的软件(包括固件、驻留软件、微代码),还可以实现为软件和硬件结合的形式。此外,在一些实施例中,本公开还可以实现为一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如但不限于为电、磁、光、电磁、红外线或半导体的***、装置或器件,或其他任意以上的组合。计算机可读存储介质的更具体的例子包括:具体一个或多个导线的电耦接,便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器、磁存储器或者上述任意合适的组合。在本文中,计算机可读的存储介质可以是任意包含或存储程序的有形介质,该程序可以被处理单元、装置或者器件使用,或者与其结合使用。
计算机可读信号介质可以包括在基带中或者作为截波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或者其他任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质之外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令***、装置或器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,以及上述任意合适的组合。
可以以一种或者多种程序设计语言或者组合来编写用于执行本公开实施例的计算机程序代码。所述程序设计语言包括面向对象的程序设计语言,例如JAVA、C++,还可以包括常规的过程式程序设计语言,例如C。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)耦接到用户计算机,或者,可以耦接到外部计算机(例如利用因特网服务提供商来通过因特网耦接)。
以上所述仅为本公开的优选实施例,并不用于限制本公开,对于本领域技术人员而言,本公开可以有各种改动和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。