CN118246377B - 一种张量处理器的模拟器架构、模拟方法、设备及介质 - Google Patents
一种张量处理器的模拟器架构、模拟方法、设备及介质 Download PDFInfo
- Publication number
- CN118246377B CN118246377B CN202410658513.5A CN202410658513A CN118246377B CN 118246377 B CN118246377 B CN 118246377B CN 202410658513 A CN202410658513 A CN 202410658513A CN 118246377 B CN118246377 B CN 118246377B
- Authority
- CN
- China
- Prior art keywords
- instruction
- target
- simulation
- code
- memory
- 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.)
- Active
Links
- 238000004088 simulation Methods 0.000 title claims abstract description 212
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000006243 chemical reaction Methods 0.000 claims abstract description 31
- 238000012545 processing Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 17
- 238000013507 mapping Methods 0.000 claims description 6
- 230000003139 buffering effect Effects 0.000 claims description 3
- 239000013598 vector Substances 0.000 description 16
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000007667 floating Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 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
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种张量处理器的模拟器架构、模拟方法、设备及介质。该模拟器架构中,程序装载器用于提取所读取硬件可执行程序中的代码关键信息;模拟存储器用于对代码关键信息进行存储;模拟寄存器用于在模拟存储器中确定目标代码关键信息;指令描述符处理器用于获取模拟存储器中目标代码关键信息的目标代码指令信息,并进行代码转换,生成目标软件可执行程序;运行器,用于获取指令描述符处理器生成的目标软件可执行程序以及模拟存储器中对应的目标执行数据进行软件代码执行,将执行结果写入模拟寄存器或模拟存储器,并更新目标代码关键信息。该模拟器架构可进行硬件程序至软件程序的转换,实现处理器的高效模拟仿真。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种张量处理器的模拟器架构、模拟方法、设备及介质。
背景技术
在处理器芯片设计中,通常会采用张量处理器的模拟器进行处理器功能仿真。
在传统的处理器模拟器开发中,通常需要开发者显示地编写程序,实现每条处理器指令的模拟执行过程。但是,随着指令的运算能力提升、运算量提升以及运算步骤的复杂化,指令包的结构也越来越复杂。在进行张量处理器的模拟器开发时,指令行为的编程实现变得更加复杂而繁琐,开发者的工作量成倍增大。
因而,亟待提供一种张量处理器的模拟器架构,实现指令执行过程的自动编写,从而将开发者从繁琐的程序编写工作中解脱出来,实现处理器的高效模拟仿真。
发明内容
本发明提供了一种张量处理器的模拟器架构、模拟方法、设备及介质,以实现指令执行过程的自动编写,以及处理器的高效模拟仿真。
根据本发明的一方面,提供了一种张量处理器的模拟器架构,该模拟器架构,包括:程序装载器、模拟存储器、模拟寄存器、指令描述符处理器、以及运行器;其中:
所述程序装载器与模拟存储器相连,用于读取硬件可执行程序,并提取所述硬件可执行程序中的代码关键信息;
所述模拟存储器,用于对所述代码关键信息进行存储;
所述模拟寄存器与模拟存储器相连,用于模拟张量处理器的物理寄存器,并在所述模拟存储器中确定目标代码关键信息;
所述指令描述符处理器与所述模拟存储器相连,用于获取所述模拟存储器中所述目标代码关键信息的目标代码指令信息,并对所述目标代码指令信息进行代码转换,生成目标软件可执行程序;
所述运行器分别与模拟寄存器、指令描述符处理器以及模拟存储器相连;
所述运行器,用于获取所述指令描述符处理器生成的目标软件可执行程序,以及所述模拟存储器中对应的目标执行数据;根据所述目标软件可执行程序和所述目标执行数据进行软件代码执行,将执行结果写入所述模拟寄存器或所述模拟存储器,并根据执行结果指示所述模拟寄存器更新确定目标代码关键信息。
可选的,指令描述符处理器,包括:指令解码器、指令描述符注册表、以及指令编译器;其中:
所述指令解码器与所述模拟存储器相连,用于获取所述模拟存储器中所述目标代码关键信息的目标代码指令信息,识别所述目标代码指令信息中的操作命令,并通过所述指令描述符注册表将所述操作命令映射为目标描述符;其中,所述目标描述符为预设格式的指令语句;
所述指令编译器与所述指令解码器相连,用于根据所述目标描述符进行代码转换,生成目标软件可执行程序。
可选的,所述指令编译器,具体用于:
对所述目标描述符进行语法检查,并在语法检查通过时,根据所述目标描述符生成对应的抽象语法树;其中,所述抽象语法树的结构为当前叶子节点通过一步指令执行得到下一父节点;
在所述抽象语法树中,从叶子节点开始推导确定各父节点的数据类型,直至确定根节点的数据类型;并在各节点的数据类型符合运算要求时,根据所述抽象语法树生成线性结构的中间表示;
对各中间表示进行流水线拆分,并按照与硬件执行流水匹配的软件模拟执行顺序对拆分结果进行重新排序,生成软件执行流水线阶段代码;
根据所述软件执行流水线阶段代码,生成目标软件可执行程序。
可选的,模拟器架构,还包括:热点可执行代码缓存器;
所述热点可执行代码缓存器与所述指令描述符处理器相连,用于获取并缓存所述目标软件可执行程序;
所述热点可执行代码缓存器分别与所述模拟寄存器和所述运行器相连;
所述模拟寄存器,还用于在在所述模拟存储器中确定目标代码关键信息之前,查询所述热点可执行代码缓存器中是否存在已编译完成的目标软件可执行程序;
所述热点可执行代码缓存器,还用于在存在已编译完成的目标软件可执行程序时,将已编译完成的目标软件可执行程序发送至所述运行器;
所述运行器,还用于获取所述热点可执行代码缓存器缓存的已编译完成的目标软件可执行程序;根据已编译完成的目标软件可执行程序和所述目标执行数据进行软件代码执行。
可选的,模拟器架构,还包括:指令描述符仓库;
所述指令描述符注册表存储于所述指令描述符仓库中。
可选的,模拟存储器,包括:指令模拟存储器和数据模拟存储器;
所述指令模拟存储器和所述数据模拟存储器均与所述程序装载器相连;
所述指令模拟存储器,用于存储所述程序装载器在所述硬件可执行程序中提取的代码关键信息中的代码指令信息;
所述数据模拟存储器,用于存储所述程序装载器在所述硬件可执行程序中提取的代码关键信息中的执行数据;
所述模拟寄存器与所述指令模拟存储器相连,用于在所述指令模拟存储器中确定目标代码关键信息的目标代码指令信息;
所述指令描述符处理器与所述指令模拟存储器相连,用于获取所述指令模拟存储器中所述目标代码关键信息的目标代码指令信息,并对所述目标代码指令信息进行代码转换,生成目标软件可执行程序;
所述运行器与所述数据模拟存储器相连,用于在所述数据模拟存储器中读写数据。
可选的,模拟器架构,还包括:日志分析器;
所述日志分析器与所述运行器相连,用于记录并分析所述模拟器运行中的日志数据。
可选的,指令描述符处理器,还用于:
识别所述运行器对应的执行平台标识,并根据所述执行平台标识确定与所述运行器对应的软件可执行程序类型;
根据所述软件可执行程序类型,对所述目标代码指令信息进行代码转换,生成与所述运行器的执行平台对应的目标软件可执行程序。
根据本发明的另一方面,提供了一种张量处理器的模拟方法,该模拟方法应用于如本发明任一实施例所提供的张量处理器的模拟器架构,所述模拟方法,包括:
通过程序装载器读取硬件可执行程序,并提取所述硬件可执行程序中的代码关键信息;
通过模拟存储器对所述代码关键信息进行存储;
通过模拟寄存器在所述模拟存储器中确定目标代码关键信息;
通过指令描述符处理器获取所述模拟存储器中所述目标代码关键信息的目标代码指令信息,并对所述目标代码指令信息进行代码转换,生成目标软件可执行程序;
通过运行器获取所述指令描述符处理器生成的目标软件可执行程序,以及所述模拟存储器中对应的目标执行数据;根据所述目标软件可执行程序和所述目标执行数据进行软件代码执行,将执行结果写入所述模拟存储器,并根据执行结果指示所述模拟寄存器更新确定目标代码关键信息。
可选的,指令描述符处理器,包括:指令解码器、指令描述符注册表、以及指令编译器;
所述模拟方法,还包括:
通过指令解码器获取所述模拟存储器中所述目标代码关键信息的目标代码指令信息,识别所述目标代码指令信息中的操作命令,并通过所述指令描述符注册表将所述操作命令映射为目标描述符;其中,所述目标描述符为预设格式的指令语句;
通过指令编译器根据所述目标描述符进行代码转换,生成目标软件可执行程序。
根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
至少一个中央处理器;以及
与所述至少一个中央处理器通信连接的物理存储器;其中,
所述物理存储器存储有可被所述至少一个中央处理器执行的计算机程序,所述计算机程序被所述至少一个中央处理器执行,以使所述至少一个中央处理器能够执行本发明任一实施例所述的张量处理器的模拟方法。
根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使中央处理器执行时实现本发明任一实施例所述的张量处理器的模拟方法。
本发明实施例的技术方案,通过设置有程序装载器、模拟存储器、模拟寄存器、指令描述符处理器、以及运行器的模拟器架构,其中:所述程序装载器与模拟存储器相连,用于读取硬件可执行程序,并提取所述硬件可执行程序中的代码关键信息;所述模拟存储器,用于对所述代码关键信息进行存储;所述模拟寄存器与模拟存储器相连,用于模拟张量处理器的物理寄存器,并在所述模拟存储器中确定目标代码关键信息;所述指令描述符处理器与所述模拟存储器相连,用于获取所述模拟存储器中所述目标代码关键信息的目标代码指令信息,并对所述目标代码指令信息进行代码转换,生成目标软件可执行程序;所述运行器分别与模拟寄存器、指令描述符处理器以及模拟存储器相连;所述运行器,用于获取所述指令描述符处理器生成的目标软件可执行程序,以及所述模拟存储器中对应的目标执行数据;根据所述目标软件可执行程序和所述目标执行数据进行软件代码执行,将执行结果写入所述模拟寄存器或所述模拟存储器,并根据执行结果指示所述模拟寄存器更新确定目标代码关键信息,解决了张量处理器的仿真模拟问题,可以实现硬件执行程序到软件执行程序的转换,减少开发者的繁琐编程工作,实现处理器的高效模拟仿真。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例一提供的一种张量处理器的模拟器架构的结构示意图;
图2是根据本发明实施例提供的一种张量处理器的模拟器架构的结构示意图;
图3是根据本发明实施例二提供的一种抽象语法树的结构示意图;
图4是根据本发明实施例三提供的一种张量处理器的模拟方法的流程图;
图5是实现本发明实施例的张量处理器的模拟方法的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1是根据本发明实施例一提供的一种张量处理器的模拟器架构的结构示意图,本实施例可适用于在进行处理器芯片开发时,在处理器芯片可用之前,对芯片进行功能仿真模拟的情况。如图1所示,该模拟器架构包括:程序装载器110、模拟存储器120、模拟寄存器130、指令描述符处理器140、以及运行器150。
在本发明实施例中,张量处理器的模拟器是对处理器芯片设计时的一种软件模拟。例如,张量处理器的模拟器是运行在Linux或Windows等工作站上的计算机软件。张量处理器的模拟器可以用作芯片上的可执行软件程序的运行平台,提供处理器芯片的功能仿真、功能测试和性能评估等。尤其是,在处理器芯片可用之前,可以通过张量处理器的模拟器对处理器芯片进行仿真测试,以提高处理器芯片开发的可行性。
在处理器芯片开发中,通常硬件可执行程序是由开发者编程形成的。在对处理器芯片进行仿真时,需要的是软件可执行程序。软件可执行程序与硬件可执行程序存在一定差异。例如,软件执行程序需要模拟硬件可执行程序中的指令流水线阶段的执行顺序。现有技术中,通常需要开发者将硬件可执行程序改写为软件可执行程序。而在本发明实施例中所提供的张量处理器的模拟器架构中可以基于硬件可执行程序进行张量处理器的模拟仿真,从而降低开发者的工作量,提高芯片开发的效率与可靠性。
在本发明实施例中,如图1所示,程序装载器110与模拟存储器120相连,用于读取硬件可执行程序,并提取硬件可执行程序中的代码关键信息。其中,硬件可执行程序即芯片设计中预先编写的应用于芯片实体执行的代码。硬件可执行程序可以是可执行可链接格式(Executable and Linkable Format,ELF)或者可移植可执行格式(Portable Executable,PE)的代码。代码关键信息包括代码段、数据段以及程序起始地址等。在代码段中还可以包括指令包。指令包中可以存在一条或多条指令。指令中可以包括指令的运行方式、寄存器、存储器、以及分支等信息。
模拟存储器可以是张量处理器的模拟器在工作站的内存中分配出的一块内存。模拟存储器,用于对代码关键信息进行存储。其中,如图1所示模拟存储器120可以划分为指令模拟存储器121和数据模拟存储器122。指令模拟存储器121可以存储程序装载器提取的代码段即代码关键信息中的代码指令信息。数据模拟存储器122可以存储程序装载器提取的数据段即代码关键信息中的执行数据。
也即在本发明实施例的一个可选实施方式中,模拟存储器,包括:指令模拟存储器和数据模拟存储器;指令模拟存储器和数据模拟存储器均与程序装载器相连;指令模拟存储器,用于存储程序装载器在硬件可执行程序中提取的代码关键信息中的代码指令信息;数据模拟存储器,用于存储程序装载器在硬件可执行程序中提取的代码关键信息中的执行数据。
如图1所示,模拟寄存器130与模拟存储器120相连,用于模拟张量处理器的物理寄存器,并在模拟存储器中确定目标代码关键信息。其中,模拟寄存器130可以是张量处理器的模拟器在工作站的内存中分配出的一块内存。模拟寄存器130可以根据程序指针PC确定目标代码关键信息。例如,模拟寄存器130可以根据程序指针PC从模拟存储器120(可以具体是指令模拟存储器121)中取出对应程序地址的指令。在本发明实施例的一个可选实施方式中,如图1所示,模拟寄存器130与指令模拟存储器121相连,用于在指令模拟存储器121中确定目标代码关键信息的目标代码指令信息。
如图1所示,指令描述符处理器140与模拟存储器120相连,用于获取模拟存储器120中目标代码关键信息的目标代码指令信息,并对目标代码指令信息进行代码转换,生成目标软件可执行程序。其中,指令描述符处理器可以对目标代码指令信息进行代码转换生成目标软件可执行程序。具体的代码转换方式可以是多样的。例如,指令描述符处理器可以将目标代码指令信息映射为软件可执行程序的指令表示,然后再对指令表示进行流水线阶段排序设置,即可将目标代码指令信息转换为目标软件可执行程序。
在本发明实施例的一个可选实施方式中,如图1所示,指令描述符处理器140与指令模拟存储器121相连,用于获取指令模拟存储器121中目标代码关键信息的目标代码指令信息,并对目标代码指令信息进行代码转换,生成目标软件可执行程序。
如图1所示,运行器150分别与模拟寄存器130、指令描述符处理器140以及模拟存储器120相连。运行器150,用于获取指令描述符处理器140生成的目标软件可执行程序,以及模拟存储器120中对应的目标执行数据;根据目标软件可执行程序和目标执行数据进行软件代码执行,将执行结果写入模拟寄存器130或模拟存储器120,并根据执行结果指示模拟寄存器130更新确定目标代码关键信息。
其中,运行器的模拟运行顺序与硬件实际执行顺序是相同的,可以保证模拟的可靠性。运行器在根据目标软件可执行程序和目标执行数据进行软件代码执行后,可以修改程序指针PC,从而指向下一个要执行的处理器指令包的地址。也即模拟寄存器可以根据更新后的程序指针PC在模拟存储器中更新确定目标代码关键信息。从而,实现迭代解码指令,进行张量处理器的模拟器仿真运行。
在本发明实施例的一个可选实施方式中,如图1所示,运行器150与数据模拟存储器122相连,用于在数据模拟存储器122中读写数据。具体的,运行器可以在执行目标软件可执行程序时,在数据模拟存储器中获取对应的目标执行数据。运行器还可以在目标软件可执行程序执行完毕时,将执行结果写入数据模拟存储器。
本发明实施例的技术方案,通过设置有程序装载器、模拟存储器、模拟寄存器、指令描述符处理器、以及运行器的模拟器架构,其中:程序装载器与模拟存储器相连,用于读取硬件可执行程序,并提取硬件可执行程序中的代码关键信息;模拟存储器,用于对代码关键信息进行存储;模拟寄存器与模拟存储器相连,用于模拟张量处理器的物理寄存器,并在模拟存储器中确定目标代码关键信息;指令描述符处理器与模拟存储器相连,用于获取模拟存储器中目标代码关键信息的目标代码指令信息,并对目标代码指令信息进行代码转换,生成目标软件可执行程序;运行器分别与模拟寄存器、指令描述符处理器以及模拟存储器相连;运行器,用于获取指令描述符处理器生成的目标软件可执行程序,以及模拟存储器中对应的目标执行数据;根据目标软件可执行程序和目标执行数据进行软件代码执行,将执行结果写入模拟寄存器或模拟存储器,并根据执行结果指示模拟寄存器更新确定目标代码关键信息,解决了张量处理器的仿真模拟问题,可以实现硬件执行程序到软件执行程序的转换,减少开发者的繁琐编程工作,实现处理器的高效模拟仿真。
实施例二
图2是根据本发明实施例提供的一种张量处理器的模拟器架构的结构示意图。本实施例是对上述技术方案的进一步细化,本实施例中的技术方案可以与上述一个或者多个实施例中的各个可选方案结合。如图2所示,该模拟器架构,包括:程序装载器110、模拟存储器120、模拟寄存器130、指令描述符处理器140、以及运行器150。
其中,程序装载器与模拟存储器相连,用于读取硬件可执行程序,并提取硬件可执行程序中的代码关键信息;模拟存储器,用于对代码关键信息进行存储;模拟寄存器与模拟存储器相连,用于模拟张量处理器的物理寄存器,并在模拟存储器中确定目标代码关键信息。
指令描述符处理器与模拟存储器相连,用于获取模拟存储器中目标代码关键信息的目标代码指令信息,并对目标代码指令信息进行代码转换,生成目标软件可执行程序。
运行器分别与模拟寄存器、指令描述符处理器以及模拟存储器相连;运行器,用于获取指令描述符处理器生成的目标软件可执行程序,以及模拟存储器中对应的目标执行数据;根据目标软件可执行程序和目标执行数据进行软件代码执行,将执行结果写入模拟寄存器或模拟存储器,并根据执行结果指示模拟寄存器更新确定目标代码关键信息。
在本发明实施例的一个可选实施方式中,如图2所示,模拟存储器120,包括:指令模拟存储器121和数据模拟存储器122。其中,指令模拟存储器和数据模拟存储器均与程序装载器相连;指令模拟存储器,用于存储程序装载器在硬件可执行程序中提取的代码关键信息中的代码指令信息;数据模拟存储器,用于存储程序装载器在硬件可执行程序中提取的代码关键信息中的执行数据;模拟寄存器与指令模拟存储器相连,用于在指令模拟存储器中确定目标代码关键信息的目标代码指令信息;指令描述符处理器与指令模拟存储器相连,用于获取指令模拟存储器中目标代码关键信息的目标代码指令信息,并对目标代码指令信息进行代码转换,生成目标软件可执行程序;运行器与数据模拟存储器相连,用于在数据模拟存储器中读写数据。
在上述实施方式的基础上,可选的,如图2所示,指令描述符处理器140,包括:指令解码器141、指令描述符注册表142、以及指令编译器143。其中,指令解码器141与模拟存储器120(具体可以是指令模拟存储器121)相连,用于获取模拟存储器120中目标代码关键信息的目标代码指令信息,识别目标代码指令信息中的操作命令,并通过指令描述符注册表将操作命令映射为目标描述符。其中,目标描述符为预设格式的指令语句。指令编译器143与指令解码器141相连,用于根据目标描述符进行代码转换,生成目标软件可执行程序。
在本发明实施例中,指令解码器可以模拟张量处理器的物理指令解码器。指令解码器可以从指令模拟存储器中获取指令包,对指令包中的一条或多条指令进行信息识别,确定对应的操作命令。例如,指令解码器可以识别指令中的加法、减法、乘法、除法、赋值、位移等操作命令。
在本发明实施例的一个可选实施方式中,模拟器架构,还包括:指令描述符仓库;指令描述符注册表存储于指令描述符仓库中。指令描述符注册表可以是一个查找表。指令描述符注册表中可以记录指令的操作命令与描述符的映射关系。描述符为预设格式的指令语句。具体的,描述符可以是由硬件可执行程序转换为软件可执行程序的一种描述表示。例如,描述符可以是指令描述语言(Tiny Simulator Language,TSL),可以描述各指令的行为。
示例性的,描述符可以描述标量和张量指令的各种运算和流程控制操作。TSL描述符可以具有下列特性:具有高级语言的表达式风格。表达式可以嵌套,不用频繁的定义和释放临时变量。向量是一等公民,是基础数据类型。可以容易地使用向量寄存器、临时向量、标量寄存器、常量,直接对它们做计算,并会自动管理向量的内存。支持标量,向量,向量的各种丰富的数学计算操作。支持对寄存器的位操作,对向量的截取,下标操作。能描述向量处理器中的指令包,以及多硬件线程指令。严格的类型检查,不容易用错。直接使用C语言API接口来构建TSL的语法树,可以方便的嵌入到软件模拟器的原生代码中。
在本发明实施例的一个可选实施方式中,描述符可以是TSL描述符。TSL描述符可以采用下述具体描述:SR表示标量寄存器,VR表示向量寄存器。例如,SR2为标量寄存器2,VR3为向量寄存器3。add表示多元运算加法。如“add SR2 SR3”表示二元运算,标量寄存器SR2和SR3的值做加法。sub表示多元运算减法。如“sub VR0 VR1” 表示二元运算,向量寄存器VR0和VR1按元素做减法。scalar_set 表示标量寄存器赋值。如“scalar_set SR2 SR3”表示把SR3的值写到SR2中。vec_copy 表示张量寄存器赋值。如“vec_copy VR2 VR3” 表示寄存器赋值,把向量VR3复制到向量VR2。vec_store 表示写存储器,如“vec_store SR3 VR4”表示用标量寄存器SR3中的值作为地址,把向量VR4中的值写入到该地址的存储器中。goto表示跳转。如“goto R5”表示处理器程序地址跳转到寄存器SR5的值所表示的地址。“if(condition)”表示条件执行语句块,根据条件表达式的结果,决定执行其中一个分支语句。例如,
(if (condition)
(vec_copy VR1 (add VR2 VR3))
(vec_copy VR1 VR4))
表示当condition为true(真)时,执此分支“vec_copy VR1 (add VR2 VR3)”;当condition为false(假)时,执此分支“vec_copy VR1 VR4)”。
上述的各示例性指令描述符可以嵌套使用,可以方便描述复杂的张量指令的行为。例如,“vec_copy VR1 (add VR2 VR3)”表示把向量寄存器VR2和VR3中的值求和,把结果写入到VR1中。“vec_store (mul SR3 64) VR4” 表示SR3乘以64得到一个地址,然后把向量VR4写入到这个地址的存储器。
上述的指令描述符可以以语句块的方式体现。“pblock”表示语句块关键词,可以用来描述指令包或者硬件多线程等行为。例如,
(pblock
(vec_copy VR1 (add VR2 VR3))
(vec_store (mul SR3 64) VR4))
表示包含两条并行指令的指令包的TSL描述。
指令编译器根据目标描述符进行代码转换,可以是识别TSL描述中的流水线阶段,按照流水线阶段重新排序,生成与硬件执行相同的执行顺序;再依据重新排序结果进行代码编译生成目标软件可执行程序。
具体的,在本发明实施例的一个可选实施方式中,指令编译器,具体用于:对目标描述符进行语法检查,并在语法检查通过时,根据目标描述符生成对应的抽象语法树;其中,抽象语法树的结构为当前叶子节点通过一步指令执行得到下一父节点;在抽象语法树中,从叶子节点开始推导确定各父节点的数据类型,直至确定根节点的数据类型;并在各节点的数据类型符合运算要求时,根据抽象语法树生成线性结构的中间表示;对各中间表示进行流水线拆分,并按照与硬件执行流水匹配的软件模拟执行顺序对拆分结果进行重新排序,生成软件执行流水线阶段代码;根据软件执行流水线阶段代码,生成目标软件可执行程序。
其中,语法检查可以是检查描述符是否满足预设格式。对于不满足预设格式的描述符可以进行报警,以进行描述符修正。抽象语法树是程序序言在代码中的一种数据结构。具体而言,抽象语法树的结构为当前叶子节点通过一步指令执行得到下一父节点。例如,图3是根据本发明实施例二提供的一种抽象语法树的结构示意图。对于TSL描述符“(A:fp+b:fp)-(c:fp×d:fp)”,可以生成如图3所示的抽象语法树。其中,“:fp”表示数据类型为浮点型。
如图3所示,抽象语法树的根节点为减法,对应的叶子节点为加法(被减数)和乘法(减数)。加法节点所对应的叶子节点为数据来源即A和b。乘法节点所对应的叶子节点为数据来源即c和d。也即,如图3所示的抽象语法树中,A和b经过一步指令执行(加法)得到加法节点,c和d经过一步指令执行(乘法)得到乘法节点,加法节点与乘法节点经过一步指令执行(减法)得到根节点。
在抽象语法树中,可以从叶子节点开始推导确定父节点的数据类型。其中,数据类型包括但不限于整型和浮点型。数据可以是标量数据也可以是向量数据。如图3所示,A和b的数据类型为浮点型,进而对应的加法节点为浮点型;c和d的数据类型为浮点型,进而对应的乘法节点为浮点型;加法节点和乘法节点为浮点型,进而根节点(减法)为浮点型。在进行数据类型推导时,需要保证数据类型符合运算要求。例如,浮点型与整型数据不能进行运算,否则会造成数据错误。
根据抽象语法树生成的线性结构的中间表示,可以是对抽象语法树中的一步指令进行具体描述。例如,如图3所示的抽象语法树可以生成的中间表示为:T0=A+b;T1=c×d;T2=T0-T1。其中,T0、T1、和T2均为临时变量。
其中,流水线阶段包括:执行、访存、写寄存器和控制。与硬件执行流水匹配的软件模拟执行顺序可以是依次排序的执行、访存、写寄存器和控制。对各中间表示进行流水线拆分,可以是识别各中间表示所包含的流水线阶段。例如,T0=A+b;T1=c×d和T2=T0-T1的流水线阶段均为执行。进而,可以对各中间表示按照执行、访存、写寄存器和控制的顺序重新排序,生成软件执行流水线阶段代码。
示例性的,对于TSL描述的指令包:
(pblock
(goto (add SR2 8))
(vec_copy VR4 (add VR5 VR6))
(vec_store (add SR8 16) VR7)
(sreg_set SR9 (sub SR10 SR11)) )
(goto (add SR2 8))可以拆分为执行阶段T0=SR2+8,以及控制阶段goto T0。(vec_copy VR4 (add VR5 VR6))可以拆分为执行阶段T1 = VR5 + VR6,以及写回阶段VR4= T1。(vec_store (add SR8 16) VR7) 可以拆分为执行阶段T2 = SR8 + 1,以及访问阶段[T2] = VR7。其中,T2作为存储器的地址,把VR7的值写入该地址。(sreg_set SR9 (subSR10 SR11)) 可以拆分为执行阶段T3 = SR10 - SR11,以及写回阶段SR9 = T3。
上述的各指令流水线阶段可以按照与硬件执行流水匹配的软件模拟执行顺序对拆分结果进行重新排序。排序后生成的软件执行流水线阶段代码为:
T0 = SR2 + 8
T1 = VR5 + VR6
T2 = R8 + 16
T3 = SR10 - SR11
[T2] = VR7
VR4 = T1
SR9 = T3
Goto T0
上述的软件执行流水线阶段代码是流水线级别并行执行的代码。进而,指令编译器可以根据软件执行流水线阶段代码进行代码编译,生成目标软件可执行程序。其中,代码编译过程可以采用经典编译器的优化方式。例如,代码编译包括指令选择、指令调度以及寄存器分配。本发明实施例对代码编译过程不做具体限定。
在本发明实施例的一个可选实施方式中,指令描述符处理器,还用于:识别运行器对应的执行平台标识,并根据执行平台标识确定与运行器对应的软件可执行程序类型;根据软件可执行程序类型,对目标代码指令信息进行代码转换,生成与运行器的执行平台对应的目标软件可执行程序。
其中,执行平台标识包括但不限于X86平台标识和ARM平台标识。根据执行平台标识进行目标软件可执行程序生成时,可以是:首先,针对不同的平台选择出不同的机器指令,如x86指令、ARM64指令。在指令调度时,针对不同执行平台处理器的流水线特征做相应的机器指令顺序的重排序。在寄存器分配时,按照不同的平台处理器的寄存器惯例为指令分配寄存器。最后插入运行平台的运行代码,生成最终与执行平台对应的目标软件可执行程序。平台代码生成步骤,可以由用户自定义实现,也可借助第三方编译工具。除此之外,用户还可以通过自定义编译器生成处理器的硬实现代码。
通过指令编译器可以将硬件执行代码转换为软件执行代码,实现张量处理器的模拟器自动仿真,将开发者从繁琐的指令细节中解放出来。并且,通过指令编译器可以提升模拟器仿真效率,进而提高芯片设计速率。通过指令描述符处理器实现多平台的代码转换,可以使处理器芯片仿真在多平台进行实现,从而提高芯片设计的兼容性。
在上述实施方式的基础上,可选的,如图2所示,模拟器架构,还包括:热点可执行代码缓存器160。热点可执行代码缓存器与指令描述符处理器(具体可以是指令编译器)相连。热点可执行代码缓存器,用于获取并缓存目标软件可执行程序。
热点可执行代码缓存器分别与模拟寄存器和运行器相连。模拟寄存器,还用于在在模拟存储器中确定目标代码关键信息之前,查询热点可执行代码缓存器中是否存在已编译完成的目标软件可执行程序。热点可执行代码缓存器,还用于在存在已编译完成的目标软件可执行程序时,将已编译完成的目标软件可执行程序发送至运行器。运行器,还用于获取热点可执行代码缓存器缓存的已编译完成的目标软件可执行程序;根据已编译完成的目标软件可执行程序和目标执行数据进行软件代码执行。
其中,热点可执行代码缓存器可以对编译生成的目标软件可执行程序进行存储。在张量处理器的模拟器进行程序执行过程中,同一地址的指令可能会被多次执行。例如,指令是源程序中的循环体时,可能会多次执行。在本发明实施例中,模拟器在从指令模拟存储器中取程序地址对应的指令之前,可以在热点可执行代码缓存器中查找是否存在已经编译好的对应程序地址的执行程序。如果热点可执行代码缓存器中存在已经编译好的对应程序地址的执行程序,则无需重复对该程序地址的指令进行重新编译,运行器只需获取对应的软件可执行程序即可执行。通过热点可执行代码缓存器可以隐藏代码编译开销,提高模拟器的运行速度。
在上述实施方式的基础上,可选的,如图2所示,模拟器架构,还包括:日志分析器170。日志分析器与运行器相连,用于记录并分析模拟器运行中的日志数据。
本实施例的技术方案,通过设置有程序装载器、模拟存储器、模拟寄存器、指令描述符处理器、以及运行器的模拟器架构,其中:程序装载器与模拟存储器相连,用于读取硬件可执行程序,并提取硬件可执行程序中的代码关键信息;模拟存储器,用于对代码关键信息进行存储;模拟寄存器与模拟存储器相连,用于模拟张量处理器的物理寄存器,并在模拟存储器中确定目标代码关键信息;指令描述符处理器与模拟存储器相连,用于获取模拟存储器中目标代码关键信息的目标代码指令信息,并对目标代码指令信息进行代码转换,生成目标软件可执行程序;运行器分别与模拟寄存器、指令描述符处理器以及模拟存储器相连;运行器,用于获取指令描述符处理器生成的目标软件可执行程序,以及模拟存储器中对应的目标执行数据;根据目标软件可执行程序和目标执行数据进行软件代码执行,将执行结果写入模拟寄存器或模拟存储器,并根据执行结果指示模拟寄存器更新确定目标代码关键信息,解决了张量处理器的仿真模拟问题,可以实现硬件执行程序到软件执行程序的转换,减少开发者的繁琐编程工作,实现处理器的高效模拟仿真。
实施例三
图4是根据本发明实施例三提供的一种张量处理器的模拟方法的流程图。该模拟方法应用于如本发明任一实施例所提供的张量处理器的模拟器架构。如图4所示,该方法包括:
步骤410、通过程序装载器读取硬件可执行程序,并提取硬件可执行程序中的代码关键信息。
步骤420、通过模拟存储器对代码关键信息进行存储。
步骤430、通过模拟寄存器在模拟存储器中确定目标代码关键信息。
步骤440、通过指令描述符处理器获取模拟存储器中目标代码关键信息的目标代码指令信息,并对目标代码指令信息进行代码转换,生成目标软件可执行程序。
步骤450、通过运行器获取指令描述符处理器生成的目标软件可执行程序,以及模拟存储器中对应的目标执行数据;根据目标软件可执行程序和目标执行数据进行软件代码执行,将执行结果写入模拟存储器,并根据执行结果指示模拟寄存器更新确定目标代码关键信息。
可选的,指令描述符处理器,包括:指令解码器、指令描述符注册表、以及指令编译器;指令解码器与模拟存储器相连;指令编译器与指令解码器相连;
通过指令描述符处理器获取模拟存储器中目标代码关键信息的目标代码指令信息,并对目标代码指令信息进行代码转换,生成目标软件可执行程序,包括:通过指令解码器获取模拟存储器中目标代码关键信息的目标代码指令信息,识别目标代码指令信息中的操作命令,并通过指令描述符注册表将操作命令映射为目标描述符;其中,目标描述符为预设格式的指令语句;
通过指令编译器根据目标描述符进行代码转换,生成目标软件可执行程序。
可选的,通过指令编译器根据目标描述符进行代码转换,生成目标软件可执行程序,包括:通过指令编译器对目标描述符进行语法检查,并在语法检查通过时,根据目标描述符生成对应的抽象语法树;其中,抽象语法树的结构为当前叶子节点通过一步指令执行得到下一父节点;在抽象语法树中,从叶子节点开始推导确定各父节点的数据类型,直至确定根节点的数据类型;并在各节点的数据类型符合运算要求时,根据抽象语法树生成线性结构的中间表示;对各中间表示进行流水线拆分,并按照与硬件执行流水匹配的软件模拟执行顺序对拆分结果进行重新排序,生成软件执行流水线阶段代码;根据软件执行流水线阶段代码,生成目标软件可执行程序。
可选的,模拟器架构,还包括:热点可执行代码缓存器;热点可执行代码缓存器与指令描述符处理器相连;热点可执行代码缓存器分别与模拟寄存器和运行器相连;
该方法,还包括:通过热点可执行代码缓存器获取并缓存目标软件可执行程序;通过模拟寄存器在在模拟存储器中确定目标代码关键信息之前,查询热点可执行代码缓存器中是否存在已编译完成的目标软件可执行程序;通过热点可执行代码缓存器,在存在已编译完成的目标软件可执行程序时,将已编译完成的目标软件可执行程序发送至运行器;通过运行器获取热点可执行代码缓存器缓存的已编译完成的目标软件可执行程序;根据已编译完成的目标软件可执行程序和目标执行数据进行软件代码执行。
可选的,模拟器架构,还包括:指令描述符仓库;指令描述符注册表存储于指令描述符仓库中。
可选的,模拟存储器,包括:指令模拟存储器和数据模拟存储器;指令模拟存储器和数据模拟存储器均与程序装载器相连;模拟寄存器与指令模拟存储器相连;指令描述符处理器与指令模拟存储器相连;运行器与数据模拟存储器相连;
通过模拟存储器对代码关键信息进行存储,包括:通过指令模拟存储器存储程序装载器在硬件可执行程序中提取的代码关键信息中的代码指令信息;通过数据模拟存储器存储程序装载器在硬件可执行程序中提取的代码关键信息中的执行数据;
通过模拟寄存器在模拟存储器中确定目标代码关键信息,包括:通过模拟寄存器在指令模拟存储器中确定目标代码关键信息的目标代码指令信息;
通过指令描述符处理器获取模拟存储器中目标代码关键信息的目标代码指令信息,并对目标代码指令信息进行代码转换,生成目标软件可执行程序,包括:通过指令描述符处理器获取指令模拟存储器中目标代码关键信息的目标代码指令信息,并对目标代码指令信息进行代码转换,生成目标软件可执行程序;
通过运行器获取指令描述符处理器生成的目标软件可执行程序,以及模拟存储器中对应的目标执行数据;根据目标软件可执行程序和目标执行数据进行软件代码执行,将执行结果写入模拟存储器,并根据执行结果指示模拟寄存器更新确定目标代码关键信息,包括:通过运行器在数据模拟存储器中读写数据。
可选的,模拟器架构,还包括:日志分析器;日志分析器与运行器相连;
该方法,还包括:通过日志分析器记录并分析模拟器运行中的日志数据。
可选的,该方法,还包括:通过指令描述符处理器,识别运行器对应的执行平台标识,并根据执行平台标识确定与运行器对应的软件可执行程序类型;根据软件可执行程序类型,对目标代码指令信息进行代码转换,生成与运行器的执行平台对应的目标软件可执行程序。
本发明实施例的技术方案,通过在张量处理器的模拟器架构中执行张量处理器的模拟方法:通过程序装载器读取硬件可执行程序,并提取硬件可执行程序中的代码关键信息;通过模拟存储器对代码关键信息进行存储;通过模拟寄存器在模拟存储器中确定目标代码关键信息;通过指令描述符处理器获取模拟存储器中目标代码关键信息的目标代码指令信息,并对目标代码指令信息进行代码转换,生成目标软件可执行程序;通过运行器获取指令描述符处理器生成的目标软件可执行程序,以及模拟存储器中对应的目标执行数据;根据目标软件可执行程序和目标执行数据进行软件代码执行,将执行结果写入模拟存储器,并根据执行结果指示模拟寄存器更新确定目标代码关键信息,解决了张量处理器的仿真模拟问题,可以实现硬件执行程序到软件执行程序的转换,减少开发者的繁琐编程工作,实现处理器的高效模拟仿真。
实施例四
图5示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图5所示,电子设备10包括至少一个中央处理器11,以及与至少一个中央处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个中央处理器执行的计算机程序,中央处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。中央处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
中央处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。中央处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。中央处理器11执行上文所描述的各个方法和处理,例如张量处理器的模拟方法。
在一些实施例中,张量处理器的模拟方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由中央处理器11执行时,可以执行上文描述的张量处理器的模拟方法的一个或多个步骤。备选地,在其他实施例中,中央处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行张量处理器的模拟方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (11)
1.一种张量处理器的模拟器架构,其特征在于,所述模拟器架构,包括:程序装载器、模拟存储器、模拟寄存器、指令描述符处理器、以及运行器;其中:
所述程序装载器与模拟存储器相连,用于读取硬件可执行程序,并提取所述硬件可执行程序中的代码关键信息;
所述模拟存储器,用于对所述代码关键信息进行存储;
所述模拟寄存器与模拟存储器相连,用于模拟张量处理器的物理寄存器,并在所述模拟存储器中确定目标代码关键信息;
所述指令描述符处理器与所述模拟存储器相连,用于获取所述模拟存储器中所述目标代码关键信息的目标代码指令信息,并对所述目标代码指令信息进行代码转换,生成目标软件可执行程序;
所述运行器分别与模拟寄存器、指令描述符处理器以及模拟存储器相连;
所述运行器,用于获取所述指令描述符处理器生成的目标软件可执行程序,以及所述模拟存储器中对应的目标执行数据;根据所述目标软件可执行程序和所述目标执行数据进行软件代码执行,将执行结果写入所述模拟寄存器或所述模拟存储器,并根据执行结果指示所述模拟寄存器更新确定目标代码关键信息;
所述模拟器架构,还包括:热点可执行代码缓存器;
所述热点可执行代码缓存器与所述指令描述符处理器相连,用于获取并缓存所述目标软件可执行程序;
所述热点可执行代码缓存器分别与所述模拟寄存器和所述运行器相连;
所述模拟寄存器,还用于在所述模拟存储器中确定目标代码关键信息之前,查询所述热点可执行代码缓存器中是否存在已编译完成的目标软件可执行程序;
所述热点可执行代码缓存器,还用于在存在已编译完成的目标软件可执行程序时,将已编译完成的目标软件可执行程序发送至所述运行器;
所述运行器,还用于获取所述热点可执行代码缓存器缓存的已编译完成的目标软件可执行程序;根据已编译完成的目标软件可执行程序和所述目标执行数据进行软件代码执行。
2.根据权利要求1所述的模拟器架构,其特征在于,所述指令描述符处理器,包括:指令解码器、指令描述符注册表、以及指令编译器;其中:
所述指令解码器与所述模拟存储器相连,用于获取所述模拟存储器中所述目标代码关键信息的目标代码指令信息,识别所述目标代码指令信息中的操作命令,并通过所述指令描述符注册表将所述操作命令映射为目标描述符;其中,所述目标描述符为预设格式的指令语句;
所述指令编译器与所述指令解码器相连,用于根据所述目标描述符进行代码转换,生成目标软件可执行程序。
3.根据权利要求2所述的模拟器架构,其特征在于,所述指令编译器,具体用于:
对所述目标描述符进行语法检查,并在语法检查通过时,根据所述目标描述符生成对应的抽象语法树;其中,所述抽象语法树的结构为当前叶子节点通过一步指令执行得到下一父节点;
在所述抽象语法树中,从叶子节点开始推导确定各父节点的数据类型,直至确定根节点的数据类型;并在各节点的数据类型符合运算要求时,根据所述抽象语法树生成线性结构的中间表示;
对各中间表示进行流水线拆分,并按照与硬件执行流水匹配的软件模拟执行顺序对拆分结果进行重新排序,生成软件执行流水线阶段代码;
根据所述软件执行流水线阶段代码,生成目标软件可执行程序。
4.根据权利要求2所述的模拟器架构,其特征在于,所述模拟器架构,还包括:指令描述符仓库;
所述指令描述符注册表存储于所述指令描述符仓库中。
5.根据权利要求1所述的模拟器架构,其特征在于,所述模拟存储器,包括:指令模拟存储器和数据模拟存储器;
所述指令模拟存储器和所述数据模拟存储器均与所述程序装载器相连;
所述指令模拟存储器,用于存储所述程序装载器在所述硬件可执行程序中提取的代码关键信息中的代码指令信息;
所述数据模拟存储器,用于存储所述程序装载器在所述硬件可执行程序中提取的代码关键信息中的执行数据;
所述模拟寄存器与所述指令模拟存储器相连,用于在所述指令模拟存储器中确定目标代码关键信息的目标代码指令信息;
所述指令描述符处理器与所述指令模拟存储器相连,用于获取所述指令模拟存储器中所述目标代码关键信息的目标代码指令信息,并对所述目标代码指令信息进行代码转换,生成目标软件可执行程序;
所述运行器与所述数据模拟存储器相连,用于在所述数据模拟存储器中读写数据。
6.根据权利要求1所述的模拟器架构,其特征在于,所述模拟器架构,还包括:日志分析器;
所述日志分析器与所述运行器相连,用于记录并分析所述模拟器运行中的日志数据。
7.根据权利要求1-6任一项所述的模拟器架构,其特征在于,所述指令描述符处理器,还用于:
识别所述运行器对应的执行平台标识,并根据所述执行平台标识确定与所述运行器对应的软件可执行程序类型;
根据所述软件可执行程序类型,对所述目标代码指令信息进行代码转换,生成与所述运行器的执行平台对应的目标软件可执行程序。
8.一种张量处理器的模拟方法,其特征在于,所述模拟方法应用于如权利要求1至7任一项所述的张量处理器的模拟器架构,所述模拟方法,包括:
通过程序装载器读取硬件可执行程序,并提取所述硬件可执行程序中的代码关键信息;
通过模拟存储器对所述代码关键信息进行存储;
通过模拟寄存器在所述模拟存储器中确定目标代码关键信息;
通过指令描述符处理器获取所述模拟存储器中所述目标代码关键信息的目标代码指令信息,并对所述目标代码指令信息进行代码转换,生成目标软件可执行程序;
通过运行器获取所述指令描述符处理器生成的目标软件可执行程序,以及所述模拟存储器中对应的目标执行数据;根据所述目标软件可执行程序和所述目标执行数据进行软件代码执行,将执行结果写入所述模拟存储器,并根据执行结果指示所述模拟寄存器更新确定目标代码关键信息;
所述模拟器架构,还包括:热点可执行代码缓存器;热点可执行代码缓存器与指令描述符处理器相连;热点可执行代码缓存器分别与模拟寄存器和运行器相连;
所述方法,还包括:
通过热点可执行代码缓存器获取并缓存所述目标软件可执行程序;
通过所述模拟寄存器在所述模拟存储器中确定目标代码关键信息之前,查询所述热点可执行代码缓存器中是否存在已编译完成的目标软件可执行程序;
通过所述热点可执行代码缓存器在存在已编译完成的目标软件可执行程序时,将已编译完成的目标软件可执行程序发送至所述运行器;
通过所述运行器获取所述热点可执行代码缓存器缓存的已编译完成的目标软件可执行程序;根据已编译完成的目标软件可执行程序和所述目标执行数据进行软件代码执行。
9.根据权利要求8所述的模拟方法,其特征在于,所述指令描述符处理器,包括:指令解码器、指令描述符注册表、以及指令编译器;
所述模拟方法,还包括:
通过指令解码器获取所述模拟存储器中所述目标代码关键信息的目标代码指令信息,识别所述目标代码指令信息中的操作命令,并通过所述指令描述符注册表将所述操作命令映射为目标描述符;其中,所述目标描述符为预设格式的指令语句;
通过指令编译器根据所述目标描述符进行代码转换,生成目标软件可执行程序。
10. 一种电子设备,其特征在于,所述电子设备包括:
至少一个中央处理器;以及
与所述至少一个中央处理器通信连接的物理存储器;其中,
所述物理存储器存储有可被所述至少一个中央处理器执行的计算机程序,所述计算机程序被所述至少一个中央处理器执行,以使所述至少一个中央处理器能够执行权利要求8-9中任一项所述的张量处理器的模拟方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使中央处理器执行时实现权利要求8-9中任一项所述的张量处理器的模拟方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410658513.5A CN118246377B (zh) | 2024-05-27 | 2024-05-27 | 一种张量处理器的模拟器架构、模拟方法、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410658513.5A CN118246377B (zh) | 2024-05-27 | 2024-05-27 | 一种张量处理器的模拟器架构、模拟方法、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN118246377A CN118246377A (zh) | 2024-06-25 |
CN118246377B true CN118246377B (zh) | 2024-08-13 |
Family
ID=91559010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410658513.5A Active CN118246377B (zh) | 2024-05-27 | 2024-05-27 | 一种张量处理器的模拟器架构、模拟方法、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118246377B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113553054A (zh) * | 2021-07-02 | 2021-10-26 | 北京算能科技有限公司 | 基于异构系统的编译方法、装置、设备及存储介质 |
CN117971235A (zh) * | 2024-03-07 | 2024-05-03 | 上海思朗科技有限公司 | 一种目标代码生成方法、装置、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11467827B1 (en) * | 2020-04-13 | 2022-10-11 | Habana Labs Ltd. | Index space mapping using static code analysis |
EP4080354A1 (en) * | 2021-04-23 | 2022-10-26 | Nxp B.V. | Processor and instruction set |
US20240020239A1 (en) * | 2022-05-26 | 2024-01-18 | Synopsys, Inc. | Artificial intelligence (ai)/machine learning (ml) tensor processor |
-
2024
- 2024-05-27 CN CN202410658513.5A patent/CN118246377B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113553054A (zh) * | 2021-07-02 | 2021-10-26 | 北京算能科技有限公司 | 基于异构系统的编译方法、装置、设备及存储介质 |
CN117971235A (zh) * | 2024-03-07 | 2024-05-03 | 上海思朗科技有限公司 | 一种目标代码生成方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN118246377A (zh) | 2024-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6035120A (en) | Method and apparatus for converting executable computer programs in a heterogeneous computing environment | |
US7712092B2 (en) | Binary translation using peephole translation rules | |
US10860300B2 (en) | Direct function call substitution using preprocessor | |
US10459707B2 (en) | Instruction-set simulator and its simulator generation method | |
WO2013050892A1 (en) | Compiling code for enhanced application binary interface (abi) with decode time instruction optimization | |
US10614227B2 (en) | Method and system for identifying functional attributes that change the intended operation of a compiled binary extracted from a target system | |
CN112394942A (zh) | 基于云计算的分布式软件开发编译方法及软件开发平台 | |
JP2020534599A (ja) | サブルーチンへの分岐に応じたTable of Contentsポインタ値の予測 | |
CN111880801A (zh) | 应用程序动态化方法、装置、电子设备 | |
US8458679B2 (en) | May-constant propagation | |
CN110673837B (zh) | 代码修复方法及装置、电子设备、计算机可读存储介质 | |
CN110058861B (zh) | 源码处理方法及装置、存储介质、电子设备 | |
CN118246377B (zh) | 一种张量处理器的模拟器架构、模拟方法、设备及介质 | |
Blackmore et al. | Automatically tuning the gcc compiler to optimize the performance of applications running on embedded systems | |
CN117149215A (zh) | 反汇编信息输出方法、装置、电子设备及存储介质 | |
US11068246B2 (en) | Control flow graph analysis | |
JP7410269B2 (ja) | テスト・ベクタを使用した高水準コンストラクトの最適化の自動検証 | |
US11573777B2 (en) | Method and apparatus for enabling autonomous acceleration of dataflow AI applications | |
US8645758B2 (en) | Determining page faulting behavior of a memory operation | |
CN118502825A (zh) | 一种处理器模拟器中的指令处理方法、装置、设备及介质 | |
US20040098708A1 (en) | Simulator for software development and recording medium having simulation program recorded therein | |
CN116501385B (zh) | 指令处理方法、处理器、芯片及计算机设备 | |
JPH02176938A (ja) | 機械語命令最適化方式 | |
CN117850788A (zh) | 一种编译方法、装置、存储介质及电子装置 | |
CN115576604A (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 |