数据存放位置(Memory Alignment) 在数据不对准边界的计算机中,数据(例如一个字) 可能在两个存储单元中。 此时需要访问两次存储器,并对高低字节的位置进行 调整后,才能取得一字。 边界对齐: 一字对齐:左移两位,按字访问 ·RVIX86不要求,MIPS要求 一半字:左移一位,按半字访问 存储器 地址(十进制) 字(地址2) 半字(地址0) 0 字节(地址7) 字节(地址6) 字(地址4) 4 半字(地址10) 半字(地址8) 8 llxx@ustc.edu.cn 11/41
llxx@ustc.edu.cn 11/41 数据存放位置(Memory Alignment) • 在数据不对准边界的计算机中,数据(例如一个字) 可能在两个存储单元中。 – 此时需要访问两次存储器,并对高低字节的位置进行 调整后,才能取得一字。 • 边界对齐: – 字对齐:左移两位,按字访问 • RV/x86不要求,MIPS要求 – 半字:左移一位,按半字访问 字(地址2) 半字(地址0) 0 4 8 字节(地址7) 字节(地址6) 字(地址4) 半字(地址10) 半字(地址8) 存储器 地址(十进制)
操作分类 运算器 ·数据传递 (data movement) -访存:load,store,mov 输入设备 存储器 输出设备 1/O:in,out 。 算逻运算(arithmetic&logical) 控制器 - add,sub,and,not,or,xor,dec,inc,cmp monadic dyadic operations ·移位操作 - monadic operations:shl,shr,srl,srr ·分支控制(tranfer of contral,.Branch) comparisons conditional branches:beg,bnz -无条件转移:jmp procedure call:call,ret,int,iret 晶振 R Q CLK 系统指令:nop,sti,cli,lock,HLT S llxx@ustc.edu.cn 12/41
llxx@ustc.edu.cn 12/41 操作分类 • 数据传递(data movement) – 访存:load,store,mov – I/O:in,out • 算逻运算(arithmetic & logical) – add,sub,and,not,or,xor,dec,inc,cmp – monadic & dyadic operations • 移位操作 – monadic operations:shl,shr,srl,srr • 分支控制(tranfer of contral,Branch) – comparisons & conditional branches:beq,bnz – 无条件转移:jmp – procedure call:call,ret,int,iret • 系统指令:nop,sti,cli,lock,HLT 晶振 R S Q CLK
指令示例 ·ALU DRipes File Help -源操作数 鞋G 〈>0100s日》☒田 ·立即数 689 01 Source code Executable code View mode:O Binary O Disassenbled Editor 1 main: -目的操作数 2 addi x2,x0,2 00000000<main>: 3 addi x3,x0,3 0: 08200113 addi x2 x0 2 IF 目 4 addi x7,x3,-6 4: 00300193 addi x3 x0 3 分支 5 8: ffa18393 addi x7 x3-6 6 j end c: 0080806f jal x0 0x14 <enc 7 addi x2,x0,2 10: 00200113 addi x2 x0 2 NPC 8 9 end: 00009014<end>: 10swx2,45(x0) 14: 022026a3 swX245(x0) ·访存 11 beq x7,x5,main 18: fe5384e3 beq x7 x5 -24 <r 一内存地址
指令示例 • ALU – 源操作数 • 立即数 – 目的操作数 • 分支 – NPC • 访存 – 内存地址
指令字格式Machine Instruction Layout von Neumann:“指令由操作码和地址码构成” ·操作码:操作的性质 地址码:指令和操作数(operand)的存储位置 操作码域(op) 地址码域(addr) ·指令字长度固定Vs.可变:RISC(RV/MIPS/ARM)一般32位 ·固定:规则,浪费空间 操作码长度固定s.可变 ·固定:译码简单,指令条数有限,RISC C (RV/MIPS/ARM ·可变:指令条数和格式按需调整,CISC(x86) ·“扩展操作码技术”:调整op与addr域 ·如果指令字长固定,则操作码长度增加,地址码长度缩短 llxx@ustc.edu.cn 14/41
llxx@ustc.edu.cn 14/41 指令字格式Machine Instruction Layout • von Neumann: “指令由操作码和地址码构成” • 操作码:操作的性质 • 地址码:指令和操作数(operand)的存储位置 • 指令字长度固定vs.可变:RISC(RV/MIPS/ARM)一般32位 • 固定:规则,浪费空间 • 操作码长度固定vs.可变 • 固定:译码简单,指令条数有限,RISC(RV/MIPS/ARM) • 可变:指令条数和格式按需调整,CISC(x86) • “扩展操作码技术”:调整op与addr域 • 如果指令字长固定,则操作码长度增加,地址码长度缩短 操作码域(op) 地址码域(addr)
地址码:操作数,指令 ·源操作数、目的操作数、下一条指令地址 一地址:寄存器、主存、O端口 地址码域格式 -4地址指令:Oprs1,rs2,rd,ni -3地址指令:oprs1,rs2,rd; ni在PC中 -2地址指令:Oprs1,rs2; rd=rs1 or ACC -1地址指令:oprs2; rs1=ACC,rd=ACC -0地址指令:op; 堆栈操作 llxx@ustc.edu.cn 15/41
llxx@ustc.edu.cn 15/41 地址码:操作数,指令 • 源操作数、目的操作数、下一条指令地址 – 地址:寄存器、主存、I/O端口 • 地址码域格式 – 4地址指令:op rs1, rs2, rd, ni – 3地址指令:op rs1, rs2, rd; ni在PC中 – 2地址指令:op rs1, rs2; rd=rs1 or ACC – 1地址指令:op rs2; rs1=ACC,rd=ACC – 0地址指令:op; 堆栈操作