CN109937408A - 处理器间的数据流调度 - Google Patents

处理器间的数据流调度 Download PDF

Info

Publication number
CN109937408A
CN109937408A CN201680090774.5A CN201680090774A CN109937408A CN 109937408 A CN109937408 A CN 109937408A CN 201680090774 A CN201680090774 A CN 201680090774A CN 109937408 A CN109937408 A CN 109937408A
Authority
CN
China
Prior art keywords
processor
data
stream
flow
circuit group
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.)
Pending
Application number
CN201680090774.5A
Other languages
English (en)
Inventor
杨康
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SZ DJI Technology Co Ltd
Shenzhen Dajiang Innovations Technology Co Ltd
Original Assignee
Shenzhen Dajiang Innovations Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Dajiang Innovations Technology Co Ltd filed Critical Shenzhen Dajiang Innovations Technology Co Ltd
Publication of CN109937408A publication Critical patent/CN109937408A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17325Synchronisation; Hardware support therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2483Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Image Processing (AREA)

Abstract

本文描述了支持处理器之间的数据流调度的系统、方法、存储介质和计算机程序。在一个实施例中,公开了一种用于处理数据的处理器。处理器包括流分类器和第一电路组。流分类器被配置为向数据流分配流标识符。第一电路组被配置为处理数据流的多个数据块,并且基于流标识符确定是否向另一处理器提供关于该多个数据块的处理的信息。

Description

处理器间的数据流调度
技术领域
本公开的实施例总体上涉及数据处理,包括但非专用于数据处理调度。
背景技术
多年来,处理器的数据处理能力在显著提高。在一个方面,晶体管速度和晶体管数量的增加增强了单个处理器的性能,但在许多情况下,性能的提高一直达不到线性。在另一方面,在处理器系统中实现了多个处理器,并且多个处理器的协调为处理器系统的性能增强提供了新的维度。处理器系统内的多个处理器可以是相同的类型。在这种情况下,处理器系统通常被称为同构系统。备选地,当处理器系统包括不同类型的处理器时,处理器系统通常被称为异构系统。异构系统可以将工作分配给不同的处理器以发掘其不同的特点从而达到系统的优化性能和/或高能效。
发明内容
本文描述了支持处理器之间的数据流调度的系统、方法、存储介质和计算机程序。在一个实施例中,公开了一种用于处理数据的处理器。处理器包括流分类器和第一电路组。流分类器被配置为向数据流分配流标识符。第一电路组被配置为处理数据流的多个数据块,并且基于流标识符确定是否向另一处理器提供关于多个数据块的处理的信息。
在一个实施例中,公开了用于处理数据的另一处理器。所述处理器包括被配置为向数据流分配流标识符的流分类器。处理器还包括第一电路组,所述第一电路组被配置为:处理所述数据流的多个数据块,基于所述流标识符确定是否向另一处理器提供所述处理的结果,当所述流标识符指示向所述另一处理器提供所述结果时,向所述另一处理器提供所述结果,否则向所述处理器内的第二电路组提供所述结果。
在一个实施例中,公开了用于处理数据的系统。所述系统包括在一个芯片内的处理器和另一处理器。所述处理器包括流分类器和第一电路组。流分类器被配置为向数据流分配流标识符。第一电路组被配置为处理数据流的多个数据块,并且基于流标识符确定是否向另一处理器提供关于多个数据块的处理的信息。
在一个实施例中,公开了用于处理数据的方法。所述方法包括向数据流分配流标识符,处理所述数据流的多个数据块,以及基于所述流标识符确定是否向另一处理器提供关于所述多个数据块的处理的信息。
本发明的实施例提供了在异构系统的多个处理器之间调度数据处理的方法,使得利用异构系统中的多个处理器的不同特性对数据进行高效处理。
附图说明
图1是根据本发明的一个实施例的异构系统的示例性说明。
图2示出了根据本发明的一个实施例的异构系统的流信息的分发。
图3A示出了根据本发明的一个实施例的异构系统的流映射。
图3B示出了根据本发明的一个实施例的异构系统的流配置。
图4示出了根据本发明的一个实施例的异构系统中的数据流处理。
图5A示出了根据本发明的一个实施例的数据流中的数据块。
图5B示出了根据本发明的一个实施例的向数据块分配流ID。
图6示出了根据本发明的一个实施例的异构系统中的数据流处理的更新。
图7示出了根据本发明的一个实施例的异构系统中的视频数据流处理。
图8是示出了根据本发明的一个实施例的异构系统中的数据流处理的流程图。
图9是示出了根据本发明的一个实施例的异构系统中的流信息的分发的流程图。
图10是根据本发明的一个实施例的异构系统的示例性说明。
图11是根据本发明的一个实施例的可移动物体的示例性说明。
具体实施方式
作为示例而非限制,在附图的各图中示出了本发明,其中相似的附图标记指示相似的元素。应当注意到:在本公开中对“一”或“一个”或“一些”实施例的引用不一定指的是相同实施例,并且这样的引用意味着至少一个实施例。
附图中,括号中的文本和具有虚线边界(例如,长划线虚线、短划线虚线、点虚线、以及点)的框在本文中可以用于示出向本发明实施例添加附加特征的可选操作。然而,这种标注不应当被视为意味着:在本发明的某些实施例中,他们是仅有的选项或可选操作,和/或具有实线边界的框不是可选的。同样在附图中,附图标记用于表示各种元件或组件,不同附图中的相同附图标记表示具有相同或相似功能的元件或组件。
在以下描述和权利要求中,可以使用术语“耦合”和“连接”以及它们的派生词。应当理解:这些术语不意在作为彼此的同义词。“耦合”用于指示两个或更多个元素可以或可以不彼此直接物理或电学接触、彼此协作或交互。“连接”用于指示在彼此耦合的两个或更多个元素之间建立通信。如本文所使用的,“集合”指的是包括一个项目的任何正整数个项目。
电子设备使用机器可读介质(也被称为计算机可读介质)来(内部和/或通过网络使用其他电子设备)存储和传输代码(其由软件指令构成,且有时被称为计算机程序代码或计算机程序)和/或数据,机器可读介质是例如计算机或机器可读存储介质(例如,磁盘、光盘、只读存储器(ROM)、闪存设备、相变存储器)以及计算机或机器可读传输介质(也被称为载体)(例如,电、光、无线电、声或其他形式的传播信号-例如载波、红外信号)。从而,电子设备(例如,计算机)包括硬件和软件,例如一个或多个微处理器的集合,其耦合到用于存储在该微处理器集合上执行的代码和/或用于存储数据的一个或多个机器可读存储介质。例如,电子设备可以包括包含代码的非易失性存储器,因为即使当电子设备关闭时(当电源被移除时),非易失性存储器也可以保持代码/数据。当电子设备开启时,该电子设备的微处理器将执行的代码的一部分通常从该电子设备的较慢的非易失性存储器复制到易失性存储器(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))。通常的电子设备还包括用于与其他电子设备建立网络连接(以使用传播信号来发送和/或接收代码和/或数据)的一个或多个物理网络接口的集合。
可移动物体是包括一个或多个推进单元以推进可移动物体的移动的电子设备。可移动物体可以是无人飞行器、无人载运工具或机器人。此外,可移动物体的移动可以通过可移动物体之外的不同电子设备(例如,与可移动物体分离的可移动物体的远程终端)来控制。无人飞行器也被称为无人机(UAV)、无人驾驶飞机或无人飞机系统(UAS),在本文中它们全部可以互换地使用,表示无人飞行器。
计算机视觉系统可以从数字图像或视频中获得高层理解。通过处理数字图像或视频,计算机视觉系统可以确定定位信息、重建场景、搜索和识别匹配的图像或视频。这些可以由计算机视觉系统执行的任务或其他任务通常是计算密集型的。因此,计算机视觉系统往往消耗大量电力、需要占用大量存放位置,和/或仅能够非实时地完成任务。传统上,计算机视觉系统通常是固定的,在计算机/数据中心中实现。
在移动环境中实现计算机视觉系统是具有挑战性的,因为该计算机视觉系统需要是紧凑的(以节省电力和机载占地面积),同时能够实时地执行复杂的计算任务。然而,在移动环境中实现计算机视觉系统具有广泛的吸引力。例如,可移动物体中的机载计算机视觉系统可以处理可移动物体的相机捕获的图像/视频,作出实时决策以引导可移动物体。在计算机视觉系统识别出障碍物的情况下,可移动物体可以确定如何导航。可移动物体还可以基于计算机视觉系统对所获得的图像/视频是否是针对目标的确定,来确定是否调整机载相机(例如,放大或缩小)。此外,基于计算机视觉系统对可移动物体的位置的地点/周围是否是预期的包裹目的地的确定,可移动物体还可以确定是否丢下包裹。因此,异构系统的灵活性使其适用于计算机视觉等应用,并且能够协调系统内的各种处理器以实现更好的性能和/或能效是有利的。
为了在移动环境中实现计算机视觉系统,计算机视觉系统需要是高能效的(从而消耗更少的电池能量),并且仍能够实时地执行复杂的计算。为了实现这些目标,可以使用包括两个或更多个处理器的异构系统来实现计算机视觉系统。
本发明的实施例提供了在多个处理器之间调度数据处理的方法。要注意的是,尽管计算机视觉被用作说明多个处理器之间的数据处理的调度的示例,但是本发明的实施例没有限制,并且可以应用于计算机视觉以外的应用。
图1是根据本发明的一个实施例的异构系统的示例性说明。如图1所示,异构系统100包括处理器102和处理器104。处理器102和处理器104可以是一个处理器的部分(或单元),或者可以封装在一个管芯中,从而成为芯片上系统(SoC)106。在备选实施例中,处理器102和处理器104实现在不同的芯片中。
来自附图标记112-116处的源0-n的数据由处理器102和处理器104来处理。每个源提供一个或多个数据流。例如,源可以是相机,并且数据流包括由相机捕获的图像/视频数据(数据流可以被称为视觉数据流)。在一个实施例中,一台相机产生一个数据流。在备选实施例中,当一个相机产生大量数据时,该相机可以产生多个流。例如,当相机以每秒30帧(fps)提供8K(通常为7680 X 4320、8192 X 5120和10240 X 4320像素之一)的超高清(UHD)分辨率的视频数据时,源可以产生两个数据流(例如,一个数据流是视频帧的左侧部分,另一个是右侧部分)以提高处理效率。
另外,源可以是数据存储设备,例如,所示出的数据存储器116。数据存储器可以是以下一种或多种:各种动态随机存取存储器(DRAM)(比如,双倍数据速率同步DRAM(DDRSDRAM或简称为DDR)、单数据速率(SDR)SDRAM、静态RAM(SRAM))、持久大容量存储设备(例如,闪存、磁盘)和持久性存储器(比如,相变存储器(PCM)、相变存储器和开关(PCMS)、忆阻器和自旋转移力矩(STT)RAM)。虽然数据存储器116被示为在处理器104内,但其可以在处理器104的外部,但耦合到处理器104。另外,数据存储器116可以在处理器102内,或者在处理器102的外部,但耦合到处理器102。
处理器102和104是具有不同特性的处理器。处理器104可以是诸如中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)和微控制器(MCU)的通用处理器。通用处理器104可以是单核处理器或多核处理器,其中每个核包括读取并执行程序指令的独立处理单元(称为核)。多核处理器可以具有不同处理特性的处理器核。例如,多核处理器可以具有一个或多个高性能核(通常称为“大”核)和一个或多个高能效核(通常称为“小”核)。
处理器102可以是专用处理器,其被定制为处理来自附图标记112-116处的源0-n的数据。当处理器102被构建为使一个或多个功能加速地处理来自源0-n的数据时,可以将其称为加速器。例如,当处理器102被定制为执行计算机视觉计算时,处理器102可以被称为视觉加速器。然而更一般地,处理器102可以被称为硬件加速器,被实现为执行特定的功能。
处理器102包括流分类器152和在附图标记154-158处的功能电路0-n。包括一个或多个电路的流分类器152将来自附图标记112-116处的源0-n的数据流映射到流标识符,如下文更详细的讨论。在处理器102中,功能电路组包含包括集成电路(以下简称为电路)的一组或多组逻辑、单元或芯片。功能电路组可以实现知识产权(IP)核。IP核包括一方的知识产权,并且该方可以是也可以不是提供处理器102的同一方。尽管在处理器102中示出了多个功能电路组,但是在一个实施例中,处理器102可以包括单个功能电路组。在一个实施例中,功能电路组也可以被称为电路块。
功能电路组(或简单地称为电路组,这两个术语可互换使用)可以包括被设计为对其接收的数据执行一个或多个特定功能的电路组。例如,处理器102可以是视觉加速器,其可以包括用于检测输入视频帧中的图像边缘(例如,通过检测视频帧的像素值的变化率)的电路组,用于检测输入视频帧中的皮肤状图像区域的另一电路组、用于确定对象深度(通常称为深度感知)的另一电路组、和/或用于检测输入视频帧中的运动(连续帧之间的变化)的另一电路组。电路组可以包括专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)。
多个电路组可以级联在一起,成为一系列功能电路,如附图标记154-158处所示的功能电路0-n所示。来自附图标记112-116处的源0-n的数据可以由该系列功能电路进行处理。一个数据流可以遵循功能电路组的顺序,而另一个数据流可以遵循功能电路组的另一顺序。例如,流1可以通过流分类器152-功能电路0-功能电路1-功能电路2进行处理,而流2可以通过流分类器152-功能电路1-功能电路2进行处理(从而跳过功能电路0)。另外,流3可以通过流分类器152-功能电路2-功能电路0进行处理(从而跳过功能电路1,并且功能电路0和2之间的处理顺序颠倒)。
处理器104协调处理器102对来自各个源的数据流的处理。处理器104可以承担数据融合的任务,以整合来自处理器102的功能电路的数据以进行确定。例如,数据融合可以包括基于经功能电路处理的源自不同角度的相机的数据来重建三维(3D)图像/视频,以确定3D图像/视频是否来自传送目的地。处理器104还可以承担流调度的任务,以指示如何在多个功能电路组中对数据流进行处理。通常,处理器104中的协调和数据融合需要比处理器102中的数据处理更少的实时计算。为了处理来自源的数据流,由于处理器104主要控制数据流处理,而处理器102自身执行数据流处理,所以我们可以将处理器104称为控制处理器,将处理器102称为执行处理器。
使用异构处理器处理数据流可以比单个处理器更具有优势。与专用处理器相比,通用处理器在处理特定源的数据流时通常消耗更多的电和更多的计算资源,但通用处理器在执行各种任务时具有更大的灵活性。例如,处理器104可以包括应用软件114,应用软件114可以由处理器104的提供方或第三方供应商提供。应用软件114可以被实现为在应用级使用,并且执行上面讨论的流调度和/或数据融合。例如,应用软件114可以是图像信号处理(ISP)模块(用于滤除图像噪声、自动图像曝光控制等)、将两个或更多图像投影到公共图像平面上的图像整流器、和/或避开障碍物并确定到达目的地的有效路线的智能导航仪。
诸如处理器102的专用处理器可以实现为以加速数据流处理为目标。专用处理器可以实现用于特定功能的特定电路组。例如,为了处理视频数据流,可以在专用处理器中实现电路组,以如上所述地检测视频帧的边缘。在通用处理器中实现这样的电路组可能是不可行的。另一方面,通用处理器在运行常见的高层任务(例如任务调度和数据融合)时是成本高效的。这是因为大量的应用需要处理器运行这些高层任务,所以通用处理器可能会被优化以高效地运行常见的高层任务。在异构系统中,通用处理器可以承担常见的高层任务(例如,使用应用软件),而专用处理器可执行专用于数据流的任务。随着通用处理器和专用处理器之间的任务划分,异构系统可以以合理的价格实现高性能。
有多种方法来协调处理器102和处理器104之间的任务划分。第一种方法是在两个处理器之间进行高层交互。为了处理一个数据流,处理器102中的功能电路组可以总是请求并从处理器104获得处理数据流的一个或多个指令。一旦电路组完成处理,它就通知处理器104。经处理的数据流可以被提供给一系列电路组中应对数据流进行处理的下一个电路组,并且下一个电路组然后再次请求并从处理器104获得处理数据流的一个或多个指令。该过程继续,直到数据流完成处理器102中的处理。在该方法中,为了完成一个数据流的处理,每个电路组可能需要与处理器104交互两次:第一次获得指令,第二次通知处理结果。这种方法的优点是数据流处理的灵活性:当数据流经过一系列电路组中的每个电路组时,处理器104完全控制处理器102中的数据流处理。但不利之处在于处理器104可能成为数据流处理的瓶颈。
处理器104可以是能效更高且灵活的通用处理器,这对于移动环境来说是理想的。然而,这种通用处理器通常在处理数据流时不能提供像处理器102那样的高性能。在该方法中,处理器102和处理器104之间的频繁交互拖慢了数据流处理的整体性能。例如,如果数据流将被10个电路组处理,并且每个电路组每秒处理500帧,则处理器104可能需要每秒处理10,000帧(一个电路组与处理器104每帧交互两次:第一次获得指令处理帧,第二次提供处理结果)。这样的工作量可能压倒处理器104,因此减慢了异构系统的整个数据流处理。
第二种方法是两个处理器之间进行低层交互。处理器102内的电路组一起被认为是单个模块,并且该单个模块仅在该单个模块的入口和出口处与处理器104交互。因此,为了处理数据流,该单个模块向处理器104请求在单个模块的入口处处理数据流的信息,然后将其处理结果在出口处提供给处理器104。这种低层交互需要来自处理器104的最小干预,因此处理器104不太可能成为数据流处理的瓶颈。然而,低层交互的代价是处理灵活性低。由于处理器104仅在所述单个模块的入口处控制数据流处理,所以在多个电路组的中间电路组中,处理器102中的电路组在没有处理器104的帮助的情况下处理数据流。然而,通过一系列电路组处理数据流通常需要向处理器104提供前面的电路组的处理结果,因此处理器104可以确定哪一个后面的电路组来提供前面的电路组的结果以及向后面的电路组提供什么。例如,两个或更多个后面的电路组可能能够在前面的电路组之后处理数据流,并且希望处理器104基于一个或多个标准(后面电路组的工作负载、数据流延迟时间要求等)来确定哪个后面的电路组提供前面的电路组的结果。又如,有时数据流中仅一部分数据需要在后面的电路组中进行处理,处理器104可以只将数据流中的那部分数据提供给后面的电路组。因此,在不及时干预的情况下,异构系统的整体效率受损,并且在许多情况下这种方法的低处理灵活性也是不理想的。
本发明的实施例旨在克服上述两种方法的缺点。本发明的实施例提供异构处理器之间的适当层面的交互,使得诸如处理器104的控制处理器不会成为数据流处理的瓶颈,并且诸如处理器102的执行处理器仅在必要时才与控制处理器交互。本发明的实施例提出了利用流标识符(ID)来识别数据流,并且使用流ID来确定如何在异构系统中的异构处理器之间进行交互。
图2示出了根据本发明的一个实施例的获得异构系统的流信息。图2与图1相似,并且相同的附图标记表示具有相同或相似功能的元件或组件。为了避免模糊图2的其他方面,图2中省略了图1的某些方面。
在异构系统200中,电路组可以使用数据流的流ID来确定是否与处理器104进行交互以处理数据流。处理器104可以将流信息提供给处理器102,使得处理器102中的电路组可以作出确定。处理器104可以向处理器102提供两种类型的流信息。一种类型是流映射,其定义了哪个流映射到哪个流ID。另一种类型是流配置,其定义了是否将电路组的流处理信息提供给处理器104以及如何提供。另外,处理器102可以从别处安装流映射和流配置,例如,可以从处理器102的源或处理器102的接口获得流映射和流配置。另外,可以从处理器104获得流映射和流配置的一部分,并且可以从处理器102的源或处理器102的接口获得另一部分。
在附图标记202处,流映射信息被提供给流分类器152。流映射信息可以存储在处理器102的数据存储器中(包含所示的流映射162),并且数据存储器可以在逻辑上耦合到流分类器152。数据存储器可以类似于上面关于图1所讨论的数据存储器116。
流映射信息指示流标识符如何映射到流。图3A示出了根据本发明的一个实施例的异构系统的流映射。流映射320将各种源(例如,图1中附图标记112-116处的源0-n)映射到流ID。在这个示例中,附图标记330处的源0来自物理相机(相机0),并且其被映射到流ID,FID0(流ID 0)。流映射320的每个条目对应于一个流ID。附图标记332处的源1是另一个物理相机(相机1),并且其被映射到流ID,FID1(流ID 1)。另外,来自相机K的源K被分为附图标记334和336处的两个数据流,并且源K的第一部分映射到FIDK(流ID K),第二部分映射到另一个流ID,FID(K+1)(流ID(K+1))。另外,附图标记338处的源M来自虚拟相机,例如不是物理相机,但在处理器102看来是相机。虚拟相机可以是来自数据存储器的数据,如上文关于图1所讨论的。在一个实施例中,虚拟相机可以是源自处理器104的数据(例如,耦合到处理器104的DDR DRAM),如将在下文中更详细讨论的。在该示例中,源M被映射到流ID,FIDM(流ID M)。通过流映射320,来自所有源的数据流可以被映射到各种流ID。在一个实施例中,虽然流映射320的每个条目的流ID是唯一的,但是当多个源被确定为由处理器102不加区分地进行处理时,这些多个源被赋予相同的流ID。
流ID可以采取各种形式。在一个实施例中,流ID可以是数值(例如,整数)。在备选实施例中,流ID可以指示数据流的源。例如,流ID FID0可以是从源物理相机提取的值,例如,相机的序列号、组织唯一标识符(OUI)或者媒体访问控制(MAC)地址/互联网协议(IP)地址。又例如,流ID FIDM可以是从数据存储器提取的值,例如,将源M提供给处理器102的数据存储器的网络接口标识符和/或端口ID。
通过将流映射信息提供给处理器102,处理器102可以基于流映射320将其接收的每个数据流映射到流ID,从而引导数据流经过处理器102的数据流处理。
返回参考图2,附图标记204处,流配置被提供给处理器102中的电路组。在一个实施例中,每个电路组包括数据存储器,该数据存储器包含每个电路组内的流配置信息(如流配置164-168所示)。在备选实施例中,流配置可以存储在处理器102的数据存储器中,但是每个电路组在逻辑地耦合到特定电路组的数据存储器中具有流配置的特定部分。数据存储器可以类似于上面关于图1所讨论的数据存储器116。
处理器102中的电路组使用流配置来确定是否向处理器104提供数据流的流处理信息以及如何提供。图3B示出了根据本发明的一个实施例的异构系统的流配置。在附图标记352处,可以通过流ID对流配置350进行索引。对于每个流,流配置350指示是否向处理器104提供数据流的流处理信息以及如何提供。例如,流配置350指示:流FIDL将向处理器104提供流处理信息(指示“是”的值),并且流FID(L+1)不向处理器104提供流处理信息(指示“否”的值)。当电路组识别输入数据流的流ID(在该示例中为FIDL或FID(L+1))时,该电路组使用识别出的流ID来搜索流配置350,并且该电路组可以相应地按照流配置350中的相应条目所指示的方式提供(或不提供)流处理信息。
流ID为FID0和FID1的数据流属于同一个流组,并且希望处理器102一次向处理器104提供流组的数据流处理信息,而不是在对数据流中的每个单个数据流进行处理时由每个单个数据流提供它自己的数据流处理信息。例如,流配置350指示流ID为FID0的数据流可以等待,直到流组中的一个或多个其他数据流准备好提供它们的数据流处理信息。在该示例中,流ID为FID0和FID1的数据流在附图标记358处的同一个流组1中,并且前者(FID0)可以等待(FID0的指示“等待”的值),直到后者准备好提供它的流处理信息(FID1的指示“是”的值),使得两个数据流一起提供它们的流处理信息。可以明确或隐含地指示条件性等待(FID0等待FID1)。例如,在一个实施例中,FID0的值可以是“等待FID1”(因此是明确指示)。在一个备选实施例中,FID0的值可以是简单的“等待”,因为在默认情况下,流ID为FID1的数据流是流组1中的所有其他数据流要等待的最后一个数据流。
流分组的一个应用是数据融合。数据融合可以在处理器104处执行,并且由于数据融合通常集成来自各个源(例如,多个相机)的数据,所以最好等待,直到来自各个源的数据被处理器102中的电路组处理,然后将处理后的信息一起提供给处理器104。
由于流映射320和流配置350以表的形式示出,所以前者可以被称为流映射表,后者可以被称为流配置表。但是,流映射和流配置信息可以存储在不同的数据结构中。例如,流映射和流配置中的每一个也可以在诸如记录、(链)列表、数组、文件、联合、类、关系数据库等的数据结构中实现。
返回参考图2,在流分类器152处,在一个实施例中被实现为一个电路的多路复用器172(在图中被简称为MUX)使用流映射162来将数据流映射到流ID。在电路组中,诸如执行单元174-178的执行单元使用流配置164-168来处理数据流。要注意的是,处理器102中的一个或多个电路组可以不使用流配置(例如,当确定一个或多个电路组可以在不需要处理器104干预的情况下完成它们对所有数据流的数据流处理时),而处理器102中的其他电路组使用流配置。
图4示出了根据本发明的一个实施例的异构系统中的数据流处理。图4与图1相似,并且相同的附图标记表示具有相同或相似功能的元件或组件。为了避免模糊图4的其他方面,图4中省略了图1的某些方面。任务框1-5示出了根据本发明的一个实施例的执行操作的顺序。
在任务框1处,多路复用器172将流ID映射到多个数据流,每个流ID被映射到一个数据流。如上所述,诸如相机的源可以产生多个数据流,并且由于每个数据流被分配了流ID,所以源可以被映射到多个流ID。
每个数据流都包含一个数据的流。在一个实施例中,该数据的流包括连续的视频帧流,例如从相机接收的每秒15、30、60或120帧的视频流。图5A示出了根据本发明的一个实施例的数据流中的数据块。
在一个实施例中,数据流502包括数据块(例如数据块522-526)的组。每组中的多个数据块可以是一个视频帧、多个视频帧或视频帧的一部分。视频帧可以是包含完整图像的数据点的关键帧(也称为帧内帧或I帧)。视频流还可以包括P帧(预测的图片帧),P帧包括与先前帧的变化,和/或B帧(双向预测图片帧),B帧包括与先前帧和在后一帧的变化。每个P帧和B帧可以由一个或多个宏块和运动矢量表示。
数据块通常包含多个数据点。每个数据点可以是像素。每个像素可以由1至48位来表示。24位像素有时被称为真彩色,30/36/48位像素有时被称为深颜色,并且它们通常被部署。本发明的实施例不限于数据块的特定形式。
另外,虽然以视频数据流作为数据流的示例进行讨论,但是数据流可以包含另一类型的数据。例如,数据流可以包含音频数据流或源自各种传感器(例如,诸如加速度计的运动传感器、陀螺仪、磁力计、光传感器、罗盘、接近度传感器、热传感器、高度传感器和环境光传感器)中的一个或多个的数据流。在这些情况下,数据块包括由源音频或各种传感器中的一个或多种产生的一个或多个数据点。本发明的实施例可以在各种数据块处映射流ID。
在一个实施例中,多路复用器172将流ID分配给数据块。图5B示出了根据本发明的一个实施例的向数据块分配流ID。对于所示出的数据块592,在附图标记595处,多路复用器172将流ID 590插入数据块592。然后修改后的数据块599被提供给电路组(例如,附图标记154处的功能电路0)。流ID 590可以被插入到数据块592的头部或尾部。例如,流ID可以附加到数据点、宏块、切片、帧或多个帧。
返回参考图4,尽管在一个实施例中多路复用器172可以向数据流分配流ID,但是在备选实施例中,来自源并到达处理器102的数据流可能已经包含流ID。例如,附图标记118处的源M是来自处理器104,并且处理器104可能已经将诸如FIDM的一个或多个流ID分配给一个或多个数据流的数据块。可以由数据存储器116来分配一个或多个流ID,其中源M从所述数据存储器116获得数据。在该情况下,多路复用器172不需要向一个或多个流分配附加的流ID。
除了将流ID映射到数据流之外,多路复用器172可以聚合来自各个源的数据流,并且向电路组提供聚合数据流以供处理。可以提供聚合以便维持数据流的时间顺序。例如,当源是产生数据块的多个相机时,数据块在被复用复用器172处理之后保持它们进入处理器102时的相同时间顺序。在一个实施例中,多个相机可以具有相同的曝光触发点,从而同时产生数据块。在被多路复用器172处理之后,多个相机在某个时间点(例如,上午10:00)上产生的所有数据块彼此相邻,并且跟随在该多个相机在较早时间点(例如上午9点59分)产生的所有数据块之后。另外,相机1产生的数据块跟随在相机0产生的数据块之后,如果这就是数据块进入处理器102的顺序的话。在某些应用中,维护数据块的时间顺序非常重要。例如,当多个数据流形成流组时,希望处理器102一次将整个流组的数据流处理信息提供给处理器104,如上文参考图3B所讨论的。电路组需要知道流组内的哪个数据流是其他数据流应该等待的,以便可以将流组的数据流处理信息一起提供给处理器104,并且希望时间上的最后一个数据流是其他数据流所等待的,使得数据流处理信息不会被过早地提供给处理器104(丢失时间上在后的一个或多个流的数据流处理信息)。
在任务框2处,来自流分类器152的数据块被提供给电路组(在该示例中是功能电路0),并且电路组处理每个数据流的数据块。数据流的处理产生数据流的数据流处理信息。例如,数据流处理信息可以是更新数据块。数据流处理信息可以包括处理数据块的结果。例如,电路组可以确定视频帧的边缘,并且因此处理数据块的结果可以是数据块的子集,该子集指示视频帧内的边缘。备选地或附加地,处理数据块的结果还可以包括一个或多个值,例如,深度感知IP核的结果可以是所确定的目标对象的深度。
在一个实施例中,多个数据块在任务框2处被功能电路0一起处理。在一个实施例中,将被电路组处理的多个数据块可以是视频帧中的数据块的一部分或全部、或者多个视频帧的数据块。
在一个实施例中,电路组中的数据块的处理由诸如执行单元174至178中的一个的执行单元来执行。执行单元对数据块执行一个或多个指令并生成数据流处理信息。虽然未示出,但电路组还可以包括用于对数据块执行一个或多个指令的一个或多个其他模块。所述一个或多个其他模块包括获取单元、解码单元、分配单元、调度单元、存储器写入单元、异常处理单元和指令退出单元(也称为提交单元)中的一个或多个。这些模块在本领域中是已知的,其功能在此不再重复。
在任务框3A处,功能电路0基于数据流的流ID向处理器104提供关于数据流的数据块的处理的信息(例如,数据流处理信息)。例如,数据流可以具有流ID FIDL,并且根据流配置350,假设向处理器104提供关于FIDL的数据块的处理的信息。因此,功能电路0向处理器104提供该信息。可以通过处理器102向处理器104发送中断请求来提供该信息,使得处理器104被中断以处理来自功能电路0的信息。如上所述,来自功能电路0的信息可以是更新的数据块或功能电路0的处理结果。更新的数据块或处理结果可以通过向处理器104转发更新数据块或处理结果的功能电路0、或者可以通过提供更新数据块或处理结果的地址/指针以便处理器104进行检索的功能电路被提供至处理器104。在一个实施例中,该信息被提供给处理器104而不提供给下一个电路组,但是在替代实施例中,该信息除了被提供给处理器104之外,还被提供给下一个电路组。
备选地,代替任务框3A,在任务框3B处,基于数据流的流ID,功能电路0可以向后续的电路组提供关于数据流的数据块的处理的信息,而不向处理器104提供该信息。例如,数据流可以具有流ID FID(L+1),并且根据流配置350,不向处理器104提供关于FID(L+1)的数据块的处理的信息。因此,关于FID(L+1)的数据块的处理的信息被提供给下一个电路组(在该示例中为附图标记156处的功能电路1),而不被提供给处理器104。当信息被提供给下一个电路组时,数据流FID(L+1)的数据块的处理在该电路组(功能电路0)处完成,并且在这个分支上不再执行任务(因此放弃任务框4-5)。
在一个实施例中,经功能电路0处理的数据块在一个实施例中也可以被提供给功能电路1和/或其他功能电路。数据块可以通过总线或互连设备410来提供。在一个实施例中,总线或互连设备410在处理器102和处理器104之间。在一个实施例中,总线或互连设备410可以被处理器102和处理器104两者访问。在一个实施例中,为了向处理器104提供关于电路的处理的信息,电路组可以仅向总线或互连设备410提供更新数据块或处理结果的一个或多个地址/指针,以便处理器104进行检索。在一个实施例中,总线或互连设备410耦合到功能电路组(例如,附图标记112-116处的源0-n向总线或互连设备410提供数据流的数据块),使得这些电路组从总线或互连设备410获得数据块。例如,数据存储器116可以提供数据流的数据块以便电路组进行处理。
在任务框4处,处理器104处理所提供的关于数据流FIDL的数据块的处理的信息。该处理可以由处理器104的执行单元(未示出)执行,其中该执行单元对所提供的信息执行一个或多个指令,与处理器102内的执行单元类似。另外,处理器104还可以包括一个或多个模块,例如获取单元、解码单元、分配单元、调度单元、存储器写入单元、异常处理单元和指令退出单元(也称为提交单元)。如上所述,该处理可以由应用软件114执行。在处理器104处由功能电路0提供的信息的处理可以是数据流FIDL的更新数据块和/或一个或多个值。
在任务框5处,处理器104将关于处理器104对功能电路0提供的内容的处理的信息提供给下一个电路组(在该示例中为附图标记156处的功能电路1)。换句话说,功能电路1从处理器104接收数据,其中所述数据由处理器104响应于处理功能电路0提供的信息而生成。从处理器104提供给功能电路1的信息可以是数据流FIDL的更新数据块和/或一个或多个值。在一个实施例中,处理器104向功能电路1提供信息的一个或多个指针/地址(例如,向总线或互连设备410提供一个或多个指针/地址,功能电路1根据它们进行检索)。
在一个实施例中,当数据存储器(如数据存储器116)是数据流的源时,处理器104可以向数据存储器提供关于其处理(例如,更新的数据块)的信息。由于数据存储器可以向总线或互连设备(如总线或互连设备410)提供其数据块,所以该更新的数据块被提供至下一个电路组(在该示例中为功能电路1)。
在功能电路1处,处理继续。对于数据流FID(L+1),功能电路1基于流ID FID(L+1)确定是否向处理器104提供关于FID(L+1)的数据块的处理的信息。功能电路1可以具有与功能电路0的流配置不同的流配置,并且如果功能电路1的流配置指示向处理器104提供关于FID(L+1)的数据块的处理的信息,则功能电路1将这么做。
类似地,对于数据流FIDL(其关于在功能电路0中的处理的信息被提供至处理器104),来自处理器104和/或功能电路0的更新数据块被提供至功能电路1,功能电路1再次基于流ID ID FIDL确定是否向处理器104提供关于FIDL的更新数据块的处理的信息。如果功能电路1的流配置指示向处理器104提供关于FIDL的数据块的处理的信息,则功能电路1将该信息提供给处理器104,否则不将该信息提供给处理器104。应该注意,对于数据流FIDL和FID(L+1),在一个实施例中,经功能电路0处理的数据块也可以被提供至功能电路1,使得功能电路1处理该数据块以及更新的数据块。
任务框3-5中的操作继续到下一个电路组,直到数据流的数据块被用于数据流的一系列电路组处理。在一个实施例中,一旦该一系列电路组完成数据块的处理,数据块则可以被提供至另一处理器(例如,处理器104或不同的处理器)。如前所述,当数据流的一系列电路组完成对数据流的数据块的处理时,每个数据流可以具有其自己的一系列电路组和针对数据流完成处理操作。
通过图4所示的操作,数据流的数据块的执行由处理器102执行,并且仅当处理器104指示(通过向处理器102提供流映射和流配置)处理器104将被提供关于处理的信息时,处理器104才参与其中。因此,通过设置流映射和/或流配置,处理器104可以确定是否参与一个或多个电路组处的数据流的处理以及如何进行。
另外,处理器104可以更新流映射和流配置,从而调整处理器102处的数据流处理。图6示出了根据本发明的一个实施例的异构系统中的数据流处理的更新。图6与图1相似,并且相同的附图标记表示具有相同或相似功能的元件或组件。为了避免模糊图6的其他方面,图6中省略了图1的某些方面。任务框1-2示出了根据本发明的一个实施例的执行操作的顺序。
在任务框1处,处理器104基于处理器的工作负载、源特性、数据流延迟等中的一个或多个来确定流信息需要更新。流信息包括如上所述的流映射和流配置。当异构系统处理进入处理器102的各种数据流时,处理器102和104处的工作负载可能波动。例如,一些电路组可能不能承受处理数据流,而另一些电路组没有被激活,或者处理器104基于现有的流映射和/或流配置从处理器102得到了过多或过少的中断请求。希望基于工作负载动态地调整流处理(不同于使用数据流进入异构系统时的现有流映射和流配置的静态流处理)。类似地,随着时间的推移,源可能会改变其特性,例如其数据速率(每秒比特/帧数)。例如,源可以是提供回放视频数据流(图3A中所示的源M)的DDR DRAM(例如,耦合到处理器104的那一个),并且在处理器102中,该视频在动作场景处比在回放视频数据流的视频剧务(videocredit)处需要更多的处理资源。因此,希望调整流处理,使得处理器104在动作场景处比通常提供视频剧务的回放视频数据流的开头和/或结尾处更多地参与到处理回放视频数据流(即,使得电路组更可能向处理器104提供关于处理的信息)。可以为处理器104和/或处理器102的工作负载设置一个或多个阈值。一旦工作负载超过阈值(或低于另一阈值),则处理器104确定需要更新流信息。类似地,可以为数据流的计算复杂度设置一个或多个阈值。例如,电路组可以向处理器104报告数据流所占的电路使用百分比,并且如果电路使用百分比超过阈值(或低于另一阈值),则处理器104确定需要更新流信息。作为另一示例,数据流可以具有延迟要求,当处理器102对数据流的处理导致数据流的延迟超过阈值(或者低于另一阈值)时,处理器104可以确定需要更新流信息。
在任务框2A处,处理器104指示处理器102更新流映射。通过使流分类器152更新流映射,处理器104使得一个或多个流被不同地处理。例如,当上面讨论的回放视频数据流将流映射从FIDM改变到FID(M+1)时,回放视频数据流将在不同电路组处被不同地处理,因为在各个电路组处FID(M+1)的流配置可能不同于FIDM的流配置。
备选地或附加地,在任务框2B处,处理器104指示处理器102更新一个或多个电路组的流配置。通过使电路组中的流配置更新,处理器104改变电路组是否或如何提供关于数据流的处理的信息。例如,改变可能使得电路组从不向处理器104提供信息变为提供该信息,反之亦然。另一个改变可以使电路组从立即(在确定的流数据块组被处理之后)向处理器104提供关于流的处理的信息变为等待直到一个或多个数据流完成其处理(例如,因为一个或多个数据流与该数据流在同一个流组中),反之亦然。
对数据流处理的流映射更新通常是比电路组中的流配置更新更大的改变。这是因为在前者中,每个流ID对应于如何在各个电路组处协调数据流处理与处理器104的设置,其中每个流ID具有用于这种协调的流配置中的条目。相比之下,对电路组中的流配置的更新可能影响仅在该电路组处被处理的数据流的数据流处理。
通过与图4和图6中示出的操作相关的操作,处理器104可以动态地控制处理器102对数据流的处理。因此,本发明的实施例提供了优于上文讨论的第一种和第二种方法的优点。与第一种方法不同,并不需要所有电路组针对所有数据流与处理器104交互,并且在本发明的实施例中,仅当电路组的流配置有指示时,电路组才提供关于数据流的处理的信息。因此,处理器104可以避免成为数据流处理的瓶颈。与处理器104可将多个电路组作为单个模块进行交互的第二种方法不同,在本发明的实施例中,处理器104可以通过更新流标识符的流映射和/或电路组的流配置来根据需要与电路组进行交互。因此,处理器104具有更多机会使处理器102的数据流处理发生改变,而不是仅在包括所有多个电路组的单个模块的入口和出口处。
图7示出了根据本发明的一个实施例的异构系统中的视频数据流处理。图7与图1相似,并且相同的附图标记表示具有相同或相似功能的元件或组件。系统700是本发明的一个实施例,其中数据流处理专用于计算机视觉应用。
系统700包括通用处理器704和视觉加速器702。通用处理器704可以是中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)或微控制器(MCU)。视觉加速器702专门定制以执行计算机视觉计算。视觉加速器702包括可以在一个或多个电路中实现的流分类器752以及在附图标记754-758处的一个或多个电路组(例如功能电路0-n),其中电路组和流分类器的功能已在上面讨论。视觉加速器702和通用处理器704可以是一个处理器的各部分(或单元),或者可以封装在一个管芯中,从而变成芯片上系统(SoC)706。在备选实施例中,视觉加速器702和通用处理器704被实现在不同的芯片中。
通用处理器704向流分类器752提供流映射(如流映射722),并且向视觉加速器702中的各个电路组提供流配置(如流配置724-728)。相反,视觉加速器702向通用处理器704发送中断请求(被简写为IRQ),诸如IRQ 732-738。中断请求可以包括关于数据流的处理的信息(数据流可以按照数据点级别、数据块级别、视频帧级别或多视频帧级别之一进行处理)。该信息可以是处理数据流的结果,并且该结果可以包括处理数据流后的一个或多个值。中断请求可以使通用处理器704的中断处理器运行,其中中断处理器处理由电路组提供的信息。在一个实施例中,中断请求是快速中断请求(FIQ),其指示快速低延迟中断请求,并且其优先于一般中断。
图8是示出了根据本发明的一个实施例的异构系统中的数据流处理的流程图。如上所述,异构系统包括至少两个处理器,例如处理器102和处理器104。方法800可以在诸如处理器102的处理器中实现,所述处理器102包括流分类器和一个或多个电路组。每个电路组被实现为对输入数据流执行特定功能,并且在本发明的一个实施例中其实现IP核。
在附图标记802处,流分类器向数据流分配流标识符(ID)。如上所述,数据流可以来源于源0-n中的一个。在一个实施例中,数据流来源于相机。在这种情况下,数据流是由相机捕获的、并且包含视频帧流的视觉数据流。数据流可以属于包括多个数据流的流组,并且流分类器将维持数据流内的顺序以及流组的多个数据流之间的顺序。例如,在一个实施例中,流分类器维持数据块在流组内的时间顺序。
在一个实施例中,数据流来源于数据存储器(例如,耦合到诸如如图1所示的处理器104的另一处理器的数据存储器116)。当数据流来源于另一处理器时,该另一处理器可能已经为数据流分配了流ID,因此流分类器不再为数据流分配流ID。另一处理器可以为单独的数据块分配流ID,以使得单独的数据块看起来在数据流中,因此处理器102将源自数据存储器的数据块视为类似于源自相机的数据块。
在一个实施例中,流分类器基于从另一处理器接收的流映射来分配流ID。在一个实施例中,流映射可以是流映射320,并且在上文中参考图2和3A讨论了流映射320。在一个实施例中,向数据流分配流ID包括将流ID附加到数据流的数据块。
在附图标记804处,处理器的第一电路组处理数据流的多个数据块。该多个数据块可以是帧的一部分、帧或多个帧。第一电路组选择适合于其处理的多个数据块,并且第一电路组可以选择要处理的第一数量的数据块,其中第一数量的数据块不同于将在另一电路组(例如,第二电路组)处理的第二数量的数据块。换句话说,每个电路组可以选择适合于其自己处理的数量的数据块。多个数据块的处理可以执行一个或多个功能,例如,如上所述,电路组可以检测图像边缘、对象深度和/或运动。
第一电路组可能不是对多个数据块进行处理的第一个电路组。例如,在图4中,第一电路组可以是功能电路1而不是功能电路0。在那种情况下,多个数据块可以是来自前面的电路组(例如,功能电路0)或诸如处理器104的控制处理器的更新数据块。
在附图标记806处,第一电路组基于流标识符确定是否向另一处理器提供关于多个数据块的处理的信息。关于多个数据块的处理的信息可以是更新的数据块或处理结果,如上文讨论的如数据块的子集或一个或多个值。
在一个实施例中,该确定基于从另一处理器接收的流配置。在一个实施例中,流配置被包括在配置表中,其中配置表的每个条目对应于流ID。在一个实施例中,如上面参考图3B所述,流配置包括流标识符到至少三个值中的一个值的映射,其中第一值指示立即向另一处理器提供所述信息,第二值指示在延迟之后向另一处理器提供所述信息,以及第三值指示不向另一处理器提供所述信息。立即提供信息指的是在第一电路组处理多个数据块之后立即提供,例如,在毫秒级(1ms至1000ms)内。延迟是指等待另一数据流的数据块被第一电路组处理,其中另一数据流与当前数据流在同一个流组内。延迟可以是变量(例如,只要它用相同流组的其他数据流来完成其处理)或固定时间值(例如,等待1秒,然后向另一处理器提供关于流组的所有数据块的处理的信息,即使一个或多个数据流看起来尚未完成它们对它们各自数据块的处理)。
如上所述,当数据流属于包括多个数据流的流组时,基于多个数据流的流标识符,确定将关于处理流组中的数据块的信息提供给另一处理器。当数据流是流组中的时间上的最后一个数据流时,或者当另一数据流是流组中的时间上的最后一个数据流时的延迟之后,可以确定将该信息立即提供。以上讨论的流配置有助于确定是否以及如何提供关于处理数据块的信息。
基于附图标记806处的确定,处理器提供关于数据块的处理的信息。可选地,在附图标记808处,当流标识符指示向另一处理器提供信息时,第一电路组将该信息提供给另一处理器。如上所述,信息的提供可以是立即的或在延迟后。可选地,在附图标记810处,当流标识符指示向第二电路组提供信息时,第一电路组将该信息提供给第二电路组。向第二电路组提供信息的指示可以是不向另一处理器提供信息(例如,图3B中的FID(L+1)的“否”值)。
在一个实施例中,提供关于多个数据块的处理的信息是二元操作,即将信息提供给另一处理器或提供给第二电路组。在备选实施例中,当流标识符指示向另一处理器提供信息时(例如,图3B中的FIDL的“是”值),第一电路组可以向另一处理器以及第二电路组提供关于多个数据块的处理的信息。另外,在一个实施例中,多个数据块可以与关于多个数据块的处理的信息一起提供给(例如,通过上面讨论的总线互连)第二电路组(例如,基于流配置的值为“否”),或者不与该信息一起提供(例如,基于流配置的值为“是”)。
在另一处理器处对提供给另一处理器的关于多个数据块的处理的信息进行处理,并且如参考图4的任务框4-5讨论的,该另一处理器向第二电路组提供其关于处理的信息。
在一个实施例中,流分类器被实现为用于向数据流分配流标识符的装置,并且第一电路组被实现为用于处理数据流的多个数据块和基于流标识符确定是否向另一处理器提供关于多个数据块的处理的信息的装置。另外,在本发明的一个或多个实施例中,第一电路组被实现为用于当流标识符指示向另一处理器提供所述信息时向所述另一处理器提供所述信息、和/或当流标识符指示向处理器内的第二电路组提供所述信息时向所述第二电路组提供所述信息的装置。换句话说,用于实现流分类器的装置可以执行本文所述的由流分类器所做的操作,并且用于实现第一电路组和第二电路组的装置可以执行本文所述的由第一电路组和第二电路组所做的操作。
图9是示出了根据本发明的一个实施例的异构系统中的流信息的分发的流程图。如上所述,异构系统包括至少两个处理器,例如处理器102和处理器104。方法900可以在诸如处理器104的控制处理器中实现。
在附图标记902处,处理器向执行处理器提供流信息。执行处理器是诸如处理一个或多个数据流的处理器102的处理器。流信息包括两种类型的信息:定义什么源映射到什么流ID的流映射,以及定义是否向处理器104提供电路组的流处理信息(例如,实现如上所述的IP核)以及如何提供的流配置。如上面参考图2至4所讨论的,执行处理器使用流信息来处理来自一个或多个源的一个或多个数据流。
在附图标记904处,处理器基于处理器(控制处理器)和/或执行处理器的工作负载以及源特性中的一个或多个来确定流信息需要更新。然后在附图标记906,处理器指示所述执行处理器对流映射和/或流配置进行更新。上面参考图6讨论了确定和指示的处理。
在一个实施例中,处理器包括用于向执行处理器提供流信息的装置,用于基于处理器(控制处理器)和/或执行处理器的工作负载以及源特性中的一个或多个来确定流信息需要更新的装置,以及用于指示执行处理器更新流映射和/或流配置的装置。
图10是根据本发明的一个实施例的异构系统的示例性说明。异构系统1000包括多个不同的组件。这些组件可以被实现为集成电路(IC)、集成电路的一部分、分立式电子设备、或适用于电路板(例如,计算系统的主板或扩展卡)的其他模块,或者以其他方式被包括在计算系统的框架内的组件。还要注意,异构系统1000旨在示出计算系统的多个组件的高层视图。然而,应该理解的是,在某些实施方式中可能存在额外的组件,并且此外,在其他实施方式中可能出现所示组件的不同布置。在一个实施例中,异构系统1000包括如上所述的包含处理器102和处理器104的片上系统(SoC)106。在备选实施例中,处理器102和处理器104在不同的管芯(芯片)上实现。
在一个实施例中,除了处理器102和处理器104之外,异构系统1000还包括非暂时性机器可读存储介质1002以及经由总线或互连设备1010进行互连的可选设备1004至1008。处理器104表示一个或多个通用处理器,例如中央处理单元(CPU)或处理设备。更具体地,处理器104可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实现其他指令集的微处理器,或实现指令集的组合的微处理器。处理器102可以是一个或多个专用处理器,例如专用集成电路(ASIC)、蜂窝或基带处理器、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器、图形处理器、网络处理器、通信处理器、密码处理器、协处理器、嵌入式处理器、或者能够处理指令的任何其他类型的逻辑。
处理器102和处理器104中的每一个可以与诸如磁盘、光盘、只读存储器(ROM)、闪存设备和相变存储器的非暂时性机器可读存储介质1002(也称为计算机可读存储介质)通信。非暂时性机器可读存储介质1002可以存储包括由处理器102、处理器104或任何其他设备单元执行的指令序列(例如,计算机程序)的信息。例如,各种操作系统、设备驱动、固件(例如,输入输出基本系统或基本输入/输出系统(BIOS))和/或应用程序的可执行代码和/或数据可以被加载到处理器102中或处理器104中,并被处理器102或处理器104执行。此外,非暂时性机器可读存储介质1002还可以包括上文讨论的数据存储器(例如,DDR SDRAM),其存储要被处理器102和处理器104处理的数据。
异构系统1000可以可选地进一步包括显示控制器和/或显示设备单元1004、收发器1005、视频输入/输出(I/O)设备单元1006、音频I/O设备单元1007以及其他I/O设备单元1008,如图所示。收发器1005可以是有线收发器或无线收发器,例如,WiFi收发器、红外收发器、蓝牙收发器、WiMax收发器、无线蜂窝电话收发器、卫星收发器(例如全球定位系统(GPS)收发器)或其他射频(RF)收发器、或其组合。
视频I/O设备单元1006可以包括成像处理子系统(例如相机),成像处理子系统可以包括光传感器,诸如电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)光传感器,用于促进相机功能,例如记录照片和视频剪辑以及会议。在一个实施例中,视频I/O设备单元1006可以是相机/摄像机(例如,标准清晰度(SD)或高清晰度(HD),如4K、8K或更高)。
音频I/O设备单元1007可以包括扬声器和/或麦克风以促进语音使能功能,例如语音识别、语音复制、数字记录和/或电话功能。其他可选I/O设备1008可以包括存储设备(例如,硬盘驱动、闪存设备)、通用串行总线(USB)端口、并行端口、串行端口、打印机、网络接口、总线桥(例如,PCI(外围部件互连)-PCI桥)、传感器(例如,以下一个或多个:定位传感器、诸如加速度计的运动传感器、惯性传感器、图像传感器、陀螺仪、磁力计、光传感器、罗盘、接近度传感器、热传感器、高度传感器和环境光传感器)或其组合。定位传感器可以用于诸如全球定位系统(GPS)、全球导航卫星系统(GLONASS)、伽利略、北斗或GPS辅助地理增强导航(GAGAN)的定位系统。其他可选I/O设备1008还可以包括经由传感器中枢(未示出)耦合到互连设备1010的某些传感器,而诸如热传感器、高度传感器、加速度计和环境光传感器的其他设备可以由嵌入式控制器(未示出)来控制,这取决于异构系统1000的具体配置或设计。
异构系统1000可以在可移动物体中实现。图11是根据本发明的一个实施例的可移动物体的示例性说明。在一个实施例中,可移动物体1102包括如上所述的SoC 106。在备选实施例中,可移动物体1102包括经由总线或互连设备1010互连的处理器102、处理器104、非暂时性机器可读存储介质1002和可选设备1004至1008,但是这些实体不实现在单个芯片上。除了在SoC中或以其他方式实现的异构系统之外,可移动物体1102还包括以下一个或多个:推进单元1104、运动控制器1108、通信单元1106和一个或多个传感器1110,其中每一个都可以包括一个或多个电路。
可移动物体1102的推进单元1104可以包括可操作以产生用于维持可移动物体1102的受控移动的力的一个或多个设备或系统。推进单元1104可以共享或可以分别包括或可操作地连接到动力源,比如,电机(例如,电动机、液压电机、气动电机等)、引擎(例如,内燃机、涡轮引擎等)、电池组等、或其组合。每个推进单元1104还可以包括一个或多个旋转组件4,所述组件连接到动力源、并且被配置为参与产生用于维持受控运动(例如,飞行或沿着表面移动)的力。例如,旋转组件可以包括在如下项上被驱动或者由如下项驱动的旋翼、螺旋桨、桨叶、喷嘴等:轴、轮轴、轮子、液压系统、气动系统、或被配置成传输来自动力源的动力的其它组件或系统。推进单元1104和/或旋转组件24可以是相对于彼此和/或相对于可移动物体1102可调整的。推进单元1104可以被配置为沿一个或多个竖直方向和水平方向推进可移动物体1102,并且允许可移动物体1102围绕一个或多个轴线旋转。也就是说,推进单元1104可以被配置为提供升力和/或推力,以产生和保持可移动物体1102的平移和旋转运动。
可移动物体1102的运动控制器1108可以将对可移动物体的远程操作员来说直观的命令转换为可以直接用于调整可移动物体的运动的一个或多个运动控制信号或运动参数。运动控制信号或运动参数可以控制可移动物体可实现的运动的一个或多个方面。例如,通过运动控制信号或运动参数,运动控制器1108可以引导可移动物体1102(例如,通过控制推进单元1104)以期望的平移运动(垂直、水平或有角度的方向)、期望的旋转运动、期望的速度和/或期望的加速度移动。
可移动物体1102的通信单元1106可以实现可移动物体1102(例如,特别是运动控制器1108)与可移动物体1102的远程终端之间的数据、信息、命令和/或其它类型的信号的通信。在一个实施例中,在一个或多个电路中实现的通信单元1106可以经由诸如以下一个或多个通信网络与远程终端进行通信:无线电、蜂窝、蓝牙、Wi-Fi、射频识别(RFID)和/或可用于传送对数据、信息、命令加以指示的信号和/或其他信号的其他类型的通信网络。
传感器1110包括实现在可移动物体1102中的一个或多个传感器,并且一个传感器可以是以下中的一个:定位传感器、诸如加速度计的运动传感器、惯性传感器、图像传感器、陀螺仪、磁力计、光传感器、罗盘、接近度传感器、热传感器、高度传感器和环境光传感器。传感器1110生成将用于确定关于可移动物体1102、其组件或其目标的信息的数据和信息。通信单元1106可以将生成的数据和信息传送给可移动物体1102的其他单元(例如,处理器102和/或104、推进单元1104、运动控制器1108)或可移动物体1102的远程终端。
尽管上面已经描述了本发明的各种实施例,但是应当理解,它们仅仅是作为示例而不是限制来提出的。本领域普通技术人员应该清楚的是在不脱离本发明的精神和范围的情况下可以进行形式和细节上的各种变化。
以上已经在功能构建块的辅助下描述了本发明,这些功能构建块示出了指定功能及其关系的执行。为便于描述,本文通常任意定义这些功能构建块的边界。只要所指定的功能及其关系被适当地执行,就可以定义替代的边界。因此,任何这样的替代的边界都在本发明的范围和精神内。
已经提供了本发明的上述描述,用于说明和描述的目的。不是旨在是穷尽性的或将公开的精确形式作为对本发明的限制。本发明的宽度和范围不应当受到上述示例性实施例中任意一个的限制。许多修改和变化对于本领域普通技术人员将是显而易见的。这些修改和变化包括所公开的特征的任何相关组合。对实施例的选择和描述是为了最好地解释本发明的原理及其实际应用,从而使得本领域的其他技术人员能够理解本发明的各种实施例以及适合于预期特定用途的各种修改。意图在于,本发明的范围由所附权利要求及其等同物限定。

Claims (30)

1.一种用于处理数据的处理器,包括:
流分类器,被配置为向数据流分配流标识符;以及
第一电路组,被配置为:
处理所述数据流的多个数据块,以及
基于所述流标识符确定是否向另一处理器提供关于所述多个数据块的处理的信息。
2.根据权利要求1所述的处理器,其中所述第一电路组被配置为当所述流标识符指示向所述另一处理器提供所述信息时,向所述另一处理器提供所述信息。
3.根据权利要求1或2所述的处理器,其中所述第一电路组被配置为当所述流标识符指示向所述处理器的第二电路组提供所述信息时,向所述第二电路组提供所述信息。
4.根据权利要求1或2所述的处理器,其中所述第一电路组从所述另一处理器、相机或数据存储器接收所述多个数据块。
5.根据权利要求1或2所述的处理器,其中所述流标识符的分配基于从所述另一处理器接收的流映射。
6.根据权利要求1或2所述的处理器,其中所述流标识符的分配包括将所述流标识符附加到所述多个数据块。
7.根据权利要求1或2所述的处理器,其中所述确定基于从所述另一处理器接收的流配置。
8.根据权利要求7所述的处理器,其中所述流配置被包括在配置表中,其中所述配置表的每个条目对应于一个流标识符。
9.根据权利要求7所述的处理器,其中所述流配置包括所述流标识符到至少三个值中的一个值的映射,其中第一值指示立即向所述另一处理器提供所述信息,第二值指示在延迟之后向所述另一处理器提供所述信息,以及第三值指示不向所述另一处理器提供所述信息。
10.根据权利要求1或2所述的处理器,其中所述数据流属于包括多个数据流的流组,其中关于处理所述流组内的数据块的信息基于所述多个数据流的一个或多个流标识符提供给所述另一处理器。
11.根据权利要求10所述的处理器,其中所述流分类器维持所述数据块在所述流组内的顺序。
12.根据权利要求1或2所述的处理器,其中所述数据流源自所述另一处理器。
13.根据权利要求1或2所述的处理器,其中所述数据流是由相机捕获的视觉数据流。
14.根据权利要求13所述的处理器,其中所述视觉数据流是多个相机同时捕获的多个视觉数据流中的一个,并且所述流分类器被配置为向所述多个视觉数据流分配流标识符。
15.根据权利要求1或2所述的处理器,其中提供关于所述处理的所述信息包括向所述另一处理器发出中断请求。
16.根据权利要求1或2所述的处理器,其中所述另一处理器是中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)和微控制器(MCU)中的一个。
17.根据权利要求1或2所述的处理器,其中所述第一电路组包括专用集成电路(ASIC)和现场可编程门阵列(FPGA)中的一个。
18.根据权利要求1或2所述的处理器,其中所述处理器和所述另一处理器被包括在片上系统(SoC)中。
19.一种用于处理数据的处理器,包括:
流分类器,被配置为向数据流分配流标识符;以及
第一电路组,被配置为:
处理所述数据流的多个数据块,
基于所述流标识符确定是否向另一处理器提供所述处理的结果,
当所述流标识符指示向所述另一处理器提供所述结果时,向所述另一处理器提供所述结果,以及
否则向所述处理器内的第二电路组提供所述结果。
20.根据权利要求19所述的处理器,其中所述第二电路组从所述另一处理器接收数据,其中所述数据由所述另一处理器响应于处理所述第一电路组提供的结果而产生。
21.根据权利要求19或20所述的处理器,其中所述分配基于从所述另一处理器接收的流映射。
22.根据权利要求19或20所述的处理器,其中所述确定基于从所述另一处理器接收的流配置。
23.根据权利要求22所述的处理器,其中针对所述数据流,所述流配置包括所述流标识符到至少三个值中的一个值的映射,其中第一值指示立即向所述另一处理器提供所述结果,第二值指示在延迟之后向所述另一处理器提供所述结果,以及第三值指示不向所述另一处理器提供所述结果。
24.根据权利要求19或20所述的处理器,其中所述数据流属于包括多个数据流的流组,其中处理所述流组内的数据块的结果根据所述多个数据流的流标识符被发送给所述另一处理器。
25.根据权利要求19或20所述的处理器,其中所述另一处理器是中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)和微控制器(MCU)中的一个。
26.根据权利要求19或20所述的处理器,其中所述第一电路组和所述第二电路组中的每一个包括专用集成电路(ASIC)和现场可编程门阵列(FPGA)中的一个。
27.根据权利要求19或20所述的处理器,其中所述处理器和所述另一处理器被包括在片上系统(SoC)中。
28.一种系统,包括:
在一个芯片内的处理器和另一处理器,
所述处理器包括:
流分类器,被配置为向数据流分配流标识符;以及
第一电路组,被配置为:
处理所述数据流的多个数据块,以及
基于所述流标识符确定是否向所述另一处理器提供关于所述多个数据块的处理的信息。
29.根据权利要求28所述的系统,其中所述系统在无人机(UAV)内。
30.一种用于处理数据的方法,包括:
向数据流分配流标识符;
处理所述数据流的多个数据块,以及
基于所述流标识符确定是否向另一处理器提供关于所述多个数据块的处理的信息。
CN201680090774.5A 2016-11-14 2016-11-14 处理器间的数据流调度 Pending CN109937408A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/105774 WO2018086131A1 (en) 2016-11-14 2016-11-14 Data flow scheduling between processors

Publications (1)

Publication Number Publication Date
CN109937408A true CN109937408A (zh) 2019-06-25

Family

ID=62110195

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680090774.5A Pending CN109937408A (zh) 2016-11-14 2016-11-14 处理器间的数据流调度

Country Status (3)

Country Link
US (1) US11018982B2 (zh)
CN (1) CN109937408A (zh)
WO (1) WO2018086131A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021073054A1 (zh) * 2019-10-15 2021-04-22 北京百度网讯科技有限公司 数据处理的方法、装置、设备和存储介质
WO2023108389A1 (en) * 2021-12-14 2023-06-22 Intel Corporation Reduced power camera control system

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020113436A1 (zh) * 2018-12-04 2020-06-11 深圳市大疆创新科技有限公司 负载控制方法、可移动平台及计算机可读存储介质
CN111935663B (zh) * 2020-07-17 2022-01-25 腾讯科技(深圳)有限公司 传感器数据流的处理方法、装置、介质及电子设备
WO2024145056A1 (en) * 2022-12-31 2024-07-04 Meta Platforms, Inc. Integrated chiplet-based central processing units with accelerators for video processing

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1732433A (zh) * 2001-06-28 2006-02-08 英特尔公司 能够隐式地多线程执行单线程程序的多线程处理器
US20090257624A1 (en) * 2008-04-11 2009-10-15 Toshiba Tec Kabushiki Kaisha Flow line analysis apparatus and program recording medium
CN102232213A (zh) * 2008-12-01 2011-11-02 美光科技公司 启用不同数据集合的识别的系统及方法
CN104346135A (zh) * 2013-08-08 2015-02-11 腾讯科技(深圳)有限公司 数据流并行处理的方法、设备及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9244978B2 (en) 2014-06-11 2016-01-26 Oracle International Corporation Custom partitioning of a data stream
CN104391747A (zh) 2014-11-18 2015-03-04 北京锐安科技有限公司 一种并行计算方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1732433A (zh) * 2001-06-28 2006-02-08 英特尔公司 能够隐式地多线程执行单线程程序的多线程处理器
US20090257624A1 (en) * 2008-04-11 2009-10-15 Toshiba Tec Kabushiki Kaisha Flow line analysis apparatus and program recording medium
CN102232213A (zh) * 2008-12-01 2011-11-02 美光科技公司 启用不同数据集合的识别的系统及方法
CN104346135A (zh) * 2013-08-08 2015-02-11 腾讯科技(深圳)有限公司 数据流并行处理的方法、设备及系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021073054A1 (zh) * 2019-10-15 2021-04-22 北京百度网讯科技有限公司 数据处理的方法、装置、设备和存储介质
US11671678B2 (en) 2019-10-15 2023-06-06 Beijing Baidu Netcom Science And Technology Co., Ltd. Method and device, equipment, and storage medium for data processing
WO2023108389A1 (en) * 2021-12-14 2023-06-22 Intel Corporation Reduced power camera control system

Also Published As

Publication number Publication date
WO2018086131A1 (en) 2018-05-17
US20200059435A1 (en) 2020-02-20
US11018982B2 (en) 2021-05-25

Similar Documents

Publication Publication Date Title
CN109937408A (zh) 处理器间的数据流调度
US11550500B2 (en) Computational storage and networked based system
US20190325580A1 (en) Surround camera system with seamless stitching for arbitrary viewpoint selection
Bramberger et al. Distributed embedded smart cameras for surveillance applications
JP2022052773A (ja) 畳み込み効率を向上させる方法、システム、及び装置
US20210119848A1 (en) Parallel de-rate-matching and layer demapping for physical uplink shared channel
US20210135733A1 (en) 5g resource assignment technique
CN114731164A (zh) 使用紧凑基图表示对qc-ldpc码进行并行解码
JP2023519405A (ja) ハードウェアアクセラレータをスケジューリングするための方法およびタスクスケジューラ
EP4109387A1 (en) Morphing computer vision pipeline
US11526702B2 (en) Unsupervised multi-scale disparity/optical flow fusion
US11182647B2 (en) Distributed sensor module for tracking
EP4156651A1 (en) Content injection using a network appliance
WO2022133875A1 (en) Protocol state aware power management
WO2022099553A1 (en) Intra-layer adapter for fifth generation new radio (5g-nr) communications
GB2612162A (en) 5G-NR multi-cell software framework
CN116709375A (zh) 用于指示执行无线小区的技术的应用程序编程接口
CN109299023A (zh) 找出处理单元连接的传感器单元使用的设置的方法和装置
WO2022159618A1 (en) Technique to perform min-sum decoding of qc-ldpc codewords of wireless communications signal data
CN116709373A (zh) 用于确定无线小区是否已被分配的应用程序编程接口
CN114666587A (zh) 用于感兴趣区域视频编码的技术
CN113994599A (zh) 第五代(5g)新无线电信道均衡
WO2024077192A1 (en) Application programming interface to indicate a device in an access network to be stored
WO2024077176A1 (en) Application programming interface to indicate a controller to a device in an access network
CN117595901A (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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20190625