一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

指令压缩方法、指令解压缩方法及流程压缩方法与流程

2023-01-15 09:15:37 来源:中国专利 TAG:


1.本技术涉及指令压缩与指令解压缩,具体涉及与跳转指令(jump instruction,或称为分支指令(branch instruction))相关的指令压缩方法、指令解压缩方法及流程压缩方法。


背景技术:

2.一般而言,一个流程(例如,影像处理流程、启动流程等)通常包括至少一个跳转指令。然而,现有的平台处理跳转逻辑时无法同时开启变长指令(variable-length instruction)压缩,导致指令暂存器需要较大的空间、长跳转(long jump)指令的个数变多,以及流程的执行效率下降。因此,需要一种指令压缩方法、指令解压缩方法及流程压缩方法来减少指令暂存器所需的空间,以及减少长跳转指令的个数。


技术实现要素:

3.本技术实施例提供一种指令压缩方法、指令解压缩方法及流程压缩方法,以改善先前技术的不足。
4.本技术实施例提供一种指令解压缩方法,应用于一硬件电路,该硬件电路解压缩一指令并执行该指令,该指令包括一标头,该标头包括一参考值,该方法包括:当该指令的该参考值是一预设值时,读取该指令的一第一参数以取得一相异参数个数;以及,以该指令的多个第二参数设定该硬件电路的多个相对应的参数,该多个第二参数的个数等于该相异参数个数。
5.本技术实施例提供一种指令压缩方法,用来压缩一指令以产生一压缩后的指令,该指令包括一标头及多个参数,该标头包括一参考值,该方法包括:比较该指令与一前一指令,以找出该指令中与该前一指令不同的多个相异参数;将该压缩后的指令的该参考值设为一预设值;将该压缩后的指令的一目标参数设为该多个相异参数的个数;以及,将该压缩后的指令的其他参数设为该多个相异参数。
6.本技术实施例提供一种流程压缩方法,用来压缩一流程,该流程包括一跳转指令,该方法包括:根据该跳转指令在该流程中的一位置及该跳转指令的一目的地,将该流程划分为多个区块;记录该多个区块之间的一跳转关系;对该多个区块进行指令压缩;根据该跳转关系重新计算该跳转指令的一跳转地址;根据该多个区块的大小及该跳转关系决定多个群组;以及,根据该跳转指令与该多个群组的关系决定该跳转指令是一第一种类的跳转指令或一第二种类的跳转指令。
7.本技术的实施例所体现的技术手段可以改善先前技术的缺点的至少其中之一,因此本技术相较于先前技术可以减少指令暂存器所需的空间和/或减少长跳转指令的个数。
8.有关本技术的特征、实作与功效,兹配合图式作实施例详细说明。
附图说明
9.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
10.图1是本技术实施例提供的智能处理器的功能方块图;
11.图2是本技术实施例提供的流程压缩方法的流程图;
12.图3是本技术实施例提供的包括多个指令的流程,以及该流程的区块间的跳转关系的示意图;
13.图4是本技术实施例提供的区块间的跳转关系的示意图;
14.图5是图2的步骤s210的细节;
15.图6是本技术实施例提供的指令压缩方法的流程图;
16.图7是本技术实施例提供的压缩前的指令结构及压缩后的指令结构的示意图;
17.图8及图9是图2的步骤s250的细节;
18.图10a及图10b是本技术实施例提供的将流程的多个区块划分成多个群组的示意图;
19.图11是图2的步骤s260的细节;
20.图12是本技术实施例提供的划分群组的示意图;
21.图13是本技术实施例提供的指令解压缩方法的流程图;
22.图14是本技术实施例提供的的硬件电路执行未经压缩的指令的示意图;以及
23.图15是本技术实施例提供的硬件电路执行压缩指令的示意图。
24.【符号说明】
25.100:智能处理器
26.110:译码器
27.112:存储器
28.114:指令预撷取电路
29.116:指令分发电路
30.118:跳转逻辑电路
31.120:直接存储器存取(dma)
32.130:矢量电路
33.140:卷积电路
34.122,132,142:指令解压缩电路
35.124,134,144:计算电路
36.310:流程
37.inst1~inst15,inst_k-1,inst_k,inst_y:指令
38.320:区块间的跳转关系
39.bb:区块边界
40.blk1,blk2,blk3,blk4:区块
41.inst_k',inst_z:压缩后的指令
42.hd:标头
43.instflag:旗标
44.hdlen:参考值
45.p1,p2,p3,p4,p5,pn,p1',p2',p3',p4',p5':参数
46.nd:相异参数个数
47.sr:门槛值
48.gb:群组边界
49.grp1,grp2,grp3:群组
50.inst_n:跳转指令
51.regp:暂存器群组
52.reg1,reg2,reg3,reg4,reg5:暂存器
53.s210,s220,s230,s240,s250,s260,s510,s520,s530,s540,s550,s610,s620,s630,s640,s650,s660,s670,s680,s810,s820,s830,s840,s850,s860,s870,s910,s920,s930,s940,s950,s960,s970,s1110,s1120,s1130,s1140,s1150,s1160,s1310,s1320,s1330,s1340,s1350,s1360:步骤
具体实施方式
54.以下说明内容的技术用语参照本技术领域的习惯用语,如本说明书对部分用语有加以说明或定义,该部分用语的解释以本说明书的说明或定义为准。
55.本技术的公开内容包括指令压缩方法、指令解压缩方法及流程压缩方法。由于本技术的智能处理器所包括的部分元件单独而言可能为已知元件,因此在不影响该装置发明的充分公开及可实施性的前提下,以下说明对于已知元件的细节将予以节略。此外,本技术的指令压缩方法、指令解压缩方法及流程压缩方法的部分或全部流程可以是软件和/或韧体的形式。
56.图1是本技术实施例提供的智能处理器(intelligent processing unit,ipu)的功能方块图。智能处理器100包括译码器110、直接存储器存取120(direct memory access,dma)、矢量电路130及卷积电路140。直接存储器存取120、矢量电路130及卷积电路140各包括指令解压缩电路122、132、142及计算电路124、134、144。指令解压缩电路122、132及142用来解压缩指令(解压缩指令的细节将于后面配合图13详述),而计算电路124、134及144分别执行直接存储器存取120、矢量电路130及卷积电路140的主要功能。由于本领域技术人员知悉直接存储器存取120、矢量电路130及卷积电路140的主要功能,故不再赘述。
57.译码器110包括存储器112(例如,静态随机存取存储器(static random access memory,sram))、指令预撷取(prefetch)电路114、指令分发(delivery)电路116及跳转逻辑电路118。存储器112可以储存智能处理器100将要执行的指令。指令预撷取电路114用来从存储器112中取得指令,然后指令分发电路116根据指令的旗标instflag(请参阅图7)将该指令分发给对应的硬件电路(即,直接存储器存取120、矢量电路130或卷积电路140)。跳转逻辑电路118则用来判断该指令是否为跳转指令和/或跳转指令的种类(长跳转指令或短跳转(short jump)指令)。遇到跳转指令时,跳转逻辑电路118判断跳转指令的目的地,然后指令预撷取电路114再根据该目的地取得下一个指令。
58.在一些实施例中,如果一个跳转指令的目的地(即,目标指令在存储器112中的地址)与该跳转指令本身在存储器112中的地址的差小于门槛值(例如,存储器112的指令暂存区的大小),则该跳转指令是短跳转指令;反之,该跳转指令是长跳转指令。也就是说,短跳转指令的跳转范围(jump range)小于长跳转指令的跳转范围。译码器110处理长跳转指令时,需要直接存储器存取120从智能处理器100的外部存储器(例如,动态随机存取存储器(dynamic random access memory,dram),图未示)取得更多的指令,而短跳转指令则不需要;因此长跳转指令比短跳转指令更耗时及耗费系统资源。
59.图2是本技术实施例提供的流程压缩方法的流程图。在一些实施例中,图2的步骤是在智能处理器100的开发阶段由开发工具(例如,通用计算机)执行。图2的流程压缩方法可以用来压缩某一流程(例如,影像处理流程、启动流程等),且该流程包括多个指令(例如图3的流程310包括指令inst1~指令inst15等15个指令,该多个指令是变长指令,且其中至少一个指令是跳转指令,图3将于下方详述)。图2包括以下步骤。
60.步骤s210:根据跳转指令在一个流程中的位置(例如,跳转指令在存储器112中的地址)及跳转指令的目的地(例如,目的地在存储器112中的地址),将该流程划分为多个区块。更明确地说,步骤s210扫描一个流程中的指令并设置区块边界bb以将该流程划分成多个区块。步骤s210的细节将在下方配合图5详述。在图3的例子中,流程310被划分成4个区块(区块blk1~区块blk4,分别包括指令inst1~指令inst5、指令inst6~指令inst8、指令inst9~指令inst11以及指令inst12~指令inst15,其中指令inst5及指令inst11是跳转指令,其目的地分别是指令inst9与指令inst6)。
61.步骤s220:记录区块间的跳转关系。请参阅图3,步骤s210结束后可得到区块间的跳转关系320:区块blk1的目标区块是区块blk3(因为区块blk3包括指令inst5的目的地(即,指令inst9));区块blk2的来源区块是区块blk3(因为区块blk2包括指令inst11的目的地(即,指令inst6));以及区块blk3的来源区块与目标区块分别是区块blk1与区块blk2。请参阅图4,图4是区块间的跳转关系的示意图,对应到图3的区块间的跳转关系320;换言之,区块间的跳转关系亦可用图形的方式表示或记录。
62.步骤s230:逐区块对该多个区块进行指令压缩,以得到多个压缩后的区块。此步骤将于下方配合图6详述。
63.步骤s240:根据区块之间的跳转关系重新计算跳转地址(jump address,即跳转指令的目的地地址)。因为区块在步骤s230中已被压缩,所以压缩后跳转指令的目的地的地址已非原本的地址,所以必须重新计算或更新跳转地址。举例来说,请参阅图3,由于压缩后几乎每个区块都变小,所以指令inst9与指令inst6的位置改变,因此必须顺应更新或调整指令inst5与指令inst11的目的地的地址。
64.步骤s250:根据区块大小及跳转关系决定群组。此步骤的目的是将多个区块划分成多个群组。步骤s250的细节将在下方配合图8~图9说明。
65.步骤s260:根据跳转指令与群组的关系决定跳转指令是第一种类的跳转指令(例如,短跳转指令)或第二种类的跳转指令(例如,长跳转指令)。通过将区块划分成多个群组,本技术可以更正确地划分短跳转指令与长跳转指令,以避免执行流程的期间发生错误。步骤s260将于下方配合图11说明。
66.图5是步骤s210的细节,包括步骤s510~步骤s550。以下的说明请同时参阅图3及
图4。
67.步骤s510:读取一条指令。
68.步骤s520:判断该条指令是否为跳转指令或跳转指令的目的地。如果不是,则执行步骤s510以读取下一条指令;如果是,则执行步骤s530。
69.步骤s530:设定区块边界bb以决定区块。更明确地说,如果该指令是跳转指令,则步骤s530在该指令之后设定区块边界bb(例如,图3的指令inst5与指令inst6之间以及指令inst11与指令inst12之间);如果该指令是跳转指令的目的地,则步骤s530在该指令之前设定区块边界bb(例如,图3的指令inst5与指令inst6之间以及指令inst8与指令inst9之间)。
70.步骤s540:判断流程中是否仍有待处理的指令。如果是,则执行步骤s510以读取下一条指令;如果否,则执行步骤s550。
71.步骤s550:设定区块边界bb,然后结束。
72.以图3为例,图5的方法会在指令inst5处将流程310划分开(即,设置区块边界bb),以产生区块blk1。类似地,因为指令inst9及指令inst11分别是目的地与跳转指令,所以指令inst9之前及指令inst11之后会被设置区块边界bb,因此分别产生区块blk2及区块blk3。流程310的结尾亦会被设置区块边界bb,以产生区块blk4。
73.图6是本技术实施例提供的指令压缩方法的流程图。图7是本技术实施例提供的压缩前的指令结构及压缩后的指令结构的示意图。如图7所示,指令inst_k-1与指令inst_k是未经压缩的指令(两者是连续的指令,且指令inst_k-1在指令inst_k之前)。指令inst_k-1、指令inst_k及压缩后的指令inst_k'皆包括标头hd及至少一个参数(例如,指令inst_k-1与指令inst_k各包括n个参数p1~pn,而压缩后的指令inst_k'包括1个参数p1')。在一些实施例中,标头hd及每个参数的大小皆为一个字组(word)。标头hd包括旗标instflag及参考值hdlen。旗标instflag记录该指令所属的硬件电路。对未经压缩的指令而言,参考值hdlen记录参数个数(例如,指令inst_k-1及指令inst_k的参考值hdlen为n);对压缩后的指令inst_k'而言,参考值hdlen为预设值(例如0)。图6的压缩方法是以区块为单位,包括以下步骤。
74.步骤s610:读取一区块的一条指令。
75.步骤s620:判断该条指令是否为该区块的第一条指令。如果是,则执行步骤s610以读取该区块的下一条指令;如果否,则执行步骤s630。一个区块的第一条指令不进行压缩(因为没有先前的指令作为参考)。
76.步骤s630:比较该指令与前一指令,以找出该指令中不同于前一指令的相异参数。以图7为例,因为指令inst_k-1的参数p2~参数pn分别等于指令inst_k的参数p2~参数pn,而只有参数p1不等于参数p1',所以步骤s630找到的相异参数为参数p1'。
77.步骤s640:将压缩后的指令的标头hd的参考值hdlen设为一预设值,目的在于标记压缩后的指令。
78.步骤s650:将压缩后的指令的第一参数设为相异参数个数nd。以图7为例,因为指令inst_k-1与指令inst_k之间的相异参数个数nd为1,所以此步骤将压缩后的指令inst_k'的第一参数设为1(即,“len=1”)。
79.步骤s660:将压缩后的指令的其他参数设为该或该多个相异参数。此步骤将压缩后的指令inst_k'的第2~第x个(x=1 nd)参数设为步骤s630所得到的相异参数。以图7为例,因为指令inst_k-1与指令inst_k之间的相异参数只有参数p1'(即,相异参数个数nd为
1),所以此步骤将压缩后的指令inst_k'的第二参数设为参数p1'。步骤s660结束后便可得到压缩后的指令inst_k'。
80.步骤s670:判断该区块是否还有待处理的指令。如果是,则执行步骤s610以读取该区块的下一条指令;如果否,则结束图6的方法(步骤s680)。
81.图8及图9是图2的步骤s250的细节。步骤s250包括两个主要步骤:先根据区块大小决定群组(图8),再根据跳转关系调整群组(图9)。以下的说明请一并参阅图10a及图10b,图10a及图10b是本技术实施例提供的将流程的多个区块划分成多个群组的示意图,对应到图3的流程310。图8包括以下步骤。
82.步骤s810:选取一区块,并根据该区块的大小更新当前群组的大小。群组的大小为其所包括的所有区块的大小的总和。此步骤是将当前群组的大小加上该区块的大小来更新当前群组的大小。以图10a为例,假设当前群组只包括区块blk1,则选取的区块为区块blk2,且更新后的当前群组的大小为区块blk1的大小与区块blk2的大小的总和。
83.步骤s820:判断当前群组的大小是否大于门槛值。在一些实施例中,门槛值可以是存储器112的指令暂存区的大小。如果步骤s820的判断结果为否,则执行步骤s830;否则,执行步骤s840及步骤s850。
84.步骤s830:将该区块设为当前群组的一部分。步骤s820的判断结果为否代表将选取的区块加入当前群组不会使当前群组过大(大于门槛值),所以步骤s830便将该区块设为当前群组的一部分。承上例,假设区块blk1的大小与区块blk2的大小的总和没有超过门槛值sr,则在此步骤中区块blk2被设为与区块blk1同一群组。
85.步骤s840:将该区块设为新的群组的一部分。步骤s820的判断结果为是代表将选取的区块加入当前群组会使当前群组过大(大于门槛值),所以步骤s840便确定当前群组(即,设定群组边界gb),然后将选取的区块设为新的群组的一部分(此时新的群组只包括该区块)。以图10a为例,当选取的区块是区块blk3时,在步骤s840中会先设定群组边界gb(即,确定群组grp1),然后建立群组grp2(此时群组grp2仅包括区块blk3且尚未确定)。
86.步骤s850:将新的群组的大小设为该区块的大小。承上例,因为此时群组grp2只包括区块blk3,所以新的群组的大小等于区块blk3的大小。需注意的是,新的组群在下一回合(即,再次执行步骤s810时)成为该回合的当前群组。
87.步骤s860:判断是否仍有待处理的区块。如果是,则执行步骤s810以选取下一个区块;如果否,则执行步骤s870。
88.步骤s870:设定群组边界,然后结束。以图10a为例,当选取的区块是区块blk4时,步骤s860的判断为否,然后步骤s870在区块blk4之后设定群组边界gb以确定群组grp2。
89.请参考图10a,图8的方法结束后,图4的4个区块被划分成2个群组。然而,因为群组grp1的中间(即,一个群组的第一个区块与最后一个区块之间)有跳转指令的目的地(即,指令inst11的目的地是区块blk2),这会造成流程在执行时发生跳转错误,所以必须进一步根据图9的方法调整群组。图9包括以下步骤。
90.步骤s910:选取一群组。
91.步骤s920:选取该群组的一区块。
92.步骤s930:判断以下的条件是否成立:该区块非该群组的第一个区块,且该区块是其他群组的跳转指令的目的地。以图10a为例,如果步骤s910及步骤s920分别选取群组grp1
及区块blk1,则步骤s830的判断结果为否(因为区块blk1是群组grp1的第一个区块);如果步骤s910及步骤s920分别选取群组grp1及区块blk2,则步骤s830的判断结果为是(因为区块blk2不是群组grp1的第一个区块,而且是指令inst11的目的地)。
93.步骤s940:判断该群组是否仍有待处理的区块。如果是,则执行步骤s920以选取该群组的下一个区块;否则,执行步骤s960。
94.步骤s950:设定群组边界gb,即,将当前群组划分为2个群组。以图10a及图10b为例,步骤s950在区块blk2之前(即,指令inst11的目的地)设定群组边界gb,使得原本的群组grp1变成群组grp1及群组grp3。
95.步骤s960:判断是否仍有待处理的群组。如果是,则执行步骤s910以选取下一个群组;如果否,则结束图9的方法(步骤s970)。
96.图11是图2的步骤s260的细节,包括以下步骤。
97.步骤s1110:选取一跳转指令。以图10b为例,此步骤会选取指令inst5或指令inst11。
98.步骤s1120:判断该跳转指令的目的地是否位于该跳转指令所属的群组内。以图10b为例,对指令inst5而言,因为其目的地(区块blk3)不是在指令inst5所属的群组(即,群组grp1)内,所以步骤s1120的判断结果为否。同理,对指令inst11而言步骤s1120的判断结果亦为否。
99.步骤s1130:将该跳转指令设为长跳转指令。
100.步骤s1140:将该跳转指令设为短跳转指令。
101.步骤s1150:判断是否仍有跳转指令。如果是,则执行步骤s1110以选取下一个跳转指令;如果否,则结束图11的方法(步骤s1160)。
102.在图10b的例子中,指令inst5及指令inst11都是群组间跳转指令(长跳转指令)。请参阅图12,图12是本技术实施例提供的划分群组的示意图。如图12所示,群组grp1包括区块blk1、区块blk2及区块blk3,而群组grp2只包括区块blk4。由于跳转指令inst_n在群组grp1中而且其目的地(区块blk3)也在群组grp1中,所以跳转指令inst_n是一个群组内跳转指令;因此,跳转指令inst_n会在图11的方法中被判断为短跳转指令(即,步骤s1120判断为是)。
103.图13是本技术实施例提供的指令解压缩方法的流程图。图13由图1的硬件电路(即,直接存储器存取120、矢量电路130或卷积电路140)的指令解压缩电路(即,指令解压缩电路122、指令解压缩电路132或指令解压缩电路142)执行,图13包括以下步骤。
104.步骤s1310:读取或接收一条指令,例如,从存储器读取一条指令,或是接收指令分发电路116所分发的指令。
105.步骤s1320:判断该指令的标头hd的参考值hdlen是否为预设值。如果否(代表该指令不是压缩后的指令),则执行步骤s1330;如果是(代表该指令是压缩后的指令),则执行步骤s1340及步骤s1350。
106.步骤s1330:以该指令的所有参数设定硬件电路的相对应的参数(例如,设定暂存器的暂存值)。请参阅图14,图14是本技术的硬件电路执行未经压缩的指令的示意图。假设执行未经压缩的指令inst_y(包括p1'、p2'、p3'、p4'及p5'等5个参数)之前,硬件电路的暂存器群组regp储存p1、p2、p3、p4及p5等5个参数(分别为暂存器reg1、暂存器reg2、暂存器
reg3、暂存器reg4及暂存器reg5的暂存值),则于硬件电路执行指令inst_y之后,暂存器群组regp储存指令inst_y的该5个参数(如图14右边的暂存器群组regp所示)。也就是说,步骤s1330的目的在于以指令inst_y的参数设定硬件电路的参数,硬件电路的参数设定完成后,硬件电路(更明确地说,硬件电路的计算电路)即可执行该指令(步骤s1360)。
107.步骤s1340:读取该指令的第一参数以取得相异参数个数nd。请参阅图15,图15是本技术的硬件电路执行压缩指令的示意图。图15中的指令inst_z是压缩后的指令,其相异参数个数nd为2(即,「len=2」)。
108.步骤s1350:以该指令的第2至第nd 1个参数设定硬件电路的相对应的参数(例如,设定暂存器的暂存值)。在图15的例子中,指令解压缩电路根据相异参数个数nd取得压缩后的指令inst_z的参数p1'及参数p2',然后以参数p1'及参数p2'分别设定暂存器reg1及暂存器reg2。步骤s1350的目的在于以压缩后的指令inst_z的参数设定硬件电路的参数,硬件电路的参数设定完成后,硬件电路即可执行该指令(步骤s1360)。
109.综上所述,本技术通过对指令进行压缩来减少指令暂存器所需的空间(即,减少存储器112的大小),以节省成本。此外,因为对指令进行压缩,所以本技术还可以减少长跳转指令的个数,以提升流程的执行效率。
110.前述实施例虽以变长指令及智能处理器为例,然此并非对本技术的限制,本领域技术人员可依本技术的公开适当地将本技术应用于其它类型的指令及控制电路。
111.以上对本技术实施例所提供的指令压缩方法、指令解压缩方法及流程压缩方法进行了详细介绍。本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献