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

用于高效存储和访问时空数据的存储器架构的制作方法

2022-08-28 04:27:18 来源:中国专利 TAG:

用于高效存储和访问时空数据的存储器架构
1.相关申请的交叉引用
2.本技术要求于2019年12月10日提交的美国申请号16/709,217的优先权,该申请的全部内容通过引用并入本文。
技术领域
3.本发明总体上涉及存储器架构,并且更具体地,在一些实施例中,涉及用于高效存储和访问时空数据的存储器架构。


背景技术:

4.平面存储器模型或线性存储器模型是指存储器寻址范式,其中存储器对于程序而言表现为单个连续的地址空间。在这样的模型中,中央处理单元(cpu)可以直接(并且线性地)寻址所有可用存储器,而无需求助于任何类型的存储器分段或分页方案。尽管如此,可以在线性存储器模型之上实现存储器管理和地址转换,以促进操作系统功能、资源保护、多任务处理或增加存储器容量,使其超出处理器物理地址空间所导致的限制。
5.虚拟存储器寻址是一种存储器管理技术,它提供了对在给定机器上实际可用的存储资源的理想化抽象。计算机的操作系统使用硬件和软件的组合,将由程序使用的存储器地址(称为虚拟地址)映射到计算机存储器中的物理地址。从进程或任务的角度来看,主存储器表现为连续的地址空间或连续分段的集合。操作系统管理虚拟地址空间和物理存储器到虚拟存储器的分配。cpu中的称为存储器管理单元(mmu)的地址转换硬件自动地将虚拟地址转换为物理地址。操作系统内的软件可以例如使用分页技术来扩展这些能力,以提供可以超过物理存储器容量的虚拟地址空间,从而引用与计算机中物理存在的相比更多的存储器。
6.不管是使用线性存储器寻址方案(按照该方案,对物理存储器进行直接和线性寻址)还是使用虚拟寻址方案(按照该方案,虚拟地址空间表现为连续并且采用线性寻址,但潜在地映射到物理存储器的不连续的部分),在存储器中存储和访问数据的顺序可能不会反映数据的真实世界特征。现有的存储器寻址方案无法充分反映某些类型数据的真实世界特征,因此面临许多与其相关的技术缺陷。本文描述了解决这些缺陷中的至少一些的技术方案。


技术实现要素:

7.本文描述了用于以优化多维数据在线性数据存储器中的存储和访问的方式对此类数据进行存储器地址编码的系统、方法和非暂时性计算机可读介质。多维数据可以包括与任何数量的维度中的每一者相关联的各个数据。在示例性实施例中,多维数据可以是包括两个或更多个空间维度和时间维度的时空数据。在示例性实施例中,提供了改进的存储器架构,其包括将多维坐标作为输入并产生线性物理存储器地址的地址编码器。地址编码器对多维数据进行编码,使得在多维空间中彼此靠近的两个多维坐标将很可能彼此紧挨着
存储在线性数据存储器中。以这种方式,可以减少主存储器访问的数量,从而减少总体存储器访问延迟,特别是在沿着任何给定维度从一个多维坐标移动到另一个多维坐标的各个概率很接近的真实世界应用方面。
8.在示例性实施例中,公开了一种用于对包括第一多维数据和第二多维数据的多维数据进行存储器地址编码的计算机实现方法。该方法包括:对第一多维数据应用地址编码以获得用于第一多维数据的第一存储器地址;以及对第二多维数据应用地址编码以获得用于第二多维数据的第二存储器地址。第二多维数据是从第一多维数据通过将第一多维数据中与特定维度对应的相应数据增加一个单位来获得的。该方法还包括:将第一多维数据存储在存储器中的第一存储器地址处;以及将第二多维数据存储在存储器中的第二存储器地址处。地址编码确保了第二存储器地址和第一存储器地址之间的线性差独立于多维数据的任何维度的尺寸而有界。
9.在示例性实施例中,公开了一种用于对包括第一多维数据和第二多维数据的多维数据进行存储器地址编码的系统。该系统包括至少一个处理器和至少一个存储计算机可执行指令的存储器。至少一个处理器配置成访问至少一个存储器并执行计算机可执行指令以执行操作集。该操作集包括:对第一多维数据应用地址编码以获得用于第一多维数据的第一存储器地址;以及对第二多维数据应用地址编码以获得用于第二多维数据的第二存储器地址。第二多维数据是从第一多维数据通过将第一多维数据中与特定维度对应的相应数据增加一个单位来获得的。该组操作还包括:将第一多维数据存储在存储器中的第一存储器地址处;以及将第二多维数据存储在存储器中的第二存储器地址处。地址编码确保了第二存储器地址和第一存储器地址之间的线性差独立于多维数据的任何维度的尺寸而有界。
10.在示例性实施例中,公开了一种用于对包括第一多维数据和第二多维数据的多维数据进行存储器地址编码的计算机程序产品。该计算机程序产品包括可由处理电路读取的非暂时性计算机可读介质。非暂时性计算机可读介质存储可由处理电路执行以使方法被执行的指令。该方法包括:对第一多维数据应用地址编码以获得用于第一多维数据的第一存储器地址;以及对第二多维数据应用地址编码以获得用于第二多维数据的第二存储器地址。第二多维数据是从第一多维数据通过将第一多维数据中与特定维度对应的相应数据增加一个单位来获得的。该方法还包括:将第一多维数据存储在存储器中的第一存储器地址处;以及将第二多维数据存储在存储器中的第二存储器地址处。地址编码确保了第二存储器地址和第一存储器地址之间的线性差独立于多维数据的任何维度的尺寸而有界。
11.本发明的示例性实施例的以下附加特征可以结合上述方法、系统或计算机程序产品中的任一者来实现。在示例性实施例中,第一多维数据和第二多维数据表示时空数据。在一个示例性实施例中,第一多维数据包括与第一维度对应的第一数据和与第二维度对应的第二数据。在示例性实施例中,对第一多维数据应用地址编码以获得第一存储器地址包括:识别第一数据的第一位表示;识别第二数据的第二位表示;以及对第一位表示和第二位表示进行交织以获得第一存储器地址。
12.在示例性实施例中,对第一位表示和第二位表示进行交织包括:将包括第一位表示的最低有效位和第二位表示的最低有效位的第一位集合组合在一起;以及将一个或多个附加的位集合附接到第一位集合的连续更高有效位位置中以获得第一存储器地址,其中每个附加的位集合包括来自第一数据和第二数据中的每一者的在相同位位置处的相应位。
13.在示例性实施例中,存储器是主存储器,并且配置成由本文公开的系统执行的方法或操作集包括:接收访问第一多维数据的第一存储器访问请求;以及对第一多维数据应用地址编码以获得第一存储器地址。该方法/操作集还包括:至少部分地基于第一存储器地址的至少一部分来确定第一多维数据没有存储在高速缓冲存储器中;从主存储器中检索包括第一多维数据的数据块;以及将数据块存储在高速缓冲存储器中。
14.在示例性实施例中,上述方法/操作集还包括:接收访问第二多维数据的第二存储器访问请求;以及对第二多维数据应用地址编码以获得第二存储器地址。该方法/操作集还包括:至少部分地基于第二存储器地址的至少一部分来确定第二多维数据存储在高速缓冲存储器中;以及从高速缓冲存储器中检索第二多维数据存储器,其中先前存储在高速缓冲存储器中的数据块还包括第二多维数据。
15.在示例性实施例中,上述数据块在大小上对应于高速缓冲存储器的最小缓存行。在示例性实施例中,至少部分地基于地址编码,数据块还包括第二多维数据的概率大于百分之五十。更一般地,在示例性实施例中,地址编码确保第一存储器地址和第二存储器地址之间的线性差在2
(4k

1)
内的概率为2
(-k)
,其中k≥1。
16.本文公开的系统、方法和非暂时性计算机可读介质的这些和其他特征、相关结构要素和部件组合的操作方法和功能以及制造经济性在参考附图考虑以下描述和所附权利要求后将变得更加明显,所有这些都形成本说明书的一部分,其中相似的附图标记表示不同附图中的对应部分。然而,应明确理解,附图仅用于说明和描述的目的,并不旨在作为对本发明的限制的定义。
附图说明
17.在所附权利要求中特别阐述了本技术的多种实施例的某些特征。通过参考以下阐述利用到本发明原理的说明性实施例的具体实施方式,将获得对技术的特征和优点的更好理解,其附图中:
18.图1示出根据本发明示例性实施例的响应于对时空数据的存储器请求的存储器访问序列。
19.图2示出用于时空数据的线性存储器寻址方案。
20.图3示出根据本发明示例性实施例的用于时空数据的四维(4d)存储器寻址方案。
21.图4示出根据本发明示例性实施例的用于时空数据的存储器地址编码的图形描绘。
22.图5是根据本发明示例性实施例的用于访问存储器中使用4d存储器地址编码来编码的时空数据的说明性方法的过程流程图。
23.图6是根据本发明示例性实施例的用于动态确定用于多维坐标数据的地址编码的说明性方法的过程流程图。
24.图7是示出配置成实现本发明的示例性实施例的示例网络架构的示意框图。
具体实施方式
25.在以下描述中,阐述了某些特定细节以便提供对本发明的多种实施例的透彻理解。然而,本领域普通技术人员将理解,可以在没有这些细节的情况下实践本发明。此外,虽
然本文公开了本发明的多种实施例,但可以根据本领域普通技术人员的公知常识在本发明的范围内进行许多调整和修改。这样的修改包括对本发明的任何方面的已知等同替代,以便以基本相同的方式实现相同的结果。
26.除非上下文另有要求,否则在整个本说明书和权利要求书中,词语“包括(comprise)”及其变体(例如“包括(comprises)”和“包括(comprising)”)应解释为开放、包含的意义,即“包括但不限于”。在整个说明书中引用数值范围旨在用作单独引用落入包括定义该范围的值的范围内的每个单独的值的简写符号,并且每个单独的值包含在说明书中,如同在本文中单独引用了它。此外,单数形式“a”、“an”和“the”包括复数指示物,除非上下文另有明确规定。短语“...中的至少一者”、“选自...组中的至少一者”、或“选自由...组成的组中的至少一者”等应解释为析取(例如,不应解释为a中的至少一者和b中的至少一者)。
27.在整个说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书的多个地方出现的短语“在一个实施例中”或“在实施例中”不一定都指代相同的实施例,而是在某些情况下有可能是这样。此外,特定特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。
28.本发明的示例性实施例尤其涉及用于使用地址编码器对多维数据的存储器地址进行编码的系统、方法、计算机可读介质、技术和方法,其使得能够更有效地存储和访问这种数据。更具体地,本发明的示例性实施例涉及包括地址编码器的改进的存储器架构,该地址编码器配置成以更接近地反映诸如时空数据的多维数据的真实世界特征的方式对存储器地址进行编码。
29.在示例性实施例中,多维数据可以是多坐标数据,其包括用于多个空间维度中的每一者的相应数据(例如,相应坐标值),并且可选地包括用于时间维度的相应数据。具体地,在示例性实施例中,多坐标数据可以是n维数据,其中两个或更多个维度是空间维度,且可选地一个维度是时间维度。一般来说,n维多坐标数据可以表示为(s1,s2,

,s
n-1
,t),其中si表示与第i个空间维度对应的坐标值,t表示与时间维度对应的坐标值。在某些示例性实施例中,可以不表示时间维度,在这种情况下,n维多坐标数据可以简单地表示为(s1,s2,...,sn)。作为非限制性示例,多坐标数据可以是由具有(x,y)形态的坐标表示的二维(2d)数据;由具有(x,y,z)形态的坐标表示的三维(3d)数据;由具有(x,y,z,t)形态的坐标表示的4d数据;等等。如本文所使用的,术语“4d坐标数据”或其变体是指具有三个空间维度和一个时间维度的数据。
30.每个维度可以具有与其相关联的相应大小,该大小确定能够针对该维度表示的坐标值的范围。例如,如果特定维度(例如,x坐标方向)具有对应大小w,则x坐标值可以在零到w的范围内。在某些示例性实施例中,坐标值可以是在值范围内的任何实数值。在其他示例性实施例中,特定维度可以采用具有单位值增量的值范围内的坐标值离散集。单位值(或简称单位)可以是任何合适的整数或十进制值。为了便于解释,本文中采用整数单位值描述本发明的示例性实施例。此外,术语维度和坐标方向或其变体有时可以在本文中互换使用。
31.本发明的示例性实施例涉及一种改进的存储器架构,该架构使得能够以更准确地反映多维空间中的多维数据之间的关系的方式在线性数据存储器中存储和访问多维数据
(例如时空数据)。更具体地,根据本发明的示例性实施例的改进的存储器架构包括地址编码器,该地址编码器以确保在多维空间中彼此靠近的两个坐标(例如,两个坐标之间的n维欧几里得距离很小)将很可能彼此紧挨着存储在线性数据存储器中的方式对多维数据进行编码。
32.因此,当例如响应于对第一多维数据(例如,表示为(s1,s2,

,s
n-1,t)的坐标)的存储器访问请求而从主存储器中检索出该数据并将其存储在高速缓冲存储器中时,根据本发明的示例性实施例的改进的存储器架构和相关联的存储器地址编码器增加这样的可能性:在多维空间中靠近第一多维数据的第二多维数据也已在同一个数据块中与第一多维数据一同从主存储器中检索出并存储在高速缓冲存储器中。这进而减少检索出所请求的多维数据可能需要的主存储器访问次数,从而减少与存储器访问相关的总体延迟并在存储和访问多维数据(例如时空数据)方面构成对线性存储器架构的技术改进。如本文所使用的,数据块可以指缓存行,其对应于主存储器和高速缓冲存储器之间的数据传输的最小合格单元。取决于存储器架构,缓存行可以具有任何合适的字节大小,例如64千字节(kb)、128kb、256kb等。在示例性实施例中,如果对缓存行内的任何存储器位置进行读取或写入,则对整个缓存行进行读取或写入。
33.线性存储器架构通常假设所有被读取和写入的数据都是线性的,其中读取请求包括标量存储器地址和标量数据长度,而写入请求包括标量存储器地址和要写入的线性数据缓冲区。线性存储器架构通常具有一个或多个级别的高速缓冲存储器(例如,数据高速缓存)以改善访问延迟。正在读取/写入的数据块可以存储在数据高速缓存中,该数据高速缓存比主存储器更快且更小。如果后续的读/写请求命中同一个数据块,则无需访问主存储器,主存储器访问可能比数据高速缓存访问慢一个数量级以上。取而代之使用临时存储在数据高速缓存中的数据。
34.虽然只要数据可以序列化到线性数据缓冲区中,传统的线性存储器架构通常能够存储任何类型的数据,但它们无法捕获真实世界数据背后的语义,因此对于此类数据无法实现优化的存储器访问性能。通常将诸如传感器数据的真实世界数据表示为具有空间坐标(x,y,z)和时间戳t的4d坐标数据。例如,假设提供了一个4d数字数组d(x,y,z,t)来表示4d坐标的集合。进一步假设坐标方向x、y、z和t具有各自的维度尺寸w、h、d和t。也就是说,在所呈现的示例中,空间坐标x的取值范围可以是0到w-1;空间坐标y的取值范围可以是0到h-1;空间坐标z的取值范围可以是0到d-1;时间坐标t的取值范围可以是0到t-1。因此,4d数组d(x,y,z,t)的总维度尺寸为w*h*d*t。
35.例如,传统的线性存储器架构会以由k=x y*w z*w*h t*w*h*d给定的存储器地址k将上述示例性4d数组的数据存储在线性存储器m(k)中。对于首先访问4d坐标(x,y,z,t)然后访问4d坐标(x 1,y,z,t)的存储器访问模式,第二次存储器访问很可能会导致高速缓存命中,因为第一次存储器访问还会将响应于第一次存储器访问而获取的同一数据块中的其他数据(即在主存储器中位于在存储器地址k处的检索到的数据附近的数据,例如存储器地址k 1处的数据)带入高速缓冲存储器中。但是,如果存储器访问模式更改为首先访问4d坐标(x,y,z,t)然后访问4d坐标(x,y 1,z,t)的模式,则各自的存储器地址将是k和k w,如果w(x坐标的维度尺寸)较大,则第二次存储器访问不太可能导致高速缓存命中。这是因为对存储在存储器地址k处的数据的第一次存储器访问将存储在存储器地址k w处的数据带入高
速缓冲存储器中的可能性变得很小,其中当w较大时,存储器地址k w的位置离存储器地址k较远。如果-在对4d坐标(x,y,z,t)的第一次存储器访问之后-第二次存储器访问是针对与存储器地址k w*h对应的4d坐标(x,y,z 1,t)或与存储器地址k w*h*d对应的4d坐标(x,y,z,t 1),则高速缓存命中的可能性甚至更小。
36.因此,传统的线性存储器架构对某些存储器访问模式更有利,例如沿特定维度(例如,在x方向上)移动。这种对特定坐标方向的偏向导致存储器访问性能在沿任何坐标方向移动的相应概率基本相同的真实世界应用(诸如机器人应用、车辆导航应用等)中较差的技术问题。应当理解,对于传统的线性存储器架构而言,与存在坐标偏向的特定坐标方向无关地,都存在这种存储器访问性能较差的技术问题。例如,再次参考上述示例性4d数组,存储4d坐标(x,y,z,t)的存储器地址k可以取而代之由k=y x*h z*h*w t*h*w*d给定,在这种情况下,线性存储器架构会在y坐标方向上具有偏向。在这样的示例场景中,首先访问4d坐标(x,y,z,t)然后访问4d坐标(x 1,y,z,t)的存储器访问模式由于y坐标方向上的坐标偏向而可能会对于第二次存储器访问导致高速缓存未命中。类似地,传统的线性架构可以替代地具有z或t方向上的坐标偏向。
37.本发明的示例性实施例以改进的存储器架构的形态提供对上述技术问题的技术方案,存储器架构包括存储器地址编码器,该存储器地址编码器对多维数据应用地址编码以使得能够以更准确地反映数据的真实世界语义的方式将数据存储在线性数据存储器中。更具体地,与传统的线性存储器架构相比,根据本发明示例性实施例的改进的存储器架构和地址编码器确保在多维空间中彼此靠近的两个坐标更有可能彼此紧挨着存储在线性数据存储器中。具体地,本文描述的改进的存储器架构和地址编码器确保分别与在特定坐标方向(维度)上相差一个单位的两个坐标对应的两个存储器地址之间的线性差独立于任何维度的相应尺寸且与两个坐标有差异的方向无关地有界。这进而增加对于在任何方向/维度上与先前访问的多维数据不同的多维数据的高速缓存命中的可能性。
38.结果,根据本发明的示例性实施例的改进的存储器架构并不偏向于任何特定的坐标方向,因此基本减轻了传统的线性存储器架构所带来的坐标偏向的技术问题。通过以基本上减轻坐标偏向的方式优化多维坐标数据在线性数据存储器中的存储,本发明的示例性实施例增加高速缓存命中的可能性和数量,并且因此减少总体存储器延迟,这构成了对计算机功能的改进,更具体地说,对线性计算机存储器架构的改进。根据本发明的示例性实施例的改进的存储器架构和地址编码器的具体实施方式将在本公开的后文中通过参考多种附图更详细地描述。
39.在多种其他示例性应用场景中,实际上可能理想的是存储器架构具有一定程度的坐标偏向。例如,如果特定类型的访问模式比其他类型的访问模式更频繁地出现,则可能理想的是提供一种对更频繁地观察到的访问模式更有利的存储器地址编码,以便为存储器请求增加高速缓存命中的可能性。例如,用于与沿着相对平坦的地形的车辆路线对应的地图数据的存储器访问模式可能会相对于z方向更频繁地访问x和y坐标方向上的数据,在这种情况下,提供x和y方向(而不是z方向)上的坐标偏向的存储器地址编码可能是理想的。作为另一个非限制性示例,用于与沿相对笔直但多丘陵的地形的车辆路线对应的地图数据的存储器访问模式可能更频繁地访问x和z坐标方向上的数据或y和z坐标方向上的数据,在这种情况下,提供非x方向或非y方向的坐标偏向的存储器地址编码可能是理想的。
40.在一些示例性实施例中,正在读取或写入的数据的类型可以影响可能是理想的坐标偏向的类型。例如,如果正在读取/写入地图数据,则可以至少部分地从车辆正在经过的导航路线确定理想的坐标偏向。另一方面,如果正在读取/写入传感器数据(例如,lidar数据),则可以从导航路线以外的因素(例如在车辆周围环境中扫描的对象)确定理想的坐标偏向。更具体地,在非限制性示例中,对于用于主要覆盖平坦地形的车辆导航路线的地图数据,x/y方向上的坐标偏向可能是理想的,而对于传感器数据(例如,扫描高层建筑的lidar),z方向上的坐标偏向可能是理想的,甚至在车辆在沿着平坦地形路线行驶时也是如此。此外,与数据本身相关联的一个或多个约束可以指示理想的坐标偏向。例如,地图数据可能包括会阻止车辆沿某些方向行驶的约束条件(例如,建筑物、路面、地理特征等)。结果,存储器访问模式可能导致基于此类约束针对地图数据的不同部分更频繁地访问不同坐标方向。
41.如前所述,传统的线性存储器架构面临特定方向上的坐标偏向的技术问题,该坐标偏向可能在涉及并不显着地倾向于任何特定方向的存储器访问模式的应用场景中引起较差的存储器访问延迟。涉及包括基本减轻了任何特定方向上的坐标偏向的地址编码器的改进的存储器架构的本发明的示例性实施例构成了对该技术问题的技术方案。此外,通过表现出特定方向上的坐标偏向,传统的线性存储器架构还面临在涉及倾向于与该偏向方向不同的方向的存储器访问模式的应用场景中的存储器访问性能较差的技术问题。本发明的某些示例性实施例还通过提供一种配置成动态地确定用于编码多维数据(例如多坐标数据)的地址编码的存储器架构,提供了对表现出与存储器访问模式所倾向的方向不同的方向上的坐标偏向的传统的线性存储器架构所面临的该技术问题的技术解决方案。
42.更具体地,随着存储器访问模式改变并且此类访问模式所倾向的相应坐标方向也改变,本发明的示例性实施例可以动态地确定提供对于当前存储器访问模式理想的坐标偏向(或无坐标偏向)的地址编码。结果,存储器地址编码可以动态改变以更紧密地匹配当前存储器访问模式,这增加高速缓存命中的可能性和数量,并减少整体存储器访问延迟,从而改善计算机功能。动态地确定地址编码可以包括至少部分地与存储器读/写请求同时动态地生成地址编码或从预配置的地址编码集合中选择地址编码。根据本发明的示例性实施例的用于动态确定地址编码的具体实施方式将在本公开的后文中通过参考各种附图来更详细地描述。
43.图1示出根据本发明示例性实施例的响应于对时空数据的存储器请求的存储器访问序列。图5是根据本发明示例性实施例的用于访问存储器中使用4d存储器地址编码进行编码的时空数据的说明性方法500的过程流程图。下面将通过参考彼此来描述图1和图5。虽然在本文中可能参考4d坐标系来描述图5的示例方法500,但是应当理解,方法500可以类推到任何多维坐标系。
44.本文所述的任何方法的每个操作都可以由图1或图7中描绘的引擎/程序模块中的一者或多者执行,其操作将在下文中更详细地描述。这些引擎/程序模块可以以硬件、软件和/或固件的任何组合来实现。在某些示例性实施例中,这些引擎/程序模块中的一者或多者可以至少部分地实现为包括计算机可执行指令的软件和/或固件模块,当由处理电路执行这些指令时,使得一个或多个操作被执行。在示例性实施例中,这些引擎/程序模块可以是在诸如定制的fpga或asic的定制的计算机器内实现的定制的计算机可执行逻辑。在本文
中描述为配置成实现本发明的示例性实施例的系统或设备可以包括一个或多个处理电路,每个处理电路可以包括一个或多个处理单元或内核。计算机可执行指令可以包括计算机可执行程序代码,其在由处理内核执行时可以使得包含在计算机可执行程序代码中或由该计算机可执行程序代码引用的输入数据被处理内核访问和处理以产生输出数据。
45.现在结合图1来参考图5,在方法500的框502处,可以接收针对4d坐标(x,y,z,t)的存储器请求102,该坐标包括三个空间维度x、y和z以及时间维度t。存储器请求102可以是对地图数据、传感器数据等的请求。存储器请求102可以接收自诸如导航应用的基于位置的服务(lbs)应用、基于传感器的应用程序、或机器人应用程序等。虽然将在作为读取请求的存储器请求102的上下文中描述示例方法500,但是应当理解,这里描述的存储器架构和相关联的存储器地址编码器也可以用于编码对应于写入请求的数据。
46.在方法500的块504处,可以确定用于4d坐标(x,y,z,t)的经编码的存储器地址。在一些示例性实施例中,可以是动态确定用于为与存储器请求102相关的4d坐标确定经编码的存储器地址的地址编码。这些示例性实施例将在本公开的后文中参考图6更详细地描述。图5的示例方法500假定要使用的地址编码是预定的。更具体地,示例方法500假定在块504处应用以确定经编码的存储器地址的地址编码是使得对任何特定维度(坐标方向)的坐标偏向最小化的编码。
47.特别地,在示例性实施例中,在块504处用于为4d坐标(x,y,z,t)确定经编码的存储器地址的地址编码可以基于对4d坐标的各种坐标值的位表示进行交织以获得经编码的存储器地址的技术。更具体地,在示例性实施例中,可以提供地址编码器104。地址编码器104可以配置成接收4d坐标(x,y,z,t)作为输入并且生成经编码的存储器地址。
48.在示例性实施例中,地址编码器104可以为4d坐标的每个坐标值确定相应位表示。例如,用于x坐标值的位表示可以由x=xnx
n-1

x1x0给定,其中x0是最低有效位(lsb),xn是最高有效位(msb)。类似地,用于其他坐标值的位表示可以由y=y
nyn-1

y1y0、z=z
nzn-1

z1z0和t=tnt
n-1

t1t0给定。因此,示例性4d坐标(8,13,22,34)将分别具有以下用于x、y、z和t坐标值的位表示:1000、1101、10110和100010。
49.应当理解,根据坐标值,相应的位表示可以具有不同数量的位。例如,用于上例中x坐标值8的位表示是1000,但用于t坐标值34的位表示是100010。然而,为了根据本发明的示例性实施例由地址编码器104用以获得经编码的存储器地址的交织方案的目的,地址编码器104可以根据需要将前导零添加到一个或多个位表示,以确保所有位表示包括相同数量的位,该相同数量的位对应于用于由存储器架构采用的存储器地址的位长度。
50.虽然本文关于本发明的某些示例性实施例可能将用于不同坐标值的位表示描述成根据需要通过添加前导零来包括相同数量的位,但这种示例位表示可以不一定反映用于给定存储器架构中的存储器地址的位。例如,基于前导零的添加,用于上述示例的x、y、z和t坐标值各自的位表示可以分别为001000、001101、010110和100010。虽然这些示例位表示当前具有相同的位长,但它们可能不反映用于存储器地址的实际位长(例如,32位、64位等)。在一些示例性实施例中,可以根据需要将前导零添加到位表示以确保位表示具有与用于存储器地址的位长度相等的位长度。在其他示例性实施例中,可以根据需要将前导零添加到通过处理位表示来获得的输出,以便获得用于4d坐标的具有适当位长的经编码的存储器地址。
51.在本发明的示例性实施例中,地址编码器104可以配置成将交织方案应用于4d坐标(x,y,z,t)的坐标值各自的位表示以获得用于4d坐标的经编码的存储器地址。更具体地,来自地址编码器104的输出(经编码的存储器地址)可以由k=t
nznyn
xnt
n-1zn-1yn-1
x
n-1

t0z0y0x0给定。因此,在示例性实施例中,经编码的存储器地址k可以通过以使任何特定坐标方向上的移动通常不比任何其他坐标方向上的移动更有利的方式(即以避免或至少实质上减少坐标偏向的方式)对不同坐标值的位表示进行交织来获得。具体来说,经交织编码的存储器地址k是通过以下操作来获得的:先将每个位表示中的lsb位置的位值组合在一起,然后依次移动到每个位表示中更高有效位位置,将在每个位表示中处于相同的位位置的位值组合在一起,并将这些经组合的值附接到经交织的输出中连续更高有效位位置处,以便最终获得经编码的存储器地址k。
52.作为非限制性示例,假设在块502处接收到的存储器请求102是针对来自之前介绍的示例的4d坐标(8,13,22,34)。如前所述,用于x、y、z和t坐标值的位表示分别为1000、1101、10110和100010。在将前导零添加到用于x、y和z坐标值的位表示使得它们具有与用于t坐标值的位表示相同数量的位之后,我们有以下位表示:x=001000、y=001101、z=010110和t=100010。这些具体位表示对应于以下泛化位表示:x=x5x4x3x2x1x0、y=y5y4y3y2y1y0、z=z5z4z3z2z1z0和t=t5t4t3t2t1t0。通过应用上述交织方案,地址编码器104针对这些通用位表示的输出将由k=t5z5y5x5t4z4y4x4t3z3y3x3t2z2y2x2t1z1y1x1t0z0y0x0给定,对于示例性4d坐标(8,13,22,34)将是示例性地示出为具有位长度24的k=100001000011011011000010。如果存储器架构为存储器地址使用32位,则可以将8个前导零附接到上面的k以产生k=00000000100001000011011011000010作为经编码的存储器地址。作为替代,可以将前导零附接到每个位表示以使它们的总长度为32位,使得通过上述交织技术获得的k已具有所需位长。
53.更详细地参考上述交织技术,在构造经编码的存储器地址k时,地址编码器104可以首先将每个位表示的最低有效位位置中的相应位值组合在一起,其泛化形式将由t0z0y0x0给定,且对于上面介绍的具体示例而言是0010。然后,地址编码器104可以将每个比特表示中来自相同的逐渐更高有效位位置的相应位值连续地组合在一起,并将它们附接到当前编码器输出的相应更高有效比特位置中。例如,将与每个位表示中的下一个更高有效位位置对应的位值(例如,t1z1y1x1)组合在一起以获得1100,然后将其附接到0010以获得11000010。接下来将与每个位表示中连续的下一个更高有效位位置对应的位值(例如,t2z2y2x2)组合在一起以获得0110,然后将其附接到11000010以获得011011000010。地址编码器104继续此过程,直到每个位表示的最高有效位位置中的位值被组合在一起并附接到当前编码器输出以获得经编码的最终存储器地址。
54.通过对n维坐标的位表示进行交织来获得用于n维坐标的存储器地址的上述交织技术使得多坐标数据以确保在n维空间中彼此靠近(例如基于坐标之间的n维欧几里德距离来确定)的n维坐标很可能还彼此紧挨着存储在线性数据存储器中的方式被存储在线性数据存储器中。结果,坐标偏向显着减小。在某些示例性实施例中,可以将用于交织不同坐标值的位表示的顺序调配以潜在地更进一步减少坐标偏向。例如,在示例性实施例中,可以改变存储器地址编码以将交织顺序从t
nznyn
xnt
n-1zn-1yn-1
x
n-1

t0z0y0x0改变为x
nynzn
tnx
n-1yn-1zn-1
t
n-1

x0y0z0t0或tnx
nynzn
t
n-1
x
n-1yn-1zn-1

t0x0y0z0等。在示例性实施例中,可以周期性地
或基于观察到的存储器访问模式改变交织顺序。
55.更具体地,根据本发明示例性实施例的上述地址编码技术确保在给定第一n维坐标(cn,c
n-1
,...,c1,c0)的情况下,如果将任何特定坐标值ci增加一个单位值来获得第二n维坐标,则第一n维坐标的经编码的存储器地址和第二n维坐标的经编码的存储器地址之间的线性差独立于n个维度中的任一者的尺寸而有界。
56.特别地,利用例如采用上述示例交织方案的地址编码的本发明的示例性实施例提供关于任意两个经编码的存储器地址在线性存储器中彼此之间相距在给定的有界距离之内的可能性的概率分布,该概率分布实质上更优于传统的线性存储器架构。更具体地说,在示例性实施例中,上述示例交织方案确保任何两个经编码的存储器地址在线性存储器中都以2
(-i)
的概率存储在由2
(4i-1)
给定的有界距离内,其中i≥1。在此上下文中,任何两个存储器地址之间的有界距离可以指两个存储器地址之间的最大存储器位置数。
57.更具体地说,关于上述示例交织方案的概率分布确保任何两个经编码的存储器地址在2
(4*1-1)
=23=8的有界距离内的概率为2
(-1)
=1/2=50%。继续类似地,对于i=2,任何两个经编码的存储器地址在2
(4*2-1)
=27=128的有界距离内的概率为2
(-2)
=1/4=25%;对于i=3,任何两个经编码的存储器地址在2
(4*3-1)
=2
11
=2048的有界距离内的概率为2
(-3)
=1/8=12.5%;对于i=4,任何两个经编码的存储器地址在2
(4*4-1)
=2
15
=32768的有界距离内的概率为2
(-4)
=1/16=6.25%;对于i=5,任何两个经编码的存储器地址在2
(4*5-1)
=2
19
=524288的有界距离内的概率为2
(-5)
=1/32=3.125%;以此类推。随着i值的增加,相应的有界距离呈指数增长,对应的概率接近零。累积概率收敛到100%。因此,对于上述示例交织方案,任何两个经编码的存储器地址有75%的机会在128的有界距离内。特别是,如果我们假设缓存行例如能够保存不少于128个值,关于上述示例性4d交织技术的概率分布对于在第一次存储器访问之后的第二次存储器访问确保75%的高速缓存命中率。
58.例如,如上详述,用于示例性4d坐标(8,13,22,34)的存储器地址k1将由k1=100001000011011011000010给定。如果我们通过将x坐标值增加一来获得了另一个4d坐标(即,(9,13,22,34)),那么用于经增加的4d坐标的存储器地址k2将由k2=100001000011011011000011给定。k1和k2之间的线性差为1,这显然小于有界距离8,即关于示例交织技术的概率分布确保其将在50%的时间内发生。类似地,通过对示例性4d坐标(8,13,22,34)的y、z和t坐标方向增加一个单位来获得的其他示例性4d坐标将分别是(8,14,22,34)、(8,13,23,34)和(8,13,22,35)。那么用于这些增加的4d坐标的经编码的存储器地址将分别由k3=100001000011011011100000、k4=100001000011011011000110和k5=100001000011011011001010给定。进而,k3和k1之间的线性差为30;k4和k1之间的线性差为4;并且k5和k1之间的线性差为8。因此,对于示例性4d坐标(8,13,22,34),通过对特定坐标方向将坐标值增加一个单位值来获得的四个4d坐标中的三个是在8的有界距离内,并且所有四个4d坐标都在128的有界距离内。因此,假设缓存行的值不少于128个,如果第一次存储器访问对应于4d坐标(8,13,22,34),则对于通过将4d坐标(8,13,22,34)的特定坐标值增加一个单位值来获得的四个4d坐标中的任何一者的第二次存储器访问将具有100%的高速缓存命中率。因此,在此示例中,高速缓存命中率甚至高于概率分布所保证的命中率。
59.相比之下,考虑与用于将示例性4d坐标(x,y,z,t)存储在线性存储器m(k)中由k=x y*w z*w*h t*w*h*d给定的存储器地址k处的传统线性存储器架构相关的概率分布,其中
w、h、d分别表示x、y、z坐标方向的维度尺寸。那么很明显,关于这种传统线性存储器架构的概率分布将提供:两个存储器地址之间的距离为1的概率为25%(例如,如果两个存储器地址仅在x坐标方向上相差一个单位值);两个存储器地址之间的距离在w和w*h之间的概率为25%(例如,如果两个存储器地址在y坐标方向上不同);两个存储器地址之间的距离在w*h和w*h*d之间的概率为25%(例如,如果两个存储器地址在z坐标方向上不同);两个存储器地址之间的距离为w*h*d或更大的概率为25%(例如,如果两个存储器地址在z坐标方向上不同)。应当理解,w、h和d可以是任意大的数。
60.与关于根据本发明的示例性实施例的利用上述示例交织技术的地址编码的概率分布相比,关于上述示例常规线性存储器架构的概率分布提供了小得多的保证的高速缓存命中率。特别是,如果我们例如假设一个缓存行的值不少于128个且w值大于128(这将是大多数类型的有意义的真实世界数据的情况),则关于传统的线性存储器架构的概率分布确保仅25%的高速缓存命中率,这与根据示例性实施例的示例交织技术所提供的概率分布所确保的高速缓存命中率(即,75%)相比要差得多。即使我们假设缓存行较小(例如,不少于64个值)或w小于128,关于根据本发明示例性实施例的4d交织方案的高速缓存命中率也会是50%,而关于传统线性寻址方案的高速缓存命中率会是25%。因此,与常规线性存储器架构相比,根据本发明的示例性实施例的示例性交织技术提供任何两个经编码的存储器地址在小得多的有界距离内的显着更高的可能性,并且因此其高速缓存命中率高得多且产生显着降低的存储器访问延迟。
61.现在将参考图3更详细地描述根据本发明示例性实施例的改进的存储器架构和地址编码,其中图3示出用于4d时空数据的示例存储器寻址方案。该寻址方案将与如图2所示的在传统线性寻址方案中存储相同的4d时空数据的方法进行对比。应当理解,实际数据(例如,实际的4d坐标值)在图2和图3中都显示为存储在线性存储器中,但存储数据的顺序反映所采用的底层寻址方案。
62.首先参考图2,其示出根据传统线性寻址方案200存储的4d坐标数据。例如,线性寻址方案200可以将4d坐标(x,y,z,t)存储在线性存储器中由k=x y*w z*w*h t*w*h*d给定的存储器地址k处,其中w、h和d分别表示x、y和z维度(坐标方向)的尺寸。例如,考虑两个4d坐标(0,0,0,0)和(0,1,0,0)。这两个坐标在4d空间中彼此靠近,因为它们仅在y坐标方向上相差一个单位值(例如整数1)。用于4d坐标(0,0,0,0)的存储器地址k0为零,而用于4d坐标(0,1,0,0)的存储器地址k1为w,其等于k0和x维度的尺寸

w之和。相比之下,4d坐标(1,0,0,0)类似地靠近4d坐标(0,0,0,0)

它们也仅相差值1,但这是在x坐标方向上而不是在y坐标方向上。然而,根据线性寻址方案200,4d坐标(0,0,0,0)和(1,0,0,0)被存储在相邻的存储器位置中。
63.因此,线性寻址方案200表现出x坐标方向上的坐标偏向。特别地,假设x维度的尺寸是w

意味着x坐标值的范围可以从0到w-1

,包括4d坐标(0,0,0,0)和对x坐标方向具有非零值而对其他坐标方向具有零值的每个4d坐标的4d坐标集合202将被存储在线性存储器连续区段中。4d坐标(0,1,0,0)将与4d坐标206(即(w-1,0,0,0))相邻地存储在线性存储器中,该坐标表示其中x坐标值是关于x坐标方向的最大候选值且关于其他坐标方向的坐标值为零的时空坐标。因此,由于线性寻址方案200表现出的x坐标方向上的坐标偏向,尽管在4d空间中坐标(1,0,0,0)和(0,1,0,0)与坐标(0,0,0,0)的距离相同且因此对于多种应用场景在
访问4d坐标(0,0,0,0)后被访问的可能性相同,但4d坐标(0,1,0,0)存储成与4d坐标(0,0,0,0)相距w个存储器位置,而4d坐标(1,0,0,0)存储在与4d坐标(0,0,0,0)相邻的存储器位置中。
64.此外,线性寻址方案200表现出的x坐标方向上的坐标偏向相对于z坐标方向甚至更加明显。例如,考虑4d坐标(0,0,0,0)和通过将z坐标值增加一个单位值来获得的4d坐标(即(0,0,1,0))。如图2所示,以4d坐标(0,1,0,0)开始并以4d坐标208(即(w-1,h-1,0,0))结束的4d坐标集合204将被存储在与存储有4d坐标集合202的线性存储器连续区段相邻的线性存储器连续区段中。4d坐标(0,0,1,0)将被存储在与存储有4d坐标208的存储器位置相邻的存储器位置中。因此,尽管在4d空间中4d坐标(0,0,1,0)距坐标(0,0,0,0)的距离与4d坐标(1,0,0,0)和(0,1,0,0)距坐标(0,0,0,0)的距离相同,但是根据线性寻址方案200并且由于其表现出的x坐标方向上的坐标偏向,4d坐标(0,0,1,0)将在线性存储器中存储成与4d坐标(0,0,0,0)相距w*h个存储器位置。虽然没有在图2中描绘,由示例性线性寻址方案200表现出的x坐标方向上的坐标偏向相对于t坐标方向变得甚至更加明显。例如,4d坐标(0,0,0,1)将存储在与存储有4d坐标(0,0,0,0)的存储器位置相距w*h*d个存储器位置的存储器位置中。因此,尽管在4d空间中4d坐标(1,0,0,0)、(0,1,0,0)、(0,0,1,0)和(0,0,0,1)中的每一者与4d坐标(0,0,0,0)的距离相同,但是由于线性寻址方案200表现出的x坐标方向上的坐标偏向,这些坐标会在线性存储器中存储成距坐标(0,0,0,0)逐步更远。因此,关于对于4d数据的存储器请求的高速缓存未命中可能性增加,并且因此整体存储器访问延迟增加。这会导致计算机的性能下降和功能减弱,特别是在存储器访问模式并不倾向于任何特定坐标方向的应用场景中。
65.现在参考图3,其说明性地描绘了4d存储器寻址方案300。4d存储器寻址方案300可以在本发明的示例性实施例中由本文描述的改进的存储器架构和地址编码器使用。图3描绘了以原点4d坐标(0,0,0,0)开始并以4d坐标(2,1,0,0)结束的4d坐标集合存储在线性存储器中的顺序。如图3所示,通过将原点坐标(0,0,0,0)的相应x、y或z坐标值增加1来获得的4d坐标(1,0,0,0)、(0,1,0,0)和(0,0,0,1)存储在距存储有原点坐标(0,0,0,0)的存储器位置8个或更少的存储器位置内。换句话说,存储有4d坐标(1,0,0,0)、(0,1,0,0)和(0,0,0,1)中的每一者的相应存储器位置和存储有原点坐标(0,0,0,0)的存储器位置之间的相应线性差独立于x、y、z或t维度中的任一者的相应尺寸而有界。特别地,在该示例中,线性差为8或更小,这可能显着小于任何维度的相应尺寸。更一般地说,根据示例性4d存储器寻址方案300,确保分别与两个4d坐标对应的任何两个存储器位置之间的线性差以相应的概率在给定的有界距离内,其中有界距离独立于任何维度的相应尺寸,并且在大多数情况下在概率上明显小于任何维度的相应尺寸。
66.由于由其概率分布提供的这种有界特性,示例性4d存储器寻址方案300与传统线性寻址方案200相比更有可能将在4d空间中彼此靠近的任意两个4d坐标相对靠近地存储在线性存储器中。因此,示例性4d存储器寻址方案300显着减轻任何特定坐标方向上的坐标偏向,并解决了传统线性存储器架构的基本技术问题,特别是针对不表现出倾向于任何特定的坐标方向的存储器访问模式的真实世界应用场景。如前所述,线性存储器寻址方案200例如要求所有具有(x,0,0,0)形式的4d坐标(其中0≥x≥w,w等于x维度的尺寸)存储在一个线性存储器连续区段中,使得4d坐标(0,1,0,0)和4d原点坐标(0,0,0,0)存储成彼此相距w个
存储器位置。此外,根据线性寻址方案200,4d坐标(0,0,1,0)和(0,0,0,1)存储在与存储有原点坐标的存储器位置相距甚至更远的存储器位置中。尽管4d坐标(0,1,0,0)、(0,0,1,0)和(0,0,0,1)都与原点坐标等距,但情况仍然如此。然而,与此形成鲜明对比的是,4d存储器寻址方案300没有表现出线性寻址方案200在x坐标方向上的坐标偏向或在任何坐标方向上的坐标偏向。例如,如图3所示,4d坐标(0,1,0,0),(0,0,1,0)和(0,0,0,1)中的任一者在线性存储器中存储在所有具有(x,0,0,0)形式的4d坐标存储之前,其中0≥x≥w,w等于x维度的尺寸。
67.图3描绘了在示例性4d存储器寻址方案300下4d坐标值存储在线性存储器中的顺序。每个连续存储器位置的存储器地址是通过将紧前的存储器位置的存储器地址加一来获得的。特别地,每个4d坐标(通过对4d坐标的坐标值的位表示进行交织来获得其相应存储器地址)被示出为存储在与该存储器地址对应的存储器位置中。例如,4d坐标302可以存储在线性存储器中与经编码的存储器地址306对应的存储器位置处。类似地,4d坐标304可以存储在线性存储器中与经编码的存储器地址308对应的存储器位置处。
68.作为非限制性示例,假设4d坐标302是(3,0,0,0)。那么,由地址编码器104产生的经编码的存储器地址306将由k1=10001(根据需要添加有前导零以获得存储器地址的适当位长度)给定。特别地,用于4d坐标(3,0,0,0)的x、y、z和t坐标值的位表示分别为11、00、00和00(为了便于解释,各个位表示显示为包括相同数量的位)。对应的泛化位表示分别为x1x0、y1y0、z1z0和t1t0。通过应用前述的交织技术,泛化存储器地址由

t1z1y1x1t0z0y0x0给定,其中省略号表示潜在的前导零。因此,对于示例性4d坐标(3,0,0,0),k1=00010001=10001。如前所述,在一些示例性实施例中,可以在执行交织之前将前导零附接到各个位表示。
69.可以对存储器地址k1=10001加1,以得到用于后续相邻存储器位置的存储器地址k2。因此,用于后续存储器位置的存储器地址由k2=k1 1=10001 00001=10010=00010010给定。进而,存储器地址k2对应于泛化的经交织的位表示...t1z1y1x1t0z0y0x0,其中省略号表示潜在前导零。假设存储器地址k2是通过对特定4d坐标的坐标值各自的位表示进行交织来获得的,则可以确定用于x、y、z和t坐标值的被交织以产生存储器地址k2的位表示分别为10、01、00和00。这些位表示进而对应于4d坐标(2,1,0,0)。
70.与线性寻址方案200相比,上述示例说明了4d存储器寻址方案300如何使坐标偏向最小化。例如,虽然4d坐标(3,0,0,0)存储在线性存储器中存储有4d坐标(2,0,0,0)的存储器位置之后相邻的存储器位置处,但4d坐标(4,0,0,0)并不会存储在4d坐标(3,0,0,0)的后续相邻的存储器位置中,如同例如使用线性寻址方案200的情况。相反,根据4d存储器寻址方案300,4d坐标(2,1,0,0)存储在4d坐标(3,0,0,0)的后续相邻的存储器位置中,因为用于4d坐标(2,1,0,0)的经编码的存储器地址10010对应于用于4d坐标(3,0,0,0)的加1而得的经编码的存储器地址。
71.图4示出根据本发明示例性实施例的用于4d时空数据的存储器地址编码的图形描绘400。更具体地,描绘400提供示例性4d存储器地址编码300的图形说明。对于图4中描绘的每个4d坐标,假设t坐标值为零。因此,应当理解,描绘400没有以图形方式说明根据4d存储器地址编码300具有非零t坐标值的4d坐标存储在线性存储器中的顺序。此外,实线用来描述z坐标值为零的坐标之间的移动,虚线用来描述z方向非零的坐标之间的移动。
72.如图4所示,假设4d坐标(0,0,0,0)存储在具有存储器地址k0=0的第一存储器位置处。k0加1来给定k1=k0 1=0 1=1,其中k1是用于紧接在第一存储器位置之后的相邻的存储器位置的存储器地址。存储器地址k1与基于本文描述的位表示交织存储器地址编码技术的4d坐标(1,0,0,0)对应。以这种方式继续,k1加一来获得下一个存储器位置的存储器地址。即,用于下一个存储器位置的存储器地址k2=k1 1=1 1=10。经编码的存储器地址k2是对与4d坐标(0,1,0,0)对应的位表示进行交织的结果。以同样的方式继续,4d坐标(1,1,0,0)、(0,0,1,0)、(1,0,1,0)、(0,1,1,0)和(1,1,1,0)以与存储有4d坐标(0,1,0,0)的存储位置相邻的顺序存储。虽然没有在图4中描绘,但应当理解,将存储在线性存储器中的下一个4d坐标是(0,0,0,1)。
73.因此,如图4所示,如果从4d原点坐标(0,0,0,0)开始并沿x、y、z或t坐标方向中的任一个方向移动1,则存储有两个4d坐标的存储器位置之间的线性差小于或等于8,这可能大大小于任何维度的尺寸,并且很可能导致高速缓存命中。更一般地说,4d存储器寻址方案300及其部分图形描绘400具有相关的概率分布,该概率分布确保存储有相应4d坐标的任何两个存储器位置之间的线性差以相应的概率在给定的有界距离内,其中有界距离独立于任何维度的尺寸。
74.再次结合图1参考图4,一旦为所请求的4d坐标(x,y,z,t)确定了经编码的存储器地址,就可以访问一个或多个高速缓冲存储器级别以确定与经编码的存储器地址对应的4d坐标是否存储在高速缓冲存储器中。更具体地,计算设备可以具有高速缓冲存储器,其位置更靠近处理单元并且因此提供比主存储器更快的数据访问速度,进而提供比硬盘更快的数据访问速度。高速缓冲存储器可以组织成两个或更多个级别的高速缓冲存储器的层次结构。一级高速缓冲存储器(可称为l1高速缓存或主高速缓存)可内置于处理器芯片(例如cpu)中,因此可位于最靠近处理器的位置并提供最快的存储器访问。二级高速缓冲存储器(可称为l2高速缓存)也可以内置在处理器芯片中,与处理器封装在同一模块内,或设在主板上。l2高速缓存提供比l1高速缓存更慢的存储器访问速度,但比可能存在的较低级别的高速缓冲存储器更快。在示例性实施例中,在l2高速缓存之下可以存在一个或多个附加级别的高速缓冲存储器。主存储器提供比任何级别的高速缓冲存储器更慢的数据访问并且可以被访问以检索不存在于高速缓冲存储器中的数据。
75.在方法500的块506处,确定是否已经迭代所有级别的高速缓冲存储器并且已经导致对经编码的存储器地址的高速缓存未命中。响应于框506处的否定确定,该方法进行到框508,其中识别要搜索与经编码的存储器地址对应的4d坐标的下一级别的高速缓冲存储器。例如,在第一次迭代中,可以在一级高速缓冲存储器106(例如,l1高速缓存)中搜索与经编码的存储器地址对应的4d坐标数据。在方法500的块510处,确定在正在搜索的当前级别的高速缓冲存储器中针对经编码的存储器地址是否发生高速缓存命中。响应于框510的肯定确定,方法500进行到框512,其中从高速缓冲存储器的当前级别读取所请求的4d坐标数据。另一方面,如果发生高速缓存未命中(在框510处的否定确定),则方法500从框506迭代地进行并且搜索每个附加的较低级别的高速缓冲存储器,直到发生高速缓存命中,或者直到在每个高速缓存级别中都发生高速缓存未命中(在块506的肯定确定),在这种情况下,该方法将进行到块514。在方法500的块514处,将从主存储器读取所请求的4d坐标数据并且潜在地将其写入一个或多个高速缓冲存储器级别中。在一些示例性实施例中,经编码的存储器地
址可以是需要由翻译后备缓冲器(tlb)等翻译成在主存储器中存储有所请求的4d坐标数据的物理存储器地址的虚拟存储器地址。
76.再次参考图1中描绘的示例存储器层次结构,如果与经编码的存储器地址对应的4d坐标数据位于一级高速缓冲存储器106中,则发生高速缓存命中108(在方法500的块510处的肯定确定),并且在方法500的块512处从一级高速缓冲存储器106中读取所请求的数据。另一方面,如果在一级高速缓冲存储器106中没有找到该数据,则发生高速缓存未命中110(在块510处的否定确定),并且方法500从块506继续进行。因为有额外的高速缓冲存储器级别要检查,所以在块506处做出否定确定,并且搜索下一个高速缓冲存储器级别(二级高速缓冲存储器112)。如果高速缓存命中114发生在二级高速缓冲存储器112处,则从该高速缓存级别读取所请求的数据。另一方面,如果发生高速缓存未命中,则方法500从块506迭代地继续进行,检查每个附加的高速缓冲存储器级别,直到发生高速缓存命中或直到在最后一级高速缓冲存储器118发生高速缓存未命中120(在框506处的肯定确定),在这种情况下,可以可选地将经编码的存储器地址转换为物理存储器地址,并且可以访问主存储器122以检索存储在物理存储器地址处的请求数据。具体地,可以执行主存储器读/写响应124以从主存储器122读取所请求的数据并将该数据写入一个或多个高速缓冲存储器级别。
77.图6是根据本发明示例性实施例的用于动态确定用于多维坐标数据的地址编码的说明性方法600的过程流程图。方法600可以例如在多种示例性应用场景中执行,在这些应用场景中可能需要存储器架构表现出一定程度的坐标偏向。例如,如果特定类型的访问模式比其他类型的访问模式更频繁地出现,则可能需要提供一种对更频繁地观察到的访问模式更有利的存储器地址编码,以为存储器请求增加高速缓存命中的可能性。
78.在示例性实施例中,可以在方法600的框602处接收对坐标数据的请求。坐标数据例如可以是多维数据,诸如多坐标数据。多坐标数据例如可以是包括三个空间维度和一个时间维度的4d数据。在一些示例性实施例中,该请求可以是针对地图数据的并且可以从导航应用接收。在其他示例性实施例中,该请求可以是针对传感器数据等的。在一些示例性实施例中,该请求可以由在诸如智能手机等的用户设备或与诸如自动驾驶车辆的车辆集成的设备(例如,传感器、嵌入式设备、车载电脑等)。在一些示例性实施例中,可以在可能远离正在执行请求应用的设备而定位的服务器处接收请求。在其他示例性实施例中,可以在存在于车辆中或与车辆集成的设备处接收请求。虽然可能结合存储器读取访问请求说明性地描述方法600,但是应当理解,在块602处接收的请求可以替代地是将坐标数据等写入诸如主存储器的数据存储器中的写请求。
79.在方法600的框604处,在框602处接收请求的设备上执行的地址编码确定/选择引擎可以确定与所请求的坐标数据相关联的一个或多个约束。更具体地,在本发明的示例性实施例中,与所请求的坐标数据相关联的一个或多个约束可以指示理想的坐标偏向。例如,地图数据可能包括物理障碍(例如建筑物、路面、地理特征等)形式的约束,这些障碍会阻止车辆在某些方向上行驶。结果,存储器访问模式可能导致基于这样的约束对于地图数据的不同部分更频繁地访问不同坐标方向。
80.在方法600的框606处,地址编码确定/选择引擎可以预测用于所请求的坐标数据的坐标偏向。可以基于对于所请求的坐标数据观察到的或预测会发生的存储器访问模式来确定坐标偏向。更具体地,理想的坐标偏向可以是预测为会针对所请求的坐标数据观察到
或预测会发生的存储器访问模式增加高速缓存命中的数量/可能性的偏向。
81.例如,用于与沿相对平坦地形的车辆路线对应的地图数据的存储器访问模式可能会相对于z方向更频繁地访问x和y坐标方向上的数据,在这种情况下,提供x和y方向(而不是z方向)上的坐标偏向的存储器地址编码可能是理想的。作为另一个非限制性示例,用于与沿相对笔直但多丘陵的地形的车辆路线对应的地图数据的存储器访问模式可能更频繁地访问x和z坐标方向上的数据或y和z坐标方向上的数据,在这种情况下,提供非x方向或非y方向上的坐标偏向的存储器地址编码可能是理想的。
82.在一些示例性实施例中,正在访问的数据的类型可以影响可能是理想的坐标偏向的类型。例如,如果正在访问地图数据,则可以至少部分地从车辆正在经过的导航路线确定理想的坐标偏向,这可以基于车辆速度、其行驶方向以及可选地基于与正在经过的地形相关的任何约束进行预测。另一方面,如果正在访问传感器数据(例如,lidar数据),则可以从导航路线以外的因素(例如在车辆周围环境中扫描的对象)确定理想的坐标偏向。更具体地,在非限制性示例中,对于用于主要覆盖平坦地形的车辆导航路线的地图数据,x/y方向上的坐标偏向可能是理想的,而对于传感器数据(例如,具有宽z角扫描能力的lidar),z方向上的坐标偏向可能是理想的,即使车辆正在平坦地形上行驶。
83.在本发明的示例性实施例中,地址编码确定/选择引擎可以在可能由所请求的数据本身施加的约束内进一步确定理想的坐标偏向。例如,地图数据可能包括障碍物(例如建筑物、路面、地理特征等)形式的约束,这些约束阻止或允许车辆仅在某些方向上行驶。结果,存储器访问模式可能导致基于此类约束针对地图数据的不同部分更频繁地访问不同坐标方向。在请求的数据是地图数据的一些示例性实施例中,地址编码确定/选择引擎可以基于包括当前行驶方向、从车辆导航路线确定的预测未来行驶方向以及与所请求的地图数据相关的约束的因素的组合来预测理想的坐标偏向。此外,在一些示例性实施例中,坐标方向可以具有与其相关联的固有边界。例如,z坐标方向固有地有界,而x、y和t坐标方向可能没有。
84.从块606,方法600可以进行到块608或610之一。在方法600的块608处,地址编码确定/选择引擎可以动态地生成用于坐标数据的提供预测坐标偏向的地址编码。在示例性实施例中,地图数据可以分成称为瓦片的部分发送到请求方应用程序(例如,车辆导航应用程序)。在将地图数据瓦片发送到请求方应用程序后,车辆需要一定的时间来行驶地图数据瓦片所覆盖的相应物理距离。在该时间段期间,地址编码确定/选择引擎可以为地图数据瓦片预测理想坐标偏向并且动态地生成地址编码以用于提供该坐标偏向。因此,可以使与动态生成地址编码以用于所请求的数据相关的延迟最小化。
85.或者,在方法600的块610处,地址编码确定/选择引擎可以从一组预配置的地址编码中选择提供预测坐标偏向的地址编码。例如,在一些示例性实施例中,可以为地图数据的每个可检索部分(例如,每个地图数据瓦片)离线确定相应的地址编码。然后,可以将地址编码与地图数据的相应部分相关联地存储,使得可以为所请求的地图数据选择适当的预配置地址编码。
86.在一些示例性实施例中,动态生成或预配置的地址编码可以应用提供预测坐标偏向的交织方案。更具体地,在一些示例性实施例中,为了提供特定坐标方向上的坐标偏向,地址编码可以应用交织方案,根据该方案,与从用于其他坐标方向的位表示中提取的相比,
从用于特定坐标方向的位表示中提取更多数量的位来获得经编码的存储器地址。例如,假设预测到x坐标方向上的坐标偏向。假设是4d坐标数据,用于x、y、z和t坐标方向的泛化位表示分别由x=

x4x3x2x1x0、y=

y4y3y2y1y0、z=

z4z3z2z1z0和t=

t4t3t2t1t0给定。那么,例如具有x方向上的坐标偏向的地址编码可以利用产生由k=

t2z2y2x5x4t1z1y1x3x2t0z0y0x1x0给定的经编码的存储器地址k的交织技术。因此,根据该示例地址编码,与从用于其他坐标值的位表示中提取的相比,经编码的存储器地址k包括从用于x坐标值的位表示中获取的更多数量的位,因此产生x坐标方向上的坐标偏向,其对更频繁地沿x坐标方向移动的存储器访问模式更有利。
87.应当理解,上述示例交织技术仅仅是说明性的而不是穷举的。例如,虽然上面的示例描述了对用于x坐标值的位表示的两个位与来自其他坐标值的位表示的每一位进行交织,但是应该理解,地址编码可以交织来自用于寻求坐标偏向的坐标值的位表示的显著更多数量的位。在一些示例性实施例中,从给定坐标值的给定位表示中选择的位的数量可以取决于对该坐标方向所需的坐标偏向的程度。例如,为了产生x坐标方向上的显著更大的坐标偏向,示例地址编码可以取而代之对来自用于x坐标值的位表示的3个位与其他坐标值的位表示的每一位进行交织,以生成由k=

t1z1y1x5x4x3t0z0y0x2x1x0给定的经编码的存储器地址k。
88.此外,虽然上面已经结合x坐标方向上的预测坐标偏向说明性地描述了动态生成或预配置的地址编码,但是应当理解,地址编码可以提供任何期望坐标方向上的坐标偏向。例如,如果预测的坐标偏向在z坐标方向上,那么地址编码可以应用产生由k=

t1z3z2y1x1t0z1z0y0x0给定的经编码的存储器地址k的交织技术。此外,在一些示例性实施例中,动态生成或预配置的地址编码可以同时产生多于一个坐标方向上的坐标偏向。例如,同时提供x和y方向上的坐标偏向的示例地址编码可以产生由k=

t1z1y3y2x3x2t0z0y1y0x1x0给定的经编码的存储器地址k。
89.在一些示例性实施例中,提供时间维度上的非空间坐标偏向可能是理想的。例如,在诸如对象跟踪的某些应用场景中,收集/访问与事件序列相关的数据可能是理想的。例如,在自动驾驶汽车驾驶场景中,通常需要预测对象(例如,行人、其他车辆等)的速度和位置,这可以基于对象的历史轨迹来完成。在这样的示例场景中,可能理想的是提供t坐标方向上的坐标偏向以便增强历史轨迹数据的预测能力。
90.再次参考图6,在方法600的块612处,可以从第一数据存储器读取所请求的坐标数据。例如,第一数据存储器可以是诸如硬盘驱动器的磁盘存储器。例如,地图数据通常是庞大的,因此存储在磁盘存储器中。当请求地图数据时,它通常从磁盘加载并存储在主存储器中。在其他示例性实施例中,第一数据存储器可以是主存储器或特定级别的高速缓冲存储器。在方法600的块614处,地址编码器(例如,地址编码器104)可以使用在块608处动态生成或在块610处选择的地址编码来对检索到的坐标数据进行编码以获得经编码的存储器地址。然后,在方法600的块616处,可以将检索到的坐标数据存储在第二数据存储器中与经编码的存储器地址对应的存储器位置处。在示例性实施例中,第二数据存储器可以是主存储器,其提供比磁盘存储器更快的数据访问速度。在其他示例性实施例中,第二数据存储器可以是提供比第一数据存储器更快的数据访问速度的高速缓冲存储器级别,第一数据存储器进而可以是主存储器或较低级别的高速缓冲存储器。
91.在一些示例性实施例中,存储在第二数据存储器(例如,主存储器)中的数据已经具有与其相关联的交织格式。在这样的示例性实施例中,交织格式可以从与数据相关联的元数据中读取并且用于在将数据存储在第二数据存储器中之前对数据进行编码。在其他示例性实施例中,可以在将数据存储在第二数据存储器中之前将与数据相关联的先前交织格式转换成期望的交织格式。
92.随着存储器访问模式改变并且此类访问模式所倾向的对应坐标方向也改变,可以执行示例方法600以动态确定为当前存储器访问模式提供理想的坐标偏向(或没有坐标偏向或提供最小坐标偏向)的地址编码。结果,存储器地址编码可以动态改变以更紧密地匹配当前存储器访问模式,这增加高速缓存命中的可能性和数量,并减少整体存储器访问延迟,从而改善了计算机功能。
93.硬件实现
94.图7是示出配置成实现本发明的示例性实施例的示例性联网架构700的示意框图。联网架构700可以包括一个或多个专用计算设备702,该计算设备702通过一个或多个网络704通信耦合到一个或多个其他系统706。其他系统706可以包括但不限于:诸如车载传感器的传感器,例如包括lidar传感器、雷达、照相机、gps接收器、基于声纳的传感器、超声波传感器、imu、加速度计、陀螺仪、磁力计、fir传感器等;车载计算机或处理单元(例如,电子控制单元、车辆信息娱乐系统等);以及可能存在于车辆内的用户设备等等。专用计算设备702可以与车辆集成或设置成远离车辆,并且可以通过网络704中的一个或多个远程网络接收数据请求(例如,请求多维数据)。
95.专用计算设备702可以硬连线以执行本文描述的技术;可以包括诸如一个或多个asic或fpga的电路或数字电子设备,其被持久编程以执行这些技术;和/或可以包括一个或多个硬件处理器,其被编程以根据固件、存储器、其他存储设备或它们的组合中的程序指令执行这些技术。专用计算设备702还可以将定制硬连线逻辑、asic或fpga与定制编程相结合以完成这些技术。专用计算设备702可以是引入硬连线的和/或编程的逻辑以实现这些技术的台式计算机系统、服务器计算机系统、便携式计算机系统、手持设备、网络设备、或任何其他设备或设备组合。虽然在本文中可能以单数形式描述计算设备702,但是应当理解,可以提供多个计算设备702并且可以将功能分布在多个计算设备702上。
96.专用计算设备702通常可以由诸如ios、android、chrome os、windows xp、windows vista、windows 7、windows 8、windows server、windows ce、unix、linux、sunos、solaris、ios、blackberry os、vxworks或其他兼容的操作系统等操作系统软件720控制和协调。在其他实施例中,计算设备702可以由专有操作系统控制。操作系统软件720可以控制和调度计算机进程以执行;进行存储器管理;提供文件系统、网络和i/o服务;并提供用户界面功能,例如图形用户界面(“gui”)。
97.网络704可以包括但不限于任何一种或多种不同类型的通信网络,例如有线网络、公共网络(例如因特网)、专用网络(例如帧中继网络)、无线网络、蜂窝网络、电话网络(例如,公共交换电话网络)或任何其他合适的私有或公共分组交换或电路交换网络。网络704可以具有与其相关联的任何合适的通信范围并且例如可以包括全球网络(例如因特网)、城域网(man)、广域网(wan)、局域网(lan)或个域网(pan)。此外,网络704可以包括通信链路和相关联的网络设备(例如,链路层交换机、路由器等),其用于通过任何合适类型的介质(包
括但不限于同轴电缆、双绞线(例如,双绞铜线)、光纤、混合光纤同轴(hfc)介质、微波介质、射频通信介质、卫星通信介质或它们的任何组合)传输网络流量。
98.在说明性配置中,计算设备702可以包括一个或多个处理器708、一个或多个存储器设备710(本文一般称为存储器710)、一个或多个输入/输出(“i/o”)接口712、一个或多个网络接口714和数据存储设备718。计算设备702还可包括一个或多个总线716,其在功能上耦合计算设备702的各种构件。数据存储设备718可存储多种引擎/构件,例如地址编码器724和地址编码确定/选择引擎726。每个这些引擎/构件可以包括用于执行前面结合相应命名的引擎/构件描述的任何过程和任务的逻辑。在示例性实施例中,地址编码器724和/或地址编码确定/选择引擎726可以包括用于执行相应技术的硬连线电路和/或被持久编程为执行此类技术的诸如一个或多个asic或fpga的电路或数字电子设备。
99.总线716可以包括系统总线、存储器总线、地址总线或消息总线中的至少一个,并且可以允许在计算设备702的各种构件之间交换信息(例如,数据(包括计算机可执行代码)、信令等)。总线716可以包括但不限于存储器总线或存储器控制器、外围总线、加速图形端口等。总线716可以与任何合适的总线架构相关联,其包括但不限于工业标准架构(isa)、微通道架构(mca)、增强型isa(eisa)、视频电子标准协会(vesa)架构、加速图形端口(agp)架构、外围构件互连(pci)架构、pci-express架构、个人计算机存储卡国际协会(pcmcia)架构、通用串行总线(usb)架构等。
100.存储器710可以包括诸如随机存取存储器(ram)的易失性存储器(在被供电时保持其状态的存储器)和/或诸如只读存储器(rom)、闪存、铁电ram(fram)等的非易失性存储器(即使在没有供电时也保持其状态的存储器)。如本文所使用的该术语,持久数据存储设备可以包括非易失性存储器。在某些示例性实施例中,易失性存储器可以实现比非易失性存储器更快的读/写访问。然而,在某些其他示例性实施例中,某些类型的非易失性存储器(例如,fram)可以实现比某些类型的易失性存储器更快的读/写访问。
101.在多种实施方式中,存储器710可以包括多种不同类型的存储器,例如各种类型的静态随机存取存储器(sram)、各种类型的动态随机存取存储器(dram)、各种类型的不可更改的rom和/或诸如电可擦可编程只读存储器(eeprom)、闪存等的rom可写变体。存储器710可以包括主存储器以及各种形式的高速缓冲存储器,例如指令高速缓存、数据高速缓存、转换后备缓冲器(tlb)等。此外,诸如数据高速缓存的高速缓冲存储器可以是被组织为一个或多个高速缓冲存储器级别(l1、l2等)的层次结构的多级高速缓存。
102.数据存储设备718可以包括可移动存储设备和/或不可移动存储设备,其包括但不限于磁存储设备、光盘存储设备和/或磁带存储设备。数据存储设备718可以提供计算机可执行指令和其他数据的非易失性存储设备。存储器710和可移动和/或不可移动的数据存储设备718是如本文所使用的术语计算机可读存储介质(crsm)的示例。数据存储设备718可以存储可以加载到存储器710中并且可由处理器708执行以使处理器708执行或启动多种操作的计算机可执行代码、指令等。数据存储设备718可以另外存储可以被复制到存储器710以供处理器708在计算机可执行指令的执行期间使用的数据。此外,作为处理器708执行计算机可执行指令的结果而生成的输出数据可以最初存储在存储器710中并且最终可以复制到数据存储设备718以进行非易失性存储。
103.更具体地,数据存储设备718可以存储一个或多个操作系统(o/s)720和一个或多
个数据库管理系统(dbms)722,其配置成潜在地通过一个或多个网络704访问存储器710和/或一个或多个外部数据存储库(未图示)。此外,数据存储设备718还可以存储一个或多个程序模块、应用程序、引擎、计算机可执行代码、脚本等,例如地址编码器724和地址编码确定/选择引擎726,其可以被实现为软件和/或固件,其包括可加载到存储器710中以供一个或多个处理器708执行来实施本文描述的任何技术的计算机可执行指令(例如,计算机可执行程序代码)。
104.虽然没有在图7中描绘,数据存储设备718可以进一步存储计算设备702的引擎/构件使用的各种类型的数据。这样的数据可以包括但不限于地址编码、多维数据、坐标值的位表示等。存储在数据存储设备718中的任何数据都可以被加载到存储器710中以供处理器708在执行计算机可执行程序代码时使用。此外,存储在数据存储设备718中的任何数据都可以潜在地存储在一个或多个外部数据存储库中,这些外部数据存储库可通过dbms 722访问并且可加载到存储器710中以供处理器708在执行计算机可执行指令/程序代码时使用。
105.处理器708可以配置成访问存储器710并执行加载在其中的计算机可执行指令/程序代码。例如,处理器708可以配置成执行fov语义计算机器724的各种引擎/构件的计算机可执行指令/程序代码,以使得或促进根据本发明的一个或多个实施例执行各种操作。处理器708可以包括能够接受数据作为输入、根据存储的计算机可执行指令处理输入数据以及生成输出数据的任何合适的处理单元。处理器708可以包括任何类型的合适的处理单元,包括但不限于中央处理单元、微处理器、精简指令集计算机(risc)微处理器、复杂指令集计算机(cisc)微处理器、微控制器、专用集成电路(asic)、现场可编程门阵列(fpga)、片上系统(soc)、数字信号处理器(dsp)等。此外,处理器708可以具有任何合适的微架构设计,其包括任何数量的组成构件,例如寄存器、多路复用器、算术逻辑单元、用于控制对高速缓冲存储器的读/写操作的高速缓冲存储器控制器、分支预测器等。可以使处理器708的微架构设计能够支持多种指令集中的任何一种。
106.现在参考描述为存储在数据存储设备718中的其他说明性构件,o/s 720可以从数据存储设备718加载到存储器710中并且可以提供在计算设备702上执行的其他应用软件和硬件之间的接口。更具体地,o/s 720可以包括计算机可执行指令集合,用于管理计算设备702的硬件资源并用于向其他应用程序提供公共服务。在某些示例性实施例中,o/s 720可以包括存储在数据存储设备718中的一个或多个引擎/程序模块或控制其执行。o/s 720可以包括现在已知的或未来可以开发的任何操作系统,包括但不限于任何服务器操作系统、任何大型机操作系统或任何其他专有或非专有操作系统。
107.dbms 722可以加载到存储器710中并且可以支持用于访问、检索、存储和/或处理存储在存储器710中的数据、存储在数据存储设备718中的数据和/或存储在外部数据存储库中的数据的功能。dbms 722可以使用多种数据库模型(例如,关系模型、对象模型等)中的任何一种,并且可以支持多种查询语言中的任何一种。dbms 722可以访问以一个或多个数据模式表示并存储在任何合适的数据存储库中的数据。计算设备702可以通过dbms 722访问的数据存储库可以包括但不限于数据库(例如关系型、面向对象型等)、文件系统、平面文件、分布式数据存储库,其中数据存储在计算机网络或对等网络数据存储库等的多个节点上。
108.现在参考计算设备702的其他说明性构件,输入/输出(i/o)接口712可以促进计算
设备702从一个或多个i/o设备接收输入信息以及计算设备702向一个或多个i/o设备输出信息。i/o设备可以包括多种构件中的任何一种,例如具有触摸表面或触摸屏的显示器或显示屏;用于产生声音的音频输出设备,例如扬声器;音频捕获设备,例如麦克风;图像和/或视频捕获设备,例如相机;触觉单元等等。这些构件中的任何一个都可以集成到计算设备702中或者可以与其分开。i/o设备还可以包括例如任何数量的外围设备,例如数据存储设备、打印设备等。
109.i/o接口712还可以包括用于外部外围设备连接的接口,例如通用串行总线(usb)、firewire、thunderbolt、以太网端口或可以连接到一个或多个网络的其他连接协议。i/o接口712还可以包括与一个或多个天线的连接,以通过无线局域网(wlan)(例如wi-fi)无线电、蓝牙和/或无线局域网连接到一个或多个网络。无线网络无线电,例如能够与诸如长期演进(lte)网络、wimax网络、3g网络等无线通信网络通信的无线电。
110.计算设备702可以进一步包括一个或多个网络接口714,计算设备702可以通过该网络接口714与多种其他系统、平台、网络、设备等中的任何一个进行通信。网络接口714可以实现例如通过一个或多个网络706与传感器704和/或一个或多个其他设备的通信。在示例性实施例中,网络接口714提供与连接到一个或多个网络706的一个或多个网络链路的双向数据通信耦合。例如,网络接口714可以包括综合服务数字网络(isdn)卡、电缆调制解调器、卫星调制解调器或用于提供与相应类型的电话线的数据通信连接的调制解调器。作为另一个非限制性示例,网络接口714可以包括局域网(lan)卡以提供与兼容lan(或用于与wan进行通信的广域网(wan)构件)的数据通信连接。也可以实现无线链路。在任何这样的实施方式中,网络接口714可以发送和接收携带表示各种类型信息的数字数据流的电、电磁或光信号。
111.网络链路通常通过一个或多个网络向其他数据设备提供数据通信。例如,网络链接可以通过本地网络提供与主机或由互联网服务提供商(isp)操作的数据设备的连接。进而,isp可以通过现在通常称为“互联网”的全球分组数据通信网络提供数据通信服务。本地网络和互联网都使用携带数字数据流的电、电磁或光信号。通过各种网络704的信号和网络链路上的通过网络接口714的信号是传输介质的示例形式,它们携带发至或来自计算设备702的数字数据。在示例性实施例中,计算设备702可以通过网络704、网络链路和网络接口714发送消息和接收包括程序代码的数据。例如,在互联网示例中,服务器可以通过因特网、isp、本地网络和网络接口714发送为应用程序请求的代码。接收到的代码可以在接收到时由处理器708执行,和/或存储在数据存储设备718中或其他非易失性存储设备中供以后执行。
112.应该理解的是,图7中作为计算设备702的一部分描述的引擎仅仅是说明性的而不是穷举的。特别地,功能可以以任何合适的方式模块化,使得被描述为由任何特定引擎支持的处理可以替代地分布在多个引擎、程序模块、构件等上,或者由不同的引擎、程序模块、构件等执行。此外,在某些实施例中可能存在或可能不存在所描绘的一个或多个引擎,而在其他实施例中,可以存在未描绘的附加引擎并且其可以支持所描述的功能和/或附加功能的至少一部分。此外,可以提供在计算设备702上本地托管的和/或在可通过一个或多个网络704访问的其他计算设备上托管的各种引擎、程序模块、脚本、插件、应用程序编程接口(api)或任何其他合适的计算机可执行代码以支持由图7中描绘的引擎提供的功能和/或附
加或替代功能。此外,支持本文描述的功能的引擎可以至少部分地在硬件和/或固件中实现,并且可以根据任何合适的计算模型(例如客户端-服务器模型、对等模型等等)跨任何数量的计算设备702执行。
113.还应当理解,计算设备702可以在不背离本发明的范围的情况下包括除所描述或描绘的那些以外的替代和/或附加的硬件、软件和/或固件构件。更具体地,应当理解,描述为形成计算设备702的一部分的软件、固件和/或硬件构件仅仅是说明性的,并且在多种实施例中一些构件可能存在或可能不存在或者可以提供附加构件。还应当理解,在各种实施例中,所描绘和描述的引擎中的每一者表示所支持的功能的逻辑分区。该逻辑分区是为了便于解释功能而描绘的,并且可能表示或可能不表示用于实现该功能的软件、硬件和/或固件的结构。
114.一般而言,如本文所用,术语引擎、程序模块等是指体现为硬件、固件和/或电路的逻辑,或者是指软件指令的集合,其可能具有入口点和出口点,且编写成编程语言,例如java、c或c 。软件引擎/模块可以编译并链接到可执行程序中,安装在动态链接库中,或者可以用诸如basic、perl或python之类的解释性编程语言编写。应当理解,软件引擎/模块可以从其他引擎/模块或它们自身调用,和/或可以响应于检测到的事件或中断而被调用。配置成在计算设备上执行的软件引擎/模块可以提供在计算机可读介质上,例如光盘、数字视频盘、闪存驱动器、磁盘或任何其他有形介质,或者作为数字下载(并且可以是最初以压缩或可安装格式存储,其在执行前需要安装、解压缩或解密)。这样的软件代码可以部分或全部存储在执行计算设备的存储器设备上,以供计算设备执行。“开源”软件是指可以作为源代码和/或以编译形式分发的源代码,具有获得源代码的广为宣传和索引的方法,并且可选地具有允许修改和衍生作品的许可。软件指令可以嵌入固件中并例如存储在诸如可擦除可编程只读存储器(eprom)等闪存中。还将理解,硬件模块/引擎可以包括连接的逻辑单元,例如门和触发器,和/或可以进一步包括可编程单元,例如可编程门阵列或处理器。
115.在本文中将示例性实施例描述为包括引擎或程序模块。这样的引擎/程序模块可以构成软件引擎(例如,体现在机器可读介质上的代码)或硬件引擎。“硬件引擎”是能够执行某些操作的有形单元,并且可以以某种物理方式配置或布置。在多种示例性实施例中,一个或多个计算机系统(例如,独立计算机系统、客户端计算机系统、或服务器计算机系统)或计算机系统的一个或多个硬件引擎(例如,处理器或处理器组)可以通过软件(例如,应用程序或应用程序部分)配置为硬件引擎,该硬件引擎运行以执行如本文所述的某些操作。
116.在一些实施例中,硬件引擎可以机械地、电子地或以其任何合适的组合来实现。例如,硬件引擎可以包括永久配置为执行某些操作的专用电路或逻辑。例如,硬件引擎可以是专用处理器,例如现场可编程门阵列(fpga)或专用集成电路(asic)。硬件引擎还可以包括由软件临时配置以执行某些操作的可编程逻辑或电路。例如,硬件引擎可以包括通用处理器或其他由软件配置的可编程处理器,在这种情况下,被配置的处理器成为唯一定制以执行配置的功能且不再构成通用处理器的特定机器。应当理解,以机械方式、在专用和永久配置的电路中或在临时配置的电路(例如,由软件配置)中实现硬件引擎的决定可以由成本和时间考虑来驱动。
117.因此,术语“引擎”或“程序模块”应理解为包含有形实体,即物理构造、永久配置(例如,硬连线)或临时配置(例如,编程)成以特定方式运行或执行本文描述的特定操作。考
虑到硬件引擎被临时配置(例如,被编程)的实施例,硬件引擎中的每一者并不需要在任一时刻被配置好或实例化。例如,在硬件引擎包括由软件配置成专用处理器的通用处理器的情况下,通用处理器可以在不同时间配置成分别不同的专用处理器(例如,包括不同的硬件引擎)。相应地,软件可以将一个或多个特定处理器配置成例如在给定的时刻构成特定的硬件引擎并且在不同的时刻构成不同的硬件引擎。
118.硬件引擎可以向其他硬件引擎提供信息并从其他硬件引擎接收信息。因此,所描述的硬件引擎可以被认为是通信耦合的。在同时存在多个硬件引擎的情况下,可以通过两个或更多个硬件引擎之间的信号传输(例如,通过适当的电路和总线)来实现通信。在多个硬件引擎在不同时间被配置或实例化的实施例中,可以例如通过在多个硬件引擎可以访问的存储器结构中存储和检索信息来实现这种硬件引擎之间的通信。例如,一个硬件引擎可以执行操作并将该操作的输出存储在与其通信耦合的存储器设备中。然后,另一硬件引擎可以在稍后时间访问存储器设备以检索和处理所存储的输出。硬件引擎还可以启动与输入或输出设备的通信,并且可以对资源(例如,信息集合)进行操作。
119.本文描述的示例方法的各种操作可以至少部分地由一个或多个处理器执行,该处理器被临时配置(例如,通过软件)或永久配置成执行相关操作。无论是临时配置还是永久配置,这样的处理器都可以构成硬件引擎的实现。类似地,本文描述的方法可以至少部分地由处理器实现,其中一个或多个特定处理器是硬件的示例。此外,一个或多个处理器还可运行以支持“云计算”环境中的相关操作的执行或作为“软件即服务”(saas)。例如,至少一些操作可以由一组计算机(作为包括处理器的机器的示例)执行,这些操作可通过网络(例如,互联网)和一个或多个适当的接口(例如,api)访问。
120.本文描述的示例方法的某些操作的执行可以分布在多个处理器之间,其中不仅可驻留在单个机器内,而且还可部署在多个机器上。在一些示例性实施例中,处理器可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器场内)。在其他示例性实施例中,处理器可以分布在多个地理位置。
121.本发明可以实现为系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质(或介质),其上包含计算机可读程序指令,用于使处理器执行本发明的各方面。
122.计算机可读存储介质是非暂时性介质的一种形态,如本文所使用的该术语,并且可以是可以保留和存储指令以供指令执行设备使用的任何有形设备。计算机可读存储介质例如可以是但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质和更一般的非暂时性介质可以包括非易失性介质和/或易失性介质。计算机可读存储介质的更具体示例的非详尽列表包括以下:便携式计算机软盘,例如软式磁盘或软盘;硬盘;随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)或任何其他存储芯片或盒式磁带;便携式光盘只读存储器(cd-rom);数字多功能光盘(dvd);记忆棒;固态硬盘;磁带或任何其他磁性数据存储介质;机械编码装置,例如记录有指令的穿孔卡或凹槽中的凸起结构或任何具有孔图案的物理介质;其任何网络版本;以及前述的任何合适的组合。
123.非暂时性介质不同于传输介质,因此,本文使用的计算机可读存储介质不应被解释为本身是瞬态信号,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质
传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过电线传输的电信号。然而,非暂时性介质可以与传输介质结合使用。特别是,传输介质可以参与非临时介质之间的信息传输。例如,传输介质可以包括同轴电缆、铜线和/或光纤,包括包含至少一些总线xxx的导线。传输介质也可以采用声波或光波的形式,例如在无线电波和红外数据通信期间产生的那些。
124.本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(诸如互联网、局域网(lan)、广域网(wan)和/或无线网络等)下载到外部计算机或外部存储设备。该网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令并且转发该计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
125.用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或以一种或多种编程语言的任何组合编写的源代码或对象代码,编程语言包括面向对象的编程语言(诸如smalltalk、c 等)以及传统的过程编程语言(诸如“c”编程语言或类似的编程语言)。计算机可读程序指令可以完全在用户计算机上、部分地在用户计算机上、作为独立软件包、部分地在用户计算机上和部分地在远程计算机上或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括lan或wan)连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商(isp)的互联网)。在一些实施例中,包括例如可编程逻辑电路、fpga或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本发明的各个方面。
126.本文参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本发明的各方面。应当理解,流程图和/或框图的每个块,以及流程图和/或框图中的块的组合,可以通过计算机可读程序指令来实现。这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得通过计算机的处理器或其他可编程数据处理装置执行的指令创建用于实现流程图和/或框图块中指定的功能/动作的装置。这些计算机可读程序指令也可以存储在计算机可读存储介质中,该计算机可读存储介质可以引导计算机、可编程数据处理装置和/或其他设备以特定方式运行,使得其中存储有指令的计算机可读存储介质包括包含实现在流程图和/或框图块中指定的功能/动作的方面的指令的制造物品。计算机可读程序指令也可以加载到计算机、其他可编程数据处理装置或其他设备上,以使一系列操作步骤在计算机、其他可编程装置或其他设备上被执行以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图块中指定的功能/动作。
127.上述各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合旨在落入本发明的范围内。此外,可以在一些实施方式中省略某些方法或流程块。这里描述的方法和流程也不限于任何特定的顺序,并且与其相关的块或状态可以以其他适当的顺序来执行。例如,所描述的块或状态可以以不同于具体公开的顺序执行,或者多个块或状态可以组合在单个块或状态中。示例块或状态可以串行、并行或以某种其他方式执行。可以将块或状态添加到所公开的示例性实施例中或从所公开的示例性实施例中
移除。此处描述的示例系统和构件可以配置成与所描述的不同。例如,与所公开的示例性实施例相比,可以将元素添加、移除或重新排列。
128.图中的流程图和框图说明了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在这点上,流程图或框图中的每一块可表示模块、分段或指令的一部分,其包括用于实现指定逻辑功能的一个或多个可执行指令。在一些替代实施方式中,方框中标注的功能可能不按图中标注的顺序出现。例如,连续显示的两个块实际上可以部分、基本上或完全同时执行,或者这些块有时可以以相反的顺序执行,这取决于所涉及的功能。
129.应该强调的是,可以对上述实施例进行许多变型和修改,其中的要素应被理解为存在于本发明的其他示例性实施例当中。所有这些修改和变型都旨在包括在本发明的范围内。虽然本发明的示例性实施例可以在本文中单独地或共同地通过术语“发明”来指代,但这仅仅是为了方便,并且如果实际上披露了不止一个公开或概念,则不将本发明的范围限制到任何单个公开或概念。前述描述详述了本发明的某些实施例。然而,应当理解,无论前述内容在文本中显得多么详细,本发明可以以多种方式实施。应当注意,在描述本发明的某些特征或方面时使用特定术语不应被理解为暗示该术语在本文中被重新定义为限于包括本发明的与该术语相关的特征或方面的任何具体特性。
130.本文中说明的实施例被足够详细地描述以使本领域普通技术人员能够实践所公开的教导。可以使用其他实施例并从中派生出其他实施例,从而可以在不脱离本发明范围的情况下进行结构和逻辑替换和改变。因此,具体实施方式不应理解为限制性意义,并且各种实施例的范围仅由所附权利要求以及这些权利要求所享有的全部等效物范围来定义。
131.尽管基于当前被认为是最实用和优选的实施方式的部分,出于说明的目的对本发明进行了详细描述,但应理解,此类细节仅用于该目的,并且本发明并不限于所公开的实施方式,但相反旨在涵盖在所附权利要求的精神和范围内的修改和等效布置。例如,应当理解,本发明考虑到,在可能的范围内,任何实施例的一个或多个特征可以与任何其他实施例的一个或多个特征组合。
132.如本文所用,术语“或”可以以包含或排他的意义来解释。此外,可以为本文中作为单个实例描述的资源、操作或结构提供多个实例。此外,各种资源、操作、程序模块、引擎和/或数据存储库之间的边界在某种程度上是任意的,并且在特定说明性配置的上下文中说明了特定操作。可以设想其他功能分配并且其可以落入本发明的各种实施例的范围内。通常,在示例配置中呈现为单独资源的结构和功能可以实现为组合结构或资源。类似地,呈现为单个资源的结构和功能可以实现为分开的资源。这些和其他变型、修改、添加和改进落入所附权利要求所表示的本发明实施例的范围内。因此,说明书和附图被认为是说明性的而不是限制性的。
133.除非另有明确说明或在所使用的上下文中以其他方式理解,否则诸如“能”、“可以”、“可能”或“可能”等条件语言通常旨在传达某些实施例包括某些特征、元件和/或步骤,而其他实施例不包括这些。因此,这种有条件的语言通常不旨在暗示一个或多个实施例以任何方式需要特征、元素和/或步骤,或者一个或多个实施例必须包括用于在有或没有用户输入或提示的情况下决定是否将这些特征、元素和/或步骤包括在任何特定实施例中或在其中执行。此外,应当理解,本文描述为基于另一操作、要素、构件、数据等的任何操作、要
素、构件、数据等可以另外基于一个或多个其他操作、要素、构件、数据等。因此,短语“基于”或其变体应解释为“至少部分基于”。
再多了解一些

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

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

相关文献