硬件加速子系统中的数据适配的制作方法

文档序号:31462932发布日期:2022-09-08 00:01阅读:62来源:国知局
硬件加速子系统中的数据适配的制作方法

1.本描述一般来说涉及硬件加速子系统,且更特定来说,涉及硬件加速子系统中的增强型外部存储器传送及型式适配。


背景技术:

2.尽管中央处理单元(cpu)已改进以满足现代应用的需求,但计算机性能仍受到必须由cpu同时处理的大量数据的限制。硬件加速器子系统可通过将任务从计算机的中央处理单元(cpu)卸载到专门执行那些任务的硬件组件而提供改进的性能及/或功率消耗。
附图说明
3.图1是用以对从外部存储器提取的宏块执行处理任务的基于块的处理及存储子系统的实例性图式。
4.图2是用以处理从外部存储器提取的数据元素的硬件加速子系统的实例性图式。
5.图3是用以在硬件加速中实现数据聚合及型式适配的实例性硬件加速子系统的框图。
6.图4是图解说明用以生成经聚合数据元素的实例性数据元素聚合的实例性图式。
7.图5是图解说明实例性型式适配过程的实例性图式,所述实例性型式适配过程由实例性型式适配器实施以将数据块转换为行数据元素。
8.图6是图解说明用于图像、视觉及/或视频处理的实例性多消费者/多生产者硬件加速子系统的实例性用户定义图。
9.图7是图解说明实例性多消费者/多生产者硬件加速方案的实例性图式。
10.图8图解说明用以在第一信道上输出第一数据元素且在第二信道上输出第二数据元素的实例性多生产者镜头失真校正(ldc)硬件加速器。
11.图9是表示可经执行以实施图3的实例性硬件加速子系统的机器可读指令的流程图。
12.图10是经结构化以执行图9的指令来实施图3的设备的实例性处理器平台的框图。
13.图11是用以将软件(例如,与图9的实例性计算机可读指令对应的软件)分发给客户端装置(例如消费者(例如,用于许可、销售及/或使用)、零售商(例如,用于销售、转售、许可及/或分许可)及/或原始装备制造商(oem)(举例来说,用于包含在待分发给零售商及/或直接购买客户的产品中))的实例性软件分发平台的框图。
14.各图未按比例。而是,层或区域的厚度可在图式中被放大。虽然各图展示具有干净的线及边界的层及区域,但这些线及/或边界中的一些或所有线及/或边界可为理想化的。实际上,边界及/或线可为不可观察的、混合的及/或不规则的。一般来说,遍及图式及所附书面描述,将使用相同参考编号来指代相同或类似零件。如本文中所使用,除非另外陈述,否则术语“上方”描述两个部分相对于地球的关系。如果第二部分具有介于地球与第一部分之间的至少一个部分,那么第一部分位于第二部分上方。同样,如本文中所使用,当第一部
分比第二部分更接近于地球时,第一部分位于第二部分“下方”。如上文所述,第一部分可在以下各项中的一或多者的情况下位于第二部分上方或下方:在其间具有其它部分、在其间不具有其它部分、第一部分与第二部分接触,或第一部分与第二部分彼此不直接接触。如本专利中所使用,对任何部分(例如,层、膜、区、区域或板)以任何方式位于另一部分上(例如,定位于另一部分上、位于另一部分上、安置于另一部分上或形成于另一部分上等)的陈述指示:所提及部分与所述另一部分接触,或所提及部分位于所述另一部分上方,其中一或多个中间部分位于所述两个部分之间。如本文中所使用,除非另外指示,否则连接参考(例如,附接、耦合、连接及接合)可包含由连接参考所参考的元素之间的中间部件及/或那些元素之间的相对移动。如此,连接参考未必推断两个元素直接连接及/或彼此呈固定关系。如本文中所使用,陈述任何部分与另一部分“接触”被定义为意指在所述两个部分之间不存在中间部分。
15.除非另外具体陈述,否则本文中使用例如“第一”、“第二”、“第三”等描述语,而不暗示或以其它方式指示优先级、物理顺序、列表中的布置及/或以任何方式排序的任何含义,但仅用作标签及/或任意名称来区分元素,以便于理解所描述的实例。在一些实例中,描述语“第一”可用于指代详细描述中的元素,而同一元素可在技术方案中用不同描述语(例如“第二”或“第三”)来参考。此类描述语仅用于明确识别可(举例来说)以其它方式共享同一名称的那些元素。如本文中所使用,“基本上实时”是指以近乎瞬时的方式发生,认识到可存在计算时间、传输等的现实世界延迟。因此,除非另外规定,否则“基本上实时”是指实际时间+/-1秒。
具体实施方式
16.在一些情形中,硬件加速可用于减少延迟、增加吞吐量、降低功率消耗并增强计算任务的并行化。常用的硬件加速器包含图形处理单元(gpu)、现场可编程门阵列(fpga)、专用集成电路(asic)、复杂可编程逻辑装置(cpld)及单芯片系统(soc)。
17.硬件加速具有跨越许多不同领域的各种应用,包含汽车行业、先进驱动器系统(adas)、制造、高性能计算、机器人、无人机及涉及复杂高速处理的其它行业,例如基于硬件的加密、计算机生成图形、人工智能及数字图像处理,后者涉及对单个图像或视频流执行的各种复杂处理操作,举例来说,镜头失真校正、按比例调整、变换、噪声滤波、密集光流、金字塔表示、立体纱门效果(sde)以及其它处理操作。与这些操作相关联的计算任务中的许多计算任务涉及大量处理能力,且在一些情形中,例如实时地处理视频流,处理图像或视频流所需的处理能力量可对cpu造成显著压力。
18.许多硬件加速器经设计以对从外部存储器提取的数据执行各种计算任务。许多实例性硬件加速器经配置以对呈块或行形式的数据元素执行处理任务。举例来说,在其中成像/视觉算法通常是基于二维(2d)块的图像处理中,硬件加速器可经配置以处理来自图像帧的二维块而非将整个图像帧作为行处理。各种实例性硬件加速器可对16x16字节、32x32字节及64x32字节的块大小进行操作。
19.如果在单芯片系统(soc)上实施硬件加速器,那么直接存储器存取(dma)控制器可实施直接存储器存取以从外部存储器提取数据块或数据行且将数据传送到本地芯片上存储器。许多类型的外部存储器(例如双数据速率同步动态随机存取存储器(ddr sdram))偏
好基于一维(1d)行的线性数据存取,这是因为行传送可不会招致页面惩罚,所述页面惩罚可(举例来说)在需要两个页面打开/关闭循环来存取落在不同页面上的垂直相邻像素时发生(每一页面打开/关闭循环具有约60ns的持续时间(例如,页面惩罚))。
20.尽管ddr外部存储器偏好线性存取,但dma控制器可存取来自ddr外部存储器的呈块形式的数据;然而,由ddr外部存储器发送的数据块可为具有与dma数据块请求中的行数目对应的块高度及64字节的固定块宽度的固定大小的矩形块。在一些情形中,由ddr发送的固定大小的矩形块可具有由外部存储器控制器管理的块高度及/或是突发大小的函数的块宽度。由于硬件加速器可对数据行或比由ddr外部存储器发送的数据块小的数据块频繁地进行操作,因此dma控制器可仅使用由ddr发送的数据块的小部分且摒弃过多的数据,在许多情形中,必须在稍后时间从ddr外部存储器重新提取所述过多的数据以进行处理。因此,在数据由硬件加速器处理之前,ddr外部存储器可多次向dma控制器发送相同数据。同样,在经处理数据存储于ddr外部存储器中之前,dma控制器可多次向ddr外部存储器发送经处理数据。此冗余会导致ddr外部存储器的操作效率低。
21.举例来说,如果dma控制器尝试从ddr外部存储器提取16x16字节数据块(例如,具有16行的块高度及16字节的块宽度的数据块),那么ddr外部存储器可传回较大数据块,举例来说,具有16行的块高度及64字节的块宽度的16x64字节数据块。外部存储器控制器可仅写入16行中的每一者中的16字节且摒弃其余48字节,从而导致25%的ddr存储器存取效率。同样,如果dma控制器尝试将16x16字节数据块写入到ddr外部存储器,那么dma可有效地消耗写入16行64字节的带宽及时间。因此,当从ddr外部存储器提取数据及/或将数据写入到ddr外部存储器时,可发生ddr效率低。
22.尽管一些硬件加速器对如上文所描述的数据块进行操作,但其它硬件加速器可对数据行进行操作。多个硬件加速器可集成到硬件加速子系统中以形成硬件加速链,然而,由于行到块及块到行转换在被实施于硬件加速器上时变得越来越复杂,因此现有子系统中的硬件加速器对相同类型的数据元素(例如,块或行)进行操作。此限制使硬件加速子系统的定制变得非常困难。
23.用于通过硬件加速器改进存储器存取效率的现有技术通常限于具有或不具有基于软件及/或硬件的高速缓存的固定块大小方案,从而导致效率低的传送及简单的线性硬件加速用例链建构。这些现有技术包含从外部存储器提取固定大小的宏块的硬件加速子系统。举例来说,图1是基于块的处理及存储子系统的实例性图式,所述基于块的处理及存储子系统包含使用配置互连件112来配置的图像子系统(iss)100,所述配置互连件经配置以经由iss数据互连件138从系统存储器110提取固定大小的宏块且将所述固定大小的宏块存储于本地芯片上存储器(例如,来自一组可切换缓冲器134的可切换缓冲器)中。镜头失真校正(ldc2)硬件加速器128及/或噪声滤波(vtnf)硬件加速器130可对宏块执行处理任务且经由静态控制器交叉开关132将经处理宏块发送到本地存储器(例如,来自一组可切换可切换缓冲器134的可切换缓冲器)。然而,这些现有硬件加速子系统可不包含允许子系统根据个别硬件加速器的需要而调整宏块的大小的硬件。而是,这些子系统中的宏块的大小主要由输入缓冲器134驱动,且输出块大小由输入块比例因子、输出图像缓冲器大小及/或输入块本地存储器大小界定。这些子系统中的缓冲器通常是不具有用于组合块的机制的可切换缓冲器。现有硬件加速子系统中的此缺乏控制及存储能力可限制子系统将块组合成各种大小
的灵活性。尽管其它硬件加速器可涉及用以组合多个相邻块以创建一个定界框的cpu,但cpu的参与通常会导致cpu管线的面积及性能成本。
24.图2是硬件加速子系统210的实例性图式200,所述硬件加速子系统集成到单芯片系统(soc)220中且经配置以从外部存储器230提取数据元素231、232,处理数据元素231、232以产生经处理数据元素236、238,且将经处理数据元素236、238写入到外部存储器230。
25.图2中所图解说明的硬件加速子系统210包含:第一直接存储器存取(dma)控制器240,其用以促进数据元素231、232从外部存储器230(例如,从存储于外部存储器230中的输入帧237)到本地存储器260的传送;第二dma控制器242,其用以促进经处理数据元素236、238从本地存储器260及/或硬件加速器250a、250b、250c、250d到外部存储器230(例如,到外部存储器230的输出帧239)的传送;四个硬件加速器250a、250b、250c、250d,其用以对数据元素231、232执行各种处理任务以产生中间数据元素233、234及/或经处理数据元素236、238;本地存储器260,其用以在处理期间暂时存储数据元素231、232及/或中间数据元素233、234;及调度器280,其用以协调硬件加速器250a到250d、本地存储器260与dma控制器240、242之间的工作流程。
26.在图2中所图解说明的实例中,硬件加速器250a到250d经配置以将数据元素231、232及/或中间数据元素233、234作为输入来消耗、对数据元素231、232及/或中间数据元素233、234执行处理任务,且产生经处理数据元素236、238作为输出以由另一硬件加速器250a到250d消耗、写入到本地存储器260及/或经由dma控制器242写入到ddr外部存储器230。在图2的实例中,硬件加速子系统210经配置以并行地处理多个数据元素231、232,例如,第一硬件加速器250a对第一数据元素231执行第一处理任务以产生中间数据元素233,而第二硬件加速器250b对第二数据元素232执行第二处理任务以产生中间数据元素234。调度器280在数据元素231、232沿着硬件加速管线进行时促进硬件加速器250a到250d、dma控制器240、242以及本地存储器260的工作流程。
27.在一些实例中,用于改进ddr存取并实现多个生产者及消费者的数据适配的增强型硬件加速子系统包含用以对第一数据元素执行第一处理任务的第一硬件加速器、用以控制硬件调度器的工作流程及数据聚合的调度器,以及耦合到第一硬件加速器以在本地存储器中将第一数据元素与第二数据元素聚合的负载存储引擎。在一些实例中,调度器包含用以实现行、块及经聚合块之间的转换的型式适配器。
28.图3是用以实现数据聚合及型式适配的实例性硬件加速子系统310的框图。实例性硬件加速子系统310包含耦合到实例性信道映射器(例如,实例性dma调度器382d)的实例性dma控制器340、耦合到实例性第一调度器382a的实例性第一硬件加速器350a、耦合到实例性第二调度器382b的实例性第二硬件加速器350b、耦合到实例性第三调度器382c的实例性第三硬件加速器350c、实例性本地存储器360,以及实例性主硬件线程调度器(hts)380。在一些实例中,实例性第一硬件加速器350a包含实例性第一负载存储引擎352a,实例性第二硬件加速器350b包含实例性第二负载存储引擎352b,且实例性第三硬件加速器350c包含实例性第三负载存储引擎352c。在一些实例中,实例性硬件加速子系统310包含耦合到实例性hts 380的实例性存储器映射寄存器(mmr)控制器392、实例性调度器382a到382d、实例性负载存储引擎352a到352c,及/或实例性dma控制器340。在一些实例中,实例性mmr控制器392是软件(sw)可编程的。
29.在图3中所图解说明的实例性硬件加速子系统310中,实例性调度器382a、382b、382c、382d分别包含实例性消费者套接字384a、384b、384c、384d,所述实例性消费者套接字经配置以跟踪由对应实例性硬件加速器350a到350c及对应实例性dma控制器340消耗的输入数据。在图3中所图解说明的实例性硬件加速子系统310中,实例性调度器382a到382d分别包含实例性生产者套接字386a、386b、386c、386d,所述实例性生产者套接字经配置以跟踪由对应实例性硬件加速器350a到350c及对应实例性dma控制器340产生的输出数据。在一些实例中,实例性第一调度器382a包含耦合到实例性第一生产者套接字386a的实例性第一生产者型式适配器390a,实例性第二调度器382b包含耦合到实例性第二生产者套接字386b的实例性第二生产者型式适配器390b,实例性第三调度器382c包含耦合到实例性第三生产者套接字386c的实例性第三生产者型式适配器390c,且实例性dma调度器382d包含耦合到实例性dma生产者套接字386d的实例性dma型式适配器390d。
30.在图3中所图解说明的实例性硬件加速子系统310中,实例性dma控制器340促进数据元素(例如,数据块)在实例性本地存储器360与实例性外部存储器330(例如,ddr外部存储器或在实例性硬件加速子系统310外部的其它芯片外存储器)之间的传送。在一些实例中,实例性dma控制器340与外部存储器控制器(例如,ddr控制器)进行通信,以在实例性本地存储器360与实例性外部存储器330之间传送数据元素。在一些实例中,实例性dma控制器340经由共同总线在实例性硬件加速子系统310、实例性外部存储器330及/或soc中的其它组件及/或子系统之间传送数据元素。
31.在一些实例中,实例性dma控制器340经由实例性交叉开关370与实例性调度器382a到382c进行通信且耦合到实例性dma调度器382d。在一些实例中,实例性dma调度器382d执行类似于与实例性硬件加速器350a到350c对应的实例性调度器382a到382c的调度操作。在一些实例中,实例性dma调度器382d将dma信道映射到实例性硬件加速器350a到350c。在一些实例中,当经由dma信道(例如,与硬件加速器350a对应的dma信道)起始数据传送时,实例性dma控制器340传递信道开始信号。在一些实例中,当经由dma信道(例如,与硬件加速器350a对应的dma信道)完成数据传送时,实例性dma控制器340传递信道完成信号。
32.在图3中所图解说明的实例性硬件加速器子系统310中,实例性dma控制器340从实例性外部存储器330提取数据元素以由硬件加速器350a到350c中的至少一者消耗。在一些实例中,将数据元素连续存储于实例性本地存储器缓冲器360中。在一些实例中,响应于来自实例性调度器382a到382d及/或实例性hts 380的指令,实例性dma控制器340将经处理数据元素传送到实例性外部存储器330,例如,传送到输出帧。
33.在图3中所图解说明的实例性硬件加速器子系统310中,实例性硬件加速器350a到350c经配置以对数据元素(例如,数据块及/或数据行)执行处理任务。在一些实例中,实例性硬件加速器350a到350c经配置以执行图像处理任务,例如,镜头失真校正(ldc)、按比例调整(例如,msc)、噪声滤波(nf)、密集光流(dof)、立体纱门效果(sde)或适合于图像处理的任何其它处理任务。
34.在一些实例中,实例性第一硬件加速器350a对数据块进行操作。在一些实例中,实例性第一硬件加速器350a对16x16b数据块、32x32b数据块、64x32数据块或适合于执行处理任务的任何其它数据块大小进行操作。在一些实例中,耦合到实例性第一硬件加速器350a的至少实例性第一调度器382a包含可连接到实例性第二调度器382b的多个消费者套接字
384a及/或多个实例性生产者套接字386a。举例来说,iss硬件加速器可具有6个输出(y12、uv12、u8、uv8、s8及h3a),且ldc硬件加速器可具有两个输出(y、uv)或三个输出(r、g、b)。
35.在一些实例中,实例性第一硬件加速器350a的实例性第一消费者套接字384a及/或实例性第一生产者套接字386a经由实例性hts 380的实例性交叉开关370连接到实例性第二硬件加速器350b的实例性第二消费者套接字384b及/或实例性第二生产者套接字386b以形成数据流链。在一些实例中,数据流链由实例性mmr控制器392进行配置。在一些实例中,实例性mmr控制器392是软件(sw)可编程的。在一些实例中,实例性第一硬件加速器350a经配置以独立于实例性第二硬件加速器350b而对数据元素执行第一任务,例如,实例性硬件加速器350a到350c经配置以并行地对数据元素执行处理任务。
36.尽管图3的实例性硬件加速子系统310出于图解说明目的包含三个实例性硬件加速器350a到350c及一个实例性dma控制器340,但实例性硬件加速子系统310可包含任何数目个实例性硬件加速器350a到350c及/或dma控制器340。此外,实例性硬件加速子系统310可包含不同类型的实例性硬件加速器350a到350c及/或对不同类型的数据(例如,块或行)进行操作及/或执行不同处理任务(例如,ldc、按比例调整及噪声滤波)的实例性硬件加速器350a到350c,从而允许用户针对多种功能而定制实例性硬件加速器子系统310。
37.在图3中所图解说明的实例性硬件加速子系统310中,实例性调度器382a到382d与对应实例性硬件加速器350a到350c及对应实例性dma控制器340进行通信以控制实例性硬件加速器350a到350c及实例性dma控制器340的处理工作流程。在一些实例中,实例性第一调度器382a控制实例性第一硬件加速器350a的工作流程。在一些实例中,实例性第一调度器382a向实例性第一硬件加速器350a发送开始信号(例如,tstart信号)以向实例性第一硬件加速器350a通信来开始处理数据元素。在一些实例中,实例性第一硬件加速器350a发送完成信号(例如,tdone信号)以指示实例性第一硬件加速器350a已完成处理数据元素。在一些实例中,响应于接收到tdone信号,实例性第一调度器382a指示实例性dma控制器340从实例性外部存储器330提取另一数据元素。在一些实例中,实例性第一调度器382a向实例性第一硬件加速器350a发送起始信号以向实例性硬件加速器350a指示帧开始处理。在一些实例中,实例性第一硬件加速器350a向实例性第一调度器382a发送帧结束信号以传达帧结束处理,例如,传达实例性第一硬件加速器已完成处理帧。
38.在图3中所图解说明的实例性硬件加速子系统310中,实例性调度器382a到382d包含用以跟踪经消耗输入数据(例如,从实例性本地存储器360提取的数据元素)的相应实例性消费者套接字384a到384d,以及用以跟踪所产生输出数据(例如,由对应实例性硬件加速器350a到350c及对应实例性dma控制器340处理的数据元素)的相应实例性生产者套接字386a到386d。在一些实例中,实例性第一硬件加速器350a包含多个消费者套接字384a及/或多个生产者套接字386a。举例来说,实例性第一硬件加速器可包含用以在色度信道上输入/输出数据的实例性第一消费者套接字384a及/或实例性第一生产者套接字386a以及用以在明度信道上输入/输出数据的第二消费者套接字及/或实例性生产者套接字。
39.在一些实例中,实例性消费者套接字384a到384d包含消费者相依性且实例性生产者套接字386a到386d包含实例性生产者相依性。在一些实例中,消费者相依性及生产者相依性是对应实例性硬件加速器350a到350c及对应实例性dma控制器340特有的。在一些实例中,实例性消费者套接字384a到384d经配置以响应于对应实例性硬件加速器350a到350c及
对应实例性dma控制器340消耗数据而生成指示所产生数据的消耗的信号,例如dec信号。在一些实例中,实例性生产者套接字386a到386d经配置以响应于对应实例性硬件加速器350a到350c及对应实例性dma控制器340产生可消耗数据而生成指示可消耗数据的可用性的信号,例如pend信号。在一些实例中,将实例性dec信号路由到对应实例性生产者且将实例性pend信号路由到对应实例性消费者。
40.图3中所图解说明的实例性硬件加速子系统310的实例性调度器382a到382c包含耦合到实例性生产者套接字386a、386b、386c、386d以在行、块与经聚合块格式之间进行逻辑转换的实例性生产者型式适配器390a、390b、390c、390d。
41.在一些实例中,实例性调度器382a到382d实现多组输出数据(例如,当第一数据元素与第二数据元素具有相同数据类型时,第一数据元素与第二数据元素)的聚合(例如,行到行、块到块)。在一些实例中,实例性调度器382a到382d实现第一数据类型与第二数据类型之间的数据元素及/或经聚合数据元素的逻辑转换(例如,行到2d块及块到2d行)。因此,实例性调度器382a到382d实现至少四种情景,例如行到行、行到2d块、2d块到行及2d块到2d块。
42.图3中所图解说明的实例性硬件加速器子系统310包含耦合到对应实例性硬件加速器350a到350c的实例性负载存储引擎352a、352b、352c。实例性负载存储引擎352a、352b、352c经配置以在实例性本地存储器360中至少将第一数据元素(例如,第一数据块)与第二数据元素(例如,第二数据块)聚合来生成经聚合数据元素(例如,超级块),及/或将经聚合数据元素划分成至少第一数据元素及第二数据元素。在一些实例中,实例性第一负载存储引擎352a经配置以在实例性本地存储器360中将第一数据元素与第二数据元素聚合。在一些实例中,实例性第一负载存储引擎352a基于由用户编程到实例性mmr控制器392中的每行块(bpr)值(例如,cbuf_bpr)而水平地聚合数据元素,这使得能够基于(举例来说)实例性硬件加速器350a到350c、输出块大小、ddr突发大小、目的地消耗型式及实例性本地存储器360而进行调谐。在一些实例中,实例性负载存储引擎352a到352c启用实例性本地存储器360中的软件(sw)可编程循环缓冲器存储以用于基于每行块(bpr)的数据聚合。在一些实例中,由软件基于实例性本地存储器360中的可用存储器及/或在实例性本地存储器360中针对实例性硬件加速器350a到350c分配的存储器而确定bpr值。在一些实例中,bpr值被硬编码到实例性mmr控制器392中。
43.图4是图解说明在实例性本地存储器360(图3)中通过实例性负载存储引擎352a到352c(图3)而进行的数据元素402、404、406、408的实例性聚合以生成经聚合数据元素420a、420b(例如,超级块420a及420b)的实例性图式。在图4中所图解说明的实例中,实例性数据元素402、404、406、408以第一配置410存储于本地存储器(例如,图3的实例性本地存储器360)中。在一些实例中,实例性数据元素402、404、406、408以(举例来说)具有bpr值1(例如,一个块宽度)及缓冲器大小4(例如,cbuf_size=obh*4)的实例性第一配置410存储于实例性本地存储器360(图3)中。在一些实例中,基于从实例性mmr控制器392接收到的bpr值而水平地聚合图4的实例性数据元素402、404、406、408。举例来说,实例性第一负载存储引擎352a可从实例性mmr控制器392接收bpr值2且在实例性本地存储器360中水平地聚合数据元素402、404、406、408以生成包含两个超级块420a、420b的实例性第二配置420,每一超级块420a、420b具有两个块的宽度(例如,bpr=2)。图4中所图解说明的实例性第二配置420具有
缓冲器大小2(例如,cbuf_size=obh*2)。实例性第一负载存储引擎352a可经配置以将任何适合数目个块水平地聚合成具有如由来自实例性mmr控制器392的bpr值所确定的任何适合宽度的实例性超级块420a、420b。在一些实例中,实例性第一负载存储引擎352a水平地聚合从实例性第一硬件加速器350a接收到的经处理数据块402、404、406、408,将经处理数据块402、404、406、408写入到实例性本地存储器360,且在实例性本地存储器360中聚合数据块402、404、406、408以生成超级块420a、420b。图4中所图解说明的实例性经水平聚合超级块420a、420b可实现实例性本地存储器360(图3)与实例性外部存储器330之间的较大读取/写入。
44.在一些实例中,实例性负载存储引擎352a到352c经配置以从对应超级块420a、420b选择个别数据元素402、404、406、408。因此,在一些实例中,实例性负载存储引擎352a到352c经配置以聚合个别数据元素402、404、406、408来产生经聚合数据元素420a、420b及/或从对应超级块420、420b选择个别数据元素402、404、406、408,这(举例来说)取决于对应实例性硬件加速器350a到350c经配置以对其进行操作的数据格式以及从实例性外部存储器330被传送到实例性本地存储器360的数据的格式。
45.在一些实例中,实例性负载存储引擎352a到352c从对应实例性硬件加速器350a到350c接收经处理数据元素402、404、406、408,聚合经处理数据元素402、404、406、408以生成经聚合数据元素420a、420b,且将经聚合数据元素420a、420b写入到实例性本地存储器360。在一些实例中,实例性负载存储引擎352a到352c从对应实例性硬件加速器350a到350c接收经处理的实例性经聚合数据元素420a、420b,从经处理的经聚合数据元素420a、420b选择个别经处理数据元素402、404、406、408,且将数据元素402、404、406、408写入到实例性本地存储器360。在一些实例中,可将数据块聚合到行430a、430b中(例如,2d块到行栅格化)。在一些实例中,可通过作为帧宽度的函数设定bpr值(例如,bpr=fr_width/obw)而将数据块聚合到行430a、430b中。在一些实例中,可通过实例性dma控制器340(图3)将经栅格化数据行430a、430b传送到实例性外部存储器330。
46.在一些实例中,实例性第一硬件加速器350a响应于实例性第一硬件加速器350a完成实例性数据元素402、404、406、408(图4)的处理而生成完成信号(例如,tdone信号)且将tdone信号发送到实例性第一调度器382a(图3)。在一些实例中,响应于接收到tdone信号,实例性第一调度器382a指示实例性第二硬件加速器350b读取经处理数据元素402、404、406、408(图4)或经聚合数据元素420a、420b或者430a或430b。在一些实例中,实例性第二硬件调度器350b消耗具有整行块的经聚合数据元素(例如,图4的经聚合数据元素430a、430b)。在一些实例中,响应于接收到tdone信号,实例性第一调度器382a(图3)指示实例性dma控制器340写入来自实例性外部存储器330(图3)的经处理数据元素402、404、406、408(图4)或经聚合数据元素420a或420b或者430a或430b。
47.在一些实例中,响应于实例性第一硬件加速器350a(图3)处理数据元素402、404、406、408(图4),实例性第一负载存储引擎352a(图3)将块计数递增。以此方式,实例性第一负载存储引擎352a跟踪由实例性第一硬件加速器350a(图3)处理的数据元素402、404、406、408(图4)的数目。在一些实例中,响应于实例性第一负载存储引擎352a确定块计数等于bpr值,实例性第一负载存储引擎352a在本地存储器360中聚合经处理数据元素402、404、406、408(图4)以生成经聚合数据元素420a、420b。在一些实例中,响应于实例性第一负载存储引
擎352a确定块计数等于bpr值,实例性第一硬件加速器350a向实例性第一调度器382a发送tdone信号,此时实例性第一调度器382a可指示实例性第二硬件加速器350b或实例性第三硬件加速器350c从实例性本地存储器360读取经聚合数据元素420a、420b。在一些实例中,响应于tdone信号,实例性第一调度器382a指示实例性dma控制器340将经聚合数据元素420a、420b、430a或430b传送到实例性外部存储器330(图3)。
48.如上文所描述,实例性第一硬件加速器350a及/或实例性第一负载存储引擎352a可实施计数逻辑,所述计数逻辑包含响应于实例性硬件加速器352a处理数据元素而将块计数递增。在一些实例中,图3中所图解说明的实例性硬件加速子系统310包含生成模式参数(例如,tdone_gen_mode参数)以使得实例性硬件加速器350a到350c能够以块层级(例如,以个别数据元素402、404、406、408(图4)层级)或以超级块层级(例如,以经聚合数据元素层级)与对应实例性调度器382a到382c进行通信。在一些实例中,生成模式参数是mmr可编程的及/或基于bpr值。在一些实例中,在第一生成模式中(例如,当tdone_gen_mode=0时),实例性硬件加速器350a到350c以块层级与实例性调度器382a到382c进行通信,例如,实例性硬件加速器350a到350c在处理个别数据元素402、404、406、408(图4)后即刻向对应实例性调度器382a到382c发送tdone信号。在一些实例中,在第二生成模式中(例如,当tdone_gen_mode=1时),实例性硬件加速器350a到350c以超级块层级与实例性调度器382a到382c进行通信,例如,实例性硬件加速器350a到350c在基于bpr值而处理超级块后(例如,当实例性硬件加速器350a到350c已处理等于bpr值的一定数目个数据元素402、404、406、408时)即刻向对应实例性调度器382a到382c发送tdone信号。举例来说,如果bpr值为2(例如,图4的超级块420a),且如果实例性硬件加速器350a到350c正处理超级块420a(图4)、正与对应实例性调度器382a到382c进行通信(例如,tdone_gen_mode=1),那么实例性硬件加速器350a到350c在处理两个数据元素402、404后即刻向对应实例性调度器382a到382c发送tdone信号。
49.以块层级或以超级块层级进行通信的灵活性防止实例性调度器382a到382c及/或实例性hts 380在实例性第一硬件加速器350a处理超级块420a、420b的单个数据块402、404、406、408(图4)之后触发dma传送。举例来说,如果实例性第一负载存储引擎352a基于bpr值2而将两个数据块402、404(图4)水平地聚合成超级块(例如,图4的实例性超级块420a),且对应实例性硬件加速器350a以块层级与实例性第一调度器382a及/或实例性hts 380进行通信(例如,第一生成模式),那么实例性第一调度器382a及/或实例性hts380可在一个数据块402或404被处理之后触发dma传送而非等待直到经聚合数据块420a中的两个数据块402、404均被处理。
50.在一些实例中,经聚合数据元素(例如,第三配置430的实例性经聚合数据元素430a、430b)具有等于由图3的实例性硬件加速器子系统310处理的输入帧的帧宽度的bpr值(例如,bpr=fr_width/obw)。在其中输入帧的帧宽度不是bpr值的倍数的情景中(例如,当帧宽度=10个块且bpr值=4时),经聚合数据元素可430a包含行末(eor)触发模式(例如,partial_bpr_trigmode)以计及其中输入帧的帧宽度不是超级块大小的倍数的情景。举例来说,如果实例性硬件加速器350a到350c以eor触发模式进行操作,同时bpr值为4且剩余超级块缓冲器具有两个块,那么超级块缓冲器中的块数目是bpr值的50%且实例性硬件加速器350a到350c将在处理行末处的超级块缓冲器中的两个块之后向对应实例性调度器382a到382c及/或实例性hts 380发送eor触发。在一些实例中,当实例性硬件加速器350a以eor
触发模式进行操作(例如,partial_bpr_trigmode=1)时,实例性对应调度器382a到382c及/或实例性hts 380触发实例性dma控制器340经由单独dma信道将eor超级块传送到实例性外部存储器330。在一些实例中,实例性第一负载存储引擎352a经由部分bpr计数(例如,partial_bpr_count模式)与实例性第一调度器382a进行通信以指示eor超级块缓冲器中的剩余块计数。
51.通过如本文中所描述在水平方向上组合多个数据块且使得实例性硬件加速器350a到350c能够以块层级及/或超级块层级进行通信,实例性负载存储引擎352a到352c使得能够从/向实例性外部存储器330对实例性本地存储器360进行更大的读取及写入,借此改进ddr效率。随着更大的存储器请求(高达帧宽度),ddr页面打开/关闭显著减少。
52.图5是图解说明实例性型式适配过程500的实例性图式,所述实例性型式适配过程由实例性型式适配器实施以将24x32字节数据块532逻辑转换为24行数据元素534。在图5的实例性型式适配图式500中,实例性消费者套接字584准许实例性第一硬件加速器350a及/或实例性第一负载存储引擎352a从实例性存储器本地存储器360进行读取且跟踪实例性第一硬件加速器350a及/或实例性第一负载存储引擎352a从实例性本地存储器360进行读取的次数。举例来说,在图5中所图解说明的实例中,实例性型式适配器588可将24x32数据块532逻辑转换成24行数据元素。在一些实例中,实例性硬件加速器(例如,图3的实例性第一硬件加速器350a)对24行数据元素534执行处理任务。
53.在一些实例中,实例性调度器(例如,图3的实例性第一调度器382a)从实例性第一硬件加速器350a读取tdone信号,且作为响应,实例性型式适配器588将24行数据元素逻辑转换为24x32b数据块并且实例性生产者套接字586产生经处理数据块作为输出数据以供由另一硬件加速器消耗及/或通过实例性dma控制器(例如,图3的实例性dma控制器340)而传送到实例性外部存储器330。
54.通过在行、块与超级块之间转换数据元素,图3的实例性生产者型式适配器390a到390d及/或图5的实例性型式适配器588使得实例性硬件加速子系统310(图3)能够使用产生不同类型的输出的对应实例性硬件加速器350a到350c及/或对应实例性dma控制器340来处理数据元素,借此实现用于各种功能的复杂用户定义的多生产者及多消费者硬件加速方案,同时维持ddr外部存储器(例如,图3的实例性外部存储器330)的经改进效率。
55.图6是图解说明用于图像、视觉及/或视频处理的实例性多消费者/多生产者硬件加速子系统610的实例性用户定义图600。图6中所图解说明的实例性硬件加速子系统610包含:实例性镜头失真校正(ldc)硬件加速器650a,其用以对数据块执行镜头失真校正;实例性按比例调整(msc)硬件加速器650b,其用以对数据行执行按比例调整;实例性噪声滤波(nf)硬件加速器650c,其用以对数据行执行噪声滤波;实例性第一dma控制器640,其与实例性ldc硬件加速器650a及实例性ddr外部存储器630进行通信;实例性第二dma控制器642,其与实例性ldc硬件加速器650a及实例性ddr外部存储器630进行通信;实例性第三dma控制器646,其与实例性msc硬件加速器650b、实例性nf硬件加速器650c及实例性ddr外部存储器630进行通信;及实例性第四dma控制器648,其与实例性nf硬件加速器650c及实例性ddr外部存储器630进行通信。
56.在图6中所图解说明的实例性用户定义的硬件加速子系统610中,实例性ldc硬件加速器650a产生包含(举例来说)由实例性第一dma控制器640消耗的数据块632的多个输
出。在图6的实例中,实例性msc硬件加速器650b基于实例性ldc硬件加速器650a的输出而消耗一组数据行且实例性第二dma控制器642消耗数据块634。在图6的实例中,实例性msc硬件加速器650b基于实例性ldc硬件加速器650a的输出而消耗一组数据行,对所述数据行执行按比例调整操作,且产生由实例性nf硬件加速器650c及实例性第三dma控制器644消耗的数据行元素636。在图6的实例中,实例性nf硬件加速器650c消耗数据行元素636,对数据行元素636执行噪声滤波操作,且产生由实例性第四dma控制器646消耗的数据行元素638。在图6的实例中,实例性第一dma控制器640、实例性第二dma控制器642、实例性第三dma控制器644及实例性第四dma控制器646经配置以将相应数据元素632、634、636、638写入到实例性ddr外部存储器630。
57.图7是图解说明实例性多消费者/多生产者硬件加速方案的实例性图式700。图7中所图解说明的实例性硬件加速子系统710包含实例性ddr外部存储器730、实例性dma控制器740、实例性ldc硬件加速器750a、实例性msc/nf硬件加速器750b及实例性hts 780。在图7的实例性硬件加速子系统710中,实例性ldc硬件加速器750经配置以对数据执行镜头失真校正操作来产生数据元素732。在实例性硬件加速子系统710中,实例性msc/nf硬件加速器750b经配置以消耗数据元素732,对数据元素732执行按比例调整及噪声滤波操作,且产生数据元素734。在实例性硬件加速子系统710中,实例性dma控制器740经配置以消耗分别由实例性ldc硬件加速器750a及实例性msc硬件加速器750b产生的数据元素732、734,且将数据元素732、734写入到实例性ddr外部存储器730。
58.考虑到本地存储器可用性,聚合要求可基于数据的消费者而不同。举例来说,msc硬件加速器650b(图6)可需要全组行数据为可用的,而dma ch写出可适合聚合几个块以节省ddr带宽。为实现不同聚合,每一输出信道可在lse 352a中被编程以包含不同bpr值。
59.图8图解说明实例性多生产者ldc硬件加速器880,所述实例性多生产者ldc硬件加速器用以在第一信道(例如,色度信道)上输出第一经聚合数据元素832且在第二信道(例如,明度信道)上输出第二经聚合数据元素834。在图8中所图解说明的实例中,第一信道与第一bpr值(例如,第一bpr值4)相关联且第二信道与第二bpr值(例如,等于帧宽度的bpr值)相关联。在一些实例中,第一bpr值及/或第二bpr值基于帧行中的块数目、帧行中的像素数目及/或帧行中的字节数目。在图8中所图解说明的实例中,第一经聚合数据元素832输出到外部ddr(例如,图3的实例性外部存储器330)且第二数据元素834输出到第二硬件加速器(例如,msc/nf硬件加速器)。因此,本文中所描述的实例实现单独不对称的数据元素聚合(例如,在单独数据信道上)。
60.尽管在图9中图解说明实施图3的硬件加速子系统310的实例性方式,但可组合、划分、重新布置、省略、消除及/或以任何其它方式实施图9中所图解说明的元素、过程及/或装置中的一或多者。此外,实例性硬件加速器350a到350c、实例性调度器382a到382d、实例性负载存储引擎352a到352c、实例性生产者型式适配器390a到390d、实例性dma控制器340、实例性本地存储器360及/或更一般来说图3的实例性硬件加速子系统可由硬件、软件、固件及/或硬件、软件及/或固件的任何组合来实施。因此,举例来说,实例性硬件加速器350a到350c、实例性调度器382a到382d、实例性负载存储引擎352a到352c、实例性生产者型式适配器390a到390d、实例性dma控制器340、实例性本地存储器360及/或更一般来说图3的实例性硬件加速子系统310中的任一者可由一或多个模拟或数字电路、逻辑电路、可编程处理器、
可编程控制器、图形处理单元(gpu)、数字信号处理器(dsp)、专用集成电路(asic)、可编程逻辑装置(pld)及/或现场可编程逻辑装置(fpld)实施。当阅读本专利的设备或系统权利要求以涵盖纯软件及/或固件实施方案时,实例性硬件加速器350a到350c、实例性调度器382a到382d、实例性负载存储引擎352a到352c、实例性生产者型式适配器390a到390d、实例性dma控制器340及实例性本地存储器360中的至少一者据此明确定义为包含非暂时性计算机可读存储装置或存储磁盘,例如存储器、数字多功能光盘(dvd)、光盘(cd)、蓝光光盘等,包含软件及/或固件。更进一步地,除了或替代图9中所图解说明的元素、过程及/或装置,图3的实例性硬件加速子系统310可包含一或多个元素、过程及/或装置,及/或可包含所图解说明元素、过程及装置中的任何或所有元素、过程及装置中的多于一者。如本文中所使用,短语“进行通信”包含其变化形式,囊括直接通信及/或通过一或多个中间组件的间接通信,且不需要直接物理(例如,有线)通信及/或持续通信,而是另外包含以周期性间隔、经调度间隔、非周期性间隔及/或一次性事件进行选择性通信。
61.在图9中展示表示用于实施图3的硬件加速子系统310的实例性硬件逻辑、机器可读指令、硬件实施的状态机及/或其任何组合的流程图。机器可读指令可为供由计算机处理器及/或处理器电路系统(例如下文结合图10所描述的实例性处理器平台1000中所展示的处理器1012)执行的一或多个可执行程序或可执行程序的部分。程序可体现于存储在非暂时性计算机可读存储媒体(例如cd-rom、软盘、硬盘驱动器、dvd、蓝光光盘或与处理器1012相关联的存储器)上的软件中,但整个程序及/或其部分可替代地由除处理器1012以外的装置执行及/或体现于固件或专用硬件中。此外,虽然参考图9中所图解说明的流程图描述实例性程序,但可替代地使用实施实例性硬件加速子系统310的许多其它方法。举例来说,可改变框的执行次序及/或可改变、消除或组合所描述的框中的一些框。另外或替代地,框中的任一者或所有可由经结构化以执行对应操作而不执行软件或固件的一或多个硬件电路(例如,离散及/或集成模拟及/或数字电路系统、fpga、asic、比较器、运算放大器(op-amp)、逻辑电路等)实施。处理器电路系统可分布于不同的网络位置中及/或在一或多个装置本地(例如,单个机器中的多核心处理器、跨越服务器机架分布的多个处理器等)。
62.本文中所描述的机器可读指令可以压缩格式、加密格式、分段格式、编译格式、可执行格式、封装格式等中的一或多者来存储。如本文中所描述的机器可读指令可作为可用于创建、制造及/或产生机器可执行指令的数据或数据结构(例如,指令的部分、代码、代码的表示等)来存储。举例来说,机器可读指令可被分段并存储于位于网络或网络集合的相同或不同位置处(例如,在云端中、在边缘装置中等)的一或多个存储装置及/或计算装置(例如,服务器)上。机器可读指令可需要安装、修改、改编、更新、组合、补充、配置、解密、解压缩、解包、分发、重新指派、编译等中的一或多者,以便使其直接可由计算装置及/或其它机器读取、解译及/或执行。举例来说,机器可读指令可存储于被个别地压缩、加密并存储于单独计算装置上的多个部分中,其中所述部分在被解密、解压缩及组合时形成一组可执行指令,所述组可执行指令实施可一起形成程序(例如本文中所描述的程序)的一或多个功能。
63.在另一实例中,机器可读指令可以其中其可由处理器电路系统读取的状态来存储,但需要添加库(例如,动态链接库(dll))、软件开发工具包(sdk)、应用程序编程接口(api)等,以便在特定计算装置或其它装置上执行指令。在另一实例中,在可全部或部分地执行机器可读指令及/或对应程序之前,可需要配置机器可读指令(例如,存储的设置、数据
输入、记录的网络地址等)。因此,如本文中所使用的机器可读媒体可包含机器可读指令及/或程序,而不管机器可读指令及/或程序在存储时或以其它方式处于静止或传输中时的特定格式或状态如何。
64.本文中所描述的机器可读指令可由任何过去、现在或将来的指令语言、脚本语言、程序设计语言等来表示。举例来说,机器可读指令可使用以下语言中的任一者来表示:c、c++、java、c#、perl、python、javascript、超文本标记语言(html)、结构化查询语言(sql)、swift等。
65.如上文所提及,图9的实例性过程可使用存储于其中信息被存储达任何持续时间(例如,达延长的时间段、永久性地、达短暂时刻、达暂时缓冲及/或用于高速缓存信息)的非暂时性计算机及/或机器可读媒体(例如硬盘驱动器、快闪存储器、只读存储器、光盘、数字多功能光盘、高速缓冲存储器、随机存取存储器及/或任何其它存储装置或存储磁盘)上的可执行指令(例如,计算机及/或机器可读指令)实施。如本文中所使用,术语非暂时性计算机可读媒体明确地定义为包含任何类型的计算机可读存储装置及/或存储磁盘且排除传播信号并排除传输媒体。
[0066]“包含(including)”及“包括(comprising)”(以及其所有形式及时态)在本文中用作开放式术语。因此,每当权利要求采用任何形式的“包含”或“包括”(例如,包括(comprises)、包含(includes)、包括(comprising)、包含(including)、具有(having)等)作为前言或在任何种类的权利要求陈述内,额外元素、术语等可在不超出相应权利要求或陈述的范围的情况下存在。如本文中所使用,当短语“至少”用作(举例来说)权利要求的前言中的过渡术语时,其为开放式的,与术语“包括”及“包含”为开放式的方式相同。术语“及/或”在(举例来说)以例如a、b及/或c的形式使用时,是指a、b、c的任何组合或子集,例如(1)单独a,(2)单独b,(3)单独c,(4)a与b,(5)a与c,(6)b与c,以及(7)a与b与c。如本文中在描述结构、组件、项目、对象及/或事物的上下文中所使用,短语“a及b中的至少一者”是指包含以下各项中的任一者的实施方案:(1)至少一个a,(2)至少一个b,及(3)至少一个a及至少一个b。类似地,如本文中在描述结构、组件、项目、对象及/或事物的上下文中所使用,短语“a或b中的至少一者”是指包含以下各项中的任一者的实施方案:(1)至少一个a,(2)至少一个b,及(3)至少一个a及至少一个b。如本文中在描述过程、指令、动作、活动及/或步骤的执行或实行的上下文中所使用,短语“a及b中的至少一者”是指包含以下各项中的任一者的实施方案:(1)至少一个a,(2)至少一个b,及(3)至少一个a及至少一个b。类似地,如本文中在描述过程、指令、动作、活动及/或步骤的执行或实行的上下文中所使用,短语“a或b中的至少一者”是指包含以下各项中的任一者的实施方案:(1)至少一个a,(2)至少一个b,及(3)至少一个a及至少一个b。
[0067]
如本文中所使用,单数参考(例如,“一(a、an)”、“第一”、“第二”等)不排除复数。如本文中所使用的术语“一(a或an)”实体是指所述实体中的一或多者。术语“一(a)”(或“一(an)”)、“一或多个”及“至少一个”可在本文中互换地使用。此外,虽然个别地列出,但多个构件、元件或方法动作可由例如单个单元或处理器实施。另外,虽然可在不同实例或权利要求中包含个别特征,但这些特征可能被组合,且包含于不同实例或权利要求中并非暗示特征的组合为不可行及/或不利的。
[0068]
图9是表示机器可读指令的流程图,所述机器可读指令可经执行以实施图3的实例
性硬件加速子系统310来实现数据聚合及型式适配。
[0069]
在框902处,硬件加速器(例如,镜头失真校正硬件加速器)处理数据块。举例来说,实例性第一硬件加速器350a(图3)可处理数据块402(例如,来自图4的第一配置410)。
[0070]
在框904处,硬件加速器将经处理数据块写入到本地存储器。举例来说,实例性第一硬件加速器350a可将经处理数据块402(图4)写入到实例性本地存储器360(图3)。
[0071]
在框906处,耦合到硬件加速器的负载存储引擎确定硬件加速器是以块层级还是以超级块层级进行通信。举例来说,实例性第一负载存储引擎352a可确定实例性第一硬件加速器350a是以块层级(例如,tdone_gen_mode=0)还是以超级块层级(例如,tdone_gen_mode=1)进行通信。
[0072]
如果负载存储引擎确定硬件加速器以块层级进行通信(框906),那么机器可读指令900前进到框914,其中硬件加速器向对应调度器发送完成信号。举例来说,如果实例性第一负载存储引擎352a确定实例性第一硬件加速器350a以块层级进行通信(例如,tdone_gen_mode=0),那么实例性第一硬件加速器350a向实例性第一调度器382a发送完成信号(例如,tdone信号)。程序结束。
[0073]
在框916处,调度器触发第二硬件加速器(例如,按比例调整硬件加速器)以从本地存储器读取经处理数据块或触发dma控制器以将经处理数据块写入到实例性外部存储器330(图3)。举例来说,实例性第一调度器382a可触发实例性第二硬件加速器350b以从实例性本地存储器360读取经处理数据块402或触发实例性dma控制器340以将经处理数据块402写入到实例性外部存储器330(图3)(框916)。
[0074]
如果负载存储引擎确定硬件加速器以超级块层级进行通信(例如,tdone_gen_mode=1)(框906),那么硬件加速器将块计数递增。举例来说,如果实例性第一负载存储引擎352a确定实例性第一硬件加速器350a以超级块层级进行通信(例如,tdone_gen_mode=1)(框906),那么实例性第一硬件加速器350a可将块计数递增1。
[0075]
在框910处,负载存储引擎确定块计数是否等于bpr值。如果负载存储引擎确定块计数不等于bpr值(例如,块计数小于bpr值)(框910),那么机器可读指令返回到框902且硬件加速器处理另一数据块(框902)。举例来说,如果bpr值为2(例如,bpr=2)且块计数为1(例如,硬件加速器已处理一个数据块402),那么实例性负载存储引擎352a可确定块计数不等于bpr值(框910)且实例性机器可读指令900返回到框902,其中实例性第一硬件加速器350a处理另一数据块404(例如,来自图4的第一配置410)。
[0076]
如果负载存储引擎确定块计数等于bpr值(框910),那么负载存储引擎基于bpr值而在本地存储器中聚合数据块以生成经聚合数据块(框912)。举例来说,如果bpr值为2(例如,bpr=2)且块计数为2(例如,实例性第一硬件加速器350a已处理两个数据块402、404),那么实例性第一负载存储引擎352a聚合数据块402、404并生成经聚合数据块(例如,超级块)420a。
[0077]
在框914处,硬件加速器向对应调度器发送完成信号。举例来说,实例性第一硬件加速器350a可向实例性第一调度器382a发送完成信号(例如,tdone信号)。
[0078]
在框916处,响应于完成信号,调度器触发第二硬件加速器以从本地存储器读取经聚合数据块或触发dma控制器以将经聚合数据元素写入到实例性外部存储器330(图3)。举例来说,响应于tdone信号,实例性第一调度器382a可触发实例性第二硬件加速器350b以从
实例性本地存储器360读取超级块420a或触发实例性dma控制器340以将超级块420a写入到实例性外部存储器330(图3)。程序结束。
[0079]
尽管实例性第一负载存储引擎352a在图9中以超级块层级进行通信时聚合数据块402、404(框912),但在一些实例中,实例性第一负载存储引擎352a在以块层级进行通信时聚合数据块402、404。因此,在一些实例中,实例性第一负载存储引擎352a聚合数据块402、404,而不管实例性第一硬件加速器是以块层级还是以超级块层级进行通信。在一些实例中,实例性第一负载存储引擎352a聚合数据块402、404,使得实例性第一负载存储引擎352a将数据块作为单个块写入到实例性本地存储器360(例如,数据元素404的地址与数据元素402连续)。
[0080]
图10是实例性处理器平台1000的框图,所述实例性处理器平台经结构化以执行图9的指令来实施图3的设备。举例来说,处理器平台1000可为服务器、个人计算机、工作站、自学习机器(例如,神经网络)、移动装置(例如,移动电话、智能电话、平板计算机(例如ipad
tm
))、个人数字助理(pda)、因特网器具、dvd播放器、cd播放器、数字视频记录器、蓝光播放器、游戏控制台、个人视频记录器、机顶盒、耳机或其它可穿戴式装置,或者任何其它类型的计算装置。
[0081]
所图解说明实例的处理器平台1000包含结合图3所描述的实例性hwa子系统310。
[0082]
所图解说明实例的处理器平台1000包含处理器1012。所图解说明实例的处理器1012是硬件。举例来说,处理器1012可由来自任何所要族群或制造商的一或多个集成电路、逻辑电路、微处理器、gpu、dsp或控制器实施。硬件处理器可为基于半导体(例如,基于硅)的装置。
[0083]
所图解说明实例的处理器1012包含本地存储器1013(例如,高速缓冲存储器)。所图解说明实例的处理器1012经由总线1018与包含易失性存储器1014及非易失性存储器1016的主存储器进行通信。易失性存储器1014可由同步动态随机存取存储器(sdram)、动态随机存取存储器(dram)、动态随机存取存储器及/或任何其它类型的随机存取存储器装置实施。非易失性存储器1016可由快闪存储器及/或任何其它所要类型的存储器装置实施。对主存储器1014、1016的存取由存储器控制器控制。
[0084]
所图解说明实例的处理器平台1000还包含接口电路1020。接口电路1020可由任何类型的接口标准(例如以太网接口、通用串行总线(usb)、接口、近场通信(nfc)接口及/或pci高速接口)实施。
[0085]
在所图解说明的实例中,一或多个输入装置1022连接到接口电路1020。输入装置1022准许用户将数据及/或命令输入到处理器1012中。举例来说,输入装置可由音频传感器、麦克风、相机(静态或视频)、键盘、按钮、鼠标、触摸屏、跟踪垫、轨迹球、等位点装置(isopoint)及/或声音辨识系统实施。
[0086]
一或多个输出装置1024也连接到所图解说明实例的接口电路1020。举例来说,输出装置1024可由显示装置(例如,发光二极管(led)、有机发光二极管(oled)、液晶显示器(lcd)、阴极射线管显示器(crt)、就地切换(ips)显示器、触摸屏等)、触觉输出装置、打印机及/或扬声器实施。因此,所图解说明实例的接口电路1020可包含图形驱动器卡、图形驱动器芯片及/或图形驱动器处理器。
[0087]
所图解说明实例的接口电路1020还包含通信装置(例如发射器、接收器、收发器、
调制解调器、住宅网关、无线接入点),及/或用以促进经由网络1026与外部机器(例如,任何种类的计算装置)进行数据交换的网络接口。举例来说,通信可经由以太网连接、数字订户线(dsl)连接、电话线连接、同轴电缆系统、卫星系统、现场无线系统、蜂窝电话系统等。
[0088]
所图解说明实例的处理器平台1000还包含用于存储软件及/或数据的一或多个大容量存储装置1028。此类大容量存储装置1028的实例包含软盘驱动器、硬盘驱动器磁盘、光盘驱动器、蓝光盘驱动器、独立磁盘冗余阵列(raid)系统及数字多功能光盘(dvd)驱动器。
[0089]
图9的机器可执行指令1032可存储于大容量存储装置1028中、存储于易失性存储器1014中、存储于非易失性存储器1016中及/或存储于可装卸式非暂时性计算机可读存储媒体(例如cd或dvd)上。
[0090]
在图11中图解说明框图,所述框图图解说明用以将软件(例如图9的实例性计算机可读指令1032)分发给第三方的实例性软件分发平台1105。实例性软件分发平台1105可由能够存储软件并向其它计算装置传输软件的任何计算机服务器、数据设施、云端服务等实施。第三方可为拥有及/或操作软件分发平台的实体的客户。举例来说,拥有及/或操作软件分发平台的实体可为软件(例如图9的实例性计算机可读指令1032)的开发者、销售者及/或许可方。第三方可为购买及/或许可软件以供使用及/或转售及/或分许可的消费者、用户、零售商、oem等。在所图解说明实例中,软件分发平台1205包含一或多个服务器及一或多个存储装置。存储装置存储计算机可读指令1032,所述计算机可读指令可与图9的实例性计算机可读指令1032对应,如上文所描述。实例性软件分发平台1105的一或多个服务器与网络1110进行通信,所述网络可与因特网及/或上文所描述的实例性网络1026中的任何者中的任何一或多者对应。在一些实例中,作为商业交易的一部分,一或多个服务器响应于将软件传输给请求方的请求。软件的交付、销售及/或许可的支付可由软件分发平台的一或多个服务器及/或经由第三方支付实体处置。服务器使得购买者及/或许可方能够从软件分发平台1105下载计算机可读指令1032。举例来说,可将可与图9的实例性计算机可读指令1032对应的软件下载到实例性处理器平台1000,所述实例性处理器平台将执行计算机可读指令1032以实施图3的设备。在一些实例中,软件分发平台1105的一或多个服务器周期性地提供、传输及/或强制更新软件(例如,图9的实例性计算机可读指令1032)以确保在终端用户装置处向软件分发及应用改进、修补、更新等。
[0091]
依据前述内容,将了解,已描述实现硬件加速子系统中的数据聚合及型式适配的实例性系统、方法及设备。所描述方法、设备及制品通过改进外部存储器的效率并实现用户定义的多生产者及多消费者硬件加速方案而改进使用计算装置的效率。所描述方法、设备及制品因此针对于计算机的功能的一或多个改进。
[0092]
本文中所描述的实例包含一种单芯片系统(soc),其包括:第一调度器;第一硬件加速器,其耦合到所述第一调度器以处理至少第一数据元素及第二数据元素;以及第一负载存储引擎,其耦合到所述第一硬件加速器,所述第一负载存储引擎经配置以:通过响应于确定块计数等于第一bpr值而向所述第一调度器发送完成信号来以超级块层级与所述第一调度器进行通信;及基于所述第一bpr值而将所述第一数据元素与所述第二数据元素聚合以生成第一经聚合数据元素。
[0093]
在一些实例中,所述第一负载存储引擎响应于所述第一硬件加速器处理所述第一数据元素而将所述块计数递增且响应于所述第一硬件加速器处理所述第二数据元素而将
所述块计数递增。
[0094]
在一些实例中,所述第一调度器响应于从所述第一硬件加速器接收到所述完成信号而指示dma控制器将所述第一经聚合数据元素存储到外部存储器。
[0095]
在一些实例中,所述第一调度器响应于从所述第一硬件加速器接收到所述完成信号而指示第二硬件加速器读取所述第一经聚合数据元素。
[0096]
在一些实例中,所述第一负载存储引擎经配置以通过响应于所述第一硬件加速器处理所述第一数据块而向所述第一调度器发送完成信号来以块层级与所述第一调度器进行通信。
[0097]
在一些实例中,所述第一bpr值与第一数据信道相关联。
[0098]
在一些实例中,所述soc包含耦合到所述第一调度器的软件(sw)可编程存储器映射寄存器(mmr),所述mmr用以将至少所述第一bpr值提供到所述第一负载存储引擎。
[0099]
在一些实例中,所述第一负载存储引擎经配置以基于第二bpr值而将至少第三数据元素与第四数据元素聚合以产生第二经聚合数据元素。
[0100]
在一些实例中,所述第二bpr值与第二数据信道相关联。
[0101]
在一些实例中,所述第一负载存储引擎启用本地存储器中的软件(sw)可编程循环缓冲器存储以用于至少基于所述第一bpr值的数据聚合。
[0102]
在一些实例中,所述第一调度器包含用以跟踪由所述第一硬件加速器消耗的输入数据的第一消费者套接字及用以跟踪由所述硬件加速器产生的输出数据的第一生产者套接字。
[0103]
在一些实例中,所述第一调度器包含耦合到所述第一生产者套接字的第一生产者型式适配器。
[0104]
本文中所描述的实例包含一种方法,其包括:由第一硬件加速器处理第一数据元素及第二数据元素;响应于确定块计数等于第一bpr值,由第一负载存储引擎向第一调度器发送完成信号;及由所述第一负载存储引擎基于所述第一bpr值而将所述第一数据元素与所述第二数据元素聚合以生成第一经聚合数据元素。
[0105]
在一些实例中,所述方法进一步包含:响应于所述第一硬件加速器处理所述第一数据元素,由所述第一负载存储引擎将所述块计数递增;及响应于所述第一硬件加速器处理所述第二数据元素,由所述第一负载存储引擎将所述块计数递增。
[0106]
在一些实例中,所述方法进一步包含:响应于从所述第一硬件加速器接收到所述完成信号,由所述第一调度器指示dma控制器将所述第一经聚合数据元素存储到外部存储器。
[0107]
在一些实例中,所述方法进一步包含:响应于从所述第一硬件加速器接收到所述完成信号,由所述第一调度器指示第二硬件加速器读取所述第一经聚合数据元素。
[0108]
在一些实例中,所述第一bpr值与第一数据信道相关联。
[0109]
在一些实例中,所述方法进一步包含:由所述第一负载存储引擎基于第二bpr值而将至少第三数据元素与第四数据元素聚合以生成第二经聚合数据元素。
[0110]
在一些实例中,所述第二bpr值与第二数据信道相关联。
[0111]
本文中所描述的实例包含一种包括计算机可读指令的非暂时性计算机可读媒体,所述计算机可读指令在被执行时致使至少一个处理器至少进行以下操作:由第一硬件加速
器处理第一数据元素及第二数据元素;响应于确定块计数等于第一bpr值,由第一负载存储引擎向第一调度器发送完成信号;及由所述第一负载存储引擎基于所述第一bpr值而将所述第一数据元素与所述第二数据元素聚合以生成第一经聚合数据元素。
[0112]
在一些实例中,所述计算机可读指令进一步致使所述至少一个处理器至少进行以下操作:响应于所述第一硬件加速器处理所述第一数据元素而由所述第一负载存储引擎将所述块计数递增,及响应于所述第一硬件加速器处理所述第二数据元素而由所述第一负载存储引擎将所述块计数递增。
[0113]
在一些实例中,所述计算机可读指令进一步致使所述至少一个处理器至少进行以下操作:响应于从所述第一硬件加速器接收到所述完成信号,由第一调度器指示dma控制器将所述第一经聚合数据元素存储到外部存储器。
[0114]
在一些实例中,所述计算机可读指令进一步致使所述至少一个处理器至少进行以下操作:响应于从所述第一硬件加速器接收到所述完成信号,由第一调度器指示第二硬件加速器读取所述第一经聚合数据元素。
[0115]
在一些实例中,所述计算机可读指令进一步致使所述至少一个处理器至少进行以下操作:响应于所述第一硬件加速器处理所述第一数据块,由所述第一硬件加速向所述第一调度器器发送完成信号。
[0116]
在一些实例中,所述第一bpr值与第一数据信道相关联。
[0117]
在一些实例中,所述计算机可读指令进一步致使所述至少一个处理器至少进行以下操作:由所述第一负载存储引擎基于第二bpr值而将至少第三数据元素与第四数据元素聚合以生成第二经聚合数据元素。
[0118]
在一些实例中,所述第二bpr值与第二数据信道相关联。
[0119]
本文中所描述的实例包含一种设备,其包含:用于处理第一数据元素及第二数据元素的构件;用于响应于确定块计数等于第一bpr值而向第一调度器发送完成信号的构件;及用于基于所述第一bpr值而将所述第一数据元素与所述第二数据元素聚合以生成第一经聚合数据元素的构件。
[0120]
在一些实例中,所述设备进一步包含用于响应于第一硬件加速器处理所述第一数据元素而将所述块计数递增的构件及用于响应于所述第一硬件加速器处理所述第二数据元素而将所述块计数递增的构件。
[0121]
在一些实例中,所述设备进一步包含用于响应于从所述第一硬件加速器接收到所述完成信号而指示dma控制器将所述第一经聚合数据元素存储到外部存储器的构件。
[0122]
在一些实例中,所述设备进一步包含用于响应于从所述第一硬件加速器接收到所述完成信号而指示第二硬件加速器读取所述第一经聚合数据元素的构件。
[0123]
在一些实例中,所述设备进一步包含用于响应于所述第一硬件加速器处理所述第一数据块而向所述第一调度器发送完成信号的构件。
[0124]
在一些实例中,所述第一bpr值与第一数据信道相关联。
[0125]
在一些实例中,所述设备进一步包含用于基于第二bpr值而将至少第三数据元素与第四数据元素聚合以生成第二经聚合数据元素的构件。
[0126]
在一些实例中,所述第二bpr值与第二数据信道相关联。
[0127]
虽然本文中已描述特定实例性方法、设备及制品,但本专利的涵盖范围不限于此。
相反,本专利公平地涵盖落在本专利的权利要求书的范围内的所有方法、设备及制品。
[0128]
所附权利要求书据此以引用的方式并入到此具体实施方式中,其中每一权利要求独立作为本描述的单独实施例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1