一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

对静态地图数据使用合并约束的自主车辆导航的制作方法

2022-05-08 04:12:56 来源:中国专利 TAG:


1.本公开涉及用于静态地图数据的增强并行处理的方法。


背景技术:

2.在传统方法中,三维动态地图数据可以由传感器基于对到物体的距离(例如,使用激光雷达(lidar)测量场景)的观察来生成,并且可以与静态地图数据一起处理,例如以确定传感器的位置。例如,这些位置可用于车辆导航。随着越来越强大的并行处理器的出现,处理速度不再是这种位置确定的瓶颈。相反,位置确定的速度受存储器访问速度的限制。


技术实现要素:

3.本公开的各种实施例可以包括系统、方法和非暂时性计算机可读介质。在一些实施例中,该方法包括:获得代表静态地理地图的静态地图数据切片,其中每个切片代表静态地理地图的水平区域,其中每个切片包括多个块,每个块包括多个单元,每个单元对应于静态地理地图的相应三维区域,每个单元具有指示物体存在于该单元中的物体概率的单元值。将静态地图数据切片加载到并行处理器的高速缓存中;将高速缓存中的静态地图数据布置在连续存储空间,该连续存储空间被分配给并行处理器的具有合并约束的一组工作程序或进程;获得动态地图数据的帧,其中,动态地图数据表示由车辆上的旋转lidar传感器采集的lidar数据;将动态地图数据的帧加载到并行处理器的高速缓存中;获得多个扫描匹配候选,每个扫描匹配候选代表车辆的可能位置和姿态;在并行处理器中处理静态地图数据、动态地图数据和多个扫描匹配候选以产生一个或多个结果,其中每个结果代表扫描匹配候选中的一个和扫描匹配候选中的一个的分数;选择具有最高分数的扫描匹配候选作为车辆的位置。
4.在一些实施例中,所述指令还使所述系统执行以下步骤:获得动态地图数据的另一帧;将动态地图数据的另一帧加载到并行处理器的高速缓存中;获得另一多个扫描匹配候选;在并行处理器中,处理动态地图数据的另一帧、另一多个扫描匹配候选和静态地图数据以产生一个或多个另一结果,其中每个另一结果代表扫描结果匹配候选中的另一个和扫描匹配候选中的一个的另一分数;选择具有最高分数的另一扫描匹配候选作为车辆的另一位置。
5.在一些实施例中,静态地图数据的切片包括块占用掩码,所述占用掩码指示包含具有非零单元值的至少一个单元的块;将静态地图数据切片加载到并行处理器的高速缓存中包括:仅加载块占用掩码指示的块。
6.在一些实施例中,块占用掩码根据varint进行编码。
7.在一些实施例中,每个块包括lidar数据的n
×n×
n个单元,其中n是大于1的整数。在一些实施例中,n=4。
8.在一些实施例中,静态地图数据的切片包括每个块的单元索引,所述单元索引以z顺序(z-order)对每个块中的单元进行索引;将静态地图数据切片加载到并行处理器的高
速缓存中包括:根据单元索引将静态地图数据的单元加载到并行处理器的高速缓存中。
9.通过参考附图考虑以下描述和所附权利要求书,本文公开的系统、方法和非暂时性计算机可读介质的这些和其他特征、以及结构的相关元件和部分的组合的操作和功能的方法以及制造的经济性将变得显而易见,所有附图形成本说明书的一部分,其中在各个附图中,相同的附图标记表示相应的部分。然而,应该明确地理解,附图仅出于说明和描述的目的,并且不旨在作为对本发明的限制的定义。
附图说明
10.在所附权利要求中具体阐述了本技术的各种实施例的某些特征。通过参考下面的详细描述,将获得对技术的特征和优点的更好的理解,以下详细描述阐述了说明性实施例和附图,在说明性实施例中利用了本发明的原理,并且附图中:
11.图1示出了根据本公开的各种实施例的示例车辆。
12.图2a是可以实现所公开的技术的示例环境的框图。
13.图2b示出了根据当前公开的各种实施例的示例车辆上的并行处理器的实施方式。
14.图3示出了根据所公开技术的一些实施例的过程。
15.图4示出了根据所公开技术的一些实施例的静态地图数据的组织。
16.图5示出了可以实现本文中所描述的示例计算机系统的框图。
具体实施方式
17.吞吐量是数据采集系统输出处理数据的速度的度量。吞吐量在诸如自动驾驶车辆和半自动驾驶车辆等车辆的数据采集系统中尤为重要。例如,这些数据采集系统必须获得尽可能多的数据,并尽可能快地处理数据,以帮助车辆做出瞬间驾驶决策(例如,加速、制动、右转、左转等)。因此,提高数据采集系统的吞吐量(或减少数据延迟)至关重要。
18.在常规方法下,数据采集系统的吞吐量受到采集并随后处理数据的速度的限制。在通常的数据处理场景中,数据处理直到第一次获得数据帧(例如,完整的数据文件)才开始。例如,数据采集系统可以在0.5秒内获得数据帧,并在另外0.5秒内处理该数据帧。在本例中,数据采集系统的吞吐量是每秒处理一个数据帧,或1hz。此外,在该示例中,数据采集系统的数据延迟是一秒(即,数据采集系统输出一个经处理的数据帧所需的时间)。因此,为了提高数据采集系统的吞吐量,需要减少数据采集系统的数据延迟。为了减少数据延迟,应该减少数据采集时间或数据处理时间。
19.一种植根于计算机技术的要求保护的解决方案克服了在计算机技术领域特别出现的问题。在各种实施例中,数据采集系统执行包括以下步骤的方法:获得代表静态地理地图的静态地图数据切片,其中每个切片代表静态地理地图的水平区域,每个切片包括多个块,每个块包括多个单元,每个单元对应于静态地理地图的相应三维区域,每个单元具有指示该单元中存在物体的物体概率的单元值;将静态地图数据切片加载到并行处理器的高速缓存中;将高速缓存中的静态地图数据布置在连续存储空间,该连续存储空间被分配给并行处理器的具有合并约束的一组工作程序或进程;获得动态地图数据的帧,其中动态地图数据表示由车辆上的旋转lidar传感器采集的lidar数据;将动态地图数据的帧加载到并行处理器的高速缓存中;获得多个扫描匹配候选,每个扫描匹配候选代表车辆的可能位置和
姿态;在并行处理器中处理静态地图数据、动态地图数据和多个扫描匹配候选以产生一个或多个结果,其中每个结果代表扫描匹配候选中的一个和扫描匹配候选中的一个的分数;选择具有最高分数的扫描匹配候选作为车辆的位置。
20.图1示出了根据本公开的各种实施例的示例车辆100,诸如自动驾驶车辆和半自动驾驶车辆。车辆100通常是指能够“感测”车辆100周围环境的一类车辆。车辆100可以包括无数传感器(例如,相机、声纳、雷达、lidar、gps等)以检测和识别周围环境中的物体(例如,行人、道路标志、交通灯、交通状况等)。在一些实施例中,车辆100可以识别道路标志(例如,限速、学校区、施工区等)和交通灯(例如,红灯、黄灯、绿灯等)。车辆100可以在有限的人工输入或没有人工输入的情况下导航通过各种道路、街道和/或地形。本文中使用的“车辆”一词包括在地面行驶的交通工具(如汽车、卡车、公共汽车等),但也可能包括在空中行驶的交通工具(如无人机、飞机、直升机等)、在水上行驶的车辆(例如船、潜艇等)。此外,本文中讨论的“车辆”可能会或可能不会容纳一名或多名乘客。
21.通常,车辆100可以对其自身进行任何控制,而人类驾驶员可以对常规车辆进行控制。例如,车辆100可以加速、制动、左转或右转、或反向行驶,就像人类驾驶员在传统车辆上所做的那样。车辆100还可以像人类驾驶员一样感知环境条件、测量空间关系(例如,物体与其自身之间的距离)、检测和分析道路标志。此外,车辆100可以执行更复杂的操作,例如平行停车、在拥挤的停车场停车、避免碰撞等,而无需任何人工输入。
22.在各种实施例中,车辆100可包括一个或多个传感器。如本文所用,一个或多个传感器可包括激光扫描系统(例如,lidar)、雷达系统、声纳系统、相机系统等。一个或多个传感器允许车辆100感测车辆100周围的环境。例如,雷达或声纳系统可以被配置为分别使用电磁波或声波的多普勒效应来检测车辆100前方的物体的距离。在另一个示例中,相机系统可以被配置为捕获图像并处理捕获的图像以检测物体,例如道路标志,并破译物体的含义,例如张贴在道路标志上的速度限制。
23.在一些实施例中,车辆100可以包括光检测和测距(lidar)传感器102。lidar传感器102可以安装在车辆100上的任何合适的位置,只要这些位置没有可能干扰激光器操作的障碍物。例如,在一些实施例中,一个或多个lidar传感器可以安装在车辆100的a柱(例如,固定汽车前挡风玻璃的柱子)上。在另一个示例中,如图1的示例所示,lidar传感器102可以安装在车辆100的顶部或车顶上。通常,lidar传感器102可用于通过测量环境中的物体与车辆100之间的相对距离来调查车辆100周围的环境。lidar传感器102通过照射脉冲激光104并测量被物体反射的相同脉冲激光104来做到这一点。在各种实施例中,lidar传感器102可包括沿垂直于地面的轴(例如,车辆100的垂直轴)的一个或多个激光(例如,lidar传感器102中的多个通道)。在此类实施例中,激光的一个或多个通道允许lidar传感器102沿车辆100的垂直轴获得周围环境的二维“视图”或二维地图。在一些实施例中,lidar传感器102可以被配置为围绕旋转轴旋转360度以扫描周围环境。例如,如图1的示例所示,安装在车辆100顶部的lidar传感器102可以旋转360度。通过测量物体到lidar传感器102的相对距离,激光的旋转和一个或多个通道使lidar传感器102能够捕获周围环境中物体的三维“视图”或三维地图。
24.如所讨论的,lidar传感器102可以被配置为获得周围环境中物体的三维地图。在一些实施例中,lidar传感器102可以被配置为以10hz旋转(例如,每秒10圈)。在一些实施例
中,lidar传感器102可以被配置为以比10hz更快或更慢的速度旋转。通常,lidar传感器102的旋转速度受其硬件限制,这意味着lidar传感器102可以在硬件允许的范围内尽可能快地旋转。在各种实施例中,lidar传感器102的数据帧(例如,点云数据的帧)包括对周围环境的一次360度扫描。例如,如果lidar传感器102以10hz旋转,则lidar传感器102可以每秒获得或捕获十个数据帧,或十个周围环境的360度扫描。
25.在各种实施例中,获得的数据帧(或获得的点云数据的帧)被进一步处理以便车辆100从获得的数据帧中导出有意义的信息。例如,脉冲激光104已经行进的距离可以通过测量脉冲激光104行进到周围环境中的物体以及从周围环境中的物体行进所花费的时间来确定。该信息然后可以用于使用光速作为转换因子来确定物体与lidar传感器102之间的距离。通常,处理数据的时间可以添加到获得数据的时间。例如,在lidar传感器102以10hz获得数据帧的示例中,每100毫秒获得或捕获一个数据帧。此外,如果数据采集系统需要另外100毫秒来处理数据帧,则数据采集系统的吞吐量为5hz(例如,每秒处理五个数据帧)。换句话说,数据采集系统的数据延迟为200毫秒。因此,在该示例中,尽管lidar传感器102可以10hz获得或捕获数据帧,但是lidar系统(lidar传感器102加上数据获得系统)的吞吐量是5hz。
26.尽管大部分讨论集中在与lidar传感器相关联的数据采集系统上,但所公开的发明不限于这样的系统。所公开的技术可以应用于具有任何合适的传感器和/或设备的任何合适的数据采集系统,其中从传感器和/或设备获得至少一些数据。例如,所公开的发明可以应用于从相机获得的图像数据。
27.图2是可以实现所公开的技术的示例环境200的框图。示例环境200可以在车辆中实现,例如如上所述。参考图2,示例环境200可以包括生成原始lidar数据204的lidar传感器202。示例环境200可以包括处理器206。处理器206可以被实现为诸如中央处理单元(cpu)等的通用处理器。处理器206可处理原始lidar数据204以生成经处理的lidar数据208,例如如本文所述。
28.示例环境200可以包括数据存储单元212。数据存储单元212可以存储静态地图数据214。静态地图数据214可以包括不经常改变的地图数据。例如,静态地图数据214可以表示诸如道路、建筑物等的持久特征。
29.示例环境200可以包括车载系统,其可以包括车载计算机系统216。车载计算机系统216可以生成扫描匹配候选218。每个扫描匹配候选218可以代表车辆的可能位置和姿态。车载计算机系统216可以根据任何合适的技术生成扫描匹配候选218。在一些实施例中,可以随机生成扫描匹配候选218。
30.示例环境200可以包括并行处理器210。并行处理器通常具有大量的计算核心,也称为“工作程序(worker)”。并行处理器210可以被实现为图形处理单元(gpu)等,以与在cpu上进行处理的情况相比加快处理速度。并行处理器210可以处理经处理的lidar数据208、静态地图数据214和扫描匹配候选218以生成结果220,例如如本文所述。每个结果220可以代表扫描匹配候选218中的一个和扫描匹配候选218的分数。
31.并行处理器210可以将扫描匹配结果提供给处理器206用于进一步处理。处理器206可以选择具有最高分数的扫描匹配候选218作为车辆的位置。
32.如图2b所示,并行处理器210可以包括一个或多个天线220和/或222,其固定在车
辆100的车顶上以接收经处理的lidar数据208。天线220和/或222可以连接到nbox224、以及对经处理的lidar数据208进行解码并通过进程间通信(ipc)将解码的经处理的lidar数据输出到驱动器226的嵌入式设备。驱动器226可以生成计算机可读gpu测量值以传输到定位模块228。定位模块可以在特定时间预测车辆100的位置和姿态。
33.图3示出了根据所公开技术的一些实施例的过程300。虽然过程300的元素以特定布置呈现,但是应当理解,所公开过程的一个或多个元素可以以其他布置和顺序、并行地实施或可以被完全省略。过程300可以在图2的示例环境200和/或图1的车辆100中实施。
34.参考图3,过程300可以包括:获得代表静态地理地图的静态地图数据214的切片(在302处)。例如,再次参考图2,并行处理器210可以从数据存储单元212获得静态地图数据214的切片(slice)。在一些实施例中,可以使用三维舍入缓冲器来获得切片。这些实施例促进静态地图数据214的增量上传,这可能平均仅需要上传每个切片的三分之一,从而将上传速度提高300%。
35.图4示出了根据所公开技术的一些实施例的静态地图数据214的组织400。参见图4,最小单元是单元402,其代表现实世界中的立方体,即静态地理地图的相应三维区域。在一些实施例中,单元的大小可以是0.125立方米。每个单元具有指示物体存在于该单元中的物体概率的单元值。
36.块404是一组n3个单元402,排列成n
×n×
n立方体。在一些实施例中,n=4。
37.切片406是按m
×
m正方形布置的块404的单个水平层。在一些实施例中,m=8。
38.堆叠块(tile)408是切片406的堆叠。堆叠块408中切片406的数量可以变化。
39.在一些实施例中,静态地图数据的每个切片包括块占用掩码,所述占用掩码指示包含具有非零单元值的至少一个单元的切片中的块。在这样的实施例中,将静态地图数据的切片加载到并行处理器210的高速缓存中可以包括仅加载由块占用掩码指示的块。在一些实施例中,块占用掩码可以是4
×4×
4单元的块,匹配块404的配置。根据实验结果,与代表沿y轴布置的64个单元的64位占用掩码相比,块占用掩码的这种配置将对应于静态地图数据214的占用块的数量减少了大约一半。在一些实施例中,块占用掩码可以根据组varint编码(gve)(也称为“varint”)生成。在其他实施例中,可以使用其他编码技术。块可以通过面向稀疏块的编码机制进行编码。这种机制包括:使用指示要跳过的块数量的varint计算空块的数量;以及使用子块占用掩码存储块占用掩码。子块占用掩码包括代表64位块中被占用字节的位,后面是被占用字节的实际内容。这种机制简化了将块上传到并行处理器210的高速缓存的设置。
40.在一些实施例中,静态地图数据的每个切片包括每个块的单元索引,所述单元索引以z顺序对每个块中的单元进行索引,这提高了子块内的空间局部性,从而提高了面向稀疏块的编码机制的效率。子块中的每个可以表示一个2
×2×
2的单元空间。在其他实施例中,可以使用其他索引技术。在这些实施例中,将静态地图数据的切片加载到并行处理器的高速缓存中可以包括:根据单元索引将静态地图数据的单元加载到并行处理器的高速缓存中。
41.再次参考图3,在304处,过程300可以包括:将高速缓存(诸如l1高速缓存)中的静态地图数据布置在连续存储器空间中,该连续存储器空间被分配给并行处理器的具有合并约束的一组工作程序。合并约束可以指为了将连续存储器空间中的多个存储器访问组合在
单个事务(transaction)中所需的约束。例如,再次参考图2,并行处理器210可以执行将静态地图数据214布置在并行处理器210的高速缓冲存储器中的过程。在并行处理器210中,一组32个连续线程,也称为“warp”,可以在单个事务中访问高速缓存中的静态地图数据214的相邻字。这种布置通过减少访问高速缓存的事务的数量大大提高了高速缓存访问速度。频繁访问存储器会导致处理瓶颈,从而降低处理速度。
42.再次参考图3,过程300可以包括:获得动态地图数据的帧,其中动态地图数据代表由车辆上的旋转lidar传感器采集的lidar数据(在306处)。例如,再次参考图2,处理器206可以从lidar传感器202接收原始lidar数据204,并且可以处理原始lidar数据204。在一些实施例中,每秒十次获得原始lidar数据204的帧。该帧可以包括在lidar传感器360度旋转期间以多个角度拍摄的多个“天际线”。每条天际线都可能包含由62个激光垂直堆叠采集的数据。例如,每个帧可以包括大约10,000到100,000个lidar点。
43.再次参考图3,过程300可以包括:将动态地图数据的帧加载到并行处理器的高速缓存中(在308处)。例如,再次参考图2,处理器206可以将经处理的lidar数据208的帧加载到并行处理器210的高速缓存中。
44.再次参考图3,过程300可以包括:获得多个扫描匹配候选,每个扫描匹配候选代表车辆的可能位置和姿态(在310处)。例如,再次参考图2,并行处理器210可以从车载计算机系统216获得扫描匹配候选218。车载计算机系统216可以根据任何合适的技术生成扫描匹配候选218。在一些实施例中,车载计算机系统216可以随机生成扫描匹配候选218。
45.再次参考图3,过程300可以包括:在并行处理器210中处理动态地图数据、静态地图数据和多个扫描匹配候选以产生一个或多个结果,每个结果代表扫描匹配候选中的一个和扫描匹配候选中的一个的分数(在312处)。例如,再次参考图2,并行处理器210可以处理lidar数据208、静态地图数据214和多个扫描匹配候选218以产生一个或多个结果220。任何合适的技术都可以用于该处理。例如,并行处理器210可以处理每对包括lidar数据208的点以及扫描匹配候选218中的一个扫描匹配候选的对,以生成初步分数。在一些实施例中,可以采用从lidar数据208到扫描匹配候选218中的一个扫描匹配候选的刚体变换(其可以包括旋转和平移),使得在刚体变换到扫描匹配候选218中的一个扫描匹配候选之后与lidar数据208的偏差被最小化。每对可以与每个单元格值进行比较以生成该对的分数。每个结果220可以包括扫描匹配候选218中的一个扫描匹配候选及其分数。
46.再次参考图3,过程300可以包括:选择具有最高分数的扫描匹配候选作为车辆的位置(在314处)。例如,再次参考图2,并行处理器210可以将结果220提供给处理器206,处理器206可以选择具有最高分数的结果220作为车辆的位置。处理器206可以向车载计算机系统216提供该位置以用于导航车辆。在其他实施例中,并行处理器210可以将结果220直接提供给车载计算机系统216。
47.再次参考图3,在306,过程300可以继续获得动态地图数据的另一帧(在306处),将动态地图数据的另一帧加载到并行处理器的高速缓存中(在308处),获得另一多个扫描匹配候选(在310处),在并行处理器中处理另一动态地图数据、另一多个扫描匹配候选和相同的静态地图数据以产生一个或多个另一结果,其中每个另一结果代表另一扫描匹配候选中的一个和另一扫描匹配候选中的一个的分数。这些步骤可以根据需要重复多次。当车辆移动超出由切片描述的地理区域时,静态地图数据214的其他切片可以从数据存储单元212获
得。
48.所公开技术的实施例具有若干优点。所公开的技术大大提高了将静态地图数据上传到并行处理器的效率,使速度提高了约15倍。例如,如上所述,一旦静态地图数据被加载并布置在并行处理器的高速缓存中,静态地图数据可以与新的动态地图数据和新的扫描匹配候选重复使用多次,而无需重新加载更多的静态地图数据,因为并行处理器将高速缓存中的静态地图数据布置在连续存储器空间中,该连续存储器空间被分配给并行处理器的具有合并约束的一组工作程序。
49.图5是示出了可以实现本文中所描述的任何实施例的计算机系统500的框图。计算机系统500包括用于传送信息的总线502或其他通信机制、用于处理信息的与总线502联接的一个或多个硬件处理器504。硬件处理器504可以是例如一个或多个通用微处理器。
50.计算机系统500还包括联接到总线502的主存储器506(诸如随机存取存储器(ram)、高速缓存和/或其他动态存储设备),用于存储将由处理器504执行的信息和指令。主存储器506还可以用于在执行将由处理器504执行的指令期间存储临时变量或其他中间信息。这些指令在被存储在处理器504可访问的存储介质中时将计算机系统500渲染为被定制为执行指令中指定的操作的专用机器。
51.计算机系统500进一步包括联接到总线502的只读存储器(rom)508或其他静态存储设备,用于存储用于处理器504的静态信息和指令。提供了存储设备510(诸如磁盘、光盘或usb拇指驱动器(闪存驱动器)等),其耦合到总线502,用于存储信息和指令。
52.计算机系统500可以经由总线502联接到显示器512(诸如阴极射线管(crt)或lcd显示器(或触摸屏)),用于向计算机用户显示信息。包括字母数字键和其他键的输入设备514联接到总线502,用于将信息和命令选择传送给处理器504。用户输入设备的另一种类型是光标控件516(诸如鼠标、轨迹球或光标方向键),其用于将方向信息和命令选择传送给处理器504并控制输出设备512上的光标移动。该输入设备通常在两个轴上具有两个自由度,即第一轴(例如,x)和第二轴(例如,y),这允许该设备指定平面中的位置。在一些实施例中,可以通过在没有光标的情况下接收触摸屏上的触摸来实现与光标控制相同的方向信息和命令选择。
53.计算系统500可以包括用户接口模块以实现gui,该用户接口模块可以作为由计算设备执行的可执行软件代码存储在大容量存储设备中。举例来说,该模块和其他模块可以例如包括组件,诸如软件组件、面向对象的软件组件、类组件和任务组件、进程、函数、属性、过程、子例程、程序代码段、驱动程序、固件、微代码、电路、数据、数据库、数据结构、表、数组和变量。
54.一般而言,本文中所使用的单词“模块”是指体现在硬件或固件中的逻辑,或者指用编程语言(例如,java、c或c )编写的、可能具有入口点和出口点的软件指令的集合。可以将软件模块编译并链接到可执行程序中、安装在动态链接库中,或者可以用解释性编程语言(例如,basic、perl或python)编写该软件模块。可以理解,软件模块可以从其他模块或从其自身调用,并/或可以响应于检测到的事件或中断而被调用。可以将被配置为在计算设备上执行的软件模块提供在计算机可读介质(诸如光盘、数字视频光盘、闪存驱动器、磁盘或任何其他有形介质)上,或者可以提供为数字下载(并且可以最初以需要在执行之前进行安装、解压缩或解密的压缩或可安装的格式存储)。可以将这样的软件代码部分或全部地存
储在执行中的计算设备的存储设备上,以由该计算设备执行。可以将软件指令嵌入在诸如eprom的固件中。还将理解,硬件模块可以由连接的逻辑单元(诸如门和触发器)组成,并/或可以由可编程单元(诸如可编程门阵列或处理器)组成。本文中描述的模块或计算设备功能优选地被实现为软件模块,但是可以以硬件或固件来表示。通常,本文中描述的模块是指可以与其他模块组合的模块或被划分为子模块的逻辑模块,而不考虑其物理组织或存储方式。
55.计算机系统500可以使用定制的硬连线逻辑、一个或多个asic或fpga、固件和/或程序逻辑(其与计算机系统结合使计算机系统500成为或编程为专用机器)来实施本文中描述的技术。根据一个实施例,本文中的技术由计算机系统500响应于处理器504执行包含在主存储器506中的一个或多个指令的一个或多个序列来执行。可以从诸如存储设备510的另一存储介质将这样的指令读入主存储器506。主存储器506中包含的指令序列的执行使处理器504执行本文中所述的处理步骤。在替代性实施例中,硬连线电路可以代替软件指令来使用或与软件指令结合使用。
56.如本文中所用,术语“非暂时性介质”和类似术语是指存储使机器以特定方式操作的数据和/或指令的任何介质。这样的非暂时性介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如储存设备510。易失性介质包括动态存储器,诸如主存储器506。非暂时性介质的常见形式包括例如软盘、软磁盘、硬盘、固态驱动器、磁带或任何其他磁数据存储介质、cd-rom、任何其他光数据存储介质、具有孔图案的任何物理介质、ram、prom和eprom、flash-eprom、nvram,任何其他存储器片或盒式磁盘以及其网络版本。
57.非暂时性介质不同于传输介质,但是可以与传输介质结合使用。传输介质参与非暂时性介质之间的信息传输。例如,传输介质包括同轴电缆、铜线和光纤,其包括构成总线502的线。传输介质还可以采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的声波或光波。
58.各种形式的介质可涉及将一个或多个指令的一个或多个序列传送给处理器504以供执行。例如,最初可以将指令承载在远程计算机的磁盘或固态驱动器上。远程计算机可以将指令加载到其动态存储器中,并使用调制解调器通过电话线发送指令。计算机系统500本地的调制解调器可以在电话线上接收数据,并使用红外发射器将该数据转换为红外信号。红外检测器可以接收红外信号中携带的数据,并且适当的电路可以将该数据放置在总线502上。总线502将数据携带到主存储器506,处理器504从主存储器506中检索并执行指令。由主存储器506接收的指令可以检索并执行指令。由主存储器506接收的指令可以可选地在由处理器504执行之前或之后被存储在存储设备510上。
59.计算机系统500还包括联接到总线502的通信接口518。通信接口518提供双向数据通信,其联接到连接到一个或多个本地网络的一个或多个网络链路。例如,通信接口518可以是集成服务数字网络(isdn)卡、电缆调制解调器、卫星调制解调器或调制解调器,以提供到对应类型的电话线的数据通信连接。作为另一示例,通信接口518可以是局域网(lan)卡,以提供与兼容lan(或与wan通信的wan组件)的数据通信连接。也可以实现无线链接。在任何这样的实现中,通信接口518发送和接收携带表示各种类型的信息的数字数据流的电信号、电磁信号或光信号。
60.网络链路通常通过一个或多个网络向其他数据设备提供数据通信。例如,网络链路可以通过本地网络提供到主机计算机或到由互联网服务提供商(isp)操作的数据设备的连接。isp依次通过现在通常被称为“互联网(internet)”的全球分组数据通信网络提供数据通信服务。局域网和互联网都使用承载数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路上并且通过通信接口518的信号(其携带去往和来自计算机系统500的数字数据)是传输介质的示例形式。
61.计算机系统500可以通过网络、网络链路和通信接口518发送消息并接收数据(包括程序代码)。在互联网示例中,服务器可以通过互联网、isp、本地网络和通信接口518传输针对应用程序的请求代码。
62.所接收的代码可以在其被接收时由处理器504执行,并/或被存储在储存设备510或其他非易失性储存器中,以供以后执行。
63.前面各部分中描述的进程、方法和算法中的每个可以体现在由一个或多个计算机系统或包括计算机硬件的计算机处理器执行的代码模块中,或者由该代码模块完全或部分自动化。可以在应用专用电路中部分或全部实现进程和算法。
64.前述的各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合旨在落入本公开的范围内。另外,在某些实施方式中,可以省略某些方法或过程框。本文中所述的方法和过程也不限于任何特定的顺序,并且与其相关的框或状态可以以其他适当的顺序执行。例如,可以以不同于具体公开的顺序来执行所描述的框或状态,或者可以在单个框或状态中组合多个框或状态。示例框或状态可以串行、并行或以其他方式执行。块或状态可以被添加到所公开的示例实施例中或从所公开的示例实施例中去除。本文中描述的示例系统和组件可以被配置为与所描述的不同。例如,与所公开的示例实施例相比,元件可以被添加到所公开的示例性实施例中、从所公开的示例性实施例中移除或重新排列。
65.条件语言,诸如“能够”、“能”、“可能”或“可以”,除非另外特别说明,或者在所使用的上下文中另外理解,通常旨在传达某些实施例包括而某些实施例不包括某些特征、元件和/或步骤。因此,这种条件语言通常不旨在暗示特征、元件和/或步骤无论如何都是一个或多个实施例所需的,或者暗示一个或多个实施例必须包括用于在具有或没有用户输入或提示的情况下决定这些特征、元件和/或步骤是否包括在任何特定实施例中的逻辑或将在任何特定实施例中执行的逻辑。
66.在本文中描述的和/或在附图中描绘的流程图中的任何过程描述、元件或框应当被理解为潜在地表示代码的模块、段或部分,其包括一个或多个用于在进程中实现特定逻辑功能或步骤的可执行指令。如本领域技术人员将理解的,替代性实施方式包括在本文中所述实施例的范围内,其中取决于所涉及的功能,可以删除、不按所示的或所讨论的顺序执行(包括基本上同时或以相反的顺序执行)元件或功能。
67.应该强调的是,可以对上述实施例进行许多变型和修改,其元件应被理解为是其他可接受的示例中的一种。所有这些修改和变型旨在包括在本公开的范围内。前面的描述详述了本发明的某些实施例。然而,应当理解,无论前述内容在文本中显示的多么详细,都可以以许多方式来实践本发明。如上所述,应当注意的是,在描述本发明的某些特征或方面时,使用特定术语并不意味着暗示术语在本文中被重新定义为限于包括与该术语相关联的
本发明的特征或方面的任何特定特征。因此,本发明的范围应根据所附权利要求及其任何等同物来解释。
68.引擎、组件和逻辑
69.本文中将某些实施例描述为包括逻辑或多个组件、引擎或机制。引擎可以构成软件引擎(例如,体现在机器可读介质上的代码)或硬件引擎。“硬件引擎”是能够执行某些操作的有形单元,并且可以以某种物理方式被配置或布置。在各种示例实施例中,可以通过软件(例如,应用程序或应用程序部分)将一个或多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或多个硬件引擎(例如,一个处理器或一组处理器)被配置为被操作为执行本文所述的某些操作的硬件引擎。
70.在一些实施例中,可以机械地、电子地或其任何合适的组合来实现硬件引擎。例如,硬件引擎可以包括永久性地被配置为执行某些操作的专用电路或逻辑。例如,硬件引擎可以是专用处理器,诸如现场可编程门阵列(fpga)或专用集成电路(asic)。硬件引擎还可以包括可编程逻辑或电路,其由软件临时被配置为执行某些操作。例如,硬件引擎可以包括由通用处理器或其他可编程处理器执行的软件。一旦通过此类软件进行配置,则硬件引擎将成为专门定制为执行配置功能的特定机器(或机器的特定组件),并且不再是通用处理器。将意识到,机械地、在专用且永久配置的电路中或在临时配置的电路中实施硬件引擎的决定可能受成本和时间考虑的影响。
71.因此,短语“硬件引擎”应被理解为包括有形实体,该有形实体是被物理构造、永久配置(例如,硬连线)或临时配置(例如,编程)为以某种方式操作或执行本文所述的某些操作的实体。如本文中所使用的,“硬件实现的引擎”是指硬件引擎。考虑到硬件引擎被临时配置(例如,编程)的实施例,硬件引擎中的每个无需在任何时候都及时被配置或实例化。例如,在硬件引擎包括由软件被配置为专用处理器的通用处理器的情况下,该通用处理器可以在不同时间分别被配置为不同的专用处理器(例如,包括不同的硬件引擎)。软件相应地配置一个或多个特定处理器,例如,以在一个时间实例中构成特定的硬件引擎,并在不同的时间实例中构成不同的硬件引擎。
72.硬件引擎可以向其他硬件引擎提供信息并从其他硬件引擎接收信息。因此,所描述的硬件引擎可以被认为是通信联接的。在同时存在多个硬件引擎的情况下,可以通过在硬件引擎中的两个或多个之间的信号传输(例如,通过适当的电路和总线)来实现通信。在以不同时间配置或实例化多个硬件引擎的实施例中,可以例如通过在多个硬件引擎可以访问的存储器结构中存储和检索信息来实现这种硬件引擎之间的通信。例如,一个硬件引擎可执行操作并将该操作的输出存储在其通信联接的存储设备中。然后,另一硬件引擎可以在以后的时间访问该存储设备以检索和处理所存储的输出。硬件引擎还可以发起与输入或输出设备的通信,并且可以在资源(例如,信息的集合)上进行操作。
73.本文中描述的示例方法的各种操作可以至少部分地由一个或多个临时配置(例如,通过软件)或永久被配置为执行相关操作的处理器执行。无论是临时配置还是永久配置,这样的处理器都可以构成处理器实现的引擎,其被操作为执行本文所述的一个或多个操作或功能。如本文所使用的,“处理器实现的引擎”是指使用一个或多个处理器实现的硬件引擎。
74.类似地,本文中描述的方法可以至少部分地由处理器实现,其中一个或多个特定
处理器是硬件的示例。例如,方法的操作中的至少一些可以由一个或多个处理器或处理器实现的引擎来执行。此外,一个或多个处理器还可操作为在“云计算”环境中或作为“软件即服务”(saas)支持相关操作的性能。例如,操作中的至少一些可以由一组计算机(作为包括处理器的机器的示例)执行,其中这些操作可以通过网络(例如,互联网)和一个或多个适当的接口(例如,应用程序接口(api))来访问。
75.某些操作的性能可以分布在处理器之间,不仅驻留在单个计算机内,而且可以部署在多个计算机上。在一些示例实施例中,处理器或处理器实现的引擎可以位于单个地理位置中(例如,在家庭环境、办公室环境或服务器场内)。在其他示例实施例中,处理器或处理器实现的引擎可以分布在多个地理位置上。
76.语言
77.在整个说明书中,多个实例可以实现被描述为单个实例的组件、操作或结构。尽管将一种或多种方法的单独操作示出并描述为单独的操作,但是可以同时执行单独操作中的一个或多个,并且不需要按照所示顺序执行操作。在示例配置中被呈现为单独的组件的结构和功能可以被实现为组合的结构或组件。类似地,被呈现为单个组件的结构和功能可以被实现为单独的组件。这些和其他变型、修改、添加和改进落入本文中的主题的范围内。
78.尽管已经参考特定示例实施例描述了本主题的概述,但是在不脱离本公开的实施例的更广范围的情况下,可以对这些实施例进行各种修改和改变。主题的这样的实施例在本文中可以仅仅为了方便起见而单独地或共同地由术语“发明”来指代,并且如果实际上公开了多个公开或概念,则并不旨在将本技术的范围限于任何单个公开或概念。
79.足够详细地描述了本文所示的实施例,以使本领域技术人员能够实践所公开的教导。可以使用其他实施例并从中导出,使得可以在不脱离本公开的范围的情况下进行结构和逻辑上的替换和改变。因此,不应从限制的意义上理解详细描述,并且各种实施例的范围仅由所附权利要求以及这些权利要求所授权的等同物的全部范围来限定。
80.应当理解,“引擎”、“系统”、“数据存储库”和/或“数据库”可以包括软件、硬件、固件和/或电路。在一个示例中,包括能够由处理器执行的指令的一个或多个软件程序可以执行本文中所述的引擎、数据存储库、数据库或系统的一个或多个功能。在另一示例中,电路可以执行相同或相似的功能。替代性实施例可以包括更多、更少或功能上等效的引擎、系统、数据存储库或数据库,并且仍在本实施例的范围内。例如,各种系统、引擎、数据存储库和/或数据库的功能可以被不同地组合或划分。
81.本文所述的数据存储库可以是任何合适的结构(例如,活动数据库、关系数据库、自引用数据库、表、矩阵、数组、平面文件、面向文档的存储系统、非关系型no-sql系统等),并且可以基于云或以其他方式。
82.如本文所使用的,术语“或”可被解释为包含性的或排他性的意义。此外,可以为在本文中被描述为单个实例的资源、操作或结构提供多个实例。另外,各种资源、操作、引擎、引擎和数据存储库之间的边界在某种程度上是任意的,并且在特定说明性配置的上下文中说明了特定操作。可以设想其他的功能分配,并且可以落入本公开的各种实施例的范围内。一般而言,在示例配置中呈现为单独资源的结构和功能可以被实现为组合的结构或资源。类似地,呈现为单个资源的结构和功能可以实现为单独的资源。这些和其他变型、修改、添加和改进落入由所附权利要求表示的本公开的实施例的范围内。因此,说明书和附图应被
认为是说明性的而不是限制性的。
83.条件语言,诸如“能够”、“能”、“可能”或“可以”,除非另外特别说明,或者在所使用的上下文中另外理解,通常旨在传达某些实施例包括而某些实施例不包括某些特征、元件和/或步骤。因此,这种条件语言通常不旨在暗示特征、元件和/或步骤无论如何都是一个或多个实施例所需的,或者暗示一个或多个实施例必须包括用于在具有或没有用户输入或提示的情况下决定这些特征、元件和/或步骤是否包括在任何特定实施例中的逻辑或将在任何特定实施例中执行的逻辑。
84.尽管出于说明的目的已经基于当前被认为是最实际和优选的实施方式详细描述了本发明,但是应当理解,这种细节仅用于该说明的目的,并且本发明不限于所公开的实施方式,但是,相反地,其旨在覆盖所附权利要求的精神和范围内的修改和等同布置。例如,应当理解,本发明考虑了在可能的范围内,任何实施例的一个或多个特征可以与任何其他实施例的一个或多个特征及进行组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献