CN115698952A - 可伸缩的硬件线程调度器 - Google Patents
可伸缩的硬件线程调度器 Download PDFInfo
- Publication number
- CN115698952A CN115698952A CN202180040982.5A CN202180040982A CN115698952A CN 115698952 A CN115698952 A CN 115698952A CN 202180040982 A CN202180040982 A CN 202180040982A CN 115698952 A CN115698952 A CN 115698952A
- Authority
- CN
- China
- Prior art keywords
- producer
- socket
- scheduler
- spare
- consumer
- 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
Links
- 238000012545 processing Methods 0.000 claims abstract description 40
- 230000004044 response Effects 0.000 claims abstract description 38
- 238000000034 method Methods 0.000 claims description 29
- 230000008878 coupling Effects 0.000 claims description 10
- 238000010168 coupling process Methods 0.000 claims description 10
- 238000005859 coupling reaction Methods 0.000 claims description 10
- 230000007704 transition Effects 0.000 claims description 3
- 239000000872 buffer Substances 0.000 description 44
- 238000013461 design Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 239000003990 capacitor Substances 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 238000012937 correction Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000003708 edge detection Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Abstract
一种器件包括配置为执行相应任务的硬件数据处理节点,和包括硬件任务调度器(300)的硬件线程调度器。硬件任务调度器(300)耦合到硬件数据处理节点,并且具有生产者插座(304)、消费者插座(302)和备用插座(306、307)。该备用插座被配置为响应于存储器映射寄存器(224)是第一值,提供也由生产者和消费者插座的第一插座提供的数据控制信号。该备用插座被配置为响应于存储器映射寄存器(224)是第二值,提供也由生产者和消费者插座的第二插座提供的数据控制信号。
Description
背景技术
各种系统使用硬件加速器,可选地与在可编程处理器(例如,数字信号处理器和通用处理器)上执行的软件结合,执行数据处理。与在这种处理器上执行的软件相比,硬件加速器可以更有效地执行某些操作。硬件调度器通过硬件加速器调度一线程的任务的执行。由于硬件调度器固定在硬件中这一性质,很难或不可能对设计时不知道或考虑的用例调整硬件调度器和硬件加速器。
发明内容
在一个示例中,一种器件包括配置为执行相应任务的硬件数据处理节点,和包括硬件任务调度器的硬件线程调度器。硬件任务调度器耦合到硬件数据处理节点,并且具有生产者插座、消费者插座和备用插座。备用插座被配置为响应于存储器映射寄存器是第一值,提供也由生产者和消费者插座中的第一插座提供的数据控制信号。备用插座被配置为响应于存储器映射寄存器是第二值,提供也由生产者和消费者插座中的第二插座提供的数据控制信号。
在另一个示例中,一种器件包括配置为执行相应任务的硬件数据处理节点,和包括硬件任务调度器的硬件线程调度器。硬件任务调度器耦合到硬件数据处理节点,并且具有多个生产者插座。该器件还包括备用调度器,备用调度器具有耦合到硬件任务调度器的多个生产者插座之一的消费者插座,和配置为提供来自消费者插座的数据控制信号的多个生产者插座。
在又一个示例中,一种方法包括通过在处理器上执行的调度软件,配置硬件线程调度器以执行一线程的任务。硬件线程调度器包括硬件任务调度器,硬件任务调度器耦合到配置为执行一线程任务中的一个任务的硬件数据处理节点。该方法还包括通过调度软件,配置硬件任务调度器的备用插座,以提供也在硬件任务调度器的多个生产者插座或多个消费者插座之一上提供的数据控制信号。
附图说明
为了各种示例的详细描述,现在将参考附图,其中:
图1是在一些示例中的多处理器片上系统(SOC)的方框图;
图2是在一些示例中的图1的SOC的视觉预处理加速器的方框图;
图3是在一些示例中的具有备用插座的硬件任务调度器的方框图;
图4是在一些示例中的耦合到备用调度器的硬件任务调度器的方框图;
图5是在一些示例中的耦合到一个备用调度器链的硬件任务调度器的方框图;以及
图6是在一些示例中的用于配置硬件加速器的方法的流程图。
具体实施方式
如上所述,各种系统使用硬件加速器,可选地与在可编程处理器(例如,数字信号处理器和通用处理器)上执行的软件结合,执行数据处理。在一种情况下,嵌入式安全系统,如高级驾驶员辅助系统(ADAS)在汽车中使用,以减少人为操作错误。这些系统提供各种功能,如后视面向摄像头、电子稳定性控制以及基于视觉的行人检测系统。这些系统对一个或多个摄像头捕获的图像进行计算机视觉处理,以检测一个或多个摄像头视野内的物体。视觉处理包括例如,图像处理、镜头畸变校正、噪音滤波、边缘检测、运动检测、图像缩放等。
本描述的示例通常涉及数据处理系统,该系统可以包括基于线和/或框的数据处理系统(包括执行视觉处理的ADAS)。具体地,本描述的示例包括基于框的数据处理系统,该系统具有带有一个或多个可配置备用插座的硬件任务调度器。在一些示例中,系统还包括备用调度器,备用调度器不直接地耦合到硬件处理节点并且被配置为将一个消费者插座(例如,耦合到另一个硬件任务调度器的一个生产者插座)扩展到多个生产者插座。因此,由另一个硬件任务调度器的一个生产者插座提供的数据通过备用调度器的多个生产者插座提供给多个消费者或使其可用。在一些示例中,备用调度器还被配置为复制数据(例如,从其一个消费者插座到其多个生产者插座)。这些示例在下面进行详细描述。
图1是配置为执行基于框的处理(如基于摄像头的ADAS中的计算机视觉处理)的示例多处理器片上系统(SOC)100的方框图。SOC 100包括通用处理器(GPP)102、数字信号处理器(DSP)104、视觉处理器106和经由高速互连122耦合的视觉预处理加速器(VPAC)112。如参考图2进一步描述,VPAC 112包括配置为对传入的摄像头图像执行各种预处理操作的硬件加速器。在一个示例中,视觉处理器106是一种配置用于计算机视觉处理(如梯度计算、方向分箱、直方图归一化等)的向量处理器。在一个示例中,由视觉处理器106执行的计算机视觉处理使用VPAC 112的预处理输出。GPP 102托管操作系统,并提供SOC 100的操作的总体控制,包括由VPAC 112执行的预处理任务的调度。在此示例中,DSP 104为计算机视觉处理(如物体检测和分类)提供支持。
SOC 100还包括直接存储器访问(DMA)组件108、耦合到摄像头124的摄像头捕获组件110、显示管理组件114、片上随机存取(RAM)存储器116(例如,非暂时性计算机可读介质)和各种输入/输出(I/O)外围器件120,所有这些外围器件通过互连122耦合到处理器和VPAC112。此外,在一些示例中,SOC 100包括安全组件118,该组件118包括与安全相关的功能,以便能够遵守汽车安全要求。这些功能可能包括支持数据的循环冗余校验(CRC)、用于漂移检测的时钟比较器、错误信令、窗口式看门狗定时器和SOC 100的损坏和故障自我测试。
图2是示例VPAC 112的方框图。VPAC 112包括耦合到示例硬件加速器202、204的硬件线程调度器200。硬件加速器202、204耦合到共享存储器206。为了便于解释,示出了两个硬件加速器202、204,并且其他示例包括更多或更少的加速器。硬件加速器可以是例如镜头畸变校正加速器、图像缩放加速器、噪音滤波和/或视觉特定的图像处理加速器。共享存储器206中的存储区域组可被指定为硬件加速器202、204处理的数据块的缓冲区。
硬件线程调度器200还耦合到DMA 250的两个通道。为了便于解释,示出了两个DMA通道,并且在其他示例中,硬件线程调度器耦合到更多或更少的DMA通道。在一个示例中,DMA通道被配置为移动共享存储器206和外部存储器(例如,RAM 116)之间的数据块。
硬件线程调度器200可配置以通过VPAC 112的硬件处理节点(“节点”)调度单个任务线程或多个并发任务线程的执行。线程(也称为管道)是一个或多个任务。任务是由节点执行的特定功能,并且一个节点执行单个任务。在各种示例中,节点是配置为执行单个任务的硬件加速器、配置为执行任务的硬件加速器的一部分、DMA 250的通道或在VPAC 112外部的处理器(例如,DSP 104)上实施任务的软件。此外,硬件线程调度器200包括硬件任务调度器,其中每个任务调度器以专用的方式管理节点上任务的执行。
配置为执行单个任务的硬件加速器(例如,硬件加速器202)的示例包括噪音滤波加速器和镜头畸变校正加速器。其中一部分被配置为执行任务的硬件加速器(例如,硬件加速器204)的示例是可配置以同时对两个或多个图像执行图像缩放的图像缩放加速器。因此,图像缩放加速器可以包括可以配置为执行多个并发缩放任务的多个缩放器。这种图像缩放器的一个示例在2016年4月29日提交的序列号为15/143,491的美国专利申请中描述。
在此示例中,VPAC 112包括五个节点:单个任务硬件加速器202(一个节点)、双任务硬件加速器204(两个节点)和两个DMA通道。硬件线程调度器200包括用于VPAC 112中的每个硬件加速器节点的硬件任务调度器208、210、212、用于由VPAC 112使用的DMA 250的每个通道的DMA硬件任务调度器214、216以及用于两个外部节点(例如,在外部处理器上实施的两个软件任务)的两个代理硬件任务调度器218、220。任务调度器208-220耦合到调度器横杆222,该调度器横杆222由存储器映射寄存器224中的各种存储器映射寄存器配置以链接任务调度器来创建线程。在一个示例中,调度器横杆222促进分配给线程的任务调度器之间的控制信息的通信。在一些示例中,调度器横杆222是一个完整的横杆,其中任何任务调度器可以与任何其他任务调度器链接。在其他示例中,调度器横杆222是具有更有限链接能力的部分横杆。在一些示例中,硬件线程调度器200还包括不直接耦合到硬件处理节点的备用调度器226。备用调度器226在下面进一步详细描述。
通常,硬件线程调度器200的线程调度是消费者/生产者模型。例如,线程是一组具有消费者/生产者依赖关系的任务。由任务调度器管理的任务/节点可以是消耗来自一个或多个生产者任务的数据的消费者任务、产生用于一个或多个消费者任务的数据的生产者任务、或消费者任务和生产者任务。根据关联节点的任务类型,任务调度器包括一个或多个生产者和/或消费者插座。
例如,如果任务调度器耦合到执行消耗来自一个生产者任务的数据的消费者任务的节点,则该任务调度器至少具有单个消费者插座。如果消费者任务消耗来自一个以上生产者任务的数据,则该任务调度器至少具有一个消费者插座用于每个生产者任务。
如果任务调度器耦合到执行产生用于单个消费者任务的数据的生产者任务的节点,则该任务调度器至少具有单个生产者插座。如果生产者任务产生用于一个以上消费者任务的数据,则该任务调度器至少具有一个生产者插座用于每个消费者任务。
如果任务调度器耦合到执行消费者/生产者任务的节点,则该任务调度器至少具有一个消费者插座用于产生用于消费者/生产者任务的数据的每个生产者任务,并且至少具有一个生产者插座用于消耗来自消费者/生产者任务的数据的每个消费者任务。
在VPAC 112中,为了简单起见,任务调度器208、210、212被描述为具有两个消费者插座和两个生产者插座。在其他示例中,任务调度器中的生产者和消费者插座的数量根据如上所述的耦合到任务调度器的任务/节点的消费和生产属性变化。与DMA的通道对应的每个节点执行一种消耗数据(例如,是编程为将数据从共享存储器206转移到外部存储器的消费者通道)或产生数据(例如,是编程为将数据从外部存储器(如相对于VPAC 112)转移到共享存储器206的生产者通道)的任务。DMA任务调度器216耦合到消费者通道,并包括单个消费者插座。DMA任务调度器214耦合到生产者通道,并包括单个生产者插座。
任务调度器208-220的每个插座通过两个信号(指示可消耗数据的可用性的挂起信号和指示产生的数据块已被消耗的递减信号)耦合到调度器横杆222。挂起信号在这里称为“pend(挂起)”信号,并且递减信号在这里称为“dec(递减)”信号。当数据可用时,任务调度器通过生产者插座将挂起信号发送到耦合到生产者插座的消费者插座,并且当生产的数据已被消耗时,通过生产者插座从耦合的消费者插座接收递减信号。当生产的数据已被消耗时,任务调度器通过消费者插座将递减信号发送到耦合到消费者插座的生产者插座,并且当数据可用于消耗时,从耦合的生产者插座在消费者插座接收挂起信号。在一些示例中,备用插座,如备用生产者插座或备用消费者插座,被配置为复制对包含数据(例如,在共享存储器206中)的缓冲区的数据控制。在一个示例中,对包含示例数据行的缓冲区的控制在生产者插座和配置用于该缓冲区的备用生产者插座之间进行分支。因此,缓冲区中的数据行不会被覆盖,直到生产者插座和备用生产者插座从生产者插座和备用生产者插座耦合到的消费者插座接收递减信号。在另一个示例中,对包含示例数据行的缓冲区的控制在消费者插座和配置用于该缓冲区的备用消费者插座之间进行分支。因此,响应于缓冲区的数据行被消耗(例如,通过相关的硬件加速器),消费者插座和备用消费者插座中的每个将递减信号发送到消费者插座和备用消费者插座耦合到的生产者插座。
形成线程的任务调度器的生产者和消费者插座之间的挂起信号和递减信号的连接由调度器横杆222控制。在一些示例中,通过在调度器横杆222中设置多路复用器的控制信号值,在GPP 102上执行的调度软件配置要在VPAC 112上执行的一线程的任务,以为所需的任务“连接”任务调度器的挂起和递减信号。
在一些示例中,调度器横杆222包括用于每个消费者插座的传入挂起信号的多路复用器和用于每个生产者插座的传入递减信号的多路复用器。例如,如果任务调度器208-220包括M个消费者插座和N个生产者插座,则调度器横杆222包括M+N个多路复用器。耦合到生产者插座的传入递减信号的多路复用器包括耦合到传入的递减信号的单个输出和M个输入,一个输入用于每个消费者插座的每个出局递减信号。耦合到消费者插座的传入挂起信号的多路复用器包括耦合到传入的挂起信号的单个输出和N个输入,一个输入用于每个生产者插座的每个出局挂起信号。每个多路复用器耦合到可以被编程为选择多路复用器输入之一作为输出的MMR 224中的对应控制寄存器。
任务调度器208-220中的每个通过各种信号耦合到相应节点。这些信号可以是例如,节点初始化信号、初始化完成确认信号、任务开始信号、任务完成信号和处理结束信号。处理结束信号是有用的,因为一个任务可能被多次执行来处理传入的数据(例如,一个任务可能被多次执行来处理一个视频数据块的不同子集)。节点/任务知道所有数据何时已经被处理,并使用处理结束信号来指示所有数据已被处理,并且不需要再次执行任务。每当任务调度器接收到任务完成信号时,任务调度器将再次启动任务,除非接收到处理结束信号。
MMR 224被配置成为硬件线程调度器200存储各种控制和配置参数。参数包括用于配置和控制线程的参数,以及用于配置和控制任务调度器208-220、一个或多个备用调度器226和任务调度器208-220的可配置备用插座的参数。在一些示例中,MMR 224包括用于可以在VPAC 112上同时执行的最大数量的线程中每个的线程控制寄存器。每个线程控制寄存器对应于特定线程数量,例如,0、1……n-1,其中n是最大线程数。线程控制寄存器包括可以用于激活或停用对应线程的启用/禁用位。此外,MMR 224包括用于每个任务调度器208-220的任务调度器控制寄存器。任务调度器控制寄存器包括可以用于激活或停用对应任务调度器的启用/禁用位,以及标识任务调度器被分配到的线程数的字段。
在一些示例中,MMR 224还包括用于每个消费者插座的消费者控制寄存器和用于每个生产者插座的生产者控制寄存器。消费者控制寄存器包括用于激活或停用对应消费者插座的启用/禁用位,以及用于耦合到消费者插座的多路复用器的生产者选定值。用于代理任务调度器中的消费者插座的消费者控制寄存器还包括“挂起”位,该挂起位由外部任务设定以指示数据何时可用于消耗。
生产者控制寄存器包括用于激活或停用对应生产者插座的启用/禁用位,以及用于耦合到生产者插座的多路复用器的消费者选定值。用于代理任务调度器中的生产者插座的生产者控制寄存器还包括“递减”位,该递减位由外部任务设定以指示已经消耗了数据块。
MMR 224还包括用于每个生产者插座的生产者缓冲控制寄存器和生产者计数寄存器。生产者缓冲控制寄存器包括缓冲深度字段,该字段指定生产者可以拥有待消耗的数据块的最大数量,并且生产者计数寄存器包括计数字段,该字段保存生产者当前拥有待消耗的数据块的数量的计数。缓冲深度字段的值取决于为存储产生的数据块分配的共享存储器量和数据块的大小。最大缓冲深度和计数的组合可以用于防止缓冲区溢出和下溢,因为数据的生产和消耗可能是异步的。
在本描述的示例中,在GPP 102上执行的调度软件通过在任务调度器208-220的寄存器中写入适当的值以包括在线程中来配置要在VPAC 112上执行的线程。在这些示例中,调度软件写入用于任务的任务调度器208-220的插座的适当的生产者选定值和消费者选定值,以包括在线程中来同步任务并启用插座。调度软件还适当地在线程中的每个任务调度器的任务调度器控制寄存器中设定启用/禁用位,以启用每个任务调度器。在这些示例中,调度软件还为该线程选择线程数,并在该线程中的每个任务调度器的任务调度器寄存器中写入该线程数。一旦一个线程被配置,调度软件就被配置为通过适当地在对应线程控制寄存器中设定启用/禁用位,启动该线程的执行以激活该线程。
除了上述,在本描述的示例中,调度软件配置MMR 224,以使硬件任务调度器的备用生产者插座为由相关硬件加速器产生的缓冲区(例如,除了配置用于缓冲区来启用缓冲区中的复制或窃取数据的生产者插座以外)提供附加数据控制(例如,发送挂起信号和/或接收递减信号)。在其他示例中,调度软件配置MMR 224,以使硬件任务调度器的备用消费者插座为由相关硬件调度器消耗的缓冲区(例如,除了配置用于缓冲区的消费者插座以外)提供附加数据控制(例如,发送递减信号和/或接收挂起信号)。可配置的备用插座使用于硬件任务调度器的附加可编程连接性能够处理在硬件设计时未被考虑到的各种用例。在一些示例中,调度软件还配置MMR 224,以指定在硬件任务调度器生产者插座和备用调度器的消费者插座之间的耦合。与硬件任务调度器不同,备用调度器不直接地耦合到硬件处理节点。在其他示例中,可以类似地配置附加备用调度器。在这些示例中,任意数据流图可以由调度软件配置,以解决在硬件设计时间之后确定的用例。此外,在硬件设计方面,当与在硬件任务调度器本身中实施附加生产者插座对比时,实施一个备用调度器链来扩展(例如,扩展到附加消费者任务)在硬件任务调度器的生产者插座处产生的数据的成本可能更低。在其他示例中,作为配置MMR 224以使备用生产者或消费者插座提供附加数据控制,或以指定与备用调度器的耦合的替代方案,这种配置可以通过调度软件或其他编程(例如,通过固件或硬件)实现,以绑定一个或多个配置寄存器值来实现备用生产者插座、备用消费者插座和/或备用调度器的所需配置。
在图2的示例中,硬件任务调度器208、210、212被示出并描述为每个具有两个消费者插座和两个生产者插座。然而,如上所述,在其他示例中,硬件任务调度器包括不同数量的消费者和/或生产者插座。此外,硬件任务调度器通常被配置为处理各种输入/输出场景,以及/或者消费者和/或生产者插座的可能组合或排列。
在一种情况下,为了解释的目的,硬件任务调度器耦合到视觉成像子系统(VISS)硬件加速器。此调度器被称为VISS调度器,并且该加速器被称为VISS加速器。VISS加速器被配置为消耗或处理来自多达三个输入源(例如,原始图像传感器的三次曝光)的数据,以响应于消耗的数据生成并提供六个输出平面(例如,Luma-Y 12-位(Y12)、Chroma-UV 12-位(UV12)、Luma-Y 8-位(Y8)、Chroma-UV 8-位(UV8)、Saturation-S 8-位(S8)、Statistics(H3A)输出)。此外,在此示例中,VISS调度器被配置为处理32个场景,或数据输入和输出组合的排列。因此,如在硬件中实施的VISS调度器实际上需要96个消费者插座(例如,3个输入*32个场景)和192个生产者插座(例如,6个输出*32场景)。
然而,在上述情况中,VISS调度器限于消耗由三个生产者节点产生的数据和产生到六个消费者节点的数据。因此,能够由线程调度器实施的可能的图限于硬件设计时已知的那些用例。此外,如上所述,由于插座的数量与多生产者和多消费者的可能场景的数量成比例,在硬件设计时“过大”硬件任务调度器的消费者和/或生产者插座的数量是昂贵的。
为了解决上述问题,本描述的示例包括提供有附加的或备用的生产者插座的硬件任务调度器,该附加的或备用的生产者插座可配置以便为缓冲区提供附加数据控制,其中数据控制还由另一个生产者插座提供。本描述的其他示例包括提供有附加的或备用的消费者插座的硬件任务调度器,该附加的或备用的消费者插座可配置以便为缓冲区提供附加数据控制,其中数据控制还由另一个消费者插座提供。
例如,备用插座是备用生产者插座,备用生产者插座响应于具有第一值的MMR224,为第一缓冲区提供数据控制,其中数据控制还由硬件任务调度器的第一生产者插座提供。继续这个示例,备用生产者插座为第二缓冲区提供数据控制,其中数据控制还响应于具有第二值的MMR 224由硬件任务调度器的第二生产者插座提供。因此,备用生产者插座启用了用于硬件任务调度器的附加可编程连接性,如以处理开发后的用例图,或在硬件设计时未考虑到的用例。例如,硬件任务调度器被配置为从缓冲区产生数据到附加的消费者任务,而使用最初设计的一组生产者插座将是不可能的。
在一些示例中,硬件任务调度器被提供有如上所述可由MMR 224配置的多个备用生产者插座。例如,响应于具有第一值的第一MMR 224,第一备用生产者插座被配置成为缓冲区提供数据控制,其中数据控制还由硬件任务调度器的第一生产者插座(例如,Y12)提供。响应于具有第二值的第一MMR 224,第一备用插座被配置成为缓冲区提供数据控制,其中数据控制还由第二生产者插座(例如,UV12)提供。第二备用生产者插座发挥类似作用。例如,响应于具有第一值的第二MMR 224,第二备用生产者插座被配置成为缓冲区提供数据控制,其中数据控制还由硬件任务调度器的第一生产者插座(例如,Y12)提供。响应于具有第二值的第二MMR 224,第二备用生产者插座被配置成为缓冲区提供数据控制,其中数据控制还由第二生产者插座(例如,UV12)提供。
在另一个示例中,备用插座是使硬件任务调度器能够从附加生产者任务(或从多生产者任务)接受数据的备用消费者插座。继续上述VISS示例,备用消费者插座使VISS调度器能够消耗或处理来自附加的第四输入源(例如,附加的DMA通道或附加的生产者任务)的数据。备用消费者插座还使VISS调度器能够消耗或处理来自多生产者任务(如产生两个此类输入源(例如,原始图像传感器的曝光)的任务)的数据。因此,备用消费者插座启用用于硬件任务调度器的附加可编程连接性,如以处理开发后的用例图,或在硬件设计时未考虑到的用例。
例如,硬件任务调度器被配置为消耗来自附加生产者任务的数据,而使用最初设计的一组生产者插座将是不可能的。此外,在一些示例中,硬件任务调度器被提供有多个备用消费者插座。在这些示例中,硬件加速器(例如,VISS加速器)可以本身是软件可编程的,以利用由备用消费者插座提供的附加输入。例如,VISS加速器最初被配置成处理原始图像传感器的三次曝光,但是是软件可编程的以处理附加输入,如第四次曝光(例如,来自附加DMA通道)。在这些示例中,用于备用消费者插座的此类附加输入的生产者由备用消费者MMR224指定。例如,响应于具有第一值的备用消费者MMR 224,备用消费者插座消耗来自第一生产者的数据。响应于具有第二值的备用消费者MMR 224,备用消费者插座消耗来自第二生产者的数据。
图3是在一些示例中的硬件任务调度器300(如上面描述的VISS调度器)的方框图。如上所述,相关的硬件加速器(例如,VISS加速器)被配置成消耗或处理来自三个输入源的数据,以生成并提供六个输出(例如,Y12、UV12、Y8、UV8、S8、H3A输出)。在此示例中,硬件任务调度器300被配置成耦合到一个执行消费者/生产者任务的节点(例如,VISS加速器),并且因此硬件任务调度器300包括消费者插座302和生产者插座304。为了简便起见,硬件任务调度器300被示出包括三个消费者插座302和六个生产者插座304。如上所述,消费者插座302和生产者插座304的实际数量是通过将输入数量乘以硬件任务调度器300被配置为处理的可能场景的数量来确定的。
在一些示例中,硬件任务调度器300还包括可配置的备用生产者插座306和/或可配置的备用消费者插座307。MMR 224指定数据缓冲区之一,其中备用生产者插座306和/或备用消费者插座307为该缓冲区提供数据控制。例如,具有第一值的MMR 224使备用生产者插座306为Y12缓冲区/输出提供数据控制(例如,发送挂起信号和/或接收递减信号),而具有第二值的MMR 224使备用生产者插座306为UV12缓冲区/输出提供数据控制等。类似地,备用消费者插座307响应于具有第一值的MMR 224为第一缓冲区提供数据控制(例如,发送递减信号和/或接收挂起信号),并且响应于具有第二值的MMR 224为第二缓冲区提供数据控制。
因此,在硬件设计时,硬件任务调度器300被配置成在其消费者插座302处从外部存储器(例如,经由DMA 250)接收三个输入,并且在其生产者插座304处产生六个输出到外部存储器(例如,经由DMA 250)。然而,在另外包括在Y12数据输出上执行缩放的硬件设计时间之后,确定附加的用例。因此,在GPP 102上执行的调度软件配置MMR 224,以使用于Y12缓冲区/输出的数据控制设置在备用插座306上,这被提供给多缩放器或调整大小的加速器(其调度器是MSC-SCH)以在Y12数据输出上执行缩放(除了产生六个原始数据输出到DMA250以外)。因此,在其中一个消费者(例如,DMA)在比另一个消费者(例如,MSC-SCH)更短的时间内消耗了Y12数据的示例中,HWA调度器300可能不会覆盖缓冲区,直到在Y12生产者插座和备用生产者插座306处都接收到递减信号。因此,备用生产者插座306启用用于硬件任务调度器300的附加可编程连接性,以处理在硬件设计时未考虑到的各种用例。在其他示例中,备用消费者插座307类似地启用用于硬件任务调度器300的附加可编程连接性,以处理在硬件设计时未考虑到的各种用例。
如上所述,在一些示例中,硬件任务调度器300被提供有多个备用生产者插座306,每个插座306可由MMR 224配置来为缓冲区提供还由另一个生产者插座提供的数据控制。例如,在GPP 102上执行的调度软件配置MMR 224,以使用于Y12缓冲区/输出的数据控制设置在第一备用插座306上,该数据控制被提供给MSC-SCH。调度软件还配置MMR 224,以使用于Y12缓冲区/输出或另一个缓冲区/输出的数据控制设置在第二备用插座上,该数据控制被提供给另一个消费者任务。因此,多备用生产者插座306启用用于硬件任务调度器300的进一步可编程连接性,以处理在硬件设计时未考虑到的各种用例。
在一些示例中,备用生产者插座306的配置在SOC 100的操作期间通过调度软件修改。例如,调度软件在第一时间段期间将MMR 224配置为第一值(例如,以使用于Y12缓冲区/输出的数据控制设置在备用插座306上),且然后在第二时间段期间将MMR 224更新为第二值。因此,备用插座306从在第一时间段期间为Y12缓冲区/输出提供数据控制过渡到在第二时间段期间为另一个缓冲区/输出(例如,UV12)提供数据控制。
图4是耦合到备用调度器400的图3的硬件任务调度器300的方框图,在一些示例中,该备用调度器400类似于上面描述的备用调度器226。如上所述,备用调度器400不直接地耦合到硬件处理节点,如硬件加速器。备用调度器400具有消费者插座402和多个生产者插座404。虽然未在图4中示出,但是备用调度器400还可以包括可配置的备用插座,如上面描述的那些。备用调度器400被配置为通过其消费者插座402将数据控制提供给其多个生产者插座404(例如,发送挂起信号),并且从其生产者插座404将数据控制提供给其消费者插座402(例如,接收的递减信号)。在此示例中,备用调度器400包括两个生产者插座404,尽管在其他示例中备用调度器400包括两个以上生产者插座404。此外,虽然备用调度器400被示出具有单个消费者插座402,并且因此实施一个至多个扩展方案,但是在其他示例中,备用调度器400包括一个以上消费者插座402并实施一个至多个扩展方案的组合(例如,两个消费者插座402和四个生产者插座404来实施第一和第二一个至多个扩展方案)。
在另一个示例中,另一个备用调度器410也不直接地耦合到硬件处理节点,如硬件加速器。备用调度器410具有多个消费者插座412和生产者插座414。虽然未在图4中示出,但是备用调度器410还可以包括可配置的备用插座,如上面描述的那些。备用调度器410被配置为通过其消费者插座412将数据控制提供给其生产者插座414(例如,接收挂起信号),并且从其生产者插座414将数据控制提供给其消费者插座404(例如,发送递减信号)。
如相对于图3描述,硬件任务调度器300的备用插座306(例如经由MMR224值)被配置成通过备用生产者插座306为Y12缓冲区/输出提供数据控制。在图4的示例中,在包括从备用插座306将数据控制提供给一个以上消耗节点的硬件设计时间之后,确定附加的用例。例如,除了将Y12数据输出提供给多缩放器或调整大小的加速器(MSC-SCH)以外,附加的用例包括使用镜头畸变校正(LDC)加速器(或没有特定列举的另一个加速器),以对Y12数据执行镜头畸变校正。
因此,在GPP 102上执行调度软件配置MMR 224,以使用于Y12缓冲区/输出的数据控制在备用生产者插座306上提供。此外,备用调度器400的消费者插座402被配置为接收在备用插座306处产生的数据控制信号(例如,挂起信号)。备用调度器400的生产者插座404被配置成复制在消费者插座402处接收的数据控制信号。生产者插座404之一将信号(和因此Y12数据连接)提供给MSC-SCH,而生产者插座404中的另一个将信号(和因此Y12数据连接)提供给LDC。因此,如上所述,备用生产者插座306启用了用于硬件任务调度器300的附加可编程连接性,以处理未在硬件设计时考虑到的各种用例。此外,在一些示例中,备用调度器400启用了在其消费者插座402处接收的数据到其生产者插座404的附加提供或复制。在硬件设计方面,当与在硬件任务调度器300本身中实施附加生产者插座对比时,实施备用调度器400来复制在硬件任务调度器300的生产者插座处产生的数据的成本可能更低。
图5是耦合到第一级备用调度器400的图3的硬件任务调度器300的方框图,在一些示例中,该第一级备用调度器400被链接到附加的第二级备用调度器500。与备用调度器400类似,备用调度器500未耦合到硬件处理节点,如硬件加速器。备用调度器500还包括消费者插座和多个生产者插座,并且其作用类似于如上所述的备用调度器400。在此示例中,备用调度器400包括三个生产者插座404,尽管在其他示例中备用调度器400包括不同数量的生产者插座404。
在图5的示例中,备用调度器400、500被链接在一起,以促进任意数据流图的产生。例如,在GPP 102上执行的调度软件配置MMR 224,以指定在硬件任务调度器300生产者插座304或备用插座306、307和第一级备用调度器400之间的所需耦合。调度软件还配置MMR224,以指定在第一级备用调度器400生产者插座404和第二级备用调度器500之间的所需耦合。在一些示例中,第二级备用调度器500产生要由硬件节点消耗的数据。在另一个示例中,第二级备用调度器500提供用于分布的数据可用性的指示(例如,通过提供如上所述的挂起/递减信号),如提供给另一个硬件加速器。在其他示例中,第二级备用调度器500产生数据到附加级别的备用调度器,以进一步复制数据或数据可用性的指示(例如,通过提供挂起/递减信号)。
在这些示例中,任意数据流图可通过调度软件配置,以解决在硬件设计的时间之后确定的用例。此外,在硬件设计方面,当与在硬件任务调度器300本身中实施附加生产者插座对比时,实施备用调度器400、500的链来复制或扩展数据控制或在硬件任务调度器300的生产者插座处产生的数据可用性的指示的成本可能更低。
在一些示例中,备用调度器400、500的配置通过调度软件在SOC 100的操作期间修改。例如,调度软件配置MMR 224,以指定在第一时间段期间在硬件任务调度器300生产者插座304或备用插座306和第一级备用调度器400之间(和/或在第一级备用调度器400生产者插座404和第二级备用调度器500之间)的第一所需耦合。然后,调度软件更新MMR 224,以指定在第二时间段期间在硬件任务调度器300生产者插座304或备用插座306和第一级备用调度器400之间(和/或在第一级备用调度器400生产者插座404和第二级备用调度器500之间)的第二所需耦合。因此,在硬件任务调度器300、第一级备用调度器400和第二级备用调度器500之间的耦合被从第一时间段更新为第二时间段。
图6是在一些示例中配置备用插座(例如,上面描述的备用插座306)和备用调度器(例如,上面描述的备用调度器400、500)的方法600的流程图。在一些示例中,方法600包括通过调度软件(如上面描述的和由GPP 102执行的那个)执行的步骤。
方法600在方框602中通过配置硬件线程调度器来执行一线程的任务开始。具体地,硬件线程调度器包括如上所述耦合到硬件数据处理节点的硬件任务调度器。硬件数据处理节点被配置为执行该线程中的一个任务。
该方法在方框604中通过配置硬件任务调度器的备用插座来提供也在硬件任务调度器的多个生产者插座或多个消费者插座之一上提供的数据控制信号(例如,挂起信号和递减信号)继续。例如,备用插座是备用生产者插座,备用生产者插座响应于具有第一值的MMR 224,提供也由硬件任务调度器的第一生产者插座提供的数据控制信号。继续此示例,备用生产者插座响应于具有第二值的MMR 224,提供也由硬件任务调度器的第二生产者插座提供的数据控制信号。因此,备用插座启用用于硬件任务调度器的附加可编程连接性,如以处理开发后的用例图,或未在硬件设计时考虑到的用例。例如,硬件任务调度器被配置为产生数据到附加消费者任务,而使用最初设计的一组生产者插座将是不可能的。
术语“耦合”在整个说明书中使用。这个术语可以涵盖使与本描述一致的功能关系成为可能的连接、通信或信号路径。例如,如果器件A产生控制器件B执行操作的信号,则在第一示例中器件A耦合到器件B,或者在第二示例中,如果介入组件C没有实质性地改变器件A和器件B之间的功能关系,使得器件B由器件A通过由器件A产生的控制信号控制,则器件A通过介入组件C耦合到器件B。
“被配置成”执行某项任务或功能的器件可以在由制造商制造时被配置(例如,被编程和/或硬连线),以执行该项功能,且/或可以在制造后被用户可配置(或重新配置),以执行该项功能和/或其他附加或替代的功能。该配置可以是通过器件的固件和/或软件编程,通过器件的硬件组件和互连的构造和/或布局,或它们的组合。
本文描述为包括某些组件的电路或器件可以被改为适于耦合到这些组件,以形成所描述的电路或器件。例如,描述为包括一个或多个半导体元件(例如,晶体管)、一个或多个无源元件(例如,电阻器、电容器和/或电感器)和/或一个或多个源(如电压源和/或电流源)的结构可以只包括单个物理器件(例如,半导体管芯和/或集成电路(IC)封装)内的半导体元件,并且可适于耦合到至少部分无源元件和/或各个源,以在制造时或在制造(例如由终端用户和/或第三方)的时间之后形成所描述的结构。
虽然本文可以将某些组件描述为某种特定的工艺技术,但是这些组件可以被交换为其他工艺技术的组件。本文描述的电路可重新配置以包括所替换的组件,以提供至少部分与组件替换之前可用的功能类似的功能。除非另有说明,显示为电阻器的组件通常表示串联和/或并联耦合的任何一个或多个元件,以提供由所示的电阻器表示的阻抗量。例如,本文所示和所述为单个组件的电阻器或电容器可以是分别在相同的节点之间并联耦合的多个电阻器或电容器。例如,本文所示和所述为单个组件的电阻器或电容器可以是分别在与单个电阻器或电容器相同的两个节点之间串联耦合的多个电阻器或电容器。
在前面的描述中,“地电压电位”一词的使用包括底盘接地、地球接地、浮动接地、虚拟接地、数字接地、公共接地和/或任何其他形式的可用于或可适于本描述的教导的接地连接。除非另有说明,在一个值之前的“大约”、“近似地”或“基本上”意味着所述值的+/-10%。在所附权利要求的范围内修改在所描述的示例中是可能的,并且其他示例也是可能的。
Claims (20)
1.一种器件,所述器件包括:
配置为执行相应任务的硬件数据处理节点;和
包括硬件任务调度器的硬件线程调度器,所述硬件任务调度器耦合到所述硬件数据处理节点并且具有生产者插座、消费者插座和备用插座;
其中所述备用插座被配置为响应于存储器映射寄存器是第一值,提供也由所述生产者插座和所述消费者插座的第一插座提供的数据控制信号;以及
其中所述备用插座被配置为响应于所述存储器映射寄存器是第二值,提供也由所述生产者插座和所述消费者插座的第二插座提供的数据控制信号。
2.根据权利要求1所述的器件,其中:
所述生产者插座是多个生产者插座之一,并且所述备用插座是备用生产者插座;
所述备用生产者插座被配置为响应于所述存储器映射寄存器是第一值,提供也由所述多个生产者插座中的第一生产者插座提供的数据控制信号;以及
所述备用生产者插座被配置为响应于所述存储器映射寄存器是第二值,提供也由所述多个生产者插座中的第二生产者插座提供的数据控制信号。
3.根据权利要求2所述的器件,其中:
所述存储器映射寄存器是第一存储器映射寄存器,并且所述硬件任务调度器是第一硬件任务调度器;
所述消费者插座是多个消费者插座之一,并且所述第一硬件任务调度器包括备用消费者插座;
所述备用消费者插座被配置为响应于第二存储器映射寄存器是第三值向第二硬件任务调度器的生产者插座提供数据控制信号,并响应于第二存储器映射寄存器是第三值从第二硬件任务调度器的生产者插座接收数据控制信号;以及
所述备用消费者插座被配置为响应于所述第二存储器映射寄存器是第四值向第三硬件任务调度器的生产者插座提供数据控制信号,并响应于所述第二存储器映射寄存器是第四值从第三硬件任务调度器的生产者插座接收数据控制信号。
4.根据权利要求2所述的器件,其中:
所述备用生产者插座是第一备用生产者插座,并且所述存储器映射寄存器是第一存储器映射寄存器;
所述硬件任务调度器包括第二备用生产者插座;
所述第二备用生产者插座被配置为响应于第二存储器映射寄存器是第三值,提供也在所述第一生产者插座上提供的数据控制信号;以及
所述第二备用生产者插座被配置为响应于所述第二存储器映射寄存器是第四值,提供也在所述第二生产者插座上提供的数据控制信号。
5.根据权利要求1所述的器件,其中所述备用插座被配置为响应于将所述存储器映射寄存器从所述第一值更新为所述第二值,从在所述第一生产者插座上提供的复制数据过渡到在所述第二生产者插座上提供的复制数据。
6.根据权利要求1所述的器件,所述器件还包括备用调度器,所述备用调度器具有:
消费者插座,其耦合到所述硬件任务调度器的所述多个生产者插座之一;和
多个生产者插座,其被配置为提供从所述消费者插座复制的数据。
7.根据权利要求6所述的器件,其中所述备用调度器的所述消费者插座耦合到所述备用生产者插座。
8.一种器件,所述器件包括:
配置为执行相应任务的硬件数据处理节点;
包括硬件任务调度器的硬件线程调度器,所述硬件任务调度器耦合到所述硬件数据处理节点并且具有多个生产者插座;和
备用调度器,其具有:
消费者插座,其耦合到所述硬件任务调度器的所述多个生产者插座之一;和
多个生产者插座,其被配置为提供来自所述消费者插座的数据控制信号。
9.根据权利要求8所述的器件,其中所述备用调度器不直接地耦合到硬件数据处理节点。
10.根据权利要求8所述的器件,其中所述备用调度器是第一级备用调度器,并且所述器件还包括:
第二级备用调度器,其具有:
消费者插座,其耦合到所述第一级备用调度器的所述多个生产者插座之一;和
多个生产者插座,其被配置为提供来自所述消费者插座的数据控制信号。
11.根据权利要求10所述的器件,其中一个或多个存储器映射寄存器被配置为指定:
在所述第一级备用调度器的所述消费者插座和所述硬件任务调度器的所述多个生产者插座之一之间的第一耦合;和
在所述第二级备用调度器的所述消费者插座和所述第一级备用调度器的所述多个生产者插座之一之间的第二耦合。
12.根据权利要求11所述的器件,其中响应于对第一时间段和第二时间段之间的所述一个或多个存储器映射寄存器的更新,将所述耦合之一从所述第一时间段更新为所述第二时间段。
13.根据权利要求8所述的器件,其中:
所述硬件任务调度器包括备用生产者插座;
所述备用生产者插座被配置为响应于存储器映射寄存器是第一值,提供也在所述多个生产者插座中的第一生产者插座上提供的数据控制信号;以及
所述备用生产者插座被配置为响应于所述存储器映射寄存器是第二值,提供也在所述多个生产者插座中的第二生产者插座上提供的数据控制信号。
14.根据权利要求13所述的器件,其中:
所述存储器映射寄存器是第一存储器映射寄存器,并且所述硬件任务调度器是第一硬件任务调度器;
所述第一硬件任务调度器包括多个消费者插座和备用消费者插座;
所述备用消费者插座被配置为响应于第二存储器映射寄存器是第三值,从第二硬件任务调度器的生产者插座接收数据控制信号;以及
所述备用消费者插座被配置为响应于所述第二存储器映射寄存器是第四值,从第三硬件任务调度器的生产者插座接收数据控制信号。
15.一种方法,所述方法包括:
通过在处理器上执行的调度软件,配置硬件线程调度器以执行一线程的任务,其中所述硬件线程调度器包括耦合到配置为执行所述线程中的一个任务的硬件数据处理节点的硬件任务调度器;以及
通过所述调度软件,配置所述硬件任务调度器的备用插座,以提供也在所述硬件任务调度器的多个生产者插座或多个消费者插座之一上提供的数据控制信号。
16.根据权利要求15所述的方法,其中配置所述备用插座还包括将一个值写入存储器映射寄存器,所述方法还包括:
响应于所述存储器映射寄存器是第一值,向所述备用生产者插座提供也在所述多个生产者插座中的第一生产者插座上提供的数据控制信号;以及
响应于所述存储器映射寄存器是第二值,向所述备用生产者插座提供也在所述多个生产者插座中的第二生产者插座上提供的数据控制信号。
17.根据权利要求16所述的方法,所述方法还包括:
通过所述调度软件,将所述第一值写入所述存储器映射寄存器;以及
通过所述调度软件,随后将所述第二值写入所述存储器映射寄存器;
其中响应于将所述存储器映射寄存器从所述第一值更新为所述第二值,所述备用插座从提供也在所述第一生产者插座上提供的数据控制信号过渡到提供也在所述第二生产者插座上提供的数据控制信号。
18.根据权利要求15所述的方法,其中所述备用插座是第一备用插座,所述方法还包括通过所述调度软件,配置所述硬件任务调度器的第二备用插座,以提供也在所述硬件任务调度器的所述多个生产者插座或所述多个消费者插座中的另一个上提供的数据控制信号。
19.根据权利要求15所述的方法,所述方法还包括通过所述调度软件,配置备用调度器消费者插座以耦合到所述硬件任务调度器的所述多个生产者插座之一,其中所述备用调度器包括配置为提供来自所述备用调度器消费者插座的数据控制信号的多个生产者插座,并且其中所述备用调度器不直接地耦合到硬件数据处理节点。
20.根据权利要求15所述的方法,其中所述硬件任务调度器是包括多个消费者插座和备用消费者插座的第一硬件任务调度器,所述方法还包括:
通过所述调度软件,通过将一个值写入存储器映射寄存器配置所述备用消费者插座;
响应于所述存储器映射寄存器是第一值,从第二硬件任务调度器的生产者插座在所述备用消费者插座处接收数据控制信号;以及
响应于所述存储器映射寄存器是第二值,从第三硬件任务调度器的生产者插座在所述备用消费者插座处接收数据控制信号。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063011143P | 2020-04-16 | 2020-04-16 | |
US63/011,143 | 2020-04-16 | ||
US17/138,649 US11586465B2 (en) | 2020-04-16 | 2020-12-30 | Scalable hardware thread scheduler |
US17/138,649 | 2020-12-30 | ||
PCT/US2021/027443 WO2021211809A1 (en) | 2020-04-16 | 2021-04-15 | Scalable hardware thread scheduler |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115698952A true CN115698952A (zh) | 2023-02-03 |
Family
ID=78081723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180040982.5A Pending CN115698952A (zh) | 2020-04-16 | 2021-04-15 | 可伸缩的硬件线程调度器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11586465B2 (zh) |
CN (1) | CN115698952A (zh) |
WO (1) | WO2021211809A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114070657A (zh) * | 2020-08-03 | 2022-02-18 | 华为技术有限公司 | 芯片 |
CN115114003A (zh) * | 2022-07-04 | 2022-09-27 | 上海交通大学 | Gpu动态多任务可控并发执行方法及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7873817B1 (en) | 2004-10-19 | 2011-01-18 | Broadcom Corporation | High speed multi-threaded reduced instruction set computer (RISC) processor with hardware-implemented thread scheduler |
US8099582B2 (en) * | 2009-03-24 | 2012-01-17 | International Business Machines Corporation | Tracking deallocated load instructions using a dependence matrix |
US10423414B2 (en) | 2014-11-12 | 2019-09-24 | Texas Instruments Incorporated | Parallel processing in hardware accelerators communicably coupled with a processor |
US10296393B2 (en) | 2016-09-19 | 2019-05-21 | Texas Instruments Incorporated | Method for scheduling a processing device |
US10489206B2 (en) * | 2016-12-30 | 2019-11-26 | Texas Instruments Incorporated | Scheduling of concurrent block based data processing tasks on a hardware thread scheduler |
US10437590B2 (en) * | 2017-09-28 | 2019-10-08 | Intel Corporation | Inter-cluster communication of live-in register values |
-
2020
- 2020-12-30 US US17/138,649 patent/US11586465B2/en active Active
-
2021
- 2021-04-15 WO PCT/US2021/027443 patent/WO2021211809A1/en active Application Filing
- 2021-04-15 CN CN202180040982.5A patent/CN115698952A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2021211809A1 (en) | 2021-10-21 |
US11586465B2 (en) | 2023-02-21 |
US20210326174A1 (en) | 2021-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115698952A (zh) | 可伸缩的硬件线程调度器 | |
CN109690499B (zh) | 使用模式适配器的用于图像和视觉处理块的数据同步 | |
CN108334407B (zh) | 在硬件线程调度程序上调度基于并行块的数据处理任务 | |
US11171652B2 (en) | Method and apparatus for implementing configurable streaming networks | |
CN107077186B (zh) | 低功率计算成像 | |
JP2009271724A (ja) | ハードウェアエンジン制御装置 | |
US20190074836A1 (en) | Logical elements with switchable connections in a reconfigurable fabric | |
US20140152848A1 (en) | Technique for configuring a digital camera | |
US20210103465A1 (en) | Scheduling of External Block Based Data Processing Tasks on a Hardware Thread Scheduler | |
US9026697B2 (en) | Data processing apparatus | |
WO2018010520A1 (zh) | 一种芯片架构重构方法、装置和计算机可读存储介质 | |
US20140181491A1 (en) | Field-programmable module for interface bridging and input/output expansion | |
EP3232334A1 (en) | Information processing device, information processing method, information processing program, and recording medium | |
Saidani et al. | Hardware Acceleration of Video Edge Detection with Hight Level Synthesis on the Xilinx Zynq Platform | |
Cerezuela-Mora et al. | Hardware/software co-design of video processing applications on a reconfigurable platform | |
Wildermann et al. | Placing multimode streaming applications on dynamically partially reconfigurable architectures | |
JP7067869B2 (ja) | 画像処理システム、情報処理装置、情報処理方法、および情報処理プログラム | |
US7089140B1 (en) | Programmable logic device and method of testing a programmable logic device | |
US20230385114A1 (en) | Data processing pipeline | |
JP2010272876A (ja) | モジュール設計方法及び装置 | |
US8764874B2 (en) | Arrangement, method, integrated circuit and device for routing requests | |
Silva et al. | Using a tightly-coupled pipeline in dynamically reconfigurable platform FPGAs | |
JP7242235B2 (ja) | 画像処理装置および画像処理方法 | |
Avelino et al. | Partial reconfiguration exploration over P2IP architecture | |
KR20230171793A (ko) | 전자 장치 및 이의 제어 방법 |
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 |