程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

LoongArch指令集—概况

balukai 2025-03-06 12:01:20 文章精选 2 ℃

LoongArch具有RISC指令架构的典型特征。它的指令长度固定且编码格式规整,绝大多数指令只有两个源操作数和一个目的操作数,采用load/store架构。

LoongArch采用基础部分加扩展部分的组织形式(如下图)。其中扩展部分包括:二进制翻译扩展(Loongson Binary Translation,简称LBT)、虚拟化扩展(Loongson Virtualization,简称LVZ)、向量扩展(Loongson SIMD Extension,简称LSX)和高级向量扩展(Loongson Advanced SIMD Extension,简称LASX)。

LoongArch指令集约有2000条指令,其中基础指令337条、虚拟化扩展10条、二进制翻译扩展170+、128位向量扩展700+、256位向量扩展700+。

LoongArch指令集编码格式如下图,

LoongArch指令长度固定为32位,支持如上图所示的9种类型指令,其中3 种不含立即数的格式 2R、 3R、 4R , 6 种包含立即数的格式 2RI8、 2RI12、2RI14、 2RI16、 1RI21 和 I26。R代表通用寄存器,I代表立即数。编码中的 opcode 域用于存放指令的操作码; rd、 rj、 rk 和 ra 域用于存放寄存器号, 通常 rd 表示目的操作数寄存器, 而 rj、 rk、 ra 表示源操作数寄存器; Ixx 域用于存放指令立即数, 即立即数寻址方式下指令中给出的数。 指令中的立即数不仅作为运算型指令的源操作数, 也作为 load / store 指令中相对于基地址的地址偏移以及转移指令中转移目标的偏移量。

LoongArch指令集寻址方式支持寄存器寻址、立即数寻址、偏移量寻址、变址寻址。

寄存器寻址:操作数在通用寄存器

立即数寻址:操作数在指令里

偏移量寻址:操作数在内存,通过寄存器和偏移地址确定内存地址

变址寻址:操作数在内存,包含基址寻址和相对寻址,通过寄存器或PC的值加上指令里的地址寻址

LoongArch运行级别

LoongArch指令系统中定义了PLV0~PLV3四个权限等级,由当前模式信息控制状态寄存器(CSR.CRMD)的PLV域的值确定。在LoongArch处理器上运行的Linux操作系统,其核心态程序运行在PLV0级,用户态程序通常运行在PLV3级。



LoongArch存储模式

LoongArch架构只采用小尾端的存储方式,即最高有效字节的地址较小的是大尾端, 最低有效字节的地址较小。

如数据,0x12345678

大尾端:

addr+0

addr+1

addr+2

addr+3

0x12

0x34

0x56

0x78


小尾端:

addr+0

addr+1

addr+2

addr+3

0x78

0x56

0x34

0x12

最近发表
标签列表