RISC: Reduced Instruction Set computer 精简指令集 比如arm和risc-v
RISCISA在设计指令的时候和CISC全然不同,它是只定义一些常用、必要的指令,然后你要实现更多功能,那么就需要对这些指令进行排列组合”,用好几条指令来实现原本CISC一条指令就能实现的功能。也就是它不再按照功能来设计指令了。那么在这种设计哲学下,随着计算机功能越来越多,RISC SA的指今条数增长的速度相比CISC就会慢很多,不会造成电路设计过于复杂、指今数量膨胀这些缺点RISC的缺点是生成的程序比较长、占用空间大,但是由于现代计算机发展迅速,存储已经不再是已经太大的问题了,现在的个人电脑16GB内存已经是标配了,计算机只有64KB内存的时代已经一去不复返了。
CISC: Complex Instruction Set computer 复杂指令集 比如x86
在设计指令的时候是针对特定的功能设计的,也就是说它的一条指今对应了一种功能,比如x86里的mov指令,能够把数据从寄存器移动到寄存器、可以把数据从内存移动到亮存器、还可以把数据从寄存器移动到内存。这个m指令就是针对数据移动这个功能设定的。随着计算机越来越复杂,实现的功能越来越多,那么CISC SA就要不断地添加指令,每多一个功能就要加一个指令。优点就是你掌握好少数几条指令就可以做许多的功能,因为一条指令可以有很多用途的,而目生成的程序比较短,占用空间小;并目对兼容性和拓展性的支持也比较好,你想推出新功能,在原来的基础上添加新的指令集就好了。而缺点也很明显:每多一种就加一条指令,那么最终指令的数量会越来越多,整人指今集和电路的设计就会越来越假胀,一开始还的接受,到了后期可自8厂展到了几千条指令,据我查到的数据新X86指令第是有1468条指令,现在也许更多了,指今数量越多越难以把握。实际上x86的这种设计是针对早期计算机存储空间太小问题而设计的思路,那时候的程序员绞尽脑汁地开发就是为了自己的程序能够省一点内存。
但实际上,RISC和CISC这二者之间并不是水火不容的关系,而是互补的关系。RISC指今集有CISC的设计思想在里面,CISC指令集也有RISC的设计思想在里面,与相融合可以解决很多原本的缺陷,从而更加适应现实里复杂的环境。
x86系列,面向外部的指令集是CISC(复杂指令集计算机),但在内部,这些复杂的指今在执行之前会被分解成更小、更简单的操作,这些操作称为微操作 (micro-operations 或 pops) ,这种新的设计思想就叫做Intel微架构。
而rsC-V指令集为了方便程序员编程,也设计了一系列的"伪指令”,伪指令本身不翻译成机器码而是展开成好几条汇编指令,伪指令把多条汇编指令封装起来,实现类似CISC那样一条指令实现一个功能这样的设计,这样是为了方便程序员使用。
|