CN116418827A - 处理装置和用于向多个处理单元分配数据的方法 - Google Patents

处理装置和用于向多个处理单元分配数据的方法 Download PDF

Info

Publication number
CN116418827A
CN116418827A CN202211639151.2A CN202211639151A CN116418827A CN 116418827 A CN116418827 A CN 116418827A CN 202211639151 A CN202211639151 A CN 202211639151A CN 116418827 A CN116418827 A CN 116418827A
Authority
CN
China
Prior art keywords
data stream
processing
data
processing units
processing unit
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
CN202211639151.2A
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.)
Airbus SAS
Original Assignee
Airbus SAS
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 Airbus SAS filed Critical Airbus SAS
Publication of CN116418827A publication Critical patent/CN116418827A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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
    • 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
    • G06F15/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Image Processing (AREA)

Abstract

本发明涉及处理装置和用于向多个处理单元分配数据的方法。提供了用于并行计算的处理装置和对应的方法。处理装置包括多个处理单元、调度器模块、第一公共数据传输元件以及第一输入接口。第一输入接口被配置为接收连续的第一数据流并经由第一公共数据传输元件传输第一数据流。这些处理单元中的每一个均连接到第一公共数据传输元件,并被配置为接收经由第一公共数据传输元件传输的数据。调度器模块与这些处理单元中的每一个进行电子通信,并被配置为将第一数据流的各部分指派给处理单元中的每一个以便同时处理。这些处理单元中的每一个被配置为:监测完整的第一数据流,选择由调度器模块指派的第一数据流的各部分,并对第一数据流的所选定部分执行处理操作。

Description

处理装置和用于向多个处理单元分配数据的方法
技术领域
本披露内容涉及用于基于流的并行应用的嵌入式计算。具体地,本披露内容涉及一种用于并行计算的处理装置和一种用于向多个处理单元分配数据的方法。
背景技术
在具有数据流式传输要求的处理应用(例如,航空和航天应用中的图像处理)中,通常使用数据的并行计算,以达到合理的性能。在这样的并行计算应用中,多个处理单元并行在要处理的数据的各个部分上工作,比如在需要在一定时间限制内处理的图像数据或任何其他大型数据集上工作。因此,数据通常存储在处理系统的共享存储器中,各个处理单元访问这些数据,并且每个处理单元对数据的不同部分(数据窗口)执行处理操作。然而,对于许多应用,有必要让至少一些处理单元在重叠的数据窗口上工作,使得多个处理单元部分地对同样的数据执行计算操作。这意味着一些数据必须由多个处理单元从共享主存储器中读出,从而导致存储器访问量增加、由于独占存储器访问导致的时间延迟、以及网络流量增加并因此计算开销增加。此外,完整的数据集必须事先存储在共享存储器中。
发明内容
目的在于减少计算开销并提高并行计算应用的性能。。
提供了根据独立权利要求的特征的处理装置和用于向多个处理单元分配数据的方法。从以下描述中可以得出进一步的发展。
参考处理装置而描述的许多特征可以实施为方法步骤,反之亦然。因此,在处理装置的上下文中提供的描述也以类似的方式适用于方法。具体地,处理装置及其部件的功能可以实施为方法的方法步骤,而方法步骤可以实施为处理装置的功能。
根据第一方面,提供了一种用于并行计算的处理装置。该处理装置包括多个处理单元、调度器模块、第一公共数据传输元件以及第一输入接口。第一输入接口被配置为接收连续的第一数据流并经由第一公共数据传输元件传输第一数据流。这些处理单元中的每一个均连接到第一公共数据传输元件,并被配置为接收经由第一公共数据传输元件传输的数据。调度器模块与这些处理单元中的每一个进行电子通信。调度器模块被配置为将第一数据流的各部分指派给这些处理单元以便同时处理。这些处理单元中的每一个被配置为:监测完整的第一数据流,选择由调度器模块指派的第一数据流的各部分,并对第一数据流的所选定部分执行处理操作。
处理装置可以例如是以下各项(或可以是其集成部分):常规中央处理单元(CPU)、图形处理单元(GPU)、片上网络(NoC),比如用在片上系统(SoC)或任何其他基于网络的通信系统或子系统上。因此,处理装置可以在集成电路上(比如在微芯片上)实施或在不同的网络装置之间实施,比如在计算机之间例如经由以太网网络、CAN接口、或任何其他合适的网络进行的常规网络通信中实施。处理装置也可以是一组分布式的多个处理单元。
这些处理单元可以是被配置为执行任何类型的处理或计算操作的不同的处理元件。在NoC、CPU、GPU或类似的应用中,这些处理单元例如可以是合作执行指派给芯片的处理操作的不同的处理器核。然而,在如以太网网络等常规的网络应用中,这些处理单元也可以是相互连接并可以经由以太网交换数据的标准网络计算机。这些处理单元还可以包括存储器元件,比如缓冲区或高速缓存存储器,以便缓冲要由对应的处理单元处理的数据或保存被执行操作的数据。这种高速缓存存储器可以是例如但不限于CPU的L1、L2和L3高速缓存。
第一输入接口可以是适合于向处理装置提供数据的任何接口。例如,在NoC或类似的应用中,第一输入接口可以是被配置为接收来自芯片外部的数据以供芯片处理的任何接口。在其他常规的网络应用中,比如当多台计算机被用作处理单元时,输入接口可以例如是接入点(比如WLAN应用中的无线接入点或LAN中的网关机)或者是可以用于向连接到网络的装置广播或流式传输数据使得每个处理单元都可以访问数据流的其他合适的装置。然而,这个列举实质上只是示例性的,并且可以使用可以用于向处理装置提供数据的任何接口。
第一公共数据传输元件被配置为将通过第一输入接口接收的数据流(比如第一数据流)传导或传输到这些处理单元。为此,这些处理单元中的每一个均连接到第一公共数据传输元件,并且可以接收经由或通过第一公共数据传输元件传导或传输的数据。在微芯片应用中,比如在NoC、CPU或GPU应用中,第一公共数据传输元件可以例如是芯片的内部数据总线,每个处理核都连接到该内部数据总线并且可以从其接收数据。然而,术语“传导”并不一定要求经由物理导体传导电流。例如,在常规的联网应用中,比如在以太网网络中,网络本身可以充当第一公共数据传输元件,并可以“传导”数据流,即,第一数据流可以经由网络被处理单元访问。
第一数据流携带要由处理装置或更确切地说由处理装置的处理单元处理的数据。例如,第一数据流可以包括流式传输的图像数据或视频数据。一般而言,当在本文中使用时,术语“图像数据”的确还包括视频数据。然而,第一数据流还可以包括要由这些处理单元并行处理的任何其他类型的流式传输的数据。特别地,第一数据流可以是基于包的(比如常规的IP包)或非基于包的。要注意,“并行处理”并不要求所有处理单元同时处理整个数据流。更具体地,数据流被分割成指派给这些处理单元的多个部分,并且每个部分由一个处理单元专门处理,而多个处理单元同时处理多个部分(每个处理单元处理至少一个部分)。
调度器模块与多个处理单元中的每一个进行通信,并充当一种工作负荷分配器。然而,调度器模块也可以是这些处理单元中的每一个的集成部分,例如具体而言,这些处理单元中的每一个被预先编程以访问数据流的某些部分。因此,应以抽象的方式将调度器模块理解为提供本文所述功能的以下两项:处理装置内部或外部或这些处理单元中的每一个内的独立(硬件)模块,或者处理装置内或这些处理单元中的每一个内的软件解决方案(软件模块)。当描述为进行通信或电子通信时,也涵盖例如通过处理装置或这些处理单元中的每一个内的软件层与这些处理单元进行的内部通信。调度器模块将数据流的不同部分指派给不同的处理单元以便进行处理。例如,如果第一数据流包括要处理的图像数据,那么调度器模块可以将图像数据的每一帧中的某些区域指派给不同的处理单元,使得多个处理单元中的每一个都处理图像帧的所指派区域。为了做到这一点,调度器模块可以将数据流的所指派部分(对应于图像帧的区域)分别传送给这些处理单元中的每一个。为此,调度器模块将信息传送给处理单元,处理单元可以使用该信息来识别数据流的各个部分。因此,每个处理单元事先(即,在开始传输数据流之前)知道数据流的哪一部分将由对应的处理单元处理。在微芯片应用中,调度器模块可以是芯片的集成部分,或者可以是与芯片通信的外部装置或单元。调度器模块也可以是由处理装置执行的软件应用程序,或者如上所述可以是这些处理单元中的每一个的一部分。在如以太网等常规的网络应用中,调度器模块可以连接到输入装置,例如,与网络中的处理单元(处理计算机或其他装置)进行通信的网络中的独立计算机。输入装置接收来自操作人员的信息,并将命令传输给调度器模块,使得调度器模块将配置信息发送到处理单元。
尽管多个处理单元中的每一个都有其自己的数据流指派部分,但每个处理单元都随时监测或观察完整的数据流。然而,数据流中将不由某个处理单元处理的部分被这个特定的处理单元忽略。一旦经由第一公共数据传输元件传导数据流中要由特定处理单元处理的部分,该处理单元就会选择(即,读取)数据流的该部分,并对数据流的该部分执行对应的处理操作。数据流的对应部分也可以存储在相应处理单元的缓冲区中,并在之后进行处理。然而,存储数据流中所包含的完整数据的大型主存储器是不必要的,因为在数据流经由公共传输元件传输时每个处理单元都可访问完整的数据流,但只访问数据流中要由相应的处理单元处理的部分。特别地,多个处理单元还可以处理数据流的重叠部分,而无需从共享主存储器中多次读出对应的(重叠)数据。因此,完全消除了多次访问共享主存储器的需要,并减少了计算开销。
根据实施例,调度器模块被配置为通过将指示第一数据流的各部分的参数传送给这些处理单元中的每一个来将第一数据流的各部分指派给这些处理单元。
这种参数可以例如是指示数据流中感兴趣窗口的开始和结束的参数。在图像处理应用中,例如,可以将图像内区域的开始像素和结束像素传送给多个处理单元中的每一个,使得每个处理单元只处理图像的指派区域。另一个可设想的参数可能是基于时间的,使得各个处理单元在数据流被广播到处理单元的特定时间接受数据流的各部分。然而,这个列举实质上只是示例性的,并且可以使用允许多个处理单元中的每一个识别数据流的指派部分的每个参数。
对于这些处理单元中的每一个,参数可以不同,使得数据流的每一部分只由多个处理单元中不同的处理单元处理。然而,还可设想,两个或更多个处理单元得到相同的参数。这例如在某些情况下可能有助于增加处理操作的冗余。
根据进一步的实施例,参数包括忽略前导码。忽略前导码指示在数据流的开头处要由该忽略前导码所传送到的处理单元忽略的数据量。
例如,忽略前导码可以指示(图像处理应用中)不应该被这些处理单元中的对应处理单元考虑的数据位或像素的量。因此,忽略前导码可以是处理单元的计数器的阈值。处理单元可以例如对数据位或像素的量进行连续计数,并且一旦对应的计数器达到这个阈值,就可以开始接受数据流的各部分。
在这个实施例中和本文描述的任何其他方面或实施例中,当数据流经由公共数据传输元件传输时,它可以采取预定的已知格式。基于该预定的格式,可以在数据流中识别忽略前导码和图像的指派区域。
例如,在视频流应用中,忽略前导码可以指定在视频的每一帧开头处要忽略的像素数量。然后,对应的处理单元可以在帧的开头处(以及,即在数据流中对应于帧的开头处)忽略该数量的像素,并且一旦该数量的像素已经通过,就开始读取和处理该帧。然后,处理单元可以例如处理剩余的像素直到该帧结束为止,并重新启动计数器,使得在视频流的下一帧中忽略相同数量的像素。以这种方式,可以让每个处理单元处理视频的每一帧的相同部分。一个具体的示例是,使用两个处理器核来并行处理视频流,其中,每个处理单元被配置为处理每个视频帧的一半。可以例如通过(经由第一公共数据传输元件)连续逐行传输帧的一个又一个像素来流式传输视频流,使得首先从左到右传输帧的第一行的像素。之后,从左到右传输帧的第二行的像素,以此类推。一旦传输了单个帧的所有像素,就以相同的方式传输下一帧。例如,如果第一处理单元应该处理帧的上半部分而第二处理单元应该处理帧的下半部分,并且视频帧包括N个像素的总量,那么用于第一处理单元的忽略前导码将是0,并且用于第二处理单元的忽略前导码将是N/2。然而,这仅是用于说明忽略前导码的含义的一个示例。忽略前导码可以是允许处理单元确定在数据流的开头处或在数据流的重复部分(比如视频流中的帧)的开头处要忽略且不由处理单元处理的数据量的任何参数。换言之,忽略前导码为每个处理单元定义了偏移值,并且该偏移值指示相应处理单元的责任从数据流中哪个位置处开始。
根据进一步的实施例,参数包括接受参数和忽略参数。接受参数指示要由接受参数所传送到的处理单元选择的数据量,并且忽略参数指示要由忽略参数所传送到的处理单元忽略的数据量。
因此,接受参数可以指示要由这些处理单元中的任何一个处理的数据量。忽略参数可以指示一旦由接受参数定义的第一数据流的部分已经通过,对应的处理单元要忽略的数据量。进一步地,如果使用忽略前导码,则接受参数可以指示一旦与忽略前导码相对应的数据已经通过,处理单元要处理的数据量。与忽略前导码一样,接受参数和忽略参数也可以是处理单元的对应计数器的阈值。因此,例如,如果第一数据流中连续数量的数据位要由这些处理单元中的任何一个来处理,那么对应的忽略前导码可以指示在流中要由对应的处理单元处理的部分到达之前,流中要被忽略的区段或部分。然后,处理单元可以读取由接受参数指示的数据量,之后忽略由忽略参数指示的数据量。以这种方式,可以将数据流的各部分分配给多个处理单元以便进行处理,而无需将完整的数据存储在共享主存储器中。
根据实施例,这些处理单元中的每一个被配置为周期性地访问由接受参数定义的数据,并周期性地忽略由忽略参数定义的数据。
因此,多个处理单元中的每一个可以周期性地处理由接受参数指示的一定量的数据,并周期性地忽略由忽略参数指示的数据量。换言之,接受和忽略可以周期性地且交替地重复。这可以进行到每个处理单元都已经处理了一定量的数据为止,该一定量的数据可以是预定义的或者也可以是除了忽略前导码、接受参数和忽略参数之外由调度器模块传送到处理单元的。
例如,当处理视频流(其中,每个处理单元都应该处理视频每一帧的不同部分)时,接受和忽略可以周期性地重复。按照上文的示例,忽略前导码可以再次指定在视频的每一帧开头处要忽略的像素数量。然后,对应的处理单元可以在帧的开头处忽略该数量的像素,并且一旦该数量的像素已经通过,就开始处理该帧。然后,处理单元可以周期性地处理和忽略剩余的像素,直到对应的处理单元已经处理了一定量的数据为止,并且在到达帧的末尾时重新启动忽略前导码的计数器,使得在视频流的下一帧开头处忽略相同数量的像素。以这种方式,可以让每个处理单元处理视频的每一帧的相同部分。
接受参数和忽略参数在下面这种情况下特别有用,即,传输图像或者视频序列的帧,使得图像或帧的水平行按顺序传输,但是某一处理单元不被指派整个行而只被指派多行中每一行的一部分。
一个具体的示例是,使用四个处理单元(比如四个处理器核)来并行处理视频流,其中,每个处理单元应该处理每个视频帧的四分之一。可以例如通过(经由第一公共数据传输元件)连续逐行(即,水平行)传输帧的一个又一个像素来流式传输视频流,使得首先从左到右传输帧的第一行的像素。之后,从左到右传输帧的第二行的像素,以此类推。一旦传输了单个帧的所有像素,就以相同的方式传输下一帧。例如,如果第一处理单元应该处理每一帧的左上部分,第二处理单元应该处理每一帧的右上部分,第三处理单元应该处理每一帧的左下部分,而第四处理单元应该处理每一帧的右下部分,并且视频帧包括N×M个像素的总量(其中,N定义了帧的宽度,并且M定义了帧的高度),那么用于第一处理单元的忽略前导码将为0,用于第二处理单元的忽略前导码将为N/2,用于第三处理单元的忽略前导码将为N×M/2,并且用于第四处理单元的忽略前导码将为N×M/2+N/2。用于这些处理单元中的每一个的接受参数将为N/2,并且用于这些处理单元中的每一个的忽略参数也将为N/2。进一步地,在视频流的一帧期间要由每个处理单元处理的数据总量将为(N×M)/4。
然而,这仅是用于说明接受参数和忽略参数的含义的一个示例。这些参数可以是允许处理单元确定要周期性地处理和忽略的数据量的任何参数。特别地,接受参数和忽略参数不必是像素的计数器,而是也可以是例如数据位的计数器或任何其他合适的参数的计数器。
根据进一步的实施例,处理单元被配置为处理图像数据。
根据进一步的实施例,处理单元被配置为额外选择至少两个处理单元的第一数据流的所指派部分的周围部分,使得至少两个处理单元的感兴趣区域相互重叠。
因此,感兴趣区域是第一数据流中要由对应的处理单元处理的部分。用于不同处理单元的第一数据流的指派部分可以包括尖锐的边缘,使得数据流的任何部分都不会被同时指派给多于一个处理单元。然而,对于某些处理操作,可能需要一些或所有的处理单元考虑在所指派部分周围的数据。换言之,处理单元负责处理图像或帧的某一部分(即,这个处理单元被指派了图像/帧的区域),但这个处理单元可能需要考虑来自图像或帧的相邻部分的像素来处理其指派区域的边缘区域。例如在识别图像中位于对应的图像/数据流的指派部分的边缘上的特征时,这可能是必要的。然而,这只是示例,也可以设想获悉第一数据流中紧邻所指派部分的部分可能是有用的其他情况。
根据进一步的实施例,处理装置进一步包括第二公共数据传输元件和第二输入接口。第二输入接口被配置为接收连续的第二数据流并经由第二公共数据传输元件传输第二数据流。这些处理单元中的每一个均连接到第二公共数据传输元件,并被配置为接收经由第二公共数据传输元件传输的数据。调度器模块被配置为将第二数据流的各部分指派给这些处理单元以便同时处理。这些处理单元中的每一个被配置为对第一数据流和第二数据流的各部分执行组合处理操作。
在某些情况下,可能需要使用来自两个不同数据流的数据执行计算或处理操作。例如在用两个矩阵作为输入执行矩阵计算时,这可能很有用。然后,第一数据流可以包含第一矩阵的矩阵元素,并且第二数据流可以包含第二矩阵的矩阵元素。在这种情况下,处理单元可以经由第二公共数据传输元件从第二输入接口接收第二数据流。调度器模块可以以与上文针对第一数据流描述的相同的方式将第二数据流的各部分指派给各个处理单元。这些处理单元中的每一个可以同时或连续地选择第一数据流和第二数据流的所指派部分。在连续选择的情况下,处理单元可以例如缓冲来自第一数据流的所选定数据,并在第二数据流可用时执行对应的处理操作。
虽然是参考矩阵计算来描述的,但可以设想需要多个输入的许多并行计算应用。因此,应用不限于说明性描述的矩阵计算,而是可以用这种处理装置执行针对两个或更多个输入流的任何计算或处理。特别地,处理装置可以以相同的方式包括第三、第四、第五等公共数据传输元件和输入接口,以实现更复杂处理任务的并行计算。
第二公共数据传输元件、第二输入接口和第二数据流可以按照与根据上述任何一个实施例的对应的第一元件相同的方式进行配置。
根据第二方面,提供了一种用于向多个处理单元分配数据的方法。该方法包括接收连续的第一数据流并经由第一公共数据传输元件传输第一数据流。该方法进一步包括将第一数据流的各部分指派给处理单元,并由这些处理单元中的每一个监测完整的第一数据流。进一步地,该方法包括由这些处理单元中的每一个选择指派给这些处理单元的第一数据流的各部分,并由这些处理单元对第一数据流的所选定部分执行处理操作。
该方法包括与处理装置及其部件的功能相对应的步骤。因此,在此不再重复这些功能的细节。然而,技术人员理解的是,所提供的关于处理装置及其部件的功能的细节以类似的方式适用于方法步骤,在此不作重复。
根据实施例,通过将指示第一数据流的各部分的参数传送给这些处理单元中的每一个来将第一数据流的各部分指派给这些处理单元。
根据进一步的实施例,参数包括忽略前导码,并且
忽略前导码指示在数据流的开头处要由该忽略前导码所传送到的处理单元忽略的数据量。
根据进一步的实施例,参数包括接受参数和忽略参数。接受参数指示要由接受参数所传送到的处理单元访问的数据量。忽略参数指示要由忽略参数所传送到的处理单元忽略的数据量。
根据进一步的实施例,选择第一数据流的所指派部分包括周期性地访问由周期性接受参数定义的数据和周期性地忽略由周期性忽略参数定义的数据。
根据进一步的实施例,由这些处理单元中的每一个对第一数据流的所指派部分进行的选择包括由至少两个处理单元额外选择所指派部分的周围部分,使得至少这两个处理单元的感兴趣区域相互重叠。
根据进一步的实施例,该方法进一步包括通过第二输入接口接收连续的第二数据流,并经由第二公共数据传输元件传输第二数据流。该方法进一步包括将第二数据流的各部分指派给处理单元,并由这些处理单元中的每一个监测完整的第二数据流。进一步地,该方法包括由这些处理单元中的每一个选择指派给这些处理单元的第二数据流的各部分,并由这些处理单元对第一数据流和第二数据流的所选定部分执行组合处理操作。
综上所述,本披露内容提供了一种处理装置和一种用于向多个处理单元分配数据的方法,该装置和方法可以用于众多的并行计算应用。该装置和方法没有为处理单元提供公共的共享主存储器。因此,可以极大地减少存储器访问量和由此产生的计算开销,并且可以提高并行计算操作的性能。尽管在某些情况下,本文是参考图像处理和矩阵计算进行描述的,但该处理装置和方法可以用于任何并行计算应用。
附图说明
在下文中,关于附图更详细地描述了示例性实施例。这些图示是示意性的并且没有按比例绘制。相同的附图标记指代相同或相似的要素。在附图中:
图1具有四个处理单元的单数据流处理装置的示意图。
图2要由图1的处理装置处理的图像的示意性表示。
图3具有重叠感兴趣区域的视频帧的示意性表示。
图4具有四个处理单元的双数据流处理装置的示意图。
图5用于使用图4的处理装置计算矩阵乘积的两个输入矩阵的示意性表示。
图6用于使用图1的处理装置向多个处理单元分配数据的方法的流程图。
图7用于使用图4的处理装置向多个处理单元分配数据的替代性方法的流程图。
具体实施方式
图1示出了用于并行计算的处理装置10。处理装置10包括多个处理单元11,特别是四个处理单元11。调度器模块12与处理单元11中的每一个进行电子通信。处理单元11中的每一个均连接到第一公共数据传输元件13。第一输入接口14连接到第一公共数据传输元件13。处理装置10可以例如是片上网络(NoC)、CPU、GPU或任何其他基于芯片的嵌入式处理装置10。处理单元11可以例如是基于芯片的嵌入式处理系统(处理装置10)的处理核。然而,也可设想非基于芯片的处理装置10。处理单元11可以例如是经由充当第一公共数据传输元件13的标准以太网连接的标准以太网计算机。
可以通过第一输入接口14接收第一数据流,该第一输入接口进而经由第一公共数据传输元件13传输或广播第一数据流。由于多个处理单元11中的每一个均连接到第一公共数据传输元件13,因此多个处理单元11中的每一个始终能访问完整的第一数据流。但是,处理单元11只从第一公共数据传输元件13读取数据,而不修改第一公共数据传输元件13上的数据。第一数据流可以包括适合于由不同处理单元11进行并行计算的任何种类的数据,比如图像数据或视频数据,如下文参考图2进一步描述的。例如,第一数据流可以包括视频数据,并且视频的每一帧都可以逐像素传输。为此,可以连续传输视频的第一帧的第一行的像素。一旦完成第一行,就以相同的方式传输第二行的像素,以此类推,直到完全传输了第一帧为止。之后,以相同的方式传输视频的第二帧,以此类推,直到完成了视频流为止。
调度器模块12将工作负荷分配给不同的处理单元11,并被配置为将第一数据流中用于处理的某些部分指派给不同的处理单元11。这是事先进行的,例如通过将指示要由处理单元11之一处理的第一数据流的部分的参数传送给该处理单元11来进行。这种参数可以例如包括忽略前导码、接受参数和忽略参数,如将关于图2讨论的。
处理单元11中的每一个连续监听或监测第一公共数据传输元件13。一旦经由第一公共数据传输元件13传输指派给特定处理单元11的第一数据流的各部分,相应的处理单元11就选择(读取)数据流的该部分并处理数据。例如,可以向处理单元11中的每一个指派视频的帧中要由对应的处理装置11处理的不同部分。因此,处理单元11中的每一个可以同时处理图像数据或视频数据的不同部分,而无需将完整数据保存在共享主存储器中。因此,完全避免了对这种主存储器的访问,从而减少计算开销并增强计算性能。
尽管关于图像处理进行了描述,但处理装置10可以用于通过处理单元11对任何大型数据进行并行处理。
图2示出了要由图1的处理装置处理的视频的图片或帧90的示例。在不失一般性的情况下,将关于图1中描绘的处理单元11中的任何一个(例如第一个)来对图2中描绘的情况进行说明。其余的处理单元11也存在图2中描绘的类似情况。帧90包括感兴趣区域20和忽略部分30,该感兴趣区域对应于数据流中要由处理单元11处理的部分,而这些忽略部分则不由处理单元11处理。图1的处理装置10使用与像素计数器的阈值相对应的忽略前导码60、接受参数40和忽略参数50。这些值定义了处理单元11的感兴趣区域20并由调度器模块12发送到处理单元11。忽略前导码60对应于在流或视频流内的帧(如所描绘的)的开头处由处理单元11忽略的数据量。忽略前导码60在图2中由帧90的顶部和帧90的左侧的大括号指示。它对应于这些括号所覆盖的区域中包含的像素数量。接受参数40由感兴趣区域20上方的双箭头指示。它对应于帧的一行中、且在感兴趣区域20内的像素数量。忽略参数50由从感兴趣区域20的第一行的末尾到帧90的右端和从帧90的第二行的开头到感兴趣区域20的线指示。它对应于数据流内在感兴趣区域20的第一行末尾与感兴趣区域20的第二行开头之间传输的像素数量(因为帧数据是逐像素、逐行传输的)。
当经由第一公共数据传输元件13传输新帧时,处理单元11对所传输的像素进行计数。当达到由忽略前导码60定义的阈值时,处理单元11启动接受计数器,并从所传输的数据流中捕获像素,直到接受计数器达到由接受参数40定义的阈值为止。在此之后,处理单元11停止从数据流中捕获像素,并启动忽略计数器。当忽略计数器达到由忽略参数50定义的阈值时,处理单元11再次启动接受计数器并从数据流中捕获像素。交替重复这一过程,直到处理单元11捕获到与感兴趣区域20内的像素量相对应的预定义像素量为止。在此之后,处理单元停止捕获像素直到下一帧经由数据流到达,并再次启动忽略前导码的计数器。例如,可以通过数据流内对应的标志或通过对已通过数据流的帧的总像素进行计数来检测帧的末尾。处理单元11可以在捕获感兴趣区域20内的像素时同时处理这些像素,或者可以等待直到完整的感兴趣区域被捕获,然后在下一帧90的感兴趣区域20到达之前的时间内处理这些像素。
其余的处理单元11也可能存在类似的感兴趣区域20,这些感兴趣区域可能被放置在帧90内的不同位置。通过适当地设置参数(忽略前导码、接受参数、忽略参数),原则上可以定义数据流的任何部分,这对于本领域的普通技术人员来说是非常显而易见的。因此,处理单元11中的每一个可以处理视频流的帧90内的某个区域,该区域对应于第一数据流的某些部分。以这种方式可以实现对数据流的并行处理,而无需将全部数据存储在共享主存储器中。
尽管如描述的那样用于处理视频流,但处理装置10原则上可以用于任何大型连续数据流的并行处理。
进一步地,处理单元11可以额外选择(捕获)感兴趣区域20的周围部分21,这些周围部分扩大了第一数据流中由处理单元11中的每一个处理的部分,如图3所示。在图像处理应用中,这可能是必要的,例如为了检测感兴趣区域20的边缘处的特征。通过选择额外的周围区域21,重叠区域由多个处理单元11处理。在使用共享主存储器的常规处理装置中,这将极大地增加存储器访问,并因此增加计算开销。所披露的处理装置10完全避免了这些存储器访问。
图4示出了另一个处理装置10,其与图1所示的处理装置10的不同之处在于它包括第二输入接口16和第二公共数据传输元件15。处理单元11中的每一个均连接到第一公共数据传输元件13和第二公共数据传输元件15二者。图4的处理装置10以与图1的处理装置10类似的方式工作。但是,第二数据流可以经由第二公共数据传输元件15广播。处理单元11类似地监测第二数据流,并以与第一数据流的各部分相同的方式处理第二数据流的各部分。特别地,处理单元11可以相互独立地处理第一数据流和第二数据流的所指派部分。例如,处理单元11可以处理第二数据流的各部分,同时它们不处理来自第一数据流的数据。
然而,更重要地,处理单元11可以对第一数据流和第二数据流执行组合计算。换言之,第一数据流和第二数据流可以为计算提供多个输入。例如,处理单元11可以将来自第一数据流的图片与来自第二数据流的图片进行比较。例如,这可能有助于检测所检测的环境(例如来自相机)相对于参考图片或视频的变化。另一种情况是计算大型矩阵的矩阵乘积,而不需要存储矩阵并访问它们,如关于图5所描述的那样。
图5示出了将彼此相乘的两个矩阵A和B。这种乘法可以以类似于关于图2所描述的视频数据处理的方式发生,但是要使用图4的处理装置。第一矩阵A或更确切地说第一矩阵A的矩阵元素经由第一公共数据传输元件13在第一数据流中以与图2中帧的像素相同的方式(即,逐元素,逐行)传输。第二矩阵B可以经由第二公共数据传输元件15在第二数据流中传输,但在这种情况下是逐元素、逐列传输。因此,在矩阵A的表示的顶部指示了矩阵A的忽略前导码60。对于矩阵B,在图的左边指示了忽略前导码60。以这种方式,第二数据流将矩阵B的列广播给处理单元11。第一数据流将矩阵A的行广播给处理单元11。处理单元11可以使用这些矩阵元素来计算结果子矩阵95,这对于本领域的普通技术人员来说是非常显而易见的。每个处理单元11可以计算不同的结果子矩阵95,从而实现完整结果矩阵的并行计算。
进一步地,任何其他的多输入并行计算都可以由图4的处理装置10执行。还可以设想为第三、第四、第五等数据流添加必要的部件,从而实现具有对应量的输入的并行计算。
图6示出了用于向多个处理单元11分配数据的方法100的流程图。方法100从步骤101中在处理装置10处接收第一数据流开始。可以在处理装置的第一输入接口14处接收第一数据流。
在步骤102中,经由第一公共数据传输元件13传输或广播第一数据流,如以上关于处理装置10所描述的。在步骤103中,将第一数据流的各部分指派给处理单元11中的各个处理单元。该指派103可以由调度器模块12执行,如关于处理装置10所描述的那样例如通过将对应的参数(忽略前导码、接受参数、忽略参数)传送给对应的处理单元11来执行。在步骤104中,处理单元11监测或观察完整的第一数据流。该监测104也可以在处理装置10处接收到数据流之前开始。在步骤105中,处理单元11选择第一数据流中已经指派给处理单元11的各部分。所谓选择是指从第一数据流中读取对应的部分而不对第一数据流进行操纵。最后,在步骤106中,每个处理单元11对第一数据流的对应部分执行必要的处理操作,并且方法100结束。
每个方法步骤可以根据关于图1中处理装置10的描述来执行。
图7示出了用于向多个处理单元11分配数据的另一个方法100的流程图。该方法100可以例如用图4的处理装置10来执行。方法步骤101至105对应于图6的方法步骤101至105。方法步骤107至111基本上反映了方法步骤101至105,但涉及的是第二数据流。在图7的方法100中缺少了图6的方法步骤106。相反,在步骤112中,考虑到在步骤105和111中从第一数据流和第二数据流获得的数据,执行组合计算或处理操作。这样的组合处理操作可以是例如如关于图5所描述的处理操作。尽管如图所示的是同时执行的,但方法步骤101至105和107至111也可以连续执行,具体取决于应用的要求。
应当注意,“包括(comprising)”或“包括(including)”不排除其他要素或步骤,并且“一个(one)”或“一个(a)”不排除复数。应当进一步指出,参考以上实施例中的任何实施例所描述的特征或步骤还可以与以上所述的其他实施例的其他特征或步骤组合使用。权利要求中的附图标记不应当被视为限制。
附图标记清单
10 处理装置
11 处理单元
12 调度器模块
13 第一公共数据传输元件
14 第一输入接口
15 第二公共数据传输元件
16 第二输入接口
20 感兴趣区域
21 周围部分
30 数据流的忽略部分
40 接受参数
50 忽略参数
60 忽略前导码
70 图像宽度
80 图像高度
90图片,帧
A 矩阵
B 矩阵
95 结果子矩阵
100 方法
101 接收第一数据流
102 传输第一数据流
103指派第一数据流的各部分
104监测第一数据流
105选择第一数据流的各部分
106 执行处理操作
107 接收第二数据流
108 传输第二数据流
109指派第二数据流的各部分
110监测第二数据流
111选择第二数据流的各部分
112执行组合处理操作

Claims (15)

1.一种用于并行计算的处理装置(10),包括:
多个处理单元(11);
调度器模块(12);
第一公共数据传输元件(13);以及
第一输入接口(14);
其中,所述第一输入接口(14)被配置为接收连续的第一数据流并经由所述第一公共数据传输元件(13)传输所述第一数据流;
其中,所述处理单元(11)中的每一个均连接到所述第一公共数据传输元件(13),并被配置为接收经由所述第一公共数据传输元件(13)传输的数据;
其中,所述调度器模块(12)与所述处理单元(11)中的每一个进行电子通信;
其中,所述调度器模块(12)被配置为将所述第一数据流的各部分指派给所述处理单元(11)中的每一个以便同时处理;并且
其中,所述处理单元(11)中的每一个被配置为:监测完整的第一数据流,选择由所述调度器模块(12)指派的所述第一数据流的各部分,并对所述第一数据流的所选定部分执行处理操作。
2.如权利要求1所述的处理装置(10),其中,所述调度器模块(12)被配置为通过将指示所述第一数据流的各部分的参数传送给所述处理单元(11)中的每一个来将所述第一数据流的各部分指派给所述处理单元(11)。
3.如权利要求2所述的处理装置(10),其中,所述参数包括忽略前导码;并且
其中,所述忽略前导码指示在数据流的开头处要由所述忽略前导码所传送到的所述处理单元(11)忽略的数据量。
4.如权利要求2或3所述的处理装置(10),其中,所述参数包括接受参数和忽略参数;
其中,所述接受参数指示要由所述接受参数所传送到的所述处理单元(11)选择的数据量;并且
其中,所述忽略参数指示要由所述忽略参数所传送到的所述处理单元(11)忽略的数据量。
5.如权利要求4所述的处理装置(10),其中,所述处理单元(11)中的每一个被配置为周期性地访问由所述接受参数定义的数据,并周期性地忽略由所述忽略参数定义的数据。
6.如前述权利要求中任一项所述的处理装置(10),其中,所述处理单元(11)被配置为处理图像数据。
7.如前述权利要求中任一项所述的处理装置(10),其中,所述处理单元(11)被配置为额外选择至少两个处理单元(11)的所述第一数据流的所指派部分的周围部分,使得至少两个处理单元(11)的感兴趣区域相互重叠。
8.如前述权利要求中任一项所述的处理装置(10),进一步包括第二公共数据传输元件(15)和第二输入接口(16);
其中,所述第二输入接口(16)被配置为接收连续的第二数据流并经由所述第二公共数据传输元件(15)传输所述第二数据流;
其中,所述处理单元(11)中的每一个均连接到所述第二公共数据传输元件(15),并被配置为接收经由所述第二公共数据传输元件(15)传输的数据;
其中,所述调度器模块(12)被配置为将所述第二数据流的各部分指派给所述处理单元(11)以便同时处理;并且
其中,所述处理单元(11)中的每一个被配置为对所述第一数据流和所述第二数据流的各部分执行组合处理操作。
9.一种用于向多个处理单元(11)分配数据的方法(100),所述方法包括:
接收(101)连续的第一数据流;
经由第一公共数据传输元件(13)传输(102)所述第一数据流;
将所述第一数据流的各部分指派(103)给所述处理单元(11);
由所述处理单元(11)中的每一个监测(104)完整的第一数据流;
由所述处理单元(11)中的每一个选择(105)指派给所述处理单元(11)的所述第一数据流的各部分;以及
由所述处理单元(11)对所述第一数据流的所选定部分执行(106)处理操作。
10.如权利要求9所述的方法(100),其中,通过将指示所述第一数据流的各部分的参数传送给所述处理单元(11)中的每一个来将所述第一数据流的各部分指派(103)给所述处理单元(11)。
11.如权利要求10所述的方法(100),其中,所述参数包括忽略前导码;并且
其中,所述忽略前导码指示在数据流的开头处要由所述忽略前导码所传送到的所述处理单元(11)忽略的数据量。
12.如权利要求10或11所述的方法(100),其中,所述参数包括接受参数和忽略参数;
其中,所述接受参数指示要由所述接受参数所传送到的所述处理单元(11)访问的数据量;并且
其中,所述忽略参数指示要由所述忽略参数所传送到的所述处理单元(11)忽略的数据量。
13.如权利要求12所述的方法(100),其中,选择(105)所述第一数据流的所指派部分包括周期性地访问由周期性接受参数定义的数据和周期性地忽略由周期性忽略参数定义的数据。
14.如权利要求9至13中任一项所述的方法(100),其中,由所述处理单元(11)中的每一个对所述第一数据流的所指派部分进行的所述选择(105)包括由至少两个处理单元(11)额外选择(105)所指派部分的周围部分,使得至少这两个处理单元(11)的感兴趣区域相互重叠。
15.如前述权利要求中任一项所述的方法(100),进一步包括:
通过第二输入接口接收(107)连续的第二数据流;
经由第二公共数据传输元件(15)传输(108)所述第二数据流;
将所述第二数据流的各部分指派(109)给所述处理单元(11);
由所述处理单元(11)中的每一个监测(110)完整的第二数据流;
由所述处理单元(11)中的每一个选择(111)指派给所述处理单元(11)的所述第二数据流的各部分;以及
由所述处理单元(11)对所述第一数据流和所述第二数据流的所选定部分执行(112)组合处理操作。
CN202211639151.2A 2021-12-20 2022-12-20 处理装置和用于向多个处理单元分配数据的方法 Pending CN116418827A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP21215997.4 2021-12-20
EP21215997.4A EP4198724A1 (en) 2021-12-20 2021-12-20 Processing device and method for distributing data to a plurality of processing units

Publications (1)

Publication Number Publication Date
CN116418827A true CN116418827A (zh) 2023-07-11

Family

ID=78957474

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211639151.2A Pending CN116418827A (zh) 2021-12-20 2022-12-20 处理装置和用于向多个处理单元分配数据的方法

Country Status (3)

Country Link
US (1) US20230195518A1 (zh)
EP (1) EP4198724A1 (zh)
CN (1) CN116418827A (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6477562B2 (en) * 1998-12-16 2002-11-05 Clearwater Networks, Inc. Prioritized instruction scheduling for multi-streaming processors
US10269088B2 (en) * 2017-04-21 2019-04-23 Intel Corporation Dynamic thread execution arbitration
US11367160B2 (en) * 2018-08-02 2022-06-21 Nvidia Corporation Simultaneous compute and graphics scheduling

Also Published As

Publication number Publication date
EP4198724A1 (en) 2023-06-21
US20230195518A1 (en) 2023-06-22

Similar Documents

Publication Publication Date Title
EP1971959A2 (en) Method and apparatus for processing sub-blocks of multimedia data in parallel processing systems
US20060161720A1 (en) Image data transmission method and system with DMAC
CN112000454A (zh) 一种多媒体数据的处理方法及设备
US11671678B2 (en) Method and device, equipment, and storage medium for data processing
CN112905530A (zh) 片上架构、池化计算加速器阵列、单元以及控制方法
US7773817B2 (en) JPEG image processing circuit
CN114697619A (zh) 一种工业智能视频监控系统及多视频流自适应配置方法
CN108540689B (zh) 图像信号处理器、应用处理器及移动装置
CN116418827A (zh) 处理装置和用于向多个处理单元分配数据的方法
CN111404842B (zh) 数据传输方法、装置及计算机存储介质
CN114760529B (zh) 多通道视频数据的传输方法、装置、计算机设备
CN110704201A (zh) 多媒体数据共享方法及终端设备
CN116018799B (zh) 一种图像传输方法及装置
EP1532582A1 (en) Method and apparatus for image data processing using image strips and circular addressing arrangement
CN105306958B (zh) 一种基于ip的传输流码率平滑处理的方法及装置
CN106886381B (zh) 网络型多电脑切换器
CN114724495B (zh) 图像发送方法、装置、显示控制器和显示控制系统
TW201445500A (zh) 顯示適配器控制系統、控制方法及電腦裝置
CN113518188B (zh) 一种基于摄像系统nfc动态拼接方法以及装置
CN114490465B (zh) 用于直接存储器访问的数据传输方法和装置
CN114168524B (zh) 行缓存单元、加速单元、片上系统和行缓存配置方法
CN116405555B (zh) 数据传输方法、路由节点、处理单元和片上系统
Pranjkic et al. Multi-SoC load balancing system for ADAS application
JP2000047995A (ja) 並列処理方法及び装置、並びにそれを用いた外観検査装置
KR101268204B1 (ko) 다중 프로세서 제어 시스템을 위한 효율적인 실시간 이더넷 전송 스케줄 방법 및 통신 장치

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication