CN115599441A - 指令压缩方法、指令解压缩方法及流程压缩方法 - Google Patents

指令压缩方法、指令解压缩方法及流程压缩方法 Download PDF

Info

Publication number
CN115599441A
CN115599441A CN202211295072.4A CN202211295072A CN115599441A CN 115599441 A CN115599441 A CN 115599441A CN 202211295072 A CN202211295072 A CN 202211295072A CN 115599441 A CN115599441 A CN 115599441A
Authority
CN
China
Prior art keywords
instruction
jump
block
group
parameters
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
Application number
CN202211295072.4A
Other languages
English (en)
Inventor
邓亚明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xingchen Microelectronics Shenzhen Co ltd
Original Assignee
Xingchen Microelectronics Shenzhen Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xingchen Microelectronics Shenzhen Co ltd filed Critical Xingchen Microelectronics Shenzhen Co ltd
Priority to CN202211295072.4A priority Critical patent/CN115599441A/zh
Publication of CN115599441A publication Critical patent/CN115599441A/zh
Priority to US18/376,454 priority patent/US20240231828A9/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30156Special purpose encoding of instructions, e.g. Gray coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本申请实施例公开了一种指令压缩方法、指令解压缩方法及流程压缩方法,流程压缩方法用来压缩一流程,该流程包括一跳转指令,流程压缩方法包括:根据该跳转指令在该流程中的一位置及该跳转指令的一目的地,将该流程划分为多个区块;记录该多个区块之间的一跳转关系;对该多个区块进行指令压缩;根据该跳转关系重新计算该跳转指令的一跳转地址;根据该多个区块的大小及该跳转关系决定多个群组;以及,根据该跳转指令与该多个群组的关系决定该跳转指令是一第一种类的跳转指令或一第二种类的跳转指令。

Description

指令压缩方法、指令解压缩方法及流程压缩方法
技术领域
本申请涉及指令压缩与指令解压缩,具体涉及与跳转指令(jump instruction,或称为分支指令(branch instruction))相关的指令压缩方法、指令解压缩方法及流程压缩方法。
背景技术
一般而言,一个流程(例如,影像处理流程、启动流程等)通常包括至少一个跳转指令。然而,现有的平台处理跳转逻辑时无法同时开启变长指令(variable-lengthinstruction)压缩,导致指令暂存器需要较大的空间、长跳转(long jump)指令的个数变多,以及流程的执行效率下降。因此,需要一种指令压缩方法、指令解压缩方法及流程压缩方法来减少指令暂存器所需的空间,以及减少长跳转指令的个数。
发明内容
本申请实施例提供一种指令压缩方法、指令解压缩方法及流程压缩方法,以改善先前技术的不足。
本申请实施例提供一种指令解压缩方法,应用于一硬件电路,该硬件电路解压缩一指令并执行该指令,该指令包括一标头,该标头包括一参考值,该方法包括:当该指令的该参考值是一预设值时,读取该指令的一第一参数以取得一相异参数个数;以及,以该指令的多个第二参数设定该硬件电路的多个相对应的参数,该多个第二参数的个数等于该相异参数个数。
本申请实施例提供一种指令压缩方法,用来压缩一指令以产生一压缩后的指令,该指令包括一标头及多个参数,该标头包括一参考值,该方法包括:比较该指令与一前一指令,以找出该指令中与该前一指令不同的多个相异参数;将该压缩后的指令的该参考值设为一预设值;将该压缩后的指令的一目标参数设为该多个相异参数的个数;以及,将该压缩后的指令的其他参数设为该多个相异参数。
本申请实施例提供一种流程压缩方法,用来压缩一流程,该流程包括一跳转指令,该方法包括:根据该跳转指令在该流程中的一位置及该跳转指令的一目的地,将该流程划分为多个区块;记录该多个区块之间的一跳转关系;对该多个区块进行指令压缩;根据该跳转关系重新计算该跳转指令的一跳转地址;根据该多个区块的大小及该跳转关系决定多个群组;以及,根据该跳转指令与该多个群组的关系决定该跳转指令是一第一种类的跳转指令或一第二种类的跳转指令。
本申请的实施例所体现的技术手段可以改善先前技术的缺点的至少其中之一,因此本申请相较于先前技术可以减少指令暂存器所需的空间和/或减少长跳转指令的个数。
有关本申请的特征、实作与功效,兹配合图式作实施例详细说明。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的智能处理器的功能方块图;
图2是本申请实施例提供的流程压缩方法的流程图;
图3是本申请实施例提供的包括多个指令的流程,以及该流程的区块间的跳转关系的示意图;
图4是本申请实施例提供的区块间的跳转关系的示意图;
图5是图2的步骤S210的细节;
图6是本申请实施例提供的指令压缩方法的流程图;
图7是本申请实施例提供的压缩前的指令结构及压缩后的指令结构的示意图;
图8及图9是图2的步骤S250的细节;
图10A及图10B是本申请实施例提供的将流程的多个区块划分成多个群组的示意图;
图11是图2的步骤S260的细节;
图12是本申请实施例提供的划分群组的示意图;
图13是本申请实施例提供的指令解压缩方法的流程图;
图14是本申请实施例提供的的硬件电路执行未经压缩的指令的示意图;以及
图15是本申请实施例提供的硬件电路执行压缩指令的示意图。
【符号说明】
100:智能处理器
110:译码器
112:存储器
114:指令预撷取电路
116:指令分发电路
118:跳转逻辑电路
120:直接存储器存取(DMA)
130:矢量电路
140:卷积电路
122,132,142:指令解压缩电路
124,134,144:计算电路
310:流程
INST1~INST15,INST_k-1,INST_k,INST_y:指令
320:区块间的跳转关系
BB:区块边界
BLK1,BLK2,BLK3,BLK4:区块
INST_k',INST_z:压缩后的指令
HD:标头
InstFlag:旗标
HDLen:参考值
P1,P2,P3,P4,P5,Pn,P1',P2',P3',P4',P5':参数
Nd:相异参数个数
SR:门槛值
GB:群组边界
GRP1,GRP2,GRP3:群组
INST_n:跳转指令
REGP:暂存器群组
REG1,REG2,REG3,REG4,REG5:暂存器
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:步骤
具体实施方式
以下说明内容的技术用语参照本技术领域的习惯用语,如本说明书对部分用语有加以说明或定义,该部分用语的解释以本说明书的说明或定义为准。
本申请的公开内容包括指令压缩方法、指令解压缩方法及流程压缩方法。由于本申请的智能处理器所包括的部分元件单独而言可能为已知元件,因此在不影响该装置发明的充分公开及可实施性的前提下,以下说明对于已知元件的细节将予以节略。此外,本申请的指令压缩方法、指令解压缩方法及流程压缩方法的部分或全部流程可以是软件和/或韧体的形式。
图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的主要功能,故不再赘述。
译码器110包括存储器112(例如,静态随机存取存储器(Static Random AccessMemory,SRAM))、指令预撷取(prefetch)电路114、指令分发(delivery)电路116及跳转逻辑电路118。存储器112可以储存智能处理器100将要执行的指令。指令预撷取电路114用来从存储器112中取得指令,然后指令分发电路116根据指令的旗标InstFlag(请参阅图7)将该指令分发给对应的硬件电路(即,直接存储器存取120、矢量电路130或卷积电路140)。跳转逻辑电路118则用来判断该指令是否为跳转指令和/或跳转指令的种类(长跳转指令或短跳转(short jump)指令)。遇到跳转指令时,跳转逻辑电路118判断跳转指令的目的地,然后指令预撷取电路114再根据该目的地取得下一个指令。
在一些实施例中,如果一个跳转指令的目的地(即,目标指令在存储器112中的地址)与该跳转指令本身在存储器112中的地址的差小于门槛值(例如,存储器112的指令暂存区的大小),则该跳转指令是短跳转指令;反之,该跳转指令是长跳转指令。也就是说,短跳转指令的跳转范围(jump range)小于长跳转指令的跳转范围。译码器110处理长跳转指令时,需要直接存储器存取120从智能处理器100的外部存储器(例如,动态随机存取存储器(Dynamic Random Access Memory,DRAM),图未示)取得更多的指令,而短跳转指令则不需要;因此长跳转指令比短跳转指令更耗时及耗费系统资源。
图2是本申请实施例提供的流程压缩方法的流程图。在一些实施例中,图2的步骤是在智能处理器100的开发阶段由开发工具(例如,通用计算机)执行。图2的流程压缩方法可以用来压缩某一流程(例如,影像处理流程、启动流程等),且该流程包括多个指令(例如图3的流程310包括指令INST1~指令INST15等15个指令,该多个指令是变长指令,且其中至少一个指令是跳转指令,图3将于下方详述)。图2包括以下步骤。
步骤S210:根据跳转指令在一个流程中的位置(例如,跳转指令在存储器112中的地址)及跳转指令的目的地(例如,目的地在存储器112中的地址),将该流程划分为多个区块。更明确地说,步骤S210扫描一个流程中的指令并设置区块边界BB以将该流程划分成多个区块。步骤S210的细节将在下方配合图5详述。在图3的例子中,流程310被划分成4个区块(区块BLK1~区块BLK4,分别包括指令INST1~指令INST5、指令INST6~指令INST8、指令INST9~指令INST11以及指令INST12~指令INST15,其中指令INST5及指令INST11是跳转指令,其目的地分别是指令INST9与指令INST6)。
步骤S220:记录区块间的跳转关系。请参阅图3,步骤S210结束后可得到区块间的跳转关系320:区块BLK1的目标区块是区块BLK3(因为区块BLK3包括指令INST5的目的地(即,指令INST9));区块BLK2的来源区块是区块BLK3(因为区块BLK2包括指令INST11的目的地(即,指令INST6));以及区块BLK3的来源区块与目标区块分别是区块BLK1与区块BLK2。请参阅图4,图4是区块间的跳转关系的示意图,对应到图3的区块间的跳转关系320;换言之,区块间的跳转关系亦可用图形的方式表示或记录。
步骤S230:逐区块对该多个区块进行指令压缩,以得到多个压缩后的区块。此步骤将于下方配合图6详述。
步骤S240:根据区块之间的跳转关系重新计算跳转地址(jump address,即跳转指令的目的地地址)。因为区块在步骤S230中已被压缩,所以压缩后跳转指令的目的地的地址已非原本的地址,所以必须重新计算或更新跳转地址。举例来说,请参阅图3,由于压缩后几乎每个区块都变小,所以指令INST9与指令INST6的位置改变,因此必须顺应更新或调整指令INST5与指令INST11的目的地的地址。
步骤S250:根据区块大小及跳转关系决定群组。此步骤的目的是将多个区块划分成多个群组。步骤S250的细节将在下方配合图8~图9说明。
步骤S260:根据跳转指令与群组的关系决定跳转指令是第一种类的跳转指令(例如,短跳转指令)或第二种类的跳转指令(例如,长跳转指令)。通过将区块划分成多个群组,本申请可以更正确地划分短跳转指令与长跳转指令,以避免执行流程的期间发生错误。步骤S260将于下方配合图11说明。
图5是步骤S210的细节,包括步骤S510~步骤S550。以下的说明请同时参阅图3及图4。
步骤S510:读取一条指令。
步骤S520:判断该条指令是否为跳转指令或跳转指令的目的地。如果不是,则执行步骤S510以读取下一条指令;如果是,则执行步骤S530。
步骤S530:设定区块边界BB以决定区块。更明确地说,如果该指令是跳转指令,则步骤S530在该指令之后设定区块边界BB(例如,图3的指令INST5与指令INST6之间以及指令INST11与指令INST12之间);如果该指令是跳转指令的目的地,则步骤S530在该指令之前设定区块边界BB(例如,图3的指令INST5与指令INST6之间以及指令INST8与指令INST9之间)。
步骤S540:判断流程中是否仍有待处理的指令。如果是,则执行步骤S510以读取下一条指令;如果否,则执行步骤S550。
步骤S550:设定区块边界BB,然后结束。
以图3为例,图5的方法会在指令INST5处将流程310划分开(即,设置区块边界BB),以产生区块BLK1。类似地,因为指令INST9及指令INST11分别是目的地与跳转指令,所以指令INST9之前及指令INST11之后会被设置区块边界BB,因此分别产生区块BLK2及区块BLK3。流程310的结尾亦会被设置区块边界BB,以产生区块BLK4。
图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的压缩方法是以区块为单位,包括以下步骤。
步骤S610:读取一区块的一条指令。
步骤S620:判断该条指令是否为该区块的第一条指令。如果是,则执行步骤S610以读取该区块的下一条指令;如果否,则执行步骤S630。一个区块的第一条指令不进行压缩(因为没有先前的指令作为参考)。
步骤S630:比较该指令与前一指令,以找出该指令中不同于前一指令的相异参数。以图7为例,因为指令INST_k-1的参数P2~参数Pn分别等于指令INST_k的参数P2~参数Pn,而只有参数P1不等于参数P1',所以步骤S630找到的相异参数为参数P1'。
步骤S640:将压缩后的指令的标头HD的参考值HDLen设为一预设值,目的在于标记压缩后的指令。
步骤S650:将压缩后的指令的第一参数设为相异参数个数Nd。以图7为例,因为指令INST_k-1与指令INST_k之间的相异参数个数Nd为1,所以此步骤将压缩后的指令INST_k'的第一参数设为1(即,“Len=1”)。
步骤S660:将压缩后的指令的其他参数设为该或该多个相异参数。此步骤将压缩后的指令INST_k'的第2~第x个(x=1+Nd)参数设为步骤S630所得到的相异参数。以图7为例,因为指令INST_k-1与指令INST_k之间的相异参数只有参数P1'(即,相异参数个数Nd为1),所以此步骤将压缩后的指令INST_k'的第二参数设为参数P1'。步骤S660结束后便可得到压缩后的指令INST_k'。
步骤S670:判断该区块是否还有待处理的指令。如果是,则执行步骤S610以读取该区块的下一条指令;如果否,则结束图6的方法(步骤S680)。
图8及图9是图2的步骤S250的细节。步骤S250包括两个主要步骤:先根据区块大小决定群组(图8),再根据跳转关系调整群组(图9)。以下的说明请一并参阅图10A及图10B,图10A及图10B是本申请实施例提供的将流程的多个区块划分成多个群组的示意图,对应到图3的流程310。图8包括以下步骤。
步骤S810:选取一区块,并根据该区块的大小更新当前群组的大小。群组的大小为其所包括的所有区块的大小的总和。此步骤是将当前群组的大小加上该区块的大小来更新当前群组的大小。以图10A为例,假设当前群组只包括区块BLK1,则选取的区块为区块BLK2,且更新后的当前群组的大小为区块BLK1的大小与区块BLK2的大小的总和。
步骤S820:判断当前群组的大小是否大于门槛值。在一些实施例中,门槛值可以是存储器112的指令暂存区的大小。如果步骤S820的判断结果为否,则执行步骤S830;否则,执行步骤S840及步骤S850。
步骤S830:将该区块设为当前群组的一部分。步骤S820的判断结果为否代表将选取的区块加入当前群组不会使当前群组过大(大于门槛值),所以步骤S830便将该区块设为当前群组的一部分。承上例,假设区块BLK1的大小与区块BLK2的大小的总和没有超过门槛值SR,则在此步骤中区块BLK2被设为与区块BLK1同一群组。
步骤S840:将该区块设为新的群组的一部分。步骤S820的判断结果为是代表将选取的区块加入当前群组会使当前群组过大(大于门槛值),所以步骤S840便确定当前群组(即,设定群组边界GB),然后将选取的区块设为新的群组的一部分(此时新的群组只包括该区块)。以图10A为例,当选取的区块是区块BLK3时,在步骤S840中会先设定群组边界GB(即,确定群组GRP1),然后建立群组GRP2(此时群组GRP2仅包括区块BLK3且尚未确定)。
步骤S850:将新的群组的大小设为该区块的大小。承上例,因为此时群组GRP2只包括区块BLK3,所以新的群组的大小等于区块BLK3的大小。需注意的是,新的组群在下一回合(即,再次执行步骤S810时)成为该回合的当前群组。
步骤S860:判断是否仍有待处理的区块。如果是,则执行步骤S810以选取下一个区块;如果否,则执行步骤S870。
步骤S870:设定群组边界,然后结束。以图10A为例,当选取的区块是区块BLK4时,步骤S860的判断为否,然后步骤S870在区块BLK4之后设定群组边界GB以确定群组GRP2。
请参考图10A,图8的方法结束后,图4的4个区块被划分成2个群组。然而,因为群组GRP1的中间(即,一个群组的第一个区块与最后一个区块之间)有跳转指令的目的地(即,指令INST11的目的地是区块BLK2),这会造成流程在执行时发生跳转错误,所以必须进一步根据图9的方法调整群组。图9包括以下步骤。
步骤S910:选取一群组。
步骤S920:选取该群组的一区块。
步骤S930:判断以下的条件是否成立:该区块非该群组的第一个区块,且该区块是其他群组的跳转指令的目的地。以图10A为例,如果步骤S910及步骤S920分别选取群组GRP1及区块BLK1,则步骤S830的判断结果为否(因为区块BLK1是群组GRP1的第一个区块);如果步骤S910及步骤S920分别选取群组GRP1及区块BLK2,则步骤S830的判断结果为是(因为区块BLK2不是群组GRP1的第一个区块,而且是指令INST11的目的地)。
步骤S940:判断该群组是否仍有待处理的区块。如果是,则执行步骤S920以选取该群组的下一个区块;否则,执行步骤S960。
步骤S950:设定群组边界GB,即,将当前群组划分为2个群组。以图10A及图10B为例,步骤S950在区块BLK2之前(即,指令INST11的目的地)设定群组边界GB,使得原本的群组GRP1变成群组GRP1及群组GRP3。
步骤S960:判断是否仍有待处理的群组。如果是,则执行步骤S910以选取下一个群组;如果否,则结束图9的方法(步骤S970)。
图11是图2的步骤S260的细节,包括以下步骤。
步骤S1110:选取一跳转指令。以图10B为例,此步骤会选取指令INST5或指令INST11。
步骤S1120:判断该跳转指令的目的地是否位于该跳转指令所属的群组内。以图10B为例,对指令INST5而言,因为其目的地(区块BLK3)不是在指令INST5所属的群组(即,群组GRP1)内,所以步骤S1120的判断结果为否。同理,对指令INST11而言步骤S1120的判断结果亦为否。
步骤S1130:将该跳转指令设为长跳转指令。
步骤S1140:将该跳转指令设为短跳转指令。
步骤S1150:判断是否仍有跳转指令。如果是,则执行步骤S1110以选取下一个跳转指令;如果否,则结束图11的方法(步骤S1160)。
在图10B的例子中,指令INST5及指令INST11都是群组间跳转指令(长跳转指令)。请参阅图12,图12是本申请实施例提供的划分群组的示意图。如图12所示,群组GRP1包括区块BLK1、区块BLK2及区块BLK3,而群组GRP2只包括区块BLK4。由于跳转指令INST_n在群组GRP1中而且其目的地(区块BLK3)也在群组GRP1中,所以跳转指令INST_n是一个群组内跳转指令;因此,跳转指令INST_n会在图11的方法中被判断为短跳转指令(即,步骤S1120判断为是)。
图13是本申请实施例提供的指令解压缩方法的流程图。图13由图1的硬件电路(即,直接存储器存取120、矢量电路130或卷积电路140)的指令解压缩电路(即,指令解压缩电路122、指令解压缩电路132或指令解压缩电路142)执行,图13包括以下步骤。
步骤S1310:读取或接收一条指令,例如,从存储器读取一条指令,或是接收指令分发电路116所分发的指令。
步骤S1320:判断该指令的标头HD的参考值HDLen是否为预设值。如果否(代表该指令不是压缩后的指令),则执行步骤S1330;如果是(代表该指令是压缩后的指令),则执行步骤S1340及步骤S1350。
步骤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)。
步骤S1340:读取该指令的第一参数以取得相异参数个数Nd。请参阅图15,图15是本申请的硬件电路执行压缩指令的示意图。图15中的指令INST_z是压缩后的指令,其相异参数个数Nd为2(即,「Len=2」)。
步骤S1350:以该指令的第2至第Nd+1个参数设定硬件电路的相对应的参数(例如,设定暂存器的暂存值)。在图15的例子中,指令解压缩电路根据相异参数个数Nd取得压缩后的指令INST_z的参数P1'及参数P2',然后以参数P1'及参数P2'分别设定暂存器REG1及暂存器REG2。步骤S1350的目的在于以压缩后的指令INST_z的参数设定硬件电路的参数,硬件电路的参数设定完成后,硬件电路即可执行该指令(步骤S1360)。
综上所述,本申请通过对指令进行压缩来减少指令暂存器所需的空间(即,减少存储器112的大小),以节省成本。此外,因为对指令进行压缩,所以本申请还可以减少长跳转指令的个数,以提升流程的执行效率。
前述实施例虽以变长指令及智能处理器为例,然此并非对本申请的限制,本领域技术人员可依本申请的公开适当地将本申请应用于其它类型的指令及控制电路。
以上对本申请实施例所提供的指令压缩方法、指令解压缩方法及流程压缩方法进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (18)

1.一种指令解压缩方法,其特征在于,应用于一硬件电路,所述硬件电路解压缩一指令并执行所述指令,所述指令包括一标头,所述标头包括一参考值,所述方法包括:
当所述指令的所述参考值是一预设值时,读取所述指令的一第一参数以取得一相异参数个数;以及
以所述指令的多个第二参数设定所述硬件电路的多个相对应的参数,所述多个第二参数的个数等于所述相异参数个数。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述指令的所述参考值非所述预设值时,以所述指令的所有参数设定所述硬件电路的所述多个相对应的参数。
3.如权利要求1所述的方法,其特征在于,所述硬件电路包括多个暂存器,所述多个相对应的参数是所述多个暂存器的暂存值。
4.如权利要求1所述的方法,其特征在于,当所述相异参数个数是N时,所述多个第二参数是所述指令的第二个参数至第N+1个参数。
5.如权利要求1所述的方法,其特征在于,所述指令是一变长指令。
6.一种指令压缩方法,其特征在于,用来压缩一指令以产生一压缩后的指令,所述指令包括一标头及多个参数,所述标头包括一参考值,所述方法包括:
比较所述指令与一前一指令,以找出所述指令中与所述前一指令不同的多个相异参数;
将所述压缩后的指令的所述参考值设为一预设值;
将所述压缩后的指令的一目标参数设为所述多个相异参数的个数;以及
将所述压缩后的指令的其他参数设为所述多个相异参数。
7.如权利要求6所述的方法,其特征在于,所述方法应用于一硬件电路,所述硬件电路执行一流程,所述指令与所述前一指令是所述流程的连续指令,且所述指令晚于所述前一指令。
8.如权利要求7所述的方法,其特征在于,所述流程包括多个区块,每一区块包括多个指令,所述指令与所述前一指令属于所述多个区块中的同一目标区块,且所述指令非所述目标区块的第一个指令。
9.如权利要求6所述的方法,其特征在于,所述目标参数是所述压缩后的指令的第一个参数。
10.如权利要求6所述的方法,其特征在于,所述指令是一变长指令。
11.一种流程压缩方法,其特征在于,用来压缩一流程,所述流程包括一跳转指令,所述方法包括:
(A)根据所述跳转指令在所述流程中的一位置及所述跳转指令的一目的地,将所述流程划分为多个区块;
(B)记录所述多个区块之间的一跳转关系;
(C)对所述多个区块进行指令压缩;
(D)根据所述跳转关系重新计算所述跳转指令的一跳转地址;
(E)根据所述多个区块的大小及所述跳转关系决定多个群组;以及
(F)根据所述跳转指令与所述多个群组的关系决定所述跳转指令是一第一种类的跳转指令或一第二种类的跳转指令。
12.如权利要求11所述的方法,其特征在于,所述流程还包括多个指令,所述步骤(A)包括:
读取所述多个指令的其中之一;以及
当所述读取的指令是所述跳转指令或所述跳转指令的所述目的地时,设定一区块边界。
13.如权利要求12所述的方法,其特征在于,所述多个指令是多个变长指令。
14.如权利要求11所述的方法,其特征在于,所述步骤(E)包括:
选取一区块;
根据所述区块的大小更新一当前群组的大小;
当所述当前群组的大小大于一门槛值时,将所述区块设为一新的群组的一部分;以及
当所述当前群组的大小不大于所述门槛值时,将所述区块设为所述当前群组的一部分。
15.如权利要求14所述的方法,其特征在于,所述步骤(E)还包括:
当所述当前群组的大小大于所述门槛值时,将所述新的群组的大小设为所述区块的大小。
16.如权利要求14所述的方法,其特征在于,所述跳转指令是一第一跳转指令,所述目的地是一第一目的地,所述步骤(E)还包括:
选取一第一群组;
选取所述第一群组的一目标区块;以及
当所述目标区块非所述第一群组的第一个区块,且所述目标区块是一第二群组的一第二跳转指令的一第二目的地时,设定一群组边界。
17.如权利要求11所述的方法,其特征在于,所述步骤(F)包括:
选取所述跳转指令;
当所述跳转指令的所述目的地位于所述跳转指令所属的一目标群组内时,将所述跳转指令设为一短跳转指令。
18.如权利要求17所述的方法,其特征在于,所述步骤(F)还包括:
当所述跳转指令的所述目的地不位于所述目标群组内时,将所述跳转指令设为一长跳转指令;
其中,所述短跳转指令的跳转范围小于所述长跳转指令的跳转范围。
CN202211295072.4A 2022-10-21 2022-10-21 指令压缩方法、指令解压缩方法及流程压缩方法 Pending CN115599441A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211295072.4A CN115599441A (zh) 2022-10-21 2022-10-21 指令压缩方法、指令解压缩方法及流程压缩方法
US18/376,454 US20240231828A9 (en) 2022-10-21 2023-10-04 Instruction compression method, instruction decompression method and process compression method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211295072.4A CN115599441A (zh) 2022-10-21 2022-10-21 指令压缩方法、指令解压缩方法及流程压缩方法

Publications (1)

Publication Number Publication Date
CN115599441A true CN115599441A (zh) 2023-01-13

Family

ID=84849329

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211295072.4A Pending CN115599441A (zh) 2022-10-21 2022-10-21 指令压缩方法、指令解压缩方法及流程压缩方法

Country Status (2)

Country Link
US (1) US20240231828A9 (zh)
CN (1) CN115599441A (zh)

Also Published As

Publication number Publication date
US20240231828A9 (en) 2024-07-11
US20240134649A1 (en) 2024-04-25

Similar Documents

Publication Publication Date Title
WO2022062537A1 (zh) 数据压缩方法、装置及计算机可读存储介质
US10884744B2 (en) System and method of loop vectorization by compressing indices and data elements from iterations based on a control mask
CN114610650A (zh) 内存压缩方法、装置、存储介质及电子设备
US20070150711A1 (en) Apparatus and method of exception handling for reconfigurable architecture
CN110688160B (zh) 一种指令流水线处理方法、系统、设备及计算机存储介质
CN115599441A (zh) 指令压缩方法、指令解压缩方法及流程压缩方法
TWI820994B (zh) 指令壓縮方法、指令解壓縮方法及流程壓縮方法
WO2023083213A1 (zh) 一种数据解码方法、装置、电子设备及可读存储介质
CN115049531B (zh) 图像渲染方法、装置、图形处理设备及存储介质
US20210165654A1 (en) Eliminating execution of instructions that produce a constant result
CN111861920B (zh) 一种中值滤波方法以及系统
CN114238213A (zh) 多线程文件解析方法及装置
JP6961950B2 (ja) 格納方法、格納装置および格納プログラム
US20220014705A1 (en) Data processing method and related product
US20060115150A1 (en) Calculation method of a cumulative histogram
US11431349B2 (en) Method, electronic device and computer program product for processing data
CN111639055B (zh) 差分包计算方法、装置、设备及存储介质
US20230325150A1 (en) Multiple-input floating-point number processing method and apparatus
CN112199596B (zh) 一种日志过滤处理的方法、装置、设备及介质
JP2018185615A (ja) 電子機器、方法、及びプログラム
US20050132370A1 (en) Task distribution in computing architectures
US6954155B2 (en) Data compression method and processor
CN113626092A (zh) 嵌入式系统启动方法与soc芯片
CN118474432A (zh) 一种视频输出方法、系统及电子设备
CN117931729A (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