《计算机系统结构》电子教案(课2).ppt

上传人:本田雅阁 文档编号:2091430 上传时间:2019-02-12 格式:PPT 页数:45 大小:406.01KB
返回 下载 相关 举报
《计算机系统结构》电子教案(课2).ppt_第1页
第1页 / 共45页
《计算机系统结构》电子教案(课2).ppt_第2页
第2页 / 共45页
《计算机系统结构》电子教案(课2).ppt_第3页
第3页 / 共45页
亲,该文档总共45页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《《计算机系统结构》电子教案(课2).ppt》由会员分享,可在线阅读,更多相关《《计算机系统结构》电子教案(课2).ppt(45页珍藏版)》请在三一文库上搜索。

1、2014.2.17,计算机系统结构,1,第2章 指令系统的设计,本章主要内容 (1) 指令操作码的优化(不讲) (2) RISC技术简介 (3) MIPS指令集 (4) MIPS模拟器(补充),2014.2.17,计算机系统结构,2,2.4.2 RISC技术简介(P44),名词:RISCReduced Instruction Set Computing,精简指令集计算机 (1)RISC产生的背景:20%与80%规律 (2)RISC设计的基本原则: 只设置最常用的简单指令,凡遇复杂操作均用多条简单指令实现; 指令长度固定,操作码与操作数长度都尽量统一; 基本指令的启动时间间隔降低到1个时钟周期;

2、 访问主存只有load和store指令,用变址寻址; 尽量采用硬连逻辑对指令译码; 为了加快执行速度,在编译过程中对目标代码结构进行优化; (3)RISC性能优势的原因 采用RISC技术的主要动机是使各条指令的执行时序尽可能一致,CPU在执行时间上可以把它们安排得更紧凑,就像许多大小相近的箱子容易被堆放得更密集一样。这样机器内的各种资源可以充分利用,单位时间内能执行更多的指令,速度更快。 这方面的具体内容,在第3章讲流水线时会详细介绍。,2014.2.17,计算机系统结构,3,2.4.2 RISC技术的发展,20世纪70年代初,IBM研究中心的John Cocke证明,计算机中约20%的指令承

3、担了80%的工作,1974年,他提出RISC的概念。 在RISC的早期研究中,加州大学伯克利分校(UC Berkeley)和斯坦福大学(Stanford)提出了许多有创见的新思想。伯克利率先在1982年完成了RISC I型32位芯片的设计,斯坦福大学则在John Hennessy(现任校长)带领下于1983年完成了第一个采用RISC理念的商用MIPS微处理器。 1984年Hennessy等人创建了MIPS计算机公司,1998年改名为MIPS技术公司(美普思科技公司,MIPS Technologies Inc),目前是美国最著名的芯片设计公司之一。MIPS技术公司本身不生产微处理器,它只设计高性

4、能工业级的32位和64位CPU的结构体系,并且向其它半导体公司提供使用其内核(IP)的授权,用于生产基于MIPS而又各具特色的微处理器。1999年MIPS技术公司发布了MIPS32和MIPS64架构标准。 MIPS的通用微处理器主要用于构建高性能工作站、服务器和超级计算机系统,其嵌入式产品在1999年以前全球销量第一,目前也仅次于ARM。,2014.2.17,计算机系统结构,4,MIPS处理器,MIPS的意思是“无内部互锁流水级的微处理器”(Microprocessor without interlocked piped stages),其机制是尽量利用软件办法避免流水线中的数据相关问题。 M

5、IPS具有强大的应用基础,能在MIPS上运行的操作系统,包括Linux、WindRiver、WinCE、GNU、和Monta Vista等;支持14种编译器,包括MIPS、SDE、Green Hills、GNU和WindRiver等;支持15种调试器,包括GNU、Green Hills、WindRiver、ASHLING和FS2等;支持18种仿真工具,包括Mentor Graphics、Synopsys、CoWare和Candence等。 中国科学院计算所的龙芯1和2都采用64位MIPS指令架构。中国龙芯已与MIPS公司合作,购买其指令系统授权,以便批量生产与出口。,2014.2.17,计算机

6、系统结构,5,2.6.1 MIPS的寄存器(P47),32个64位通用寄存器(GPRs),也称为整数寄存器 名称是R0,R1,R31(也可写为$0,$1,$31) R0的值永远是0,可用作源寄存器,也可作为无用结果的目的寄存器; R31用于存放跳转并链接类指令的返回地址。 32个64位浮点数寄存器(FPRs) F0,F1,F31 用来存放32个单精度浮点数(32位),也可以用来存放32个双精度浮点数(64位)。 存储单精度浮点数(32位)时,只用到FPR的一半,其另一半没用。 特殊功能寄存器 PC(program counter,程序计数寄存器) HI(整数乘除结果高位寄存器,除法余数) LO

7、(整数乘除结果低位寄存器,除法的商) 它们可以与通用寄存器交换数据。 浮点状态寄存器:用来保存有关浮点操作结果的信息。,2014.2.17,计算机系统结构,6,MIPS的寄存器别名(程序员习惯用法),MIPS编译器支持一些专业程序员对32个通用寄存器GPR(GENERAL PURPOSE REGISTER)约定的习惯性用法(非强制的): REGISTER NAME USAGE $0 $zero 常量0(constant value 0) $2-$3 $v0-$v1 函数调用返回值(values for results and expression evaluation) $4-$7 $a0-$

8、a3 函数调用参数(arguments) $8-$15 $t0-$t7 暂时的(或随便用的) $16-$23 $s0-$s7 保存的(或如果用,需要SAVE/RESTORE的)(saved) $24-$25 $t8-$t9 暂时的(或随便用的) $26-$27 $k0-$k1 由操作系统的异常或中断处理程序使用 $28 $gp 全局指针(Global Pointer) $29 $sp 堆栈指针(Stack Pointer) $30 $fp 帧指针(Frame Pointer) (BNN:fp is stale acutally, and can be simply used as $t8) $

9、31 $ra 返回地址(return address),2014.2.17,计算机系统结构,7,2.6.2 MIPS的数据表示,整数 字节(8位) 半字(16位) 字(32位) 双字(64位) 浮点数 单精度浮点数(32位) 双精度浮点数(64位) 字节、半字或者字在装入64位寄存器时,用零扩展或者用符号位扩展来填充该寄存器的剩余部分。装入以后,对它们将按照64位整数的方式进行运算。,2014.2.17,计算机系统结构,8,2.6.3 MIPS的数据寻址方式(P47),立即数寻址与偏移量寻址; 立即数字段和偏移量字段都是16位的。 寄存器间接寻址是通过把0作为偏移量来实现的; 16位绝对寻址是

10、通过把R0(其值永远为0)作为基址寄存器来完成的; MIPS的存储器按字节寻址,地址为64位; 所有存储器访问必须是边界对齐的,即访问地址必须是该数据长度(字节 数)的整倍数,又叫整数边界原则; MIPS的存储器按字节编制; 所有数据字、指令字从最高有效位开始依次标记为bit 0、1、2 ; MIPS处理器的存储顺序,可以设置为“小端字节表示顺序”( Littile- Endian,低位字节放在低地址)或者“大端字节表示顺序”(Big-Endian, 高位字节放在低地址,以便适合网络数据包内顺序)。在下文使用的 MIPS64模拟器中采用“小端字节表示顺序”。,2014.2.17,计算机系统结构

11、,9,2.6.4 MIPS指令格式(P48),MIPS32和MIPS64体系结构定义了兼容的32位和64位处理机指令 使用条件编译或宏汇编指令能写出可同时在MIPS32和MIPS64上运行的程序 寻址方式编码到操作码中 所有的指令都是32位的 操作码占6位 3种指令格式(3种格式中,同名字段的位置固定不变),2014.2.17,计算机系统结构,10,2.6.4 MIPS指令格式I类指令,包括所有的load和store指令,立即数指令,分支指令,寄存器跳转指令,寄存器链接跳转指令。 立即数字段为16位,用于提供立即数或偏移量。 load指令 访存有效地址:Regsrsimmediate 从存储器

12、取来的数据放入寄存器rt store指令 访存有效地址:Regsrsimmediate 要存入存储器的数据放在寄存器rt中 立即数指令 Regsrt Regsrs op immediate 分支指令 转移目标地址:Regsrsimmediate,rt无用 寄存器跳转、寄存器跳转并链接 转移目标地址为Regsrs,2014.2.17,计算机系统结构,11,2.6.4 MIPS指令格式R类指令,包括ALU指令,专用寄存器读/写指令,move指令等。 ALU指令 Regsrd Regsrs funct Regsrt funct为具体的运算操作编码,2014.2.17,计算机系统结构,12,2.6.4

13、 MIPS指令格式J类指令,包括跳转指令,跳转并链接指令,自陷指令,异常返回指令。 在这类指令中,指令字的低26位是偏移量,它与PC值相加形成跳转的地址。,2014.2.17,计算机系统结构,13,2.6.5 MIPS的操作(P49),MIPS指令可以分为四大类 load和store ALU操作 分支与跳转 浮点操作 符号的意义 xny:从y传送n位到x x,yz:把z传送到x和y 下标:表示字段中具体的位; 对于指令和数据,按从最高位到最低位(即从左到右)的顺序依次进行编号,最高位为第0位,次高位为第1位,依此类推。 下标可以是一个数字,也可以是一个范围。 例如:RegsR40:寄存器R4的

14、符号位 RegsR456-63:R4的最低字节,2014.2.17,计算机系统结构,14,2.6.5 MIPS的操作(续),Mem:表示主存; 按字节寻址,可以传输任意个字节。 上标:用于表示对字段进行复制的次数。 例如:032表示一个32位长的全0字段 符号#:用于两个字段的拼接,并且可以出现在数据传送的任何一边。 举例:R8、R6是64位的寄存器,下式 RegsR832-63 32(Mem RegsR60)24 # Mem RegsR6 表示的意义是:以R6的内容作为地址访问内存,得到的字节按符号位扩展为32位后存入R8的低32位,R8的高32位(即RegsR80-31)不变。,2014.

15、2.17,计算机系统结构,15,load和store指令,2014.2.17,计算机系统结构,16,ALU指令,寄存器寄存器型(RR型)指令或立即数型 算术和逻辑操作:加、减、与、或、异或和移位等 R0的值永远是0,它可以用来合成一些常用的操作。 例如:DADDIU R1,R0,#100 给寄存器R1装入常数100 DADD R1,R0,R2 把寄存器R2中的数据传送到寄存器R1,2014.2.17,计算机系统结构,17,2.6.6 MIPS的控制指令(P50),由一组跳转和一组分支指令来实现控制流的改变 典型的MIPS控制指令,2014.2.17,计算机系统结构,18,跳转指令,根据跳转指令

16、确定目标地址的方式不同以及跳转时是否链接,可以把跳转指令分成4种。 确定目标地址的方式 把指令中的26位偏移量左移2位(因为指令字长都是4个字节)后,替换程序计数器的低28位; 间接跳转:由指令中指定的一个寄存器来给出转移目标地址。 跳转的两种类型 简单跳转:把目标地址送入程序计数器。 跳转并链接:把目标地址送入程序计数器,把返回地址(即顺序下一条指令的地址)放入寄存器R31。,2014.2.17,计算机系统结构,19,分支指令(条件转移),分支条件由指令确定 例如:测试某个寄存器的值是否为零 提供一组比较指令,用于比较两个寄存器的值。 例如:“置小于”指令 有的分支指令可以直接判断寄存器内容

17、是否为负,或者比较两个寄存器是否相等。 分支的目标地址 由16位带符号偏移量左移两位后和PC相加的结果来决定 一条浮点条件分支指令:通过测试浮点状态寄存器来决定是否进行分支。,2014.2.17,计算机系统结构,20,2.6.7 MIPS的浮点操作(P51),由操作码指出操作数是单精度(SP)或双精度(DP) 后缀S:表示操作数是单精度浮点数 后缀D:表示是双精度浮点数 浮点操作 包括加、减、乘、除,分别有单精度和双精度指令。 浮点数比较指令 根据比较结果设置浮点状态寄存器中的某一位,以便于后面的分支指令BC1T(若真则分支)或BC1F(若假则分支)测试该位,以决定是否进行分支。,2014.2

18、.17,计算机系统结构,21,注意浮点数的存储格式只有64位双精度这一种,没有32位单精度数。,MIPS64伪指令,2014.2.17,计算机系统结构,22,MIPS64指令集1,2014.2.17,计算机系统结构,23,MIPS64指令集2,2014.2.17,计算机系统结构,24,MIPS64指令集3,2014.2.17,计算机系统结构,25,MIPS64指令集4,2014.2.17,计算机系统结构,26,MIPS64指令集5,2014.2.17,计算机系统结构,27,MIPS64指令集6,2014.2.17,计算机系统结构,28,MIPS64模拟器介绍1,2014.2.17,计算机系统结

19、构,29,MIPS64模拟器介绍2,2014.2.17,计算机系统结构,30,MIPS64模拟器介绍3,2014.2.17,计算机系统结构,31,MIPS64模拟器的存储器映射I/O地址与命令,CONTROL: .word32 0x10000 ;控制寄存器(映射地址) DATA: .word32 0x10008 ;数据寄存器(映射地址) Set CONTROL = 1, 将DATA作为无符号整型数输出 Set CONTROL = 2, 将DATA作为有符号整型数输出 Set CONTROL = 3, 将DATA作为浮点数输出 Set CONTROL = 4, 将DATA作为输出字串的首地址 S

20、et CONTROL = 5, 将DATA+5 作为x坐标,DATA+4作为y坐标,DATA作为RGB彩色值输出 Set CONTROL = 6, 清除终端屏幕 Set CONTROL = 7, 清除图形屏幕 Set CONTROL = 8, 从键盘读DATA(整型数或浮点数) Set CONTROL = 9, 从DATA读1字节,无字符回显,数据地址,0x00000,程序存储器,程序起点,lwu r24,DATA(r0),lwu r25,CONTROL(r0),指令地址,0x00000,数据存储器,常规数据区,0x10000,0x10008,sd r9,0(r24),sd r2,0(r25)

21、,控制寄存器,数据寄存器,仿真非智能终端,2014.2.17,计算机系统结构,32,MIPS64模拟器演示实验1 整数加法,文件名:sum.s .data A: .word 10 B: .word 8 C: .word 0 .text main: ld r4,A(r0) ;r4(A) ld r5,B(r0) ;r5(B) dadd r3,r4,r5 ;r3r4+r5 sd r3,C(r0) ;Cr3 halt,2014.2.17,计算机系统结构,33,MIPS64模拟器演示实验2 阶乘1,文件名:factorial.s ; ; 阶乘示例 ; 返回值放r10 ; .data number: .w

22、ord 10 ;此数未用,可能想作为输入值的上限 title: .asciiz “factorial program n= “ ;提示字符串 CONTROL: .word32 0x10000 DATA: .word32 0x10008 .text lwu r21,CONTROL(r0) ;r21指向CONTROL单元(端口) lwu r22,DATA(r0) ;r22指向DATA单元(端口),2014.2.17,计算机系统结构,34,MIPS64模拟器演示实验2 阶乘2,daddi r24,r0,4 ;输出ascii字串(提示信息) daddi r1,r0,title sd r1,(r22)

23、sd r24,(r21) daddi r24,r0,8 ;从键盘读输入值到r1(整型量) sd r24,(r21) ld r1,(r22) start: daddi r29,r0,0x80 ;r29指向堆栈区起点(十进制值=128) jal factorial ;调阶乘子程序,返回值在r10(整型量) daddi r24,r0,1 ;输出r10的结果 sd r10,(r22) sd r24,(r21) halt ;停机,2014.2.17,计算机系统结构,35,MIPS64模拟器演示实验2 阶乘3,; ;阶乘子程序,入口参数在r1,返回值在r10 ; factorial: slti r10,r

24、1,2 ;如果r12(即r1=1)则r101,否则r100 bnez r10,out ;如果r10=1则子程序返回 sd r31,(r29) ;子程序返回地址压进堆栈 daddi r29,r29,8 ;堆栈指针+8 sd r1,(r29) ;r1当前值压进堆栈 daddi r29,r29,8 ;堆栈指针+8 daddi r1,r1,-1 ;r1r11 jal factorial ;递归调用,将乘数序列依次入栈(n,3,2),2014.2.17,计算机系统结构,36,MIPS64模拟器演示实验2 阶乘4,dadd r4,r0,r10 ;递归出口(首次r10=1),r4r10 daddi r29,

25、r29,-8 ;堆栈指针8 ld r3,(r29) ;出栈:r3栈顶单元 dmulu r3,r3,r4 ;r3r3r4 dadd r10,r0,r3 ;r10乘积r3 daddi r29,r29,-8 ;堆栈指针8 ld r31,0(r29) ;r31返回地址 out: jr r31 ;子程序返回到r31所指的地址,2014.2.17,计算机系统结构,37,MIPS64模拟器演示实验3 存储器映射输出,文件名:output.s .data A: .word 10 B: .word 8 C: .word 0 CR: .word32 0x10000 DR: .word32 0x10008 .tex

26、t main: ld r4,A(r0) ;r4(A) ld r5,B(r0) ;r5(B) dadd r3,r4,r5 ;r3r4+r5 sd r3,C(r0) ;Cr3 lwu r1,CR(r0) ;r1指向Control寄存器 lwu r2,DR(r0) ;r2指向Data寄存器 daddi r10,r0,1 ;准备命令1(将DATA作为无符号整型数输出) sd r3,(r2) ;Data寄存器r3 sd r10,(r1) ;Control寄存器1 halt,2014.2.17,计算机系统结构,38,MIPS64模拟器演示实验4存储器映射输入/输出,数据地址,0x00000,程序存储器,程

27、序起点,lwu r24,DATA(r0),lwu r25,CONTROL(r0),指令地址,0x00000,数据存储器,常规数据区,0x10000,0x10008,sd r9,0(r24),sd r2,0(r25),控制寄存器,数据寄存器,仿真非智能终端,文件名:testio.s 向虚拟终端输出字符串(命令4)、画线、画彩色点(命令5)。 CONTROL: .word32 0x10000 DATA: .word32 0x10008 .text lwu $t8,DATA($zero) ; $t8 = address of DATA register lwu $t9,CONTROL($zero)

28、; $t9 = address of CONTROL register daddi $v0,$zero,1 ; set for unsigned integer output ld $t1,int($zero) sd $t1,0($t8) ; write integer to DATA register sd $v0,0($t9) ; write to CONTROL register and make it happen daddi $v0,$zero,2 ; set for signed integer output ld $t1,int($zero) sd $t1,0($t8) ; wr

29、ite integer to DATA register sd $v0,0($t9) ; write to CONTROL register and make it happen,2014.2.17,计算机系统结构,39,习题2.14(补充,MIPS64指令系统练习),人工模拟以下MIPS程序的单条指令运行方式,在表中用16进制编码记录每一步产生的结果(不得借助模拟软件)。 .data n: .word 3 x: .double 0.5 .text LD R1, n(R0) L.D F0, x(R0) DADDI R2, R0, 1 ; R2 1 MTC1 R2, F11 ; F11 1 CV

30、T.D.L F2, F11 ; F2 1 loop: MUL.D F2, F2, F0 ; F2 F2*F0 DADDI R1, R1, -1 ; decrement R1 by 1 BNEZ R1, loop ; if R10 continue HALT ; 此条不填表 提示:MIPS浮点数的格式是IEEE754,2014.2.17,计算机系统结构,40,习题2.14(补充)续,2014.2.17,计算机系统结构,41,实验1:WinMIPS64模拟器练习,实验要求:用MIPS64指令编写一个尽可能短小的程序,将事先存放在数据区的4字节字符串(例如“3901”)转换为一个4位BCD整数,赋给

31、R9。在WinMIPS64模拟器调试通过。 实验报告: (1) 程序清单; (2) 运行结果(每轮循环末尾R9的数值,高位的0可以不写) (3) 程序效率,2014.2.17,计算机系统结构,42,IEEE 754浮点数标准(补充),目前国际上流行的浮点数标准是IEEE 754,其基本组成是32bit单精度、64bit双精度两种类型。 IEEE 754标准的主要起草者是加州大学伯克利分校数学系教授William Kahan,他帮助Intel公司设计了8087浮点处理器(FPU),并以此为基础形成了IEEE 754标准,Kahan教授也因此获得了1987年的图灵奖。目前几乎所有包含浮点运算的处理

32、机都宣称支持IEEE 754标准,包括Intel公司的Pentium、中国的“龙芯”。 IEEE 754的标准文件是ANSI/IEEE Std 754-1985IEEE Standard for Binary Floating-Point Arithmetic,通过Google可搜到pdf文件下载。 Kahan教授的主页:http:/www.cs.berkeley.edu/wkahan/。,2014.2.17,计算机系统结构,43,在IEEE 754浮点数国际标准中,32位单精度浮点数和64位双精度浮点数的格式分别如下: 对于单精度浮点数,阶码用移-127码表示,即阶码的0255分别表示阶码的

33、真值为-127128。尾数(原码)用1位符号位、23位小数和1位隐藏的整数共25位表示。尾数的基值和阶码的基值都是2。 当0e255时,表示一个非零的规格化浮点数,数值为: N=(-1)s2e-127(1.m),IEEE 754浮点数标准(续1),2014.2.17,计算机系统结构,44,IEEE 754浮点数标准(续2),当e=255,且m0时,表示一个非数NaN(Not-a-Number)。NaN可能是在许多非确定的情况下,如零除以零、求负数的平方根等产生的结果。 当e=255,且m=0时,表示一个无穷数:N=(-1)s。注意+和-的表示是不同的。 当e=0,且m0时,表示规格化浮点数:N=(-1)s2-126(0.m)。 当e=0,且m=0时,表示浮点数零:N=(-1)s0。注意+0与-0的表示是不同的。 对于64位双精度浮点数,阶码用移-1023码表示,其他规定与单精度浮点数类似。,2014.2.17,计算机系统结构,45,各次作业应交的内容,作业2(第2次课),2.14(补充),实验1,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1