CN109690499B - 使用模式适配器的用于图像和视觉处理块的数据同步 - Google Patents

使用模式适配器的用于图像和视觉处理块的数据同步 Download PDF

Info

Publication number
CN109690499B
CN109690499B CN201780055516.8A CN201780055516A CN109690499B CN 109690499 B CN109690499 B CN 109690499B CN 201780055516 A CN201780055516 A CN 201780055516A CN 109690499 B CN109690499 B CN 109690499B
Authority
CN
China
Prior art keywords
data
type
scheduler
consumer
producer
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
Application number
CN201780055516.8A
Other languages
English (en)
Other versions
CN109690499A (zh
Inventor
N·南丹
H·桑加维
M·N·莫迪
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
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 Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of CN109690499A publication Critical patent/CN109690499A/zh
Application granted granted Critical
Publication of CN109690499B publication Critical patent/CN109690499B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1647Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • G06F5/12Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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 Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Image Processing (AREA)

Abstract

在所描述的用于多处理器系统的硬件线程调度器(311)的示例中,调度器(311)被配置为通过解析每个线程的生产者模块和消费者模块之间的数据依赖性来调度多个执行线程的处理。调度器(311)中的模式适配器(654)允许跨数据块混合多个数据模式。事务聚合器(655)允许由多个执行线程重新使用图像数据,同时图像数据保留在给定数据缓冲器中。可编程延迟(656)在线程执行的启动上提供带宽控制。看门狗定时器(657)提供故障和暂停检测。

Description

使用模式适配器的用于图像和视觉处理块的数据同步
技术领域
本申请总体涉及计算机视觉系统,并且更具体地涉及用于图像和视觉处理块的数据同步。
背景技术
一类新的嵌入式安全系统(称为高级驾驶员辅助系统(ADAS))已被引入汽车以减少人为操作错误。这样的系统可以提供诸如后视相机、电子稳定性控制和基于视觉的行人检测系统之类的功能。这些系统中的许多系统依靠计算机视觉处理来检测一个或更多个相机的视野中的物体。例如,参见2013年10月的“Making Cars Safer Through TechnologyInnovation(通过技术创新让汽车变得更安全)”。
图像的多分辨率分解(即,以不同分辨率缩小图像,以生成不同分辨率的图像的金字塔)是计算机视觉应用中的基本操作。图像金字塔使得能够以不同的“尺寸”(诸如在不同的距离上)分析在原始图像中捕获的场景。
可以使用以迭代方式执行任务的各种处理引擎来执行每个相机图像的分解,其中任务的每次迭代可以被称为“线程”的一部分。从软件的角度来看,软件通常作为一个或更多个线程被执行。线程可以对应于由处理器核执行的任务序列。各种线程调度技术是已知的,诸如在1998年6月的Nimar Arara等人的“Thread Scheduling for MultiprogrammedMultiprocessors(用于多编程多处理器的线程调度)”中描述的。
发明内容
在所描述的用于多处理器系统的硬件线程调度器的示例中,调度器被配置为通过解析每个线程的生产者模块和消费者模块之间的数据依赖性来调度多个执行线程的处理。调度器中的模式适配器允许跨数据块混合多个数据模式。事务聚合器允许由多个执行线程重新使用图像数据,同时图像数据保留在给定数据缓冲器中。可编程延迟在线程执行的启动上提供带宽控制。看门狗定时器提供故障和暂停(hang)检测。
附图说明
图1是图像金字塔的示例。
图2是具有多个缩放器的示例多线程图像缩放器的框图。
图3是包括多个硬件加速器模块和硬件加速器线程调度器的示例系统的框图。
图4是示出用于调度图3的系统的信号的连接图的更详细的示意图。
图5A是示出具有两个硬件加速器的简单示例系统的操作的框图。
图5B是示出具有两个硬件加速器的简单示例系统的操作的时序图。
图6是更详细示出图3的基于硬件的线程调度器之一的框图。
图7、图8和图9示出了模式适配的示例。
图10是示出使用模式适配的线程调度的方面的流程图。
图11是示出事务聚合的示例的时序图。
图12是示出带宽流控制的示例的时序图。
图13是配备有多个相机和雷达传感器设备并且包括具有硬件加速器线程调度器的示例系统的汽车的图示。
具体实施方式
在本说明书中,为了一致性,各个附图中的相同元件由相同的附图标记表示。
本文描述了各种技术以辅助调度对各种图像数据块的访问以处理图像数据的过程。例如,本文描述了一种允许通过使用调度器中的模式适配器跨数据块混合多个数据模式的技术。本文描述了一种允许通过使用事务聚合器在图像数据保留在给定数据缓冲器中时重新使用相同的图像数据的技术。本文描述了一种通过使用可编程延迟来为关键和不太关键的任务提供带宽控制的技术。本文还描述了一种在处理块故障的情况下使用调度器内部的看门狗定时器提供暂停检测的技术。
如上所述,在基于相机的嵌入式安全系统中执行的计算机视觉处理可能需要生成图像金字塔,即,从高分辨率输入生成的降低分辨率的下采样图像的层次。可以基于所使用的(一个或更多个)特定视觉算法为图像生成(一个或更多个)图像金字塔。例如,图像金字塔可以是一组图像,其中每个图像相对于金字塔中的下一个更高分辨率的图像在水平和竖直两个方向上以因子2被下采样。在这样的金字塔中,每个图像被称为八度(octave)。图1是这种金字塔的示例。
对于一些算法,还在金字塔的每个八度之间生成下采样图像。用于在八度之间生成下采样图像的缩放比率(即八度内缩放图像)可以是任意的。例如,对于汽车安全系统中的行人检测和物体检测,用于八度之间缩放的比率可以在1和2之间,例如1.1、1.l2等,并且每个八度之间的缩放图像的数量可以是八。假设六个八度的图像金字塔,为单个输入图像生成5*8=40个缩放输出。
OpenCV(开放源代码计算机视觉类库)中包括一种常见的图像缩放软件方法。OpenCV是一种广泛使用的开放源代码计算机视觉和机器学习软件库,其包括对实时计算机视觉处理的支持。在OpenCV中,诸如图1的金字塔的金字塔的生成对于每个图像层包括用高斯核卷积前一层并从结果中移除每个偶数行和列。通过利用先前较高分辨率层作为输入调用单个下采样函数来顺序地生成每个图像层(八度)。此外,在OpenCV中,通过顺序地调用单个重新定尺寸函数来执行诸如生成八度内缩放图像所需的图像的通用缩放。用于通用缩放的下采样可以使用双线性、双三次、样条或Lancoz滤波。
可以使用硬件方法来支持所需的图像缩放,其中实现了若干独立的图像重新定尺寸器或缩放器,这些独立的图像重新定尺寸器或缩放器可以在一些实施例中利用单个输入线程操作或者在其他实施例中利用多个输入线程操作。系统中包括的硬件缩放器的数量可以变化,并且可以基于诸如吞吐量要求和成本的因素来选择。每个缩放器可以具有相同的输入,并且可以被独立地编程以生成不同分辨率的缩小输出。替代地,缩放器可以按顺序操作,即以级联操作,使得缩放器的缩小输出是序列中下一个缩放器的输入。在任一种情况下,如果缩放器的数量小于所需缩放图像的数量,则可以使用多次通过缩放器。
每个缩放器可以对图像的一些数量的连续行执行水平缩放,并将结果存储在行缓冲器中。处理的连续行的数量和行缓冲器的数量取决于用于竖直缩放的滤波器的抽头的数量。然后对行缓冲器的内容执行竖直缩放。重复水平和竖直缩放,直到已经处理了输入图像的所有行。
在一些实施例中,可以使用可以在多个线程之间共享的多个缩放器来执行多线程图像缩放。更具体地,所有缩放器可以由一个线程使用,或者缩放器可以在两个或更多个输入线程之间划分。此外,在一些实施例中,每个缩放器在水平缩放之前执行竖直缩放,从而消除了对每个缩放器中的行缓冲器的需要。此外,在一些实施例中,提供了统一的多相滤波,其中针对相位的滤波器抽头可以被调整以用于以整数比率进行八度缩放以及以任意分数进行通用缩放。也就是说,可以模拟任何类型的内插,例如,高斯、双线性、双三次、Lancoz等。此外,在一些实施例中,为缩小比率提供双精度模式(例如,1/64和1/32)以处理相同水平和竖直比率的典型情况,其中没有纵横比的变化,并且没有随着纵横比的变化而变化的缩放。
图2是示出具有多个缩放器201-203的多线程图像缩放器200的实施例的示例。在该示例中,假设输入线程205、206的数量是两个。一些实施例具有更多输入线程。N个缩放器的集合在两个输入线程之间共享。对于任何给定的处理周期,可以将所有N个缩放器分配给输入线程之一,或者可以为每个输入线程分配缩放器的子集。例如,输入1线程可以在诸如201、202的多个缩放器中处理,并且输入2线程可以在缩放器N中处理。此外,N个缩放器中的每一个可以在水平缩放212之前执行竖直缩放211。
2016年4月29日提交的专利申请序列号US15/143,491,“Down Scaling Images ina Computer Vision System(在计算机视觉系统中缩小图像)”中描述了图像缩小的更详细说明,该申请通过引用并入本文。
上文已经描述了缩放,但是也可以为各种图像、视频或视觉处理功能提供其他类型的处理块,诸如图像处理、镜头失真校正、噪声滤波器、视觉预处理功能、运动检测、边缘检测等。可以级联或链式连接各种块以执行必要的功能。可以针对缓冲器数据集对块进行管线化(pipelined)。可以使用已知或以后开发的技术集中或分发数据或缓冲器和控制信号或消息。
图3是包括多个硬件加速器模块301-303和硬件加速器线程调度器(HTS)310的示例系统300的框图。虽然为了简单起见在此示出了三个模块301-303,但是各种实施例可以包括比三个硬件加速器模块更少或更多的模块。加速器模块301-303已经被示为硬件加速器模块,但是另一实施例中的加速器模块可以是完全硬连线可编程核,或者硬件和固件/软件的组合。硬件加速器模块301-303中的每一个可以访问共享存储器320,其中可以将各种存储区块指定为用于由硬件和/或软件处理模块正在处理的数据块的缓冲器。
共享存储器320被称为“级别2”(L2)存储器,并且可以在单个集成电路内实现,该集成电路包括作为“片上系统”SoC 330的各种处理模块301-303和HTS 310。较大的外部存储器321可以耦合到SoC 330以为一帧或更多帧图像数据等提供存储空间。例如,外部存储器321可以实现为双倍数据速率(DDR)同步动态随机存取存储器(SDRAM)。在各种实施例中,可以使用各种其他已知或以后开发的类型的大容量存储器来代替DDR存储器,诸如DDR3、DDR4等。组件321也可以使用被称为L3的片上RAM(SOC 330的一部分)来实现。本说明书中的外部存储器321可以被称为“级别3”(L3)存储器或DDR存储器。
直接存储器存取(DMA)引擎306和DMA调度器308可以被编程为使用已知的或以后开发的DMA操作在L2存储器320和外部存储器321之间移动数据块。
HTS 310可以包括一组调度器模块311-313,一个模块用于硬件加速器301-303中的每一个。HTS 310还可以包括一组生产者DMA调度器,诸如3081-3083,以将来自外部存储器321的数据块加载到SL2 320。HTS 310还可以包括一组消费者DMA调度器,诸如3084-3086,以将来自SL2 320的数据块存储到外部存储器321中。HTS模块是用于并行计算任务和DMA传输的低开销同步的简单消息传递层,并且HTS模块可以由主机处理器332配置。主机处理器332在一些实施例中可以位于SoC 330内,或者在其他实施例中可以位于单独的IC中。存储器映射寄存器(MMR)322可以由主机处理器332利用各种控制参数初始化,以控制HTS310的操作。
HTS 310允许加速器子系统的自动帧级处理。HTS 310定义了加速器301-303之间的同步和数据共享的各个方面。通过查看生产者和消费者依赖性,HTS可以确保只有在输入数据和用以写出数据的足够的空间可用时才开始任务。此外,HTS 310还可以为HWA 301-303负责开始(pipe-up)、调试和中止。例如,HTS 310还可以通过在没有调度任务时为硬件加速器时钟生成活动时钟窗口来帮助控制功耗。
如下文更详细描述,每个调度器模块311-313可以包括一个或更多个消费者套接字(socket)341-342和/或一个或更多个生产者套接字343-344。以下描述使用表1中列出的各种描述性术语。
表1-术语
Figure GDA0002207060450000051
Figure GDA0002207060450000061
每个调度器模块311-313可以经由各种信号耦合到其相应的HWA 301-303,各种信号诸如:“管线结束”和“初始化(init)”信号351、“任务开始”和“任务完成”信号352等。表2中定义了用于在HTS 310和HWA 301-303之间接合的一组示例接口信号。表2中定义的信号是用于图3的实施例的示例;在另一个实施例中,接口信号的操作可以被配置为以与表2中所示不同的方式操作。
表2:HTS与HWA接合
Figure GDA0002207060450000062
Figure GDA0002207060450000071
多个DMA信道调度器控制DMA信道、生产者DMA调度器3081-3083和消费者DMA调度器3084-3086。这些DMA调度器附接到DMA信道并触发数据传输。它们通过channel_start(信道启动)(与tstart相同的计时属性)和channel_done(信道完成)(与tdone相同的计时属性)连接。每个调度器模块311-313和3081-3083可以被配置为根据其生产者套接字配置生成一个或更多个pend信号,诸如在354处指示的。每个调度器模块311-313和3081-3083通过其生产者套接字生成pend信号。对于每个生产者套接字,调度器模块可以被配置为从其连接的消费者接收dec信号,诸如在353处指示的。类似地,每个调度器模块311-313和3084-3086可以被配置为在其消费者套接字上接收一个或更多个pend信号,诸如在354处指示的。对于每个消费者套接字,调度器模块可以被配置为从其连接的消费者生成dec信号,诸如在353处指示的。来自所有调度器的pend信号和dec信号可以连接到交叉开关318,可以通过一组存储器映射寄存器322来控制交叉开关318。在一些实施例中,为了最大的灵活性,交叉开关318可以被实现为完全交叉开关,而在其他实施例中,当不需要最大的灵活性时,交叉开关318可以被实现为部分交叉开关。
图4是示出用于调度图3的HTS 310的信号的连接图的一部分的更详细的示意图。在该示例中,每个调度器411-415包括诸如在441处指示的消费者端口C,以及诸如在443处指示的生产者端口P。类似地,每个DMA生产者调度器3081-3083可以具有一个或更多个生产者端口P,诸如在445处指示的,并且每个DMA消费者调度器3084-3086可以具有一个或更多个消费者端口C,诸如在446处指示的。交叉开关318(图3)的功能由诸如4181,4182的各种多路复用器和诸如4183,4184的各种多路复用器示出,诸如4181,4182的各种多路复用器可以由MMR 322(图3)配置以选择若干dec信号中的任何一个以用于路由到特定的生产者端口,诸如4183,4184的各种多路复用器可以由MMR 322配置以选择若干pend信号中的任何一个以用于路由到特定的消费者端口。
若干指导原则在本文描述的HTS的实施例中是有用的。遵循分布式同步技术,其中节点能够激活其后继者。DMA节点可以以生产者或消费者模式紧密耦合到硬件加速器;在某些情况下,DMA节点可以连接到备用调度器。
通常,一个节点将仅处理一个任务。当加速器实施多个任务时,这些任务可以彼此独立地被处理。从线程管理角度来看,这些是两个不同的节点。节点可以被编程为在任何其他节点上开始任务。可以预定义一组可能的连接;因此,交叉开关418可以不需要是完全交叉开关。可以提供灵活性以允许将数据映射到不同的管线。替代地,可以提供灵活性以映射其中多个任务可以在相同数据上并行运行的管线。在各种实施例中可以支持发散和/或会聚。
任务可以具有多个“生产者”节点;类似地,任务可以具有多个“消费者”节点。生产者不应该上溢,并且消费者不应该下溢。
以下描述同步技术的基本操作。可以诸如通过主机处理器332(图3)远程激活任务。任务应始终指示任务结束(end-of-task);可以将指示发送到相关节点以通知任务完成,并且从而可以将指示用于下一个任务启动。使用交叉开关318执行节点间通信。软件可以使用MMR 322(图3)中的配置寄存器直接建立诸如411-415的每个节点调度器。
对于要触发的任务,可能需要满足单个或多个条件。激活任务的通知可能仅在用于该任务的所有数据准备好在L2共享存储器320(图3)中使用之后发生。前趋(predecessor)节点负责确保数据准备好。可以在(一个或更多个)前趋节点完成相关任务时激活任务。
HTS 310的操作可以是帧或切片(slice)级别的重新初始化,这取决于正在处理的图像数据的类型。在操作期间,激活任务的条件保持不变。在其他示例实施例中,如果条件需要在操作内改变,则需要在配置MMR中先验地捕获所有这样的改变的配置,或者可以通过主机(HOST)332动态地完成改变。
如下所述,在向HWA节点指示累积的pend事件以进行任务调度之前,可以在源节点处累积若干pend事件。例如,消费者节点在任务结束时经由dec事件确认数据的消耗;生产者可以使用每个dec事件来递减其产生的数据计数。
同步技术
本文描述了同步技术的一般操作。L2共享存储器320(图3)中的最大缓冲器大小可以分配给各种生产者套接字。除了处理管道的头部之外,每个节点将从其前趋接收可消费数据并产生将由管道中的下游的消费者消费的数据。管道DMA生产者节点的头部从外部存储器321(图3)获取数据,并将数据传递给消费者。当缓冲器可用于任务调度器的所有生产者套接字时,如果启用,则根据消费者套接字状态开始加速器/DMA的任务。
每个加速器301-303(图3)将等待所有启用的消费者套接字从其前趋生产者节点接收pend以开始其自己的处理任务。
在多消费者场景中,为若干消费者产生数据的每个生产者将为每个消费者发送一个pend信号。每个任务调度器包括所有资源(多个生产者套接字),以模拟单个生产者到多个消费者的场景。尽管产生的数据相同,但可以像产生多个数据一样对其进行管理。
类似地,在多生产者场景中,消费来自若干生产者的数据的每个消费者将为每个生产者发送回一个dec消息。
对于流控制,一种技术确保生产者不会改写未被消费的数据并且消费者不读取空缓冲器。每个消费者节点使用来自连接的生产者节点的待处理信号,其类似于队列中的数据可用性。待处理信号指示已经产生一些数据条目以供消费,但它并不指示计数。如果待处理信号在启用的消费者套接字处是非活动的,则HWA操作停止。pend信号保持活动,直到参考数据被消费者完全消费。消费者在其已经消费其前趋节点产生的数据之后发送dec信号。生产者知道缓冲器最大深度;它跟踪用于每个消费者的缓冲器。
在每个生产者节点上,响应于任务完成信号的断言,由调度器维持的计数被递增。在来自消费者的dec信号之后递减计数。如果计数等于最大深度,则HWA操作停止。
每个HWA通常将扮演消费者角色和生产者角色两者。在这种情况下,每个HWA都将具有这两种流控制逻辑。当且仅当满足消费者和生产者套接字条件两者时,HWA操作才会开始。因此,如果输入缓冲器为空或输出缓冲器为满,则HWA操作将停止。在本操作描述中,术语“套接字”和“节点”已经被互换地使用以描述操作。
为了降低完全交叉开关(Xbar)的复杂性,所有生产者套接字可以不需要连接到所有消费者套接字,并且反之亦然。DMA生产者节点和消费者节点可以直接连接到其连接的加速器节点,以降低交叉开关的复杂性。在加速器节点内,选择的一组生产者和消费者被完全交叉,为潜在的未来连接提供了充分的灵活性。
图5A是示出具有用于两个相关联的硬件加速器(未示出)的调度器501,502的简单示例系统的操作的方框图并且图5B是示出具有用于两个相关联的硬件加速器(未示出)的调度器501,502的简单示例系统的操作的时序图,该系统包括上文描述的同步技术的实施例。该示例具有两个调度器P 501和C502。P是数据的生产者,并且C是该数据的消费者。
单个队列520用于前向事件待处理消息511,即P->C。消费消息通过递减信号514传送。P 501维持其放置在缓冲器中的产生的数据项的计数531。如果此计数达到缓冲器深度(最大计数),则P 501停止。当P已经产生用于C的有效数据时,P递增计数值。然后断言532待处理信号511。
例如,P 501的生产者套接字可以通过可配置连接518连接到C 502的消费者套接字。如上所述,可配置连接518可以是完全或部分交叉开关。在一些示例实施例中,当不需要可配置性时,P 501的生产者套接字可以通过固定连接连接到C 502的消费者套接字。
当待处理信号511被断言532时,C 502开始533处理。C 502通过断言534递减(dec)信号514来发送确认(ack)消息。C消费者套接字502经由连接518连接回P生产者套接字501。在接收到dec 534之后,P递减计数值531。生产者可以与消费者速率异步产生更多数据。在该示例中,时序图示出了生产者已经产生要由消费者处理的第二数据的场景。这甚至在消费者已经消费第一数据之前。出于该理由,计数器被增加到二。在消费者已经消费第一数据并发送dec信号534之后,生产者计数将从二减少到一。由于计数器不为零,因此待处理信号仍然为高。这意味着消费者可以处理又一个数据。
图6是更详细地示出图3和图4的基于硬件的线程调度器之一的框图。以下描述涉及调度器311,但是该示例可以表示调度器311-313或411-415中的任何一个。如上所述,每个调度器模块311可以包括一个或更多个消费者套接字(诸如消费者套接字341-342)和/或一个或更多个生产者套接字(诸如生产者套接字343-344)。任务调度器模块311可以为每个关联的HWA/DMA实现记分板或简单状态机。此外,生产者侧调度器可以具有两种变体,其为:一种是在管线头部具有用于调度器的最大任务计数;而另一种没有用于中间生产者的最大任务计数,因为它们将受到消费者侧的限制。
在该示例节点中,可以基于生产者侧依赖性来创建生产者侧任务开始,并且可以基于消费者侧依赖性来创建消费者侧任务开始。此节点的最终任务开始是两者的逻辑“与”。
有限状态机(FSM)651可以用于控制调度器311的操作。当首次启用时,调度器311可以在FSM 651的控制下经历初始化(init)序列以允许初始化相关联的HWA 301。这可以包括将init信号661发送到HWA 301,如表2中所定义的。调度器311重置其生产者计数和存储的事件。在初始化HWA 301之后,它可以将init_done(参见表2)信号662发送到调度器311。调度器311等待所有启用的消费者套接字接收pend信号(如c任务开始信号663所指示的)和其所有启用的生产者套接字计数小于对应的深度(max)(如p任务开始信号664所指示的)以触发任务开始请求665。如果不存在停止状态652,则该任务开始请求665触发任务开始信号666。在HWA 301完成其任务之后,它将任务完成(tdone)信号667(参见表2)发送到调度器311。任务开始完成的序列继续,直到调度器311从HWA 301接收到管线结束(eop)信号668(参见表2)。
管线开始处的DMA调度器可以使用最大任务计数值来自行停止此序列。在管线的所有调度器都达到管线结束状态之后,这可以触发外部主机(诸如主机332(图3))的管道结束事件,并且自动禁用与管线相关联的所有调度器。重新激活图3中的管线主机332需要重新配置所有相关联的调度器和管线。替代地,调度器可以配置为运行中(on-the-fly)流输入,并且因此返回到init序列而不经过禁用过程以最小化主机干预。
停止状态652可以用于针对可以由停止逻辑653指示的若干条件禁止发送任务授权信号665。如上所述,调度器311可以在初始化完成672时停止等待,或者在管道结束指示669之后停止等待。调试操作或中止命令也可以断言停止信号670。
本文描述了各种技术以辅助调度对各种图像数据块的访问以处理图像数据的过程。例如,下面更详细地描述允许通过使用调度器中的模式适配器654跨块混合多个数据模式的技术。下面更详细地描述允许通过使用事务聚合器655在图像数据保留在给定数据缓冲器中的同时重新使用相同的图像数据的技术。下面更详细地描述通过使用可编程延迟656为关键和不太关键的任务提供带宽控制的技术。下面还将更详细地描述使用调度器内部的看门狗定时器657提供故障和暂停检测的技术。
图7和图8示出了使用模式适配器(PA)模块654(图6)的模式适配的示例。当生产数据模式与消费数据模式不同时,可以使用模式适配器。例如,镜头失真校正(LDC)块701可以使用已知的或以后开发的图像处理技术产生二维数据块,诸如图8的阵列801中的块0-11。例如,LDC模块701可以被配置为补偿图像中的“鱼眼”失真以产生非失真图像。在一些示例应用中,“鱼眼”相机镜头可以用于捕获广角视图。在另一示例中,LDC块701可以被配置为处理透视变换以改变用户的视点。在又一示例中,LDC模块701可以被配置为处理透视变换以产生双目校正。
同时,多路缩放器(multiscaler,MSC)702可以使用已知的或以后开发的图像缩放技术对可以跨由LDC 701产生的若干块的数据行(诸如图8中的数据行811、812)进行操作。在图8中,2D 8×8数据块的2D阵列801是与1D数据行的阵列802中的数据相同的数据,仅以不同的模式进行解释和处理。
模式适配器也可以被视为将m个生产者任务映射到n个消费者任务的模块。模式适配器对来自CS(消费者套接字)710的m任务开始进行计数。之后,模式适配器654的PS(生产者套接字)711以pend断言的形式为(一个或更多个)下游HWA 702生成n个激活消息。一个pend断言指示一个可消费数据可用性。pend信号保持被断言,直到生产者套接字从其连接的消费者节点接收到dec信号。对pend的去断言是一个pend断言的完成。PS对n个这样的pend断言进行计数。之后,模式适配器654的CS为上游HWA 701生成m个确认消息。
在图7和图8中示出的示例的上下文中,其中2D数据块具有8×8数据模式并且1D数据行具有32×1数据模式,以下步骤可以由PA 654执行。生产者套接字712在从HWA 701接收任务完成时递增其计数。当每个新处理的2D数据块在共享缓冲器中可用时,PS套接字712然后向消费者套接字710发送pend信号。
在接收到四个块任务完成信号时,PA生产者套接字711用八来更新其用于消费者702的计数,并且断言到HWA 702的CS 713的pend信号。由于在四个2D数据块可用之后,八个数据行可用,所以pend信号断言和去断言被重复八次,如图8所示。HWA 702现在一个接一个地消费可用的行。当行被消费时,HWA 702的CS 713一个接一个地发送dec事件。在另一个实施例中,PA生产者套接字711可以向HWA 702的CS 713发送具有伴随值“pend计数”的单个pend消息。在这种情况下,从CS 713回来的dec消息也需要携带“递减计数值”。
在从HWA 702接收到八个行类型任务完成信号时,PA 654将其生产者计数递减四,因为已经消费了四个2D数据块。然后,PA 654一个接一个地将四个块类型dec消息推送到HWA 701的生产者套接字712以完成握手。在另一个实施例中,PA 654可以将具有四计数递减命令的单个消息发送到HWA 701的生产者套接字712。
在图7中,PS 712被示为紧邻HWA 701,而CS 713被示为紧邻HWA 702。在一些实施例中,调度器PS/CS可以在相应的HWA内实现。在其他示例中,调度器PS/CS可以在单独的位置中实现,如图3中所表明的。
在另一个示例中,阵列801和802的布置可以颠倒。在该示例中,生产者可以产生行取向数据模式,诸如跨多个2D数据块的阵列802,并且消费者可以使用诸如阵列801的2D模式来处理数据集。在其他实施例中,1D模式可以跨更多或更少的2D模式。在其他实施例中,可以利用模式适配器产生和消费不同类型的数据模式。
图9示出了多消费者场景。在该示例中,单个HWA 901处理2D数据块。三个模式适配器912-914与相应的HWA 902-904链接。在该示例中,HWA 902可以是噪声滤波器(NF),HWA903是第一多路缩放器(MSC0),并且HWA904是第二多路缩放器(MSC1)。
在这种类型的多消费者场景中,PA 912-914中的每个PS都可以对其自身计数。之后,每个PA 912-914的CS可以为上游HWA 901生成m个确认消息。上游HWA 901可以包括用于每行模式适配器的独立PS。
图10是示出使用模式适配器的线程调度的方面的流程图。如上文更详细描述的,当生产数据模式不同于消费数据模式时,可以使用模式适配器。例如,生产者可以产生二维数据集,诸如图8的阵列801中的块0-11。同时,消费者可以对可以跨由生产者产生的若干数据集的数据行进行操作。在图8中,2D 8×8数据块的2D阵列801是与1D数据行的阵列802中的数据相同的数据,仅以不同的模式进行解释。需要四组2D 8x8数据来形成八行32x1数据。
为了执行模式适配,可以利用数量M的第一类型数据集初始化1002诸如PA模块654(图6)的模式适配器模块,数量M的第一类型数据集是提供数量N的第二类型数据所需的。例如,对于图8的示例,M可以是四并且N可以是八。
每次生产者将第一类型数据集放置在缓冲存储器中时,它可以发送由PA模块接收1004的pend消息。在此示例中,PA模块不向其消费者模块发送任何消息直到已经接收到四个pend消息。
在PA模块已经接收到1006四个pend消息之后,它然后可以向其消费者发送1008pend消息,因为(在该示例中)在缓冲存储器中有八行数据可用。
然后,PA模块等待直到它接收到1010指示已经处理了第二类型数据集之一的dec消息。该发送1008pend消息和接收1010dec消息的序列可以重复N=8次,因为(在该示例中)在缓冲存储器中有八行数据可用。
在一些示例中,可以发送具有指示值N的参数的单个pend消息。类似地,在一些示例中,可以接收具有指示已经处理了N个数据集的参数的单个dec消息。
然后,PA模块可以向其生产者发送1014指示现在已经处理了M=4个第一类型数据集的四个dec消息。在一些示例中,可以发送具有指示已经处理了M个数据集的参数的单个dec消息。
如上所述,在一些实施例中,可以通过断言相应的控制信号线来发送dec消息和pend消息。
图11是示出使用事务聚合器(TA)655(图6)的事务聚合的示例的时序图。事务聚合器可以在调度器311(图3)内实现,或者它可以与具体HWA组合实现。每个TA可以利用生产者套接字和/或消费者套接字和可配置控制逻辑来实现,以执行聚合操作。
当跨若干执行线程共享相同数据时,事务聚合器(TA)655可以聚合任务开始和完成。例如,在增长窗口中,可以从外部存储器321(图3)读取帧行,并且每行对于VSR(竖直搜索范围)数量的线程操作有效。类似地,在具有t个滤波器抽头的噪声滤波器和缩放器中,除了帧的开始和结束之外,每行对于数量t的线程操作有效。为此目的,在发布用于另一帧行的任务开始1103之前,可以将来自DMA(生产者)调度器的任务开始1102聚合达所需数量的周期。
聚合器是延迟线1101,其中延迟被编程为需要累积的事务的数量。在五抽头(竖直)滤波器的情况下,可能需要累积来自DMA或生产者的五行以启动滤波器操作。在+/-64增长窗口的情况下,可能需要累积来自DMA的128行以启动光学流处理。例如,这可以通过调度器的生产者套接字仅在生产者计数达到被配置的计数阈值之后才生成pend信号来实现。在任务完成1105时,可以按照到达的顺序移除对应于事务的数据。
在另一种配置中,TA模块可以耦合到若干消费者,每个消费者可以想要处理相同数据集。在这种情况下,TA模块可以延迟向将移除该数据集的任务发送pend消息,直到TA模块从被配置为使用该数据集的每个消费者模块接收到dec消息。例如,两个缩放器模块可以各自想要处理数据集。每个缩放器模块可以使用模式适配器功能来处理使用与创建数据的生产者不同的模式的数据。在这种情况下,TA模块将延迟向数据的生产者发送dec消息,直到两个缩放器模块都已经发送了多个dec消息,该多个dec消息指示它们已经完成了处理数据集。
图12是示出使用带宽控制逻辑656(图6)的带宽流控制的示例的时序图。再次参考图3,多个HWA 301-303可以访问L2共享存储器320和L3外部存储器321。第一个HWA(诸如HWA301)可以被配置为通过迭代重复一个或更多个处理任务321,对位于L2 320和/或L3中的大的数据集执行处理,并且第一个HWA可以能够在短时间内处理整个数据集,即使在一段时间内可能不需要处理的结果。同时,第二个HWA(诸如HWA 302)可以被配置为对也位于L2 320和/或L3 321中的数据集执行处理,其中可能快速地需要该过程的结果。然而,由于HWA 301的处理活动,HWA可能被阻止而不能及时完成其处理任务。
在这种情况下,HWA 301的线程调度器311中的带宽限制逻辑656可以被配置为调节和均匀地分配HWA 301的处理,诸如通过使用停止状态652。为此,可以使用令牌1200。可以以周期性速率创建令牌,在本文称为“令牌周期”。在该示例中,可以基于时钟周期的计数或其他时序机制以周期性方式(如1200-1203所示)创建新令牌,如1211-1214所示。每个任务的启动可以以令牌的可用性为条件。在任务开始后,销毁一个令牌。以这种方式,可以将每个任务启动调节成以由令牌周期确定的平均速率发生,其可以使用存储器映射寄存器322(图3)之一来配置。
如上所述,在允许任务开始之前可能需要完成若干生产者和/或消费者依赖性条件,这可以由如上所述的HTS逻辑来管理。因此,有时令牌可能是可用的,但由于另一个条件,任务可能没有准备好。有时由于跨多个令牌周期的长依赖性延迟,可以创建多个令牌。在这种情况下,可以指定最大数量的令牌以在解决依赖性延迟之后防止大量突发的任务活动。例如,可以使用存储器映射寄存器322来配置最大令牌计数。
例如,参考图12,在时间1220处,任务0可以准备好开始。在时间1230处,最初创建令牌1200并且允许任务0开始。在时间1221处,任务1可以准备好开始;然而,如上所述,令牌1201不被创建,直到在循环计数完成时的时间1211。因此,任务1停止直到当令牌1201变得可用时的时间1231。令牌1202可以在循环计数完成时在时间1212处变得可用,但是由于消费者和/或生产者依赖性,任务2可能目前尚未准备好开始,如上所述。在该示例中,消费者/生产者依赖性可以在时间1222处完成,并且因此可以允许任务2在时间1232处开始。任务3可以准备好在时间1223处开始,这小于一个令牌周期,因为任务2开始。然而,因为任务2被延迟并且在时间1213处创建令牌1203,所以可以给予任务3立即授权以在时间1233处开始执行。在该时间图中示出了几个时序场景,但是其他示例是可能的。
再次参考图3和图6,可以在线程调度器311或每个HWA 301-303中提供看门狗定时器逻辑657。每个看门狗定时器657可以在任务开始信号666被断言以在相关联的HWA上开始新任务执行之后开始对时钟周期的数量进行计数。如果在任务开始之后的指定数量的时钟周期之前没有从相关联的HWA接收到任务完成信号667,则看门狗定时器可以通过断言“线程暂停”信号658来启动对更高级别控制功能的中断。例如,可以在主机处理器332上实现更高级别的控制功能。
如上所述,执行线程可以被分解成一组细粒度任务,每个细粒度任务可以对小的数据集(诸如32×1数据行或8×8数据块)进行操作。可以确定执行每个任务所需的最大时间。例如,最大时间可以包括一些额外的填充以考虑调度和数据依赖性。
在一些实施例中,可以通过默认值来确定超时时段。在其他示例中,可以使用存储器映射寄存器322来配置超时时段。在该示例中,基于300MHz时钟速率来操作HTS 310以及HWA 301-303。每个看门狗定时器657被配置有64k个周期的默认值,其相当于大约0.2ms。因此,在该示例中,当来自任何HWA的任何细粒度任务在大约0.2ms内没有完成时,可以警告超时错误。这种暂停条件的快速检测可以警告安全关键功能,并可能更快地采取纠正措施。
图13是汽车1300的图示,该汽车1300配备有多个相机和雷达传感器设备1301-1310,并且包括如上文更详细描述的具有硬件加速器线程调度器的示例处理系统1330。在该示例中,诸如相机和雷达传感器1301-1310的多个图像捕获设备位于汽车1300的前部和后部区域中并且经由汽车因特网1320连接到处理系统1330。图像处理系统1330可以耦合到交通工具1300内的控制系统,诸如控制系统1340。控制系统1340可以耦合到发动机、转向和/或制动系统。控制系统1340可以使用由图像处理系统1330处理的图像数据来执行各种类型的ADAS功能。
ADAS技术的发展涉及若干创新领域。两个重要的相关趋势包括缩小诸如传感器、相机和电子设备等各个组件,并将专用功能集成到更全面的系统中。这些趋势是互补的,因为需要更小、更便宜的组件来以经济的方式构建更大的系统。例如,用于车道保持辅助的相同前方相机1301-1305还可以提供信息以检测汽车前方的物体,读取交通标志或应用制动以避免碰撞。然而,执行更复杂的ADAS功能需要:来自更多相机和来自其他传感器(诸如超声波、光雷达(LIDAR)和雷达)的输入;以及来自那些不同传感器元件的数据的融合。融合还能够克服各个传感器解决方案的缺点,并可以提供一定程度的冗余。
处理系统1330可以基于SoC设备,诸如可从德克萨斯仪器公司(TI)获得的那些设备,诸如TDA3x和TDA3x系列设备,其可以被扩充以包括本文描述的技术的实施例。TI已将一组外设完全集成到TDAxx解决方案中,以简化设计并最小化空间,从而促进传感器融合,如图13所示。通信接口(特别是用于基于相机(如环绕视图和后备相机)的系统)可以受益于TI最新一代FPD-Link III SerDes系列,这有助于减少使用单个同轴电缆将远程ADAS卫星连接到中央处理模块的工作量。由于更小的连接器和高度集成的组件而减少的布线工作量和更小的模块有助于确保不断增加的ADAS传感器模块数量不会给新车增加高的额外成本和重量。例如,参见2015年8月Hannes Estl的“Paving the way to self-driving cars withadvanced driver assistance systems(使用高级驾驶员辅助系统为自动驾驶汽车铺平道路)”。
本文示出了汽车1300,但是其他实施例可以放置在其他类型的交通工具(诸如卡车、火车、飞机、无人机等)中以辅助或完全控制交通工具的操作。
其他实施例
本文已经描述了用于ADAS的示例实施例,但是示例实施例同样有益于非ADAS计算机视觉应用,诸如汽车、工业应用、高性能计算、机器人、无人机等。
本文已经描述了用于图像处理的实施例,但是用于其中多个处理器执行多个处理线程的其他类型的数据处理的实施例是可能的。
本文示出了一组线程调度器的硬件实施例,但是实现本文描述的原理的线程调度器也可以在一个或更多个处理核上执行的软件中实现。
尽管本文可以以顺序方式示出和/或描述方法步骤,但是附图中示出和/或本文描述的步骤中的一个或更多个可以同时执行,可以组合,和/或可以以不同的顺序执行。因此,实施例不限于附图中示出和/或本文描述的步骤的具体顺序。
在本说明书中,术语“耦合”及其派生词意指间接、直接、光学和/或无线电连接。例如,如果第一设备耦合到第二设备,则该连接可以通过直接电连接,通过经由其他设备和连接的间接电连接,通过光学电连接,和/或通过无线电连接。
在权利要求的范围内,在所描述的实施例中的修改是可能的,并且其他实施例也是可能的。

Claims (15)

1.一种用于调度数据处理设备的方法,所述方法包括:
使用调度器的有限状态机即FSM,利用数量m的第一类型数据集初始化所述调度器;
在所述调度器的消费者套接字处从生产者模块接收第一待处理消息即第一PEND消息,以指示所述生产者模块已经产生第一类型数据集并将所述第一类型数据集存储在缓冲存储器中,其中m个第一类型数据集形成n个第二类型数据集;
响应于从所述生产者模块接收到m个PEND消息,在所述调度器的生产者套接字处向消费者模块发送一个或多个第二PEND消息,以指示至少一个第二类型数据集在所述缓冲存储器中可用;以及
响应于从所述消费者模块接收到对应于所述第二类型数据集的n个递减消息即DEC消息,从所述调度器向所述生产者模块发送m个DEC消息,以指示已经消费了m个第一类型数据集。
2.根据权利要求1所述的方法,其中进一步包括利用数量n的第二类型数据集初始化所述调度器。
3.根据权利要求2所述的方法,进一步包括由所述调度器从所述消费者模块接收DEC消息,以指示所述消费者模块已经处理了从所述缓冲存储器中的所述m个第一类型数据集导出的第二类型数据集。
4.根据权利要求3所述的方法,其中通过断言PEND信号来执行发送PEND消息,并且通过断言DEC信号来执行发送DEC消息。
5.根据权利要求2所述的方法,其中所述第一类型数据集是二维数据块。
6.根据权利要求2所述的方法,其中所述第二类型数据集是跨所述m个第一类型数据集的一维数据行。
7.根据权利要求2所述的方法,其中所述第一类型数据集是一维数据行,并且所述第二类型数据集是跨所述m个第一类型数据集的二维块。
8.根据权利要求1所述的方法,进一步包括:
确定已经由一个或多个消费者模块对第一组m个第一类型数据集执行预定义数量的任务;以及
延迟在所述缓冲存储器中移除所述第一组m个第一类型数据集,直到已经完成所述预定义数量的任务。
9.根据权利要求8所述的方法,进一步包括由所述调度器的事务聚合器逻辑模块通过在每次已经对所述第一组m个第一类型数据集执行任务时从所述一个或多个消费者模块接收任务完成消息来检测已经完成了所述预定义数量的任务。
10.根据权利要求8所述的方法,其中延迟移除所述第一组m个第一类型数据集通过以下操作来执行:延迟向将移除或修改所述m个第一类型数据集的生产者模块发送任务开始消息,直到已经对所述第一组m个第一类型数据集执行了所述预定义数量的任务。
11.根据权利要求1所述的方法,进一步包括由所述调度器向硬件加速器传输初始化消息。
12.根据权利要求1所述的方法,其中所述调度器在片上的系统中。
13.根据权利要求12所述的方法,其中所述片上的所述系统安装在交通工具上。
14.根据权利要求1所述的方法,进一步包括由所述调度器向硬件加速器传输任务开始消息。
15.根据权利要求1所述的方法,进一步包括由所述调度器向硬件加速器传输任务结束消息。
CN201780055516.8A 2016-09-19 2017-09-19 使用模式适配器的用于图像和视觉处理块的数据同步 Active CN109690499B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/269,957 US10296393B2 (en) 2016-09-19 2016-09-19 Method for scheduling a processing device
US15/269,957 2016-09-19
PCT/US2017/052300 WO2018053523A1 (en) 2016-09-19 2017-09-19 Data synchronization for image and vision processing blocks using pattern adapters

Publications (2)

Publication Number Publication Date
CN109690499A CN109690499A (zh) 2019-04-26
CN109690499B true CN109690499B (zh) 2023-06-16

Family

ID=61619000

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780055516.8A Active CN109690499B (zh) 2016-09-19 2017-09-19 使用模式适配器的用于图像和视觉处理块的数据同步

Country Status (4)

Country Link
US (2) US10296393B2 (zh)
EP (1) EP3516521B1 (zh)
CN (1) CN109690499B (zh)
WO (1) WO2018053523A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112771498A (zh) 2018-07-05 2021-05-07 米西克有限公司 用于实施智能处理计算架构的系统和方法
CN109631853A (zh) * 2018-12-29 2019-04-16 深圳市道通智能航空技术有限公司 一种深度图处理方法、装置和无人机
US11615043B2 (en) 2020-01-02 2023-03-28 Texas Instruments Incorporated Systems, methods, and apparatus to enable data aggregation and adaptation in hardware acceleration subsystems
US11356369B1 (en) 2020-03-31 2022-06-07 Juniper Networks, Inc. Border gateway protocol update packing for a distributed routing information base
US11586465B2 (en) * 2020-04-16 2023-02-21 Texas Instruments Incorporated Scalable hardware thread scheduler
US11561823B1 (en) * 2020-05-12 2023-01-24 Juniper Networks, Inc. Lockless management of immutable objects by multi-threaded processes using multiple counters

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5881315A (en) * 1995-08-18 1999-03-09 International Business Machines Corporation Queue management for distributed computing environment to deliver events to interested consumers even when events are generated faster than consumers can receive
US8325194B1 (en) * 2009-06-10 2012-12-04 Nvidia Corporation Mitigating main crossbar load using dedicated connections for certain traffic types
CN103218329A (zh) * 2011-10-26 2013-07-24 想象力科技有限公司 数字信号处理数据传输
CN104092767A (zh) * 2014-07-21 2014-10-08 北京邮电大学 一种增加消息队列模型的发布/订阅系统及其工作方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5644758A (en) * 1994-12-13 1997-07-01 Microsoft Corporation Bitmap block transfer image conversion
US5852450A (en) 1996-07-11 1998-12-22 Lamb & Company, Inc. Method and apparatus for processing captured motion data
US6690668B1 (en) * 1998-10-19 2004-02-10 Texas Instruments Incorporated Modular interconnection of network switches
JP2000128030A (ja) 1998-10-19 2000-05-09 Niles Parts Co Ltd 車両情報データの記憶装置
JP2001195347A (ja) * 2000-01-12 2001-07-19 Mitsubishi Electric Corp Dma転送装置
US6801202B2 (en) * 2000-06-29 2004-10-05 Sun Microsystems, Inc. Graphics system configured to parallel-process graphics data using multiple pipelines
US8601069B1 (en) * 2007-11-21 2013-12-03 Marvell International Ltd. Method and apparatus for message multicasting
EP2405353B1 (en) * 2010-07-07 2017-11-22 Sap Se Multi-core query processing using asynchronous buffers
EP2798804A4 (en) * 2011-12-26 2015-09-23 Intel Corp COMMUNICATION BETWEEN COPROCESSORS WITH DIRECT CONNECTION SYNCHRONIZATION
US10235220B2 (en) * 2012-01-23 2019-03-19 Advanced Micro Devices, Inc. Multithreaded computing
US20140028852A1 (en) 2012-07-25 2014-01-30 Magna Electronics Inc. Control for vehicle imaging system
US9250858B2 (en) * 2013-02-20 2016-02-02 International Business Machines Corporation Dual-buffer serialization and consumption of variable-length data records produced by multiple parallel threads
CN105165003B (zh) 2013-04-26 2018-06-22 富士胶片株式会社 图像处理装置、摄像装置、图像处理方法及程序
US20150000676A1 (en) * 2013-07-01 2015-01-01 John A. Colona Surgical Drape and Attachment Mechanism
US10334004B2 (en) 2014-05-21 2019-06-25 videoNEXT Federal, Inc. System and method for networked video capture, backup, and serving
US10755380B2 (en) 2015-11-11 2020-08-25 Texas Instruments Incorporated Down scaling images in a computer vision system
JP6838222B2 (ja) * 2016-04-28 2021-03-03 日立Astemo株式会社 車両制御装置、及び車両システム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5881315A (en) * 1995-08-18 1999-03-09 International Business Machines Corporation Queue management for distributed computing environment to deliver events to interested consumers even when events are generated faster than consumers can receive
US8325194B1 (en) * 2009-06-10 2012-12-04 Nvidia Corporation Mitigating main crossbar load using dedicated connections for certain traffic types
CN103218329A (zh) * 2011-10-26 2013-07-24 想象力科技有限公司 数字信号处理数据传输
CN104092767A (zh) * 2014-07-21 2014-10-08 北京邮电大学 一种增加消息队列模型的发布/订阅系统及其工作方法

Also Published As

Publication number Publication date
CN109690499A (zh) 2019-04-26
EP3516521A4 (en) 2019-09-04
WO2018053523A1 (en) 2018-03-22
US10296393B2 (en) 2019-05-21
US20180081734A1 (en) 2018-03-22
EP3516521B1 (en) 2022-03-30
US11630701B2 (en) 2023-04-18
US20190235927A1 (en) 2019-08-01
EP3516521A1 (en) 2019-07-31

Similar Documents

Publication Publication Date Title
US11669370B2 (en) Bandwidth controlled data synchronization for image and vision processor
CN109690499B (zh) 使用模式适配器的用于图像和视觉处理块的数据同步
US11188343B2 (en) Apparatus, systems, and methods for low power computational imaging
US9727113B2 (en) Low power computational imaging
JP7053713B2 (ja) 低電力コンピュータイメージング
CN108334407B (zh) 在硬件线程调度程序上调度基于并行块的数据处理任务
US20210103465A1 (en) Scheduling of External Block Based Data Processing Tasks on a Hardware Thread Scheduler
US11768689B2 (en) Apparatus, systems, and methods for low power computational imaging
US11586465B2 (en) Scalable hardware thread scheduler
Vissers et al. Building real-time HDTV applications in FPGAs using processors, AXI interfaces and high level synthesis tools
JP2015169988A (ja) 半導体装置
US20230385114A1 (en) Data processing pipeline
JP2009134635A (ja) マルチプロセッサシステム

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