CN117762497A - 一种中央处理器cpu装置 - Google Patents
一种中央处理器cpu装置 Download PDFInfo
- Publication number
- CN117762497A CN117762497A CN202311869247.2A CN202311869247A CN117762497A CN 117762497 A CN117762497 A CN 117762497A CN 202311869247 A CN202311869247 A CN 202311869247A CN 117762497 A CN117762497 A CN 117762497A
- Authority
- CN
- China
- Prior art keywords
- instruction
- length
- module
- instructions
- splicing
- 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
- 238000000034 method Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请实施例提供了一种中央处理器CPU装置,涉及计算机技术领域,该装置包括:包括:取指模块、预解码模块、拼接模块、解码模块及执行模块;述取指模块用于从存储器中获取第一长度的指令;预解码模块用于确定第一长度的指令是否需要拼接;拼接模块用于对至少两条第一长度的指令进行拼接,得到第二长度的指令,第二长度大于第一长度;解码模块用于对指令进行解码处理;执行模块用于执行解码后的指令。本申请实施例中,通过预解码模块,判断第一长度的指令是否为拼接的指令,实现拼接指令和非拼接指令的区分;通过拼接模块,将需拼接的两个第一长度指令进行拼接,实现了将两个指令拼接成一个指令,只需处理一个指令提升了处理器的处理效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种中央处理器CPU装置。
背景技术
现有技术中,32位精简指令集(简称RISC)通用处理器中,指令编码有32位和16位两种,32位指令编码可以满足一般应用的需要,16位指令编码可以提高代码密度,减少代码占用的空间。
但是,无论是32位代码还是16位代码,都不能在指令编码中嵌入32位的立即数,如要在指令编码中嵌入32位立即数,则需2~3条指令编码才能完成,这样的指令编码方式降低了处理器的执行效率。
发明内容
本申请实施例提供一种中央处理器CPU装置,用于提升CPU的运行效率。
第一方面,本申请实施例提供一种中央处理器CPU的运算装置,包括:
取指模块、预解码模块、拼接模块、解码模块及执行模块;
所述取指模块用于从存储器中获取第一长度的指令;
所述预解码模块用于确定所述第一长度的指令是否需要拼接;
所述拼接模块用于对至少两条第一长度的指令进行拼接,得到第二长度的指令,所述第二长度大于所述第一长度;
所述解码模块用于对所述第一长度的指令或所述第二长度的指令进行解码处理;
所述执行模块用于执行解码后的指令。
本申请实施例中,通过预解码模块,判断第一长度的指令是否为拼接的指令,实现拼接指令和非拼接指令的区分;通过拼接模块,将需拼接的两个第一长度指令进行拼接,得到第二长度的拼接指令,实现了将两个指令拼接成一个指令,提升了代码密度的同时,也简化了代码的编写,只需处理一个指令也提升了处理器的处理效率。
可选地,所述第一长度的指令的指令格式与所述第二长度的指令的指令格式相同。
本申请实施例中,在需拼接的第一长度指令与拼接后的第二长度指令的指令格式相同,使得处理器在处理第一长度的指令和第二长度的指令时更加便捷。
可选地,所述指令格式自低位至高位依次包括:立即数所占的第一存储位、指令编码小类所占的第二存储位、寄存器信息所占的第三存储位以及指令编码大类所占的第四存储位。
可选地,所述预解码模块具体用于根据所述第一长度的指令中指令编码大类所指示的信息,确定所述第一长度的指令是否需要拼接;
所述预解码模块还用于触发所述拼接模块进行指令拼接。
本申请实施例中,通过预解码模块,判断第一长度的指令是否需要拼接,并将需要拼接的第一长度的指令存储在缓存器中,方便与下一条第一长度指令拼接。
可选地,所述拼接模块具体用于将所述缓存器中连续的两条指令进行拼接,其中,第一条指令的指令编码大类指示需要拼接且第一存储位中存储立即数的第一部分;第二条指令的第一存储位中存储有立即数的第二部分。
可选地,所述第一长度为32位,所述第二长度为48位。
第二方面,本申请实施例提供一种中央处理器CPU的运算方法,所述方法包括:
通过CPU中的取指模块从存储器中获取第一长度的指令并存入CPU中的缓存器中;
通过CPU中的预解码模块确定所述第一长度的指令是否需要拼接;
通过CPU中的拼接模块从所述缓存器中获取至少两条第一长度的指令并进行拼接,得到第二长度的指令,所述第二长度大于所述第一长度;
通过CPU中的解码模块对所述第二长度的指令进行解码处理;
通过CPU中的执行模块执行解码后的第二长度的指令。
可选地,通过CPU中的预解码模块确定所述第一长度的指令是否需要拼接,包括:
根据所述第一长度的指令的指令编码大类所指示的信息,通过CPU中的预解码模块确定所述第一长度的指令是否需要拼接。
可选地,通过CPU中的拼接模块从所述缓存器中获取至少两条第一长度的指令并进行拼接,得到第二长度的指令,包括:
通过CPU中的拼接模块从缓存器中获取连续的两条指令;其中,第一条指令的指令编码大类指示需要拼接且第一存储位中存储立即数的第一部分;第二条指令的第一存储位中存储有立即数的第二部分;
所述拼接模块将所述第一条指令和所述第二条指令进行拼接。
可选地,若所述预解码模块确定所述第一长度的指令不需要拼接,则通过所述解码模块对所述第一长度的指令进行解码处理;
通过所述执行单元执行解码后的第一长度的指令。
本申请实施例中,通过预解码模块,判断第一长度的指令是否为拼接的指令,实现拼接指令和非拼接指令的区分;通过拼接模块,将需拼接的两个第一长度指令进行拼接,得到第二长度的拼接指令,实现了将两个指令拼接成一个指令,提升了代码密度的同时,也简化了代码的编写,只需处理一个指令也提升了处理器的处理效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种中央处理器CPU装置一;
图2a为本申请实施例提供的一种中央处理器CPU装置二;
图2b为本申请实施例提供的一种指令格式;
图3为本申请实施例提供的一种中央处理器CPU的执行方法的流程示意图。
具体实施方式
为了使本申请的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
为了便于理解本方案,下面介绍本方案的应用场景。
在32位精简指令集(简称RISC)通用处理器中,处理器的指令编码有32位和16位两种,32位指令编码可以满足一般应用需要,16位指令编码应用于对代码密度有要求的嵌入式场景,因为使用16位指令替代部分32位指令可以提高代码密度,减少代码段占用空间。但是,由于32位RISC处理器的地址和数据宽度均为32位,在涉及到32位立即数的使用场景时,因为32位或16位指令本身只有32位,因此无法在指令编码中嵌入32位的立即数,通常需要至少两条指令共同完成32位立即数的获取,之后再进行32位立即数的数据操作。这样的指令编码方式会降低处理器的处理效率。本申请将32位指令扩展为48位指令,在编写代码时,只需一条指令即可完成。下面具体介绍本申请的操作步骤:
本申请新增拼接模块和预解码模块。首先,取指模块从存储器中获取32位指令,若32位指令带有需拼接成48位指令的标识,预解码模块向拼接模块发送拼接信号,同时将该32位指令通过总线接口模块存储在缓存器中,继续获取下一条指令,同样将下一条指令通过总线接口模块存储在缓存器中。然后,拼接模块对缓存器中需拼接的两条32位指令进行拼接,得到一条48位指令,再将48位指令发送至解码器,由解码器对48位指令进行解码操作,最后,执行模块执行解码后的指令。
在一些实施例中,参见图1,为本申请实施例提供的一种中央处理器CPU的内部结构,包括:取指模块、预解码模块、拼接模块、解码模块、总线接口模块以及执行模块。
具体地,取指模块将存储指令的地址信息发送至总线接口模块,总线接口模块根据地址信息从存储器中获取第一长度的指令,并存入缓存器中,预解码模块判断第一长度的指令是否需要拼接,若需要拼接,则产生拼接的控制信号,并发送至拼接模块。拼接模块负责将缓存器中的第一长度的指令拼接成第二长度的指令。解码模块将第二长度指令进行解码并发送至执行模块,执行模块执行解码后的指令。若不需要拼接,预解码模块不产生拼接的控制信号至拼接模块,拼接模块从缓存器中获取第一长度的指令后,直接将第一长度的指令发送至解码模块,解码模块将第一长度指令进行解码并发送至执行模块,执行模块执行解码后的指令。
举例说明,以addi指令为例,取指模块获取32位指令,通过总线接口模块存入缓存器中,预解码模块判断32位指令是否需要拼接,如果表明指令编码大类的6位是0b011000,则表明该指令需要拼接,取指模块继续从存储器中获取下一条32位指令,同时,预解码模块还向拼接模块发送拼接信号。拼接模块从缓存器中获取两条32位指令,将其拼接成48位指令。解码模块对48位指令进行解码。执行模块执行解码后的48位指令。
参见图2a,为本申请实施例提供的一种中央处理器CPU的内部结构,包括:取指模块、解码模块、预解码模块、拼接模块、解码模块以及执行模块,取指模块用于从存储器中获取第一长度的指令;预解码模块用于确定第一长度的指令是否需要拼接;拼接模块用于对至少两条第一长度的指令进行拼接,得到第二长度的指令,第二长度大于第一长度;解码模块用于对指令进行解码处理;执行模块用于执行解码后的指令。
具体地,取指模块用于从存储器中获取指令,在存储器中存储有多个第一长度的指令。
预解码模块用于确定多个第一长度的指令是否需要拼接。
拼接模块用于将多个第一长度的指令进行拼接,得到第二长度的指令,第二长度大于第一长度。一般情况下,对2条第一长度的指令进行拼接。
解码模块用于对指令进行解码处理。
执行模块用于对执行解码后的指令。
在一些实施例中,第一长度的指令的指令格式与第二长度的指令的指令格式相同。
具体地,第一长度的指令格式和第二长度的指令格式相同,仅仅在位宽上做了调整。指令格式相同,即在相同的位置代表相同的指令类型。
在一些实施例中,指令格式自低位至高位依次包括:立即数所占的第一存储位、指令编码小类所占的第二存储位、寄存器信息所占的第三存储位以及指令编码大类所占的第四存储位。
具体地,如图2b所示,为一种指令格式。指令格式自低到高分为第一存储位、第二存储位、第三存储位、第四存储位。第一存储位为立即数,第二存储位为指令编码小类,第三存储位为寄存器信息,第四存储位为指令编码大类。第一长度的指令格式和第二长度的指令格式相同,即第一长度的指令格式的第一存储位到第四存储位的存储内容与第二长度的指令格式的第一存储位到第四存储位的存储内容相同。
在一些实施例中,第一长度为32位,第二长度为48位。
具体地,第一长度的指令可以是32位的指令,第二长度的指令可以是48位的指令。
举例说明,如图2b所示,为第一长度的指令的指令格式和第二长度的指令的指令格式。除了在第四存储位中的位宽不同外,其余存储位置的格式均相同。
在一些实施例中,预解码模块具体用于根据第一长度的指令中指令编码大类所指示的信息,确定第一长度的指令是否需要拼接;预解码模块还用于触发拼接模块进行指令拼接。
具体地,预解码模块根据第一长度的指令中,指令编码大类所指示的信息,确定第一长度的指令是否需要拼接,若需要拼接,预解码模块将需要拼接的第一长度的指令存入缓存器中,并通知取指模块继续从存储器中获取下一条第一长度的指令,同时将下一条第一长度的指令也存入缓存器中。一般认为,在第一条指令为需要拼接的第一长度的指令时,后面的指令也为需要拼接的第一长度的指令,且与第一条指令进行拼接。
举例说明,以addi为例,从存储器中获取到的第一条指令为第一长度的指令时,预解码模块判断第一条指令是否需要拼接。如果第一条指令的[31:26]位是0b011000,则表明第一条指令是需要拼接的指令,预解码模块将第一条指令存入缓存器中,继续获取第二条指令。
在一些实施例中,拼接模块具体用于将缓存器中连续的两条指令进行拼接,其中,第一条指令的指令编码大类指示需要拼接且第一存储位中存储立即数的第一部分;第二条指令的第一存储位中存储有立即数的第二部分。
具体地,如图3所示,拼接模块将缓存器中的两条指令进行拼接,第一条指令的第一存储位中存储有立即数的第一部分,第二条指令的第一存储位中存储有立即数的第二部分。
为了进一步解释本申请,下面以具体实施场景来详细描述中央处理器CPU装置拼接指令的方法,具体包括步骤,如图3所示:
步骤301、取指模块指定获取指令的地址信息,并将地址信息发送至总线接口模块。
步骤302、总线接口模块根据地址信息从存储器中获取32位指令,并存储在缓存器中。
步骤303、预解码模块判断32位指令的指令编码大类是否为0b011000,若是,执行步骤304;否则,执行步骤309。
步骤304、预解码模块向拼接模块发送拼接信号。
步骤305、拼接模块将缓存器中需拼接的32位指令拼接成48位指令。
步骤306、拼接模块将48位指令发送至解码模块。
步骤307、解码模块将48位指令进行解码,并发送至执行模块。
步骤308、执行模块执行解码后的48位指令。
步骤309、拼接模块将不需拼接的32位指令发送至解码模块。
步骤310、解码模块将32位指令进行解码,并发送至执行模块。
步骤311、执行模块执行解码后的32位指令。
本申请实施例中,通过预解码模块,判断第一长度的指令是否为拼接的指令,实现拼接指令和非拼接指令的区分;通过拼接模块,将需拼接的两个第一长度指令进行拼接,得到第二长度的拼接指令,实现了将两个指令拼接成一个指令,提升了代码密度的同时,也简化了代码的编写,只需处理一个指令也提升了处理器的处理效率。
Claims (10)
1.一种中央处理器CPU装置,其特征在于,包括:取指模块、预解码模块、拼接模块、解码模块及执行模块;
所述取指模块用于从存储器中获取第一长度的指令;
所述预解码模块用于确定所述第一长度的指令是否需要拼接;
所述拼接模块用于对至少两条第一长度的指令进行拼接,得到第二长度的指令,所述第二长度大于所述第一长度;
所述解码模块用于对指令进行解码处理;
所述执行模块用于执行解码后的指令。
2.如权利要求1所述的装置,其特征在于,所述第一长度的指令的指令格式与所述第二长度的指令的指令格式相同。
3.如权利要求2所述的装置,其特征在于,所述指令格式自低位至高位依次包括:立即数所占的第一存储位、指令编码小类所占的第二存储位、寄存器信息所占的第三存储位以及指令编码大类所占的第四存储位。
4.如权利要求3所述的装置,其特征在于,所述预解码模块具体用于根据所述第一长度的指令中指令编码大类所指示的信息,确定所述第一长度的指令是否需要拼接;
所述预解码模块还用于触发所述拼接模块进行指令拼接。
5.如权利要求4所述的装置,其特征在于,所述拼接模块具体用于将所述缓存器中连续的两条指令进行拼接,其中,第一条指令的指令编码大类指示需要拼接且第一存储位中存储立即数的第一部分;第二条指令的第一存储位中存储有立即数的第二部分。
6.如权利要求1~5任一所述的装置,其特征在于,所述第一长度为32位,所述第二长度为48位。
7.一种指令处理方法,其特征在于,包括:
通过CPU中的取指模块从存储器中获取第一长度的指令并存入CPU中的缓存器中;
通过CPU中的预解码模块确定所述第一长度的指令是否需要拼接;
通过CPU中的拼接模块从所述缓存器中获取至少两条第一长度的指令并进行拼接,得到第二长度的指令,所述第二长度大于所述第一长度;
通过CPU中的解码模块对所述第二长度的指令进行解码处理;
通过CPU中的执行模块执行解码后的第二长度的指令。
8.如权利要求7所述的方法,其特征在于,通过CPU中的预解码模块确定所述第一长度的指令是否需要拼接,包括:
根据所述第一长度的指令中指令编码大类所指示的信息,通过CPU中的预解码模块确定所述第一长度的指令是否需要拼接。
9.如权利要求7所述的方法,其特征在于,通过CPU中的拼接模块从所述缓存器中获取至少两条第一长度的指令并进行拼接,得到第二长度的指令,包括:
通过CPU中的拼接模块从缓存器中获取连续的两条指令;其中,第一条指令的指令编码大类指示需要拼接且第一存储位中存储立即数的第一部分;第二条指令的第一存储位中存储有立即数的第二部分;
所述拼接模块将所述第一条指令和所述第二条指令进行拼接。
10.如权利要求7~9任一所述的方法,其特征在于,还包括:
若所述预解码模块确定所述第一长度的指令不需要拼接,则通过所述解码模块对所述第一长度的指令进行解码处理;
通过所述执行单元执行解码后的第一长度的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311869247.2A CN117762497A (zh) | 2023-12-29 | 2023-12-29 | 一种中央处理器cpu装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311869247.2A CN117762497A (zh) | 2023-12-29 | 2023-12-29 | 一种中央处理器cpu装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117762497A true CN117762497A (zh) | 2024-03-26 |
Family
ID=90316426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311869247.2A Pending CN117762497A (zh) | 2023-12-29 | 2023-12-29 | 一种中央处理器cpu装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117762497A (zh) |
-
2023
- 2023-12-29 CN CN202311869247.2A patent/CN117762497A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7203932B1 (en) | Method and system for using idiom recognition during a software translation process | |
JP5313228B2 (ja) | 適切なプレデコーディングにより可変長命令セットから命令をプレロードするシステム、方法およびソフトウェア | |
US20030177338A1 (en) | Scheme to encode predicted values into an instruction stream/cache without additional bits/area | |
CN107566090B (zh) | 一种定长/变长的文本报文处理方法及装置 | |
JP4864840B2 (ja) | マイクロプロセッサ | |
JP5221153B2 (ja) | 正確なプレデコードを保証する方法及び装置 | |
US8635434B2 (en) | Mathematical operation processing apparatus for performing high speed mathematical operations | |
CN116521236A (zh) | 一种基于risc-v指令集的流水线译码方法 | |
JP2008535043A5 (zh) | ||
US5276825A (en) | Apparatus for quickly determining actual jump addresses by assuming each instruction of a plurality of fetched instructions is a jump instruction | |
US20080028189A1 (en) | Microprocessor and Method of Instruction Alignment | |
CN117762497A (zh) | 一种中央处理器cpu装置 | |
CN117008975A (zh) | 一种指令融合分割方法、处理器核和处理器 | |
CN111443948A (zh) | 指令执行方法、处理器和电子设备 | |
CN114924793A (zh) | 处理单元、计算设备和指令处理方法 | |
US7432988B2 (en) | Address generation for video processing | |
US7243341B2 (en) | Scripting language for processing typed structured data | |
JP2007257349A (ja) | プロセッサ及びその処理方法 | |
US9075620B2 (en) | Instruction execution circuit | |
KR100516214B1 (ko) | 명령어 병렬처리를 위한 디지털 신호처리기 및 그처리방법 | |
US20100125720A1 (en) | Instruction mode identification apparatus and method | |
EP0336091A2 (en) | Pipeline type microprocessor | |
CN114172523A (zh) | 一种基于Viterbi译码器的分段译码方法及系统 | |
US9672042B2 (en) | Processing system and method of instruction set encoding space utilization | |
JP3981117B2 (ja) | キャッシュに記憶するvliw命令の符号化/復号化方法 |
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 |