CN102426516A - 基于两级片上缓存的可变长度指令集的预解码装置 - Google Patents
基于两级片上缓存的可变长度指令集的预解码装置 Download PDFInfo
- Publication number
- CN102426516A CN102426516A CN2011102932666A CN201110293266A CN102426516A CN 102426516 A CN102426516 A CN 102426516A CN 2011102932666 A CN2011102932666 A CN 2011102932666A CN 201110293266 A CN201110293266 A CN 201110293266A CN 102426516 A CN102426516 A CN 102426516A
- Authority
- CN
- China
- Prior art keywords
- instruction
- data
- command
- length
- information
- 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
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
一种基于两级片上缓存的可变长度指令集的预解码装置,包括数据回填缓冲器、第二级高速缓存和第一级高速缓存,以及并行指令预解码单元,用于将获取的指令数据按照最短指令长度划分,并对每一个划分后数据块按照可变长度指令集中所有指令长度格式对所需信息进行并行解码,将该预解码信息合并指令数据块送入第一级高速缓存中;预解码数据封装单元,用于通过指令pc确定当前指令数据块中的第一条指令位置,并通过指令长度标识位确定数据块中的所有指令的指令边界,按照指令边界选择对应指令的预解码信息并舍弃预解码信息中的多余解码信息,封装为按照指令的预解码信息。本发明在满足时序要求下能获取更多有用解码信息、提升处理器性能。
Description
技术领域
本发明涉及处理器的领域,尤其是一种预解码装置。
背景技术
在处理器领域中,为了平衡指令操作的功能性和存储成本,部分处理器采用可变长度指令集,一般来说,可变长度指令集包括具有基础尺寸的指令以及具有整数倍基础尺寸的较长指令,举例来说,中天公司的16/32位混编指令,以及ARM的thumb 2(16/32位混编)指令集。可变长度指令集的兼顾了指令功能和存储成本的特点所带来的缺点是,增加了指令解码的难度,现有的解码方法一般都是在确定了指令边界后,按照16位和32位分别解码的方法。
在现有广泛处理器架构中,通过片上一级或多级高速缓冲存储器以缓存所需的指令和数据,以期获得更高的处理器性能。一般情况下,处理器从指令高速缓冲存储器中读取指令,然后开始处理指令数据。而为了进一步挖掘处理器性能,现有多数高性能处理器在第一级高速缓冲存储器之前就开始对指令进行处理,即对指令进行部分有效信息的预解码,这样的预解码装置存在于片上第一级缓冲存储器和第二级缓冲存储器或片外存储器之间,第一级缓冲存储器存储预译码信息,以期望在流水线处理器取指令之后有更好的时序性能。
在可变长度指令集的处理器架构中,所遇到的问题是,由于指令在数据块中的位置是不确定的,即指令边界是未知的,如果需要对数据块进行正确的译码,就必须要确定指令的边界,而现有通常的做法是上述的预解码装置的首要工作就是确定指令的边界,然后根据指令边界得到的指令进行下一步的解码工作,这种做法的缺点在于,对指令的解码是串行的操作,如果需要更多的预解码信息,就需要更宽松的时序要求,而在高性能的流水线处理器中,插入于两级缓冲存储器之间的预解码器往往不能完成更多的操作而只是得到指令边界指示信息。比如,分支跳转的响应速度对流水线处理器的影响很大,为了提高性能,往往希望更早的得到分支跳转等预解码信息,而现有的预解码装置不能获得更多有效的信息用于提前流水线处理器下级操作速度和降低流水线处理器的下级设计难度,这样的方式不利于进一步挖掘处理器的性能。
发明内容
为了克服在片上第一级高速缓存和片上第二级高速缓存或片外存储器之间的预解码装置不能获取更多指令解码信息量、限制了处理器性能的不足,本发明提供了一种在满足时序要求下能获取更多有用解码信息、提升处理器性能的基于两级片上缓存的可变长度指令集的预解码装置。
本发明解决其技术问题所采用的技术方案是:
一种基于两级片上缓存的可变长度指令集的预解码装置,所述预解码装置包括:
数据回填缓冲器,用于缓存来自片外的指令数据;
第二级高速缓存,用于存储指令数据;
第一级高速缓存,用于存储指令数据和预解码信息;
并行指令预解码单元,用于从第二级高速缓存或数据回填缓冲器中选择指令数据块作为输入,将获取的指令数据按照最短指令长度划分,并对每一个划分后数据块按照可变长度指令集中所有指令长度格式对所需信息进行并行解码,并产生预解码信息,所述预解码信息包括所有长度指令的正确解码信息和长度整数倍于最短指令长度指令的冗余解码信息,将该预解码信息合并指令数据块送入第一级高速缓存中;
预解码数据封装单元,用于通过指令pc确定当前指令数据块中的第一条指令位置,并通过指令长度标识位确定数据块中的所有指令的指令边界,按照指令边界选择对应指令的预解码信息并舍弃预解码信息中的多余解码信息,封装为按照指令的预解码信息。
作为优选的一种方案:并行预解码单元将第二级高速缓存中获取的指令数据与并行预解码产生的预解码信息共同发送到第一级高速缓存中存储。
本发明的有益效果主要表项在:更快更多的获取指令预解码信息,平衡处理器各级的解码难度,提升处理器的性能。
附图说明
图1为一种基于两级片上缓存的预解码装置示意图。
图2为该装置中预解码单元示意图。
图3位该装置中预解码信息封装单元示意图。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图3,一种基于两级片上缓存的可变长度指令集的预解码装置,所述预解码装置包括:
数据回填缓冲器,用于缓存来自片外的指令数据;
第二级高速缓存,用于存储指令数据;
第一级高速缓存,用于存储指令数据和预解码信息;
并行指令预解码单元,用于从第二级高速缓存或数据回填缓冲器中选择指令数据块作为输入,将获取的指令数据按照最短指令长度划分,并对每一个划分后数据块按照可变长度指令集中所有指令长度格式对所需信息进行并行解码,并产生预解码信息,所述预解码信息包括所有长度指令的正确解码信息和长度整数倍于最短指令长度指令的冗余解码信息,将该预解码信息合并指令数据块送入第一级高速缓存中;
预解码数据封装单元,用于通过指令pc确定当前指令数据块中的第一条指令位置,并通过指令长度标识位确定数据块中的所有指令的指令边界,按照指令边界选择对应指令的预解码信息并舍弃预解码信息中的多余解码信息,封装为按照指令的预解码信息。
并行预解码单元将第二级高速缓存中获取的指令数据与并行预解码产生的预解码信息共同发送到第一级高速缓存中存储。
本实施例中,数据回填缓冲器,其缓存来自片外的指令数据,该数据用于回填片上第二级高速缓存,经过预解码单元预解码后,该数据用于回填片上第一级高速缓存,该数据缓冲器为固定数据长度(如图1所示为64位宽)。
第二级高速缓存,为较大容量的指令数据高速缓存,其为预解码单元提供指令数据,一次读取操作,会返回固定长度的指令数据块(如图1所示为64位),其通过数据回填缓冲器获取其自身的回填指令数据。
并行预解码单元,如图2所示,其包含四个并行预解码子单元,预解码单元将64位指令数据划分为4个半字(16位),每个预解码子单元对每个半字进行预解码,如图2所示,预解码子单元中有两个解码单元,16位解码单元和32位解码单元,即,不仅将半字按照指令集中16位编码长度的指令格式进行解码,又将半字按照指令集中32位编码长度的指令格式的高半字进行解码(有用的预解码信息都包含在了32位指令的高16位中),最后将两者的解码信息求或后形成冗余的解码信息。如图2中,预解码单元对指令的四种信息进行了解码(程序调用跳转,程序返回跳转,分支跳转,pc相关指令),每一种信息由1bit表示,所以每个半字指令信息将产生4bit的预解码信息。4个预解码子单元的预解码信息为16bit。并行预解码单元将预解码的信息与指令数据(共80位)一起输出到第一级指令高速缓存中。
第一级高速缓存,为容量较小的指令高速缓存,其存储指令数据和上述预解码单元的预解码信息。
预解码数据封装单元,如图3所示,其将指令数据和预解码数据封装为正确的指令和预解码信息。如图3可看出其包含一个缓冲器,大小为20位宽,存储16位指令信息(如图3中H0)和相应的4位预解码信息(如图3中h0),当当前数据块中的最后一个有效半字为一条32位指令的高半字,它需存储此半字的信息(图3中利用数据选择器选择半字和相应的预解码信息存入H0,h0中),以在下一指令数据块中构成一条完整的指令。
预解码数据封装单元首先利用程序当前pc的低3位(最低一位始终为0,即pc[2:1])确定指令在当前指令数据块中的位置,利用指令集中指令长度标识位(图3中的每个半字的最高位)确定当前指令数据块中的所有指令边界,利用指令长度标识位通过数据选择器将相应的数据块选择构成完整的指令(如图中inst0,inst1,inst2,inst3)。每个数据块最多产生4条指令数据,然后根据指令边界挑选对应的指令预解码信息,32位指令取高半字的预解码信息,舍弃低半字的预解码信息(如图中inst_prec 0,inst_prec1,inst_prec2,inst_prec3),最后将预解码信息和指令整合输出到处理器的后级流水线。
Claims (2)
1.一种基于两级片上缓存的可变长度指令集的预解码装置,所述预解码装置包括:
数据回填缓冲器,用于缓存来自片外的指令数据;
第二级高速缓存,用于存储指令数据;
第一级高速缓存,用于存储指令数据和预解码信息;
其特征在于:所述预解码装置还包括:
并行指令预解码单元,用于从第二级高速缓存或数据回填缓冲器中选择指令数据块作为输入,将获取的指令数据按照最短指令长度划分,并对每一个划分后数据块按照可变长度指令集中所有指令长度格式对所需信息进行并行解码,并产生预解码信息,所述预解码信息包括所有长度指令的正确解码信息和长度整数倍于最短指令长度指令的冗余解码信息,将该预解码信息合并指令数据块送入第一级高速缓存中;
预解码数据封装单元,用于通过指令pc确定当前指令数据块中的第一条指令位置,并通过指令长度标识位确定数据块中的所有指令的指令边界,按照指令边界选择对应指令的预解码信息并舍弃预解码信息中的多余解码信息,封装为按照指令的预解码信息。
2.如权利要求1所述的基于两级片上缓存的可变长度指令集的预解码装置,其特征在于:并行预解码单元将第二级高速缓存中获取的指令数据与并行预解码产生的预解码信息共同发送到第一级高速缓存中存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102932666A CN102426516A (zh) | 2011-09-29 | 2011-09-29 | 基于两级片上缓存的可变长度指令集的预解码装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102932666A CN102426516A (zh) | 2011-09-29 | 2011-09-29 | 基于两级片上缓存的可变长度指令集的预解码装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102426516A true CN102426516A (zh) | 2012-04-25 |
Family
ID=45960506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011102932666A Pending CN102426516A (zh) | 2011-09-29 | 2011-09-29 | 基于两级片上缓存的可变长度指令集的预解码装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102426516A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110995285A (zh) * | 2019-12-27 | 2020-04-10 | 成都达安众科技有限公司 | 一种uhf rfid分步式指令解码方法及芯片 |
CN114625419A (zh) * | 2022-05-16 | 2022-06-14 | 西安芯瞳半导体技术有限公司 | 一种可变长指令的缓存结构、方法及介质 |
CN116185497A (zh) * | 2023-01-06 | 2023-05-30 | 格兰菲智能科技有限公司 | 命令解析方法、装置、计算机设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5819056A (en) * | 1995-10-06 | 1998-10-06 | Advanced Micro Devices, Inc. | Instruction buffer organization method and system |
US6460132B1 (en) * | 1999-08-31 | 2002-10-01 | Advanced Micro Devices, Inc. | Massively parallel instruction predecoding |
CN101493762A (zh) * | 2008-01-23 | 2009-07-29 | Arm有限公司 | 多指令集的指令预解码 |
-
2011
- 2011-09-29 CN CN2011102932666A patent/CN102426516A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5819056A (en) * | 1995-10-06 | 1998-10-06 | Advanced Micro Devices, Inc. | Instruction buffer organization method and system |
US6460132B1 (en) * | 1999-08-31 | 2002-10-01 | Advanced Micro Devices, Inc. | Massively parallel instruction predecoding |
CN101493762A (zh) * | 2008-01-23 | 2009-07-29 | Arm有限公司 | 多指令集的指令预解码 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110995285A (zh) * | 2019-12-27 | 2020-04-10 | 成都达安众科技有限公司 | 一种uhf rfid分步式指令解码方法及芯片 |
CN114625419A (zh) * | 2022-05-16 | 2022-06-14 | 西安芯瞳半导体技术有限公司 | 一种可变长指令的缓存结构、方法及介质 |
CN116185497A (zh) * | 2023-01-06 | 2023-05-30 | 格兰菲智能科技有限公司 | 命令解析方法、装置、计算机设备和存储介质 |
CN116185497B (zh) * | 2023-01-06 | 2024-05-07 | 格兰菲智能科技有限公司 | 命令解析方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101916180B (zh) | Risc处理器中执行寄存器类型指令的方法和其系统 | |
US7956776B2 (en) | Arithmetic decoding apparatus | |
CN103250131B (zh) | 包括用于早期远分支预测的影子缓存的单周期多分支预测 | |
US10177782B2 (en) | Hardware apparatuses and methods for data decompression | |
US5303356A (en) | System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag | |
CN101156132B (zh) | 用于预测不对准存储器存取的方法和设备 | |
CN101878467A (zh) | 用于跨越指令高速缓冲存储器线的指令的预解码修复高速缓冲存储器 | |
MX2009001911A (es) | Metodo y aparato para emular el comportamiento de pronostico de ramificacion de una llamada de subrutina explicita. | |
CN103150146A (zh) | 基于可扩展处理器架构的专用指令集处理器及其实现方法 | |
CN102662640B (zh) | 双重分支目标缓冲器和分支目标处理系统及处理方法 | |
CN101223504A (zh) | 高速缓存用于多状态处理器的指令 | |
TW201346732A (zh) | 指示可變長度指令集的指令長度之技術 | |
CN102426516A (zh) | 基于两级片上缓存的可变长度指令集的预解码装置 | |
CN110941450B (zh) | 一种risc处理器的指令发射处理电路 | |
JP2505887B2 (ja) | 命令処理システム | |
CN102402418A (zh) | 处理器 | |
CN101727312B (zh) | 一种支持自动纠错功能的返回地址栈实现方法 | |
CN101114217A (zh) | 对复杂指令译码生成微码的译码装置和方法 | |
CN110806900A (zh) | 一种访存指令处理方法及处理器 | |
CN114020441A (zh) | 一种多线程处理器的指令预测方法及相关装置 | |
US8051274B2 (en) | Processor and method of decompressing instruction bundle | |
US10437598B2 (en) | Method and apparatus for selecting among a plurality of instruction sets to a microprocessor | |
CN102520913A (zh) | 基于分组更新历史信息的并行分支预测装置 | |
CN101911011A (zh) | 确定表内的元素的地址的系统和方法 | |
US20130283023A1 (en) | Bimodal Compare Predictor Encoded In Each Compare Instruction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120425 |