指令集结构及其设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

11
Computer Architecture Spring 2016
指令数量比较
• 分别采用四种指令集实现同样的功能 (C = A + B),其指令代码序 列的比较
Register (register-memory)
Load R1,A Add R1,B Store C, R1
Stack
Push A Push B Add Pop C
General Purpose Register Machines Complex Instruction Sets (Vax, Intel 432 1977-80) CISC (Intel x86 1980-199x) Load/Store Architecture (CDC 6600, Cray 1 1963-76) RISC (Mips,Sparc,HP-PA,IBM RS6000,PowerPC 1987)
23
temporary (cont’d)
指令集作用和设计考量
• 重要作用: 反映计算机的基本功能,软件设计与硬件设计的 主要分界,影响程序执行的时间和效率 • 设计准则: •正交性:指令中不同含义字段之间编码时应互相独立 •规整性:对相似的操作有相同的规定 •可扩充性:保留一定的操作码空间,供以后扩展 •对称性:为编译方便,使操作有对称性 R1←R1-R2,则有R1←R2-R1 D←A+B×C 则有D←(A+B)×C
15
Computer Architecture Spring 2016
用多寄存器结构的二地址指令编写程序: MOVE R1, A ;操作数a取到寄存器R1中 MUL R1, B ADD R1, C SUB R1, D ;R1中存放分子运算结果 MOVE R2, E ADD R2, F ;R2中存放分母运算结果 DIV R1, R2 ;最后结果在R1中 MOVE X, R1 ;最后结果存入X中
2
Computer Architecture Spring 2016
software
instruction set
hardware
Ref: http://www.cs.mtu.edu/~soner/courses/cs4431/Lecture04/sld001.htm
3
Computer Architecture Spring 2016
执行速度(访存信息量)
5P+15A=65B 5P+15A+15D=185B 7P+14A=63B 7P+14A+19D=215B 9P+ 9A=45B 9P+ 9A + 9D=117B 12P+7A=40B 12P+7A+29D=272B 8P+7A+9R=40B 8 P + 7 A + 9 R + 7 D = 96B
通用寄存器型
通用寄存器型指令集结构的一个主要优点就是能够使编译器 有效地使用寄存器。这不仅体现在表达式求值方面,更重要的 是体现在利用寄存器存放变量所带来的优越性。 (A*B)-(C*D)-(E*F) 将变量分配给寄存器,不但能够减少存储器的通信量,加 快程序的执行速度,而且和存储器相比,还可以用更少的地址 位来寻址寄存器,从而能够有效改进程序的目标代码大小。
Computer Archiwenku.baidu.comecture Spring 2016
计算机体系结构
Lesson 2. 指令集结构及其设计
讲课教师:周晓方/韩军 复旦大学微电子学院
1
Computer Architecture Spring 2016
内容提要
1. 指令集的作用与基本类别 2. 指令的寻址(Addressing) 3. 指令的格式(Format) 4. 指令的数据类型与大小( Type & Size ) 5. 指令操作(Operation) 6. 指令的后继(jumps, conditions, branchs)
Mixed CISC & RISC? (IA-64. . .1999)
5
Computer Architecture Spring 2016
累加器型
6
Computer Architecture Spring 2016
堆栈型
7
Computer Architecture Spring 2016
8
Computer Architecture Spring 2016
16
Computer Architecture Spring 2016
用(面向累加器)一地址指令编写的程序: LOAD E ;先计算分母, ;取一个操作数到累加器中 ADD F ;分母运算结果在累加器中 STORE X ;保存分母运算结果到X中 LOAD A ;开始计算分子 MUL B ADD C SUB D ;累加器中是分子运算结果 DIV X ;最后运算结果在累加器中 STORE X ;保存最后运算结果到X中
Accumulator
Load A Add B Store C
Register (load-store)
Load R1,A Load R2,B Add R3,R1,R2 Store C,R3
12
Computer Architecture Spring 2016
地址码的优化表示
1. 地址码个数的选择 地址码个数通常有3个、2个、1个及0个等4种情 况 评价指令中地址码个数应该取多少的标准: (1)程序存储容量,包括操作码和地址码 (2)程序执行速度,以程序执行过程中访问主存 的信息量代表 通过一个典型例子来分析:
14
Computer Architecture Spring 2016
用普通二地址指令编写的程序: MOVE X, A ;复制临时变量到X中 MUL X, B ADD X, C SUB X, D ;X中存放分子运算结果 MOVE Y, E ;复制临时变量到Y中 ADD Y, F ;Y中存放分母运算结果 DIV X, Y ;最后结果在X单元中
10
Computer Architecture Spring 2016
三种类型指令集结构的优缺点
指令集结构类型 优点 是一种表示计算的简 堆栈型 单模型;指令短小 缺点 不能随机访问堆栈,从而很难生成有效代码。 同时,由于堆栈是瓶颈,所以很难被高效地 实现 累加器型 减少了机器的内部 状态;指令短小 寄存器型 是代码生成的最一般 的模型 由于累加器是唯一的暂存器,这种机器的存储 器通信开销最大 所有操作数均需命名,且要显式表示,因而 指令较长
较快 连续运算,硬件结构简单 最快 多累加器,数据传送较多
二地址 一般 寄存器型
20
Computer Architecture Spring 2016
通用寄存器指令集的主导地位
° 1975-2000
大多数处理器采用了GPR指令集
° 寄存器的优势 • 寄存器比存储器快 • 寄存器便于程序编译 e.g., (A*B) – (C*D) – (E*F) 可以任意顺序完成3个乘法, 但堆栈就不可以
• 寄存器可以保存变量 - 减少了存储器访问,从而提高了系统性能 -
代码密度得以提高,因为与存储器相比寄存器可以用 较少的比特进行索引或表征
21
Computer Architecture Spring 2016
MIPS的寄存器
• 可编程的存储机制
– 2^32 x bytes 存储空间 – 31 x 32-bit GPRs (R0 = 0) – 32 x 32-bit FP regs – HI, LO, PC – HI, LO是用于存储乘法和除 法运算结果的寄存器 – PC (Program Counter) 程序计数器,指令的地址或 指针
22
r0 r1 ° ° ° r31 PC lo hi
0
Computer Architecture Spring 2016
MIPS的通用寄存器$0-$31
0 1 2 3 4 5 6 7 8 ... 15 t7 zero constant 0 at reserved for assembler v0 expression evaluation & v1 function results a0 arguments a1 a2 a3 t0 temporary: caller saves (callee can clobber) 16 s0 callee saves . . . (callee must save) 23 s7 24 t8 25 t9 26 k0 reserved for OS kernel 27 k1 28 gp Pointer to global area 29 sp Stack pointer 30 fp 31 ra frame pointer Return Address (HW)
4
Computer Architecture Spring 2016
指令集设计的演进
Single Accumulator (EDSAC 1950) Accumulator + Index Registers (Manchester Mark I, IBM 700 series 1953) Separation of Programming Model from Implementation High-level Language Based (B5000 1963) Concept of a Family (IBM 360 1964)
P 表示操作码长度,A 表示地址码长度,D 表示数据长度,R 表示通用 寄存器的地址码长度,B 表示字节数。并取:D=2A=8P=16R=8B
课后有习题
19
Computer Architecture Spring 2016
不同地址个数指令的特点及适用场合
程序 程序 程序执 地址数目 的长度 存储量 行速度 三地址 最短 最大 一般 二地址 一地址 零地址 较短 较长 最长 很大 较大 最小 最小 很低 最低 适用场合 向量,矩阵运算为主 一般不宜采用 嵌套,递归,变量较多
17
用(面向堆栈)0地址指令编写程序: ab*c+d-ef+/ PUSH A ;操作数a压入堆栈 PUSH B ;操作数b压入堆栈 MUL ;栈顶两数相乘,结果压回堆顶 PUSH C ADD PUSH D SUB ;栈顶是分子运算的结果 PUSH E PUSH F ADD DIV ;栈顶是最后运算的结果 POP X ;保存最后运算结果
9
Computer Architecture Spring 2016
四种典型指令集
Accumulator-累加器 (1 register): 1 address add A acc acc + mem[A] 1+x address addx A acc acc + mem[A + x] Stack-堆栈: 0 address add tos tos + next General Purpose Register - 通用寄存器(can be memory/memory): 2 address add A B EA[A] EA[A] + EA[B] EA[A] EA[B] + EA[C] Ra Rb + Rc Ra mem[Rb] mem[Rb] Ra 3 address add A B C Load/Store( aslo GPR): 3 address add Ra Rb Rc load Ra Rb store Ra Rb
18
Computer Architecture Spring 2016
Computer Architecture Spring 2016
用不同地址个数指令编写的程序 的存储容量和执行速度
地址数目 指令条数 访存次数 程序存储量 三地址 二地址 一地址 零地址 二地址 寄存器型 5 7 9 12 8 20 26 18 41 15
13
Computer Architecture Spring 2016
例如:计算一个典型的算术表达式:
ab cd x e f
用三地址指令编写的程序如下: MUL X, A, B ;X←(A)×(B) ADD X, X, C ;X←(X)+(C) SUB X, X, D ;分子的计算结果在中 ADD Y, E, F ;计算分母,存入Y DIV X, X, Y ;最后结果在X单元中
相关文档
最新文档