带有可变长度指令的并行解码指令集合计算机架构的制作方法

未命名 10-26 阅读:133 评论:0

带有可变长度指令的并行解码指令集合计算机架构


背景技术:

1.指令集合编码可以通过使可以被并行执行的工作量最大化与使程序大小最小化之间的权衡来影响中央处理单元(cpu)的性能,这减少了执行程序所需的资源。一些现有系统使用固定宽度指令,诸如32位长度指令。这些系统支持超标量计算机架构以同时获取和解码多个指令。指令然后可以被并行执行。然而,这种类型的系统需求包括简单指令的所有指令具有相同的长度。例如,如果所有指令都是32位,则即使只需求几个位的简单指令将增加到32位的固定长度,这通过使简单指令比所必需的更长而增加程序大小。
2.其他现有系统使用可变长度指令,其可能难以并行解码。这种困难出现是因为在系统能够确定第二指令的开始位置之前系统需要解码第一指令以找到指令长度。尽管存在减少这种限制的技术,但是这些技术可能需求显著的附加处理或者可能需求硅芯片上更大的区域来实现用于处理不同长度的各种指令的高速缓存。


技术实现要素:

3.本文档公开了与具有可变长度指令的并行解码指令集合计算机架构相关的系统和方法。在一些方面,混合编码方法被用于避免在利用可变长度指令执行并行解码时浪费的资源,并且避免固定长度指令的低效编码。例如,混合编码方法可以使用包括每个指令的固定长度前缀和可变长度后缀的指令格式。
4.在各个方面,处理器接收用于执行的指令块。解码器标识指令块中的多个固定长度前缀并标识指令中的多个可变长度后缀。多个固定长度前缀中的每一个可以与可变长度后缀中的一个相关联。然后基于多个可变长度后缀来执行指令块。通过这样做,所描述的系统和方法可以以减小程序大小并且减小硅芯片上所需面积的方式来实现。
5.提供本发明内容是为了介绍用于实现具有可变长度指令的并行解码指令集合计算机架构的简化概念。下面在具体实施方式中进一步描述简化的概念。本发明内容并不旨在标识所要求保护的主题的基本特征,也不旨在用于确定所要求保护的主题的范围。
附图说明
6.下面描述所描述的系统和方法的一个或多个方面的细节。在说明书和附图中的不同实例中使用相同的附图标记指示相似的元件:
7.图1示出了能够执行各种指令的示例cpu(中央处理单元);
8.图2示出了包括固定长度前缀和可变长度后缀的示例指令块;
9.图3示出了能够确定后缀偏移量的示例并行加法器;
10.图4示出了用于对具有固定长度前缀和可变长度后缀的指令块进行解码的示例过程;
11.图5示出了立即值/寄存器值x(dexv)的示例解码和执行方法;以及
12.图6示出了基于偏移量的示例跳转、解码和执行x(jdexo)。
具体实施方式
13.所描述的系统和方法提供了使用可变长度指令的并行解码指令集合计算机。这些指令可以被称为包括前缀和后缀的混合指令。在一些方面,系统和方法可以将每个混合指令分离成两部分:前缀和后缀。前缀可以包含指示关联的或对应的后缀的长度的数据。如本文所描述的,每个前缀可以在指令的前缀部分内的固定位置处具有固定长度(例如,固定数量的位)。每个后缀可以具有可变长度。因此,每个前缀指示关联的后缀的长度(例如,以位为单位)。前缀的其他部分是可选的,并且可能取决于特定指令集合被限定的方式。例如,前缀可以包括指令标识符和与指令相关联的数据。
14.在所描述的系统和方法的一些方面,指令的部分可以被并行解码,同时还提供可变长度指令。这些系统和方法可以以减少程序大小并减少硅芯片上所需面积的方式来实现。
15.图1示出了能够执行各种指令的示例中央处理单元(cpu)100。cpu 100包括执行特定任务的各种子组件,诸如解码器102、算术逻辑单元(alu)104、浮点单元(fpu)106和高速缓存108,它们可以被耦合到随机存取存储器(ram)110或其他存储器设备。尽管特定的子组件在cpu 100中被示出,但是替代实施例可以在cpu 100内包含附加的子组件或者可以在cpu 100内包含更少的子组件。
16.在一些方面,程序代码由解码器102接收,解码器102对所接收的程序代码中的指令进行解码。alu 104执行特定指令所需要的整数计算。整数计算涉及整数(即完整的数)的数学计算。fpu 106执行特定指令所需要的浮点计算。浮点是一种以二进制形式表示带有小数位的数字的技术。浮点计算被与整数计算相比不同地处理。
17.在一些方面,alu 104访问寄存器中的值并对那些值执行各种操作。在特定实施方式中,cpu 100可以包括可以彼此独立操作的多个alu 104。类似地,fpu 106可以访问寄存器中的值并对那些值执行各种操作。在一些方面,cpu 100可以包括可以彼此独立操作的多个fpu 106。高速缓存108能够存储被写入ram 110的各种数据或者从ram 110读取的各种数据。
18.图2示出了包括固定长度前缀(例如,固定数量的位)和可变长度后缀(例如,可变数量的位)的示例指令块200。如图2所示,指令块200被存储在存储器中并且具有起点202和终点204。在一些方面,指令块被存储在存储器的毗连块中。在所描述的示例中,指令块200具有八个前缀块206、208、210、212、214、216、218和220。在一些方面,前缀206-220顺序地位于存储器中。附加地,指令块200具有八个后缀块222、224、226、228、230、232、234和236。在一些方面,后缀222-236在存储器中顺序地位于前缀206-220之后。
19.如本文所讨论的,前缀206-220具有固定长度(如图2所示)并且后缀222-236具有可变长度。在一些方面,前缀206-220可以具有16位的长度。在其他示例中,前缀206-220可以具有任何长度。图2中示出了后缀222-236的不同长度。例如,后缀222具有比后缀224和230更短的长度。尽管图2中示出了八个前缀206-220和八个后缀222-236,但是其他实施方式可以包含任何数量的前缀和任何数量的后缀。
20.在一些方面,每个前缀与特定后缀相关联。例如,如图2所示,前缀206与后缀222相关联,前缀208与后缀224相关联,前缀210与后缀226相关联,等。指令的两个部分(前缀和后缀)之间的分割使得解码器能够仅加载第一部分(前缀)中的数据,而第二部分(后缀)中的
数据可以被加载用于执行单元而不被存储或由解码器解析。该方法支持使用存储少量、固定数量的位的简化解码器,从而减小解码器的大小、减少解码器的功耗并改进解码器性能。
21.具有八个固定长度前缀206-220的指令块200的配置可以被并行解码。由于每个前缀206-220具有相同的长度,因此标识每个前缀在存储器中的起始位置是简单的过程。例如,基于起始点202已知前缀206在存储器中的起始位置。通过将固定长度(以位为单位)添加到前缀206,可以轻松确定下一个前缀(208)在存储器中的起始位置。此过程继续查找每个前缀206-220在存储器中的起始位置以及第一个后缀222在存储器中的起始位置。
22.在一些实施方式中,每个前缀206-220包括诸如指令标识符、相关联后缀的长度以及由指令所使用的数据(例如,可变长度后缀在被执行时所使用的数据)。在其他实施方式中,由指令所使用的数据可以被存储在后缀中,代替(或除了)前缀。
23.图3示出了能够确定后缀偏移量的示例并行加法器300。在一些方面,每个后缀的长度基于在相关联的前缀中存储的信息是已知的。因此,所描述的系统和方法可以基于并行加法器300的输出来快速确定存储器中的每个后缀的起始位置。在每个前缀和每个后缀在存储器中的起始位置被确定之后,cpu 100具有用于执行指令的所有必需的信息。在图3的示例中,并行加法器300管理具有四个前缀和四个后缀的指令以简化示例。
24.在一些方面,图3的示例使用累积的后缀长度来确定每个后缀在存储器中的起始位置。在并行加法器300中,多个加法被并行执行以快速确定每个后缀的起始位置。在一些方面,并行加法器300接收(例如,从前缀解码的)解码后缀大小330,其被表示为块304、306、308和310。如图3所示,四个解码的后缀大小分别是2字节、0字节、4字节和8字节。
25.在一些方面,由虚线302标识的多个加法器电路可以包括加法器312、314、316和318。例如,加法器312将块304(2字节)和块306(0字节)的值相加以生成2字节的输出,该输出被传送到块324。加法器312的输出还被传送到加法器316和318。块320、322、324、326和328表示指令的后缀块内的每个后缀的偏移量。特别地,块320是零(后缀块的起点)。块322与块304相同,其是第一偏移量。块324和326表示后缀块中接下来两个偏移量。在一些方面,块328表示到下一个指令块的偏移量。在图3的示例中,332表示后缀块中每个后缀的偏移量。
26.加法器314将块308(4字节)和块310(8字节)的值相加以生成12字节的输出,该输出被传送到加法器318。加法器316将块308的输出(4字节)添加到加法器312的输出(2字节)以生成6字节的输出,该输出被传送到块326。加法器318将加法器312的输出(2字节)与加法器314的输出(12字节)相加以生成14字节的输出,该输出被传送到块328。图3的示例可以被应用于具有任何数量的前缀和任何数量的后缀的指令。在一些方面,附加加法器可以被用于确定存储器中所有后缀的起始位置。
27.图4示出了用于对具有固定长度前缀和可变长度后缀的指令块进行解码的示例过程400。过程400被示为指定所执行的操作的块的集合,但不一定限于所示的用于由相应块执行操作的次序或组合。此外,可以重复、组合、重新组织或链接一个或多个操作中的任何操作以提供广泛的各种附加和/或替代方法。这些技术不限于由在一个设备上操作的一个实体或多个实体执行。
28.在402处,设备或系统接收指令块以供诸如cpu的处理器执行。在一些方面,指令块被存储在用起始存储器位置以及在一些情况下用结束存储器位置标识的毗连存储器块中。
在404处,过程400标识接收的指令块中的多个固定长度前缀。如本文所讨论的,由于所有前缀的相同的固定长度,因此多个固定长度前缀中的每一个的偏移量值可以基于前缀之间的已知偏移量来被确定。
29.在406处,过程400标识指令块中的多个可变长度后缀。如本文所讨论的,每个固定长度前缀与可变长度后缀中的一个相关联。在408处,每个可变长度后缀的长度基于相关联的固定长度前缀中包含的数据来被确定。可变长度后缀的长度被用于确定到下一个后缀的开始的偏移量值。在410处,过程400使用多个加法器电路确定每个可变长度后缀的偏移量值。如本文所讨论的,多个加法器电路执行并行加法操作以处理前缀中的后缀长度数据并且确定到下一个后缀的开始的偏移量值。在412处,过程400基于多个可变长度后缀来执行指令。
30.在一些方面,本文描述的系统和方法可以创建分割寄存器集合以减轻布线。例如,多个寄存器集合可以被创建并且与不同的alu相关联。在简单的示例中,两个寄存器集合被创建并被标记为寄存器集合a和寄存器集合b。第一组alu可以访问寄存器集合a,第二组alu可以访问寄存器集合b,并且第三组alu可以访问寄存器集合a和寄存器集合b。在特定实施方式中,任何数量的寄存器集合可以被创建。在一些方面,寄存器集合可以和与微架构相关联的物理寄存器的寄存器命名一起被实现。这可以提供减少的布线的所有好处,而不将增加的复杂性暴露于isa(指令集合架构)。
31.随着cpu缩放到更大的大小(例如,更大数量的核),它们可能需要增加数量的物理寄存器来满足增加的布线的需求。使用上面讨论的多个寄存器集合可以减轻由较大cpu引起的潜在布线问题。
32.图5示出了立即值/寄存器值x(dexv)的示例解码和执行方法。在一些方面,某些指令不需求解码。例如,由于分支或其他情况,八个指令的块可能具有少于实际需要被解码的八个指令。尽管无操作指令可以被添加到块中以填补空缺,但这种方法不必需地占用了额外的空间。如本文所述,在一些方面,较小的块大小被构造以避免浪费未使用的块。在特定实施方式中,指令可以修改后续指令块的获取和解码活动。
33.在一些方面,指令的两个部分之间的分割可以进行以使得解码器仅需要加载前缀。因此,后缀中的数据可以被执行单元加载,而无需由解码器存储或解析。该方法支持存储少量、固定数量的位的简化解码器,这减少了解码器的大小和功耗,同时改进了解码器的性能。
34.图5的示例示出了添加解码和执行x指令以处理一些指令不需求解码的情况。解码和执行x指令作为前一指令块中的独立指令被执行,或者作为分支或跳转指令的一部分被执行。每个独立指令可以具有指定指令数量的立即值(例如,该值是指令的一部分)。对于跳转和分支指令,立即值可以被使用,但是当跳转位置是例如虚拟函数时,这不是有用的。在该情况下,有两种选择:x(在解码和执行x中)可以是寄存器值自变量,或者x(在解码和执行x中)可以基于前缀块大小的偏移量。
35.在特定示例中,假设每个前缀是16位(2字节)并且块中有八个前缀。如果跳转地址是16字节对齐加8字节,则意味着本文描述的系统和方法可以解码并执行下一个块中的四个指令。因此,跳转目标需要根据该块中的指令数量进行存储器对齐。
36.在图5的示例中,x=4,其中块大小是8并且前缀大小是2字节(16位)。如图5所示,
立即值500示出了可以在前缀和后缀之间分割的指令标识符。块504标识后缀长度并且块506标识后面的块长度(在该示例中为4)。寄存器值502示出指令标识符,其包括标识后缀长度的块508和标识寄存器地址的块510。在图5的示例中,在块510处寻址的寄存器被示为块512。
37.执行图5所示的指令,其中x=4,块大小是8并且前缀大小是2字节(16位)将导致执行图5底部所示的指令块。该指令块包括四个前缀514、516、518和520。四个指令前缀从指令块中被丢弃(如530所指示)。指令块还包括四个后缀522、524、526和528。这四个后缀紧跟在前缀520之后。在一些方面,对于包括跳转(jdexv)的情况,使用存储器寻址方案,地址被附加到指令的末尾,诸如图6所示的实施例(如下面讨论)。
38.图6示出了基于偏移量的示例跳转、解码和执行x(jdexo)。如图6所示,指令标识符600可以在前缀和后缀之间被分割。指令标识符600包括标识后缀长度的块602,该后缀长度可以是零。块604标识跳转目标,其可以是使用标识寄存器值或立即值的存储器寻址方案限定的存储器地址。在一些方面,存储器地址可以是指令标识符600中限定的值或全局限定的值。
39.如图6所示,跳转目标地址在614处被标识。在该示例中,x=4,其中块大小是8并且前缀大小是2字节(16位)。在614处标识的跳转目标地址是8,这是4个前缀的大小。因此,图6的示例跳过四个前缀606、608、610和612。处理在前缀616处开始并且继续到前缀618、620和622,随后是后缀块624。
40.尽管在具有可变长度指令的并行解码指令集合计算机的各种示例的场境中描述了上述系统和方法,但是所描述的系统、设备、装置和方法是非限制性的并且可以应用于其他场境、电子设备、计算配置、处理器配置、计算环境等等。
41.一般而言,本文描述的组件、模块、方法和操作可以使用软件、固件、硬件(例如,固定逻辑电路系统)、手动处理或其任何组合来实现。示例方法的一些操作可以在被存储在计算机处理系统本地和/或远程的计算机可读存储存储器上的可执行指令的一般场境中被描述,并且实施方式可以包括软件应用、程序、功能等。可替代地或附加地,本文描述的任何功能性可以至少部分地由一个或多个硬件逻辑组件来执行,所述硬件逻辑组件诸如但不限于fpga、asic、assp、soc、cpld、协处理器、场境中心、运动协处理器、传感器协处理器等。
42.下面,根据具有可变长度指令的并行解码指令集合计算机架构的一个或多个方面来描述附加示例。
43.一种与处理器相关联地实现的方法,包括:接收由处理器执行的指令,由解码器标识指令中的多个固定长度前缀,由解码器标识指令中的多个可变长度后缀,其中,多个固定长度前缀中的每一个与可变长度后缀中的一个相关联,以及基于多个可变长度后缀来执行指令。
44.除了本文描述的方法中的任何一个之外,多个固定长度前缀中的每一个可以包括标识相关联的可变长度后缀的长度的数据。
45.除了本文描述的方法中的任何一个之外,多个固定长度前缀中的每一个可以包括标识相关联的可变长度后缀的指令标识符的数据。
46.除了本文描述的方法中的任何一个之外,多个固定长度前缀中的每一个可以包括由可变长度后缀在被执行时使用的数据。
47.本文描述的方法中的任何一个可以进一步包括基于每个前缀的固定长度来确定与多个固定长度前缀中的每一个相关联的偏移量值。
48.本文描述的方法中的任何一个可以进一步包括基于由多个加法器电路生成的结果来确定与多个可变长度后缀中的每一个相关联的偏移量值。
49.除了本文描述的方法中的任何一个之外,多个加法器电路可以处理来自多个固定长度前缀的后缀长度数据以计算与多个可变长度后缀相关联的偏移量值。
50.本文描述的方法中的任何一个可以进一步包括创建包含多个固定长度前缀的一部分和可变长度后缀的一部分的块。
51.本文描述的方法中的任何一个可以进一步包括基于包含多个固定长度前缀的一部分和可变长度后缀的一部分的块来执行指令。
52.本文描述的方法中的任何一个可以进一步包括标识不需要执行的至少一个固定长度前缀,以及标识与该固定长度前缀相关联的至少一个可变长度后缀,其中,执行指令包括跳过所述至少一个固定长度前缀和所述至少一个可变长度后缀。
53.除了上述方法之外,一种装置还包括处理器和解码器,该解码器被配置为接收由处理器执行的指令,其中解码器执行包括以下的操作:标识指令中的多个固定长度前缀,以及标识指令中的多个可变长度后缀,其中,多个固定长度前缀中的每一个与可变长度后缀中的一个相关联,并且其中,处理器基于多个可变长度后缀来执行指令。
54.除了本文描述的装置中的任何一个之外,多个固定长度前缀中的每一个可以包括标识相关联的可变长度后缀的长度的数据。
55.除了本文描述的装置中的任何一个之外,多个固定长度前缀中的每一个可以包括标识相关联的可变长度后缀的指令标识符的数据。
56.除了本文描述的装置中的任何一个之外,多个固定长度前缀中的每一个可以包括由可变长度后缀在被执行时使用的数据。
57.除了本文描述的装置中的任何一个之外,解码器可以进一步被配置为执行基于每个前缀的固定长度来确定与多个固定长度前缀中的每一个相关联的偏移量值的操作。
58.除了本文描述的装置中的任何一个之外,该装置可以进一步包括多个加法器电路,其中,解码器进一步被配置为执行基于由多个加法器电路生成的结果来确定与多个可变长度后缀中的每一个相关联的偏移量值的操作。
59.除了本文描述的装置中的任何一个之外,多个加法器电路可以被配置为处理来自多个固定长度前缀的后缀长度数据以计算与多个可变长度后缀相关联的偏移量值
60.除了本文描述的装置中的任何一个之外,解码器还可以被配置为进一步执行用于创建包含多个固定长度前缀的一部分和可变长度后缀的一部分的块的操作
61.除了本文描述的方法或装置中的任何一个之外,解码器还可以被配置为进一步执行基于包含多个固定长度前缀的一部分和可变长度后缀的一部分的块来执行指令的操作。
62.除了本文描述的装置中的任何一个之外,解码器还可以被配置为进一步执行以下操作:标识不需要执行的至少一个固定长度前缀,以及标识与该固定长度前缀相关联的至少一个可变长度后缀,其中执行该指令包括跳过该至少一个固定长度前缀以及该至少一个可变长度后缀。
63.结论
64.尽管已经以特定于特征和/或方法的语言描述了所描述的系统和方法的各方面,但是所附权利要求的主题不一定限于所描述的特定特征或方法。相反,特定特征和方法被公开为所描述的技术的示例实施方式,并且其他等效特征和方法旨在落入所附权利要求的范围内。此外,描述了各种不同的方面,并且应当理解,每个所描述的方面可以被独立地实现或者与一个或多个其他所描述的方面结合地实现。

技术特征:
1.一种方法,包括:接收由处理器执行的指令;由解码器标识所述指令中的多个固定长度前缀;由所述解码器标识所述指令中的多个可变长度后缀,其中,所述多个固定长度前缀中的每一个与所述可变长度后缀中的一个相关联;以及基于所述多个可变长度后缀执行所述指令。2.根据权利要求1所述的方法,其中,所述多个固定长度前缀中的每一个包括标识相关联的可变长度后缀的长度的数据。3.根据权利要求1或2所述的方法,其中,所述多个固定长度前缀中的每一个包括标识相关联的可变长度后缀的指令标识符的数据。4.根据权利要求1至3中的任一项所述的方法,其中,所述多个固定长度前缀中的每一个包括由所述可变长度后缀在被执行时使用的数据。5.根据前述权利要求中的任一项所述的方法,进一步包括基于每个前缀的固定长度来确定与所述多个固定长度前缀中的每一个相关联的偏移量值。6.根据前述权利要求中的任一项所述的方法,进一步包括基于由多个加法器电路生成的结果来确定与所述多个可变长度后缀中的每一个相关联的偏移量值。7.根据权利要求6所述的方法,其中,所述多个加法器电路处理来自所述多个固定长度前缀的后缀长度数据以计算与所述多个可变长度后缀相关联的偏移量值。8.根据前述权利要求中的任一项所述的方法,进一步包括创建包含所述多个固定长度前缀的一部分和所述可变长度后缀的一部分的块。9.根据权利要求8所述的方法,进一步包括基于包含所述多个固定长度前缀的一部分和所述可变长度后缀的一部分的块来执行所述指令。10.根据前述权利要求中的任一项所述的方法,进一步包括:标识不需要执行的至少一个固定长度前缀;以及标识与所述固定长度前缀相关联的至少一个可变长度后缀,其中,执行所述指令包括跳过所述至少一个固定长度前缀和所述至少一个可变长度后缀。11.一种装置,包括:处理器;以及解码器,所述解码器被配置为接收由所述处理器执行的指令,其中,所述解码器被配置为执行包括以下的操作:标识所述指令中的多个固定长度前缀;以及标识所述指令中的多个可变长度后缀,其中,所述多个固定长度前缀中的每一个与所述可变长度后缀中的一个相关联,并且其中,所述处理器基于所述多个可变长度后缀来执行所述指令。12.根据权利要求11所述的装置,其中,所述多个固定长度前缀中的每一个包括标识相关联的可变长度后缀的长度的数据。13.根据权利要求11或12所述的装置,其中,所述多个固定长度前缀中的每一个包括标识相关联的可变长度后缀的指令标识符的数据。14.根据权利要求11至13中的任一项所述的装置,其中,所述多个固定长度前缀中的每
一个包括由所述可变长度后缀在被执行时使用的数据。15.根据权利要求11至14中的任一项所述的装置,其中,所述解码器进一步被配置为执行基于每个前缀的固定长度来确定与所述多个固定长度前缀中的每一个相关联的偏移量值的操作。16.根据权利要求11至15中的任一项所述的装置,进一步包括多个加法器电路,其中,所述解码器进一步被配置为执行基于由多个加法器电路生成的结果来确定与所述多个可变长度后缀中的每一个相关联的偏移量值的操作。17.根据权利要求16所述的装置,其中,所述多个加法器电路被配置为处理来自所述多个固定长度前缀的后缀长度数据以计算与所述多个可变长度后缀相关联的偏移量值。18.根据权利要求11至17中的任一项所述的装置,其中,所述解码器进一步被配置为执行用于创建包含所述多个固定长度前缀的一部分和所述可变长度后缀的一部分的块的操作。19.根据权利要求18所述的装置,其中,所述解码器进一步被配置为执行基于包含所述多个固定长度前缀的一部分和所述可变长度后缀的一部分的所述块来执行所述指令的操作。20.根据权利要求11至19中的任一项所述的装置,其中,所述解码器进一步被配置为执行以下操作:标识不需要执行的至少一个固定长度前缀;以及标识与所述固定长度前缀相关联的至少一个可变长度后缀,其中,执行所述指令包括跳过所述至少一个固定长度前缀和所述至少一个可变长度后缀。

技术总结
本公开描述了用于支持具有可变长度指令的并行解码指令集合计算机架构的装置、方法和技术。在各个方面,处理器接收用于执行的指令。解码器标识指令中的多个固定长度前缀并标识指令中的多个可变长度后缀。多个固定长度前缀中的每一个与可变长度后缀中的一个相关联。然后基于多个可变长度后缀来执行指令。通过这样做,所描述的系统和方法可以以减小程序大小并且减小硅芯片上所需面积的方式来实现。且减小硅芯片上所需面积的方式来实现。且减小硅芯片上所需面积的方式来实现。


技术研发人员:德里克
受保护的技术使用者:谷歌有限责任公司
技术研发日:2022.01.26
技术公布日:2023/10/20
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐