计算机体系结构-精简指令集和复杂指令集

精简指令集(CISV)和复杂指令集(RISC)

一、Intel和AMD可以认为是CISC的典型代表。一条复杂的指令实现复杂的功能,对于编译器的要求低,只需一条指令就可以解决问题。ARM必须将数据加载到寄存器才能被指令使用。举例如下:

// Intel AVX指令集如下:
// 将寄存器ymm1 += ymm3(或者地址mem中值) * ymm2
// 这是一条CISC指令集,最后一个操作数可以从地址或者寄存器中直接读,这将增加逻辑电路的复杂度。
vfmadd231ps ymm1, ymm2, ymm3/mem

// ARM是典型的RISC代码,其fmadd指令只能从寄存器中读数据,必须线从内存加载数据到寄存器。
// v0 += v1 * v2
ld1 {v1.4s}, [x9]
ld1 {v2.4s}, [x10]
ld1 {v0.4s}, [x11]
fmla v0.4s, v1.4s, v2.4s
st1 {v0.4s}, [x11]

CISC对CPU逻辑电路的设计要求高,简化了对编译器的要求,但是带来了CPU成本和功耗的增加。
RISC通过多条简单指令拼凑一个复杂功能,对编译器优化要求高,但是功耗低,CPU设计简单,主要用在端侧。

CISC指令长度不固定,指令较多,这将导致指令切割复杂,通常需要切割未多个微操作码,然后执行计算。
RISC指令长度固定,指令较少,指令码切割简单,这将更容易并行化,执行效率高。

主要体现在可访存指令上: 指令不加限制(CISC) 只能是LOAD/STORE指令(RISC)

二、指令的组成
一条指令主要有操作码和操作数地址码两部分组成
(1)定长操作码指令:计算机的硬件简单,指令译码和执行速度快,但是随着指令增多,指令划分为操作地址码的位数降低,适用于较长位数系统32位及以上。
(2)变长操作码指令:技能表示较多指令集又能表示较大的操作数地址码,这在16位系统常用。指令译码和执行速度慢。
(3)操作码和操作数交织:操作码不再集中在指令高字节处,指令译码很复杂,不常用。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值