SlideShare a Scribd company logo
1 of 28
龙芯 2E 体系
 结构概述


currentversion: 0.3


comcat <jiankemeng@gmail.com>


Sun Wah Hi­Tech System Software Ltd.
主要内容


    微体系结构

    指令集

    存储管理

    中断异常

    I/O 操作




             Sun Wah Hi­Tech System Software Ltd.
总述


    龙芯处理器主要包括三个系列。龙芯 1 号系列主要面向嵌入
    式应用,龙芯 2 号超标量处理器系列主要面向桌面应用,龙
    芯 3 号多核处理器系列主要面向服务器和高性能机应用。


    龙芯 2E 处理器是 64 位、兼容 MIPS III  指令集的通用 RISC 
    处理器。




                  Sun Wah Hi­Tech System Software Ltd.
微体系结构




Sun Wah Hi­Tech System Software Ltd.
龙芯 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 时功耗为 5­7W



                         Sun Wah Hi­Tech System Software Ltd.
龙芯 2E 微体系结构

    4 发射超标量结构, 9 级乱序执行流水线。分别为取指、预译码、译码、寄存器
    重命名、调度、发射、读寄存器、执行、提交。


    每个时钟周期取四条指令进行译码,动态地发射到五个全流水功能部件中。


    采用动态调度、寄存器重命名、转移预测技术以及激进的存储系统设计来提高流
    水线效率


    指令乱序执行但指令的提交还是按原来顺序,以保证精确中断和访存顺序执行




                Sun Wah Hi­Tech System Software Ltd.
提交
                                                             五个全流水部件





    必


                                           读寄
                          调度        发射
                                           存器




                                保留           寄存
                                 站           器堆

         预译码
                    寄存器
    取指   转移预   译码                                                 执行
                    重命名
          测


                           Sun Wah Hi­Tech System Software Ltd.
Pentium IV 微体系结构

    20 级流水线 ( 超流水),目标为获得更高的时钟频率


    3 发射超标量、乱序执行核心


    指令被取后(每次从 L2 取 64 位),首先顺序经过唯一的译码部件(每周期一条
    指令)转成定长微操作 (uop) ,然后以每周期 3 条微操作的速度进入乱序执行核
    心,提交亦是顺序提交。


    高级动态调度、寄存器重命名、转移预测(预测失败代价大)


    快速执行引擎。 2 个整数 ALU 以时钟频率的 2 倍速度运行


    七个全流水部件 (P III 为 5 个)




                      Sun Wah Hi­Tech System Software Ltd.
Pentium IV 微体系结构



     Pentium IV 20-stage pipeline




                    Sun Wah Hi­Tech System Software Ltd.
Pentium IV 微体系结构

                   Sun Wah Hi­Tech System Software Ltd.
指令集结构 (ISA)




Sun Wah Hi­Tech System Software Ltd.
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 Hi­Tech System Software Ltd.
龙芯指令集

    龙芯 2E 的指令集由 MIPS III   加上自定义的指令组成。可以分为:访存
    指令、计算指令、跳转和分支指令以及协处理器指令 ( 用于操控协处理
    器,完成内存管理、异常处理、浮点运算、多媒体运算等 ) 。取每类典
    型指令,陈述如下:


    访存指令: lb, sb, lh, sh, lw, sw, ld, sd  (byte, half­word, word, 
    double­word)


    计算指令: add, sub, mult, div, and, or,  sll, srl, slt...


    跳转分支指令: j, jr, jal, beq, bne...




                            Sun Wah Hi­Tech System Software Ltd.
龙芯指令集 (MIPS III) 特点

    指令总数较 x86 要少


    没有 push , pop 等栈操作指令


    没有 movs, lods 等字符串操作指令


    对过程调用的支持方面,没有 ret 指令 , jal/jalr 对应于
    call


    总而言之,龙芯的指令集较 x86 精简的多,便于理解、记
    忆,是个相对容易实现的指令集。



                Sun Wah Hi­Tech System Software Ltd.
访存方式


    龙芯要求操作数总在寄存器中。访存必须使用访存指
    令,且寻址方式简单。这种精简的结构,是为
    load/store 系统结构。


    x86 可以具有功能强大的寻址方式,其中一个操作数可
    以位于存储器中,是为 register/memory 系统结构。




               Sun Wah Hi­Tech System Software Ltd.
指令的内部编码(机器码)

     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 Hi­Tech System Software Ltd.
                                                        间。
寄存器


    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 Hi­Tech System Software Ltd.
龙芯 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 Hi­Tech System Software Ltd.
综述

    龙芯具有简单的寻址模式、数量少的指令、固定长度的指令编
    码、大量的通用寄存器,是个典型的 RISC ( Reduced 
    Instruction Set Computer )系统结构。这种结构的原则是:通
    过指令流水线获得高性能,易于用硬件实现,与高度优化的编译
    器的集合提高性能。


    x86 是个典型的 CISC ( Complex Instruction Set Computer )
    结构,特点也很明显:功能强大的寻址模式和指令、高效的指令
    编码、较少的寄存器。其设计原则为:简化编译器,减少执行代
    码的长度。



                     Sun Wah Hi­Tech System Software Ltd.
存储管理




Sun Wah Hi­Tech System Software Ltd.
龙芯 2E 存储管理部件


    具有一个功能完备的存储管理单元 (MMU)


    TLB(Translation Lookaside Buffer): 64 项,每项映射 2 页,全相
    联结构


    TLB 的软件接口:系统协处理器 (CP0) 寄存器,与存储管理相关的
    具有 12 个




                     Sun Wah Hi­Tech System Software Ltd.
龙芯 2E 下存储管理


    龙芯是个典型的 RISC 结构。 RISC 的哲学是简化硬件设计,让 OS
    承担更多的工作。


    MMU 做事很少, TLB 必需由 OS 来维护。


    龙芯的一二级 cache 亦要 OS 来维护其一致性


    另外与 x86 的差别在于,其没有复杂的内存管理模式,没有段的
    概念。龙芯仅使用页的概念,支持现代虚拟内存系统,页大小可
    以是 4KB~16MB ,但必须是 4 的倍数。龙芯具有 3 种运行级别,
    分别为:内核模式、管理模式和用户模式。


                 Sun Wah Hi­Tech System Software Ltd.
中断和异常




Sun Wah Hi­Tech System Software Ltd.
龙芯 2E 对中断和异常的支持


 
     五个固定异常入口,非冷启动、热重启、非屏蔽中断、 cache 错
     误、 TLB 重填、 xTLB 重填都会进入最后一个入口。

 
     CP0 之 CAUSE 寄存器 ExcCode 位 (6:2) 。硬件设置,描述异常
     原因。中断控制器有中断请求时, ExcCode  为 0 。

 
     CP0 之 CAUSE 寄存器 IP 位 (15:8, IP7­IP0) 。硬件设置,描述具
     体中断来自哪个控制器,一般 IP5 置位表示 8259A 。

 
     中断控制器的控制寄存器映射带地址空间,由 OS 读取 ISR ,获得
     具体是那个硬件的请求,并响应之。

                     Sun Wah Hi­Tech System Software Ltd.
结合 OS 龙芯中断异常处理结构




           Sun Wah Hi­Tech System Software Ltd.
I/O 访问




Sun Wah Hi­Tech System Software Ltd.
龙芯 2E 下 I/O 设备访问


    在 x86 中, I/O 空间用专门的指令访问 (in, out) , PCI 设备的内
    存空间和物理内存空间是相同。


    龙芯下,则将 I/O 设备映射到地址空间,使用访存指令访问。 PCI
    设备的地址空间和 CPU 所见的物理内存地址空间往往也不一样。




                   Sun Wah Hi­Tech System Software Ltd.
谢谢!
             RISC Architecture




Sun Wah Hi­Tech System Software Ltd.

More Related Content

What's hot

[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)Simen Li
 
Device Driver - Chapter 6字元驅動程式的進階作業
Device Driver - Chapter 6字元驅動程式的進階作業Device Driver - Chapter 6字元驅動程式的進階作業
Device Driver - Chapter 6字元驅動程式的進階作業ZongYing Lyu
 
[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware
[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware
[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack FirmwareSimen Li
 
Device Driver - Chapter 3字元驅動程式
Device Driver - Chapter 3字元驅動程式Device Driver - Chapter 3字元驅動程式
Device Driver - Chapter 3字元驅動程式ZongYing Lyu
 
認識 RoBoard 硬體
認識 RoBoard 硬體認識 RoBoard 硬體
認識 RoBoard 硬體roboard
 
RoBoard 與 Lego NXT Sensors 之連接
RoBoard 與 Lego NXT Sensors 之連接RoBoard 與 Lego NXT Sensors 之連接
RoBoard 與 Lego NXT Sensors 之連接roboard
 
嵌入式inux應用專題文件-智慧家庭系統
嵌入式inux應用專題文件-智慧家庭系統嵌入式inux應用專題文件-智慧家庭系統
嵌入式inux應用專題文件-智慧家庭系統艾鍗科技
 
86Duino 小六足機器人 DIY 課程教材
86Duino 小六足機器人 DIY 課程教材86Duino 小六足機器人 DIY 課程教材
86Duino 小六足機器人 DIY 課程教材roboard
 
Arduino 與 raspberry pi 硬體差異與應用
Arduino 與  raspberry pi 硬體差異與應用Arduino 與  raspberry pi 硬體差異與應用
Arduino 與 raspberry pi 硬體差異與應用Marcus Pek
 
第6章 输入输出技术
第6章 输入输出技术第6章 输入输出技术
第6章 输入输出技术jugn
 
Monitouch Express Vol12
Monitouch Express Vol12Monitouch Express Vol12
Monitouch Express Vol12monitouch
 
Raspberry pi 基本操作
Raspberry pi 基本操作Raspberry pi 基本操作
Raspberry pi 基本操作艾鍗科技
 
ch13-pv1-system-calls
ch13-pv1-system-callsch13-pv1-system-calls
ch13-pv1-system-callsyushiang fu
 
Robotis Servo 與 RoBoard 之連接介面
Robotis Servo 與 RoBoard 之連接介面Robotis Servo 與 RoBoard 之連接介面
Robotis Servo 與 RoBoard 之連接介面roboard
 
使用 Arduino 控制 ESP8266 的各種方式
使用 Arduino 控制 ESP8266 的各種方式使用 Arduino 控制 ESP8266 的各種方式
使用 Arduino 控制 ESP8266 的各種方式Kenson Chiang
 
Oprofile linux
Oprofile linuxOprofile linux
Oprofile linuxFeng Yu
 

What's hot (20)

19 cpu03
19 cpu0319 cpu03
19 cpu03
 
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)
 
Device Driver - Chapter 6字元驅動程式的進階作業
Device Driver - Chapter 6字元驅動程式的進階作業Device Driver - Chapter 6字元驅動程式的進階作業
Device Driver - Chapter 6字元驅動程式的進階作業
 
[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware
[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware
[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware
 
Device Driver - Chapter 3字元驅動程式
Device Driver - Chapter 3字元驅動程式Device Driver - Chapter 3字元驅動程式
Device Driver - Chapter 3字元驅動程式
 
認識 RoBoard 硬體
認識 RoBoard 硬體認識 RoBoard 硬體
認識 RoBoard 硬體
 
RoBoard 與 Lego NXT Sensors 之連接
RoBoard 與 Lego NXT Sensors 之連接RoBoard 與 Lego NXT Sensors 之連接
RoBoard 與 Lego NXT Sensors 之連接
 
嵌入式inux應用專題文件-智慧家庭系統
嵌入式inux應用專題文件-智慧家庭系統嵌入式inux應用專題文件-智慧家庭系統
嵌入式inux應用專題文件-智慧家庭系統
 
86Duino 小六足機器人 DIY 課程教材
86Duino 小六足機器人 DIY 課程教材86Duino 小六足機器人 DIY 課程教材
86Duino 小六足機器人 DIY 課程教材
 
Ipaq with linux
Ipaq with linuxIpaq with linux
Ipaq with linux
 
Arduino 與 raspberry pi 硬體差異與應用
Arduino 與  raspberry pi 硬體差異與應用Arduino 與  raspberry pi 硬體差異與應用
Arduino 與 raspberry pi 硬體差異與應用
 
第6章 输入输出技术
第6章 输入输出技术第6章 输入输出技术
第6章 输入输出技术
 
Project gps
Project gpsProject gps
Project gps
 
Monitouch Express Vol12
Monitouch Express Vol12Monitouch Express Vol12
Monitouch Express Vol12
 
Raspberry pi 基本操作
Raspberry pi 基本操作Raspberry pi 基本操作
Raspberry pi 基本操作
 
ch13-pv1-system-calls
ch13-pv1-system-callsch13-pv1-system-calls
ch13-pv1-system-calls
 
ch7-pv1-modules
ch7-pv1-modulesch7-pv1-modules
ch7-pv1-modules
 
Robotis Servo 與 RoBoard 之連接介面
Robotis Servo 與 RoBoard 之連接介面Robotis Servo 與 RoBoard 之連接介面
Robotis Servo 與 RoBoard 之連接介面
 
使用 Arduino 控制 ESP8266 的各種方式
使用 Arduino 控制 ESP8266 的各種方式使用 Arduino 控制 ESP8266 的各種方式
使用 Arduino 控制 ESP8266 的各種方式
 
Oprofile linux
Oprofile linuxOprofile linux
Oprofile linux
 

Viewers also liked

20 Intriguing Marketing Trends That Will Impact 2014
20 Intriguing Marketing Trends That Will Impact 201420 Intriguing Marketing Trends That Will Impact 2014
20 Intriguing Marketing Trends That Will Impact 2014Mark Quest
 
Media studies evaluation pt.2
Media studies evaluation pt.2Media studies evaluation pt.2
Media studies evaluation pt.2georgehoward274
 
Nolan Jewell- Social Media Resume
Nolan Jewell- Social Media ResumeNolan Jewell- Social Media Resume
Nolan Jewell- Social Media Resumenolanjewell
 
Media studies evaluation pt.1
Media studies evaluation pt.1Media studies evaluation pt.1
Media studies evaluation pt.1georgehoward274
 
Formato sugerido diapositivas_sustentacion_t. grado (1) (1) (1)
Formato sugerido diapositivas_sustentacion_t. grado (1) (1) (1)Formato sugerido diapositivas_sustentacion_t. grado (1) (1) (1)
Formato sugerido diapositivas_sustentacion_t. grado (1) (1) (1)siscormas
 
Evaluation Question 4
Evaluation Question 4Evaluation Question 4
Evaluation Question 4Zaksta
 
Social media presentation
Social media presentationSocial media presentation
Social media presentationmorganbrownlee
 
『JUnit実践入門』写経・実践会 in 横浜 #2
『JUnit実践入門』写経・実践会 in 横浜 #2『JUnit実践入門』写経・実践会 in 横浜 #2
『JUnit実践入門』写経・実践会 in 横浜 #2shinyaa31
 
『JUnit実践入門』写経・実践会 in 横浜 #3
『JUnit実践入門』写経・実践会 in 横浜 #3『JUnit実践入門』写経・実践会 in 横浜 #3
『JUnit実践入門』写経・実践会 in 横浜 #3shinyaa31
 
Family Communication Collage
Family Communication CollageFamily Communication Collage
Family Communication Collagemorganbrownlee
 
『JUnit実践入門』写経・実践会 in 横浜 #6 (特別編) #junitbook
『JUnit実践入門』写経・実践会 in 横浜 #6 (特別編) #junitbook『JUnit実践入門』写経・実践会 in 横浜 #6 (特別編) #junitbook
『JUnit実践入門』写経・実践会 in 横浜 #6 (特別編) #junitbookshinyaa31
 
2013.12.10 Classmethod re:Grwoth
2013.12.10 Classmethod re:Grwoth2013.12.10 Classmethod re:Grwoth
2013.12.10 Classmethod re:Grwothshinyaa31
 
『JUnit実践入門』写経・実践会 in 横浜 #4
『JUnit実践入門』写経・実践会 in 横浜 #4『JUnit実践入門』写経・実践会 in 横浜 #4
『JUnit実践入門』写経・実践会 in 横浜 #4shinyaa31
 
Gender roles in the family
Gender roles in the familyGender roles in the family
Gender roles in the familymorganbrownlee
 

Viewers also liked (17)

20 Intriguing Marketing Trends That Will Impact 2014
20 Intriguing Marketing Trends That Will Impact 201420 Intriguing Marketing Trends That Will Impact 2014
20 Intriguing Marketing Trends That Will Impact 2014
 
Эссе
ЭссеЭссе
Эссе
 
Republica presidencial
Republica presidencialRepublica presidencial
Republica presidencial
 
tesis
tesis tesis
tesis
 
Media studies evaluation pt.2
Media studies evaluation pt.2Media studies evaluation pt.2
Media studies evaluation pt.2
 
Nolan Jewell- Social Media Resume
Nolan Jewell- Social Media ResumeNolan Jewell- Social Media Resume
Nolan Jewell- Social Media Resume
 
Media studies evaluation pt.1
Media studies evaluation pt.1Media studies evaluation pt.1
Media studies evaluation pt.1
 
Formato sugerido diapositivas_sustentacion_t. grado (1) (1) (1)
Formato sugerido diapositivas_sustentacion_t. grado (1) (1) (1)Formato sugerido diapositivas_sustentacion_t. grado (1) (1) (1)
Formato sugerido diapositivas_sustentacion_t. grado (1) (1) (1)
 
Evaluation Question 4
Evaluation Question 4Evaluation Question 4
Evaluation Question 4
 
Social media presentation
Social media presentationSocial media presentation
Social media presentation
 
『JUnit実践入門』写経・実践会 in 横浜 #2
『JUnit実践入門』写経・実践会 in 横浜 #2『JUnit実践入門』写経・実践会 in 横浜 #2
『JUnit実践入門』写経・実践会 in 横浜 #2
 
『JUnit実践入門』写経・実践会 in 横浜 #3
『JUnit実践入門』写経・実践会 in 横浜 #3『JUnit実践入門』写経・実践会 in 横浜 #3
『JUnit実践入門』写経・実践会 in 横浜 #3
 
Family Communication Collage
Family Communication CollageFamily Communication Collage
Family Communication Collage
 
『JUnit実践入門』写経・実践会 in 横浜 #6 (特別編) #junitbook
『JUnit実践入門』写経・実践会 in 横浜 #6 (特別編) #junitbook『JUnit実践入門』写経・実践会 in 横浜 #6 (特別編) #junitbook
『JUnit実践入門』写経・実践会 in 横浜 #6 (特別編) #junitbook
 
2013.12.10 Classmethod re:Grwoth
2013.12.10 Classmethod re:Grwoth2013.12.10 Classmethod re:Grwoth
2013.12.10 Classmethod re:Grwoth
 
『JUnit実践入門』写経・実践会 in 横浜 #4
『JUnit実践入門』写経・実践会 in 横浜 #4『JUnit実践入門』写経・実践会 in 横浜 #4
『JUnit実践入門』写経・実践会 in 横浜 #4
 
Gender roles in the family
Gender roles in the familyGender roles in the family
Gender roles in the family
 

Similar to Godson x86

Erlang Optimize
Erlang OptimizeErlang Optimize
Erlang OptimizeFeng Yu
 
Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)ykdsg
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)FLASH开发者交流会
 
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)Shanda innovation institute
 
Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络lovingprince58
 
Install Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 LInstall Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 Lheima911
 
Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化Harvey Zhang
 
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOsc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOpenSourceCamp
 
基于嵌入式系统的Avs P10编码系统设计
基于嵌入式系统的Avs P10编码系统设计基于嵌入式系统的Avs P10编码系统设计
基于嵌入式系统的Avs P10编码系统设计Hengyi
 
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure National Cheng Kung University
 
Tiny6410um hw-20101026
Tiny6410um hw-20101026Tiny6410um hw-20101026
Tiny6410um hw-20101026syed_sifa
 
我对后端优化的一点想法
我对后端优化的一点想法我对后端优化的一点想法
我对后端优化的一点想法mysqlops
 
单片机原理与应用
单片机原理与应用单片机原理与应用
单片机原理与应用greentask
 
實作 Linux Driver 移植在樹莓 Pi 上:Linux One wire sensor & I2C framebuffer Driver Po...
實作 Linux Driver 移植在樹莓 Pi 上:Linux  One wire sensor & I2C framebuffer Driver Po...實作 Linux Driver 移植在樹莓 Pi 上:Linux  One wire sensor & I2C framebuffer Driver Po...
實作 Linux Driver 移植在樹莓 Pi 上:Linux One wire sensor & I2C framebuffer Driver Po...IttrainingIttraining
 
[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階Simen Li
 
分会场二Storage foundation 中的多通道技术
分会场二Storage foundation 中的多通道技术分会场二Storage foundation 中的多通道技术
分会场二Storage foundation 中的多通道技术ITband
 
Raspberry Pi 智能風扇
Raspberry Pi 智能風扇Raspberry Pi 智能風扇
Raspberry Pi 智能風扇艾鍗科技
 

Similar to Godson x86 (20)

17 cpu01
17 cpu0117 cpu01
17 cpu01
 
Erlang Optimize
Erlang OptimizeErlang Optimize
Erlang Optimize
 
Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)
 
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
 
Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络Linux性能监控cpu内存io网络
Linux性能监控cpu内存io网络
 
Install Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 LInstall Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 L
 
Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化
 
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOsc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresql
 
基于嵌入式系统的Avs P10编码系统设计
基于嵌入式系统的Avs P10编码系统设计基于嵌入式系统的Avs P10编码系统设计
基于嵌入式系统的Avs P10编码系统设计
 
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
 
20 cpu04
20 cpu0420 cpu04
20 cpu04
 
Tiny6410um hw-20101026
Tiny6410um hw-20101026Tiny6410um hw-20101026
Tiny6410um hw-20101026
 
我对后端优化的一点想法
我对后端优化的一点想法我对后端优化的一点想法
我对后端优化的一点想法
 
单片机原理与应用
单片机原理与应用单片机原理与应用
单片机原理与应用
 
Develop Your Own Operating System
Develop Your Own Operating SystemDevelop Your Own Operating System
Develop Your Own Operating System
 
實作 Linux Driver 移植在樹莓 Pi 上:Linux One wire sensor & I2C framebuffer Driver Po...
實作 Linux Driver 移植在樹莓 Pi 上:Linux  One wire sensor & I2C framebuffer Driver Po...實作 Linux Driver 移植在樹莓 Pi 上:Linux  One wire sensor & I2C framebuffer Driver Po...
實作 Linux Driver 移植在樹莓 Pi 上:Linux One wire sensor & I2C framebuffer Driver Po...
 
[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階
 
分会场二Storage foundation 中的多通道技术
分会场二Storage foundation 中的多通道技术分会场二Storage foundation 中的多通道技术
分会场二Storage foundation 中的多通道技术
 
Raspberry Pi 智能風扇
Raspberry Pi 智能風扇Raspberry Pi 智能風扇
Raspberry Pi 智能風扇
 

Godson x86

  • 1. 龙芯 2E 体系 结构概述 currentversion: 0.3 comcat <jiankemeng@gmail.com> Sun Wah Hi­Tech System Software Ltd.
  • 2. 主要内容  微体系结构  指令集  存储管理  中断异常  I/O 操作 Sun Wah Hi­Tech System Software Ltd.
  • 3. 总述  龙芯处理器主要包括三个系列。龙芯 1 号系列主要面向嵌入 式应用,龙芯 2 号超标量处理器系列主要面向桌面应用,龙 芯 3 号多核处理器系列主要面向服务器和高性能机应用。  龙芯 2E 处理器是 64 位、兼容 MIPS III  指令集的通用 RISC  处理器。 Sun Wah Hi­Tech 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 时功耗为 5­7W Sun Wah Hi­Tech System Software Ltd.
  • 6. 龙芯 2E 微体系结构  4 发射超标量结构, 9 级乱序执行流水线。分别为取指、预译码、译码、寄存器 重命名、调度、发射、读寄存器、执行、提交。  每个时钟周期取四条指令进行译码,动态地发射到五个全流水功能部件中。  采用动态调度、寄存器重命名、转移预测技术以及激进的存储系统设计来提高流 水线效率  指令乱序执行但指令的提交还是按原来顺序,以保证精确中断和访存顺序执行 Sun Wah Hi­Tech System Software Ltd.
  • 7. 提交 五个全流水部件  必 读寄 调度 发射 存器 保留 寄存 站 器堆 预译码 寄存器 取指 转移预 译码 执行 重命名 测 Sun Wah Hi­Tech System Software Ltd.
  • 8. Pentium IV 微体系结构  20 级流水线 ( 超流水),目标为获得更高的时钟频率  3 发射超标量、乱序执行核心  指令被取后(每次从 L2 取 64 位),首先顺序经过唯一的译码部件(每周期一条 指令)转成定长微操作 (uop) ,然后以每周期 3 条微操作的速度进入乱序执行核 心,提交亦是顺序提交。  高级动态调度、寄存器重命名、转移预测(预测失败代价大)  快速执行引擎。 2 个整数 ALU 以时钟频率的 2 倍速度运行  七个全流水部件 (P III 为 5 个) Sun Wah Hi­Tech System Software Ltd.
  • 9. Pentium IV 微体系结构 Pentium IV 20-stage pipeline Sun Wah Hi­Tech System Software Ltd.
  • 10. Pentium IV 微体系结构 Sun Wah Hi­Tech 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 Hi­Tech System Software Ltd.
  • 13. 龙芯指令集  龙芯 2E 的指令集由 MIPS III   加上自定义的指令组成。可以分为:访存 指令、计算指令、跳转和分支指令以及协处理器指令 ( 用于操控协处理 器,完成内存管理、异常处理、浮点运算、多媒体运算等 ) 。取每类典 型指令,陈述如下:  访存指令: lb, sb, lh, sh, lw, sw, ld, sd  (byte, half­word, word,  double­word)  计算指令: add, sub, mult, div, and, or,  sll, srl, slt...  跳转分支指令: j, jr, jal, beq, bne... Sun Wah Hi­Tech System Software Ltd.
  • 14. 龙芯指令集 (MIPS III) 特点  指令总数较 x86 要少  没有 push , pop 等栈操作指令  没有 movs, lods 等字符串操作指令  对过程调用的支持方面,没有 ret 指令 , jal/jalr 对应于 call  总而言之,龙芯的指令集较 x86 精简的多,便于理解、记 忆,是个相对容易实现的指令集。 Sun Wah Hi­Tech System Software Ltd.
  • 15. 访存方式  龙芯要求操作数总在寄存器中。访存必须使用访存指 令,且寻址方式简单。这种精简的结构,是为 load/store 系统结构。  x86 可以具有功能强大的寻址方式,其中一个操作数可 以位于存储器中,是为 register/memory 系统结构。 Sun Wah Hi­Tech 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 Hi­Tech 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 Hi­Tech 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 Hi­Tech System Software Ltd.
  • 19. 综述  龙芯具有简单的寻址模式、数量少的指令、固定长度的指令编 码、大量的通用寄存器,是个典型的 RISC ( Reduced  Instruction Set Computer )系统结构。这种结构的原则是:通 过指令流水线获得高性能,易于用硬件实现,与高度优化的编译 器的集合提高性能。  x86 是个典型的 CISC ( Complex Instruction Set Computer ) 结构,特点也很明显:功能强大的寻址模式和指令、高效的指令 编码、较少的寄存器。其设计原则为:简化编译器,减少执行代 码的长度。 Sun Wah Hi­Tech System Software Ltd.
  • 21. 龙芯 2E 存储管理部件  具有一个功能完备的存储管理单元 (MMU)  TLB(Translation Lookaside Buffer): 64 项,每项映射 2 页,全相 联结构  TLB 的软件接口:系统协处理器 (CP0) 寄存器,与存储管理相关的 具有 12 个 Sun Wah Hi­Tech System Software Ltd.
  • 22. 龙芯 2E 下存储管理  龙芯是个典型的 RISC 结构。 RISC 的哲学是简化硬件设计,让 OS 承担更多的工作。  MMU 做事很少, TLB 必需由 OS 来维护。  龙芯的一二级 cache 亦要 OS 来维护其一致性  另外与 x86 的差别在于,其没有复杂的内存管理模式,没有段的 概念。龙芯仅使用页的概念,支持现代虚拟内存系统,页大小可 以是 4KB~16MB ,但必须是 4 的倍数。龙芯具有 3 种运行级别, 分别为:内核模式、管理模式和用户模式。 Sun Wah Hi­Tech System Software Ltd.
  • 24. 龙芯 2E 对中断和异常的支持  五个固定异常入口,非冷启动、热重启、非屏蔽中断、 cache 错 误、 TLB 重填、 xTLB 重填都会进入最后一个入口。  CP0 之 CAUSE 寄存器 ExcCode 位 (6:2) 。硬件设置,描述异常 原因。中断控制器有中断请求时, ExcCode  为 0 。  CP0 之 CAUSE 寄存器 IP 位 (15:8, IP7­IP0) 。硬件设置,描述具 体中断来自哪个控制器,一般 IP5 置位表示 8259A 。  中断控制器的控制寄存器映射带地址空间,由 OS 读取 ISR ,获得 具体是那个硬件的请求,并响应之。 Sun Wah Hi­Tech System Software Ltd.
  • 25. 结合 OS 龙芯中断异常处理结构 Sun Wah Hi­Tech System Software Ltd.
  • 27. 龙芯 2E 下 I/O 设备访问  在 x86 中, I/O 空间用专门的指令访问 (in, out) , PCI 设备的内 存空间和物理内存空间是相同。  龙芯下,则将 I/O 设备映射到地址空间,使用访存指令访问。 PCI 设备的地址空间和 CPU 所见的物理内存地址空间往往也不一样。 Sun Wah Hi­Tech System Software Ltd.
  • 28. 谢谢! RISC Architecture Sun Wah Hi­Tech System Software Ltd.