计算装置、计算设备以及可编程调度方法
技术领域
本公开的实施例总体涉及计算机领域,具体涉及计算装置、计算设备以及用于计算设备中的数据加载和执行的可编程调度方法。
背景技术
传统基于专用集成电路(ASIC)的特定领域加速器(Domain SpecificAccelerator,DSA)系统往往只能针对特定的某一领域实现加速。由于ASIC已经固定,DSA系统对于新兴的一些计算要求,其执行逻辑不能够随之改进,从而缺少灵活性,导致前向兼容性差。
发明内容
提供了一种计算装置、计算设备以及用于计算设备中的数据加载和执行的可编程调度的方法,能够增强灵活性、吞吐量和整体性能。
根据本公开的第一方面,提供了一种计算装置。该计算装置与计算设备中的第一计算核和第一存储器相连,第一计算核用于通用图形处理,其中该计算装置包括:高速暂存存储器,与第一存储器相连;第二计算核,用于特定领域加速,第二计算核与高速暂存存储器相连;第一硬件队列,用于从第一计算核接收加载请求,第一硬件队列与第一计算核和第一存储器相连,加载请求指示从第一存储器加载数据到高速暂存存储器;第二硬件队列,用于从第一计算核接收执行请求,第二硬件队列与第一计算核和高速暂存存储器相连,执行请求指示从高速暂存存储器提取数据到第二计算核以便执行;以及同步单元,与第一硬件队列和第二硬件队列相连,其中同步单元被配置为通过同步通道、第一硬件队列中的加载请求中的同步通道配置信息、第二硬件队列中的执行请求中的同步通道配置信息,使得加载请求和执行请求的触发相互配合。
根据本公开的第二方面,提供了一种计算设备。该计算设备包括第一计算核、第一存储器以及根据第一方面所述的计算装置,第一计算核用于通用图形处理,计算装置与第一计算核和第一存储器相连,其中第一计算核用于向计算装置中的第一硬件队列中添加加载请求以及向计算装置中的第二硬件队列中添加执行请求。
根据本公开的第三方面,提供了用于计算设备中的数据加载与执行的可编程调度的方法,计算设备包括第一计算核、第一存储器、第一硬件队列、第二硬件队列、高速暂存存储器、第二计算核和同步单元,第一计算核用于通用图形处理,第二计算核用于特定领域加速,该方法包括:在第一计算核处:向第一硬件队列中添加加载请求,加载请求指示从第一存储器加载数据到高速暂存存储器;以及向第二硬件队列中添加执行请求,执行请求指示从高速暂存存储器提取数据到第二计算核以便执行;以及在同步单元处:通过同步通道、第一硬件队列中的加载请求中的同步通道配置信息、第二硬件队列中的执行请求中的同步通道配置信息,使得加载请求和执行请求的触发相互配合。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素。
图1是根据本公开的实施例的计算设备100的示意图。
图2是根据本公开的实施例的用于计算设备110中的数据加载与执行的可编程调度的方法200的示意图。
图3是根据本公开的实施例的加载请求触发过程300的示意图。
图4是根据本公开的实施例的执行请求触发过程400的示意图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上所述,传统基于ASIC的DSA系统缺少灵活性,导致前向兼容性差。
为了解决上述问题,本公开提供了一种计算装置、计算设备和用于数据加载和执行的可调度方法,使得加载请求和执行请求的触发相互配合。
图1示出了根据本公开的实施例的计算设备100的示意框图。如图1所示,计算设备100包括第一计算核110、第一存储器120和计算装置130,其中计算装置130与第一计算核110和第一存储器120相连。
关于第一计算核110,其可用于通用图形处理,例如包括但不限于GPGPU核。
关于第一存储器120,其例如包括但不限于随机存储存储器,诸如静态随机存取存储器(SRAM)、动态随机存储存储器(DRAM)。
关于计算装置130,其可以包括高速暂存存储器(scratchpad memory)131、第二计算核132、第一硬件队列133、第二硬件队列134和同步单元135。
关于高速暂存存储器131,其与第一存储器120相连,可以接收并存储从第一存储器120加载的数据。高速暂存存储器131例如包括但不限于静态随机存取存储器(SRAM)。高速暂存存储器131例如对于程序员是可见的,即可编程的。
关于第二计算核132,其可用于特定领域加速,例如包括但不限于特定领域加速器(DSA)核。第二计算核132与高速暂存存储器131相连,其可以接收从高速暂存存储器131提取的数据并针对这些数据进行执行。第一计算核110和第二计算核132可以实现不同类型或者不同阶段的计算任务。此外,第一计算核110也可以控制第二计算核132的执行,使得第二计算核132成为第一计算核110的协处理核。
关于第一硬件队列133,其可用于从第一计算核110接收加载请求。第一硬件队列133与第一计算核110和第一存储器120相连。加载请求指示从第一存储器120加载数据到高速暂存存储器131。加载请求也可以称为加载指令。
加载请求中可以带有同步通道配置信息。同步通道配置信息例如包括但不限于同步通道同步使能标记、同步通道同步标识、同步通道设置使能标记以及同步通道设置标识。
此外,加载请求中还可以带有第一存储器120中的第一地址和高速暂存存储器131中的第二地址,以便将第一存储器120中位于第一地址上的数据加载到高速暂存存储器131中的第二地址。
关于第二硬件队列134,其可用于从第一计算核110接收执行请求。第二硬件队列134与第一计算核110和高速暂存存储器131相连。执行请求指示从高速暂存存储器131提取数据到第二计算核132以便执行。执行请求也可以理解为执行指令。
执行请求中可以带有同步通道配置信息。同步通道配置信息例如包括但不限于同步通道同步使能标记、同步通道同步标识、同步通道设置使能标记以及同步通道设置标识。
此外,执行请求中还可以带有高速暂存存储器131中的第三地址,以便将高速暂存存储器131中位于第三地址上的数据提取到第二计算核132。在一些实施例中,加载请求中的第二地址与执行请求中的第三地址相同。在另一些实施例中,加载请求中的第二地址与执行请求中的第三地址不同。上述同步通道配置信息和地址信息例如可以是程序员可编程的,因而可以根据实际需求灵活设置。
可见,第一硬件队列133用于加载数据,其充当第二计算核132的数据生产者。第二计算核132消费来自高速暂存存储器131的数据。第二硬件队列134出口侧在触发执行请求之前需要检查执行请求所需的数据是否准备好。
第二计算核132释放高速暂存存储器空间,其充当用于第一硬件队列133的缓冲单元空间生产者。第一硬件队列133在触发数据加载请求到第一存储器120之前需检查缓冲单元空间是否准备好。
因而高速暂存存储器131和第二计算核132相互形成了生产者和消费者关系。
关于同步单元135,其与第一硬件队列133和第二硬件队列134相连,例如可以实现为电子硬件。同步单元135可以被配置为通过同步通道、第一硬件队列133中的加载请求中的同步通道配置信息、第二硬件队列134中的执行请求中的同步通道配置信息,使得加载请求和执行请求的触发相互配合。同步通道例如可以为多个,例如包括但不限于32或64个同步通道,其可以分为2组,分别用于数据加载和执行。
由此,能够通过加载请求和执行请求中的同步通道配置信息以及同步通道,实现数据加载和执行的可编程调度,满足生产者和消费者之间的同步,增强了灵活性从而提高前向兼容性,并且最大程度利用片上资源实现常用和新兴的计算要求,提高了吞吐量和整体性能。此外,也提供了一种基于GPGPU的DSA计算解决方案。
下面结合图3和图4详细描述加载请求和执行请求的触发过程。
在一些实施例中,同步单元135可以被配置为基于加载请求中的同步通道同步使能标记的设置与否,向第一存储器120发送加载请求,以从第一存储器120加载数据到高速暂存存储器131。例如,加载请求可以带有第一存储器120中的第一地址和高速暂存存储器131中的第二地址,以便将第一存储器120中位于第一地址上的数据加载到高速暂存存储器131中的第二地址。
同步通道同步使能标记例如可以通过加载请求中的1比特来实现。例如该比特的值为1表示同步通道同步使能标记被设置,该比特的值为0表示同步通道同步使能标记未被设置,或者反之亦然。应当理解,1比特只是举例说明,也可以采用更多比特来实现,本公开的范围在此不受限制。
具体来说,参见图3,同步单元135可以被配置为在框302处确定加载请求中的同步通道同步使能标记是否被设置。同步单元135还可以被配置为如果在框302处确定加载请求中的同步通道同步使能标记被设置,则在框304处确定与加载请求中的同步通道同步标识相关联的同步通道是否被设置。同步单元135还可以被配置为如果在框304处确定与加载请求中的同步通道同步标识相关联的同步通道被设置,则在框306处向第一存储器120发送加载请求,以从第一存储器120加载数据到高速暂存存储器131。
加载请求中的同步通道同步标识指示加载请求需等待或同步的同步通道,例如B。该同步通道被设置表明加载请求中指示的高速暂存存储器131中的第二地址已经可用,可以触发加载请求以便加载数据到高速暂存存储器131中的第二地址。该同步通道未被设置则表明加载请求中指示的高速暂存存储器131中的第二地址上仍有数据待处理,不可触发加载请求加载数据到该第二地址,以防发生数据覆盖。
此外,同步单元135还可以被配置为如果在框302处确定加载请求中的同步通道同步使能标记未被设置,则在框306向第一存储器120发送加载请求,以从第一存储器120加载数据到高速暂存存储器131。同步通道同步使能标记未被设置表明加载请求无需等待任何同步通道而直接触发。例如,对于初始的加载请求来说,此时高速暂存存储器131是空的,从而该加载请求无需等待任何同步通道,因而其中的同步通道同步使能标记可以未被设置,从而可以直接触发加载请求。
在从第一存储器120加载数据到高速暂存存储器131(具体为高速暂存存储器131中的第二地址)完成之后,同步单元135可以被配置为在框308处确定加载请求中的同步通道设置使能标记是否被设置,以及如果在框308处确定加载请求中的同步通道设置使能标记被设置,则在框310处设置与加载请求中的同步通道设置标识相关联的同步通道。
与同步通道同步使能标记类似,同步通道设置使能标记也可以通过加载请求中的1比特来实现,例如该比特的值为1表示同步通道同步使能标记被设置,该比特的值为0表示同步通道同步使能标记未被设置,或者反之亦然。应当理解,1比特只是举例说明,也可以采用更多比特来实现,本公开的范围在此不受限制。
在同步通道设置使能标记被设置时,加载请求中会带有同步通道设置标识,用于指示需设置的同步通道,例如A。通过设置与该同步通道设置标识相关联的同步通道,可以指示从第一存储器120加载数据到高速暂存存储器131中的第二地址已经完成,从而表明基于该第二地址上的数据的执行请求可以被触发。
此外,同步单元135还可以被配置为确定执行请求中的同步通道同步使能标记是否被设置,以及如果确定执行请求中的同步通道同步使能标记被设置,则基于与执行请求中的同步通道同步标识相关联的同步通道的设置与否,触发执行请求,以从高速暂存存储器131提取数据到第二计算核131,以便执行。
具体来说,参见图4,同步单元135可以被配置为在框402处确定执行请求中的同步通道同步使能标记是否被设置,以及如果在框402处确定执行请求中的同步通道同步使能标记被设置,则在框404处确定与执行请求中的同步通道同步标识相关联的同步通道是否被设置。如果在框404处确定与执行请求中的同步通道同步标识相关联的同步通道被设置,则同步单元135可以被配置为在框406处触发执行请求,以从高速暂存存储器131提取数据到第二计算核131,以便执行。执行请求中可以带有高速暂存存储器131中的第三地址,以便将高速暂存存储器131中位于第三地址上的数据提取到第二计算核132。
同步单元135还可以被配置为如果在框402处确定执行请求中的同步通道同步使能标记未被设置,则在框406处触发执行请求,以从高速暂存存储器131提取数据到第二计算核131,以便执行。
同步通道同步使能标记例如可以通过执行请求中的1比特来实现,与上文加载请求中的同步通道同步使能标记类似,不再赘述。
同步通道同步使能标记被设置表明执行请求需等待同步通道,此时,执行请求中会带有同步通道同步标识,用于指示需等待的同步通道。该同步通道被设置表明执行请求中指示的高速暂存存储器131中的第三地址上的数据已经加载完成,可以触发执行请求。该同步通道未被设置则表明执行请求中指示的高速暂存存储器131中的第三地址上的数据尚未加载完成,不可触发执行请求。
同步通道同步使能标记未被设置表明执行请求无需等待任何同步通道,可直接触发。
在一些实施例中,加载请求中的同步通道设置标识与执行请求中的同步通道同步标识相同。在此情况下,第二地址与第三地址相同。执行请求的触发依赖于加载请求从第一存储器120加载数据到高速暂存存储器131完成,也就是依赖于与加载请求中的同步通道设置标识相关联的同步通道被设置。
在另一些实施例中,加载请求中的同步通道设置标识与执行请求中的同步通道同步标识不同。在此情况下,第二地址和第三地址不同。执行请求的触发不依赖于加载请求从第一存储器120加载数据到高速暂存存储器131完成,也就是不依赖于与加载请求中的同步通道设置标识相关联的同步通道被设置。
回到图4,在从高速暂存存储器131(具体为高速暂存存储器131中的第三地址)提取数据到第二计算核132完成之后,同步单元135还可以被配置为在框408处确定执行请求中的同步通道设置标识是否被设置,以及如果在框408处确定执行请求中的同步通道设置使能标记被设置,则在框410处设置与执行请求中的同步通道设置标识相关联的同步通道。
同步通道设置使能标记也可以通过执行请求中的1比特来实现,与上文加载请求中的同步通道设置使能标记类似,不再赘述。
在同步通道设置使能标记被设置时,执行请求中会带有同步通道设置标识,用于指示需设置的同步通道,例如A。通过设置与该同步通道设置标识相关联的同步通道,可以指示从高速暂存存储器131中的第三地址提取数据到第二计算核132已经完成,从而表明基于该第三地址上的空间的加载请求可以被触发,以便从第一存储器120加载数据到高速暂存存储器131中的第三地址上。
由此,通过数据加载和执行的这种可编程调度(也可称为可编程同步),使得高速暂存存储器与第二计算核像流水线一般工作,能够充分并行地进行加载数据和执行数据,满足生产者和消费者之间的同步,增强了灵活性并且最大程度利用片上资源实现常用和新兴的计算要求,提高了吞吐量和整体性能。
图2示出了根据本公开的实施例的用于计算设备100中的数据加载和执行的可编程调度过程200的示意图。
如图2所示,在201,第一计算核(未示出)向第一硬件队列220添加加载请求。随后,如果第一硬件队列220中的加载请求中设置了同步通道同步使能标记和同步通道同步标识,例如A,则在202等待与该同步通道同步标识相关联的同步通道(例如同步通道A)被设置,在该同步通道被设置后,在203向第一存储器(未示出)发送加载请求,以从第一存储器加载数据到高速暂存存储器240。
如果第一硬件队列220中的加载请求中未设置同步通道同步使能标记,则无需等待同步通道,而直接在203向第一存储器发送加载请求。
在204,数据从第一存储器加载到高速暂存存储器240。
在数据加载完成以后,如果该加载请求中设置了同步通道设置使能标记和同步通道设置标识,例如B,则在205设置与该同步通道设置标识相关联的同步通道,例如同步通道B。
在206,第一计算核向第二硬件队列230添加执行请求。
如果第二硬件队列230中的执行请求中设置了同步通道同步使能标记和同步通道同步标识,例如B,则在207等待与该同步通道同步标识相关联的同步通道被设置。在该同步通道被设置(例如在205)之后,在208触发执行请求,以从高速暂存存储器240提取数据到第二计算核250。
在209,数据从高速暂存存储器240提取到第二计算核250,随后在第二计算核240开始执行。
在从高速暂存存储器240提取数据到第二计算核250完成之后,如果该执行请求中设置了同步通道设置使能标记和同步通道设置标识,例如A,则在210设置与该同步通道设置标识相关联的同步通道,例如同步通道A,表明高速暂存存储器240中的执行输入数据空间已经完全使用并且该空间能够是否,使得基于同步通道A的后续加载请求能够重新使用该高速暂存存储器空间以加载用于后续执行请求的数据。
由此,互为生产者和消费者的用于加载请求的第一硬件队列和用于执行请求的第二硬件队列能够通过同步通道彼此配合,实现流水线作业,提高并行化程度,从而增强了灵活性并且最大程度利用片上资源实现常用和新兴的计算要求,提高了吞吐量和整体性能。
本领域技术人员可以理解,这里所描述的方法步骤不仅仅局限于附图中所示例性示出的顺序,而是可以按照任何其他可行的顺序来执行。
本公开的以上描述用于使本领域的任何普通技术人员能够实现或使用本公开。对于本领域普通技术人员来说,本公开的各种修改都是显而易见的,并且本文定义的一般性原理也可以在不脱离本公开的精神和保护范围的情况下应用于其它变形。因此,本公开并不限于本文所述的实例和设计,而是与本文公开的原理和新颖性特性的最广范围相一致。