LoongISA
LoongISA(简称LISA)是龙芯中科注册的自主CPU指令集架构(由MIPS指令集拓展而来,采用MIPS的指令集格式)。LoongISA 指令集架构包括MIPS64 Release 2全套指令集和MIPS64 Release 5中的部分指令模块,以及其他一系列龙芯中科自主扩展的指令集。
推出年份 | 2015年8月18日 |
---|---|
設計公司 | 龙芯中科 |
最新架構版本 | 2.0 |
是否開放架構? | 否 |
體系結構類型 | 寄存器-寄存器,Load-Store |
字長/暫存器資料寬度 | 32位、64位 |
位元組序 | 小端序 |
指令編碼長度 | 固定長度 |
指令集架構設計策略 | 精簡指令集(RISC) |
擴展指令集 | MMI LSX1/2 LASX LEXT1/2/3 LSPW LBT1/2/3 LBTMMU LAMU LVZP |
分支預測結構 | 比較和分支 |
版本
LoongISA 1.0
LoongISA 1.0正式公开于在2015年8月18日的发布会,和龙芯3A2000、GS464E、Loongnix一起发布。[1][2][3][4] LoongISA指令系统在MIPS64架构500多条指令基础上,在基础指令、虚拟机指令、面向X86和ARM的二进制翻译指令、向量指令和核心态等多个方面增加了近1400条新指令,[1]其中包括:
- 148条 LoongEXT 指令
- 5条 LoongVZ 指令
- 213条 LoongBT 指令
- 1014条 LoongSIMD 指令
将 MIPS 原本的527条指令,扩展为1907条。[3]
LoongISA 1.0 里包括 MIPS 部分指令集,其中有 MIPS64 Release 2 全套指令集和 MIPS64 Release 5 中的 MSA 向量指令模块、 DSP 指令模块和 VZ 虚拟化指令模块。
LoongISA 2.0
LoongISA 2.0是随着龙芯3A/B4000产生的新一代自主指令集,相对于LoongISA 1.0删去了其中的 MIPS DSP 指令集模块,添加了新的 LoongBT 指令集,且一并添加了新的 LoongSX、LoongASX、LoongEXT3、LoongAMO 等指令集。
指令集列表
指令集全称 | 指令集简称 | 指令集描述 | LoongISA 1.0 GS464E、GS264 |
LoongISA 2.0 GS464V R2 |
备注 |
---|---|---|---|---|---|
MIPS部分(MIPS64 R2)[8] | |||||
MIPS SIMD Architecture 1.0 | MSA 1 | MIPS64 可选SIMD模块 | 有 | 有 | |
MIPS SIMD Architecture 2.0 | MSA 2 | MIPS64 可选SIMD模块 | 无 | 有 | |
MIPS Virtualization | VZ | MIPS64 可选虚拟化模块 | 有 | 有 | |
MIPS DSP | DSP | MIPS64 可选DSP模块 | 有 | 无 | |
MIPS Cryptographic | CGP | MIPS64 可选密码学指令集 | 无 | 有 | |
龙芯扩展指令 | |||||
LoongMMI | MMI | 龙芯多媒体扩展指令集 | 有 | 有 | |
LoongCAM | LCAMP | 硬件查找表功能指令集 | 有 | 有 | |
LoongEXT 1 | EXT 1 | 龙芯通用扩展指令集 I | 有 | 有 | |
LoongEXT 2 | EXT 2 | 龙芯通用扩展指令集 II | 有 | 有 | |
LoongEXT 3 | EXT 3 | 龙芯通用扩展指令集 III | 无 | 有 | |
LoongVZ | LVZP | 龙芯虚拟化扩展指令集 | 有 | 有 | |
LoongSX 1 | LSX 1 | 龙芯向量扩展指令集 I | 无 | 有 | |
LoongSX 2 | LSX 2 | 龙芯向量扩展指令集 II | 无 | 有 | |
LoongASX | LASX | 龙芯高级向量扩展指令集 | 无 | 有 | |
LoongSPW | LSPW | 龙芯页表遍历扩展指令集 | 无 | 有 | |
LoongAMO | LAMO | 龙芯原子访存指令集 | 无 | 有 | |
LoongBT 1 | LBT 1 | 龙芯二进制翻译加速扩展指令集 I | 有 | 有 | |
LoongBT 2 | LBT 2 | 龙芯二进制翻译加速扩展指令集 II | 无 | 有 | |
LoongBT 3 | LBT 3 | 龙芯二进制翻译加速扩展指令集 III | 无 | 有 |
龙芯的很多手册资料不对公众开放,因此具体指令的内容很多处于未知阶段,导致开源工具的支持也不足。[9]LoongISA 2.0+的子指令集支持是以类似于CPUID的自定义CPUCFG指令来表达,但一些指令集分成几组的含义也不清楚。
指令集
浮点标准
LoongISA 1.0的浮点遵守IEEE754-1989标准,使用Legacy NaN的QNaN/SNaN定义。但是其MADD指令则按IEEE754-2008的Fused MADD标准实现,与MIPS64 Release2不同。[10]
LoongISA 2.0则全部遵循IEEE754-2008标准,使用IEEE754-2008规定的NaN 2008的QNaN/SNaN定义,依照MIPS64 Release 5 实现浮点运算单元。
LoongMMI
LoongMMI(LoongMultiMedia extensions Instruction)指令集是龙芯多媒体扩展指令集的英文简称,用于多媒体加速。
参考文献
- 梁辰. . tech.qq.com. [2019-11-17]. (原始内容存档于2019-11-10).
- 上方文Q. . m.mydrivers.com. [2019-11-17]. (原始内容存档于2019-11-10).
- 孙武. . www.guancha.cn. [2019-11-30]. (原始内容存档于2020-02-04).
- . digi.163.com. 2015-10-22 [2019-11-30]. (原始内容存档于2020-02-04).
- (PDF). [2020-05-05]. (原始内容 (PDF)存档于2020-04-08).
- (PDF). [2020-05-05]. (原始内容存档 (PDF)于2017-06-29).
- (PDF). [2020-05-05]. (原始内容存档 (PDF)于2019-07-13).
- . [2020-05-15]. (原始内容存档于2020-03-02).
- windows1089. . 知乎专栏. [2020-05-14]. (原始内容存档于2020-09-19) (中文).
- . patchwork.kernel.org. [2019-11-30].
- . www.phoronix.com. [2019-11-26]. (原始内容存档于2020-09-19).