CN109155763B - 数据流上的数字信号处理 - Google Patents
数据流上的数字信号处理 Download PDFInfo
- Publication number
- CN109155763B CN109155763B CN201780029092.8A CN201780029092A CN109155763B CN 109155763 B CN109155763 B CN 109155763B CN 201780029092 A CN201780029092 A CN 201780029092A CN 109155763 B CN109155763 B CN 109155763B
- Authority
- CN
- China
- Prior art keywords
- data
- dsp
- batch
- value
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/82—Miscellaneous aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9042—Separate storage for different parts of the packet, e.g. header and payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本文描述的技术和系统涉及提供数字信号处理(DSP)操作与通用查询处理器的深度集成。这些技术和系统提供一致的查询语言以用于处理时间关系和信号数据,提供用于定义DSP操作符的机制,以及支持离线和在线分析中的递增计算。这些技术和系统包括接收流数据,聚合和执行统一性处理以生成统一信号,以及以批量列表示存储统一信号。可以将数据从批量列表示复制到循环缓冲器,其中DSP操作被应用于数据。递增处理可以避免冗余处理。通过减少在单独的查询数据库和DSP处理器之间来回传递的数据量,以及通过减少处理和/或存储器使用的等待时间来提供对计算机的功能的改进。
Description
背景技术
大量数据越来越多地源自传感器和设备的网络。查询处理和数据分析平台可以分析数据,以便从数据中得到洞察力。在一些实例中,这种大量数据的有效分析可能难以以成本有效的方式执行。此外,可以在使用关系操作符来处理数据的上下文中采用一组技术,而可以在执行数字信号处理的上下文中采用另一组技术。另外,可以在在线数据分析和离线时间关系数据的上下文中采用不同的技术。然而,为了实现跨在线和离线数据的不同架构的分析,必须使用多种技术。跨多种技术分析数据和/或传输数据可能在计算上是昂贵的、低效的和耗时的。
发明内容
本文描述的技术和/或系统涉及提供数字信号处理(DSP)操作与通用查询处理器的深度集成。本文描述的技术和/或系统提供用于处理时间关系和信号数据的一致的查询语言,提供用于定义DSP操作符的机制,并且支持离线和在线分析中的递增计算。DSP操作和查询处理的深度集成可以通过减少必须在单独的查询数据库和DSP处理器之间来回传递的数据量来改进计算机的功能。此外,DSP操作和查询处理的深度集成减少了处理的等待时间,并且允许以每天数万亿数据事件的量级对大量数据事件进行实时处理。
提供本发明内容是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题的关键或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任何部分中提到的任何或所有缺点的实施方式。
附图说明
参考附图描述了具体实施方式。在附图中,附图标记的最左边的(一个或多个)数字标识首次出现附图标记的图。在不同图中使用相同的附图标记表示相似或相同的项。
图1示出了在数据流上实现数字信号处理(DSP)的过程的图示流程图。
图2示出了用于DSP操作与通用查询处理器的深度集成的示例环境。
图3A示出了具有不变有效载荷的信号的图形表示。
图3B示出了具有函数有效载荷的信号的图形表示。
图4A示出了非统一输入事件的图形表示。
图4B示出了执行非统一输入事件的采样和插值以生成统一信号的图形表示。
图5A是示出了包括多个列有效载荷的数据批量消息内的数据组织的示例的框图。
图5B是示出以批量列表示从阵列接收数据的示例性循环缓冲器的框图。
图6是示出用于执行DSP操作的窗口大小和跳跃大小的示例的框图。
图7是用于配置DSP操作并且对流数据应用DSP操作的过程。
图8示出了基于分组信号相关性将示例性技术和/或系统的性能与传统DSP系统进行比较的示例图。
图9示出了基于分组信号插值和过滤将示例性技术和/或系统的性能与传统DSP系统进行比较的示例图。
图10示出了基于分组的重叠和相加方法将示例性技术和/或系统的性能与传统DSP系统进行比较的示例图。
具体实施方式
本文描述的技术和/或系统提供了数字信号处理(DSP)操作与查询处理器的改进的集成。例如,流数据可以从一个或多个传感器被接收,被聚合成分组,并且被处理以产生聚合和统一信号。聚合和统一信号可以以批量列表示存储,以用于有效的批处理。可以将信号数据阵列从存储器读取到循环缓冲器中以应用数字信号处理(DSP)算法来处理数据。可以基于与DSP算法相关联的窗口大小将信号数据阵列的数据提供给DSP算法。可以将附加数据写入循环缓冲器并且递增地被处理,以生成可以应用于先前生成的DSP结果的结果。包括DSP操作与查询处理器的这种深度集成的系统可以称为流式DSP系统。
在一些实例中,流式DSP系统可以对离线数据(例如,现有的数据语料库)或在线数据(例如,在各个时间点处到达的流数据)进行操作。
在一些实例中,流数据可包括反映从一个、数百、数千或数百万个传感器收集的数据的数据事件。作为示例而非限制,流式DSP系统可以从传感器接收天气数据,其中每个读数具有<传感器ID,时间,值1(例如,温度),值2(例如,湿度),值3(例如,压力)的格式),……,值N)>的形式。
在一些实例中,可以利用对应于同一时刻的多个数据值(例如,温度读数)来接收流数据。例如,两个传感器(例如,具有不同传感器ID)可以每个提供同一时刻的温度读数。因此,可以聚合读数以确保在任何时间点处最多一个流事件是活动的。在一些实例中,并且通常,可以应用聚合函数以基于某些标准对多个输入值进行分组,以形成具有更重要的含义或测量的单个值。作为示例而非限制,聚合函数可以包括诸如平均函数(例如,算术平均值)或计数函数(例如,计数指定事件的数目)的函数。
此外,因为许多DSP算法对在时间上统一间隔的数据进行操作,所以可以处理聚合数据以生成统一的聚合数据。在一些实例中,可以对分组数据应用插值函数和/或采样函数,以便生成统一间隔的数据。在一些实例中,并且不作为限制,插值函数可以在离散的一组已知数据点的范围内构建新的数据点。在一些实例中,采样函数可以将不规则间隔的输入事件转换成对应于统一采样时间的统一间隔值。
在生成聚合(分组)和统一(插值和/或采样)信号之后,可以将聚合和统一信号以批量列数据表示存储在存储器中。例如,随时间的温度读数可以存储在存储器中,使得值在存储器中的物理的、连续的(例如,连贯的)列中。在一些实例中,聚合和统一信号的每个值(例如,值1)可以存储为“结构(struct)”(例如,如C和C#编程语言中所提到的),使得结构定义要在一个名称下被放置在存储器的一个块中的数据(或变量)的物理分组列表,以允许经由单个指针访问数据。传感器读数的每个字段可以存储在单独的阵列中,其中单独的阵列包括批量列阵列。因此,对应于聚合和统一信号的数据可以以批量列表示存储,这允许高效访问(例如,读取和写入)和处理。
可以批量操作存储在批量列表示中的数据,这可以进一步为数据处理提供效率。例如,不是对单个数据执行一系列顺序操作,而是数据可以随时间收集并且与特定分组键相关联,这可以定义特定批次。可以一起处理特定批次(例如,通过执行细粒度工作),从而减少与在流式DSP系统内加载和卸载指令和/或数据相关联的处理开销操作(例如,粗粒度工作)。在一些实例中,细粒度工作可以包括精心编写的循环,其利用数据局部性、指令局部性、编译器循环展开、不安全代码、代码生成等。在一些实例中,粗粒度工作的示例可以包括跨核心切换数据,分配消息和更新存储器池。
在一些实例中,工作流中的每个操作符可以接收批次,处理批次内的事件,以及将输出事件写入输出批次。在批次满之前,输出批次不会切换到下一个下游操作符,或者接收到控制事件(例如,等待时间控制消息(标点符号)),这可以迫使系统冲刷部分批次并且立即生成输出。
利用以批量列表示存储的信号数据,数据值阵列可以容易地从存储器中被读取并且被写入循环数据缓冲器以对其应用DSP操作。在一些实例中,可以根据数据窗口将数据写入循环缓冲器,该数据窗口可以对应于要被写入循环缓冲器中的数据量(例如,特定阵列的数据值的数目)。当处理循环缓冲器中的数据时,附加数据被复制到具有特定跳跃大小(例如,部分窗口大小)的循环缓冲器,使得循环缓冲器中的每个值可以被写入循环缓冲器一次而没有不必要的操作。
此外,流式DSP系统可以对循环缓冲器中的数据执行递增处理,进一步减少处理量并且改进计算机的操作。例如,可以对特定数据窗口内的数据执行DSP操作,生成DSP输出并且存储该输出和/或流DSP系统的状态。当额外跳跃的数据被复制到循环缓冲器,而不是处理完整的数据窗口(包括新添加的数据)时,流式DSP系统可以将DSP操作应用于递增数据,并且当生成递增DSP输出时,递增DSP输出可以应用于先前生成的DSP输出。
本文描述的技术和/或系统可以通过减少处理量和/或通过减少对流数据上执行DSP所需的存储器量来改进计算设备的功能。在一些实例中,处理存储在批量列表示中的数据可以通过忽略操作不需要的数据来减少处理所需的数据量。此外,执行DSP操作的递增处理通过将递增输出应用于DSP操作的存储状态来减少要处理的数据量。此外,通过使用循环缓冲器可以减少用于DSP操作的存储器量,该循环缓冲器紧凑地存储窗口化信号数据以用于处理。另外,本文讨论的流式DSP系统可以通过减少系统内的计算设备之间处理的数据量来改进网络的功能。通过将DSP操作深入集成到查询处理引擎中,减少了不同系统之间的数据传递。
此外,将DSP操作深度集成到查询处理引擎中可以减少与数值框架耦合的低效数据库系统(本文称为松散系统耦合)中存在的不必要步骤。例如,这种松散的系统耦合带来了显著处理开销。例如,在数值计算框架中执行DSP算法可能需要从数据库导出数据,将数据转换为与数值计算框架相关联的特定格式、运行程序、脚本或与框架相关的操作,将数值计算框架的输出转换为数据库使用的关系格式,并且将数据导入数据库中。在一些实例中,在数据库和数值计算框架之间来回发送数据可能会占用执行时间,例如在运行特定DSP操作符时。此外,额外的网络流量也增加了处理的等待时间,这使得该方法特别不适合于实时处理。因此,通过将DSP操作深度集成到查询处理引擎中,流式DSP系统通过避免额外的数据传输和处理来改进计算机和网络的功能。
本文参考图1-10描述用于实现流式DSP系统的各种示例。
图1示出了在数据流上实现数字信号处理(DSP)的过程100的图示流程图。
在102,操作可以包括接收流数据。在一些实例中,流数据可以从一个或多个传感器、计算设备等被接收,并且可以表示实数值或复数值的离散时间序列,其可以被称为样本。在一些实例中,实数值信号(例如,包括实数的信号)可以源自测量物理现象的传感器。在一些实例中,在频域中处理信号之后可以产生复数值信号(例如,包括复数的信号)。在一些实例中,流数据可以包括承载多个传感器测量的结构序列。在一个示例中(诸如音频处理),流数据可以包括不同的音频通道。在另一示例中(诸如视频处理),流数据可以包括视频帧序列。图示104表示在服务提供者处接收的多个信号,诸如本公开的流式DSP系统。
在106,操作可以包括将聚合和统一性应用于流数据以生成信号数据。在一些实例中,应用聚合函数可以包括一个或多个分组函数,诸如应用平均函数或计数函数以确保一个数据值对于任何一个特定时间是活动的。在一些实例中,可以应用聚合函数来生成聚合或分组数据。在一些实例中,应用统一性可以包括将插值函数应用于聚合或分组数据以生成丢失值(或以其他方式处理各个时间点处的丢失值),并且在一些实例中,统一性操作可以包括对聚合或分组数据进行采样以在统一时间点处生成值。在一些实例中,可以认为操作106将输入数据流转换为信号。
在108,操作可以包括以批量列表示存储信号数据。例如,信号数据集可以包括列批次序列。列批次可以为事件中的每个列保持一个阵列。例如,对于以批量列表示存储的特定数据流,两个阵列保持批次中的所有事件的开始时间和结束时间值。在一些实例中,流式DSP系统可以将分组键与每个事件相关联,以便实现有效的分组操作。例如,流式DSP系统可以预先计算并且存储分组键和键散列值作为批次中的两个附加阵列,其可以部分定义批量列表示内的每个组。在一些实例中,批量列表示还可以包括缺席比特向量以标识批次中的非活动行(例如,表示空数据)。例如,批量列表示110可以包括多个阵列112、114、116、118和120。
在122,操作可以包括访问存储在批量列表示110中的信号数据的字段。例如,批量列表示124(其可以对应于批量列表示110)可以包括阵列126,其可以对应于与随时间的测量相关联的值。阵列126可以包括信号数据的字段,并且在操作128,可以访问阵列126(例如,从存储器中的顺序位置读取),并且操作可以包括根据数据窗口132将字段的值存储在循环缓冲器130中。例如,循环缓冲器130可以存储数据,并且可以在操作134对窗口132中的数据进行操作。操作134可以包括对存储在循环缓冲器130中的值应用数字信号处理(DSP)操作。在一些实例中,操作134可以包括当流式DSP系统处理批次时存储DSP操作的状态,和/或操作134可以包括递增地处理在跳跃中添加的数据(例如,部分窗口),并且将递增处理输出与存储的状态数据组合以生成输出136。在一些实例中,输出136可以被传输到各种计算设备,经由一个或多个接口(例如,用户接口,API等)被呈现(例如,用于显示),和/或可以用作流式DSP系统的附加处理操作的输入,如本文所述。
在一个特定实现中,下面呈现表示图1中的操作的各方面的示例代码,其示出了聚合和插值以生成信号数据,并且对生成的信号数据执行DSP操作:
图2示出了用于DSP操作与通用查询处理器的深度集成的示例环境200。环境200包括具有(多个)处理器204和存储器206的计算设备202,存储器206包括流生成模块208和接口模块210。在各种实例中,流生成模块208可以生成一个或多个流,如本文所描述的。在一些实例中,接口模块210可以包括一个或多个API,其操作以从一个或多个用户212接收查询和/或操作以接收参数和/或选择,诸如要被应用的特定DSP操作,与DSP操作相关联的窗口大小和跳跃大小等,如本公开中所讨论的。环境200还包括一个或多个传感器214,其可以生成流以经由(多个)计算设备202和/或网络218提供给一个或多个服务提供者216。在一些实例中,(多个)服务提供者216向计算设备202提供一个或多个服务,诸如通过流数据的DSP操作。为此,服务提供者216可以包括(多个)处理器220和存储器222,存储器222包括流处理模块224和数字信号处理(DSP)模块226,以提供流式DSP系统,这将结合本公开中提供的附图进行解释。
计算设备202可以包括但不限于各种计算设备中的任何一种,诸如智能电话、移动电话、个人数字助理(PDA)、电子书设备、膝上型计算机、台式计算机、平板计算机、便携式计算机、游戏设备、个人媒体播放器设备、服务器计算机、可穿戴设备或任何其他电子设备。
如上所述,计算设备202可以包括一个或多个处理器204和存储器206。(多个)处理器204可以是单个处理单元或多个单元,每个单元可以包括多个不同的处理单位。(多个)处理器204可以包括一个或多个微处理器、微计算机、微控制器、数字信号处理器、中央处理单元(CPU)、图形处理单元(GPU)、安全处理器(例如,安全加密处理器)和/或其他处理器。备选地或附加地,本文描述的一些或所有技术可以至少部分由一个或多个硬件逻辑组件来执行。例如但不限于,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、状态机、复杂可编程逻辑器件(CPLD)、其他逻辑电路、片上系统(SoC)和/或基于软件和/或硬件编码指令执行操作的任何其他设备。在其他能力中,(多个)处理器204可以被配置为取回和/或执行存储在存储器206中的计算机可读指令。
存储器206可以包括计算机可读介质中的一个或组合。如本文所使用的,“计算机可读介质”包括计算机存储介质和通信介质。
计算机存储介质包括以用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于相变存储器(PCM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、闪存或其他存储器技术、光盘ROM(CD-ROM)、数字多功能光盘(DVD)或其他光存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备、或可以用于存储信息以由计算设备访问的任何其他介质。
相反,通信介质包括计算机可读指令、数据结构、程序模块或调制数据信号中的其他数据,例如载波。如本文所定义的,计算机存储介质不包括通信介质。
一个或多个传感器214还可以包括结合(多个)计算设备202描述的处理器和存储器类似的处理器和存储器,并且还可以包括任何处理、硬件和/或电路以生成一个或更多数据流以向服务提供者216提供流数据。
在各种实施例中,计算设备202可以经由一个或多个有线或无线网络218(例如因特网、移动电话网络(MTN)或其他各种通信技术)与服务提供者216通信。
在各种实施例中,存储器206可以包括操作系统,该操作系统被配置为管理计算设备202内的并且耦合到计算设备202的硬件和服务,以有益于其他组件和其他设备。
流生成模块208、接口模块210、流处理模块224和数字信号处理模块226可以包括硬件和/或软件组件。例如,流生成模块208、接口模块210、流处理模块224和数字信号处理模块226可以分别由存储在存储器206或222中的一个或多个模块实现,和/或由(多个)处理器204或220的一个或多个模块实现。如本文所使用的,术语“模块”旨在表示用于讨论目的的软件和/或固件的示例划分,并且不旨在表示任何类型的要求或所需的方法、方式或组织。因此,虽然讨论了各种“模块”,但是它们的功能和/或类似功能可以不同地布置(例如,组合成更少数目的模块,分成更多数目的模块等)。此外,尽管本文中将某些功能描述为被实现为被配置用于由处理器执行的软件模块,但是在其他实施例中,可以通过硬件逻辑组件全部或部分实现(例如,执行)任何或所有功能,诸如FPGA、ASIC、ASSP、状态机、CPLD、其他逻辑电路、SoC等。
根据本公开的实施例,流生成模块208可以执行操作以生成一个或多个数据流。例如,数据流可以包括读数或样本,其中每个读数或样本具有<传感器ID,时间,值1(例如,温度),值2(例如,湿度),值3(例如,压力),……,值N)>的格式。如上所述,流数据可以包括实数、复数、多个测量值、有效载荷和/或参数、函数有效载荷等。
在一个特定实现中,流式DSP系统可以表示具有有效载荷类型T的数据流,作为称为Streamable<T>(可流传输<T>)的类的实例。在该示例中,当以C#编程语言实现时,流式DSP系统可以使用C#有效载荷类型捕获事件内容:
struct SensorReading{(7)
long SensorId;long Time;doubleValue;(8)
}(9)
在上面的这个示例中,温度读数流可以是Streamable<SensorReading>(可流传输<传感器度数>)类型。
根据本公开的实施例,接口模块210可以执行操作以提供一个或多个接口以与流式DSP系统交互。例如,接口模块210可以为用户提供一个或多个图形用户界面(GUI)以与流式DSP系统对接。在一些实例中,接口模块210可以提供一个或多个应用程序编程接口(API),以允许用户提供关于数据的查询,选择DSP操作,和/或指定关于操作、输入、输出、基础数据等的处理。在一些实例中,接口模块210可以允许用户设置DSP操作的类型、窗口大小、跳跃大小、和/或实现本文所讨论的任何特征。在一些实例中,接口模块210可以在计算设备202的显示器上呈现数据,由此数据是流式DSP系统的输出。
根据本公开的实施例,流处理模块224可以执行处理流数据的操作。例如,流处理模块224可以接收流数据,对流数据进行排序,对流数据执行聚合、统一性、采样和/或插值,对流数据执行非统一和统一信号操作(或者聚合和统一流数据)和/或以批量列表示存储流数据。流处理模块224还可以包括聚合模块228、统一性模块230和批量列存储模块232。
聚合模块228可以执行聚合流数据的操作以确保在任何时间点最多一个流事件是活动的。在一些实例中,聚合模块228可以对流数据应用一个或多个聚合函数,例如平均函数、计数函数、求和函数、幂函数、能量函数等。在一个特定实现中,可以通过应用输入流的聚合函数来提供聚合函数,聚合函数可以表示为:
var s0=stream.Average(e=>e.Value) (1)
统一性模块230可以执行操作以将不规则间隔的流数据转换为统一间隔的、规则间隔的或等间隔的样本。下面在表1中示出了对非统一数据(N)或统一数据(U)执行的示例操作的非穷举列表。
表1
因此,统一性模块230可以在将某些函数(例如,如表1所示)应用于利用统一数据作为输入的数据之前处理数据。
批量列存储模块232可以执行操作以接收流数据并且以批量列表示来组织和存储流数据。在一些实例中,流数据可以在流式DSP系统(例如,在服务提供者216处)处接收时以批量列表示存储,或者流数据可以在以批量列表示存储之前被聚合和/或处理以用于统一性。当流数据被接收并且转换为信号数据时,可以由DSP操作对以批量列表示存储为阵列的信号数据进行操作(例如,暴露),包括在现代处理器上的利用单指令、多数据(SIMD)操作的实现。
在一个特定实现中,当在流式DSP系统中接收流数据时,可以使用StreamEvent(流事件)结构来表示具有有效载荷类型T的事件。在一些实例中,该结构提供用于创建流事件的静态方法,包括具有一个时间单位的数据窗口的点事件。在以上示例中,用户212可以在时间t将传感器读数作为点事件摄取为:
StreamEvent.CreatePoint(t,new SensorReading{..}) (11)
在一些实例中,并且关于存储器中的数据的物理布局,数据集被表示为列批次序列。列批次可以为事件中的每个列保持一个阵列。例如,两个阵列保持批次中的所有事件的开始时间和结束时间值。在一些实例中,流式DSP系统可以将分组键与每个事件相关联,以便实现有效的分组操作。在一些实例中,流式DSP系统可以预先计算并且将分组键和键散列值存储为批次中的两个附加阵列,和/或可以包括缺席比特向量以标识批次中的非活动行。
在一些实例中,流式DSP系统可以在查询编译期间创建列批次。例如,为SensorReading(传感器度数)生成的批次可以表示为:
在一些实例中,流式DSP系统内的存储器操作与参考计数共享这些阵列。例如,在一些实例中,SyncTime(同步时间)和Time(时间)可以指向同一物理阵列。此外,存储器操作还可以使用全局存储器管理器来池化阵列,以减轻存储器分配和垃圾(数据)收集的成本。
此外,流处理模块224可以包括具有关系操作和时间关系操作的查询语言。在一些实例中,关系操作可以包括诸如连接、过滤或通过聚合分组的操作。例如,关系操作符可以用于通过不同的源(例如,通过传感器ID)对信号进行分组,或者将信号与历史和参考数据连接。
在一个特定实现中,可以使用类Streamable<T>来暴露这些时间或关系操作符。在一些实例中,流式DSP系统中的每个操作符可以是从流到流的函数,这允许查询的优雅函阵列合。每种方法表示物理操作符(例如,Where(其中)用于过滤)并且返回新的Streamable(可流传输)实例,该实例允许用户链接整个查询计划。例如,假设s0是Streamable<SensorReading>类型的数据源,则可以使用“lambda表达式”丢弃无效读数,该“lambda表达式”可以指定用于在输出流中保持每个流事件的条件。在一个特定的实现中,lambda表达式可以用于使用Where操作符丢弃大于100的值:
var s1=s0.Where(e=>e.Value>100) (19)
查询操作符可以接受和/或生成列批次序列。在一些实施方式中,用于流式DSP系统的编译器可以在紧密的每批次循环中动态地生成操作符和内联lambda(诸如Where,如上所示),以直接在列上操作以用于高性能。例如但不限于,关系操作符可以包括(例如,选择、连接、反连接)以及用于定义窗口和会话的新时间操作符。
在一些实例中,可以使用具有时间支持的Map(映射)和Reduce(减少)操作来实现分组计算,以使得能够对与不同分组键相对应的每个子流执行并行查询。考虑与图1相关联的查询的缩短版本,示例性查询可以表示为:
Map的第一参数指定要对输入流并行执行的子查询(本文是无状态Select操作),而第二参数指定用于混洗(shuffle)结果流的分组键(SensorId(感测器ID))。Reduce的第一参数指定每个分组键执行的查询(Sample(采样)操作),并且第二参数允许将分组键和每分组有效载荷组合为单个结果。
在一些实例中,可以执行时间连接操作以基于时间重叠来关联(或连接)两个流,并且在有效载荷上具有(可选的)同等性谓词。在一个示例中,可以利用来自包含每传感器位置数据的另一参考流ref1的附加信息来扩充经滤波的SensorReading(传感器读数)流s1。这样的查询可以表示为:
var s3=s1.Join(ref1, (24)
l=>l.SensorId,r=>r.SensorId,(l,r)=> (25)
new Result{r.SensorLocation,l.Time,l.Value});(26)
Join的第二和第三参数表示左和右输入(SensorId)上的同等连接谓词,而最终参数是lambda表达式,该lambda表达式指定如何组合匹配输入元组以构造结果有效载荷。输出流s3的类型为Streamable<Result>(可流传输<结果>)。
根据本公开的实施例,数字信号处理(DSP)模块226可以执行操作以执行一个或多个DSP操作。DSP模块226还可以包括循环缓冲器234,以及用于执行DSP操作的一个或多个模块,诸如根据本公开的快速傅里叶变换236、卷积238、有限脉冲响应(FIR)240和表示任何过滤器的过滤器N 242(例如,无限脉冲响应(IIR)过滤器)。
在一些实例中,DSP模块226可以根据与特定DSP操作(例如,236、238、240、242)相关联的数据窗口和/或根据用户指定的值从批量列存储模块232接收数据。在一些实例中,DSP模块226可以接收与要在整个特定DSP操作中执行的递增处理大小相关联的跳跃大小。可以根据数据窗口大小将信号数据写入循环缓冲器234,并且可以对数据执行DSP操作。DSP模块226可以维持DSP操作的状态以启用递增处理,同时消除冗余处理。
结合本公开的图1和3-10进一步解释这些模块208、210、224、226、228、230、232、234、236、238、240和242的操作。
服务提供者216可以包括一个或多个计算设备,诸如一个或多个台式计算机、膝上型计算机、服务器等。可以在集群、数据中心、云计算环境或其组合中配置一个或多个计算设备。在一个示例中,一个或多个计算设备提供从计算设备202远程操作的云计算资源、包括计算资源、存储资源等。
环境200还包括一个或多个用户212以使用计算设备202。一个或多个用户212可以与计算设备202交互以执行各种操作。
图3A示出了具有不变的有效载荷302、304和306的信号的图形表示300。例如,表示300可以描述离散时间信号和阶梯状连续信号。然而,在实践中,用户可能希望使用更一般的连续信号进行工作,其值可以表示为时间的函数,如图3B所示。
图3B示出了具有函数有效载荷310和312的信号的图形表示308。例如,在幅度调制中,操作可以将输入信号与连续载波信号相乘,该连续载波信号可以是给定频率和幅度的正弦波。
为了利用时间-关系数据模型来支持(伪)连续信号,可以在来自函数域的每个时间戳处具体化(例如,求值)点事件。但是,这种实现导致巨大的处理和存储器开销。在一些实现中,为了有效地捕获连续信号,流式DSP系统可以将连续信号表示为函数信号有效载荷,其携带描述如何在任何时间点处计算信号值的lambda函数。函数有效载荷(诸如,函数有效载荷310和312)可以延迟信号事件的具体化,直到操作或用户明确请求为止。
在一些实例中,流式DSP系统可以支持两种类型的函数有效载荷,称为1)异构函数有效载荷和2)同构函数有效载荷。
关于异构函数有效载荷,可以将lambda函数Func<long,T>分配给每个流事件。lambda函数可以将有效载荷值表示为时间的函数。每个这样的函数有效载荷可以表示为TFuncPayload<T>的实例。例如,参考图3B的函数有效载荷310,函数有效载荷310可以表示为:
var evt1=StreamEvent.CreateInterval(40,80, (27)
new TFuncPayload<double>(t=>Sin(2*Pi*t/40))) (28)
为了使得能够处理具有函数有效载荷的信号,TFuncPayload<T>实现TArithmetic<TFuncPayload<T>>。例如,将两个函数有效载荷相加创建具有表示相加的lambda函数的函数有效载荷。相加函数有效载荷的一个特定表示如下所示:
TFuncPayload<T>Plus(TFuncPayload<T>b){ (29)
return new TFuncPayload<T>(t=>f(t)+b.f(t)); (30)
} (31)
在一些实例中,具有函数有效载荷的处理信号可以与处理任何其他有效载荷类型(例如,不变有效载荷类型)类似或相同。例如,将两个函数信号相加可以对应于时间连接,其中任何匹配事件产生求和函数有效载荷,如上所述。在一些实现中,在处理具有函数有效载荷的信号时,值的函数表示可以以函数形式维持,以避免具体化。以这种方式,函数有效载荷通过减少与对连续信号求值相关联的处理和存储器成本来改进计算机的功能。
在一些实例中,可以在离散时间点处具体化(例如,求值)函数有效载荷以获得具有期望采样周期和偏移的统一采样信号。例如,可以对包含函数有效载荷的信号fs0进行采样,以具体化每10个时间单位的事件,如下所表示的:
var fs1=fs0.Sample(10);//具体化 (32)
在一些实例中,使用TFuncPayload<T>实现在lambda函数分配给有效载荷中的异构性,即,每个事件可以采用不同的函数,如由不同的函数有效载荷310和312所示。该函数异构性以在查询求值期间更昂贵的存储器管理为代价。在一些实例中,新的流事件可以实例化lambda对象。鉴于这些lambda具有不同的结构,各种不同的lambda对象不能在事件之间有效地共享或通过存储器池重用。相反,在一些实例中,lambda对象可以在堆上分配(例如,流式DSP系统中动态分配的存储器空间),而不是将lambda对象分配给堆栈(在存储器中),并通过垃圾收集释放,这会增加存储器管理开销。
在一些实例中,可以将一个lambda函数分配给整个信号(例如,作为同构函数有效载荷),而不是将lambda函数分配给每个事件(例如,作为异构函数有效载荷),以便更高效地处理函数有效载荷。在这种情况下,流事件可以共享相同的lambda函数,因此名称中是“同构”,并且它们的有效载荷可以表示函数参数。例如,可以创建流事件,其中有效载荷是正弦函数的参数,诸如表示如下:
var event=StreamEvent.CreateInterval(0,100, (33)
new SinArgs{Freq=50.0,Phase=0.0}); (34)
在该示例中,每个信号维持存储其lambda函数的属性。此外,正弦函数可以与信号s1相关联如下:
var s2=s1.setProperty().setFunction( (35)
(t,e)=>Sin(2*Pi*t/e.Freq+e.Phase)) (36)
默认信号函数是身份函数(t,e)=>e。
在一些实例中,支持同构函数有效载荷可能需要将信号类型的签名从SignalStreamable<T>(信号可流传输<T>)改变为SignalStreamable<Tin,TOut>(信号可流传输<Tin,TOut>),其中TIn是有效载荷类型(例如,SinArgs)并且TOut是结果类型(例如,double(双精度浮点数))。在该示例中,lambda函数可以是Func<long,Tin,TOut>类型。
在同构函数有效载荷上的二进制信号操作使用时间连接将来自两侧的匹配有效载荷配对为2元组结构。例如,将正弦信号s2与复数值常数信号相乘可以产生Tuple<SinArgs,Complex>(元组<正弦参数,复数>)类型的有效载荷。这样的有效载荷可以用作将这两个信号相乘的流级lambda函数的参数。
在一些实例中,同构函数有效载荷能够实现比异构函数有效载荷更有效的信号处理。在查询编译期间,可以将同构有效载荷“展平(flatten)”为参数序列,并且可以创建列批量表示。在前面的示例中,为元组结构生成的批次可以表示为:
struct ColumnarTuple{ (37)
double[]Freq;double[]Phase;Complex[]V; (38)
} (39)
这些列阵列被存储器池化并且在处理期间与参考计数共享,这减轻了存储器分配和垃圾收集的成本,进一步改进了流式DSP系统中的计算机的功能。
可以对信号执行信号操作,诸如图3A和3B中所示的那些信号。例如,缩放操作使用select操作符将信号值与标量相乘。在一些实例中,移位操作通过使用改变寿命操作符改变信号的事件的时间间隔来延迟和/或提前信号。
在一些实例中,可以对信号执行诸如加法、减法或乘法的基本算术运算,因为这些运算保证在任何时间点产生至多一个事件。此外,使用时间连接来匹配事件的任何信号操作都输出信号。然而,并非每个二进制流操作都可以提升到信号域。例如,两个信号的合并可以产生具有重叠事件的流,因此该操作符需要保留在Streamable域中。因此,可以进行附加确定以确保信号操作导致有效信号。
图4A示出了非统一输入事件402、404、406和408的图形表示400。例如,图形表示400示出了在由时间T1、T2、T3、T4、T5、T6和T7指示的时间线上的时间处发生的输入事件。在一些实例中,非统一输入事件包括任意形式的无重叠流事件。如图4A所示,非统一输入事件(例如,非统一信号或非统一流)可以具有拥有不同寿命的事件,在不规则时刻出现的事件(例如,由于网络延迟)或者丢失事件(例如,由于不良通信)。例如,输入事件404在时间T2和T3之间未对准。此外,在时间T5和T6处丢失样本。由于一些DSP操作需要统一信号以用于处理,所以流式DSP系统可以执行处理以将非统一输入事件转换为统一信号,和/或可以执行插值以恢复流数据中的丢失值。
图4B示出了在执行非统一输入事件的采样和插值以生成统一信号之后的图形表示410。例如,可以在离散时间间隔T1-T7处将采样函数应用于非统一输入事件以生成统一采样信号412,416和418。例如,可以使用样本操作符,该样本操作符考虑在预定义的采样节拍(例如,T1、T2、T4等)处活动的事件,并且忽略中间和丢失事件。然而,因为图4中的输入事件404未对准(例如,输入事件不在离散时间间隔T1、T2、T3、T4、T5、T6或T7处发生),所以可以应用插值以在时间T3处生成插值样本420。例如,在插值窗口422跨越输入事件424(其可以对应于输入事件404)和采样信号416的出现的实例中,插值函数(例如,示为线性插值426)可以生成插值信号420。在一些实例中,如插值窗口428所示,丢失值在特定时间点处不能被生成,并且例如可以用零值或空值替换。在一些实例中,并且不作为限制,插值函数可以包括分段常数插值、最后值、步进(零阶)、线性插值、多项式插值、样条插值等。
在一些实例中,统一性模块230可以用于对流数据进行采样和插值以生成统一采样信号。例如,用户可以指定要被使用的特定类型的插值函数(如上所述),以及用于插值操作的特定插值窗口。
例如,可以使用Sample操作符对非统一信号进行采样来获得统一信号。在一些实例中,Sample操作符使用给定的采样周期T和偏移量O在时间戳kT+O处生成点事件,其中k是整数,在时间戳kT+O处源信号具有活动流事件。Sample操作符调用流级lambda函数来计算每个具体化事件的有效载荷值。由于统一采样信号是离散时间信号,因此它们没有与它们相关联的流级lambda函数。也就是说,与将值的表示维持为lambda函数相反,采样操作符可以包括在每个离散时间点处对lambda函数求值,以便生成值的阵列。
此外,Sample操作符支持分组信号计算。在分组信号中,每个流事件携带分组标识符。例如,以上结合图1呈现的特定实现对SensorId的流事件进行分组。在一些实例中,Sample操作符在内部跟踪Sample操作符处理的每个分组的活动事件。由于流事件以非减少同步(间隔开始)时间戳顺序处理,因此每个事件可以向前移动全局流时间。在这种情况下,操作符可以为每个分组产生样本直到当前时间,更新每个分组的内部状态以移除任何非活动事件,并且更新当前分组以包括当前事件。如果当前状态检测到重叠事件,则Sample操作符可以确定所意图的信号实际上不是信号(由于在特定时刻处存在多个事件)。
在一些实例中,插值窗口(例如,插值窗口422和428)定义用于插值的参考样本之间的最大时间距离。例如,在线性插值中,如果两个连续参考样本相距多于一个插值窗口(例如,如在所示输入样本406和408的情况下),则插值函数可以将它们视为属于两个不同的信号序列。
在一个特定实现中,流式DSP系统可以从图4A获得统一信号:
var s1=s0.Sample(30,0,p=>p.FirstOrder(60)); (40)
在一些实例中,每个统一采样信号维持存储插值策略的属性。该策略可以在信号重新采样期间使用,例如,在对具有不同采样周期的统一信号进行二进制操作中发生。
继续该特定实现,Sample操作符可以对分组信号实现插值。对于每个分组,Sample操作符维护有限数目的观察样本,这些样本用作针对给定插值函数的参考点。具有间隔[a,b)的每个流事件生成参考点序列:在[a,a+1]处的起点,在[b–1,b)处的终点,以及来自间隔(a,b)的在采样节拍处的所有中间点。
每分组插值器状态使用固定大小的循环缓冲器来维持最近的参考点。缓冲器可以至少包括两个样本,其可以定义当前有效的插值窗口。在一些实例中,高阶插值器可以缓冲更多样本。每个插值器状态还封装对应于所选择的插值策略的插值函数。Sample操作符使用以下方法独立于插值函数与每个插值器状态交互,包括但不限于AdvanceTime(提前时间),AddPoint(添加点),CanInterpolate(可以插值)和Interpolate(插值)。
在一些实例中,AdvanceTime(long t)使缓冲器中的点无效,这些点落在在时间t结束的插值窗口之外。
在一些实例中,AddPoint(long t,T v)用给定参考点重写插值缓冲器中最旧的有效条目。
在一些实例中,当插值缓冲器为满并且t在最后两个参考点之间时,CanInterpolate(long t)返回真。
在一些实例中,Interpolate(long t)调用插值函数以计算在时间t处的值。
随着全局时间随着每个流事件向前移动,Sample操作符更新每个分组的状态以包括新的和无效的太远的参考点。在一些实例中,当一个分组的插值缓冲器为满时,Sample操作符在最后两个参考点之间的采样节拍处插入事件。在一些实例中,Sample操作符可以限于插值过去发生的事件。在一些实例中,Sample操作符通过将发射输出事件延迟至多插值窗口的大小来保留输出事件的时间顺序。
统一性模块230可以包括对统一采样信号进行操作的信号操作符。
一个这样的统一信号操作符可以包括改变统一采样信号的采样率的重新采样操作。例如,函数Upsample(n)(上采样(n))将信号的采样率增加整数因子n(即,减小采样周期)。插值函数计算新中间样本的值。作为另一示例,函数Downsample(n)(下采样(n))通过保持每第n个样本并且丢弃其他样本来降低信号的采样率(即,增加采样周期)。作为另一示例,函数Resample()(重新采样())改变信号的采样周期、偏移和插值函数。例如,图4B中表示的统一信号可以被重新采样以使采样周期减半,改变插值策略,并且使插值窗口大小加倍。下面表示这种重新采样的一种特定实现。
var s2=s1.Resample(30,0,ps=>ps.ZeroOrder(120)) (41)
统一信号操作符的另一示例包括涉及统一信号的二进制算术运算,其利用时间连接来匹配样本。例如,将两个统一采样信号相加,写为left.Plus(right),当它们共享相同的采样周期和偏移时,在一个特定实现中表示为:
left.Join(right,(l,r)=>l+r); (42)
在一些实例中,当以下条件未被满足时,二进制操作符在将它们连接在一起之前预处理操作数之一:1)如果采样周期相同但是偏移不同,则一个信号可以移位偏移差;2)如果采样周期不同,则可以重新采样具有较大采样周期的信号以匹配另一信号的周期和偏移;3)当一个操作数是非统一信号时,该非统一信号可以用另一统一操作数的采样周期和偏移进行采样,以便生成统一的结果。
统一信号操作的另一示例是组合现有流操作符的统一信号聚合。例如,使用大小为W的跳跃窗口和跳跃大小H个样本对统一信号s的样本求和,写为s.Sum(W,H),可以实现为:
s.HoppingWindow(W*s.Period,H*s.Period,s.Offset) (43)
.Aggregate(w=>w.Sum(e=>e)) (44)
.AlterEventDuration(1) (45)
在上面的示例中,HoppingWindow(跳跃窗口)宏通过改变事件寿命来创建跳跃窗口,Sum(求和)聚合将值一起相加,并且AlterEventDuration(改变事件持续时间)操作符通过发出点事件来恢复统一信号形式。
图5A是示出了包括多个列有效载荷的数据批次502和504内的数据组织的示例的框图500。此外,数据批次502和504可以由等待时间控制消息506和508分开,等待时间控制消息506和508可以控制数据批次的处理以在特定时间处输出结果。例如,等待时间控制消息506(也称为标点符号)可以操作以迫使流式DSP系统冲刷部分批次并且立即产生输出。
在一些实例中,数据批次502包括被示出为阵列510、512、514、516和518的多个列有效载荷。在一些实例中,阵列510、512、514、516和518可以单独存储为存储器中的物理连续阵列,以支持高效存储器访问。在一些实例中,编译器可以在阵列中的字段之间插入填充,以使数据的一个或多个块与存储器中的字边界对齐。在一些实例中,阵列可以在C或C#编程语言中用个体结构实现。阵列510、512、514、516和518可以包含与流数据相关联的任何键、值和/或时间和/或与将数据分组到批量列表示中相关联的任何键、值和/或时间。例如,阵列可以包含一个或多个分组键(例如,标识整个流内的特定分组的键)、同步时间(例如,流式DSP系统已知信息的逻辑时刻)、其他时间(例如,附加时间信息,诸如指示何时将应用流数据的时间间隔)、键(例如,诸如传感器ID)、值(例如,温度、压力、湿度、函数有效载荷、实数值、复数值等)、散列(例如,与分组键相关联)、位向量(例如,指示数据是否存在的单个位等)、以及其他。
在一些实例中,数据批次504可以包括与数据批次502类似的数据表示。也就是说,数据批次504可以包括与数据批次502相同的一个或多个信息类别,但是可以与不同的分组键或不同的时间段或间隔相关联。
在一些实例中,阵列512可以包括键K1、K2、K3、K4和K5,其可以对应于用于分组和/或识别数据的键值。例如,键值可以用于对应于特定传感器ID,使得与特定传感器ID相关联的所有数据可以与特定键值相关联。在一些实例中,键值不需要是唯一的,并且一个特定键值(例如,K1)可以与多个行(例如,R1、R2、R5、R7等)相关联。
在一些实例中,阵列514可以包括值V1、V2、V3、V4和V5,其可以对应于根据本公开处理的聚合和统一信号。
图5B是图示以批量列表示从阵列接收数据的示例性循环缓冲器520的框图。例如,循环缓冲器520可以包括值V1、V2和V3,其可以对应于图5A中的阵列514中的值V1、V2和V3。在一些实例中,值V1、V2和V3可以对应于循环缓冲器520内的数据窗口522内的数据。可以根据与数据窗口522相关联的窗口大小将数据从数据阵列514复制到循环缓冲器520。可以根据数据窗口522的大小来设置循环缓冲器520的大小,例如,使得循环缓冲器520大于数据窗口522。在一些实例中,循环缓冲器520可以与特定键(例如,传感器ID)相关联,使得与键相关联的值可以被添加到循环缓冲器520。
图6是示出用于执行DSP操作的窗口大小602和跳跃大小604的示例的框图600。在使用多个窗口的数据(例如,对应于窗口大小602的数据606和608,或对应于窗口大小602的数据610和606)处理统一信号时,信号窗口(例如,图5B的数据窗口522)维持一个统一信号的活动样本阵列。信号窗口使用相关联的信号的采样周期和偏移来计算新样本的索引位置。在一些实例中,信号窗口还维持阵列中的最新时间戳,并且可以在添加新样本时检测任何丢失值。在一些实例中,一个或多个丢失值将被替换为零或标记为无效。每个信号窗口都被实现为固定大小的循环阵列,以便高效支持使用重叠数据窗口的离线和在线处理。
在一个特定实现中,称为TWindow<T>的类可以用作将类型T的样本从时间-关系数据模型变换为阵列数据模型的数据结构。
此外,信号窗口支持在跳跃窗口上的递增计算(例如,根据跳跃大小604)。每个信号窗口可以维持最近过期的样本的固定大小的历史,例如跳跃大小604。TWindow<T>类可以提供用于访问存储在循环缓冲器中的整个数据阵列的方法,旧的增量(例如,如数据610所示),以及新的增量(例如,如数据608所示)。在一些实例中,DSP操作符可以使用这些增量(例如,数据610和608)来递增地更新每个跳跃事件上的操作符状态。
在一些实例中,可以根据DSP操作来设置信号窗口的参数,例如,经由诸如图1的接口模块210的接口。在一些实例中,窗口规范可以包括三个参数:1)窗口大小(例如,诸如窗口大小602),其指示每个窗口持续或包括多少样本;2)跳跃大小(例如,诸如跳跃大小604),其指示每个窗口相对于先前窗口向前移动多少个样本;3)布尔指示符,其指示如何处理丢失的样本。例如,如果布尔指示符为真,则在从阵列复制时,丢失的样本可以在循环缓冲器中用零替换,如果为假,则丢失的样本可以被标记为无效。在一些实例中,布尔指示符基于要执行的DSP操作的类型。例如,FFT操作可以将丢失的样本标记为无效,同时数字过滤操作可以使用布尔操作符在循环缓冲器中用零填充阵列。
示例过程(例如,在图1和7中)被示出为逻辑流程图,其每个操作表示可以用硬件、软件或其组合实现的操作序列。在软件的上下文中,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,计算机可执行指令当由一个或多个处理器执行时配置设备以执行所述操作。通常,计算机可执行指令包括执行特定函数的例程、程序、对象、组件、数据结构等。描述操作的顺序不意图被解释为限制,并且可以以任何顺序和/或并行地组合任何数目的所描述的操作以实现该过程。此外,可以省略任何个体操作。
图7是用于配置DSP操作并且对流数据应用将DSP操作的过程700。在一个实施例中,过程700可以由图2的服务提供者216和/或计算设备202执行。然而,过程可以在其他环境中执行,并且也可以由其他设备执行。
在702,操作可以包括接收指示对流数据使用哪个聚合函数的聚合选择。例如,聚合选择可以包括选择平均函数、求和函数、计数函数等。在一些实例中,可以经由接口模块210输入聚合选择并且经由服务提供器216接收聚合选择。
在704,操作可以包括接收统一性选择,其指示对流数据使用哪个统一处理函数。例如,统一性选择可以包括选择一个或多个采样函数和/或插值函数来替换丢失的数据。在一些实例中,统一性选择可以经由接口模块210输入并且经由服务提供者216接收。
在706,操作可以包括接收一个或多个数据流。例如,可以经由一个或多个计算设备(诸如计算设备202)或一个或多个传感器(诸如传感器214)接收数十、数百、数千、数百万或更多的流。例如,在按时间顺序从不同传感器接收温度读数流的情况下,每个读数可以具有<传感器ID,时间,值>的格式。
在708,操作包括对流进行聚合以生成聚合流。例如,该操作708可以确保在任何时间点处最多一个流事件是活动的。该聚合操作708可以基于在操作702中接收的聚合选择。
在710,操作可以包括处理聚合流以生成统一信号。例如,操作710中的处理可以包括对流数据进行采样和插值,和/或对函数有效载荷求值以在离散时间间隔处具体化值。
在712,操作可以包括将数字信号处理(DSP)应用于统一信号以生成DSP输出。在一些实例中,操作712可以包括递增处理,同时在跳跃事件期间维持DSP操作的状态。
在714,操作可以包括传输DSP输出以呈现给用户和/或作为处理工作流中的另一函数的输入。
图8-图10示出了涉及具有<传感器ID,时间,值>的格式的温度读数流的分组计算的示例性性能。示例性性能包括对由分组键(传感器ID)标识的每个分组执行不同的子查询。在图8-图10中考虑了增加复杂度的三个不同的子查询,这些子查询组合信号处理和关系操作,同时改变分组的数目,同时保持输入信号大小固定。这些示例性性能图示由示例性流式DSP系统提供的对计算机的改进。
图8示出了基于分组信号相关性将示例性技术和/或系统的性能与传统DSP系统进行比较的示例图800。
图8中所示的示例试图将大小为32的给定矢量值(表示为a)与由传感器ID标识的每个分组的统一信号相关。相关性操作是计算每个采样点处窗口和矢量a之间的点积的滑动窗口(即跳跃大小为1)计算。在一个特定实现中,查询可以表示如下:
在上面表达的特定实现中,Map操作选择值列并且用其分组标识符(传感器ID)标记每个流事件,而Reduce操作对每个分组执行子查询。在一些实例中,流式DSP系统支持使用指定级别的并行性并行执行子查询。这些示例性性能示出了利用1个核(例如,Instant(1核))和16个核(例如,Instant(16核))的流式DSP系统的性能。
图8示出了具有不同数目的分组的示例性系统的查询性能。在一些实例中,通过完成分组信号相关性比其他系统快20倍,流式DSP系统优于其他示例性系统。
图9示出了基于分组信号插值和过滤将示例性技术和/或系统的性能与传统DSP系统进行比较的示例图900。在该示例中,处理由来自[0,1]的实数值样本组成并且分别具有不同采样周期20和5的两个统一采样信号s1和s2,并且比较相应系统的性能。对于每个分组,流式DSP系统中的处理包括对第一信号进行上采样以匹配第二信号的采样周期,并且还包括报告两个分组信号同时具有极值(接近0或1)的事件。在一个特定实现中,信号s1的分组可以表示为如前,其中代表性指令在下面针对信号s2重复:
var u1=s1.Map(s=>s.Select(e=>e.Temp), (50)
e=>e.SensorId) (51)
在另一特定实现中,可以使用双参数Reduce操作符来表达查询,如下所示:
图9示出了通过在不同数目的分组上使用16核的即时流式DSP系统的运行时间归一化的不同系统的查询运行时间。也就是说,与1核相比,当在16核上运行时,即时流式DSP系统实现了8倍的改进性能。此外,图9使用对数标度示出了y轴。在一些实例中,流式DSP系统支持分组信号的有状态插值,这导致比其他系统至少好十倍的性能,并且性能差距随着更多分组增加。在一些实例中,传统DSP系统(诸如SparkR和SciDB-R)在处理1,000,000分组时崩溃,而Octave已经被观察为比流式DSP系统慢三个数量级。因此,图9还示出了由即时流式DSP系统提供的对计算机的改进。
图10示出了基于对统一采样的分组信号的分组重叠和相加方法,将示例性技术和/或系统的性能与传统DSP系统进行比较的示例图1000。分组重叠和相加方法的一个特定实现表示为:
图10示出了通过在具有不同跳跃大小的256个样本跳跃窗口的具有16核的即时流式DSP系统的性能归一化的基准系统中的重叠和相加方法性能。示例性性能示出了流中的100个分组。与其他分组查询一样,即时流式DSP系统的性能比其他示例性系统高出两个数量级。在一些实例中,改进的性能至少部分基于使用有效处理重叠数据窗口的循环阵列,尤其是在使用小跳跃大小时,并且能够在避免冗余数据传输的同时实现原位数据处理。
示例条款
示例A,在系统处包括:一个或多个处理器;存储器,其存储模块,这些模块当由一个或多个处理器执行时使得系统执行包括以下的操作:从多个传感器接收流数据,流数据包括与第一时间值相关联的第一多个有效载荷和与第二时间值相关联的第二多个有效载荷;对流数据应用聚合操作以生成聚合流数据,聚合流数据包括与第一时间值相关联的第一单个有效载荷和与第二时间值相关联的第二单个有效载荷;对聚合流数据应用插值操作以生成统一信号,其中统一信号包括基于第一单个有效载荷的第一插值后的值和基于第二单个有效载荷的第二插值后的值,其中第一插值后的值和第二插值后的值与统一采样周期和偏移值相关联;将统一信号以批量列表示存储在存储器中,其中批量列表示至少包括第一列阵列和第二列阵列,第一列阵列包括在所述存储器中物理上邻近地存储的多个数据字段,多个数据字段中的第一数据字段存储第一插值后的值并且多个数据字段中的第二数据字段存储第二插值后的值,第二列阵列至少包括与第一数据批次相关联的分组键的第一阵列以及与第二数据批次相关联的分组键的第二阵列;从存储在存储器中的批量列表示访问第一列阵列,访问在不访问第二列阵列的情况下被执行;根据数据窗口至少将第一数据字段和第二数据字段存储在循环缓冲器中,数据窗口与从包括快速傅里叶变换、卷积、有限脉冲响应和无限脉冲响应的分组中选择的数字信号处理(DSP)操作相关联;以及将DSP操作应用于存储在循环缓冲器中的第一数据字段和第二数据字段以生成第一DSP输出。
示例B,示例A的系统,其中:流数据还包括与第三时间值相关联的第三多个有效载荷;聚合流数据还包括与第三时间值相关联的第三单个有效载荷;统一信号还包括基于第三单个有效载荷的第三插值后的值,以及其中第三插值后的值与统一采样周期和偏移值相关联;以及第一列阵列还将第三插值后的值存储在多个数据字段的第三数据字段中;其中操作还包括:确定DSP操作已经处理了与数据窗口相关联的第一数据字段和第二数据字段;根据与DSP操作相关的递增数据窗口,至少将第三字段值存储在循环缓冲器中;对存储在循环缓冲器中的第三数据字段应用DSP操作以生成第二DSP输出;以及至少部分基于第一DSP输出和第二DSP输出确定更新的DSP输出。
示例C,示例A或示例B的系统,其中访问第一列阵列而不访问第二列阵列通过减少系统的存储器使用和处理时间来改进系统的功能。
示例D,示例A至示例C中任一个的系统,其中第一单个有效载荷包括函数有效载荷,以及其中生成统一信号至少包括在第一时间值处对函数有效载荷求值以生成第一单个有效载荷。
示例E,示例A至示例D中任一个的系统,其中操作还包括处理以批量列表示存储的多个数据批次,处理包括在多个数据批次中的第一数据批次和多个数据批次中的第二数据批次之间插入等待时间控制消息,等待时间控制消息用于启动第一数据批次的处理的完成。
虽然以上关于系统描述了示例A至示例E,但是在本文档的上下文中应理解,示例A至示例E的内容也可以经由设备、计算机存储介质和/来方法来实现。
示例F,一种计算机实现的方法,包括:从一个或多个传感器接收流数据;对流数据应用聚合操作以生成聚合流数据;对聚合流数据应用统一性操作以生成统一信号;将统一信号以批量列表示存储在存储器中;从存储在存储器中的批量列表示中访问包括多个字段值的列阵列;根据数据窗口将多个字段值的一部分存储在循环缓冲器中,数据窗口与数字信号处理(DSP)操作相关联;对存储在循环缓冲器中的多个字段值的一部分应用DSP操作以生成DSP输出。
示例G,示例F的计算机实现的方法,其中多个字段值的一部分是第一部分,以及其中DSP输出是第一DSP输出,计算机实现的方法还包括:根据递增数据窗口大小在循环缓冲器中存储多个字段值的第二部分;对多个字段值的第二部分应用DSP操作以生成第二DSP输出;以及至少部分基于第一DSP输出和第二DSP输出生成更新的DSP输出。
示例H,示例F或示例G的计算机实现的方法,还包括在生成第一DSP输出和生成第二DSP输出之间维持DSP操作的状态。
示例I,示例F至示例H中任一个的计算机实现的方法,统一性操作至少包括采样操作以在与统一采样周期相关联的时间值处生成多个值。
示例J,示例F至示例I中任一个的计算机实现的方法,统一性操作至少包括插值操作以在与统一采样周期相关联的时间值处生成至少一个插值后的值。
实施例K,实施例F至实施例J中任一个的计算机实施方法,其中将统一信号以批量列表示存储在存储器中包括至少生成第一批次和第二批次,第一批次与部分基于第一时间间隔的分组键的第一阵列相关联,并且第二批次与部分基于第二时间间隔的分组键的第二阵列相关联。
示例L,示例F至示例K中任一个的计算机实现的方法,其中流数据包括与第一时间间隔相关联的第一函数有效载荷和与第二时间间隔相关联的第二函数有效载荷,计算机实现的方法还包括:在第一时间点处对第一函数有效载荷求值以生成第一具体化值;以及在第二时间点处对第二函数有效载荷求值以生成第二具体化值,其中统一信号包括第一具体化值和第二具体化值。
示例M,示例F至示例L中任一个的计算机实现的方法,还包括选择快速傅里叶变换、卷积、有限脉冲响应、无限脉冲响应和数字过滤器中的至少一个作为DSP操作。
示例N,示例F至示例M中任一个的计算机实现的方法,其中对流数据应用聚合操作以生成聚合流数据包括对来自一个或多个传感器中的至少第一传感器和第二传感器的流数据进行分组。
示例O,示例F至示例N中任一个的计算机实现的方法,其中一旦与应用DSP操作相关联,就将多个字段值的每个值写入循环缓冲器。
尽管以上关于方法描述了示例F至示例O,但是在本文档的上下文中应理解,示例F至示例O的内容也可以经由设备、系统和/或计算机存储介质来实现。
示例P,一种系统,包括:一个或多个处理器;存储器,其存储模块,这些模块当由一个或多个处理器执行时使系统执行包括以下的操作:从一个或多个传感器接收流数据;对流数据应用聚合操作以生成聚合流数据;对聚合流数据应用统一性操作以生成统一信号;将统一信号以批量列表示存储在存储器中;从存储在存储器中的批量列表示中访问包括多个字段值的列阵列;根据数据窗口将多个字段值的一部分存储在循环缓冲器中,数据窗口与数字信号处理(DSP)操作相关联;将DSP操作应用于存储在循环缓冲器中的多个字段值的一部分以生成DSP输出。
示例Q,示例P的系统,其中多个字段值的一部分是第一部分,以及其中DSP输出是第一DSP输出,操作还包括:根据递增数据窗口大小将多个字段值的第二部分存储在循环缓冲器中;对多个字段值的第二部分应用DSP操作以生成第二DSP输出;以及至少部分基于第一DSP输出和第二DSP输出生成更新的DSP输出。
实施例R,实施例P或实施例Q的系统,其中将统一信号以批量列表示存储在存储器中包括至少生成第一批次和第二批次,第一批次与部分基于第一时间间隔的分组键的第一阵列相关联,并且第二批次与部分基于第二时间间隔的分组键的第二阵列相关联。
示例S,示例P至示例R中任一个的系统,其中流数据包括与第一时间间隔相关联的第一函数有效载荷和与第二时间间隔相关联的第二函数有效载荷,计算机实现的方法还包括:在第一时间点处对第一函数有效载荷求值以生成第一具体化值;以及在第二时间点处对第二函数有效载荷求值以生成第二具体化值,其中统一信号包括第一具体化值和第二具体化值。
示例T,示例P至示例S中任一个的系统,其中对流数据应用聚合操作以生成聚合流数据包括对来自一个或多个传感器中的至少第一传感器和第二传感器的流数据进行分组。
尽管以上关于系统描述了示例P至示例T,但是在本文档的上下文中应理解,示例P至示例T的内容也可以经由设备、计算机存储介质和/或方法来实现。
结论
尽管本公开可以使用特定于结构特征和/或方法操作的语言,但是本公开不限于本文描述的特定特征或操作。相反,特定特征和操作被公开为实现本公开的说明性形式。
Claims (20)
1.一种用于信号处理的计算机实现的方法,包括:
从一个或多个传感器接收流数据,其中所述流数据包括与第一时间间隔相关联的第一函数有效载荷和与第二时间间隔相关联的第二函数有效载荷;
对所述流数据应用聚合操作以生成聚合流数据;
对所述聚合流数据应用统一性操作以生成统一信号,其中应用所述统一性操作包括:
基于所述第一函数有效载荷生成第一具体化值;以及
基于所述第二函数有效载荷生成第二具体化值;
将所述统一信号以批量列表示存储在存储器中,其中所述统一信号包括所述第一具体化值和所述第二具体化值;
从存储在所述存储器中的所述批量列表示访问包括多个字段值的列阵列;
根据数据窗口将所述多个字段值的一部分存储在循环缓冲器中,所述数据窗口与数字信号处理DSP操作相关联;以及
对存储在所述循环缓冲器中的所述多个字段值的所述一部分应用所述DSP操作以生成DSP输出。
2.根据权利要求1所述的计算机实现的方法,其中所述多个字段值的所述一部分是第一部分,并且其中所述DSP输出是第一DSP输出,所述计算机实现的方法还包括:
根据递增数据窗口大小将所述多个字段值的第二部分存储在所述循环缓冲器中;
对所述多个字段值的所述第二部分应用所述DSP操作以生成第二DSP输出;以及
至少部分基于所述第一DSP输出和所述第二DSP输出来生成更新的DSP输出。
3.根据权利要求2所述的计算机实现的方法,还包括在生成所述第一DSP输出和生成所述第二DSP输出之间维持所述DSP操作的状态。
4.根据权利要求1所述的计算机实现的方法,所述统一性操作至少包括采样操作以在与统一采样周期相关联的时间值处生成多个值。
5.根据权利要求1所述的计算机实现的方法,所述统一性操作至少包括插值操作以在与统一采样周期相关联的时间值处生成至少一个插值后的值。
6.根据权利要求1所述的计算机实现的方法,其中将所述统一信号以所述批量列表示存储在所述存储器中包括至少生成第一批次和第二批次,所述第一批次与部分基于第一时间间隔的分组键的第一阵列相关联,并且所述第二批次与部分基于第二时间间隔的分组键的第二阵列相关联。
7.根据权利要求1所述的计算机实现的方法,还包括选择快速傅里叶变换、卷积、有限脉冲响应、无限脉冲响应和数字过滤器中的至少一个作为所述DSP操作。
8.根据权利要求1所述的计算机实现的方法,其中对所述流数据应用所述聚合操作以生成所述聚合流数据包括:对来自所述一个或多个传感器中的至少第一传感器和第二传感器的流数据进行分组。
9.根据权利要求1所述的计算机实现的方法,其中一旦与应用所述DSP操作相关联,则所述多个字段值的每个值被写入到所述循环缓冲器。
10.根据权利要求1所述的计算机实现的方法,其中聚合函数包括将所述第一函数有效载荷与第三函数有效载荷相加,其中lambda函数表示所述相加。
11.根据权利要求1所述的计算机实现的方法,其中基于所述第一函数有效载荷生成所述第一具体化值包括对恒等函数求值。
12.一种电子系统,包括:
一个或多个处理器;以及
存储器,其存储模块,所述模块当由所述一个或多个处理器执行时,使得所述系统执行包括以下的操作:
从一个或多个传感器接收流数据,其中所述流数据包括与第一时间间隔相关联的第一函数有效载荷和与第二时间间隔相关联的第二函数有效载荷;
对所述流数据应用聚合操作以生成聚合流数据;
对所述聚合流数据应用统一性操作以生成统一信号,其中应用所述统一性操作包括:
基于所述第一函数有效载荷生成第一具体化值;以及
基于所述第二函数有效载荷生成第二具体化值;
将所述统一信号以批量列表示存储在存储器中,其中所述统一信号包括所述第一具体化值和所述第二具体化值;
从存储在所述存储器中的所述批量列表示访问包括多个字段值的列阵列;
根据数据窗口将所述多个字段值的一部分存储在循环缓冲器中,所述数据窗口与数字信号处理DSP操作相关联;以及
对存储在所述循环缓冲器中的所述多个字段值的所述一部分应用所述DSP操作以生成DSP输出。
13.根据权利要求12所述的系统,其中所述多个字段值的所述一部分是第一部分,并且其中所述DSP输出是第一DSP输出,所述操作还包括:
根据递增数据窗口大小将所述多个字段值的第二部分存储在所述循环缓冲器中;
对所述多个字段值的所述第二部分应用所述DSP操作以生成第二DSP输出;以及
至少部分基于所述第一DSP输出和所述第二DSP输出生成更新的DSP输出。
14.根据权利要求12所述的系统,其中将所述统一信号以所述批量列表示存储在所述存储器中包括至少生成第一批次和第二批次,所述第一批次与部分基于第一时间间隔的分组键的第一阵列相关联,并且所述第二批次与部分基于第二时间间隔的分组键的第二阵列相关联。
15.根据权利要求12所述的系统,其中对所述流数据应用所述聚合操作以生成所述聚合流数据包括:对来自所述一个或多个传感器中的至少第一传感器和第二传感器的流数据进行分组。
16.一种电子系统,包括:
一个或多个处理器;以及
存储器,其存储模块,所述模块当由所述一个或多个处理器执行时,使得所述系统执行包括以下的操作:
接收来自多个传感器的流数据,所述流数据包括与第一时间值相关联的第一多个有效载荷和与第二时间值相关联的第二多个有效载荷;
对所述流数据应用聚合操作以生成聚合流数据,所述聚合流数据包括与所述第一时间值相关联的第一单个有效载荷和与所述第二时间值相关联的第二单个有效载荷;
对所述聚合流数据应用插值操作以生成统一信号,其中所述统一信号包括基于所述第一单个有效载荷的第一插值后的值和基于所述第二单个有效载荷的第二插值后的值,其中所述第一插值后的值和所述第二插值后的值与统一采样周期和偏移值相关联;
将所述统一信号以批量列表示存储在所述存储器中,其中所述批量列表示至少包括第一列阵列和第二列阵列,所述第一列阵列包括在所述存储器中存储的多个数据字段,所述多个数据字段中的第一数据字段存储所述第一插值后的值并且所述多个数据字段中的第二数据字段存储所述第二插值后的值,所述第二列阵列至少包括与第一数据批次相关联的分组键的第一阵列以及与第二数据批次相关联的分组键的第二阵列;
从存储在所述存储器中的所述批量列表示访问所述第一列阵列,所述访问在不访问所述第二列阵列的情况下被执行;
根据数据窗口至少将所述第一数据字段和所述第二数据字段存储在循环缓冲器中,所述数据窗口与数字信号处理DSP操作相关联;以及
对存储在所述循环缓冲器中的所述第一数据字段和所述第二数据字段应用所述DSP操作以生成第一DSP输出。
17.根据权利要求16所述的系统,其中:
所述流数据还包括与第三时间值相关联的第三多个有效载荷;
所述聚合流数据还包括与所述第三时间值相关联的第三单个有效载荷;
所述统一信号还包括基于所述第三单个有效载荷的第三插值后的值,并且其中所述第三插值后的值与所述统一采样周期和所述偏移值相关联;以及
所述第一列阵列还将所述第三插值后的值存储在所述多个数据字段中的第三数据字段中;以及
其中所述操作还包括:
确定所述DSP操作已经处理了与所述数据窗口相关联的所述第一数据字段和所述第二数据字段;
根据与所述DSP操作相关联的递增数据窗口至少将第三字段值存储在所述循环缓冲器中;
对存储在所述循环缓冲器中的所述第三数据字段应用所述DSP操作以生成第二DSP输出;以及
至少部分基于所述第一DSP输出和所述第二DSP输出确定更新的DSP输出。
18.根据权利要求16所述的系统,其中在不访问所述第二列阵列的情况下访问所述第一列阵列通过减少所述系统的存储器使用和处理时间来改进所述系统的功能。
19.根据权利要求16所述的系统,其中所述第一单个有效载荷包括函数有效载荷,并且其中生成所述统一信号至少包括在所述第一时间值处对所述函数有效载荷求值以生成所述第一插值后的值。
20.根据权利要求16所述的系统,其中所述操作还包括处理存储在所述批量列表示中的多个数据批次,所述处理包括在所述多个数据批次中的所述第一数据批次和所述多个数据批次中的所述第二数据批次之间插入等待时间控制消息,所述等待时间控制消息用于启动所述第一数据批次的所述处理的完成。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/152,369 US10178161B2 (en) | 2016-05-11 | 2016-05-11 | Digital signal processing over data streams |
US15/152,369 | 2016-05-11 | ||
PCT/US2017/031178 WO2017196642A1 (en) | 2016-05-11 | 2017-05-05 | Digital signal processing over data streams |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109155763A CN109155763A (zh) | 2019-01-04 |
CN109155763B true CN109155763B (zh) | 2022-04-29 |
Family
ID=58710100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780029092.8A Active CN109155763B (zh) | 2016-05-11 | 2017-05-05 | 数据流上的数字信号处理 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10178161B2 (zh) |
EP (1) | EP3455744B1 (zh) |
CN (1) | CN109155763B (zh) |
WO (1) | WO2017196642A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180088184A (ko) * | 2017-01-26 | 2018-08-03 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
US11243880B1 (en) | 2017-09-15 | 2022-02-08 | Groq, Inc. | Processor architecture |
US11868804B1 (en) | 2019-11-18 | 2024-01-09 | Groq, Inc. | Processor instruction dispatch configuration |
US11360934B1 (en) | 2017-09-15 | 2022-06-14 | Groq, Inc. | Tensor streaming processor architecture |
US11114138B2 (en) | 2017-09-15 | 2021-09-07 | Groq, Inc. | Data structures with multiple read ports |
US11170307B1 (en) | 2017-09-21 | 2021-11-09 | Groq, Inc. | Predictive model compiler for generating a statically scheduled binary with known resource constraints |
WO2019150799A1 (ja) * | 2018-01-31 | 2019-08-08 | 富士フイルム株式会社 | 補修長の決定方法及び補修長の決定装置 |
US11973830B2 (en) * | 2018-06-25 | 2024-04-30 | Siemens Aktiengesellschaft | System and method for streaming measurement data |
US11068488B2 (en) | 2018-07-05 | 2021-07-20 | Cisco Technology, Inc. | Efficient time based correlation of data streams |
US11537687B2 (en) | 2018-11-19 | 2022-12-27 | Groq, Inc. | Spatial locality transform of matrices |
US11948159B2 (en) * | 2019-04-08 | 2024-04-02 | Google Llc | Scalable matrix factorization in a database |
US20220239577A1 (en) * | 2021-01-22 | 2022-07-28 | Ethicon Llc | Ad hoc synchronization of data from multiple link coordinated sensing systems |
US11694533B2 (en) | 2021-01-22 | 2023-07-04 | Cilag Gmbh International | Predictive based system adjustments based on biomarker trending |
US12011163B2 (en) | 2021-01-22 | 2024-06-18 | Cilag Gmbh International | Prediction of tissue irregularities based on biomarker monitoring |
CN115174500B (zh) * | 2022-05-23 | 2023-09-12 | 北京大学 | 一种基于pisa的用于网内聚合传输的发送节点和交换机 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6584111B1 (en) * | 1998-11-04 | 2003-06-24 | Northern Telecom Limited | ABR flow control using single bit congestion indication and wavelet transform filtering |
US6446136B1 (en) | 1998-12-31 | 2002-09-03 | Computer Associates Think, Inc. | System and method for dynamic correlation of events |
US6748481B1 (en) * | 1999-04-06 | 2004-06-08 | Microsoft Corporation | Streaming information appliance with circular buffer for receiving and selectively reading blocks of streaming information |
GB0003571D0 (en) * | 2000-02-17 | 2000-04-05 | Secr Defence Brit | Signal processing technique |
RU2491737C2 (ru) * | 2006-03-31 | 2013-08-27 | Квэлкомм Инкорпорейтед | Управление памятью для высокоскоростного управления доступом к среде |
US7996388B2 (en) | 2007-10-17 | 2011-08-09 | Oracle International Corporation | Adding new continuous queries to a data stream management system operating on existing queries |
US8315990B2 (en) | 2007-11-08 | 2012-11-20 | Microsoft Corporation | Consistency sensitive streaming operators |
US8051069B2 (en) | 2008-01-02 | 2011-11-01 | At&T Intellectual Property I, Lp | Efficient predicate prefilter for high speed data analysis |
US20130066924A1 (en) | 2008-12-23 | 2013-03-14 | Honeywell International Inc. | Method and apparatus for utilizing matlab functionality in java-enabled environment |
US8548986B2 (en) | 2010-03-19 | 2013-10-01 | Microsoft Corporation | Adaptive row-batch processing of database data |
US8484243B2 (en) | 2010-05-05 | 2013-07-09 | Cisco Technology, Inc. | Order-independent stream query processing |
US8762297B2 (en) | 2010-05-17 | 2014-06-24 | Microsoft Corporation | Dynamic pattern matching over ordered and disordered data streams |
US20110314019A1 (en) | 2010-06-18 | 2011-12-22 | Universidad Politecnica De Madrid | Parallel processing of continuous queries on data streams |
PT105174A (pt) | 2010-06-26 | 2012-02-08 | Paulo Jorge Pimenta Marques | Instrumento e método para processamento contínuo de dados usando processadores massivamente paralelos |
US8223057B2 (en) * | 2010-09-30 | 2012-07-17 | Schneider Electric USA, Inc. | Quantizing sampled inputs using fixed frequency analog to digital conversions through interpolation |
US8478743B2 (en) | 2010-12-23 | 2013-07-02 | Microsoft Corporation | Asynchronous transfer of state information between continuous query plans |
US8990416B2 (en) | 2011-05-06 | 2015-03-24 | Oracle International Corporation | Support for a new insert stream (ISTREAM) operation in complex event processing (CEP) |
US8694565B2 (en) | 2011-06-16 | 2014-04-08 | Microsoft Corporation | Language integrated query over vector spaces |
US9965520B2 (en) * | 2011-06-17 | 2018-05-08 | Microsoft Corporation | Efficient logical merging over physically divergent streams |
US20130031567A1 (en) | 2011-07-25 | 2013-01-31 | Microsoft Corporation | Local event processing |
US20130159969A1 (en) | 2011-12-16 | 2013-06-20 | Microsoft Corporation | Digital signal processing with language integrated monads |
US20130254771A1 (en) | 2012-03-20 | 2013-09-26 | Google Inc. | Systems and methods for continual, self-adjusting batch processing of a data stream |
CA2871322C (en) | 2012-09-12 | 2018-10-16 | Bradley Katsuyama | Transmission latency leveling apparatuses, methods and systems |
US11288277B2 (en) | 2012-09-28 | 2022-03-29 | Oracle International Corporation | Operator sharing for continuous queries over archived relations |
WO2014124686A1 (en) | 2013-02-15 | 2014-08-21 | Telefonaktiebolaget L M Ericsson (Publ) | Optimized query execution in a distributed data stream processing environment |
US9514214B2 (en) | 2013-06-12 | 2016-12-06 | Microsoft Technology Licensing, Llc | Deterministic progressive big data analytics |
US9697262B2 (en) | 2013-12-17 | 2017-07-04 | Microsoft Technology Licensing, Llc | Analytical data processing engine |
WO2016049170A1 (en) * | 2014-09-23 | 2016-03-31 | Adelphic, Inc. | Providing data and analysis for advertising on networked devices |
-
2016
- 2016-05-11 US US15/152,369 patent/US10178161B2/en active Active
-
2017
- 2017-05-05 WO PCT/US2017/031178 patent/WO2017196642A1/en unknown
- 2017-05-05 CN CN201780029092.8A patent/CN109155763B/zh active Active
- 2017-05-05 EP EP17724191.6A patent/EP3455744B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2017196642A1 (en) | 2017-11-16 |
EP3455744B1 (en) | 2020-02-26 |
CN109155763A (zh) | 2019-01-04 |
US10178161B2 (en) | 2019-01-08 |
EP3455744A1 (en) | 2019-03-20 |
US20170331881A1 (en) | 2017-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109155763B (zh) | 数据流上的数字信号处理 | |
US9798756B2 (en) | Systems, methods and computer program products for probing a hash table for improved latency and scalability in a processing system | |
O’Connor et al. | SeqWare Query Engine: storing and searching sequence data in the cloud | |
US11010384B2 (en) | Imputing data for temporal data store joins | |
CN110795499B (zh) | 基于大数据的集群数据同步方法、装置、设备及存储介质 | |
US20160246829A1 (en) | Managing time series databases | |
Simmen et al. | Large-scale graph analytics in aster 6: bringing context to big data discovery | |
Elsayed et al. | Mapreduce: State-of-the-art and research directions | |
Andersen et al. | DISTIL: Design and implementation of a scalable synchrophasor data processing system | |
Gupta et al. | Faster as well as early measurements from big data predictive analytics model | |
Ferraro Petrillo et al. | Analyzing big datasets of genomic sequences: fast and scalable collection of k-mer statistics | |
CN111061758A (zh) | 数据存储方法、装置及存储介质 | |
CN103809915B (zh) | 一种磁盘文件的读写方法和装置 | |
Alam et al. | Generating massive scale-free networks: Novel parallel algorithms using the preferential attachment model | |
Costan | From big data to fast data: Efficient stream data management | |
US9213639B2 (en) | Division of numerical values based on summations and memory mapping in computing systems | |
US10289447B1 (en) | Parallel process scheduling for efficient data access | |
Ediger et al. | Scalable infrastructures for data in motion | |
CN113220530B (zh) | 数据质量监控方法及平台 | |
CN113360494B (zh) | 一种宽表数据的生成方法、更新方法和相关装置 | |
Lee et al. | Join processing with threshold-based filtering in MapReduce | |
Mousavi | Scalable Stream Processing and Management for Time Series Data | |
US20160055204A1 (en) | Apparatus and method for executing parallel time series data analytics | |
CN116644111A (zh) | 一种基于物联数据的指标确定方法、装置及电子设备 | |
CN117234899A (zh) | 回归测试方法、装置、设备及计算机介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |