CN116841618B - Tta处理器的指令压缩方法和系统,解压方法和系统 - Google Patents
Tta处理器的指令压缩方法和系统,解压方法和系统 Download PDFInfo
- Publication number
- CN116841618B CN116841618B CN202310812053.2A CN202310812053A CN116841618B CN 116841618 B CN116841618 B CN 116841618B CN 202310812053 A CN202310812053 A CN 202310812053A CN 116841618 B CN116841618 B CN 116841618B
- Authority
- CN
- China
- Prior art keywords
- immediate
- instruction
- processed
- memory bank
- storage
- 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
- 230000006835 compression Effects 0.000 title claims abstract description 76
- 238000007906 compression Methods 0.000 title claims abstract description 76
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000006837 decompression Effects 0.000 title claims abstract description 40
- 238000003860 storage Methods 0.000 claims abstract description 137
- 238000012545 processing Methods 0.000 claims description 30
- 238000001727 in vivo Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 6
- 238000012790 confirmation Methods 0.000 claims description 5
- 230000000630 rising effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- BDEDPKFUFGCVCJ-UHFFFAOYSA-N 3,6-dihydroxy-8,8-dimethyl-1-oxo-3,4,7,9-tetrahydrocyclopenta[h]isochromene-5-carbaldehyde Chemical compound O=C1OC(O)CC(C(C=O)=C2O)=C1C1=C2CC(C)(C)C1 BDEDPKFUFGCVCJ-UHFFFAOYSA-N 0.000 description 2
- 230000004075 alteration Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种TTA处理器的指令压缩方法和系统,解压方法和系统,其中方法包括:接收TTA指令字,依次查找指令字中的每条子指令中是否存在待处理的立即数;将查找到的待处理的立即数从对应子指令源域中分离,并将待处理的立即数按照预设的存储规则存入预设的存储系统中,存储系统包括m个存储体;在每个待处理的立即数存入所述存储体后,分配对应的立即数索引值,并将立即数索引值回填入对应的子指令源域;在指令字中的所有待处理的立即数均装入存储系统后,获取立即数索引值位宽,并根据所述立即数索引值位宽和源部件输出端口编码宽度,确定子指令源域的位宽,以便对指令字实现压缩,获得压缩后的指令码和存储系统的立即数列表。
Description
技术领域
本发明涉及指令压缩领域,具体而言,涉及TTA处理器的指令压缩方法和系统,解压方法和系统。
背景技术
TTA(Transport Triggered Architecture,传输触发架构)处理器中所有的功能部件是松散耦合的,理论上可以包含任意种类任意数量的功能部件,可根据应用需求对功能部件增删和定制。在TTA处理器中,只有唯一的一种子指令,即指定数据从一个功能单元到另一个功能单元的传输路径,数据到达后触发功能部件进行运算。
指令字格式共包含4条可并行的子指令,并行度由系统总线数量决定。每条子指令编码中包括条件域、源域和目标域。TTA架构处理器的指令字格式如图1所示。其中,条件域定义了该子指令是否执行所参考的BOOL寄存器编号,目标域为目标部件输入端口编号值,源域设置1位立即数指示位,指示源域包含的是立即数还是源部件输出端口编号值。
TTA处理器的指令字中每条子指令对应一条总线,子指令定义了该总线上的数据传输路径,子指令编码中包括条件域、源域和目标域。其中,条件域定义了该子指令是否执行所参考的BOOL寄存器编号,源域包括1位立即数指示位、源部件输出端口编号值或者立即数,目标域为目标部件输入端口编号值。指令字的位宽为:l=(c+s+d)×n
其中:c为条件域位宽,s为源域位宽,d为目标域位宽,n为子指令数,即系统总线数;其中s的位宽由源部件输出端口编码宽度和立即数宽度的较大值决定。
指令字通常包含多条可并行传输执行的等长的子指令,每条子指令定义了数据传输路径,包含条件域、源域和目标域。其中,源域为源部件输出端口编号或者立即数,立即数通常为32位或者64位,但并不是每条子指令中都包含立即数,且立即数宽度要远大于源部件输出端口编码宽度,因而造成指令编码浪费。
目前,已有压缩算法例如霍夫曼编码、游程编码等算法可用来减少代码量,但压缩后的指令字不是定长的,这就导致取指时无法确定指令地址,使得指令缓存的设计变得困难,还需要额外存储字典映射表,且解码的开销较大。已提出的针对TTA架构指令的冗余消除算法虽保证了压缩后指令字是定长的,但额外增加了指令字,仍造成取指寻址的不便。
发明内容
为了解决现有指令字压缩与解压技术不完善的问题,本发明提供TTA处理器的指令压缩方法和系统,解压方法和系统,通过将立即数从子指令源域中分离,集中存放在小规模缓存中,同时对源域进行压缩存储,在不额外增加指令数的前提下提升指令编码利用效率,节省的指令存储空间。
具体的,本发明的技术方案如下:
第一方面,本发明公开一种TTA处理器的指令压缩方法,包括:
接收TTA指令字,依次查找所述指令字中的每条子指令中是否存在待处理的立即数;
将查找到的所述待处理的立即数从对应子指令源域中分离,并将所述待处理的立即数按照预设的存储规则存入预设的存储系统中,所述存储系统包括m个存储体;
在每个所述待处理的立即数存入所述存储体后,分配对应的立即数索引值,并将所述立即数索引值回填入对应的所述子指令源域;
在所述指令字中的所有待处理的立即数均装入所述存储系统后,获取立即数索引值位宽,并根据所述立即数索引值位宽和源部件输出端口编码宽度,确定子指令源域的位宽,以便对所述指令字实现压缩,获得压缩后的指令码和所述存储系统的立即数列表。
在一些实施方式中,所述存储系统中的每个存储体都设置有体内计数器,用于统计所述存储体中已装入的立即数的数量作为所述存储体的体内计数值;
所述立即数索引值包括:所述立即数存入的存储体编号以及所述立即数在对应的存储体内的存放位置。
在一些实施方式中,所述的获取所述立即数索引值的位宽,并根据所述立即数索引值位宽和源部件输出端口编码宽度,确定子指令源域的位宽,具体包括:
确定所述m个存储体中体内计数值最大的存储体为参考存储体;获取所述参考存储体中体内计数值inum;
根据所述参考存储体中体内计数值inum以及所述存储系统包含的存储体个数m,确定所述立即数索引值位宽如下:
width(imm)=log2m+log2inum;
比较所述立即数索引值位宽及所述源部件输出端口编码宽度的大小,通过下述公式计算子指令源域的位宽s:
s=1+max(width(src.output),width(imm))
其中:1为源域包括的1位立即数指示位,width(src.output)为所述源部件输出端口编码宽度;width(imm)为所述立即数索引值位宽。
在一些实施方式中,所述的将所述待处理的立即数按照预设的存储规则存入预设的存入预设的存储系统中;具体包括:
确定所述指令字中的每个所述待处理的立即数的存储优先级;
按照所述待处理的立即数的存储优先级,依次对每个所述待处理的立即数分配存储体;其中,一条所述指令字中所有待处理的立即数存储在所述存储系统中不同的存储体内。
在一些实施方式中,所述的确定所述指令字中的每个所述待处理的立即数的存储优先级具体包括:
依次扫描所述存储系统中的m个存储体,统计所述m个存储体各自的已装入的立即数的种类和个数;
将所述指令字中的每个所述待处理的立即数与所述m个存储体进行匹配,若存储体中已装入的立即数中包含所述待处理的立即数,则所述待处理的立即数匹配命中;
统计每个所述待处理的立即数匹配命中的次数和对应的匹配命中的存储体编号;
根据所述匹配命中的次数确定各所述待处理的立即数的处理优先级,按照命中次数由少到多进行排序,命中0次的立即数优先级排在最后,若命中次数相等则按照立即数出现的先后顺序排序。
在一些实施方式中,所述的按照所述待处理的立即数的存储优先级,依次对每个所述待处理的立即数分配存储体;具体包括以下步骤:
处理匹配命中一次的所述待处理的立即数,将所述立即数存入唯一匹配命中的目标存储体中;所述立即数存入后,所述存储体不可存入此条指令字中其他立即数;
处理匹配命中多次的所述待处理的立即数,排除掉不可存入的存储体,判断是否出现唯一匹配命中的所述目标存储体,若是,则将所述立即数存入所述目标存储体;若否,则将匹配命中的存储体中编号靠前的一个存储体作为所述目标存储体,将所述立即数存入所述目标存储体;
处理匹配命中0次的所述待处理的立即数,将所述立即数存入体内计数值最少的存储体中,若所述存储体体内计数值相等则存入存储体编号靠前的存储体。
第二方面,本发明还公开一种TTA处理器的指令解压方法,用于对上述任一项实施方式中所述的指令压缩方法进行压缩的指令字进行解压;所述指令解压方法包括:
获取待解压的指令字的指令码和立即数列表;
将所述指令码装入预设的指令缓存区,将所述立即数列表装入预设的立即数缓存区。
访问所述指令缓存区,获得所述指令码压缩前的指令字;
提取所述指令字中子指令源域中的立即数索引值,访问所述立即数缓存区,获得压缩前的立即数;
将所述立即数进行译码,根据译码结果进行指令字拼接,还原所述指令字。
在一些实施方式中,在访问所述指令缓存区之前,还包括:
判断访问指令缓存时处理器的核心频率指标数值是否超过预设数值;
若所述核心频率指标数值未超过预设数值,则判定指令缓存的时序紧张;否则,判定所述指令缓存的时序不紧张;
当所述指令缓存的时序紧张时,在第一时钟周期访问所述指令缓存区,获得所述指令码压缩前的所述指令字;并在第二时钟周期提取所述指令字中子指令源域中的立即数索引值,访问所述立即数缓存区,获得压缩前的所述立即数;
当所述指令缓存的时序不紧张时,则在第一时钟周期的上升沿访问所述指令缓存区,获得所述指令码压缩前的所述指令字;在所述在第一时钟周期的下降沿,提取所述指令字中子指令源域中的立即数索引值,访问所述立即数缓存区,获得压缩前的所述立即数;
将所述立即数进行译码,根据译码结果进行指令字拼接,还原所述指令字。
第三方面,本发明公开一种TTA处理器的指令压缩系统,该系统使用上述任意一项实施方式中所述的TTA架构处理器的指令压缩方法来实现指令压缩,具体包括:
查找模块,用于接收TTA指令字,依次查找所述指令字中的每条子指令中是否存在待处理的立即数;
存储模块,用于将查找到的所述待处理的立即数从对应子指令源域中分离,并将所述待处理的立即数按照预设的存储规则存入预设的存储系统中,所述存储系统包括m个存储体;
索引回填模块,用于在每个所述待处理的立即数存入所述存储体后,分配对应的立即数索引值,并将所述立即数索引值回填入对应的所述子指令源域;
压缩模块,用于在所述指令字中的所有待处理的立即数均装入所述存储系统后,获取立即数索引值位宽,并根据所述立即数索引值位宽和源部件输出端口编码宽度,确定子指令源域的位宽,以便对所述指令字实现压缩,获得压缩后的指令码和所述存储系统的立即数列表。
在一些实施方式中,所述存储模块,包括:
计数器子模块,设置在所述存储系统的每个存储体中,用于用于统计所述存储体中已装入的立即数的数量作为体内计数值;
优先级确认子模块,用于确定所述指令字中的每个所述待处理的立即数的存储优先级;
存储体分配子模块,用于按照所述待处理的立即数的存储优先级,依次对每个所述待处理的立即数分配存储体;其中,一条所述指令字中所有待处理的立即数存储在所述存储系统中不同的存储体内。
在一些实施方式中,所述计数器子模块,还用于依次扫描所述存储系统中的m个存储体,统计所述m个存储体各自的已装入的立即数的种类和个数;
所述优先级确认子模块,还包括:
匹配单元,用于将所述指令字中的每个所述待处理的立即数与所述m个存储体进行匹配,若存储体中已装入的立即数中包含所述待处理的立即数,则所述待处理的立即数匹配命中;
统计单元,用于统计每个所述待处理的立即数匹配命中的次数和对应的匹配命中的存储体编号;
排序单元,用于根据所述匹配命中的次数确定各所述待处理的立即数的处理优先级,按照命中次数由少到多进行排序,命中0次的立即数优先级排在最后,若命中次数相等则按照所述立即数出现的先后顺序排序。
在一些实施方式中,所述存储体分配子模块,还包括:
一次命中单元,用于处理匹配命中一次的所述待处理的立即数,将所述立即数存入唯一匹配命中的目标存储体中;所述立即数存入后,所述存储体不可存入此条指令字中其他立即数;
多次命中单元,用于处理匹配命中多次的所述待处理的立即数,排除掉不可存入的存储体,判断是否出现唯一匹配命中的所述目标存储体,若是,则将所述立即数存入所述目标存储体;若否,则将匹配命中的存储体中编号靠前的一个存储体作为所述目标存储体,将所述立即数存入所述目标存储体;
0次命中单元,用于处理匹配命中0次的所述待处理的立即数,将所述立即数存入体内计数值最少的存储体中,若所述存储体体内计数值相等则存入存储体编号靠前的存储体。
第四方面,本发明还公开一种TTA处理器的指令解压系统,该系统使用上述任意一项实施方式中所述的TTA架构处理器的指令解压方法来实现指令解压,具体包括:
指令码获取模块,用于获取待解压的指令字的指令码和立即数列表;
缓存存入模块,用于将所述指令码装入预设的指令缓存区,将所述立即数列表装入预设的立即数缓存区。
指令访问模块,用于访问所述指令缓存区,获得所述指令码压缩前的指令字;
立即数访问模块,用于提取所述指令字中子指令源域中的立即数索引值,访问所述立即数缓存区,获得压缩前的立即数;
译码模块,用于将所述立即数进行译码,根据译码结果进行指令字拼接,还原所述指令字。
与现有技术相比,本发明至少具有以下一项有益效果:
1、本发明提出的针对TTA架构指令字中立即数的压缩算法,保证指令字定长且不额外增加指令字,不影响取指寻址,保证指令并行度和之前一致,解压方法容易实现,克服了现有技术的缺陷,且压缩效率可观。
2、压缩算法保证一个指令字中的多个立即数分布在不同的存储体中,同一个立即数在一个立即数列表中只会出现1次,以便指令解压时可以并行访存存储体获得各指令槽内的立即数值,不产生体冲突。算法每次将未装入的立即数优先分配到立即数最少的存储体中,尽量保证每个存储体内的立即数是均衡的,以方便立即数存储体的设计。
3、在指令字解压缩时,先将m个立即数列表分别装入m个小规模缓存中,可以根据访问指令缓存的时序是否紧张,选择立即数存储体的访问可以和指令译码同步进行,或在获得压缩指令字同拍的下降沿访问立即数缓存。两种解压缩方法都可以实现不需要为指令解压流程设置单独处理的节拍,不额外增加流水线站台。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对本发明的上述特性、技术特征、优点及其实现方式予以进一步说明。
图1为本发明提供的实施例中包含4条总线的TTA架构处理器的指令字格式示意图;
图2为本发明一种TTA处理器的指令压缩方法的一个实施例的流程图;
图3为本发明一种TTA处理器的指令压缩方法的中步骤S200的子步骤的流程图;
图4为本发明提供的实施例中立即数均未装入的指令字压缩后存储体分配的结果示意图;
图5为本发明提供的实施例中包含已装入立即数的指令字压缩后存储体分配的结果示意图;
图6为本发明一种TTA处理器的指令解压方法的一个实施例的流程图;
图7为本发明一种TTA处理器的指令压缩系统的一个实施例的结构框图;
图8为本发明一种TTA处理器的指令压缩系统的另一个实施例的结构框图;
图9为本发明一种TTA处理器的指令解压系统的一个实施例的结构框图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其他实施例中也可以实现本申请。在其他情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所述描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其他特征、整体、步骤、操作、元素、组件和/或集合的存在或添加。
为使图面简洁,各图中只示意性地表示出了与发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
在本文中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
具体实现中,本申请实施例中描述的终端设备包括但不限于诸如具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的移动电话、膝上型计算机、家教机或平板计算机之类的其他便携式设备。还应当理解的是,在某些实施例中,所述终端设备并非便携式通信设备,而是具有触摸敏感表面(例如:触摸屏显示器和/或触摸板)的台式计算机。
另外,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
参考说明书附图2,本发明提供的一种TTA处理器的指令压缩方法的一个实施例,包括如下步骤:
S100,接收TTA指令字,依次查找所述指令字中的每条子指令中是否存在待处理的立即数。
具体的,TTA处理器的指令字中每条子指令对应一条总线,子指令定义了该总线上的数据传输路径,子指令编码中包括条件域、源域和目标域,TTA架构处理器的指令字格式如图1所示。依次扫描每条指令字中子指令的指令槽,查找指令槽中是否包含立即数。我们将待压缩的指令字中的立即数称为待处理的立即数。
S200,将查找到的所述待处理的立即数从对应子指令源域中分离,并将所述待处理的立即数按照预设的存储规则存入预设的存储系统中,所述存储系统包括m个存储体。
具体的,首先设置m个存储体用于存放立即数,每个存储体设置一个立即数计数器,指示装入的立即数数量。当存储体装入一个新的立即数后,所对应的计数器的值+1。对于输入的每条TTA指令字,若其中不包含立即数则跳过,若带有立即数则查询这m个存储体,根据查询结果生成每个立即数已装入的存储体集合。
TTA架构中立即数一般为32位或64位,远大于源部件输出端口编码宽度,因而可以将立即数从源域中分离出来进行集中编号存放。存放时即要保证同一指令字中的多个立即数无冲突地映射到不同的存储体中,以便解压算法的实现。同时要保证各存储体中保存的立即数较为均衡,以便立即数存储体的实现。
S300,在每个所述待处理的立即数存入所述存储体后,分配对应的立即数索引值,并将所述立即数索引值回填入对应的所述子指令源域。
具体的,算法首先要确定指令中包含的立即数数量并为其分配存储体编号和索引值,所述索引值体现了每个立即数在所述存储系统中存放的位置。通过索引值即可在存储系统中查找原来的立即数,从而还原指令字。
S400,在所述指令字中的所有待处理的立即数均装入所述存储系统后,获取立即数索引值位宽,并根据所述立即数索引值位宽和源部件输出端口编码宽度,确定子指令源域的位宽,以便对所述指令字实现压缩,获得压缩后的指令码和所述存储系统的立即数列表。
具体的,所有的指令字中全部立即数存入后,最终确定立即数索引值的宽度,选择最大的立即数索引值宽度和源部件输出端口编码宽度中的较大值作为源域宽度,基于该宽度将子指令槽源域中的无用编码压缩掉。
本发明一种TTA处理器的指令压缩方法的另一个实施例,在上述方法的一个实施例的基础上,所述存储系统中的每个存储体都设置有体内计数器,用于统计所述存储体中已装入的立即数的数量作为所述存储体的体内计数值。
所述立即数索引值包括:所述立即数存入的存储体编号以及所述立即数在对应的存储体内的存放位置。
本发明一种TTA处理器的指令压缩方法的另一个实施例,在上述方法的一个实施例的基础上,所述的获取所述立即数索引值的位宽,并根据所述立即数索引值位宽和源部件输出端口编码宽度,确定子指令源域的位宽,具体包括:
确定所述m个存储体中体内计数值最大的存储体为参考存储体。获取所述参考存储体中体内计数值inum。
根据所述参考存储体中体内计数值inum以及所述存储系统包含的存储体个数m,确定所述立即数索引值位宽如下:
width(imm)=log2m+log2inum。
比较所述立即数索引值位宽及所述源部件输出端口编码宽度的大小,通过下述公式计算子指令源域的位宽s:
s=1+max(width(src.output),width(imm))
其中:1为源域包括的1位立即数指示位,width(src.output)为所述源部件输出端口编码宽度。width(imm)为所述立即数索引值位宽。
具体的,假设m个存储体中装入最多的立即数个数为inum,则压缩后的子指令源域长度为:
s=1+max(width(src.output),width([log2m]+[log2inum]))
本发明一种TTA处理器的指令压缩方法的另一个实施例,在上述任一实施例的基础上,如说明书附图3所示,所述的S200,将所述待处理的立即数按照预设的存储规则存入预设的存入预设的存储系统中。具体包括:
S210,确定所述指令字中的每个所述待处理的立即数的存储优先级。
S220,按照所述待处理的立即数的存储优先级,依次对每个所述待处理的立即数分配存储体。其中,一条所述指令字中所有待处理的立即数存储在所述存储系统中不同的存储体内。
具体的,以上算法执行完毕得到压缩后的TTA架构指令码和m个立即数列表。压缩算法保证一个指令字中的多个立即数分布在不同的存储体中,同一个立即数在一个立即数列表中只会出现1次,以便指令解压时可以并行访存存储体获得各指令槽内的立即数值,不产生体冲突。算法每次将未装入的立即数优先分配到立即数最少的存储体中,尽量保证每个存储体内的立即数是均衡的,以方便立即数存储体的设计。
本发明一种TTA处理器的指令压缩方法的另一个实施例,在上述方法的一个实施例的基础上,所述的确定所述指令字中的每个所述待处理的立即数的存储优先级具体包括:
S211,依次扫描所述存储系统中的m个存储体,统计所述m个存储体各自的已装入的立即数的种类和个数。
S212,将所述指令字中的每个所述待处理的立即数与所述m个存储体进行匹配,若存储体中已装入的立即数中包含所述待处理的立即数,则所述待处理的立即数匹配命中。
具体的,若此时待处理的立即数为a,检测到存储体m1中已装入的立即数中也出现了a,则认为立即数a与存储体m1匹配,命中1次。
再举个例子,若此时待处理的立即数为b,检测到存储体m1、m2、m3中已装入的立即数中均出现了b,则认为立即数b与存储体m1、m2、m3匹配,命中3次。
S213,统计每个所述待处理的立即数匹配命中的次数和对应的匹配命中的存储体编号。
S214,根据所述匹配命中的次数确定各所述待处理的立即数的处理优先级,按照命中次数由少到多进行排序,命中0次的立即数优先级排在最后,若命中次数相等则按照立即数出现的先后顺序排序。
具体的,优先处理命中1次的立即数、接下来处理命中2次的、命中3次的...最后处理未命中的立即数。
所述的按照所述待处理的立即数的存储优先级,依次对每个所述待处理的立即数分配存储体。具体包括以下步骤:
S221,处理匹配命中一次的所述待处理的立即数,将所述立即数存入唯一匹配命中的目标存储体中。所述立即数存入后,所述存储体不可存入此条指令字中其他立即数。
具体的,若所述存储体在本轮次中存入了立即数,则该存储体不再装入同一条指令字中的其他立即数;在处理下一条指令字时可继续装入。
S222,处理匹配命中多次的所述待处理的立即数,排除掉不可存入的存储体,判断是否出现唯一匹配命中的所述目标存储体,若是,则将所述立即数存入所述目标存储体。若否,则将匹配命中的存储体中编号靠前的一个存储体作为所述目标存储体,将所述立即数存入所述目标存储体。
具体的,处理匹配命中多次的立即数时,按照命中次数由小到大,首先排除掉不可存入的存储体后,多次命中的立即数可能会变成唯一命中,也可能变为不命中。若出现唯一命中则将所述立即数存入唯一命中的存储体中即可,若多名中变为了不命中,则按照存储体计数值由小到大,为其分配计数值最小的存储体进行存储。
举例来讲,立即数a与存储体m1匹配,命中1次;将立即数a存入存储体m1中。立即数b与存储体m1、m2匹配,命中2次;m1不可继续存入,将立即数b存入存储体m2中。
S223,处理匹配命中0次的所述待处理的立即数,将所述立即数存入体内计数值最少的存储体中,若所述存储体体内计数值相等则存入存储体编号靠前的存储体。
本发明一种TTA处理器的指令压缩方法的另一个实施例,如图4所示,imm-a表示立即数a;slot0表示子指令槽0;m0表示存储体0;inum表示存储体的计数值;以此类推,输入的指令字中共包含4个立即数,分别为a、b、a、a;按照算法依次扫描所述存储系统中的m个存储体,存储体中目前均没有已装入的立即数。此时需要为单独为a、b、a、a这4个立即数的每一个立即数各自分配一个存储体,以便解码时并行查找立即数。存入后,由于4个存储体均装入了新的立即数,将它们的计数器加1。立即数映射关系如图4所示。将第一个立即数a存入存储体m1中,将第二个立即数b存入存储体m2中,将第三个立即数a存入存储体m3中,将第四个立即数a存入存储体m4中。
若在存储体中已经装入一部分立即数之后,继续装入立即数时,效果如图5所示,此时要处理的TTA指令字中包含4个立即数(a、b、e、c),目前存在的存储体集合中,已装入a的存储体集合为{m0,m2,m3},已装入b的存储体集合为{m1},已装入c的存储体集合为{m0,m1}。由于b是唯一映射的立即数,首先为b分配m1。分配后,c只能唯一映射到m0中,而a的目标存储体集合缩减为{m2,m3},因此将c分配到m0中。
经过以上步骤后剩余多个目标的a和未被装入的e,优先处理a,选择计数值较大的m2作为a的目标存储体。此时,候选目标存储体只剩m3,则将e装入m3中,然后将m3的计数值加1。立即数映射关系如图5所示。
按照以上处理方法,对于每一条TTA指令字,优先处理之前已装入过的立即数。对于已装入的立即数,优先处理唯一映射的立即数,然后处理多映射的立即数。每处理完一个立即数,则在去掉已分配的存储体的基础上,再处理其他立即数。最后将之前尚未装入的立即数依次装入计数值最小的存储体中。
本发明一种TTA处理器的指令压缩方法的另一个实施例,包括如下步骤:
步骤(1),设置m个存储体用于存放立即数,每个存储体设置一个立即数计数器,指示装入的立即数数量。
步骤(2),对于输入的每条TTA指令字,依次扫描每条子指令槽,若带有立即数则查询这m个存储体,生成每个立即数已装入的存储体集合。若所有子指令的立即数均未装入存储体,则按照存储体当前的计数值将存储体从小到大排序(若计数值相同则按存储器序号由小到大排序),将立即数依次装入已排好序的存储体中,然后将存储体编号和体内计数值作为立即数的索引值回填入子指令源域,装入立即数后存储体计数值加1。若有立即数之前已被装入,则转步骤(3)。
步骤(3),按照子指令序号,依次处理之前已装入的可以唯一映射的立即数,为其分配唯一的目标存储体,并将该目标存储体从其他立即数命中的存储体集合中去掉,此时之前多命中的立即数可能已变成只能唯一映射,之前唯一映射的立即数可能变成不命中,重复执行步骤(3)直到所有立即数都处理完毕,执行步骤(4)。
步骤(4),此时剩余多命中的和认为不命中的立即数,按照子指令序号,优先处理多命中的立即数,选择计数值最大的存储体作为其目标,然后将该目标存储体从其他立即数命中的存储体集合中去掉,转到步骤(3)执行,直到所有多命中的立即数都处理完毕,执行步骤(5)。
步骤(5),将剩余存储体按照计数值由小到大的排序,依次装入剩余未分配索引值的立即数,分配后存储体计数值加1,同时更新子指令源域,若还有未处理的指令字,转步骤(2),否则执行步骤(6)。
步骤(6),所有指令处理完毕后,可以判断源部件输出端口编码宽度和立即数索引位宽的大小,然后将所有指令中的子指令源域按照较大值截断,完成压缩。
参考说明书附图6,本发明提供的一种TTA处理器的指令解压方法的一个实施例,对上述任意一种TTA处理器的指令压缩方法进行压缩的指令字进行解压。包括如下步骤:
S500,获取待解压的指令字的指令码和立即数列表。
S600,将所述指令码装入预设的指令缓存区,将所述立即数列表装入预设的立即数缓存区。
S700,访问所述指令缓存区,获得所述指令码压缩前的指令字。
具体的,通过取指单元对压缩前的指令字进行取指。
S800,提取所述指令字中子指令源域中的立即数索引值,访问所述立即数缓存区,获得压缩前的立即数。
具体的,取指时,若子指令源域中立即数指示位有效,则使用携带的立即数索引值访问对应存储体,以获得具体立即数值。立即数存储体的访问可以和指令译码同步进行,立即数可以根据译码结果直接送入目标部件输入端口。若访问指令缓存的时序不紧张,也可以在获得压缩指令字同拍的下降沿访问立即数缓存,然后拼接成原指令字。
S900,将所述立即数进行译码,根据译码结果进行指令字拼接,还原所述指令字。
本发明提供的一种TTA处理器的指令解压方法的另一个实施例,在上述解压方法的实施例的基础上,在访问所述指令缓存区之前,还包括:
判断访问指令缓存时处理器的核心频率指标数值是否超过预设数值。
若所述核心频率指标数值未超过预设数值,则判定指令缓存的时序紧张。否则,判定所述指令缓存的时序不紧张。
具体的,恢复立即数需要两个步骤,即先根据取指地址获得指令,再根据指令中的立即数索引值访问对应立即数存储体。
指令缓存的时序是否紧张需要看核心频率指标,如果取指和访问立即数缓存这两个步骤可以在一个时钟周期内完成即时序不紧张。
当所述指令缓存的时序紧张时,在第一时钟周期访问所述指令缓存区,获得所述指令码压缩前的所述指令字。并在第二时钟周期提取所述指令字中子指令源域中的立即数索引值,访问所述立即数缓存区,获得压缩前的所述立即数。
当所述指令缓存的时序不紧张时,则在第一时钟周期的上升沿访问所述指令缓存区,获得所述指令码压缩前的所述指令字。在所述在第一时钟周期的下降沿,提取所述指令字中子指令源域中的立即数索引值,访问所述立即数缓存区,获得压缩前的所述立即数。
将所述立即数进行译码,根据译码结果进行指令字拼接,还原所述指令字。
本发明一种TTA处理器的指令解压方法的另一个实施例,包括如下步骤:
步骤(1),在设计相应TTA架构处理器时,需要在取指部件中设置m个小规模立即数缓存。
步骤(2),将压缩后的指令码装入指令缓存中,将m个立即数列表装入这个m个小规模缓存中。
步骤(3),对指令字进行取指,取指时,判断子指令源域中立即数指示位是否有效,若有有效则执行步骤(4)。
步骤(4),使用携带的立即数索引值访问对应存储体,以获得具体立即数值。立即数存储体的访问可以和指令译码同步进行,得到的立即数可以根据译码结果直接送入目标部件输入端口,完成解压。
上述解压方法的另一实施方式,其中:需要判断指令缓存的时序是否紧张。
步骤(4),若访问指令缓存的时序不紧张,也可以在获得压缩指令字同拍的下降沿访问立即数缓存,然后拼接成原指令字,完成解压。从而不需要为指令解压流程设置单独处理的节拍,不额外增加流水线站台。
具体的,TTA架构处理器的流水线一般包括4个站台,分别为取指、译码、传输和执行,指令解压可以在取指或者译码站台进行,具体解压流程有两种实现方式,分别介绍如下。
解压方法一:取指获得压缩的指令码后,由于立即数的查找并不影响指令译码过程,因此立即数存储体的访问和指令译码过程可以同步进行。得到的立即数后可以根据译码结果直接送入目标部件输入端口,完成指令字的解压。
解压方法二:如果指令缓存的时序不紧张,在获得压缩的指令码后,提取其中立即数索引值,在取指周期的下降沿访问立即数缓存,然后拼接成原指令字正常译码执行。
以上两种方法均不需要为指令解压流程设置单独处理的节拍,不额外增加流水线站台。
基于相同的技术构思,本发明还公开了一种TTA处理器的指令压缩系统,该系统可采用上述任一一种TTA处理器的指令压缩方法实施例来实现,具体的,本申请的一种TTA处理器的指令压缩系统实施例,如说明书附图7所示,包括:
查找模块10,用于接收TTA指令字,依次查找所述指令字中的每条子指令中是否存在待处理的立即数。
具体的,TTA处理器的指令字中每条子指令对应一条总线,子指令定义了该总线上的数据传输路径,子指令编码中包括条件域、源域和目标域,TTA架构处理器的指令字格式如图1所示。依次扫描每条指令字中子指令的指令槽,查找指令槽中是否包含立即数。我们将待压缩的指令字中的立即数称为待处理的立即数。
存储模块20,用于将查找到的所述待处理的立即数从对应子指令源域中分离,并将所述待处理的立即数按照预设的存储规则存入预设的存储系统中,所述存储系统包括m个存储体。
具体的,首先设置m个存储体用于存放立即数,每个存储体设置一个立即数计数器,指示装入的立即数数量。当存储体装入一个新的立即数后,所对应的计数器的值+1。对于输入的每条TTA指令字,若其中不包含立即数则跳过,若带有立即数则查询这m个存储体,根据查询结果生成每个立即数已装入的存储体集合。
存放时即要保证同一指令字中的多个立即数无冲突地映射到不同的存储体中,以便解压算法的实现。同时要保证各存储体中保存的立即数较为均衡,以便立即数存储体的实现。
索引回填模块30,用于在每个所述待处理的立即数存入所述存储体后,分配对应的立即数索引值,并将所述立即数索引值回填入对应的所述子指令源域。
具体的,算法首先要确定指令中包含的立即数数量并为其分配存储体编号和索引值,所述索引值体现了每个立即数在所述存储系统中存放的位置。通过索引值即可在存储系统中查找原来的立即数,从而还原指令字。
压缩模块40,用于在所述指令字中的所有待处理的立即数均装入所述存储系统后,获取立即数索引值位宽,并根据所述立即数索引值位宽和源部件输出端口编码宽度,确定子指令源域的位宽,以便对所述指令字实现压缩,获得压缩后的指令码和所述存储系统的立即数列表。
具体的,指令字中并非每条子指令槽都是有效的,即使子指令槽有效,也可能不带立即数,且子指令槽带有立即数只是少数情况。另外,立即数宽度要远大于源部件输出端口编码宽度,因此每条子指令槽的源域中都为立即数预留空间就显得极为浪费,因而造成指令目标码过大,无法充分利用指令存储空间。所以需要对指令槽空间进行存储压缩。
本发明提供的一种TTA处理器的指令压缩系统的另一实施例,如说明书附图8所示,在上述系统实施例的基础上,所述存储模块,包括:
计数器子模块21,设置在所述存储系统的每个存储体中,用于用于统计所述存储体中已装入的立即数的数量作为体内计数值。
优先级确认子模块22,用于确定所述指令字中的每个所述待处理的立即数的存储优先级。
存储体分配子模块23,用于按照所述待处理的立即数的存储优先级,依次对每个所述待处理的立即数分配存储体。其中,一条所述指令字中所有待处理的立即数存储在所述存储系统中不同的存储体内。
在上述TTA处理器指令压缩系统实施例的另一实施方式中,所述计数器子模块,还用于依次扫描所述存储系统中的m个存储体,统计所述m个存储体各自的已装入的立即数的种类和个数。
所述优先级确认子模块,还包括:
匹配单元,用于将所述指令字中的每个所述待处理的立即数与所述m个存储体进行匹配,若存储体中已装入的立即数中包含所述待处理的立即数,则所述待处理的立即数匹配命中。
统计单元,用于统计每个所述待处理的立即数匹配命中的次数和对应的匹配命中的存储体编号。
排序单元,用于根据所述匹配命中的次数确定各所述待处理的立即数的处理优先级,按照命中次数由少到多进行排序,命中0次的立即数优先级排在最后,若命中次数相等则按照所述立即数出现的先后顺序排序。
所述存储体分配子模块,还包括:
一次命中单元,用于处理匹配命中一次的所述待处理的立即数,将所述立即数存入唯一匹配命中的目标存储体中。所述立即数存入后,所述存储体不可存入此条指令字中其他立即数。
多次命中单元,用于处理匹配命中多次的所述待处理的立即数,排除掉不可存入的存储体,判断是否出现唯一匹配命中的所述目标存储体,若是,则将所述立即数存入所述目标存储体。若否,则将匹配命中的存储体中编号靠前的一个存储体作为所述目标存储体,将所述立即数存入所述目标存储体。
0次命中单元,用于处理匹配命中0次的所述待处理的立即数,将所述立即数存入体内计数值最少的存储体中,若所述存储体体内计数值相等则存入存储体编号靠前的存储体。
参考说明书附图9,本发明提供的一种TTA处理器的指令解压系统的一个实施例,包括:
指令码获取模块50,用于获取待解压的指令字的指令码和立即数列表。
缓存存入模块60,用于将所述指令码装入预设的指令缓存区,将所述立即数列表装入预设的立即数缓存区。
指令访问模块70,用于访问所述指令缓存区,获得所述指令码压缩前的指令字。
立即数访问模块80,用于提取所述指令字中子指令源域中的立即数索引值,访问所述立即数缓存区,获得压缩前的立即数。
译码模块90,用于将所述立即数进行译码,根据译码结果进行指令字拼接,还原所述指令字。
本发明的TTA处理器的指令压缩方法和系统,解压方法和系统具有相同的技术构思,二者的实施例的技术细节可相互适用,为减少重复,此次不再赘述。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种TTA处理器的指令压缩方法,其特征在于:
接收TTA指令字,依次查找所述指令字中的每条子指令中是否存在待处理的立即数;
将查找到的所述待处理的立即数从对应子指令源域中分离,并将所述待处理的立即数按照预设的存储规则存入预设的存储系统中,所述存储系统包括m个存储体;
所述的将所述待处理的立即数按照预设的存储规则存入预设的存储系统中,具体包括:确定所述指令字中的每个所述待处理的立即数的存储优先级;按照所述待处理的立即数的存储优先级,依次对每个所述待处理的立即数分配存储体;其中,一条所述指令字中所有待处理的立即数存储在所述存储系统中不同的存储体内;
所述的确定所述指令字中的每个所述待处理的立即数的存储优先级,具体包括:依次扫描所述存储系统中的m个存储体,统计所述m个存储体各自的已装入的立即数的种类和个数;将所述指令字中的每个所述待处理的立即数与所述m个存储体进行匹配,若存储体中已装入的立即数中包含所述待处理的立即数,则所述待处理的立即数匹配命中;统计每个所述待处理的立即数匹配命中的次数和对应的匹配命中的存储体编号;根据所述匹配命中的次数确定各所述待处理的立即数的处理优先级,按照命中次数由少到多进行排序,命中0次的立即数优先级排在最后,若命中次数相等则按照立即数出现的先后顺序排序;
所述的按照所述待处理的立即数的存储优先级,依次对每个所述待处理的立即数分配存储体,具体包括:处理匹配命中一次的所述待处理的立即数,将所述立即数存入唯一匹配命中的目标存储体中;所述立即数存入后,所述存储体不可存入此条指令字中其他立即数;处理匹配命中多次的所述待处理的立即数,排除掉不可存入的存储体,判断是否出现唯一匹配命中的所述目标存储体,若是,则将所述立即数存入所述目标存储体;若否,则将匹配命中的存储体中编号靠前的一个存储体作为所述目标存储体,将所述立即数存入所述目标存储体;处理匹配命中0次的所述待处理的立即数,将所述立即数存入体内计数值最少的存储体中,若所述存储体体内计数值相等则存入存储体编号靠前的存储体;
在每个所述待处理的立即数存入所述存储体后,分配对应的立即数索引值,并将所述立即数索引值回填入对应的所述子指令源域;
在所述指令字中的所有待处理的立即数均装入所述存储系统后,获取立即数索引值位宽,并根据所述立即数索引值位宽和源部件输出端口编码宽度,确定子指令源域的位宽,以便对所述指令字实现压缩,获得压缩后的指令码和所述存储系统的立即数列表。
2.如权利要求1所述的一种TTA处理器的指令压缩方法,其特征在于:所述存储系统中的每个存储体都设置有体内计数器,用于统计所述存储体中已装入的立即数的数量作为所述存储体的体内计数值;
所述立即数索引值包括:所述立即数存入的存储体编号以及所述立即数在对应的存储体内的存放位置。
3.如权利要求2所述的一种TTA处理器的指令压缩方法,其特征在于:所述的获取所述立即数索引值的位宽,并根据所述立即数索引值位宽和源部件输出端口编码宽度,确定子指令源域的位宽,具体包括:
确定所述m个存储体中体内计数值最大的存储体为参考存储体;获取所述参考存储体中体内计数值inum;
根据所述参考存储体中体内计数值inum以及所述存储系统包含的存储体个数m,确定所述立即数索引值位宽如下:
width(imm)=log2m+log2inum;
比较所述立即数索引值位宽及所述源部件输出端口编码宽度的大小,通过下述公式计算子指令源域的位宽s:
s=1+max(width(src.output),width(imm))
其中:1为源域包括的1位立即数指示位,width(src.output)为所述源部件输出端口编码宽度;width(imm)为所述立即数索引值位宽。
4.一种TTA处理器的指令解压方法,用于对权利要求1-3任一项所述的一种TTA处理器的指令压缩方法进行压缩的指令字进行解压;其特征在于,所述指令解压方法包括:
获取待解压的指令字的指令码和立即数列表;
将所述指令码装入预设的指令缓存区,将所述立即数列表装入预设的立即数缓存区;
访问所述指令缓存区,获得所述指令码压缩前的指令字;
提取所述指令字中子指令源域中的立即数索引值,访问所述立即数缓存区,获得压缩前的立即数;
将所述立即数进行译码,根据译码结果进行指令字拼接,还原所述指令字。
5.如权利要求4所述的一种TTA处理器的指令解压方法,其特征在于:
在访问所述指令缓存区之前,还包括:
判断访问指令缓存时处理器的核心频率指标数值是否超过预设数值;
若所述核心频率指标数值未超过预设数值,则判定指令缓存的时序紧张;否则,判定所述指令缓存的时序不紧张;
当所述指令缓存的时序紧张时,在第一时钟周期访问所述指令缓存区,获得所述指令码压缩前的所述指令字;并在第二时钟周期提取所述指令字中子指令源域中的立即数索引值,访问所述立即数缓存区,获得压缩前的所述立即数;
当所述指令缓存的时序不紧张时,则在第一时钟周期的上升沿访问所述指令缓存区,获得所述指令码压缩前的所述指令字;在所述在第一时钟周期的下降沿,提取所述指令字中子指令源域中的立即数索引值,访问所述立即数缓存区,获得压缩前的所述立即数;
将所述立即数进行译码,根据译码结果进行指令字拼接,还原所述指令字。
6.一种TTA处理器的指令压缩系统,其特征在于,通过权利要求1-5中任一项所述的TTA处理器的指令压缩方法来实现指令压缩,具体包括:
查找模块,用于接收TTA指令字,依次查找所述指令字中的每条子指令中是否存在待处理的立即数;
存储模块,用于将查找到的所述待处理的立即数从对应子指令源域中分离,并将所述待处理的立即数按照预设的存储规则存入预设的存储系统中,所述存储系统包括m个存储体;
索引回填模块,用于在每个所述待处理的立即数存入所述存储体后,分配对应的立即数索引值,并将所述立即数索引值回填入对应的所述子指令源域;
压缩模块,用于在所述指令字中的所有待处理的立即数均装入所述存储系统后,获取立即数索引值位宽,并根据所述立即数索引值位宽和源部件输出端口编码宽度,确定子指令源域的位宽,以便对所述指令字实现压缩,获得压缩后的指令码和所述存储系统的立即数列表。
7.如权利要求6所述的一种TTA处理器的指令压缩系统,其特征在于,所述存储模块,包括:
计数器子模块,设置在所述存储系统的每个存储体中,用于统计所述存储体中已装入的立即数的数量作为体内计数值;
优先级确认子模块,用于确定所述指令字中的每个所述待处理的立即数的存储优先级;
存储体分配子模块,用于按照所述待处理的立即数的存储优先级,依次对每个所述待处理的立即数分配存储体;其中,一条所述指令字中所有待处理的立即数存储在所述存储系统中不同的存储体内。
8.如权利要求7所述的一种TTA处理器的指令压缩系统,其特征在于:
所述计数器子模块,还用于依次扫描所述存储系统中的m个存储体,统计所述m个存储体各自的已装入的立即数的种类和个数;
所述优先级确认子模块,还包括:
匹配单元,用于将所述指令字中的每个所述待处理的立即数与所述m个存储体进行匹配,若存储体中已装入的立即数中包含所述待处理的立即数,则所述待处理的立即数匹配命中;
统计单元,用于统计每个所述待处理的立即数匹配命中的次数和对应的匹配命中的存储体编号;
排序单元,用于根据所述匹配命中的次数确定各所述待处理的立即数的处理优先级,按照命中次数由少到多进行排序,命中0次的立即数优先级排在最后,若命中次数相等则按照所述立即数出现的先后顺序排序。
9.如权利要求7所述的一种TTA处理器的指令压缩系统,其特征在于:所述存储体分配子模块,还包括:
一次命中单元,用于处理匹配命中一次的所述待处理的立即数,将所述立即数存入唯一匹配命中的目标存储体中;所述立即数存入后,所述存储体不可存入此条指令字中其他立即数;
多次命中单元,用于处理匹配命中多次的所述待处理的立即数,排除掉不可存入的存储体,判断是否出现唯一匹配命中的所述目标存储体,若是,则将所述立即数存入所述目标存储体;若否,则将匹配命中的存储体中编号靠前的一个存储体作为所述目标存储体,将所述立即数存入所述目标存储体;
0次命中单元,用于处理匹配命中0次的所述待处理的立即数,将所述立即数存入体内计数值最少的存储体中,若所述存储体体内计数值相等则存入存储体编号靠前的存储体。
10.一种TTA处理器的指令解压系统,其特征在于,通过权利要求4-5中任一项所述的TTA处理器的指令解压方法来实现指令解压,具体包括:
指令码获取模块,用于获取待解压的指令字的指令码和立即数列表;
缓存存入模块,用于将所述指令码装入预设的指令缓存区,将所述立即数列表装入预设的立即数缓存区;
指令访问模块,用于访问所述指令缓存区,获得所述指令码压缩前的指令字;
立即数访问模块,用于提取所述指令字中子指令源域中的立即数索引值,访问所述立即数缓存区,获得压缩前的立即数;
译码模块,用于将所述立即数进行译码,根据译码结果进行指令字拼接,还原所述指令字。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310812053.2A CN116841618B (zh) | 2023-07-04 | 2023-07-04 | Tta处理器的指令压缩方法和系统,解压方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310812053.2A CN116841618B (zh) | 2023-07-04 | 2023-07-04 | Tta处理器的指令压缩方法和系统,解压方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116841618A CN116841618A (zh) | 2023-10-03 |
CN116841618B true CN116841618B (zh) | 2024-02-02 |
Family
ID=88166565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310812053.2A Active CN116841618B (zh) | 2023-07-04 | 2023-07-04 | Tta处理器的指令压缩方法和系统,解压方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116841618B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6338132B1 (en) * | 1998-12-30 | 2002-01-08 | Intel Corporation | System and method for storing immediate data |
CN1469236A (zh) * | 2002-07-15 | 2004-01-21 | 北京南思达科技发展有限公司 | 一种可重构寄存器堆及其设计方法 |
CN101694627A (zh) * | 2009-10-23 | 2010-04-14 | 天津大学 | 基于TCore可配置处理器的编译器系统 |
CN101833435A (zh) * | 2010-04-19 | 2010-09-15 | 天津大学 | 基于传输触发架构可配置处理器指令冗余消除方法 |
CN102200905A (zh) * | 2010-03-26 | 2011-09-28 | Mips技术公司 | 具有紧凑指令集架构的微处理器 |
CN104331269A (zh) * | 2014-10-28 | 2015-02-04 | 中国科学院自动化研究所 | 一种嵌入式系统可执行代码压缩方法及代码解压缩系统 |
CN105573716A (zh) * | 2015-12-15 | 2016-05-11 | 西安电子科技大学 | 基于传输触发结构体系的专用指令集处理器 |
CN107844831A (zh) * | 2017-11-10 | 2018-03-27 | 西安电子科技大学 | 基于tta架构的神经网络处理机 |
CN114721720A (zh) * | 2022-06-07 | 2022-07-08 | 中科亿海微电子科技(苏州)有限公司 | 一种指令集扩展方法、装置、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201001621D0 (en) * | 2010-02-01 | 2010-03-17 | Univ Catholique Louvain | A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms |
-
2023
- 2023-07-04 CN CN202310812053.2A patent/CN116841618B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6338132B1 (en) * | 1998-12-30 | 2002-01-08 | Intel Corporation | System and method for storing immediate data |
CN1469236A (zh) * | 2002-07-15 | 2004-01-21 | 北京南思达科技发展有限公司 | 一种可重构寄存器堆及其设计方法 |
CN101694627A (zh) * | 2009-10-23 | 2010-04-14 | 天津大学 | 基于TCore可配置处理器的编译器系统 |
CN102200905A (zh) * | 2010-03-26 | 2011-09-28 | Mips技术公司 | 具有紧凑指令集架构的微处理器 |
CN101833435A (zh) * | 2010-04-19 | 2010-09-15 | 天津大学 | 基于传输触发架构可配置处理器指令冗余消除方法 |
CN104331269A (zh) * | 2014-10-28 | 2015-02-04 | 中国科学院自动化研究所 | 一种嵌入式系统可执行代码压缩方法及代码解压缩系统 |
CN105573716A (zh) * | 2015-12-15 | 2016-05-11 | 西安电子科技大学 | 基于传输触发结构体系的专用指令集处理器 |
CN107844831A (zh) * | 2017-11-10 | 2018-03-27 | 西安电子科技大学 | 基于tta架构的神经网络处理机 |
CN114721720A (zh) * | 2022-06-07 | 2022-07-08 | 中科亿海微电子科技(苏州)有限公司 | 一种指令集扩展方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
赖明澈 ; 王志英 ; 戴葵 ; 高蕾.基于代码特征分析的TTA指令压缩技术与解压部件实现.《电子学报》.2008,2234-2238. * |
Also Published As
Publication number | Publication date |
---|---|
CN116841618A (zh) | 2023-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109308192B (zh) | 用于执行存储器压缩的系统和方法 | |
JP5945291B2 (ja) | デフレート圧縮のために高速で高圧縮のlz77トークン化及びハフマンエンコーディングを行う並列装置 | |
US10044370B1 (en) | Lossless binary compression in a memory constrained environment | |
EP3120266B1 (en) | Ozip compression and decompression | |
US10224957B1 (en) | Hash-based data matching enhanced with backward matching for data compression | |
US20020169946A1 (en) | Methods, systems, and computer program products for compressing a computer program based on a compression criterion and executing the compressed program | |
EP2705423A1 (en) | Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy | |
WO2008106208A1 (en) | Parallel prediction of multiple branches | |
US7877570B2 (en) | Consolidation of matching memory pages | |
US7873819B2 (en) | Branch target buffer addressing in a data processor | |
CN116194902A (zh) | 压缩元数据辅助计算 | |
CN112579595A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN116841618B (zh) | Tta处理器的指令压缩方法和系统,解压方法和系统 | |
US10103747B1 (en) | Lossless binary compression in a memory constrained environment | |
US20040139298A1 (en) | Method and apparatus for instruction compression and decompression in a cache memory | |
CN101751356B (zh) | 用于改进直接存储器存取传送效率的方法、系统和装置 | |
US20090249048A1 (en) | Branch target buffer addressing in a data processor | |
WO2019040268A1 (en) | FOLDING OPERATION REDUCED TO THE LOGIC LEVEL OF A BACKGROUND HISTORY IN A HISTORICAL REGISTER IN A PREDICTION SYSTEM FOR A PROCESSOR-BASED SYSTEM | |
CN114840256A (zh) | 一种程序数据级并行分析方法、装置及相关设备 | |
CN116804915B (zh) | 基于存储器的数据交互方法、处理器、设备以及介质 | |
US20230409337A1 (en) | Partial sorting for coherency recovery | |
US10740098B2 (en) | Aligning most significant bits of different sized elements in comparison result vectors | |
US10579375B2 (en) | Method to build reconfigurable variable length comparators | |
US20060161613A1 (en) | Method and apparatus for arithmatic operation of processor | |
CN115033381A (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 |