CN117634369A - 仿真方法、模型、电子设备、存储介质 - Google Patents
仿真方法、模型、电子设备、存储介质 Download PDFInfo
- Publication number
- CN117634369A CN117634369A CN202311714251.1A CN202311714251A CN117634369A CN 117634369 A CN117634369 A CN 117634369A CN 202311714251 A CN202311714251 A CN 202311714251A CN 117634369 A CN117634369 A CN 117634369A
- Authority
- CN
- China
- Prior art keywords
- task
- model
- rendering
- firmware
- register
- 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.)
- Granted
Links
- 238000004088 simulation Methods 0.000 title claims abstract description 143
- 238000000034 method Methods 0.000 title claims abstract description 78
- 238000009877 rendering Methods 0.000 claims abstract description 263
- 230000006870 function Effects 0.000 claims description 56
- 238000012545 processing Methods 0.000 claims description 38
- 230000002093 peripheral effect Effects 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 12
- 238000011161 development Methods 0.000 abstract description 18
- 238000013461 design Methods 0.000 abstract description 11
- 238000012423 maintenance Methods 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 10
- 238000012795 verification Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000012938 design process Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/337—Design optimisation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Image Generation (AREA)
Abstract
本公开涉及集成电路设计领域,提出一种仿真方法、模型、电子设备、存储介质。仿真方法应用于固件仿真模型,包括:获取固件代码中的指令,执行获取的指令,在获取的指令与寄存器模型的访问有关时,产生寄存器访问任务;执行寄存器访问任务,在寄存器访问任务的类型为触发类型时,产生渲染任务;在渲染任务为重任务类型时,将渲染任务传输至图形渲染管线模型,在接收到指示渲染任务已缓存至图形渲染管线模型的信息后,继续获取下一条指令。本公开实施例的仿真方法应用在轻量级模型上,可以降低模型维护成本,提高模型开发效率,且避免固件代码的执行流程出现长时间的阻塞,提高固件仿真模型的性能判断准确度。
Description
技术领域
本公开涉及集成电路设计领域,尤其涉及一种仿真方法、模型、电子设备、存储介质。
背景技术
在图形处理器(graphics processing unit,GPU)的设计过程中,需要在设计前期对图形处理器进行软件建模,一方面可以对图形处理器的功能、性能进行前期验证,另一方面可以通过虚拟机来提前向软件开发人员提供开发平台,便于多部门并行对图形处理器进行开发。在图形处理器的建模过程中,固件(firmware)仿真是不可或缺的一部分。
现有技术中,通常基于图形处理器硬件设计,使用高级编程语言对固件进行建模,实现固件代码解析、执行等操作。由于硬件特性,模型维护成本较高。并且使用如SystemC等大型的编程库来实现固件仿真模型包括的各模块间的互联以及时钟设置等,模型开发工作量比较大,导致模型开发效率低。在使用固件仿真模型进行验证时,也容易导致固件代码的执行流程出现长时间的阻塞,导致对固件仿真模型的性能产生错误判断,影响模型的验证效果。
发明内容
有鉴于此,本公开提出了一种仿真方法、模型、电子设备、存储介质,本公开实施例的仿真方法无需使用大型的编程库,无需设置时钟,因此该方法应用在轻量级模型上,可以降低模型维护成本,提高模型开发效率,且避免固件代码的执行流程出现长时间的阻塞,提高固件仿真模型的性能判断准确度,提高模型的验证效果。
根据本公开的一方面,提供了一种仿真方法,应用于固件仿真模型,所述固件仿真模型设置在图形处理器仿真模型中,所述图形处理器仿真模型还包括图形渲染管线模型和寄存器模型,所述方法包括:获取固件代码中的指令,所述固件代码包括多条指令;执行获取的指令,在获取的指令与所述寄存器模型的访问有关时,产生寄存器访问任务;执行所述寄存器访问任务,在所述寄存器访问任务的类型为触发类型时,产生渲染任务;在所述渲染任务为轻任务类型时,将所述渲染任务传输至所述图形渲染管线模型,在接收到指示所述渲染任务执行完毕的信息后,继续获取下一条指令;在所述渲染任务为重任务类型时,将所述渲染任务传输至所述图形渲染管线模型,在接收到指示所述渲染任务已缓存至所述图形渲染管线模型的信息后,继续获取下一条指令,其中,所述重任务类型对应的任务量大于所述轻任务类型对应的任务量。
在一种可能的实现方式中,所述固件仿真模型和所述图形渲染管线模型对应不同的线程,所述方法还包括:在所述渲染任务为轻任务类型时,在所述固件仿真模型对应的线程中调用所述图形渲染管线模型的实例执行所述渲染任务。
在一种可能的实现方式中,所述固件仿真模型和所述图形渲染管线模型对应不同的线程,所述图形渲染管线模型对应的线程包括第一缓存模块,所述方法还包括:在所述渲染任务为重任务类型时,将所述渲染任务缓存至所述第一缓存模块,所述第一缓存模块调用所述图形渲染管线模型的实例执行所述渲染任务,所述第一缓存模块以先入先出方式缓存所述渲染任务。
在一种可能的实现方式中,所述图形处理器仿真模型由虚拟机运行,所述虚拟机还运行用户端,所述获取固件代码中的指令之前,所述方法还包括:接收来自所述图形渲染管线模型的硬件中断信号;将所述硬件中断信号传输至所述用户端。
在一种可能的实现方式中,所述图形处理器仿真模型还包括内存模型,所述方法还包括:获取的指令与所述内存模型的访问有关时,产生内存访问任务;通过回调函数绑定内存访问操作与访存处理函数的入口;执行所述内存访问任务,将内存访问操作回调至所述访存处理函数的入口,在所述访存处理函数中,判断是否进入直接内存访问模式;在进入直接内存访问模式时,通过直接内存访问函数执行所述内存访问操作。
在一种可能的实现方式中,所述执行寄存器访问任务还包括:在所述寄存器访问任务的类型为非触发类型时,将所述寄存器访问任务传输至所述图形渲染管线模型,在接收到指示所述寄存器访问任务执行完毕的信息后,继续获取下一条指令。
根据本公开的另一方面,提供了一种固件仿真模型,所述固件仿真模型设置在图形处理器仿真模型中,所述图形处理器仿真模型还包括图形渲染管线模型和寄存器模型,所述固件仿真模型包括高速外围组件互联接口、固件指令模拟单元、寄存器接口,所述固件指令模拟单元用于:通过所述高速外围组件互联接口获取固件代码中的指令,所述固件代码包括多条指令;执行获取的指令,在获取的指令与所述寄存器模型的访问有关时,产生寄存器访问任务;通过所述寄存器接口执行所述寄存器访问任务,在所述寄存器访问任务的类型为触发类型时,产生渲染任务;在所述渲染任务为轻任务类型时,通过所述寄存器接口将所述渲染任务传输至所述图形渲染管线模型,在通过所述寄存器接口接收到指示所述渲染任务执行完毕的信息后,继续通过所述高速外围组件互联接口获取下一条指令;在所述渲染任务为重任务类型时,通过所述寄存器接口将所述渲染任务传输至所述图形渲染管线模型,在通过所述寄存器接口接收到指示所述渲染任务已缓存至所述图形渲染管线模型的信息后,继续通过所述高速外围组件互联接口获取下一条指令,其中,所述重任务类型对应的任务量大于所述轻任务类型对应的任务量。
在一种可能的实现方式中,所述固件仿真模型和所述图形渲染管线模型对应不同的线程,所述固件仿真模型用于:在所述渲染任务为轻任务类型时,在所述固件仿真模型对应的线程中调用所述图形渲染管线模型的实例执行所述渲染任务。
在一种可能的实现方式中,所述固件仿真模型和所述图形渲染管线模型对应不同的线程,所述图形渲染管线模型对应的线程包括第一缓存模块,所述固件仿真模型用于:在所述渲染任务为重任务类型时,将所述渲染任务缓存至所述第一缓存模块,所述第一缓存模块调用所述图形渲染管线模型的实例执行所述渲染任务,所述第一缓存模块以先入先出方式缓存所述渲染任务。
在一种可能的实现方式中,所述图形处理器仿真模型由虚拟机运行,所述虚拟机还运行用户端,所述模型还包括硬件中断处理单元,所述固件指令模拟单元还用于:通过所述硬件中断处理单元接收来自所述图形渲染管线模型的硬件中断信号;将所述硬件中断信号传输至所述用户端。
在一种可能的实现方式中,所述图形处理器仿真模型还包括内存模型,所述固件仿真模型还包括内存接口,所述固件指令模拟单元还用于:获取的指令与所述内存模型的访问有关时,产生内存访问任务;通过回调函数绑定内存访问操作与访存处理函数的入口;通过所述内存接口执行所述内存访问任务,将内存访问操作回调至所述访存处理函数的入口,在所述访存处理函数中,判断是否进入直接内存访问模式;在进入直接内存访问模式时,通过直接内存访问函数执行所述内存访问操作。
根据本公开的另一方面,提供了一种图形处理器仿真模型,包括以上所述的固件仿真模型,以及图形渲染管线模型、寄存器模型、内存模型。
在一种可能的实现方式中,所述执行寄存器访问任务还包括:在所述寄存器访问任务的类型为非触发类型时,将所述寄存器访问任务传输至所述图形渲染管线模型,在接收到指示所述寄存器访问任务执行完毕的信息后,继续获取下一条指令。
根据本公开的另一方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
根据本公开实施例的仿真方法,可以获取固件代码中的指令,执行获取的指令,在获取的指令与寄存器模型的访问有关时,产生寄存器访问任务,可以完成寄存器访问任务的产生方式的仿真;执行寄存器访问任务,在寄存器访问任务的类型为触发类型时,产生渲染任务,可以完成渲染任务的产生方式的仿真;在渲染任务为轻任务类型时,将渲染任务传输至图形渲染管线模型,在接收到指示渲染任务执行完毕的信息后,继续获取下一条指令,在渲染任务为重任务类型时,将渲染任务传输至图形渲染管线模型,在接收到指示渲染任务已缓存至图形渲染管线模型的信息后,继续获取下一条指令,其中,重任务类型对应的任务量大于轻任务类型对应的任务量,可以完成指令的执行流程的仿真。本公开实施例的仿真方法无需使用大型的编程库,无需设置时钟,因此该方法应用在轻量级模型上,可以降低模型维护成本,提高模型开发效率。且按照任务量对指令的执行流程进行区分,任务量小的轻任务类型渲染任务可以实时执行并等待执行完毕后再获取新的指令,任务量大的重任务类型渲染任务可以缓存完毕后获取新的指令,避免因长时间无法获取到重任务类型渲染任务执行完毕的信息,导致固件代码的执行流程出现长时间的阻塞,对模型的性能出现误判的情况,提高固件仿真模型的性能判断准确度,提高模型的验证效果。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例的仿真方法的示例性应用场景。
图2示出根据本公开实施例的仿真方法的流程的示意图。
图3示出根据本公开实施例的固件仿真模型的示例性架构图。
图4示出根据本公开实施例的固件仿真模型的示例性架构图。
图5示出根据本公开实施例的仿真方法的流程的示意图。
图6示出根据本公开实施例的固件仿真模型和图形渲染管线模型对应的线程的示意图。
图7示出根据本公开实施例的电子设备1900的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
在图形处理器(graphics processing unit,GPU)的设计过程中,需要在设计前期对图形处理器进行软件建模,一方面可以对图形处理器的功能、性能进行前期验证,另一方面可以通过虚拟机来提前向软件开发人员提供开发平台,便于多部门并行对图形处理器进行开发。在图形处理器的建模过程中,需要向软件开发人员提供一个完整的,符合设计的图形处理器模型,用来解析用户端的应用软件在虚拟机中通过高速外围组件互联(peripheral component interconnect express,PCIE)接口传递给图形处理器模型的合乎规范的数据。在这个过程中,固件(firmware)仿真是不可或缺的一部分。固件在图形处理器中承担承上启下的作用,其在实际的图形处理器硬件中通常跑在一块(或多块)与图形处理器核心(GPU core)相连的微型处理器(microcontroller unit,MCU)上,用以处理高速外围组件互联接口传递到图形处理器的信息并管理图形处理器核心。在图形处理器建模过程中,需要对固件进行建模。
现有技术中,通常基于图形处理器硬件设计,使用高级编程语言对固件进行建模,实现固件代码解析、执行等操作,并且使用如SystemC等大型的编程库来实现固件仿真模型包括的各模块间的互联以及时钟设置等。该方案存在如下缺点:
1、图形处理器硬件设计过于繁琐复杂,需要考虑大量的时钟、寄存器、一致性等问题,会使固件仿真模型的复杂度上升,难以维护。
2、由于硬件特性,因此固件仿真模型的模块间存在非常重的耦合关系,模块间难以解耦,不利于后续的维护。
3、软件开发人员通常并不关心硬件实现的种种细节,在软硬件同时开发的过程中基于硬件设计的固件仿真模型难以给予软件开发人员正确的反馈,导致开发效率低。
4、基于硬件的固件仿真模型存在大量的硬件模拟细节,因此运行效率慢。
5、固件代码包括多条指令,在使用基于硬件的固件仿真模型进行验证时,通常是一条指令对应的渲染任务执行完之后,再开始执行下一条指令,如果某个渲染任务的任务量很大,就会导致执行流程停滞在某一条指令处,容易误判为固件仿真模型出现问题,导致模型的验证效果差。
有鉴于此,本公开提出了一种仿真方法、模型、电子设备、存储介质,本公开实施例的仿真方法无需使用大型的编程库,无需设置时钟,因此该方法应用在轻量级模型上,可以降低模型维护成本,提高模型开发效率,且避免固件代码的执行流程出现长时间的阻塞,提高固件仿真模型的性能判断准确度,提高模型的验证效果。
图1示出根据本公开实施例的仿真方法的示例性应用场景。
如图1所示,本公开实施例的仿真方法可以由固件仿真模型执行,固件仿真模型可以设置在图形处理器仿真模型中,图形处理器仿真模型还包括图形渲染管线模型、寄存器模型和内存模型。图形处理器仿真模型运行于虚拟机(未示出)中,通过高速外围组件互联接口与虚拟机的用户端通信,为使用用户端的软件开发人员提供模型仿真服务。
软件开发人员在用户端编写好固件代码,固件代码包括多条指令,并存储至固件代码的特定存储区域(未示出)。指令可以记载一次渲染相关的顶点数据,配置信息等。固件仿真模型可以设计为能够通过高速外围组件互联接口获取固件代码中的指令。之后固件仿真模型执行获取的指令。指令可能与寄存器模型和/或内存模型的访问有关。例如可能是写入数据到内存模型的指令,对应的数据通常为索引数据,顶点数据等大段的数据,也可能包含部分配置信息。也可能是写入数据到寄存器模型的指令,对应的数据通常包括主要的配置信息以及图形处理器核心的控制信息,比如图形渲染管线模型的启停等,也可能包括图形渲染管线模型产生的数据(用于固件仿真模型进行逻辑判断)。其中指令与寄存器模型的访问有关时,固件仿真模型访问寄存器模型,从寄存器模型读取数据并输出至图形渲染管线模型,或者将图形渲染管线模型输出的数据写入寄存器模型。指令与内存模型的访问有关时,固件仿真模型访问内存模型,从内存模型读取数据并输出至图形渲染管线模型,或者将图形渲染管线模型输出的数据写入内存模型。
执行指令可能会触发渲染任务。执行指令不触发渲染任务时,指令执行完毕后可以获取下一条指令并执行。执行指令触发渲染任务时,在图形渲染管线模型完成渲染任务的执行或者缓存好渲染任务后,可以获取下一条指令,从而完成指令的循环获取与执行。
固件仿真模型执行本公开实施例的仿真方法时,可以对固件仿真模型设计的上述功能进行验证,进一步地可以根据验证结果确定固件仿真模型是否正常。如果出现异常,可以通过日志记录异常的位置、异常的类型等,上报给用户端。
图2示出根据本公开实施例的仿真方法的流程的示意图。
在一种可能的实现方式中,本公开提出一种仿真方法,应用于固件仿真模型,固件仿真模型设置在图形处理器仿真模型中,图形处理器仿真模型还包括图形渲染管线模型和寄存器模型。图形处理器仿真模型的示例性结构可以参见图1。
如图2所示,所述方法包括步骤S21-S25:
步骤S21,获取固件代码中的指令,固件代码包括多条指令。
固件代码可以是开发人员提前编写好的,包括多条指令。这些指令通常针对内存模型或者寄存器模型的访问(读取/写入)。执行步骤S21获取固件代码中的指令时,每次可以获取一条指令。
图3示出根据本公开实施例的固件仿真模型的示例性架构图。如图3所示,固件仿真模型可以设置有固件指令模拟单元、高速外围组件互联接口、寄存器接口。步骤S21-S25可以由固件指令模拟单元执行,执行时使用高速外围组件互联接口和寄存器接口。
固件代码可以来源于用户端。固件仿真模型中的高速外围组件互联接口可以与图形处理器仿真模型中、固件仿真模型之外的高速外围组件互联接口通信。固件指令模拟单元执行步骤S21,可以通过高速外围组件互联接口从用户端处获取固件代码中的指令。固件指令模拟单元可以解析获取的指令并将其存储在自身的缓冲区(未示出)中。解析的目的可以是将编程语言编写的指令解析为可执行代码,解析可以基于现有技术实现,在此不再赘述。
步骤S22,执行获取的指令,在获取的指令与寄存器模型的访问有关时,产生寄存器访问任务。
在步骤S22中,被执行的可以是解析后的指令。指令可能与寄存器模型的访问有关,也即指令的执行涉及到对寄存器模型的访问操作,可能是需要从寄存器模型中读取数据,或者将数据写入寄存器模型。在此情况下,可产生寄存器访问任务。
指令与寄存器模型无关时执行的步骤可以参见后文及图5的相关描述。
步骤S23,执行寄存器访问任务,在寄存器访问任务的类型为触发类型时,产生渲染任务。
步骤S23也可以由固件指令模拟单元执行。如图3所示,寄存器接口可以与寄存器模型通信。固件指令模拟单元可以通过寄存器接口执行寄存器访问任务。
寄存器访问任务有两种类型,一种是非触发类型,即执行寄存器访问任务完成数据的读取或写入即可,不会触发其他的任务。寄存器访问任务执行完成后即可继续获取下一条指令,即执行步骤S21及之后的步骤。另一种是触发类型,即执行寄存器访问任务访问特定的寄存器模型,读取或写入特定的数据时,可触发渲染任务。例如向特定寄存器写入1,触发的渲染任务可以是图形渲染管线模型的启动任务。触发渲染任务可以通过设置回调函数来实现。回调函数是现有技术已有的函数,使用回调函数触发渲染任务可以基于现有技术实现,在此不再赘述。
本领域技术人员应理解,渲染任务仅为名称,并不代表触发的任务一定是与渲染操作有关。可以触发的渲染任务还可以有更多种,本公开实施例对此不作限制。
步骤S24,在渲染任务为轻任务类型时,将渲染任务传输至图形渲染管线模型,在接收到指示渲染任务执行完毕的信息后,继续获取下一条指令。
可以预先确定可能出现的渲染任务的任务量,并根据任务量的大小确定一个阈值,将任务量小于或等于该阈值的渲染任务确定为轻任务类型,将任务量大于该阈值的渲染任务确定为重任务类型。因此重任务类型对应的任务量大于轻任务类型对应的任务量。
在步骤S24中,在渲染任务为轻任务类型时,固件指令模拟单元将渲染任务传输至图形渲染管线模型,可以是通过寄存器接口将渲染任务输出至寄存器模型中某个区域。图形渲染管线模型可以从该区域处读取渲染任务并执行。
由于轻任务类型的渲染任务的任务量小,因此执行渲染任务也比较快,实时执行渲染任务不会导致执行流程停滞在某一条指令处,因此不会导致误判。图形渲染管线模型可以将指示渲染任务执行完毕的信息存储在寄存器模型中的某个区域。固件指令模拟单元可以通过寄存器接口从该区域读取指示渲染任务执行完毕的信息。在读取(接收)到指示渲染任务执行完毕的信息后,继续获取下一条指令,即执行步骤S21及之后的步骤。
步骤S25,在渲染任务为重任务类型时,将渲染任务传输至图形渲染管线模型,在接收到指示渲染任务已缓存至图形渲染管线模型的信息后,继续获取下一条指令,其中,重任务类型对应的任务量大于轻任务类型对应的任务量。
在步骤S25中,在渲染任务为重任务类型时,固件指令模拟单元将渲染任务传输至图形渲染管线模型,可以是通过寄存器接口将渲染任务输出至寄存器模型中某个区域处缓存(可以是下文所述的第一缓存模块)。图形渲染管线模型可以从该区域处读取渲染任务并执行。
由于重任务类型的渲染任务的任务量大,因此执行渲染任务也比较慢,实时执行任务可能导致执行流程停滞在某一条指令处,导致误判。对此,执行步骤S25时,可以是渲染任务已缓存至图形渲染管线模型后,固件指令模拟单元就开始获取新的指令并执行新的指令。
图形渲染管线模型可以将指示渲染任务已缓存至图形渲染管线模型的信息存储在寄存器模型中的某个区域。固件指令模拟单元可以通过寄存器接口从该区域读取指示渲染任务已缓存至图形渲染管线模型的信息。在读取(接收)到指示渲染任务已缓存至图形渲染管线模型的信息后,继续获取下一条指令,即执行步骤S21及之后的步骤,直到固件代码中的所有指令都执行完毕。
根据本公开实施例的仿真方法,可以获取固件代码中的指令,执行获取的指令,在获取的指令与寄存器模型的访问有关时,产生寄存器访问任务,可以完成寄存器访问任务的产生方式的仿真;执行寄存器访问任务,在寄存器访问任务的类型为触发类型时,产生渲染任务,可以完成渲染任务的产生方式的仿真;在渲染任务为轻任务类型时,将渲染任务传输至图形渲染管线模型,在接收到指示渲染任务执行完毕的信息后,继续获取下一条指令,在渲染任务为重任务类型时,将渲染任务传输至图形渲染管线模型,在接收到指示渲染任务已缓存至图形渲染管线模型的信息后,继续获取下一条指令,其中,重任务类型对应的任务量大于轻任务类型对应的任务量,可以完成指令的执行流程的仿真。本公开实施例的仿真方法无需使用大型的编程库,无需设置时钟,因此该方法应用在轻量级模型上,可以降低模型维护成本,提高模型开发效率。且按照任务量对指令的执行流程进行区分,任务量小的轻任务类型渲染任务可以实时执行并等待执行完毕后再获取新的指令,任务量大的重任务类型渲染任务可以缓存完毕后获取新的指令,避免因长时间无法获取到重任务类型渲染任务执行完毕的信息,导致固件代码的执行流程出现长时间的阻塞,对模型的性能出现误判的情况,提高固件仿真模型的性能判断准确度,提高模型的验证效果。
在一种可能的实现方式中,执行寄存器访问任务还包括:在寄存器访问任务的类型为非触发类型时,将寄存器访问任务传输至图形渲染管线模型,在接收到指示寄存器访问任务执行完毕的信息后,继续获取下一条指令。
举例来说,如果寄存器访问任务是非触发类型,那么执行寄存器访问任务完成数据的读取或写入即可,不会触发其他的任务。因此非触发类型的寄存器访问任务也是轻任务。示例性的执行方式与上文中轻任务类型的渲染任务的执行方式可以相同。例如可以是固件指令模拟单元通过寄存器接口将寄存器访问任务输出至寄存器模型中某个区域。图形渲染管线模型可以从该区域处读取寄存器访问任务并执行。图形渲染管线模型执行寄存器访问任务时完成数据的读取或写入。图形渲染管线模型可以将指示渲染任务执行完毕的信息存储在寄存器模型中的某个区域。固件指令模拟单元可以通过寄存器接口从该区域读取指示渲染任务执行完毕的信息。在读取(接收)到指示渲染任务执行完毕的信息后,继续获取下一条指令,即执行步骤S21及之后的步骤。
固件仿真模型中还可包括更多的模型和接口,以完成更多的功能。图4示出根据本公开实施例的固件仿真模型的示例性架构图。图5示出根据本公开实施例的仿真方法的流程的示意图。
下面结合图4和图5对固件仿真模型的更多功能给出进一步的描述。
如图5所示,在一种可能的实现方式中,图形处理器仿真模型由虚拟机运行,虚拟机还运行用户端,
步骤S21之前,所述方法还包括:
接收来自图形渲染管线模型的硬件中断信号;
将硬件中断信号传输至用户端。
举例来说,图形渲染管线模型执行渲染任务时产生硬件中断信号。如图4所示,固件仿真模型还可设置硬件中断处理单元,负责接收来自图形渲染管线模型的硬件中断信号,并通知固件指令模拟单元来执行硬件中断操作。硬件中断信号的产生方式的细节可以参见下文对图形渲染管线模型和固件仿真模型的线程的进一步描述。
示例性地,固件指令模拟单元执行硬件中断操作时,可以是通过高速外围组件互联接口将硬件中断信号传输至用户端。在完成硬件中断操作之后,固件指令模拟单元再执行步骤S21及之后的步骤。
通过这种方式,固件仿真模型能够完成硬件中断的处理,使得固件仿真模型能够获取到固件代码中的指令。
在一种可能的实现方式中,图形处理器仿真模型还包括内存模型,如图5所示,所述方法还包括:
获取的指令与内存模型的访问有关时,产生内存访问任务;
通过回调函数绑定内存访问操作与访存处理函数的入口;
执行内存访问任务,将内存访问操作回调至访存处理函数的入口,在访存处理函数中,判断是否进入直接内存访问模式;
在进入直接内存访问模式时,通过直接内存访问函数执行内存访问操作。
举例来说,如图4所示,固件仿真模型还可设置有内存接口以及直接内存访问模块。内存接口用于与内存模型通信,直接内存访问模块包括直接内存访问函数,可以实现快速将数据搬运至内存的功能。
在获取的指令与内存模型的访问有关时,固件指令模拟单元可以产生内存访问任务。可以先通过回调函数将内存访问操作与访存处理函数的入口绑定。访存处理函数可以是现有技术已有的函数。之后固件指令模拟单元通过内存接口与内存模型通信执行内存访问任务,将内存访问操作回调至访存处理函数的入口。在访存处理函数中,判断是否进入直接内存访问(Direct Memory Access,DMA)模式。
如果判断进入直接内存访问模式,可通过直接内存访问函数来执行内存访问操作。例如,通过调用直接内存访问函数和内存接口完成内存模型的访问。如果判断不进入内存访问模式,可通过内存接口完成内存模型的访问。
执行内存访问任务时,各类函数的调用都可以是直接调用,在内存访问过程中,固件仿真模型无法给用户端返回实时反馈,由于内存访问一般不会占用过长时间,故有关内存访问的所有逻辑都可以设置为回调函数直接调用的形式。
通过这种方式,使得固件仿真模型能够完成内存访问操作。
本公开实施例中,固件仿真模型和图形渲染管线模型对应不同的线程。图6示出根据本公开实施例的固件仿真模型和图形渲染管线模型对应的线程的示意图。下面结合图6分别介绍轻任务类型和重任务类型的渲染任务的执行细节。
在一种可能的实现方式中,固件仿真模型和图形渲染管线模型对应不同的线程,所述方法还包括:
在渲染任务为轻任务类型时,在固件仿真模型对应的线程中调用图形渲染管线模型的实例执行渲染任务。
举例来说,轻任务类型的渲染任务可以是复杂度较低的任务,例如状态更新,状态读取,单元开关控制等渲染任务。如图6所示,对于轻任务类型的渲染任务,可以采用直接函数调用的方法,直接在固件仿真模型的线程中调用图形渲染管线模型的实例来执行。在渲染任务执行完毕后,图形渲染管线模型可通过寄存器访问的方式通知固件仿真模型继续获取指令或者处理中断。
如图6所示,图形渲染管线模型的线程中还包括第二缓存模块,用于通过先入先出方式缓存硬件中断指令。如果执行渲染任务时产生了硬件中断信号,可以将硬件中断信号存储至第二缓存模块。在固件仿真模型获取下一条指令之前,可以从第二缓存模块中取出一个硬件中断信号并进行硬件中断处理(参见图5)。硬件中断处理的方式在上文已描述过,在此不再赘述。
通过这种方式,使得执行任务量较小的渲染任务时具有同步性高,性能占用低的优势。
在一种可能的实现方式中,固件仿真模型和图形渲染管线模型对应不同的线程,图形渲染管线模型对应的线程包括第一缓存模块,所述方法还包括:
在渲染任务为重任务类型时,将渲染任务缓存至第一缓存模块,第一缓存模块调用图形渲染管线模型的实例执行渲染任务,第一缓存模块以先入先出方式缓存渲染任务。
举例来说,重任务类型的渲染任务可以是复杂度较高、工作负载重的任务,例如渲染图像,传递绘图指令等任务。对于重任务类型的渲染任务,可以将固件仿真模型与图形渲染管线模型的任务执行部分进行分离,从而解耦固件仿真和渲染管线模拟。如图6所示,图形渲染管线模型的线程中还包括第一缓存模块,对于新接收的渲染任务可以缓存至第一缓存模块处,对于固件仿真模型的线程来说,将渲染任务缓存至第一缓存模块处后即可继续完成其他操作如获取下一条指令或者处理中断,不需要等待图形渲染管线模型的线程将渲染任务执行完毕。第一缓存模块可以调用图形渲染管线模型的实例,从第一缓存模块中读取渲染任务并执行。
如果执行渲染任务时产生了硬件中断信号,可以将硬件中断信号存储至第二缓存模块。在固件仿真模型获取下一条指令之前,可以从第二缓存模块中取出一个硬件中断信号并进行硬件中断处理(参见图5)。硬件中断处理的方式在上文已描述过,在此不再赘述。
通过这种方式可以实现固件仿真和渲染管线模拟的解耦,以此达到分时计算的作用。
本公开实施例还提出一种固件仿真模型,其结构的示意图可以参见图3和图4。
所述固件仿真模型设置在图形处理器仿真模型中,所述图形处理器仿真模型还包括图形渲染管线模型和寄存器模型,如图3所示,所述固件仿真模型包括高速外围组件互联接口、固件指令模拟单元、寄存器接口,
所述固件指令模拟单元用于:
通过所述高速外围组件互联接口获取固件代码中的指令,所述固件代码包括多条指令;
执行获取的指令,在获取的指令与所述寄存器模型的访问有关时,产生寄存器访问任务;
通过所述寄存器接口执行所述寄存器访问任务,在所述寄存器访问任务的类型为触发类型时,产生渲染任务;
在所述渲染任务为轻任务类型时,通过所述寄存器接口将所述渲染任务传输至所述图形渲染管线模型,在通过所述寄存器接口接收到指示所述渲染任务执行完毕的信息后,继续通过所述高速外围组件互联接口获取下一条指令;
在所述渲染任务为重任务类型时,通过所述寄存器接口将所述渲染任务传输至所述图形渲染管线模型,在通过所述寄存器接口接收到指示所述渲染任务已缓存至所述图形渲染管线模型的信息后,继续通过所述高速外围组件互联接口获取下一条指令,其中,所述重任务类型对应的任务量大于所述轻任务类型对应的任务量。
本公开实施例的固件仿真模型有较高的运行效率,且使用该固件仿真模型时不会对虚拟机中的高速外围组件互联接口有长时间的阻塞。固件仿真模型的模块间耦合程度小,便于对固件仿真模型进行扩展和更新。
本公开实施例的固件仿真模型,其解决基于硬件设计的建模繁琐问题,大大缩短了开发时间,提高模型维护便捷性。在图形处理器设计过程中,本公开实施例的固件仿真模型可以大大提前软件人员开发的起始时间,达到并行开发的目的。
本公开实施例的固件仿真模型,其解决基于硬件设计的固件仿真模型存在的重耦合问题,使用功能概念上的模块来取代硬件模块进行建模,删除了硬件模块间同步信息等功能,来实现模型的高内聚和低耦合。
本公开实施例的固件仿真模型向软件开发人员提供了固件运行中的重要信息,并以日志(log)的形式保存,便于软件人员在开发过程中排查错误,降低了开发时间和成本。
本公开实施例的固件仿真模型为轻量级模型,删除了大量的硬件模拟细节,大大提升了固件仿真模型模拟速度。
在一种可能的实现方式中,所述固件仿真模型和所述图形渲染管线模型对应不同的线程,所述固件仿真模型用于:
在所述渲染任务为轻任务类型时,在所述固件仿真模型对应的线程中调用所述图形渲染管线模型的实例执行所述渲染任务。
在一种可能的实现方式中,所述固件仿真模型和所述图形渲染管线模型对应不同的线程,所述图形渲染管线模型对应的线程包括第一缓存模块,所述固件仿真模型用于:
在所述渲染任务为重任务类型时,将所述渲染任务缓存至所述第一缓存模块,所述第一缓存模块调用所述图形渲染管线模型的实例执行所述渲染任务,所述第一缓存模块以先入先出方式缓存所述渲染任务。
在一种可能的实现方式中,所述图形处理器仿真模型由虚拟机运行,所述虚拟机还运行用户端,
所述模型还包括硬件中断处理单元,所述固件指令模拟单元还用于:
通过所述硬件中断处理单元接收来自所述图形渲染管线模型的硬件中断信号;
将所述硬件中断信号传输至所述用户端。
在一种可能的实现方式中,所述图形处理器仿真模型还包括内存模型,所述固件仿真模型还包括内存接口,所述固件指令模拟单元还用于:
获取的指令与所述内存模型的访问有关时,产生内存访问任务;
通过回调函数绑定内存访问操作与访存处理函数的入口;
通过所述内存接口执行所述内存访问任务,将内存访问操作回调至所述访存处理函数的入口,在所述访存处理函数中,判断是否进入直接内存访问模式;
在进入直接内存访问模式时,通过直接内存访问函数执行所述内存访问操作。
在一种可能的实现方式中,所述执行寄存器访问任务还包括:在所述寄存器访问任务的类型为非触发类型时,将所述寄存器访问任务传输至所述图形渲染管线模型,在接收到指示所述寄存器访问任务执行完毕的信息后,继续获取下一条指令。
在一些实施例中,本公开实施例提供的模型具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开还提供一种图形处理器仿真模型,包括以上所述的固件仿真模型,以及图形渲染管线模型、寄存器模型、内存模型。图形处理器仿真模型图形处理器仿真模型的结构的示意图可以参见图1。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
图7示出根据本公开实施例的电子设备1900的框图。例如,电子设备1900可以被提供为一服务器或终端设备。参照图7,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出接口1958(I/O接口)。电子设备1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种仿真方法,其特征在于,应用于固件仿真模型,所述固件仿真模型设置在图形处理器仿真模型中,所述图形处理器仿真模型还包括图形渲染管线模型和寄存器模型,所述方法包括:
获取固件代码中的指令,所述固件代码包括多条指令;
执行获取的指令,在获取的指令与所述寄存器模型的访问有关时,产生寄存器访问任务;
执行所述寄存器访问任务,在所述寄存器访问任务的类型为触发类型时,产生渲染任务;
在所述渲染任务为轻任务类型时,将所述渲染任务传输至所述图形渲染管线模型,在接收到指示所述渲染任务执行完毕的信息后,继续获取下一条指令;
在所述渲染任务为重任务类型时,将所述渲染任务传输至所述图形渲染管线模型,在接收到指示所述渲染任务已缓存至所述图形渲染管线模型的信息后,继续获取下一条指令,其中,所述重任务类型对应的任务量大于所述轻任务类型对应的任务量。
2.根据权利要求1所述的方法,其特征在于,所述固件仿真模型和所述图形渲染管线模型对应不同的线程,所述方法还包括:
在所述渲染任务为轻任务类型时,在所述固件仿真模型对应的线程中调用所述图形渲染管线模型的实例执行所述渲染任务。
3.根据权利要求1或2所述的方法,其特征在于,所述固件仿真模型和所述图形渲染管线模型对应不同的线程,所述图形渲染管线模型对应的线程包括第一缓存模块,所述方法还包括:
在所述渲染任务为重任务类型时,将所述渲染任务缓存至所述第一缓存模块,所述第一缓存模块调用所述图形渲染管线模型的实例执行所述渲染任务,所述第一缓存模块以先入先出方式缓存所述渲染任务。
4.根据权利要求1所述的方法,其特征在于,所述图形处理器仿真模型由虚拟机运行,所述虚拟机还运行用户端,
所述获取固件代码中的指令之前,所述方法还包括:
接收来自所述图形渲染管线模型的硬件中断信号;
将所述硬件中断信号传输至所述用户端。
5.根据权利要求1所述的方法,其特征在于,所述图形处理器仿真模型还包括内存模型,所述方法还包括:
获取的指令与所述内存模型的访问有关时,产生内存访问任务;
通过回调函数绑定内存访问操作与访存处理函数的入口;
执行所述内存访问任务,将内存访问操作回调至所述访存处理函数的入口,在所述访存处理函数中,判断是否进入直接内存访问模式;
在进入直接内存访问模式时,通过直接内存访问函数执行所述内存访问操作。
6.根据权利要求1所述的方法,其特征在于,所述执行寄存器访问任务还包括:
在所述寄存器访问任务的类型为非触发类型时,将所述寄存器访问任务传输至所述图形渲染管线模型,在接收到指示所述寄存器访问任务执行完毕的信息后,继续获取下一条指令。
7.一种固件仿真模型,其特征在于,所述固件仿真模型设置在图形处理器仿真模型中,所述图形处理器仿真模型还包括图形渲染管线模型和寄存器模型,所述固件仿真模型包括高速外围组件互联接口、固件指令模拟单元、寄存器接口,
所述固件指令模拟单元用于:
通过所述高速外围组件互联接口获取固件代码中的指令,所述固件代码包括多条指令;
执行获取的指令,在获取的指令与所述寄存器模型的访问有关时,产生寄存器访问任务;
通过所述寄存器接口执行所述寄存器访问任务,在所述寄存器访问任务的类型为触发类型时,产生渲染任务;
在所述渲染任务为轻任务类型时,通过所述寄存器接口将所述渲染任务传输至所述图形渲染管线模型,在通过所述寄存器接口接收到指示所述渲染任务执行完毕的信息后,继续通过所述高速外围组件互联接口获取下一条指令;
在所述渲染任务为重任务类型时,通过所述寄存器接口将所述渲染任务传输至所述图形渲染管线模型,在通过所述寄存器接口接收到指示所述渲染任务已缓存至所述图形渲染管线模型的信息后,继续通过所述高速外围组件互联接口获取下一条指令,其中,所述重任务类型对应的任务量大于所述轻任务类型对应的任务量。
8.一种图形处理器仿真模型,其特征在于,包括权利要求7所述的固件仿真模型,以及图形渲染管线模型、寄存器模型、内存模型。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为在执行所述存储器存储的指令时,实现权利要求1至6中任意一项所述的方法。
10.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至6中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311714251.1A CN117634369B (zh) | 2023-12-13 | 2023-12-13 | 仿真方法、模型、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311714251.1A CN117634369B (zh) | 2023-12-13 | 2023-12-13 | 仿真方法、模型、电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117634369A true CN117634369A (zh) | 2024-03-01 |
CN117634369B CN117634369B (zh) | 2024-09-20 |
Family
ID=90026880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311714251.1A Active CN117634369B (zh) | 2023-12-13 | 2023-12-13 | 仿真方法、模型、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117634369B (zh) |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180357809A1 (en) * | 2017-06-13 | 2018-12-13 | Sean Lawless | Apparatus and method for optimizing time/space warp for virtual reality using dynamic tiling and dirty tile marking |
US20190206017A1 (en) * | 2017-12-29 | 2019-07-04 | Yunbiao Lin | Apparatus and method for display virtualization |
CN112348732A (zh) * | 2019-08-08 | 2021-02-09 | 华为技术有限公司 | 基于图形渲染管线的模型推理方法、装置及存储介质 |
US20210157654A1 (en) * | 2019-11-21 | 2021-05-27 | International Business Machines Corporation | Dynamic distribution of loads across heterogenous computing structures in computational rendering |
CN114077508A (zh) * | 2022-01-19 | 2022-02-22 | 维塔科技(北京)有限公司 | 一种远程图像渲染方法、装置、电子设备以及介质 |
CN114092621A (zh) * | 2021-11-26 | 2022-02-25 | 腾讯科技(深圳)有限公司 | 基于液体面的渲染方法、装置、设备、介质及程序产品 |
US20230103565A1 (en) * | 2021-09-28 | 2023-04-06 | International Business Machines Corporation | Register transfer level navigation microservices and instrumentation for cloud-native electronic design automation (eda) platforms |
CN115983047A (zh) * | 2023-03-14 | 2023-04-18 | 北京科技大学 | 一种适用于多图形接口的跨平台的仿真系统 |
US20230162424A1 (en) * | 2020-04-24 | 2023-05-25 | Robotify Labs Limited | A Computer Implemented Method of Simulating a 3D Object |
CN116302107A (zh) * | 2021-12-21 | 2023-06-23 | 英特尔公司 | 自调谐线程调遣策略 |
CN116360928A (zh) * | 2023-05-15 | 2023-06-30 | 摩尔线程智能科技(北京)有限责任公司 | 一种安卓容器显示系统的优化方法及装置、电子设备 |
CN116414550A (zh) * | 2021-12-30 | 2023-07-11 | 摩尔线程智能科技(北京)有限责任公司 | 独立显卡及其任务管理方法、装置和电子设备 |
CN116992673A (zh) * | 2023-08-04 | 2023-11-03 | 西安交通大学 | 一种采用分层附着分层渲染的车漆喷涂在线仿真方法 |
CN117034384A (zh) * | 2023-08-28 | 2023-11-10 | 南京智训云智能科技有限公司 | 一种电网变电站高压设备数字三维仿真方法 |
CN117078846A (zh) * | 2023-07-20 | 2023-11-17 | 西安航天信息研究所 | Gpu多点渲染的3d可视化实时仿真方法、系统及产品 |
CN117132699A (zh) * | 2023-07-31 | 2023-11-28 | 广州点动信息科技股份有限公司 | 一种基于计算机的云渲染系统及方法 |
-
2023
- 2023-12-13 CN CN202311714251.1A patent/CN117634369B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180357809A1 (en) * | 2017-06-13 | 2018-12-13 | Sean Lawless | Apparatus and method for optimizing time/space warp for virtual reality using dynamic tiling and dirty tile marking |
US20190206017A1 (en) * | 2017-12-29 | 2019-07-04 | Yunbiao Lin | Apparatus and method for display virtualization |
CN112348732A (zh) * | 2019-08-08 | 2021-02-09 | 华为技术有限公司 | 基于图形渲染管线的模型推理方法、装置及存储介质 |
US20210157654A1 (en) * | 2019-11-21 | 2021-05-27 | International Business Machines Corporation | Dynamic distribution of loads across heterogenous computing structures in computational rendering |
US20230162424A1 (en) * | 2020-04-24 | 2023-05-25 | Robotify Labs Limited | A Computer Implemented Method of Simulating a 3D Object |
US20230103565A1 (en) * | 2021-09-28 | 2023-04-06 | International Business Machines Corporation | Register transfer level navigation microservices and instrumentation for cloud-native electronic design automation (eda) platforms |
CN114092621A (zh) * | 2021-11-26 | 2022-02-25 | 腾讯科技(深圳)有限公司 | 基于液体面的渲染方法、装置、设备、介质及程序产品 |
CN116302107A (zh) * | 2021-12-21 | 2023-06-23 | 英特尔公司 | 自调谐线程调遣策略 |
CN116414550A (zh) * | 2021-12-30 | 2023-07-11 | 摩尔线程智能科技(北京)有限责任公司 | 独立显卡及其任务管理方法、装置和电子设备 |
CN114077508A (zh) * | 2022-01-19 | 2022-02-22 | 维塔科技(北京)有限公司 | 一种远程图像渲染方法、装置、电子设备以及介质 |
CN115983047A (zh) * | 2023-03-14 | 2023-04-18 | 北京科技大学 | 一种适用于多图形接口的跨平台的仿真系统 |
CN116360928A (zh) * | 2023-05-15 | 2023-06-30 | 摩尔线程智能科技(北京)有限责任公司 | 一种安卓容器显示系统的优化方法及装置、电子设备 |
CN117078846A (zh) * | 2023-07-20 | 2023-11-17 | 西安航天信息研究所 | Gpu多点渲染的3d可视化实时仿真方法、系统及产品 |
CN117132699A (zh) * | 2023-07-31 | 2023-11-28 | 广州点动信息科技股份有限公司 | 一种基于计算机的云渲染系统及方法 |
CN116992673A (zh) * | 2023-08-04 | 2023-11-03 | 西安交通大学 | 一种采用分层附着分层渲染的车漆喷涂在线仿真方法 |
CN117034384A (zh) * | 2023-08-28 | 2023-11-10 | 南京智训云智能科技有限公司 | 一种电网变电站高压设备数字三维仿真方法 |
Non-Patent Citations (4)
Title |
---|
G. AAD 等: "Modelling and computational improvements to the simulation of single vector-boson plus jet processes for the ATLAS experiment", 《JOURNAL OF HIGH ENERGY PHYSICS》, vol. 2022, 5 August 2022 (2022-08-05) * |
张涛 等: "基于SPARC V8的星载嵌入式软件全数字仿真平台设计与实现", 《计算机测量与控制》, no. 01, 25 January 2020 (2020-01-25) * |
杜召平 等: "一种基于虚拟仿真技术的三维态势显示系统设计", 《舰船科学技术》, no. 09, 8 May 2018 (2018-05-08) * |
赵维 等: "下一代三维图形引擎发展趋势研究", 《系统仿真学报》, no. 12, 8 December 2017 (2017-12-08) * |
Also Published As
Publication number | Publication date |
---|---|
CN117634369B (zh) | 2024-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11010505B2 (en) | Simulation of virtual processors | |
US9355002B2 (en) | Capturing trace information using annotated trace output | |
US10552190B2 (en) | Precise error injection for driver testing | |
CN110531962A (zh) | 小程序的开发处理方法、设备及计算机可读存储介质 | |
CN110825440A (zh) | 指令执行方法和装置 | |
CN110868324A (zh) | 一种业务配置方法、装置、设备和存储介质 | |
CN108628733B (zh) | 批量业务处理操作的测试方法及装置 | |
CN116720462A (zh) | 芯片仿真系统的构建装置、方法、设备及芯片仿真系统 | |
CN115391204A (zh) | 自动驾驶服务的测试方法、装置、电子设备及存储介质 | |
CN117634369B (zh) | 仿真方法、模型、电子设备、存储介质 | |
CN114385524A (zh) | 嵌入式固件仿真系统及其方法、装置和电子设备 | |
US11244096B2 (en) | Simulating operation of an electronic device tracing using port mirroring | |
US11169895B2 (en) | Emulation latch to capture state | |
US8589327B2 (en) | Efficiently determining boolean satisfiability with lazy constraints | |
CN115269431A (zh) | 一种接口测试方法、装置、电子设备及存储介质 | |
US11520961B2 (en) | Heterogeneous-computing based emulator | |
CN112988145B (zh) | 生成航空发动机软件架构的方法及航空发动机控制装置 | |
US10936389B2 (en) | Dual physical-channel systems firmware initialization and recovery | |
CN108960433B (zh) | 用于运行机器学习建模过程的方法及系统 | |
US10223013B2 (en) | Processing input/output operations in a channel using a control block | |
CN117251118B (zh) | 支持虚拟NVMe仿真与集成方法及系统 | |
CN117376229B (zh) | 基于嵌入式设备的ftp文件系统软件交叉调试方法及系统 | |
US11663119B2 (en) | Select decompression headers and symbol start indicators used in writing decompressed data | |
CN115297169B (zh) | 数据处理方法、装置、电子设备及介质 | |
CN111930748B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |