More Related Content
Similar to Godson x86 (20)
Godson x86
- 1. 龙芯 2E 体系
结构概述
currentversion: 0.3
comcat <jiankemeng@gmail.com>
Sun Wah HiTech System Software Ltd.
- 2. 主要内容
微体系结构
指令集
存储管理
中断异常
I/O 操作
Sun Wah HiTech System Software Ltd.
- 3. 总述
龙芯处理器主要包括三个系列。龙芯 1 号系列主要面向嵌入
式应用,龙芯 2 号超标量处理器系列主要面向桌面应用,龙
芯 3 号多核处理器系列主要面向服务器和高性能机应用。
龙芯 2E 处理器是 64 位、兼容 MIPS III 指令集的通用 RISC
处理器。
Sun Wah HiTech System Software Ltd.
- 5. 龙芯 2E 技术特点
64 位、四发射、乱序执行(动态调度、寄存器重命名、转移预测)
64KB+64KB 一级片内 cache , 512KB 二级片内 cache
IEEE 754 兼容浮点部件,专门的媒体支持(实现 MMX 思想)
双精度浮点运算 40 亿次 / 秒,单精度峰值浮点运算 80 亿次 / 秒
针对缓冲区溢出攻击的专门安全支持(栈不可执行)
MIPS III 兼容,支持 LINUX 、 VxWorks 、 WinCE
90nm COMS 工艺实现, 4700 万晶体管,面积 6.8mmx5.2mm
最高工作频率 1GHz , 800MHz 时功耗为 57W
Sun Wah HiTech System Software Ltd.
- 6. 龙芯 2E 微体系结构
4 发射超标量结构, 9 级乱序执行流水线。分别为取指、预译码、译码、寄存器
重命名、调度、发射、读寄存器、执行、提交。
每个时钟周期取四条指令进行译码,动态地发射到五个全流水功能部件中。
采用动态调度、寄存器重命名、转移预测技术以及激进的存储系统设计来提高流
水线效率
指令乱序执行但指令的提交还是按原来顺序,以保证精确中断和访存顺序执行
Sun Wah HiTech System Software Ltd.
- 7. 提交
五个全流水部件
必
读寄
调度 发射
存器
保留 寄存
站 器堆
预译码
寄存器
取指 转移预 译码 执行
重命名
测
Sun Wah HiTech System Software Ltd.
- 8. Pentium IV 微体系结构
20 级流水线 ( 超流水),目标为获得更高的时钟频率
3 发射超标量、乱序执行核心
指令被取后(每次从 L2 取 64 位),首先顺序经过唯一的译码部件(每周期一条
指令)转成定长微操作 (uop) ,然后以每周期 3 条微操作的速度进入乱序执行核
心,提交亦是顺序提交。
高级动态调度、寄存器重命名、转移预测(预测失败代价大)
快速执行引擎。 2 个整数 ALU 以时钟频率的 2 倍速度运行
七个全流水部件 (P III 为 5 个)
Sun Wah HiTech System Software Ltd.
- 9. Pentium IV 微体系结构
Pentium IV 20-stage pipeline
Sun Wah HiTech System Software Ltd.
- 12. x86 指令集
x86 指令集包括整数指令、浮点指令、多媒体指令等。其中整数指
令可以分为 4 类:数据传送指令,算术和逻辑运算指令,控制流
指令,字符串操作指令。
数据传送: mov, push, pop
算术和逻辑运算: add, sub, inc, dec, and, or, shl, shr, cmp
控制流: jmp, jz, jnz, call, ret
字符串操作: movs, lods, stos
Sun Wah HiTech System Software Ltd.
- 13. 龙芯指令集
龙芯 2E 的指令集由 MIPS III 加上自定义的指令组成。可以分为:访存
指令、计算指令、跳转和分支指令以及协处理器指令 ( 用于操控协处理
器,完成内存管理、异常处理、浮点运算、多媒体运算等 ) 。取每类典
型指令,陈述如下:
访存指令: lb, sb, lh, sh, lw, sw, ld, sd (byte, halfword, word,
doubleword)
计算指令: add, sub, mult, div, and, or, sll, srl, slt...
跳转分支指令: j, jr, jal, beq, bne...
Sun Wah HiTech System Software Ltd.
- 14. 龙芯指令集 (MIPS III) 特点
指令总数较 x86 要少
没有 push , pop 等栈操作指令
没有 movs, lods 等字符串操作指令
对过程调用的支持方面,没有 ret 指令 , jal/jalr 对应于
call
总而言之,龙芯的指令集较 x86 精简的多,便于理解、记
忆,是个相对容易实现的指令集。
Sun Wah HiTech System Software Ltd.
- 15. 访存方式
龙芯要求操作数总在寄存器中。访存必须使用访存指
令,且寻址方式简单。这种精简的结构,是为
load/store 系统结构。
x86 可以具有功能强大的寻址方式,其中一个操作数可
以位于存储器中,是为 register/memory 系统结构。
Sun Wah HiTech System Software Ltd.
- 16. 指令的内部编码(机器码)
int add(int x, int y){ return x+y; } 函数的编码比较:
08048354 <add>: 00400670 <add>:
8048354: 55 push %ebp 400674: 03e00008 jr ra
8048355: 89 e5 mov %esp,%ebp 400670: 00621021 addu v0,v1,v0
8048357: 8b 45 0c mov 0xc(%ebp),%eax
804835a: 03 45 08 add 0x8(%ebp),%eax
804835d: 5d pop %ebp
804835e: c3 ret
x86 下指令的机器码,长短不一,
这个能有效减少指令所占用的存储空间。 龙芯所有的指令长度一样,都是 32 位
但高效往往带来复杂,一条 add 指令有十几种编
龙芯所用指令集,指令编码简单,所有整数
码,这种多样性往往带来硬件实现上的困难。
指令只有 3 种格式,所有格式中,寄存器
字段都在相同的位置,规则性很强,非常
容易理解、记忆,硬件实现起来也比较容
易。但极强的规则性往往要牺牲掉一些效
率,所有指令的等长,就会浪费一些空
Sun Wah HiTech System Software Ltd.
间。
- 17. 寄存器
x86 共有 8 个 GPR : eax, ebx, ecx, edx, esi, edi, ebp, esp
龙芯总共有 32 个通用寄存器,编号为: 0~31
Register Name Usage
$0 zero 常量 0
$1 at 用作汇编器的暂时变量
$2$3 v0 v1 函数调用返回值(非浮点)
$4$7 a0 a3 函数调用时前4 个参数(非浮点)
$8$15 t0 t7 暂时变量(子函数调用时无需保存和恢复)
$16$23 s0 s7 寄存器变量(子函数使用前须保存,返回之前须恢复)
$24$25 t8 t9 暂时变量(子函数调用时无需保存和恢复)
$26$27 k0 k1 通常被中断或异常处理程序使用,用于保存一些系统参数
$28 gp 全局指针;一些系统维护这个指针来更方便的存取static 和 extern 变量
$29 sp 堆栈指针
$30 fp 一般用来做帧指针
$31 ra 返回地址
Sun Wah HiTech System Software Ltd.
- 18. 龙芯 2E 逻辑结构
CP0 CR
GPR $
$ 0
$1
0
$1
......
$2
$3
$30
......
$30
$31
CP1 FGR
$
ALU1 ALU2 0
$1
......
FCR0
PC hi lo FCR31
$31
GODSON2E
Sun Wah HiTech System Software Ltd.
- 19. 综述
龙芯具有简单的寻址模式、数量少的指令、固定长度的指令编
码、大量的通用寄存器,是个典型的 RISC ( Reduced
Instruction Set Computer )系统结构。这种结构的原则是:通
过指令流水线获得高性能,易于用硬件实现,与高度优化的编译
器的集合提高性能。
x86 是个典型的 CISC ( Complex Instruction Set Computer )
结构,特点也很明显:功能强大的寻址模式和指令、高效的指令
编码、较少的寄存器。其设计原则为:简化编译器,减少执行代
码的长度。
Sun Wah HiTech System Software Ltd.
- 21. 龙芯 2E 存储管理部件
具有一个功能完备的存储管理单元 (MMU)
TLB(Translation Lookaside Buffer): 64 项,每项映射 2 页,全相
联结构
TLB 的软件接口:系统协处理器 (CP0) 寄存器,与存储管理相关的
具有 12 个
Sun Wah HiTech System Software Ltd.
- 22. 龙芯 2E 下存储管理
龙芯是个典型的 RISC 结构。 RISC 的哲学是简化硬件设计,让 OS
承担更多的工作。
MMU 做事很少, TLB 必需由 OS 来维护。
龙芯的一二级 cache 亦要 OS 来维护其一致性
另外与 x86 的差别在于,其没有复杂的内存管理模式,没有段的
概念。龙芯仅使用页的概念,支持现代虚拟内存系统,页大小可
以是 4KB~16MB ,但必须是 4 的倍数。龙芯具有 3 种运行级别,
分别为:内核模式、管理模式和用户模式。
Sun Wah HiTech System Software Ltd.
- 24. 龙芯 2E 对中断和异常的支持
五个固定异常入口,非冷启动、热重启、非屏蔽中断、 cache 错
误、 TLB 重填、 xTLB 重填都会进入最后一个入口。
CP0 之 CAUSE 寄存器 ExcCode 位 (6:2) 。硬件设置,描述异常
原因。中断控制器有中断请求时, ExcCode 为 0 。
CP0 之 CAUSE 寄存器 IP 位 (15:8, IP7IP0) 。硬件设置,描述具
体中断来自哪个控制器,一般 IP5 置位表示 8259A 。
中断控制器的控制寄存器映射带地址空间,由 OS 读取 ISR ,获得
具体是那个硬件的请求,并响应之。
Sun Wah HiTech System Software Ltd.
- 27. 龙芯 2E 下 I/O 设备访问
在 x86 中, I/O 空间用专门的指令访问 (in, out) , PCI 设备的内
存空间和物理内存空间是相同。
龙芯下,则将 I/O 设备映射到地址空间,使用访存指令访问。 PCI
设备的地址空间和 CPU 所见的物理内存地址空间往往也不一样。
Sun Wah HiTech System Software Ltd.
- 28. 谢谢!
RISC Architecture
Sun Wah HiTech System Software Ltd.