文章目录
ISA: Instruction Set Architecture
CISC: Complex Instruction Set Computing
RISC: Reduced Instruction Set Computing
ARM: Advanced RISC Machines
[201214] What is ISA? Why it is so important for IC design?
The main ISAs used today are x86, ARM, ARC, MIPS and PowerPC, along with other ISAs used under the hood in GPUs and DSPs.
ISA是架构设计(或接口设计),微架构(比如x86, ARM)是具体实现。
更具体一点:微架构是CPU中的实现处理器各个功能的数字电路。同样的ISA,不同的微架构,在性能上存在一定的差异
我们经常听说某某架构,比如什么x86啊,这里的架构指的是微架构(Microartecture),微架构就是ISA的具体实现,也就是CPU中的实现处理器各个功能的数字电路。微架构和ISA之间的关系可以说是这样的:ISA是处理器设计的规范,微架构就是对应ISA的处理器的具体实现。同样的ISA,不同的微架构,在性能上存在一定的差异。
Source: https://blog.csdn.net/Miha_Singh/article/details/80617416
ISA本质上是一种接口。
参考1:软硬件之间的接口
作为软硬件之间的接口,ISA定义了机器语言程序编写者需要知道的一切,这其中就包括指令集,指令集编码,基本数据类型,寄存器,寻址模式,存储体系,异常处理,中断,I/O模型等。
Source: https://blog.csdn.net/Miha_Singh/article/details/80617416
参考2:供软件使用的硬件结构的抽象
这种说法欠妥,因为给人感觉是先有硬件结构,再有ISA。而真实过程应该是反过来的。
ISA(Instruction Set Architecture)指令集体系架构,是在最底层把硬件结构抽象出来供软件编程控制的,指令集解决了最基本的软件兼容性问题。指令集类型主要分为CISC和RISC两类,Intel的x86是很古老的CISC指令集,虽然有很多弊端但今天依然广泛使用;RISC类型的指令集主要有ARM、MIPS、Power等。
Source: https://blog.csdn.net/ta_ab/article/details/8870908
[201214] CISC vs. RISC
指令集架构可以以很多方式进行划分,一种常见的划分方式是CISC(Complex instruction set computing)复杂指令集计算机和RISC(Reduced instruction set computing)精简指令集计算机。这两种就计算机分别采用的就是CISC和RISC指令集架构
CISC拥有很多特殊的指令,其中一些指令很少被用到,而且CISC的指令是变长的。这个是有历史原因的,早期人们编程的时候使用汇编语言,为了编程的灵活方便,人们将指令集设计的功能强大
,而且为了节省空间,指令编码采用了边长方式。而RISC就不一样了,RISC简化了指令集,人们重新设计了指令集,剔除了那些不常使用的指令,只保留常用的指令。
当然还有其他类型的指令集架构,比如VLIM(Very long instruction word)超长指令字架构,EPIC(Explicity parallel instruction computing)显示并行指令集计算。这些指令集架构都在尝试通过使编译器负责指令流的调度来实现指令级别的并行并且使用比CISC和RISC更少的硬件。
现在更简化的指令集也正在研究中,比如MISC(Minimal instruction set computer,最小指令集计算机)和OISC(One instruction set computer,单指令集计算机)。
Source: https://blog.csdn.net/Miha_Singh/article/details/80617416
[201214] x86 vs. ARM architecture?
ARM:Advanced RISC Machine
x86和ARM:各有千秋
两种指令集都在蓬勃发展,而且都很成功——X86是复杂指令集(CISC)的代表,而ARM则是精简指令集(RISC)的代表.
两者的设计思路差异太大。早期人们编程的时候使用汇编语言,为了编程的灵活方便,人们将指令集设计的功能强大
。
这样的思路导致了CISC和RISC分道扬镳——前者更加专注于高性能但同时高功耗的实现,而后者则专注于小尺寸低功耗领域。实际上也有很多事情CISC更加合适,而另外一些事情则是RISC更加合适,比如在执行高密度的运算任务的时候CISC就更具备优势,而在执行简单重复劳动的时候RISC就能占到上风。
比如假设我们是在举办吃饭大赛,那么CISC只需要不停的喊“吃饭吃饭吃饭”就行了,而RISC则要一遍一遍重复吃饭流程(舀饭->张口->放到嘴巴里->咀嚼->吞咽),负责喊话的人如果嘴巴不够快(即内存带宽不够大),那么RISC就很难吃的过CISC。但是如果我们只是要两个人把饭舀出来,那么CISC就麻烦得多,因为CISC里没有这么简单的舀饭动作,而RISC就只需要不停喊“舀饭舀饭舀饭”就OK。
Source: https://zhuanlan.zhihu.com/p/260820228
ARM更吃内存带宽
这就是CISC和RISC之间的区别。但是在实际情况中问题要比这复杂许许多多,因为各个阵营的设计者都想要提升自家架构的性能。这里面最普遍的就是所谓的“发射”概念。什么叫发射?发射就是同时可以执行多少指令的意思,例如双发射就意味着CPU可以同时拾取两条指令,三发射则自然就是三条了。现代高级处理器已经很少有单发射的实现,例如Cortex A8和A9都是双发射的RISC,而Cortex A15则是三发射。ATOM是双发射CISC,Core系列甚至做到了四发射——这个方面大家倒是不相上下,但是不要忘了CISC的指令更加复杂,也就意味着指令更加强大,还是吃饭的例子,CISC只需要1个指令,而RISC需要5个,那么在内存带宽相同的情况下,CISC能达到的性能是要超过RISC的(就吃饭而言是5倍),而实际中CISC的Core i处理器内存带宽已经超过了100GB/s,而ARM还在为10GB/s而苦苦奋斗,一个更加吃带宽的架构,带宽却只有别人的十分之一,性能自然会受到非常大的制约
。为什么说ARM和X86不好比,这也是很重要的一个原因,因为不同的应用对带宽需求是不同的。一旦遇到带宽瓶颈,哪怕ARM处理器已经达到了很高的运算性能,实际上根本发挥不出来
,自然也就会落败了。
Source: https://zhuanlan.zhihu.com/p/260820228
x86和ARM:都有庞大的生态系统
每种广泛采用的指令集背后都有一个强大的生态系统,就像生物学里的生态系统一样,每个ISA生态系统都有清晰的食物链结构:PC和服务器领域是x86的地盘,x86生态系统占据食物链顶层的是Intel和微软;ARM生态圈主要分布在智能手机、平板电脑及嵌入式设备中,占据ARM食物链顶层的是高通、苹果和三星。
指令集是也一道天然的壁垒,外面想进入、里面想出来都很难,因为它不仅仅是一类半导体芯片,它背后是一个庞大的生态系统
,这个生态系统入驻的有编译器、操作系统、芯片方案、应用程序
等等。
Source: https://blog.csdn.net/ta_ab/article/details/8870908