CN114428722A - 硬件仿真方法、装置、设备及存储介质 - Google Patents
硬件仿真方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114428722A CN114428722A CN202011181138.8A CN202011181138A CN114428722A CN 114428722 A CN114428722 A CN 114428722A CN 202011181138 A CN202011181138 A CN 202011181138A CN 114428722 A CN114428722 A CN 114428722A
- Authority
- CN
- China
- Prior art keywords
- simulation
- subtask
- processing unit
- target processing
- target
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开提供了一种硬件仿真方法、装置、设备及存储介质,包括:控制调度单元获取仿真任务的至少一个仿真子任务,并控制所述调度单元按照模拟时钟的时钟周期将所述至少一个仿真子任务发送至对应的目标处理单元;控制至少一个目标处理单元执行被分配的仿真子任务,得到所述仿真子任务对应的仿真处理结果;控制所述调度单元获取所述至少一个目标处理单元针对被分配的仿真子任务的仿真处理结果,并基于所述目标处理单元针对被分配的仿真子任务的仿真处理结果,确定所述仿真任务的仿真处理结果;所述仿真处理结果中包括仿真处理时长。
Description
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种硬件仿真方法、装置、设备及存储介质。
背景技术
AI加速器在投入生产前需要对其进行仿真模拟,以对AI加速器的性能进行评估。然而,进行精确的AI硬件模拟是很复杂,且工作量庞大的。一方面,AI硬件仿真模型需要模拟AI加速器的完全相似的功能。另一方面,AI硬件仿真模型需要提供上游使用AI加速器的性能数据。如何进行较为精确的AI硬件仿真模拟是待解决的技术问题。
发明内容
本公开实施例至少提供一种硬件仿真方法、装置、设备及存储介质。
第一方面,本公开实施例提供了一种硬件仿真方法,包括:
控制调度单元获取仿真任务的至少一个仿真子任务,并控制所述调度单元按照模拟时钟的时钟周期将所述至少一个仿真子任务发送至对应的目标处理单元;控制至少一个目标处理单元执行被分配的仿真子任务,得到所述仿真子任务对应的仿真处理结果;控制所述调度单元获取所述至少一个目标处理单元针对被分配的仿真子任务的仿真处理结果,并基于所述目标处理单元针对被分配的仿真子任务的仿真处理结果,确定所述仿真任务的仿真处理结果;所述仿真处理结果中包括仿真处理时长。
基于上述方法,在每个时钟周期到来时,将仿真子任务发送给对应的目标处理单元,可以精确记录各个仿真子任务发送给目标处理单元的时间,这样,各个目标处理单元在基于接收到的仿真子任务生成仿真处理结果后,也可以基于时钟周期记录完成仿真子任务的时间,由于时钟周期所能记录的时间精度较高,因此仿真处理结果中的仿真处理时长更加精确,进而确定出来的仿真任务的仿真处理时长也更加精确。
一种可能的实施方式中,根据以下方法确定每个所述仿真子任务对应的目标处理单元:基于预先设置的多个处理单元分别具有的至少一项处理功能,从所述多个处理单元中选择与每一个所述仿真子任务对应的至少一个候选处理单元;基于所述至少一个候选处理单元当前的任务处理状态,从所述至少一个候选处理单元中确定与每一个所述仿真子任务对应的目标处理单元。
基于各个候选处理单元的任务处理状态,确定每一个仿真子任务对应的目标处理单元,可以为每一个仿真子任务选择出最佳的目标处理单元,以使仿真子任务能够最快被执行,提高了仿真效率。
一种可能的实施方式中,所述控制所述调度单元按照模拟时钟的时钟周期将所述至少一个仿真子任务发送至对应的目标处理单元,包括:控制所述调度单元按照模拟时钟的时钟周期,调用任务调度函数,将所述至少一个仿真子任务发送至对应的目标处理单元。
一种可能的实施方式中,每个处理单元具有该处理单元具有的所述至少一项处理功能对应的至少一个应用程序接口;所述调用任务调度函数,将所述至少一个仿真子任务发送至对应的目标处理单元,包括:确定与每一个所述仿真子任务对应的目标处理单元的目标应用程序接口;基于任务调度函数通过调用所述至少一个目标处理单元的目标应用程序接口,将所述至少一个仿真子任务发送至对应的目标处理单元。
处理单元通过调用应用程序接口,将至少一个仿真子任务发送至对应的目标处理单元,消耗较少执行时间,且由于仿真子任务的仿真时间是从目标处理单元接收到仿真子任务开始计算的,因此,在将至少一个仿真子任务发送至对应的目标处理单元时所消耗的时间,并不包含在仿真子任务的仿真时间内,进而确定出的仿真时间更加精确。
一种可能的实施方式中,所述控制调度单元获取仿真任务的至少一个仿真子任务,包括:控制调度单元获取仿真任务的至少一个仿真子任务,以及所述至少一个仿真子任务对应的仿真顺序;所述控制所述调度单元按照模拟时钟的时钟周期将所述至少一个仿真子任务发送至对应的目标处理单元,包括:控制所述调度单元按照模拟时钟的时钟周期,在每个时钟周期到来时,按照所述仿真顺序,将所述至少一个仿真子任务发送至对应的目标处理单元。
一种可能的实施方式中,所述方法还包括:在每个时钟周期到来时,控制调度单元对存储的多个处理单元当前的任务处理状态进行更新。
一种可能的实施方式中,所述控制所述至少一个目标处理单元执行被分配的仿真子任务,得到所述仿真子任务对应的仿真处理结果,包括:控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,确定所述被分配的仿真子任务对应的仿真开始时刻;控制所述至少一个目标处理单元在所述仿真开始时刻执行所述被分配的仿真子任务,得到仿真处理结果。
在这个过程中,仿真子任务对应的仿真处理时长是从仿真开始时刻开始计算的,因此,可以精确的记录仿真子任务开始执行的时间,以及结束的时间,从而得到更加精确的仿真时间。
一种可能的实施方式中,所述控制所述至少一个目标处理单元基于所述仿真子任务中携带的预处理经验时长,确定所述被分配的仿真子任务对应的仿真开始时刻,包括:控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,以及所述至少一个目标处理单元当前的任务处理状态,确定所述被分配的仿真子任务对应的仿真开始时刻。
一种可能的实施方式中,所述控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,以及所述至少一个目标处理单元当前的任务处理状态,确定所述被分配的仿真子任务对应的仿真开始时刻,包括:若所述至少一个目标处理单元当前无正在执行的其他仿真子任务,则将从接收所述仿真指令的时刻开始,所述预处理经验时长后的时刻作为所述仿真开始时刻。
一种可能的实施方式中,所述控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,以及所述至少一个目标处理单元当前的任务处理状态,确定所述被分配的仿真子任务对应的仿真开始时刻,包括:若所述至少一个目标处理单元中存在待完成的其他仿真子任务,则将所述处理完所述待完成的其他仿真子任务的结束时刻与候选开始时刻当中,靠前的时刻作为所述仿真开始时刻,其中,所述候选开始时刻为从接收所述仿真指令的时刻开始,经过所述预处理经验时长后的时刻。
一种可能的实施方式中,所述控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,以及所述至少一个目标处理单元当前的任务处理状态,确定所述被分配的仿真子任务对应的仿真开始时刻,包括:若所述至少一个目标处理单元当前正在执行其他仿真子任务,则将从所述其他仿真子任务执行结束的时刻开始,所述预处理经验时长后的时刻作为仿真开始时刻。
一种可能的实施方式中,所述预处理经验时长用于启动执行所述被分配的仿真子任务对应的线程。
第二方面,本公开实施例还提供一种硬件仿真装置,包括:
获取模块,用于控制调度单元获取仿真任务的至少一个仿真子任务,并控制所述调度单元按照模拟时钟的时钟周期将所述至少一个仿真子任务发送至对应的目标处理单元;仿真模块,用于控制至少一个目标处理单元执行被分配的仿真子任务,得到所述仿真子任务对应的仿真处理结果;确定模块,用于控制所述调度单元获取所述至少一个目标处理单元针对被分配的仿真子任务的仿真处理结果,并基于所述目标处理单元针对被分配的仿真子任务的仿真处理结果,确定所述仿真任务的仿真处理结果;所述仿真处理结果中包括仿真处理时长。
一种可能的实施方式中,所述获取模块,用于根据以下方法确定每个所述仿真子任务对应的目标处理单元:基于预先设置的多个处理单元分别具有的至少一项处理功能,从所述多个处理单元中选择与每一个所述仿真子任务对应的至少一个候选处理单元;基于所述至少一个候选处理单元当前的任务处理状态,从所述至少一个候选处理单元中确定与每一个所述仿真子任务对应的目标处理单元。
一种可能的实施方式中,所述获取模块,在所述控制所述调度单元按照模拟时钟的时钟周期将所述至少一个仿真子任务发送至对应的目标处理单元时,用于:控制所述调度单元按照模拟时钟的时钟周期,调用任务调度函数,将所述至少一个仿真子任务发送至对应的目标处理单元。
一种可能的实施方式中,每个处理单元具有该处理单元具有的所述至少一项处理功能对应的至少一个应用程序接口;述获取模块,在调用任务调度函数,将所述至少一个仿真子任务发送至对应的目标处理单元时,用于:确定与每一个所述仿真子任务对应的目标处理单元的目标应用程序接口;基于任务调度函数通过调用所述至少一个目标处理单元的目标应用程序接口,将所述至少一个仿真子任务发送至对应的目标处理单元。
一种可能的实施方式中,所述获取模块,在控制调度单元获取仿真任务的至少一个仿真子任务时,用于:控制调度单元获取仿真任务的至少一个仿真子任务,以及所述至少一个仿真子任务对应的仿真顺序;所述获取模块,在控制所述调度单元按照模拟时钟的时钟周期将所述至少一个仿真子任务发送至对应的目标处理单元时,用于:控制所述调度单元按照模拟时钟的时钟周期,在每个时钟周期到来时,按照所述仿真顺序,将所述至少一个仿真子任务发送至对应的目标处理单元。
一种可能的实施方式中,所述装置还包括更新模块,用于:在每个时钟周期到来时,控制调度单元对存储的多个处理单元当前的任务处理状态进行更新。
一种可能的实施方式中,所述仿真模块,在控制所述至少一个目标处理单元执行被分配的仿真子任务,得到所述仿真子任务对应的仿真处理结果时,用于:控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,确定所述被分配的仿真子任务对应的仿真开始时刻;控制所述至少一个目标处理单元在所述仿真开始时刻执行所述被分配的仿真子任务,得到仿真处理结果。
一种可能的实施方式中,所述仿真模块,在控制所述至少一个目标处理单元基于所述仿真子任务中携带的预处理经验时长,确定所述被分配的仿真子任务对应的仿真开始时刻时,用于:控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,以及所述至少一个目标处理单元当前的任务处理状态,确定所述被分配的仿真子任务对应的仿真开始时刻。
一种可能的实施方式中,所述仿真模块,在控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,以及所述至少一个目标处理单元当前的任务处理状态,确定所述被分配的仿真子任务对应的仿真开始时刻时,用于:若所述至少一个目标处理单元当前无正在执行的其他仿真子任务,则将从接收所述仿真指令的时刻开始,所述预处理经验时长后的时刻作为所述仿真开始时刻。
一种可能的实施方式中,所述仿真模块,在控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,以及所述至少一个目标处理单元当前的任务处理状态,确定所述被分配的仿真子任务对应的仿真开始时刻时,用于:若所述至少一个目标处理单元中存在待完成的其他仿真子任务,则将所述处理完所述待完成的其他仿真子任务的结束时刻与候选开始时刻当中,靠前的时刻作为所述仿真开始时刻,其中,所述候选开始时刻为从接收所述仿真指令的时刻开始,经过所述预处理经验时长后的时刻。
一种可能的实施方式中,所述仿真模块,在控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,以及所述至少一个目标处理单元当前的任务处理状态,确定所述被分配的仿真子任务对应的仿真开始时刻时,用于:若所述至少一个目标处理单元当前正在执行其他仿真子任务,则将从所述其他仿真子任务执行结束的时刻开始,所述预处理经验时长后的时刻作为仿真开始时刻。
一种可能的实施方式中,所述预处理经验时长用于启动执行所述被分配的仿真子任务对应的线程。
第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
关于上述硬件仿真装置、计算机设备、及计算机可读存储介质的效果描述参见上述硬件仿真方法的说明,这里不再赘述。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种硬件仿真方法的流程图;
图2示出了本公开实施例所提供的硬件仿真方法中,确定每个仿真子任务对应的目标处理单元的过程的流程图;
图3示出了本公开实施例所提供的处理单元和对应的应用程序接口的示意图;
图4示出了本工卡实施例所提供的硬件仿真方法中,仿真子任务执行进度示意图;
图5示出了本公开实施例所提供的硬件仿真方法中,确定仿真结果的过程的流程图;
图6示出了本公开实施例所提供的一种硬件仿真装置的示意图;
图7示出了本公开实施例所提供的一种计算机设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
经研究发现,相关技术中,在确定仿真任务对应的仿真处理时长时,一般是将仿真任务输入仿真器的时刻为仿真起点,以仿真器输出仿真结果的时刻为仿真结束点,仿真起点与仿真结束点之间的时长作为仿真处理时长,然而这种统计方法中,在将仿真任务输入至仿真器之后,仿真器中的调度单元需要对各个仿真任务进行调度,以分配到对应的处理单元,处理单元也需要一段的时间来感知仿真任务,以及启动与仿真任务对应的线程,在这个过程中,调度单元对各个仿真任务进行调度所需的时间、处理单元感知仿真任务所需的时间、以及处理单元启动线程所需要的时间都不属于执行仿真任务的仿真处理时间,且这些时间是软件在仿真过程中执行软件所需要的时间,实际在芯片运行过程中并不存在上述步骤,因此,相关技术中确定的仿真处理时长精度较低。
基于上述研究,本公开提供了一种硬件仿真方法、装置、设备及存储介质,在上述方法中,引入了模拟时钟,以精确地控制和记录仿真时间,在每个模拟时钟的时钟周期到来时,将仿真子任务发送给对应的目标处理单元,可以精确记录各个仿真子任务发送给目标处理单元的时间,这样,各个目标处理单元在基于接收到的仿真子任务生成仿真处理结果后,也可以基于时钟周期记录完成仿真子任务的时间,由于时钟周期所能记录的时间精度较高,因此仿真处理结果中的仿真处理时长更加精确,进而确定出来的仿真任务的仿真处理时长也更加精确。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种硬件仿真方法进行详细介绍,本公开实施例所提供的硬件仿真方法主要应用于AI加速器的仿真模拟,或者也可以应用于其他硬件设备的仿真模拟,本公开实施例对此不做限定。硬件仿真方法的执行主体为具有一定计算能力的计算机设备上,该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字处理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该硬件仿真方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
参见图1所示,为本公开实施例提供的一种硬件仿真方法的流程图,所述方法包括步骤101~步骤103,其中:
步骤101、控制调度单元获取仿真任务的至少一个仿真子任务,并控制所述调度单元按照模拟时钟的时钟周期将所述至少一个仿真子任务发送至对应的目标处理单元。
步骤102、控制至少一个目标处理单元执行被分配的仿真子任务,得到所述仿真子任务对应的仿真处理结果。
步骤103、控制所述调度单元获取所述至少一个目标处理单元针对被分配的仿真子任务的仿真处理结果,并基于所述目标处理单元针对被分配的仿真子任务的仿真处理结果,确定所述仿真任务的仿真处理结果;所述仿真处理结果中包括仿真处理时长。
基于上述方法,在每个模拟时钟的时钟周期到来时,将仿真子任务发送给对应的目标处理单元,可以精确记录各个仿真子任务发送给目标处理单元的时间,这样,各个目标处理单元在基于接收到的仿真子任务生成仿真处理结果后,也可以基于时钟周期记录完成仿真子任务的时间,由于时钟周期所能记录的时间精度较高,因此仿真处理结果中的仿真处理时长更加精确,进而确定出来的仿真任务的仿真处理时长也更加精确。
以下是针对上述步骤101~步骤103的详细描述。
所述仿真任务对应的至少一个仿真子任务,可以是将仿真任务分解之后的任务,示例性的,若仿真任务为识别图像中的动物是猫还是狗,实际执行过程中,需要先读取图片,然后对图像进行二值化处理,再对图像进行语义分割,再基于语义分割结果识别动物是猫还是狗,该仿真任务对应的仿真子任务可以包括读取图片、对图片进行二值化处理、对二值图像进行语义分割、基于语义分割图像进行动物识别等多个任务。
实际应用中,可以基于预先设置的任务分解系统,将仿真任务分解成至少一个仿真子任务,然后再将至少一个仿真子任务输入至仿真器的调度单元中。
所述时钟周期是由中央处理器CPU时钟定义的定长时间间隔,是CPU工作的最小时间单位,时钟周期的频率决定CPU的计算速度,时钟周期的频率越高,CPU的计算速度越快。
在一种可能的实施方式中,所述控制调度单元获取仿真任务对应的至少一个仿真子任务,可以是控制调度单元获取仿真任务对应的至少一个仿真子任务,以及至少一个仿真子任务的对应的仿真顺序;所述控制所述调度单元按照模拟时钟的时钟周期将所述至少一个仿真子任务发送至对应的目标处理单元,可以是在每个时钟周期到来时,按照接收到的仿真顺序,将所述至少一个仿真子任务发送至对应的目标处理单元。
这里,在每个时钟周期到来时,按照接收到的仿真顺序,将所述至少一个仿真子任务发送至对应的目标处理单元时,可以是在每个时钟周期的上升沿到来之时,按照接收到的仿真顺序,将所述至少一个仿真子任务中的一个仿真子任务发送给对应的处理单元,每个时钟周期都可以执行将仿真子任务下发给处理单元的过程。
示例性的,延续上例,上述多个仿真子任务对应的仿真顺序为读取图片、对图片进行二值化处理、对二值图像进行语义分割、基于语义分割图像进行动物识别,则在进行仿真子任务的分配时,可以控制调度单元基于该仿真顺序进行分配。
在一种可能的实施方式中,控制调度单元获取到的各个仿真子任务可以是各个仿真子任务对应的标识信息,所述至少一个仿真子任务对应的仿真顺序可以是至少一个仿真子任务对应的标识信息分别对应的执行位次。
例如,上例中,读取图片、对图片进行二值化处理、对二值图像进行语义分割、基于语义分割图像进行动物识别分别对应的标识信息可以为A,B,C,D,各个仿真子任务对应的标识信息分别对应的执行位次可以是1,2,3,4。
在一种可能的实施方式中,在控制调度单元按照模拟时钟的时钟周期将所述至少一个仿真子任务发送至对应的目标处理单元之前,还可以先确定所述至少一个仿真子任务对应的目标处理单元。
在一种可能的实施方式中,在确定每个仿真子任务对应的目标处理单元时,可以根据如图2所示的方法,包括以下几个步骤:
步骤201、基于预先设置的多个处理单元分别具有的至少一项处理功能,从所述多个处理单元中选择与每一个所述仿真子任务对应的至少一个候选处理单元。
具体的,针对每一个仿真子任务,在选择与该仿真子任务对应的候选处理单元时,可以基于预先设置的多个处理单元对应的处理功能,查找可以执行该仿真子任务的处理单元,然后将查找到的处理单元作为该仿真子任务对应的候选处理单元。
步骤202、基于所述至少一个候选处理单元当前的任务处理状态,从所述至少一个候选处理单元中确定与每一个所述仿真子任务对应的目标处理单元。
在一种可能的实施方式中,处理单元对应的处理功能可能有多个,不同的处理功能,对应处理单元的不同的处理模块,各个处理模块之间可以串行执行,在基于候选处理单元当前的任务处理状态,确定与每一个仿真子任务对应的目标处理单元时,可以将当前的任务处理状态为空闲状态(即当前并无正在执行的仿真子任务)的候选处理单元作为目标处理单元,或者将当前的任务处理状态中待处理的仿真子任务的个数最少的候选处理单元作为目标处理单元。
示例性的,若处理单元A对应的预先设置的处理功能包括处理功能1和处理功能2,处理单元B对应的预先设置的处理功能包括处理功能2和处理功能3,处理单元C对应的预先设置的处理功能包括处理功能2,若处理单元A当前正在执行与处理功能1对应的仿真子任务,且有另外两个其他仿真子任务正在等待,处理单元B正在执行与处理功能2对应的仿真子任务,且无其他仿真子任务等待,处理单元C正在执行与处理功能2对应的仿真子任务,且有三个其他仿真子任务正在等待,当有一与处理功能2对应的仿真子任务需要进行分配时,则可以将该仿真子任务分配给处理单元B。
在一种可能的实施方式中,处理单元对应的处理功能可能有多个,不同的处理功能,对应处理单元的不同的处理模块,各个处理模块之间可以并行执行,调度单元中所存储的处理单元当前的任务处理状态包括处理单元的各个处理模块当前的任务处理状态,在这种实施方式下,在基于候选处理单元当前的任务处理状态,确定每一个仿真子任务对应的目标处理单元时,可以将候选处理单元中,与仿真子任务对应处理模块的处理状态为空闲状态,或者将候选处理单元中,与仿真子任务对应处理模块的待处理的仿真子任务个数最少的候选处理单元作为目标处理单元。
示例性的,若处理单元A对应的预先设置的处理功能包括处理功能1和处理功能2,处理单元B对应的预先设置的处理功能包括处理功能2和处理功能3,处理单元C对应的预先设置的处理功能包括处理功能1,若处理单元A当前正在执行与处理功能1对应的仿真子任务,且有另外两个其他仿真子任务正在等待,处理单元B正在执行与处理功能2对应的仿真子任务,且无其他仿真子任务等待,处理单元C正在执行与处理功能1对应的仿真子任务,且有三个其他仿真子任务正在等待,当有一与处理功能1对应的仿真子任务需要进行分配时,则可以将该仿真子任务分配给处理单元A,处理单元A则可以在处理其他仿真子任务的同时,并行执行该仿真子任务。
基于各个候选处理单元的处理状态,确定每一个仿真子任务对应的目标处理单元,可以为每一个仿真子任务选择出最佳的目标处理单元,以使仿真子任务能够最快被执行,提高了仿真效率。
具体实施中,所述多个处理单元当前的任务处理状态可以存储在调度单元中,且每个时钟周期到来时,可以根据所述多个处理单元的处理结果,对调度单元中存储的所述多个处理单元当前的任务处理状态进行更新。
在一种可能的实施方式中,每个处理单元具有该处理单元具有的所述至少一项处理功能对应的至少一个应用程序接口,同一处理单元的不同处理功能对应的应用程序接口的应用程序接口号可以不同。在另外一种可能的实施方式中,不同处理单元中,同一处理功能对应的应用程序接口的应用程序接口号可以相同。
示例性的,若处理单元1可以执行仿真子任务A和仿真子任务B,处理单元2可以执行仿真子任务A和仿真子任务C,处理单元3可以执行仿真子任务B,仿真子任务A对应的应用功能程序接口号为API1,仿真子任务B对应的应用程序接口号为API2,仿真子任务3对应的应用程序接口号为API3,则处理单元1对应的应用程序接口号为API1和API2,处理单元2对应的应用程序接口号为API1和API3,处理单元3对应的应用程序接口号为API2,具体如图3所示。
这里,调度单元在调用各个目标处理单元的应用程序接口时,采用无时序方法进行调用,各个应用程序接口之间相互独立,不依赖于时间的顺序。
在一种可能的实施方式中,在控制调度单元按照模拟时钟的时钟周期将至少一个仿真子任务发送至对应的目标处理单元时,可以是控制调度单元按照模拟时钟的时钟周期,调用任务调度函数,将所述至少一个仿真子任务发送至对应的目标处理单元。
具体的,在调用任务调度函数,将至少一个仿真子任务发送至对应的目标处理单元时,可以先确定与每一个仿真子任务对应的目标处理单元的目标应用程序接口,然后基于任务调度函数通过调用至少一个目标处理单元的目标应用程序接口,将所述至少一个仿真子任务发送至对应的目标处理单元。
处理单元通过调用应用程序接口,将至少一个仿真子任务发送至对应的目标处理单元,消耗较少执行时间,且由于仿真子任务的仿真时间是从目标处理单元接收到仿真子任务开始计算的,因此,在将至少一个仿真子任务发送至对应的目标处理单元时所消耗的时间,并不包含在仿真子任务的仿真时间内,进而确定出的仿真时间更加精确。
实际应用中,调度单元在调用任务调度函数时,可以采用systemC语言中“时钟”触发“类方法”的方式,所述“时钟”即上述模拟时钟的时钟周期,所述“类方法”即所述任务调度函数,所述“时钟”触发“类方法”,即按照模拟时钟的时钟周期,调用任务调度函数进行任务调度。基于这种方法,可以精确控制各个仿真子任务的下发时间,进而实现对于仿真任务的精确控制。
下面,将结合具体附图,对调度单元在将各个仿真子任务分配至对应的目标处理单元之后,处理单元的处理过程展示介绍。
参见图4所示,为本公开所提供的硬件仿真方法中,仿真子任务执行进度示意图,若调度单元将仿真子任务task0,task1,task3分别在时钟周期clk0,clk1,clk3时刻发送给目标处理单元1,将仿真子任务task2,task4分别在clk2,clk4时刻发送给目标处理单元2,则:
针对目标处理单元1,在clk0时刻接收到仿真子任务task0,且无正在执行的其他仿真子任务,则可以在clk0时刻开始执行仿真子任务task0;目标处理单元1在clk1时刻接收到仿真子任务task1,但当前正在执行的仿真子任务task0并未执行完,则将仿真子任务task1添加至目标处理单元1的等待队列中,目标处理单元1在执行完仿真子任务task0之后,即在图中a点对应的时刻位置开始,执行仿真子任务task1;同理,目标处理单元1在clk3时刻接收到仿真子任务task3,则将仿真子任务task3添加至目标处理单元1的等待队列中,等待队列中,仿真子任务task1排在task3的前边;目标处理单元在执行完task1之后,即在图中b点对应的时刻位置开始,执行仿真子任务task3。
针对目标处理单元2,在task2时刻接收到仿真子任务clk2,且无正在执行的其他仿真子任务,则可以在clk2时刻开始执行仿真子任务task2;目标处理单元在clk4时刻接收到仿真子任务task4,当前正在执行的仿真子任务task2并未执行完,则将仿真子任务task4添加至目标处理单元2的等待队列中,目标处理单元2在执行完仿真子任务task2之后,即在图中c点对应的时刻位置开始,执行仿真子任务task4。
在将至少一个仿真子任务发送至对应的目标处理单元之后,可以控制至少一个目标处理单元执行被分配的仿真子任务,得到仿真子任务对应的仿真处理结果,这里,需要说明的是,调度单元分配仿真子任务与处理单元执行被分配的仿真子任务可以是并行执行的。
具体的,可以参见图5所示,包括以下几个步骤:
步骤501、控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,确定所述被分配的仿真子任务对应的仿真开始时刻。
步骤502、控制所述至少一个目标处理单元在所述仿真开始时刻执行所述被分配的仿真子任务,得到仿真处理结果。
由于处理单元是周期性刷新感知是否有新任务被分配的,目标处理单元在接收到调度单元被分配的仿真子任务之后,需要一段时间被目标处理单元感知到,并且处理被分配的仿真子任务需要启动对应的线程,启动线程也需要一定的时间,然而感知仿真子任务以及启动线程均是仿真过程中为执行仿真子任务所耗费的时间,这些时间并非是芯片在真正运行过程中所需耗费的时间,即不是仿真子任务对应的仿真处理时长,基于此,可以为仿真子任务设置预处理经验时长,该预处理经验时长用于目标处理单元感知仿真子任务,以及目标处理单元启动与被分配的仿真子任务对应的线程。
这里,目标处理单元采用“事件”触发“线程”的方式,来实现对于仿真子任务的处理,即当“事件”仿真子任务被分配到目标处理单元发生之后,目标处理单元触发对应的线程。
在一种可能的实施方式中,在控制至少一个目标处理单元基于仿真子任务中携带的预处理经验时长,确定被分配的仿真子任务对应的仿真开始时刻时,可以基于被分配的仿真子任务中携带的预处理经验时长,以及所述至少一个目标处理单元当前的任务处理状态,确定被分配的仿真子任务对应的仿真开始时刻。
具体的,目标处理单元当前的任务处理状态,可以分为以下几种情况:
情况1、目标处理单元当前没有正在执行的其他仿真子任务。
若目标处理单元当前无正在执行的其他仿真子任务,则可以将从接收仿真指令的时刻开始,所述预设处理时长后的时刻作为仿真开始时刻。
在一种可能的实施方式中,所述预设处理时长可以为N个时钟周期,示例性的,若预设处理时长为10个时钟周期,目标处理单元在第二个时钟周期接收到仿真子任务,则目标处理单元可以在第12个时钟周期开始执行仿真子任务。
情况2、目标处理单元当前存在待完成的其他仿真子任务。
这里,所述目标处理单元当前存在待完成的其他仿真子任务,包括目标处理单元当前存在正在执行的其他仿真子任务,或者目标处理单元当前存在等待完成的其他仿真子任务。
若目标处理单元中存在待完成的其他仿真子任务,在一种可能的实施方式中,可以将从接收仿真指令的时刻开始,所述预设处理时长后的时刻作为候选仿真时刻,然后将处理完待完成的其他仿真子任务的结束时刻与候选仿真时刻当中,靠前的时刻作为仿真开始时刻。
示例性的,若从接收仿真指令的时刻开始,预设处理时长后的时刻为时刻1,处理单元处理完待完成的其他仿真子任务的结束时刻为时刻2,若时刻1比时刻2靠前,则可以将时刻1作为仿真开始时刻,若时刻2比时刻1靠前,则可以将时刻2作为仿真开始时刻。
这里,需要说明的是,上述实施方式中目标处理单元需要满足执行其他仿真子任务和对被分配的仿真子任务进行预处理(即感知仿真子任务,以及启动与被分配的仿真子任务对应的线程)并行执行,即在执行其他仿真子任务的同时,可以对被分配的仿真子任务进行预处理。
在另外一种可能的实施方式中,若目标处理单元不满足执行其他仿真子任务和对被分配的仿真子任务进行预处理并行执行,即在执行其他仿真子任务的同时,无法满足对于被分配的仿真子任务的预处理的过程,在这种情况下,在确定仿真开始时刻时,可以将从其他仿真子任务执行结束的时刻开始,预设处理时长后的时刻作为仿真开始时刻。
上述仿真子任务的预处理经验时长可以与仿真子任务的类型有关,同一类型的仿真子任务,对应的预处理经验时长可以相同,在控制调度单元获取仿真任务对应的至少一个仿真子任务时,可以同时获取每个仿真子任务对应的预处理经验时长,或者,控制调度单元获取的至少一个仿真子任务中携带有所述至少一个仿真子任务对应的预处理经验时长。
在控制目标处理单元在仿真开始时刻执行仿真子任务的同时,可以对仿真子任务对应的仿真处理时长进行记录,在生成仿真子任务的仿真结果之后,将记录的仿真子任务的仿真处理时长添加进仿真结果,并发送给调度单元。
调度单元在获取至少一个目标处理单元针对被分配的仿真子任务的仿真处理结果后,可以基于至少一个目标处理单元针对被分配的仿真子任务的仿真处理结果,确定仿真任务的仿真处理结果,具体的,可以基于多个目标处理单元执行被分配的仿真子任务所需的仿真处理时长,确定执行仿真任务所需的仿真处理时长。
示例性的,仿真任务对应的仿真子任务包括仿真子任务1,仿真子任务2,仿真子任务3,以及仿真子任务4,仿真子任务1对应的仿真处理时长为时钟周期2~时钟周期10,仿真子任务2对应的仿真处理时长为时钟周期3~时钟周期5,仿真子任务3对应的仿真处理时长为时钟周期4~时钟周期11,仿真子任务4对应的仿真处理时长为时钟周期8~时钟周期12,则该仿真任务对应的仿真处理时长为时钟周期2~时钟周期12。
通过上述方法,在每个时钟周期到来时,将仿真子任务发送给对应的目标处理单元,可以精确记录各个仿真子任务发送给目标处理单元的时间,进一步的,目标处理单元可以基于被分配的仿真子任务中携带的预处理经验时长,精确的确定被分配的仿真子任务对应的仿真开始时刻,然后再生成仿真处理结果,在这个过程中,仿真子任务对应的仿真处理时长是从仿真开始时刻开始计算的,仿真处理时长并不包括目标处理单元对于仿真子任务执行预处理的时长,以及调度单元进行仿真子任务调度的时长,因此,确定出的仿真处理时长更加精确。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
参照图6所示,为本公开实施例提供的一种硬件仿真装置的示意图,包括:获取模块601、仿真模块602、确定模块603;其中,
获取模块601,用于控制调度单元获取仿真任务的至少一个仿真子任务,并控制所述调度单元按照模拟时钟的时钟周期将所述至少一个仿真子任务发送至对应的目标处理单元;
仿真模块602,用于控制至少一个目标处理单元执行被分配的仿真子任务,得到所述仿真子任务对应的仿真处理结果;
确定模块603,用于控制所述调度单元获取所述至少一个目标处理单元针对被分配的仿真子任务的仿真处理结果,并基于所述目标处理单元针对被分配的仿真子任务的仿真处理结果,确定所述仿真任务的仿真处理结果;所述仿真处理结果中包括仿真处理时长。
一种可能的实施方式中,所述获取模块601,用于根据以下方法确定每个所述仿真子任务对应的目标处理单元:
基于预先设置的多个处理单元分别具有的至少一项处理功能,从所述多个处理单元中选择与每一个所述仿真子任务对应的至少一个候选处理单元;
基于所述至少一个候选处理单元当前的任务处理状态,从所述至少一个候选处理单元中确定与每一个所述仿真子任务对应的目标处理单元。
一种可能的实施方式中,所述获取模块601,在所述控制所述调度单元按照模拟时钟的时钟周期将所述至少一个仿真子任务发送至对应的目标处理单元时,用于:
控制所述调度单元按照模拟时钟的时钟周期,调用任务调度函数,将所述至少一个仿真子任务发送至对应的目标处理单元。
一种可能的实施方式中,每个处理单元具有该处理单元具有的所述至少一项处理功能对应的至少一个应用程序接口;
所述获取模块601,在调用任务调度函数,将所述至少一个仿真子任务发送至对应的目标处理单元时,用于:
确定与每一个所述仿真子任务对应的目标处理单元的目标应用程序接口;
基于任务调度函数通过调用所述至少一个目标处理单元的目标应用程序接口,将所述至少一个仿真子任务发送至对应的目标处理单元。
一种可能的实施方式中,所述获取模块601,在控制调度单元获取仿真任务的至少一个仿真子任务时,用于:
控制调度单元获取仿真任务的至少一个仿真子任务,以及所述至少一个仿真子任务对应的仿真顺序;
所述获取模块601,在控制所述调度单元按照模拟时钟的时钟周期将所述至少一个仿真子任务发送至对应的目标处理单元时,用于:
控制所述调度单元按照模拟时钟的时钟周期,在每个时钟周期到来时,按照所述仿真顺序,将所述至少一个仿真子任务发送至对应的目标处理单元。
一种可能的实施方式中,所述装置还包括更新模块,用于:
在每个时钟周期到来时,控制调度单元对存储的多个处理单元当前的任务处理状态进行更新。
一种可能的实施方式中,所述仿真模块602,在控制所述至少一个目标处理单元执行被分配的仿真子任务,得到所述仿真子任务对应的仿真处理结果时,用于:
控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,确定所述被分配的仿真子任务对应的仿真开始时刻;
控制所述至少一个目标处理单元在所述仿真开始时刻执行所述被分配的仿真子任务,得到仿真处理结果。
一种可能的实施方式中,所述仿真模块602,在控制所述至少一个目标处理单元基于所述仿真子任务中携带的预处理经验时长,确定所述被分配的仿真子任务对应的仿真开始时刻时,用于:
控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,以及所述至少一个目标处理单元当前的任务处理状态,确定所述被分配的仿真子任务对应的仿真开始时刻。
一种可能的实施方式中,所述仿真模块602,在控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,以及所述至少一个目标处理单元当前的任务处理状态,确定所述被分配的仿真子任务对应的仿真开始时刻时,用于:
若所述至少一个目标处理单元当前无正在执行的其他仿真子任务,则将从接收所述仿真指令的时刻开始,所述预处理经验时长后的时刻作为所述仿真开始时刻。
一种可能的实施方式中,所述仿真模块602,在控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,以及所述至少一个目标处理单元当前的任务处理状态,确定所述被分配的仿真子任务对应的仿真开始时刻时,用于:
若所述至少一个目标处理单元中存在待完成的其他仿真子任务,则将所述处理完所述待完成的其他仿真子任务的结束时刻与候选开始时刻当中,靠前的时刻作为所述仿真开始时刻,其中,所述候选开始时刻为从接收所述仿真指令的时刻开始,经过所述预处理经验时长后的时刻。
一种可能的实施方式中,所述仿真模块602,在控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,以及所述至少一个目标处理单元当前的任务处理状态,确定所述被分配的仿真子任务对应的仿真开始时刻时,用于:
若所述至少一个目标处理单元当前正在执行其他仿真子任务,则将从所述其他仿真子任务执行结束的时刻开始,所述预处理经验时长后的时刻作为仿真开始时刻。
一种可能的实施方式中,所述预处理经验时长用于启动执行所述被分配的仿真子任务对应的线程。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
基于同一技术构思,本公开实施例还提供了一种计算机设备。参照图7所示,为本公开实施例提供的计算机设备700的结构示意图,,包括处理器701、存储器702、和总线703。其中,存储器702用于存储执行指令,包括内存7021和外部存储器7022;这里的内存7021也称内存储器,用于暂时存放处理器701中的运算数据,以及与硬盘等外部存储器7022交换的数据,处理器701通过内存7021与外部存储器7022进行数据交换,当计算机设备700运行时,处理器701与存储器702之间通过总线703通信,使得处理器701在执行以下指令:
控制调度单元获取仿真任务的至少一个仿真子任务,并控制所述调度单元按照模拟时钟的时钟周期将所述至少一个仿真子任务发送至对应的目标处理单元;
控制至少一个目标处理单元执行被分配的仿真子任务,得到所述仿真子任务对应的仿真处理结果;
控制所述调度单元获取所述至少一个目标处理单元针对被分配的仿真子任务的仿真处理结果,并基于所述目标处理单元针对被分配的仿真子任务的仿真处理结果,确定所述仿真任务的仿真处理结果;所述仿真处理结果中包括仿真处理时长。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的硬件仿真方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例所提供的硬件仿真方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的硬件仿真方法的步骤,具体可参见上述方法实施例,在此不再赘述。
本公开实施例还提供一种计算机程序,该计算机程序被处理器执行时实现前述实施例的任意一种方法。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
Claims (15)
1.一种硬件仿真方法,其特征在于,包括:
控制调度单元获取仿真任务的至少一个仿真子任务,并控制所述调度单元按照模拟时钟的时钟周期将所述至少一个仿真子任务发送至对应的目标处理单元;
控制至少一个目标处理单元执行被分配的仿真子任务,得到所述仿真子任务对应的仿真处理结果;
控制所述调度单元获取所述至少一个目标处理单元针对被分配的仿真子任务的仿真处理结果,并基于所述目标处理单元针对被分配的仿真子任务的仿真处理结果,确定所述仿真任务的仿真处理结果;所述仿真处理结果中包括仿真处理时长。
2.根据权利要求1所述的方法,其特征在于,根据以下方法确定每个所述仿真子任务对应的目标处理单元:
基于预先设置的多个处理单元分别具有的至少一项处理功能,从所述多个处理单元中选择与每一个所述仿真子任务对应的至少一个候选处理单元;
基于所述至少一个候选处理单元当前的任务处理状态,从所述至少一个候选处理单元中确定与每一个所述仿真子任务对应的目标处理单元。
3.根据权利要求2所述的方法,其特征在于,所述控制所述调度单元按照模拟时钟的时钟周期将所述至少一个仿真子任务发送至对应的目标处理单元,包括:
控制所述调度单元按照模拟时钟的时钟周期,调用任务调度函数,将所述至少一个仿真子任务发送至对应的目标处理单元。
4.根据权利要求3所述的方法,其特征在于,每个处理单元具有该处理单元具有的所述至少一项处理功能对应的至少一个应用程序接口;
所述调用任务调度函数,将所述至少一个仿真子任务发送至对应的目标处理单元,包括:
确定与每一个所述仿真子任务对应的目标处理单元的目标应用程序接口;
基于任务调度函数通过调用所述至少一个目标处理单元的目标应用程序接口,将所述至少一个仿真子任务发送至对应的目标处理单元。
5.根据权利要求1所述的方法,其特征在于,所述控制调度单元获取仿真任务的至少一个仿真子任务,包括:
控制调度单元获取仿真任务的至少一个仿真子任务,以及所述至少一个仿真子任务对应的仿真顺序;
所述控制所述调度单元按照模拟时钟的时钟周期将所述至少一个仿真子任务发送至对应的目标处理单元,包括:
控制所述调度单元按照模拟时钟的时钟周期,在每个时钟周期到来时,按照所述仿真顺序,将所述至少一个仿真子任务发送至对应的目标处理单元。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在每个时钟周期到来时,控制调度单元对存储的多个处理单元当前的任务处理状态进行更新。
7.根据权利要求1所述的方法,其特征在于,所述控制所述至少一个目标处理单元执行被分配的仿真子任务,得到所述仿真子任务对应的仿真处理结果,包括:
控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,确定所述被分配的仿真子任务对应的仿真开始时刻;
控制所述至少一个目标处理单元在所述仿真开始时刻执行所述被分配的仿真子任务,得到仿真处理结果。
8.根据权利要求7所述的方法,其特征在于,所述控制所述至少一个目标处理单元基于所述仿真子任务中携带的预处理经验时长,确定所述被分配的仿真子任务对应的仿真开始时刻,包括:
控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,以及所述至少一个目标处理单元当前的任务处理状态,确定所述被分配的仿真子任务对应的仿真开始时刻。
9.根据权利要求8所述的方法,其特征在于,所述控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,以及所述至少一个目标处理单元当前的任务处理状态,确定所述被分配的仿真子任务对应的仿真开始时刻,包括:
若所述至少一个目标处理单元当前无正在执行的其他仿真子任务,则将从接收所述仿真指令的时刻开始,所述预处理经验时长后的时刻作为所述仿真开始时刻。
10.根据权利要求8所述的方法,其特征在于,所述控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,以及所述至少一个目标处理单元当前的任务处理状态,确定所述被分配的仿真子任务对应的仿真开始时刻,包括:
若所述至少一个目标处理单元中存在待完成的其他仿真子任务,则将所述处理完所述待完成的其他仿真子任务的结束时刻与候选开始时刻当中,靠前的时刻作为所述仿真开始时刻,其中,所述候选开始时刻为从接收所述仿真指令的时刻开始,经过所述预处理经验时长后的时刻。
11.根据权利要求8所述的方法,其特征在于,所述控制所述至少一个目标处理单元基于所述被分配的仿真子任务中携带的预处理经验时长,以及所述至少一个目标处理单元当前的任务处理状态,确定所述被分配的仿真子任务对应的仿真开始时刻,包括:
若所述至少一个目标处理单元当前正在执行其他仿真子任务,则将从所述其他仿真子任务执行结束的时刻开始,所述预处理经验时长后的时刻作为仿真开始时刻。
12.根据权利要求7所述的方法,其特征在于,所述预处理经验时长用于启动执行所述被分配的仿真子任务对应的线程。
13.一种硬件仿真装置,其特征在于,包括:
获取模块,用于控制调度单元获取仿真任务的至少一个仿真子任务,并控制所述调度单元按照模拟时钟的时钟周期将所述至少一个仿真子任务发送至对应的目标处理单元;
仿真模块,用于控制至少一个目标处理单元执行被分配的仿真子任务,得到所述仿真子任务对应的仿真处理结果;
确定模块,用于控制所述调度单元获取所述至少一个目标处理单元针对被分配的仿真子任务的仿真处理结果,并基于所述目标处理单元针对被分配的仿真子任务的仿真处理结果,确定所述仿真任务的仿真处理结果;所述仿真处理结果中包括仿真处理时长。
14.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至12任一项所述的硬件仿真方法的步骤。
15.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至12任一项所述的硬件仿真方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011181138.8A CN114428722A (zh) | 2020-10-29 | 2020-10-29 | 硬件仿真方法、装置、设备及存储介质 |
PCT/CN2021/120047 WO2022089109A1 (zh) | 2020-10-29 | 2021-09-24 | 硬件仿真方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011181138.8A CN114428722A (zh) | 2020-10-29 | 2020-10-29 | 硬件仿真方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114428722A true CN114428722A (zh) | 2022-05-03 |
Family
ID=81309178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011181138.8A Pending CN114428722A (zh) | 2020-10-29 | 2020-10-29 | 硬件仿真方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114428722A (zh) |
WO (1) | WO2022089109A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116150948A (zh) * | 2022-11-21 | 2023-05-23 | 中国船舶重工集团公司第七一九研究所 | 一种复杂系统的仿真数据分析方法及相关装置 |
CN115827258B (zh) * | 2023-02-24 | 2023-05-30 | 中船奥蓝托无锡软件技术有限公司 | 分布式任务运行方法、主控服务器、仿真计算节点及系统 |
CN116521339B (zh) * | 2023-04-26 | 2024-07-05 | 中国人民解放军92942部队 | 一种面向多用户并发访问的信号级仿真实现方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4975544B2 (ja) * | 2007-07-20 | 2012-07-11 | 富士通セミコンダクター株式会社 | シミュレーション装置及びプログラム |
JP5450271B2 (ja) * | 2010-06-10 | 2014-03-26 | 株式会社東芝 | シミュレーション装置、シミュレーションプログラム及び方法 |
CN105005506B (zh) * | 2015-07-17 | 2017-11-10 | 中国人民解放军国防科学技术大学 | 一种虚拟化云中容错资源供给方法 |
US10331485B2 (en) * | 2016-11-18 | 2019-06-25 | Huawei Technologies Co., Ltd. | Method and system for meeting multiple SLAS with partial QoS control |
CN109800054B (zh) * | 2018-12-24 | 2023-05-26 | 四川知周科技有限责任公司 | 一种分布式并行实时仿真调度实现方法 |
WO2020139961A1 (en) * | 2018-12-28 | 2020-07-02 | Didi Research America, Llc | Distributed system task management using a simulated clock |
-
2020
- 2020-10-29 CN CN202011181138.8A patent/CN114428722A/zh active Pending
-
2021
- 2021-09-24 WO PCT/CN2021/120047 patent/WO2022089109A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022089109A1 (zh) | 2022-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114428722A (zh) | 硬件仿真方法、装置、设备及存储介质 | |
CN110389816B (zh) | 用于资源调度的方法、装置以及计算机可读介质 | |
CN111597006A (zh) | 应用分屏方法、装置、存储介质及电子设备 | |
CN108491263A (zh) | 数据处理方法、数据处理装置、终端及可读存储介质 | |
CN107656968A (zh) | 大批量业务数据导出方法及系统 | |
CN111143039B (zh) | 一种虚拟机的调度方法、装置及计算机存储介质 | |
CN110765288B (zh) | 一种图像信息同步方法、装置、系统及存储介质 | |
CN110516233B (zh) | 数据处理的方法、装置、终端设备以及存储介质 | |
CN113032116A (zh) | 任务时间预测模型的训练方法、任务调度方法及相关装置 | |
CN111124644B (zh) | 任务调度资源的确定方法、装置及系统 | |
CN112199180A (zh) | 多任务调度的方法及装置、电子设备及可读存储介质 | |
CN115018081B (zh) | 特征选择方法、应用程序预测方法及装置 | |
CN107436839B (zh) | 进程负载获取方法、电子终端及计算机可读存储介质 | |
CN107633080B (zh) | 一种用户任务处理方法及装置 | |
WO2024119930A1 (zh) | 调度方法、装置、计算机设备和存储介质 | |
CN115238837B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN116820714A (zh) | 一种算力设备的调度方法、装置、设备和存储介质 | |
CN115543534A (zh) | 训练任务的管理方法、装置、电子设备及存储介质 | |
CN115016735A (zh) | 一种分布式缓存系统的控制方法、装置及介质 | |
CN115809126A (zh) | 混合部署场景下的作业调度方法、装置及电子设备 | |
CN105912394B (zh) | 线程处理方法和系统 | |
CN114327779A (zh) | 一种应用运行环境搭建方法、装置及存储介质 | |
CN110825502A (zh) | 神经网络处理器和用于神经网络处理器的任务调度方法 | |
CN114090219A (zh) | 调度系统、方法、装置、芯片、计算机设备及存储介质 | |
CN111444430A (zh) | 内容推荐方法、装置、设备和存储介质 |
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 |