“复杂指令集”与“精简指令集”
计算机组成原理指令集体系结构的设计与优化

计算机组成原理指令集体系结构的设计与优化计算机组成原理是计算机科学中的重要理论课程之一,它对于了解计算机的基本原理和内部结构起着重要的指导作用。
其中,指令集体系结构是计算机的核心组成部分之一,它决定了计算机能够执行的操作和运算方式。
本文将探讨指令集体系结构的设计与优化方法,以及其对计算机性能的影响。
一、指令集体系结构的定义与分类指令集体系结构是计算机硬件与软件之间的接口,它定义了计算机能够执行的指令和数据格式。
根据指令和数据的操作类型,指令集体系结构可以分为以下几类:1. 精简指令集(RISC)体系结构精简指令集体系结构采用简单的指令格式和操作方式,指令集的种类较少,每条指令的执行时间相对较短。
精简指令集体系结构的设计目标是提高指令执行速度和功耗效率,适用于大部分应用场景。
2. 复杂指令集(CISC)体系结构复杂指令集体系结构采用复杂的指令格式和操作方式,指令集的种类繁多,每条指令的执行时间相对较长。
复杂指令集体系结构的设计目标是提供更丰富的指令功能和编程灵活性,适用于特定应用场景。
3. 隐式数据流(VLIW)体系结构隐式数据流体系结构将多条指令捆绑在一起,共同操作一组数据,以提高指令级并行性。
隐式数据流体系结构的设计目标是充分利用硬件资源,提高指令的并行度和执行效率,适用于科学计算和嵌入式系统等领域。
二、指令集体系结构的设计原则指令集体系结构的设计涉及到多个方面的考虑,以下是一些常见的设计原则:1. 简洁性指令集应该尽量简洁,避免冗余和重复的操作。
简洁的指令集可以提高指令的执行效率和编程的方便性。
2. 完整性指令集应该具备足够的操作功能,能够满足各类应用的需求。
完整的指令集可以提高程序的编写效率和计算机的应用范围。
3. 兼容性指令集应该具备一定的兼容性,能够支持历史上的指令集和软件。
兼容的指令集可以方便用户迁移和使用已有的软件资源。
4. 可扩展性指令集应该具备一定的扩展性,能够支持后续的技术发展和硬件升级。
精简指令集和复杂指令集的区别

精简指令集和复杂指令集的区别RISC(精简指令集计算机)和CISC(复杂指令集计算机)是当前CPU的两种。
它们的区别在于不同的CPU设计理念和⽅法。
CPU架构是⼚商给属于同⼀系列的CPU产品定的⼀个规范,主要⽬的是为了区分不同类型CPU的重要标⽰早期的CPU全部是CISC架构,它的设计⽬的是要⽤最少的机器语⾔指令来完成所需的计算任务。
⽐如对于乘法运算,在CISC架构的CPU 上,您可能需要这样⼀条指令:MUL ADDRA, ADDRB就可以将ADDRA和ADDRB中的数相乘并将结果储存在ADDRA中。
将ADDRA, ADDRB中的数据读⼊寄存器,相乘和将结果写回内存的操作全部依赖于CPU中设计的逻辑来实现。
这种架构会增加CPU结构的复杂性和对CPU⼯艺的要求,但对于编译器的开发⼗分有利。
⽐如上⾯的例⼦,C程序中的a*=b就可以直接编译为⼀条乘法指令。
今天只有Intel及其兼容CPU还在使⽤CISC架构。
RISC架构要求软件来指定各个操作步骤。
上⾯的例⼦如果要在RISC架构上实现,将ADDRA, ADDRB中的数据读⼊寄存器,相乘和将结果写回内存的操作都必须由软件来实现,⽐如:MOV A, ADDRA; MOV B, ADDRB; MUL A, B; STR ADDRA, A。
这种架构可以降低CPU的复杂性以及允许在同样的⼯艺⽔平下⽣产出功能更强⼤的CPU,但对于编译器的设计有更⾼的要求。
复杂指令集计算机(CISC) 长期来,计算机性能的提⾼往往是通过增加硬件的复杂性来获得.随着集成电路技术.特别是VLSI(超⼤规模集成电路)技术的迅速发展,为了软件编程⽅便和提⾼程序的运⾏速度,硬件⼯程师采⽤的办法是不断增加可实现复杂功能的指令和多种灵活的编址⽅式.甚⾄某些指令可⽀持⾼级语⾔语句归类后的复杂操作.⾄使硬件越来越复杂,造价也相应提⾼.为实现复杂操作,微处理器除向程序员提供类似各种寄存器和机器指令功能外.还通过存于只读存贮器(ROM)中的微程序来实现其极强的功能,傲处理在分析每⼀条指令之后执⾏⼀系列初级指令运算来完成所需的功能,这种设计的型式被称为复杂指令集计算机(Complex Instruction Set Computer-CISC)结构.⼀般CISC计算机所含的指令数⽬⾄少300条以上,有的甚⾄超过500条.精简指令集计算机(RISC) 采⽤复杂指令系统的计算机有着较强的处理⾼级语⾔的能⼒.这对提⾼计算机的性能是有益的.当计算机的设计沿着这条道路发展时.有些⼈没有随波逐流.他们回过头去看⼀看过去⾛过的道路,开始怀疑这种传统的做法:IBM公司没在纽约Yorktown的JhomasI.Wason研究中⼼于1975年组织⼒量研究指令系统的合理性问题.因为当时已感到,⽇趋庞杂的指令系统不但不易实现.⽽且还可能降低系统性能.1979年以帕特逊教授为⾸的⼀批科学家也开始在美国加册⼤学伯克莱分校开展这⼀研究.结果表明,CISC存在许多缺点.⾸先.在这种计算机中.各种指令的使⽤率相差悬殊:⼀个典型程序的运算过程所使⽤的80%指令.只占⼀个处理器指令系统的20%.事实上最频繁使⽤的指令是取、存和加这些最简单的指令.这样-来,长期致⼒于复杂指令系统的设计,实际上是在设计⼀种难得在实践中⽤得上的指令系统的处理器.同时.复杂的指令系统必然带来结构的复杂性.这不但增加了设计的时间与成本还容易造成设计失误.此外.尽管VLSI技术现在已达到很⾼的⽔平,但也很难把CISC的全部硬件做在⼀个芯⽚上,这也妨碍单⽚计算机的发展.在CISC中,许多复杂指令需要极复杂的操作,这类指令多数是某种⾼级语⾔的直接翻版,因⽽通⽤性差.由于采⽤⼆级的微码执⾏⽅式,它也降低那些被频繁调⽤的简单指令系统的运⾏速度.因⽽.针对CISC的这些弊病.帕特逊等⼈提出了精简指令的设想即指令系统应当只包含那些使⽤频率很⾼的少量指令.并提供⼀些必要的指令以⽀持操作系统和⾼级语⾔.按照这个原则发展⽽成的计算机被称为精简指令集计算机(Reduced Instruction Set Computer-RISC)结构.简称RISC.CISC与RISC的区别 我们经常谈论有关"PC"与"Macintosh"的话题,但是⼜有多少⼈知道以Intel公司X86为核⼼的PC系列正是基于CISC体系结构,⽽ Apple 公司的Macintosh则是基于RISC体系结构,CISC与RISC到底有何区别? 从硬件⾓度来看CISC处理的是不等长指令集,它必须对不等长指令进⾏分割,因此在执⾏单⼀指令的时候需要进⾏较多的处理⼯作。
汇编语言的分类

汇编语言的分类汇编语言是计算机编程中一种低级语言,用于将源代码转化为机器码以供计算机执行。
在计算机科学中,汇编语言可以根据不同的特性进行分类。
本文将介绍汇编语言的分类,并对每种分类进行详细说明。
一、按照使用的处理器进行分类根据所使用的处理器类型,汇编语言可以分为多类。
最常见的分类方式是根据处理器架构进行划分,主要包括x86汇编语言、ARM汇编语言和MIPS汇编语言等。
1. x86汇编语言:x86汇编语言是最广泛应用的汇编语言之一,主要用于x86架构的处理器,如英特尔的处理器和AMD的处理器。
x86汇编语言具有较高的执行效率和灵活性,广泛用于操作系统、驱动程序和嵌入式系统开发等领域。
2. ARM汇编语言:ARM汇编语言主要用于ARM架构的处理器,如移动设备和嵌入式系统中常见的ARM处理器。
ARM汇编语言具有较低的功耗和较高的性能,在移动应用、物联网和智能终端等领域得到广泛应用。
3. MIPS汇编语言:MIPS汇编语言用于MIPS架构的处理器,主要应用于嵌入式系统和网络设备等领域。
MIPS汇编语言具有简洁的指令集和高性能的特点,适用于资源有限的嵌入式系统。
二、按照指令系统进行分类根据指令系统的不同,汇编语言可以分为复杂指令集(CISC)和精简指令集(RISC)两类。
1. 复杂指令集(CISC):复杂指令集汇编语言具有丰富的指令集合和复杂的指令格式,可以实现多种功能。
CISC汇编语言中的每个指令可以执行复杂的操作,但由于指令集繁多,编程复杂度较高,难以提高执行效率。
2. 精简指令集(RISC):精简指令集汇编语言以简单、统一的指令格式为特点,指令集较为精简。
RISC汇编语言的每个指令只执行一项基本操作,简化了处理器的设计和编程的复杂性,并能够提高执行效率。
三、按照应用领域进行分类汇编语言还可以根据应用领域进行分类,不同应用领域对汇编语言具有不同的要求。
1. 系统级汇编语言:系统级汇编语言主要用于操作系统和底层系统软件开发,例如操作系统的内核、驱动程序等。
cisc risc vliw 通俗理解 指令系统划分

cisc risc vliw 通俗理解指令系统划分计算机指令系统是计算机硬件能够识别和执行的一组指令,它是计算机软件和硬件之间的接口。
指令系统的设计直接影响到计算机的性能、功能和成本。
根据指令系统的特点,可以将指令系统划分为CISC(Complex Instruction Set Computing,复杂指令集计算)、RISC(Reduced Instruction Set Computing,精简指令集计算)和VLIW(Very Long Instruction Word,超长指令字)三种类型。
1. CISC(复杂指令集计算)CISC是一种早期的指令系统设计方法,其主要特点是指令长度不固定,一条指令可以完成多个操作。
CISC指令系统中的指令通常包括数据操作、逻辑操作、控制转移等多种功能。
这种设计使得程序员可以用较少的指令完成复杂的任务,提高了编程的灵活性。
然而,CISC指令系统的复杂性也带来了一些问题:- 指令长度不固定导致硬件设计的复杂度增加,降低了处理器的运行速度;- 由于一条指令可以完成多个操作,需要更多的时钟周期来执行,降低了处理器的性能;- 程序中存在大量复杂的指令,使得编译器难以优化代码,降低了程序的执行效率。
2. RISC(精简指令集计算)为了解决CISC指令系统中存在的问题,研究人员提出了RISC指令系统设计方法。
RISC的主要特点是指令长度固定,一条指令只完成一个基本操作。
这使得硬件设计变得简单,提高了处理器的运行速度和性能。
RISC指令系统中的指令主要包括数据操作、逻辑操作和控制转移等基本操作。
与CISC相比,RISC具有以下优点:- 指令长度固定,简化了硬件设计,提高了处理器的运行速度;- 一条指令只完成一个基本操作,减少了时钟周期的数量,提高了处理器的性能;- 程序中的基本操作较为简单,便于编译器优化代码,提高了程序的执行效率。
然而,RISC指令系统的局限性在于其编程灵活性较低,程序员需要使用较多的指令来完成复杂的任务。
处理器知识-RISC和CISC架构分析对比

处理器知识: RISC和CISC架构分析对比CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构。
它们的区别在于不同的CPU设计理念和方法。
早期的CPU全部是CISC架构,它的设计目的是 CISC 要用最少的机器语言指令来完成所需的计算任务。
RISC和CISC是设计制造微处理器的两种典型技术,虽然它们都是试图在体系结构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效的目的,但采用的方法不同,因此,在很多方面差异很大。
x86架构采用CISC,而ARM采用RISC。
ARM成立于1991年,是一家出售IP(技术知识产权)的公司,所谓的技术知识产权,就有点像是卖房屋的结构设计图,至于要怎修改,哪边开窗户,以及要怎加盖其它的花园,就看买了设计图的厂商自己决定。
而ARM的架构是采用RISC架构,如同它的名称一样,Advanced RISC Machines,RISC 架构在当初的PC架构争霸战虽然败给Intel所主导的x86处理器架构,却默默在另外的领域成长壮大;小从硬盘转速控制、电信基地台的计算、汽车喷射引擎的控制、音响系统、相机引擎,大到电动机具的控制等等,都能够看见采用ARM授权架构处理器的身影。
而有了设计图,当然还要有把设计图实现的厂商,而这些就是ARM架构的授权客户群。
包括:高通、华为、联发科、TI、Freescale等。
X86是英特尔Intel首先开发制造的一种微处理器体系结构的泛称,包括Intel8086、80186、80286、80386以及80486以86结尾系列,英特尔统治整个CPU产业链长达数十年。
但是,Intel以增加处理器本身复杂度作为代价,去换取更高的性能,但集成的指令集数量越来越多,给硬件带来的负荷也就越来越大,无形中增加了功耗和设计难度。
ARM(Advanced RISC Machines)公司是苹果、Acorn、VLSI、Technology等公司的合资企业。
复杂指令集和精简指令集

复杂指令集和精简指令集指令集是计算机体系结构的重要组成部分,它是计算机执行程序的指令集合,包括操作码和操作数等元素。
指令集的设计和选择对计算机的性能、成本和可移植性等方面有很大的影响。
主要有两种指令集架构:复杂指令集(Complex Instruction Set Architecture,CISC)和精简指令集(Reduced Instruction Set Architecture,RISC)。
下面我们将详细介绍这两种架构的特点以及各自的优缺点。
一、复杂指令集(CISC)复杂指令集计算机体系结构最早出现在20世纪70年代,其最初的设想是将多条简单的指令合并成一条复杂的指令,以提高指令集的设计效率和程序的执行速度。
复杂指令集计算机单条指令可以针对一个任务执行多个操作,包括算术运算、逻辑运算、存储等操作。
它具有以下特点:1. 指令集较为复杂:CISC体系结构中的指令集合较为庞大,涵盖了多种算术运算、逻辑运算、访问存储器等操作,每条指令执行的操作数目较多。
2. 可以降低程序员的工作量:它具有很强的程序兼容性,程序员可以使用语义丰富、操作多样的指令来编写程序,编程较为简便。
3. 数据传输能力较强:CISC指令集支持多种地址寻址方式,可以通过一条指令传输大块数据,节省了时间和空间。
4. 代码密度较高:CISC指令具有较长的字长和高代码密度,可以使程序占用的内存较小。
5. 对内存的使用相对较少:由于CISC指令集中包含了很多常用的命令,所以相对于RISC指令集,CISC指令可以使程序的执行速度更快,CPU可以少使用内存。
不过随着时间的推移,CISC体系结构逐渐暴露出了一些问题。
CISC指令集架构虽然功能强大,但每条指令的执行时间较长,开销很高,导致处理器需要消耗更多的内存和时间来执行指令。
精简指令集计算机体系结构是20世纪80年代提出的一种新型的计算机架构,它的设计思想是通过增加寄存器数量和减少指令集的复杂程度,减少单条指令的执行时间,从而提高处理器的性能和效率。
计算机语言指令集

计算机语言指令集摘要:1.计算机语言指令集的定义与作用2.指令集的类型与特点3.常见指令集的介绍4.计算机语言指令集的发展趋势正文:计算机语言指令集是计算机程序中用于指导计算机完成特定任务的命令集合。
指令集可以被视为计算机语言的“词汇表”,它定义了语言可以使用的基本操作。
这些操作包括对数据进行加、减、乘、除等算术运算,以及对数据进行存储、读取、删除等操作。
指令集在计算机程序设计和运行中起着至关重要的作用,它们决定了计算机可以执行哪些任务以及如何执行这些任务。
指令集有多种类型,每种类型都有其独特的特点。
常见的指令集类型包括:1.复杂指令集(CISC, Complex Instruction Set Computer):复杂指令集计算机使用大量指令来完成各种任务。
这些指令通常需要多个时钟周期才能完成,因此它们的执行速度较慢。
2.精简指令集(RISC, Reduced Instruction Set Computer):精简指令集计算机使用较少的指令来完成任务。
这些指令通常可以在一个时钟周期内完成,因此它们的执行速度较快。
3.单指令多数据(SIMD, Single Instruction, Multiple Data):单指令多数据计算机可以在一个时钟周期内同时处理多个数据。
这种计算机通常用于大规模数据处理任务,例如视频处理和图形渲染。
有许多常见的指令集,例如:1.x86:x86 指令集是最常用的指令集之一,它被广泛应用于个人计算机和服务器。
x86 指令集起源于英特尔的80x86 微处理器,后来得到了许多其他厂商的支持。
2.ARM:ARM(Advanced RISC Machine)指令集是一种精简指令集,它被广泛应用于移动设备和嵌入式系统。
ARM 指令集由英国的ARM 公司开发,得到了许多其他厂商的支持。
3.MIPS:MIPS(Microprocessor without Interlocked Pipeline Stages)指令集是一种精简指令集,它被广泛应用于嵌入式系统和超级计算机。
计算机组成原理基础知识指令集架构和微操作的执行

计算机组成原理基础知识指令集架构和微操作的执行计算机组成原理是计算机科学与技术领域中的一门重要课程,它研究计算机是如何组成和工作的。
指令集架构和微操作是计算机组成原理中的两个核心概念,它们在计算机的指令执行过程中起着重要的作用。
本文将从指令集架构和微操作的概念入手,详细介绍它们的执行原理和相关知识。
一、指令集架构的概念和分类指令集架构是指计算机体系结构中,汇编语言编程所使用的指令的集合和指令的执行方式。
根据指令的长短和指令操作数的个数,指令集架构可以分为以下几种类型:1. 精简指令集(RISC)架构:精简指令集架构的指令长度固定,一般都是固定长度的32位指令。
每条指令只能完成一个操作,执行速度快,适合用来处理更小规模的任务。
2. 复杂指令集(CISC)架构:复杂指令集架构的指令长度可以变化,指令中包含多个操作,执行速度相对较慢。
复杂指令集可以在一条指令中完成多个操作,适合用来处理大规模的任务。
二、微操作的概念和执行原理微操作是指一个指令在执行过程中所包含的多个微小操作,每个微操作执行一个或多个基本操作。
微操作的执行需要经过多个步骤,包括取指令、译码、执行、访存和写回等。
1. 取指令:计算机从存储器中读取指令,并把指令送入指令寄存器中,以供后续执行。
2. 译码:指令译码器对指令进行解析和识别,将指令翻译成计算机能够理解的控制信号。
3. 执行:根据指令所包含的操作码和操作数,执行相应的算术、逻辑或者控制操作。
4. 访存:将结果写入内存或者从内存中读取数据,并将数据送到寄存器或者其他运算单元中。
5. 写回:将结果写入目标寄存器或存储器单元。
微操作的执行过程是高度复杂而精细的,不同的微操作之间存在严格的时序关系,需要严格控制和管理。
三、指令集架构和微操作的关系指令集架构和微操作是紧密相关的,指令集架构决定了计算机的指令格式和执行方式,而微操作是指令执行的最小单位。
指令集架构和微操作之间的关系主要体现在以下几个方面:1. 指令解码:指令集架构提供了多种指令编码方式,不同的指令需要进行不同的解码操作,以获得正确的控制信号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这里就不去管细节,简单来谈一下,ARM和X86之间为什
么不太具有可比性的问题。
要搞清楚这个问题首先要明白什么是架构,之前也有很多人提到了架构不同,但架构是什么意思?它是一个比较抽象的概念,不太容易用几句话就解释清楚。
我们要明白CPU是一个执行部件,它之所以能执行,也是因为人们在里面制作了执行各种功能的硬件电路,然后再用一定的逻辑让它按照一定的顺序工作,这样就能完成人们给它的任务。
也就是说,如果把CPU看作一个人,首先它要有正常的工作能力(既执行能力),然后又有足够的逻辑能力(能明白做事的顺序),最后还要听的懂别人的话(既指令集),才能正常工作。
而这些集中在一起就构成了所谓的“架构”,它可以理解为一套“工具”、“方法”和“规范”的集合。
不同的架构之间,工具可能不同,方法可能不同,规范也可能不同,这也造成了它们之间的不兼容——你给一个意大利泥瓦匠看一份中文写成的烹饪指南,他当然不知道应该干什么了。
如果还看不懂,没关系,我们继续。
从CPU发明到现在,有非常多种架构,从我们熟悉的X86,ARM,到不太熟悉的MIPS,IA64,它们之间的差距都非常大。
但是如果从最基本的逻辑角度来分类的话,它们可以被分为两大类,即所谓的
“复杂指令集”与“精简指令集”系统,也就是经常看到的“CISC”与“RISC”。
属于这两种类中的各种架构之间最大的区别,在于它们的设计者考虑问题方式的不同。
我们可以继续举个例子,比如说我们要命令一个人吃饭,那么我们应该怎么命令呢?我们可以直接对他下达“吃饭”的命令,也可以命令他“先拿勺子,然后舀起一勺饭,然后张嘴,然后送到嘴里,最后咽下去”。
从这里可以看到,对于命令别人做事这样一件事情,不同的人有不同的理解,有人认为,如果我首先给接受命令的人以足够的训练,让他掌握各种复杂技能(即在硬件中实现对应的复杂功能),那么以后就可以用非常简单的命令让他去做很复杂的事情——比如只要说一句“吃饭”,他就会吃饭。
但是也有人认为这样会让事情变的太复杂,毕竟接受命令的人要做的事情很复杂,如果你这时候想让他吃菜怎么办?难道继续训练他吃菜的方法?我们为什么不可以把事情分为许多非常基本的步骤,这样只需要接受命令的人懂得很少的基本技能,就可以完成同样的工作,无非是下达命令的人稍微累一点——比如现在我要他吃菜,只需要把刚刚吃饭命令里的“舀起一勺饭”改成“舀起一勺菜”,问题就解决了,多么简单。
这就是“复杂指令集”和“精简指令集”的逻辑区别。
可能有人说,明显是精简指令集好啊,但是我们不好去判断它们
之间到底谁好谁坏,因为目前他们两种指令集都在蓬勃发展,而且都很成功——X86是复杂指令集(CISC)的代表,而ARM 则是精简指令集(RISC)的代表,甚至ARM的名字就直接表明了它的技术:Advanced RISC Machine——高级RISC机。
到了这里你就应该明白为什么RISC和CISC之间不好直接比较性能了,因为它们之间的设计思路差异太大。
这样的思路导致了CISC和RISC分道扬镳——前者更加专注于高性能但同时高功耗的实现,而后者则专注于小尺寸低功耗领域。
实际上也有很多事情CISC更加合适,而另外一些事情则是RISC更加合适,比如在执行高密度的运算任务的时候CISC 就更具备优势,而在执行简单重复劳动的时候RISC就能占
到上风,比如假设我们是在举办吃饭大赛,那么CISC只需
要不停的喊“吃饭吃饭吃饭”就行了,而RISC则要一遍一
遍重复吃饭流程,负责喊话的人如果嘴巴不够快(即内存带宽不够大),那么RISC就很难吃的过CISC。
但是如果我们只是要两个人把饭舀出来,那么CISC就麻烦得多,因为CISC 里没有这么简单的舀饭动作,而RISC就只需要不停喊“舀
饭舀饭舀饭”就OK。
这就是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处理器已经达到了很高的运算性能,实际上根本发挥不出来,自然也就会落败了。
说到这儿大家应该也已经明白CISC和RISC的区别和特色了。
简而言之,CISC实际上是以增加处理器本身复杂度作为代价,去换取更高的性能,而RISC则是将复杂度交给了编译器,
牺牲了程序大小和指令带宽,换取了简单和低功耗的硬件实
现。
但如果事情就这样发展下去,为了提升性能,CISC的处理器将越来越大,而RISC需要的内存带宽则会突破天际,这都是受到技术限制的。
所以进十多年来,关于CISC和RISC 的区分已经慢慢的在模糊,例如自P6体系(即Pentium Pro)以来,作为CISC代表的X86架构引入了微码概念,与此对应的,处理器内部也增加了所谓的译码器,负责将传统的CISC指令“拆包”为更加短小的微码(uOPs)。
一条CISC 指令进来以后,会被译码器拆分为数量不等的微码,然后送入处理器的执行管线——这实际上可以理解为RISC内核
+CISC解码器。
而RISC也引入了指令集这个就逻辑角度而言非常不精简的东西,来增加运算性能。
正常而言,一条X86指令会被拆解为2~4个uOPs,平均来看就是3个,因此同样的指令密度下,目前X86的实际指令执行能力应该大约是ARM的3倍左右。
不过不要忘了这是基于“同样指令密度”下的一个假设,实际上X86可以达到的指令密度是十倍甚至百倍于ARM的。
最后一个需要考虑的地方就是指令集。
这个东西的引入,是为了加速处理器在某些特定应用上性能而设计的,已经有了几十年的历史了。
而实际上在目前的应用环境内,起到决定作用的很多时候是指令集而不是CPU核心。
X86架构的强大,很多时候也源于指令集的强大,比如我们知道的ATOM,虽
然它的X86核心非常羸弱,但是由于它支持SSE3,在很多
时候性能甚至可以超过核心性能远远强大于它的Pentium M,这就是指令集的威力。
目前X86指令集已经从MMX,发展到了SSE,AVX,而ARM依然还只有简单而基础的NEON。
它们之间不成比例的差距造成了实际应用中成百上千倍的
性能落差,例如即便是现今最强大的ARM内核依然还在为软解1080p H.264而奋斗,但一颗普通的中端Core i处理器却可以用接近十倍播放速度的速度去压缩1080p H.264视频。
至少在这点上,说PC处理器的性能百倍于ARM是无可辩驳的,而实际中这样的例子比比皆是。
这也是为什么我在之前说平均下来ARM只有X86几十分之一的性能的原因。
打了这么多字,其实就是为了说明一点,虽然现在ARM很强大,但它距离X86还是非常遥远,并没有因为这几年的进步而缩短,实际上反而在被更快的拉大。
毕竟它们设计的出发点不一样,因此根本不具备多少可比性,X86无法做到ARM的功耗,而ARM也无法做到X86的性能。
这也是为什么ATOM一直以来都不成功的原因所在——Intel试图用自
己的短处去和别人的长处对抗,结果自然是不太好的,要不是Intel拥有这个星球上最先进的半导体工艺,ATOM根本
都不可能出现。
而ARM如果尝试去和X86拼性能,那结果自然也好不到哪儿去,原因刚刚也解释过了。
不过这也不意
味着ARM以后就只能占据低端,毕竟任何架构都有其优点,一旦有应用针对其进行优化,那么就可以扬长避短。
X86的繁荣也正是因为整个世界的资源都针对它进行了优化所致。
只要能为ARM找到合适的应用与适合的领域,未来ARM也未必不可以进入更高的层次。